1 #using scripts\codescripts\struct;
2 #using scripts\shared\animation_shared;
3 #using scripts\shared\callbacks_shared;
4 #using scripts\shared\clientfield_shared;
5 #using scripts\shared\duplicaterender_mgr;
6 #using scripts\shared\scene_shared;
7 #using scripts\shared\system_shared;
8 #using scripts\shared\util_shared;
9 #using scripts\shared\audio_shared;
11 #using scripts\shared\abilities\gadgets\_gadget_camo_render;
12 #using scripts\shared\abilities\gadgets\_gadget_clone_render;
13 #using scripts\shared\ai\systems\fx_character;
15 #insert scripts\shared\shared.gsh;
16 #insert scripts\shared\version.gsh;
17 #insert scripts\shared\ai\archetype_robot.gsh;
18 #insert scripts\shared\weapons\weapon_group_anims.gsh;
20 #using_animtree("all_player");
22 #define TAUNT_FIRST_PLACE 0
24 #define GESTURE_TYPE_GOOD_GAME 0
25 #define GESTURE_TYPE_THREATEN 1
26 #define GESTURE_TYPE_BOAST 2
28 #define FROM_IDLE_BLEND_TIME 0.4
29 #define TO_IDLE_BLEND_TIME 0.4
31 #define TO_TAUNT_BLEND_TIME 0
32 #define FROM_TAUNT_BLEND_TIME 0.4
34 #define TO_GESTURE_BLEND_TIME 0.4
35 #define FROM_GESTURE_BLEND_TIME 0.4
37 #define CAMERA_GLASS "gfx_p7_zm_asc_data_recorder_glass"
38 #define MINIGUN_PROP "wpn_t7_hero_reaper_minigun_prop"
39 #define MINIGUN_PROP_3 "wpn_t7_loot_hero_reaper3_minigun_prop"
40 #define GI_UNIT_BODY "c_zsf_robot_grunt_body"
41 #define GI_UNIT_HEAD "c_zsf_robot_grunt_head"
42 #define RAP_FRIENDLY "veh_t7_drone_raps_mp_lite"
43 #define RAP_ENEMY "veh_t7_drone_raps_mp_dark"
44 #define TALON_FRIENDLY "veh_t7_drone_attack_gun_litecolor"
45 #define TALON_ENEMY "veh_t7_drone_attack_gun_darkcolor"
47 #precache( "client_fx", "player/fx_loot_taunt_e_reaper_main_03" );
49 #define TALON_LIGHT_FX "player/fx_loot_taunt_outrider_talon_lights"
50 #precache( "client_fx", TALON_LIGHT_FX );
52 #namespace end_game_taunts;
85 level.epicTauntXModels =
array(
98 "wpn_t7_arm_blade_prop",
99 "wpn_t7_hero_annihilator_prop",
100 "wpn_t7_hero_bow_prop",
101 "wpn_t7_hero_electro_prop_animate",
102 "wpn_t7_hero_flamethrower_world",
103 "wpn_t7_hero_mgl_world",
104 "wpn_t7_hero_mgl_prop",
105 "wpn_t7_hero_spike_prop",
106 "wpn_t7_hero_seraph_machete_prop",
107 "wpn_t7_loot_crowbar_world",
108 "wpn_t7_spider_mine_world",
109 "wpn_t7_zmb_katana_prop"
121 SetDvar(
"forceTaunt",
"" );
125 taunt = GetDvarString(
"forceTaunt" );
130 model = level.topPlayerCharacters[ 0 ];
132 if ( !isdefined( model ) ||
133 isdefined( model.playingTaunt ) ||
137 bodyType = GetDvarInt(
"forceTauntBodyType", -1 );
138 SetDvar(
"forceTauntBodyType", -1 );
151 playTaunt( model.localClientNum, tauntModel, 0, idleAnimName, taunt );
153 if ( tauntModel != model )
165 SetDvar(
"forceGesture",
"" );
169 gesture = GetDvarString(
"forceGesture" );
174 model = level.topPlayerCharacters[ 0 ];
176 if ( !isdefined( model ) ||
177 isdefined( model.playingTaunt ) ||
182 playGesture( model.localClientNum, model, 0, idleAnimName, gesture,
true );
192 if ( !GetDvarInt(
"runnerupboxes", 0 ) )
195 for ( i = 1; i < 3; i++ )
197 model = level.topPlayerCharacters[i];
198 Box( model.origin, ( -15, -15, 0 ), ( 15, 15, 72 ), model.angles[1], ( 0, 0, 1 ),
false, 1 );
205 tempModel =
Spawn( localClientNum, origin,
"script_model" );
206 tempModel.angles = angles;
207 tempModel.showcaseWeapon = showcaseWeapon;
209 tempModel.bodyModel = GetCharacterBodyModel( characterIndex, 0, CurrentSessionMode() );
210 tempModel.helmetModel = GetCharacterHelmetModel( characterIndex, 0, CurrentSessionMode() );
212 tempModel SetModel( tempModel.bodyModel );
213 tempModel Attach( tempModel.helmetModel,
"" );
215 tempModel.modeRenderOptions = GetCharacterModeRenderOptions( CurrentSessionMode() );
217 tempModel.bodyRenderOptions = GetCharacterBodyRenderOptions( characterIndex, 0, 0, 0, 0 );
218 tempModel.helmetRenderOptions = GetCharacterHelmetRenderOptions( characterIndex, 0, 0, 0, 0 );
220 tempModel SetBodyRenderOptions( tempModel.modeRenderOptions,
221 tempModel.bodyRenderOptions,
222 tempModel.helmetRenderOptions,
223 tempModel.helmetRenderOptions );
232 tauntAnimName = GetTopPlayersTaunt( localClientNum, topPlayerIndex,
TAUNT_FIRST_PLACE );
234 idleAnimName =
getIdleAnimName( localClientNum, characterModel, topPlayerIndex );
236 playTaunt( localClientNum, characterModel, topPlayerIndex, idleAnimName, tauntAnimName );
239 function previewTaunt( localClientNum, characterModel, idleAnimName, tauntAnimName )
248 function playTaunt( localClientNum, characterModel, topPlayerIndex, idleAnimName, tauntAnimName, toTauntBlendTime = 0, playTransitions =
true )
250 if ( !isdefined( tauntAnimName ) || tauntAnimName ==
"" )
256 characterModel StopSounds();
257 characterModel endon(
"cancelTaunt" );
261 if( !characterModel HasAnimTree() )
263 characterModel UseAnimTree( #animtree );
266 characterModel.playingTaunt = tauntAnimName;
267 characterModel notify(
"tauntStarted" );
270 characterModel ClearAnim( idleAnimName, toTauntBlendTime );
296 characterModel.playingTaunt = undefined;
297 characterModel notify(
"tauntFinished" );
303 if ( isdefined( characterModel.playingTaunt ) )
308 characterModel StopSounds();
311 characterModel notify(
"cancelTaunt" );
312 characterModel.playingTaunt = undefined;
313 characterModel.epicTauntModels = undefined;
318 idleAnimName =
getIdleAnimName( localClientNum, characterModel, topPlayerIndex );
320 gestureAnimName = GetTopPlayersGesture( localClientNum, topPlayerIndex, gestureType );
322 playGesture( localClientNum, characterModel, topPlayerIndex, idleAnimName, gestureAnimName );
325 function previewGesture( localClientNum, characterModel, idleAnimName, gestureAnimName )
331 playGesture( localClientNum, characterModel, 0, idleAnimName, gestureAnimName,
false );
334 function playGesture( localClientNum, characterModel, topPlayerIndex, idleAnimName, gestureAnimName, playTransitions =
true )
336 if ( !isdefined( gestureAnimName ) || gestureAnimName ==
"" )
342 characterModel endon(
"cancelGesture" );
346 if( !characterModel HasAnimTree() )
348 characterModel UseAnimTree( #animtree );
351 characterModel.playingGesture =
true;
352 characterModel notify(
"gestureStarted" );
387 characterModel.playingGesture =
false;
388 characterModel notify(
"gestureFinished" );
393 characterModel notify(
"cancelGesture" );
394 characterModel.playingGesture =
false;
399 characterModel endon(
"cancelTaunt" );
402 if ( !isdefined( transitionAnimName ) || transitionAnimName ==
"" )
407 characterModel
animation::play( transitionAnimName, undefined, undefined, 1, blendInTime, blendOutTime );
412 characterModel endon(
"weaponHidden" );
416 characterModel waittill(
"_anim_notify_", param1 );
418 if ( param1 ==
"remove_from_hand" )
428 characterModel endon(
"weaponShown" );
432 characterModel waittill(
"_anim_notify_", param1 );
434 if ( param1 ==
"appear_in_hand" )
444 if ( characterModel.weapon == level.weaponNone )
449 MarkAsDirty( characterModel );
450 characterModel AttachWeapon( level.weaponNone );
451 characterModel UseWeaponHideTags( level.weaponNone );
453 characterModel notify (
"weaponHidden" );
458 if ( !isdefined( characterModel.showcaseWeapon ) || characterModel.weapon != level.weaponNone )
463 MarkAsDirty( characterModel );
465 if ( isdefined( characterModel.showcaseWeaponRenderOptions ) )
467 characterModel AttachWeapon( characterModel.showcaseWeapon, characterModel.showcaseWeaponRenderOptions, characterModel.showcaseWeaponACVI );
468 characterModel UseWeaponHideTags( characterModel.showcaseWeapon );
472 characterModel AttachWeapon( characterModel.showcaseWeapon );
475 characterModel notify (
"weaponShown" );
480 if ( isdefined( characterModel.weapon ) )
482 weapon_group = GetItemGroupForWeaponName( characterModel.weapon.rootWeapon.name );
483 if ( weapon_group ==
"weapon_launcher" )
485 if ( characterModel.weapon.rootWeapon.name ==
"launcher_lockonly" ||
486 characterModel.weapon.rootWeapon.name ==
"launcher_multi" )
488 weapon_group =
"weapon_launcher_alt";
490 else if ( characterModel.weapon.rootWeapon.name ==
"launcher_ex41" )
492 weapon_group =
"weapon_smg_ppsh";
495 else if ( weapon_group ==
"weapon_pistol" && characterModel.weapon.isdualwield )
497 weapon_group =
"weapon_pistol_dw";
499 else if ( weapon_group ==
"weapon_smg")
501 if ( characterModel.weapon.rootWeapon.name ==
"smg_ppsh" )
503 weapon_group =
"weapon_smg_ppsh";
506 else if ( weapon_group ==
"weapon_cqb")
508 if ( characterModel.weapon.rootWeapon.name ==
"shotgun_olympia" )
510 weapon_group =
"weapon_smg_ppsh";
513 else if ( weapon_group ==
"weapon_special" )
515 if ( characterModel.weapon.rootWeapon.name ==
"special_crossbow" ||
516 characterModel.weapon.rootWeapon.name ==
"special_discgun" )
518 weapon_group =
"weapon_smg";
520 else if( characterModel.weapon.rootWeapon.name ==
"special_crossbow_dw" )
522 weapon_group =
"weapon_pistol_dw";
524 else if( characterModel.weapon.rootWeapon.name ==
"knife_ballistic" )
526 weapon_group =
"weapon_knife_ballistic";
529 else if ( weapon_group ==
"weapon_knife" )
531 if ( characterModel.weapon.rootWeapon.name ==
"melee_wrench" ||
532 characterModel.weapon.rootWeapon.name ==
"melee_crowbar" ||
533 characterModel.weapon.rootWeapon.name ==
"melee_improvise" ||
534 characterModel.weapon.rootWeapon.name ==
"melee_shockbaton" ||
535 characterModel.weapon.rootWeapon.name ==
"melee_shovel" )
539 else if ( characterModel.weapon.rootWeapon.name ==
"melee_knuckles" )
543 else if ( characterModel.weapon.rootWeapon.name ==
"melee_chainsaw" ||
544 characterModel.weapon.rootWeapon.name ==
"melee_boneglass" ||
545 characterModel.weapon.rootWeapon.name ==
"melee_crescent" )
549 else if ( characterModel.weapon.rootWeapon.name ==
"melee_boxing" )
553 else if ( characterModel.weapon.rootWeapon.name ==
"melee_sword" ||
554 characterModel.weapon.rootWeapon.name ==
"melee_katana")
558 else if ( characterModel.weapon.rootWeapon.name ==
"melee_nunchuks" )
562 else if ( characterModel.weapon.rootWeapon.name ==
"melee_bat" ||
563 characterModel.weapon.rootWeapon.name ==
"melee_fireaxe" ||
564 characterModel.weapon.rootWeapon.name ==
"melee_mace" )
568 else if ( characterModel.weapon.rootWeapon.name ==
"melee_prosthetic" )
573 else if ( weapon_group ==
"miscweapon" )
575 if ( characterModel.weapon.rootWeapon.name ==
"blackjack_coin" )
579 else if ( characterModel.weapon.rootWeapon.name ==
"blackjack_cards" )
591 if ( !isdefined( anim_name ) )
603 switch( weapon_group )
606 return array(
"pb_smg_endgame_1stplace_out",
"pb_smg_endgame_2ndplace_out",
"pb_smg_endgame_3rdplace_out" )[ topPlayerIndex ];
607 case "weapon_assault":
608 return array(
"pb_rifle_endgame_1stplace_out",
"pb_rifle_endgame_2ndplace_out",
"pb_rifle_endgame_3rdplace_out" )[ topPlayerIndex ];
610 return array(
"pb_shotgun_endgame_1stplace_out",
"pb_shotgun_endgame_2ndplace_out",
"pb_shotgun_endgame_3rdplace_out" )[ topPlayerIndex ];
612 return array(
"pb_lmg_endgame_1stplace_out",
"pb_lmg_endgame_2ndplace_out",
"pb_lmg_endgame_3rdplace_out" )[ topPlayerIndex ];
614 return array(
"pb_sniper_endgame_1stplace_out",
"pb_sniper_endgame_2ndplace_out",
"pb_sniper_endgame_3rdplace_out" )[ topPlayerIndex ];
616 return array(
"pb_pistol_endgame_1stplace_out",
"pb_pistol_endgame_2ndplace_out",
"pb_pistol_endgame_3rdplace_out" )[ topPlayerIndex ];
617 case"weapon_pistol_dw":
618 return array(
"pb_pistol_dw_endgame_1stplace_out",
"pb_pistol_dw_endgame_2ndplace_out",
"pb_pistol_dw_endgame_3rdplace_out" )[ topPlayerIndex ];
619 case"weapon_launcher":
620 return array(
"pb_launcher_endgame_1stplace_out",
"pb_launcher_endgame_2ndplace_out",
"pb_launcher_endgame_3rdplace_out" )[ topPlayerIndex ];
621 case"weapon_launcher_alt":
622 return array(
"pb_launcher_alt_endgame_1stplace_out",
"pb_launcher_alt_endgame_2ndplace_out",
"pb_launcher_alt_endgame_3rdplace_out" )[ topPlayerIndex ];
624 return array(
"pb_knife_endgame_1stplace_out",
"pb_knife_endgame_2ndplace_out",
"pb_knife_endgame_3rdplace_out" )[ topPlayerIndex ];
625 case"weapon_knuckles":
626 return array(
"pb_brass_knuckles_endgame_1stplace_out",
"pb_brass_knuckles_endgame_2ndplace_out",
"pb_brass_knuckles_endgame_3rdplace_out" )[ topPlayerIndex ];
628 return array(
"pb_boxing_gloves_endgame_1stplace_out",
"pb_boxing_gloves_endgame_2ndplace_out",
"pb_boxing_gloves_endgame_3rdplace_out" )[ topPlayerIndex ];
630 return array(
"pb_wrench_endgame_1stplace_out",
"pb_wrench_endgame_2ndplace_out",
"pb_wrench_endgame_3rdplace_out" )[ topPlayerIndex ];
632 return array(
"pb_sword_endgame_1stplace_out",
"pb_sword_endgame_2ndplace_out",
"pb_sword_endgame_3rdplace_out" )[ topPlayerIndex ];
633 case"weapon_nunchucks":
634 return array(
"pb_nunchucks_endgame_1stplace_out",
"pb_nunchucks_endgame_2ndplace_out",
"pb_nunchucks_endgame_3rdplace_out" )[ topPlayerIndex ];
636 return array(
"pb_mace_endgame_1stplace_out",
"pb_mace_endgame_2ndplace_out",
"pb_mace_endgame_3rdplace_out" )[ topPlayerIndex ];
637 case"weapon_prosthetic":
638 return array(
"pb_prosthetic_arm_endgame_1stplace_out",
"pb_prosthetic_arm_endgame_2ndplace_out",
"pb_prosthetic_arm_endgame_3rdplace_out" )[ topPlayerIndex ];
639 case"weapon_chainsaw":
640 return array(
"pb_chainsaw_endgame_1stplace_idle_out",
"pb_chainsaw_endgame_1stplace_idle_out",
"pb_chainsaw_endgame_1stplace_idle_out" )[ topPlayerIndex ];
641 case"weapon_smg_ppsh":
642 return array(
"pb_smg_ppsh_endgame_1stplace_out",
"pb_smg_ppsh_endgame_1stplace_out",
"pb_smg_ppsh_endgame_1stplace_out" )[ topPlayerIndex ];
643 case"weapon_knife_ballistic":
644 return array(
"pb_b_knife_endgame_1stplace_out",
"pb_b_knife_endgame_1stplace_out",
"pb_b_knife_endgame_1stplace_out" )[ topPlayerIndex ];
654 switch( weapon_group )
657 return array(
"pb_smg_endgame_1stplace_in",
"pb_smg_endgame_2ndplace_in",
"pb_smg_endgame_3rdplace_in" )[ topPlayerIndex ];
658 case "weapon_assault":
659 return array(
"pb_rifle_endgame_1stplace_in",
"pb_rifle_endgame_2ndplace_in",
"pb_rifle_endgame_3rdplace_in" )[ topPlayerIndex ];
661 return array(
"pb_shotgun_endgame_1stplace_in",
"pb_shotgun_endgame_2ndplace_in",
"pb_shotgun_endgame_3rdplace_in" )[ topPlayerIndex ];
663 return array(
"pb_lmg_endgame_1stplace_in",
"pb_lmg_endgame_2ndplace_in",
"pb_lmg_endgame_3rdplace_in" )[ topPlayerIndex ];
665 return array(
"pb_sniper_endgame_1stplace_in",
"pb_sniper_endgame_2ndplace_in",
"pb_sniper_endgame_3rdplace_in" )[ topPlayerIndex ];
667 return array(
"pb_pistol_endgame_1stplace_in",
"pb_pistol_endgame_2ndplace_in",
"pb_pistol_endgame_3rdplace_in" )[ topPlayerIndex ];
668 case"weapon_pistol_dw":
669 return array(
"pb_pistol_dw_endgame_1stplace_in",
"pb_pistol_dw_endgame_2ndplace_in",
"pb_pistol_dw_endgame_3rdplace_in" )[ topPlayerIndex ];
670 case"weapon_launcher":
671 return array(
"pb_launcher_endgame_1stplace_in",
"pb_launcher_endgame_2ndplace_in",
"pb_launcher_endgame_3rdplace_in" )[ topPlayerIndex ];
672 case"weapon_launcher_alt":
673 return array(
"pb_launcher_alt_endgame_1stplace_in",
"pb_launcher_alt_endgame_2ndplace_in",
"pb_launcher_alt_endgame_3rdplace_in" )[ topPlayerIndex ];
675 return array(
"pb_knife_endgame_1stplace_in",
"pb_knife_endgame_2ndplace_in",
"pb_knife_endgame_3rdplace_in" )[ topPlayerIndex ];
676 case"weapon_knuckles":
677 return array(
"pb_brass_knuckles_endgame_1stplace_in",
"pb_brass_knuckles_endgame_2ndplace_in",
"pb_brass_knuckles_endgame_3rdplace_in" )[ topPlayerIndex ];
679 return array(
"pb_boxing_gloves_endgame_1stplace_in",
"pb_boxing_gloves_endgame_2ndplace_in",
"pb_boxing_gloves_endgame_3rdplace_in" )[ topPlayerIndex ];
681 return array(
"pb_wrench_endgame_1stplace_in",
"pb_wrench_endgame_2ndplace_in",
"pb_wrench_endgame_3rdplace_in" )[ topPlayerIndex ];
683 return array(
"pb_sword_endgame_1stplace_in",
"pb_sword_endgame_2ndplace_in",
"pb_sword_endgame_3rdplace_in" )[ topPlayerIndex ];
684 case"weapon_nunchucks":
685 return array(
"pb_nunchucks_endgame_1stplace_in",
"pb_nunchucks_endgame_2ndplace_in",
"pb_nunchucks_endgame_3rdplace_in" )[ topPlayerIndex ];
687 return array(
"pb_mace_endgame_1stplace_in",
"pb_mace_endgame_2ndplace_in",
"pb_mace_endgame_3rdplace_in" )[ topPlayerIndex ];
688 case"weapon_prosthetic":
689 return array(
"pb_prosthetic_arm_endgame_1stplace_in",
"pb_prosthetic_arm_endgame_2ndplace_in",
"pb_prosthetic_arm_endgame_3rdplace_in" )[ topPlayerIndex ];
690 case"weapon_chainsaw":
691 return array(
"pb_chainsaw_endgame_1stplace_idle_in",
"pb_chainsaw_endgame_1stplace_idle_in",
"pb_chainsaw_endgame_1stplace_idle_in" )[ topPlayerIndex ];
692 case"weapon_smg_ppsh":
693 return array(
"pb_smg_ppsh_endgame_1stplace_in",
"pb_smg_ppsh_endgame_1stplace_in",
"pb_smg_ppsh_endgame_1stplace_in" )[ topPlayerIndex ];
694 case"weapon_knife_ballistic":
695 return array(
"pb_b_knife_endgame_1stplace_in",
"pb_b_knife_endgame_1stplace_in",
"pb_b_knife_endgame_1stplace_in" )[ topPlayerIndex ];
703 if ( !isdefined( characterModel.weapon ) )
708 weapon = characterModel.weapon;
710 if ( weapon == level.weaponNone && isdefined( characterModel.showcaseWeapon ) )
712 weapon = characterModel.showcaseWeapon;
715 weapon_group = GetItemGroupForWeaponName( weapon.rootWeapon.name );
716 if ( weapon_group ==
"weapon_launcher" )
718 if ( characterModel.weapon.rootWeapon.name ==
"launcher_lockonly" ||
719 characterModel.weapon.rootWeapon.name ==
"launcher_multi" )
721 weapon_group =
"weapon_launcher_alt";
723 else if ( characterModel.weapon.rootWeapon.name ==
"launcher_ex41" )
725 weapon_group =
"weapon_smg_ppsh";
728 else if ( weapon_group ==
"weapon_pistol" && weapon.isdualwield )
730 weapon_group =
"weapon_pistol_dw";
732 else if ( weapon_group ==
"weapon_smg")
734 if ( characterModel.weapon.rootWeapon.name ==
"smg_ppsh" )
736 weapon_group =
"weapon_smg_ppsh";
739 else if ( weapon_group ==
"weapon_cqb")
741 if ( characterModel.weapon.rootWeapon.name ==
"shotgun_olympia" )
743 weapon_group =
"weapon_smg_ppsh";
746 else if ( weapon_group ==
"weapon_special" )
748 if ( characterModel.weapon.rootWeapon.name ==
"special_crossbow" ||
749 characterModel.weapon.rootWeapon.name ==
"special_discgun" )
751 weapon_group =
"weapon_smg";
753 else if( characterModel.weapon.rootWeapon.name ==
"special_crossbow_dw" )
755 weapon_group =
"weapon_pistol_dw";
757 else if( characterModel.weapon.rootWeapon.name ==
"knife_ballistic" )
759 weapon_group =
"weapon_knife_ballistic";
762 else if ( weapon_group ==
"weapon_knife" )
764 if ( characterModel.weapon.rootWeapon.name ==
"melee_wrench" ||
765 characterModel.weapon.rootWeapon.name ==
"melee_crowbar" ||
766 characterModel.weapon.rootWeapon.name ==
"melee_improvise" ||
767 characterModel.weapon.rootWeapon.name ==
"melee_shockbaton" ||
768 characterModel.weapon.rootWeapon.name ==
"melee_shovel" )
770 weapon_group =
"weapon_wrench";
772 else if ( characterModel.weapon.rootWeapon.name ==
"melee_knuckles" )
774 weapon_group =
"weapon_knuckles";
776 else if ( characterModel.weapon.rootWeapon.name ==
"melee_chainsaw" ||
777 characterModel.weapon.rootWeapon.name ==
"melee_boneglass" ||
778 characterModel.weapon.rootWeapon.name ==
"melee_crescent" )
780 weapon_group =
"weapon_chainsaw";
782 else if ( characterModel.weapon.rootWeapon.name ==
"melee_boxing" )
784 weapon_group =
"weapon_boxing";
786 else if ( characterModel.weapon.rootWeapon.name ==
"melee_sword" ||
787 characterModel.weapon.rootWeapon.name ==
"melee_katana" )
789 weapon_group =
"weapon_sword";
791 else if ( characterModel.weapon.rootWeapon.name ==
"melee_nunchuks" )
793 weapon_group =
"weapon_nunchucks";
795 else if ( characterModel.weapon.rootWeapon.name ==
"melee_bat" ||
796 characterModel.weapon.rootWeapon.name ==
"melee_fireaxe" ||
797 characterModel.weapon.rootWeapon.name ==
"melee_mace" )
799 weapon_group =
"weapon_mace";
801 else if ( characterModel.weapon.rootWeapon.name ==
"melee_prosthetic" )
803 weapon_group =
"weapon_prosthetic";
815 foreach( model
in level.epicTauntXModels )
817 ForceStreamXModel( model );
823 foreach( model
in level.epicTauntXModels )
825 StopForceStreamingXModel( model );
833 if ( !isdefined( sceneBundle ) )
837 switch( tauntAnimName )
839 case "t7_loot_taunt_e_reaper_01":
842 case "t7_loot_taunt_e_nomad_03":
843 self thread
spawnGiUnit( localClientNum,
"gi_unit_victim" );
845 case "t7_loot_taunt_e_seraph_04":
846 self thread
spawnRap(localClientNum,
"rap_1");
847 self thread
spawnRap(localClientNum,
"rap_2");
849 case "t7_loot_taunt_e_reaper_main_03":
853 case "t7_loot_taunt_e_spectre_03":
854 if ( GetDvarString(
"mapname" ) ==
"core_frontend" )
857 self SetHighDetail(
true,
false );
864 self thread
spawnGiUnit( localClientNum,
"gi_unit_victim" );
866 case "t7_loot_taunt_e_outrider_05":
867 self thread
spawnTalon( localClientNum,
"talon_bro_1", 0.65 );
868 self thread
spawnTalon( localClientNum,
"talon_bro_2", 0.65 );
880 if ( !isdefined( sceneBundle ) )
883 switch( tauntAnimName )
885 case "t7_loot_taunt_e_spectre_03":
886 if ( GetDvarString(
"mapname" ) ==
"core_frontend" )
889 self SetHighDetail(
true,
false );
901 if ( !isdefined( sceneBundle ) )
909 if ( isdefined(
self.epicTauntModels ) )
911 foreach ( model
in self.epicTauntModels )
913 if ( isdefined( model ) )
920 self.epicTauntModels = undefined;
939 if ( isdefined( level.cameraGlass ) )
944 level.cameraGlass =
Spawn(
self.localClientNum, (0,0,0),
"script_model" );
946 level.cameraGlass SetScale( 2.0 );
953 self endon(
"entityshutdown" );
957 camAngles = GetCamAnglesByLocalClientNum(
self.localClientNum );
958 camPos = GetCamPosByLocalClientNum(
self.localClientNum );
960 fwd = AnglesToForward( camAngles );
962 self.origin = camPos +( fwd * 60 );
963 self.angles = camAngles + (0, 180, 0);
971 if ( !isdefined( level.cameraGlass ) )
974 level.cameraGlass Delete();
975 level.cameraGlass = undefined;
982 minigun = GetWeapon(
"hero_minigun" );
984 for ( i = 30; i > -30; i -= 7 )
986 if ( !isdefined(
self ) )
991 self magicGlassBullet(
self.localClientNum, minigun, RandomFloatRange(2, 12), i );
992 self playsound (0,
"pfx_magic_bullet_glass");
993 wait minigun.fireTime;
1001 weapon = GetWeapon( weaponName );
1003 if ( weapon == level.weaponNone )
1009 self playsound (0,
"pfx_magic_bullet_glass");
1026 minigun = GetWeapon(
"hero_minigun" );
1028 for( i = 0; i < 15; i++ )
1030 if ( !isdefined(
self ) )
1034 self magicGlassBullet(
self.localClientNum, minigun, RandomFloatRange(4, 16), RandomFloatRange( yawMin, yawMax ) );
1035 self playsound (0,
"pfx_magic_bullet_glass");
1036 wait minigun.fireTime;
1043 if ( GetDvarString(
"mapname" ) ==
"core_frontend" )
1045 self SetHighDetail(
true,
false );
1048 localPlayerTeam = GetLocalPlayerTeam(
self.localClientNum );
1049 topPlayerTeam = GetTopPlayersTeam(
self.localClientNum, 0 );
1051 friendly = localPlayerTeam === topPlayerTeam;
1079 if ( flags_changed )
1096 if ( GetDvarString(
"mapname" ) ==
"core_frontend" )
1108 if ( GetDvarString(
"mapname" ) ==
"core_frontend" )
1120 if ( !isdefined( weaponName ) )
1123 self endon(
"stopFireWeapon" );
1125 weapon = GetWeapon( weaponName );
1129 while( 1 && isdefined(
self ) )
1131 self MagicBullet( weapon, (0, 0, 0), (0, 0, 0) );
1132 wait( weapon.fireTime );
1138 self notify(
"stopFireWeapon" );
1143 if ( isdefined(
self.beamFx ) )
1148 self.beamFx = BeamLaunch(
self.localClientNum,
self,
"tag_flash", undefined,
"none", beam );
1153 if ( !isdefined(
self.beamFx ) )
1158 BeamKill(
self.localClientNum,
self.beamFx );
1160 self.beamFx = undefined;
1167 topPlayerTeam = GetTopPlayersTeam(
self.localClientNum, 0 );
1168 DEFAULT( topPlayerTeam, GetLocalPlayerTeam(
self.localClientNum ) );
1170 fxHandle = PlayFxOnTag(
self.localClientNum, fxName,
self,
"tag_origin" );
1172 if ( isdefined( fxHandle ) )
1174 SetFxTeam(
self.localClientNum, fxHandle, topPlayerTeam );
1182 localPlayerTeam = GetLocalPlayerTeam(
self.localClientNum );
1184 fxHandle = PlayFxOnTag(
self.localClientNum, fxName,
self,
"tag_origin" );
1186 if ( isdefined( fxHandle ) )
1188 SetFxTeam(
self.localClientNum, fxHandle, localPlayerTeam );
1197 camPos = GetCamPosByLocalClientNum( localClientNum );
1198 camAngles = GetCamAnglesByLocalClientNum( localClientNum );
1200 bulletAngles = camAngles + ( pitchAngle, yawAngle, 0 );
1202 self MagicBullet( weapon, camPos, bulletAngles );
1207 launchOrigin =
self GetTagOrigin(
"tag_flash" );
1209 if ( !isdefined( launchOrigin ) )
1212 launchAngles =
self GetTagAngles(
"tag_flash" );
1213 launchDir = AnglesToForward( launchAngles );
1215 CreateDynEntAndLaunch( localClientNum, projectileModel, launchOrigin, (0,0,0), launchOrigin, launchDir * GetDvarFloat(
"launchspeed", 3.5 ), projectileTrail );
1220 model =
Spawn( localClientNum,
self.origin,
"script_model" );
1221 model.angles =
self.angles;
1222 model.targetName =
"scythe_prop";
1224 model SetHighDetail(
true );
1227 if ( isdefined(
self.bodyModel ) )
1229 if ( StrStartsWith(
self.bodyModel,
"c_t7_mp_reaper_mpc_body3" ) )
1235 model SetModel( scytheModel );
1236 model SetBodyRenderOptions(
self.modeRenderOptions,
self.bodyRenderOptions,
self.helmetRenderOptions,
self.helmetRenderOptions );
1238 self HidePart( localClientNum,
"tag_minigun_flaps" );
1246 clone =
self spawnPlayerModel( localClientNum, targetName,
self.origin,
self.angles,
self.bodyModel,
self.helmetModel,
self.modeRenderOptions,
self.bodyRenderOptions,
self.helmetRenderOptions );
1248 clone SetScale( 0 );
1253 clone SetScale( 1 );
1260 bodyModel = GetTopPlayersBodyModel( localClientNum, topPlayerIndex );
1261 helmetModel = GetTopPlayersHelmetModel( localClientNum, topPlayerIndex );
1262 modeRenderOptions = GetCharacterModeRenderOptions( CurrentSessionMode() );
1263 bodyRenderOptions = GetTopPlayersBodyRenderOptions( localClientNum, topPlayerIndex );
1264 helmetRenderOptions = GetTopPlayersHelmetRenderOptions( localClientNum, topPlayerIndex );
1266 return spawnPlayerModel( localClientNum, targetName, origin, angles, bodyModel, helmetModel, modeRenderOptions, bodyRenderOptions, helmetRenderOptions );
1269 function spawnPlayerModel( localClientNum, targetName, origin, angles, bodyModel, helmetModel, modeRenderOptions, bodyRenderOptions, helmetRenderOptions )
1271 model =
Spawn( localClientNum, origin,
"script_model" );
1272 model.angles = angles;
1273 model.targetName = targetName;
1275 model SetHighDetail(
true );
1277 model SetModel( bodyModel );
1278 model Attach( helmetModel,
"" );
1280 model SetBodyRenderOptions( modeRenderOptions, bodyRenderOptions, helmetRenderOptions, helmetRenderOptions );
1284 model UseAnimTree( #animtree );
1291 model =
Spawn( localClientNum,
self.origin,
"script_model" );
1292 model.angles =
self.angles;
1293 model.targetName = targetName;
1295 model SetHighDetail(
true );
1305 model =
Spawn( localClientNum,
self.origin,
"script_model" );
1306 model.angles =
self.angles;
1307 model.targetName = targetName;
1309 localPlayerTeam = GetLocalPlayerTeam(
self.localClientNum );
1310 topPlayerTeam = GetTopPlayersTeam( localClientNum, 0 );
1312 if ( !isdefined( topPlayerTeam) || localPlayerTeam == topPlayerTeam )
1315 fxTeam = localPlayerTeam;
1320 fxTeam = topPlayerTeam;
1333 model =
Spawn( localClientNum,
self.origin,
"script_model" );
1334 model.angles =
self.angles;
1335 model.targetName = targetName;
1337 localPlayerTeam = GetLocalPlayerTeam(
self.localClientNum );
1338 topPlayerTeam = GetTopPlayersTeam( localClientNum, 0 );
1340 if ( !isdefined( topPlayerTeam) || localPlayerTeam == topPlayerTeam )
1343 fxTeam = localPlayerTeam;
1348 fxTeam = topPlayerTeam;
1351 model SetScale( scale );
1355 fxHandle = PlayFxOnTag( localClientNum,
TALON_LIGHT_FX, model,
"tag_body" );
1356 SetFxTeam( localClientNum, fxHandle, fxTeam );