Added all the remaining scripts not previously included.

This commit is contained in:
JezuzLizard 2021-08-07 11:29:26 -07:00
parent cf8d60b2d0
commit 98bfc67831
1001 changed files with 239603 additions and 0 deletions

View File

@ -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_" );
}

View File

@ -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

View File

@ -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

View File

@ -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.

View File

@ -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

View File

@ -0,0 +1,12 @@
main()
{
self setmodel( "german_shepherd_vest" );
self.voice = "american";
self.skeleton = "base";
}
precache()
{
precachemodel( "german_shepherd_vest" );
}

View File

@ -0,0 +1,12 @@
main()
{
self setmodel( "german_shepherd_vest_black" );
self.voice = "american";
self.skeleton = "base";
}
precache()
{
precachemodel( "german_shepherd_vest_black" );
}

View File

@ -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 ] );
}
}
}
}

View File

@ -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;
}

View File

@ -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" );
}

View File

@ -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;
}

View File

@ -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;
}
}

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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" );
}

View File

@ -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();
}

View File

@ -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();
}
}

View File

@ -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 );
}
}

View File

@ -0,0 +1,9 @@
#include maps/mp/animscripts/traverse/shared;
main()
{
if ( self.type == "dog" )
{
dog_jump_down( 40, 3 );
}
}

View File

@ -0,0 +1,9 @@
#include maps/mp/animscripts/traverse/shared;
main()
{
if ( self.type == "dog" )
{
dog_jump_down( 56, 7 );
}
}

View File

@ -0,0 +1,9 @@
#include maps/mp/animscripts/traverse/shared;
main()
{
if ( self.type == "dog" )
{
dog_jump_down_far( 96, 11, 0,65 );
}
}

View File

@ -0,0 +1,9 @@
#include maps/mp/animscripts/traverse/shared;
main()
{
if ( self.type == "dog" )
{
dog_jump_up( 40, 3 );
}
}

View File

@ -0,0 +1,9 @@
#include maps/mp/animscripts/traverse/shared;
main()
{
if ( self.type == "dog" )
{
dog_jump_up( 56, 5 );
}
}

View File

@ -0,0 +1,9 @@
#include maps/mp/animscripts/traverse/shared;
main()
{
if ( self.type == "dog" )
{
dog_jump_up_high( 80, 8 );
}
}

View File

@ -0,0 +1,9 @@
#include maps/mp/animscripts/traverse/shared;
main()
{
if ( self.type == "dog" )
{
dog_jump_up_high( 96, 9 );
}
}

View File

@ -0,0 +1,9 @@
#include maps/mp/animscripts/traverse/shared;
main()
{
if ( self.type == "dog" )
{
dog_wall_and_window_hop( "traverse_window", 40 );
}
}

View File

@ -0,0 +1,9 @@
#include maps/mp/animscripts/traverse/shared;
main()
{
if ( self.type == "dog" )
{
dog_wall_and_window_hop( "traverse_window", 36 );
}
}

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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 ] );
#/
}
}

View File

@ -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 ) ];
}

View File

@ -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();
}
}

View File

@ -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 );
}
}

View File

@ -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 ] );
}
}
}
}

View File

@ -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" ] );
}

View File

@ -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" );
}
}
}

View File

@ -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();
}

View File

@ -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 = [];
}

View File

@ -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 = [];
}

View File

@ -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 = [];
}

View File

@ -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 = [];
}

View File

@ -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 = [];
}

View File

@ -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();
}

View File

@ -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 = [];
}

View File

@ -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 = [];
}

View File

@ -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 = [];
}

View File

@ -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 = [];
}

View File

@ -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 = [];
}

View File

@ -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();
}

View File

@ -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 = [];
}

View File

@ -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 = [];
}

View File

@ -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 = [];
}

View File

@ -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 = [];
}

View File

@ -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 = [];
}

View File

@ -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();
}

View File

@ -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 = [];
}

View File

@ -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 = [];
}

View File

@ -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 = [];
}

View File

@ -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 = [];
}

View File

@ -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 = [];
}

View File

@ -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();
}

View File

@ -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 = [];
}

View File

@ -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 = [];
}

View File

@ -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 = [];
}

View File

@ -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 = [];
}

View File

@ -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 = [];
}

View File

@ -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";
}

View File

@ -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 = [];
}

View File

@ -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 = [];
}

View File

@ -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 = [];
}

View File

@ -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 = [];
}

View File

@ -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 = [];
}

View File

@ -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 = [];
}

View File

@ -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";
}

View File

@ -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 = [];
}

View File

@ -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 = [];
}

View File

@ -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 = [];
}

View File

@ -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 = [];
}

View File

@ -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 = [];
}

View File

@ -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 = [];
}

View File

@ -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";
}

View File

@ -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 = [];
}

View File

@ -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 = [];
}

View File

@ -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 = [];
}

View File

@ -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 = [];
}

View File

@ -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 = [];
}

View File

@ -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 = [];
}

View File

@ -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";
}

View File

@ -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 = [];
}

View File

@ -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 = [];
}

View File

@ -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 = [];
}

View File

@ -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 = [];
}

View File

@ -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 = [];
}

View File

@ -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 = [];
}

View File

@ -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();
}

View File

@ -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 = [];
}

View File

@ -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 = [];
}

View File

@ -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 = [];
}

View File

@ -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 = [];
}

Some files were not shown because too many files have changed in this diff Show More