426 lines
14 KiB
Plaintext
426 lines
14 KiB
Plaintext
#include maps\_utility;
|
|
#include common_scripts\utility;
|
|
#include maps\_anim;
|
|
#include maps\_climb;
|
|
|
|
#using_animtree( "generic_human" );
|
|
CONST_traceFX_dist = 10;
|
|
|
|
friendly_climb_anims()
|
|
{
|
|
level.scr_anim[ "price" ][ "price_climb_intro" ] = %cliffhanger_price_intro;
|
|
level.scr_anim[ "price" ][ "price_climb_intro_idle" ][ 0 ] = %cliffhanger_price_intro_idle;
|
|
level.scr_anim[ "price" ][ "price_climb_start" ] = %cliffhanger_climb_up_start;
|
|
level.scr_anim[ "price" ][ "price_climb_mid" ] = %cliffhanger_climb_up_mid;
|
|
level.scr_anim[ "price" ][ "price_jump" ] = %cliffhanger_jump_price;
|
|
level.scr_anim[ "price" ][ "price_idle" ][ 0 ] = %cliffhanger_jump_Price_idle;
|
|
level.scr_anim[ "price" ][ "price_reach" ] = %cliffhanger_jump_Price_reach;
|
|
|
|
level.scr_anim[ "generic" ][ "faux_player" ] = %invasion_parachute_ground_detach_idle;
|
|
|
|
|
|
|
|
level.scr_anim[ "price" ][ "climb_catch" ] = %cliffhanger_gaz_bigjump;
|
|
|
|
addNotetrack_customFunction( "price", "catch", ::price_catches_player, "climb_catch" );
|
|
|
|
|
|
addNotetrack_customFunction( "price", "exhale", ::price_exhales );
|
|
addNotetrack_customFunction( "price", "puff", ::price_puffs );
|
|
|
|
addNotetrack_customFunction( "price", "attach_axe", ::attach_left_pick );
|
|
addNotetrack_customFunction( "price", "detach_axe", ::detach_left_pick );
|
|
addNotetrack_customFunction( "price", "attach_second_axe", ::attach_right_pick );
|
|
addNotetrack_customFunction( "price", "detach_second_axe", ::detach_right_pick );
|
|
addNotetrack_customFunction( "price", "attach_gun", ::price_gun_recall );
|
|
|
|
addNotetrack_customFunction( "price", "attach_pick", ::attach_pick );
|
|
addNotetrack_customFunction( "price", "pick_slide_left", ::pick_left_fx );
|
|
|
|
addNotetrack_customFunction( "price", "pick_in_left", ::pick_left_hit );
|
|
addNotetrack_customFunction( "price", "pick_in_right", ::pick_right_hit );
|
|
addNotetrack_customFunction( "price", "pick_out_left", ::pick_left_out );
|
|
addNotetrack_customFunction( "price", "pick_out_right", ::pick_right_out );
|
|
|
|
addNotetrack_customFunction( "price", "footstep_right_small", ::ledge_scoot_fx_right );
|
|
addNotetrack_customFunction( "price", "footstep_left_small", ::ledge_scoot_fx_left );
|
|
addNotetrack_customFunction( "price", "footstep_right_large", ::ledge_scoot_fx_right );
|
|
addNotetrack_customFunction( "price", "footstep_left_large", ::ledge_scoot_fx_left );
|
|
addNotetrack_customFunction( "price", "bigjump_fx", ::big_jump_grab_fx );
|
|
|
|
level.price_last_climb_hit = "none";
|
|
}
|
|
|
|
price_catches_player( price )
|
|
{
|
|
if ( isdefined( level.rumble_ent ) )
|
|
level.rumble_ent delete();
|
|
|
|
level.player PlayRumbleOnEntity( "damage_light" );
|
|
flag_set( "player_was_caught" );
|
|
}
|
|
|
|
big_jump_grab_fx( price )
|
|
{
|
|
//iprintlnbold( "Exploder 4" );
|
|
exploder( 4 );
|
|
|
|
}
|
|
|
|
ledge_scoot_fx_left( price )
|
|
{
|
|
if ( flag( "reached_top" ) )
|
|
return;
|
|
|
|
//price traceFX_on_tag( "footstep_ice_climbing", "J_Ankle_LE", 5 );
|
|
playfxontag( getfx( "footstep_ice_climbing" ), price, "J_Ankle_LE" );
|
|
}
|
|
|
|
ledge_scoot_fx_right( price )
|
|
{
|
|
if ( flag( "reached_top" ) )
|
|
return;
|
|
|
|
//price traceFX_on_tag( "footstep_ice_climbing", "J_Ankle_RI", 5 );
|
|
playfxontag( getfx( "footstep_ice_climbing" ), price, "J_Ankle_RI" );
|
|
}
|
|
|
|
pick_warning( warning )
|
|
{
|
|
/#
|
|
if ( !getdvarint( "debug_pickwarning" ) )
|
|
return;
|
|
|
|
if ( level.price_last_climb_hit == warning )
|
|
{
|
|
iprintlnbold( "Called same hit twice in a row (" + warning + ")" );
|
|
}
|
|
|
|
level.price_last_climb_hit = warning;
|
|
#/
|
|
}
|
|
|
|
pick_left_hit( price )
|
|
{
|
|
/# pick_warning( "left_in" ); #/
|
|
|
|
// temporarily detach the other one so we can get the right tag
|
|
price Detach( "weapon_ice_picker", "tag_inhand" );
|
|
price traceFX_on_tag( "ice_pick", "TAG_ICE_PICKER_FX", CONST_traceFX_dist );
|
|
price anim_spawn_tag_model( "weapon_ice_picker", "tag_inhand" );
|
|
}
|
|
|
|
pick_left_fx( price )
|
|
{
|
|
// temporarily detach the other one so we can get the right tag
|
|
price Detach( "weapon_ice_picker", "tag_inhand" );
|
|
price traceFX_on_tag( "ice_pick", "TAG_ICE_PICKER_FX", CONST_traceFX_dist );
|
|
price anim_spawn_tag_model( "weapon_ice_picker", "tag_inhand" );
|
|
}
|
|
|
|
pick_right_hit( price )
|
|
{
|
|
/# pick_warning( "right_in" ); #/
|
|
|
|
// temporarily detach the other one so we can get the right tag
|
|
price Detach( "weapon_ice_picker", "tag_weapon_left" );
|
|
price traceFX_on_tag( "ice_pick", "TAG_ICE_PICKER_FX", CONST_traceFX_dist );
|
|
price anim_spawn_tag_model( "weapon_ice_picker", "tag_weapon_left" );
|
|
}
|
|
|
|
pick_left_out( price )
|
|
{
|
|
/# pick_warning( "left_out" ); #/
|
|
|
|
// temporarily detach the other one so we can get the right tag
|
|
price Detach( "weapon_ice_picker", "tag_inhand" );
|
|
price traceFX_on_tag( "ice_pick_out", "TAG_ICE_PICKER_FX", CONST_traceFX_dist );
|
|
price anim_spawn_tag_model( "weapon_ice_picker", "tag_inhand" );
|
|
}
|
|
|
|
pick_right_out( price )
|
|
{
|
|
/# pick_warning( "right_out" ); #/
|
|
// temporarily detach the other one so we can get the right tag
|
|
price Detach( "weapon_ice_picker", "tag_weapon_left" );
|
|
price traceFX_on_tag( "ice_pick_out", "TAG_ICE_PICKER_FX", CONST_traceFX_dist );
|
|
price anim_spawn_tag_model( "weapon_ice_picker", "tag_weapon_left" );
|
|
}
|
|
|
|
attach_pick( price )
|
|
{
|
|
if ( isdefined( price.picks ) )
|
|
return;
|
|
price.picks = true;
|
|
price anim_spawn_tag_model( "weapon_ice_picker", "tag_weapon_left" );
|
|
price anim_spawn_tag_model( "weapon_ice_picker", "tag_inhand" );
|
|
}
|
|
|
|
attach_left_pick( price )
|
|
{
|
|
price anim_spawn_tag_model( "weapon_ice_picker", "tag_weapon_left" );
|
|
}
|
|
|
|
attach_right_pick( price )
|
|
{
|
|
price anim_spawn_tag_model( "weapon_ice_picker", "tag_inhand" );
|
|
}
|
|
|
|
detach_left_pick( price )
|
|
{
|
|
price Detach( "weapon_ice_picker", "tag_weapon_left" );
|
|
}
|
|
|
|
detach_right_pick( price )
|
|
{
|
|
price Detach( "weapon_ice_picker", "tag_inhand" );
|
|
}
|
|
|
|
price_gun_recall( price )
|
|
{
|
|
price gun_recall();
|
|
}
|
|
|
|
detach_picks()
|
|
{
|
|
if ( !isdefined( self.picks ) )
|
|
return;
|
|
self.picks = undefined;
|
|
self Detach( "weapon_ice_picker", "tag_weapon_left" );
|
|
self Detach( "weapon_ice_picker", "tag_inhand" );
|
|
}
|
|
|
|
price_exhales( price )
|
|
{
|
|
playfxOnTag( getfx( "cigar_exhale" ), price, "tag_eye" );
|
|
wait( 6.5 );
|
|
price Detach( "prop_price_cigar", "tag_inhand" );
|
|
|
|
}
|
|
|
|
price_puffs( price )
|
|
{
|
|
playfxOnTag( getfx( "cigar_glow_puff" ), price, "tag_cigarglow" );
|
|
wait( 1 );
|
|
playfxOnTag( getfx( "cigar_smoke_puff" ), price, "tag_eye" );
|
|
}
|
|
|
|
right_stab_fx( player_model )
|
|
{
|
|
level.player PlayRumbleOnEntity( "icepick_climb" );
|
|
fx_tag_name = get_icepick_tag_name( "right" );
|
|
fx_tag = spawn_icepick_fx_tag( player_model, fx_tag_name );
|
|
fx_tag traceFX_on_tag( "player_ice_pick", "tag_origin", 10 );
|
|
fx_tag delete();
|
|
}
|
|
|
|
stab_fx( arm_model, arm )
|
|
{
|
|
level.player PlayRumbleOnEntity( "icepick_climb" );
|
|
fx_tag_name = get_icepick_tag_name( arm );
|
|
fx_tag = spawn_icepick_fx_tag( arm_model, fx_tag_name );
|
|
fx_tag traceFX_on_tag( "player_ice_pick", "tag_origin", 10 );
|
|
fx_tag delete();
|
|
}
|
|
|
|
stab_fx_current( arm_model )
|
|
{
|
|
arm = level.arm_ent_globals.current_arm;
|
|
stab_fx( arm_model, arm );
|
|
}
|
|
|
|
stab_fx_left( arm_model )
|
|
{
|
|
arm = "left";
|
|
stab_fx( arm_model, arm );
|
|
}
|
|
|
|
stab_fx_right( arm_model )
|
|
{
|
|
arm = "right";
|
|
stab_fx( arm_model, arm );
|
|
}
|
|
|
|
#using_animtree( "player" );
|
|
player_animations()
|
|
{
|
|
level.scr_animtree[ "player_rig" ] = #animtree;
|
|
level.scr_model[ "player_rig" ] = "viewhands_player_arctic_wind";
|
|
level.scr_anim[ "player_rig" ][ "big_jump" ] = %player_icepicker_bigjump;
|
|
level.scr_anim[ "player_rig" ]["climb_finish" ] = %player_icepicker_bigjump_end_getup;
|
|
|
|
level.scr_anim[ "player_rig" ][ "big_jump_both_in" ] = %player_icepicker_bigjump_slide_both_in;
|
|
level.scr_anim[ "player_rig" ][ "big_jump_both_out" ] = %player_icepicker_bigjump_slide_both_out;
|
|
level.scr_anim[ "player_rig" ][ "big_jump_left" ] = %player_icepicker_bigjump_slide_left_in;
|
|
level.scr_anim[ "player_rig" ][ "big_jump_right" ] = %player_icepicker_bigjump_slide_right_in;
|
|
|
|
level.scr_anim[ "player_rig" ][ "first_pullup_left" ] = %player_icepicker_climbup_from_left;
|
|
level.scr_anim[ "player_rig" ][ "first_pullup_right" ] = %player_icepicker_climbup_from_right;
|
|
|
|
level.scr_anim[ "player_rig" ][ "controller_slide" ] = %cliffhanger_bigjump;
|
|
level.scr_anim[ "player_rig" ][ "controller_climb" ] = %player_climb;
|
|
|
|
level.scr_anim[ "player_rig" ][ "controller_both_in" ] = %slide_both_in;
|
|
level.scr_anim[ "player_rig" ][ "controller_both_out" ] = %slide_both_out;
|
|
level.scr_anim[ "player_rig" ][ "controller_left" ] = %slide_left;
|
|
level.scr_anim[ "player_rig" ][ "controller_right" ] = %slide_right;
|
|
|
|
//addNotetrack_customFunction( "player_rig", "detach_pick_fall", maps\_climb::detach_pick_2, "big_jump" );
|
|
//addNotetrack_customFunction( "player_rig", "detach_pick", maps\_climb::detach_pick, "big_jump" );
|
|
addNotetrack_customFunction( "player_rig", "start_gaz", maps\_climb::gaz_catches_player );
|
|
addNotetrack_customFunction( "player_rig", "stab", ::right_stab_fx, "big_jump" );
|
|
|
|
addNotetrack_customFunction( "player_rig", "stab", ::stab_fx_current, "climbing" );
|
|
addNotetrack_customFunction( "player_rig", "stab_left", ::stab_fx_left, "climbing" );
|
|
addNotetrack_customFunction( "player_rig", "stab_right", ::stab_fx_right, "climbing" );
|
|
|
|
}
|
|
|
|
get_anims_for_climbing_direction( anims, dir, arm )
|
|
{
|
|
anims[ "root" ] = %climb_root;
|
|
anims[ "player_climb_root" ] = %player_climb;
|
|
anims[ "wrist" ] = %climb_wrist;
|
|
anims[ "jump_down_start" ] = %player_icepicker_drop_down_start;
|
|
anims[ "jump_down_end" ] = %player_icepicker_drop_down_end;
|
|
anims[ "big_jump" ] = %player_icepicker_bigjump;
|
|
anims[ "big_jump_both_in" ] = %player_icepicker_bigjump_slide_both_in;
|
|
anims[ "big_jump_both_out" ] = %player_icepicker_bigjump_slide_both_out;
|
|
anims[ "big_jump_left" ] = %player_icepicker_bigjump_slide_left_in;
|
|
anims[ "big_jump_right" ] = %player_icepicker_bigjump_slide_right_in;
|
|
anims[ "sleeve_flap" ] = %player_sleeve_flapping;
|
|
anims[ "climb_finish" ] = %player_icepicker_bigjump_end_getup;
|
|
|
|
anims[ "start_climb_left" ] = %player_icepicker_start_climb_up_left;
|
|
anims[ "start_climb_right" ] = %player_icepicker_start_climb_up_right;
|
|
anims[ "early_climb_left" ] = %player_icepicker_start_climb_up_left_early;
|
|
anims[ "early_climb_right" ] = %player_icepicker_start_climb_up_right_early;
|
|
|
|
|
|
if ( dir == "up" )
|
|
{
|
|
if ( arm == "right" )
|
|
{
|
|
anims[ "stab" ] = %player_icepicker_right_high_stab_a;
|
|
anims[ "settle" ] = %player_icepicker_right_high_settle_a;
|
|
anims[ "fail" ] = %player_icepicker_right_high_stab_fail_a;
|
|
anims[ "idle" ] = %player_icepicker_right_idle;
|
|
anims[ "additive" ] = %climb_right_additive;
|
|
anims[ "additive_in" ] = %player_icepicker_right_high_stab_in;
|
|
anims[ "additive_out" ] = %player_icepicker_right_high_stab_out;
|
|
anims[ "wrist_in" ] = %player_icepicker_right_high_wrist_in;
|
|
anims[ "wrist_out" ] = %player_icepicker_right_high_wrist_out;
|
|
anims[ "fall" ] = %player_icepicker_right_fall;
|
|
anims[ "fall_small" ] = %player_icepicker_right_fall_small;
|
|
}
|
|
else
|
|
{
|
|
anims[ "stab" ] = %player_icepicker_left_high_stab_a;
|
|
anims[ "settle" ] = %player_icepicker_left_high_settle_a;
|
|
anims[ "fail" ] = %player_icepicker_left_high_stab_fail_a;
|
|
anims[ "idle" ] = %player_icepicker_left_idle;
|
|
anims[ "additive" ] = %climb_left_additive;
|
|
anims[ "additive_in" ] = %player_icepicker_left_high_stab_in;
|
|
anims[ "additive_out" ] = %player_icepicker_left_high_stab_out;
|
|
anims[ "wrist_in" ] = %player_icepicker_left_high_wrist_in;
|
|
anims[ "wrist_out" ] = %player_icepicker_left_high_wrist_out;
|
|
anims[ "fall" ] = %player_icepicker_left_fall;
|
|
anims[ "fall_small" ] = %player_icepicker_left_fall_small;
|
|
}
|
|
|
|
anims[ "additive_in_strength" ] = 1;
|
|
anims[ "additive_out_strength" ] = 1;
|
|
return anims;
|
|
}
|
|
|
|
if ( dir == "right" )
|
|
{
|
|
if ( arm == "right" )
|
|
{
|
|
anims[ "additive" ] = %climb_right_additive;
|
|
anims[ "additive_in_strength" ] = 0.5;
|
|
anims[ "additive_out_strength" ] = 1;
|
|
|
|
}
|
|
else
|
|
{
|
|
anims[ "fail" ] = %player_icepicker_left_high_stab_fail_a;
|
|
anims[ "additive" ] = %climb_left_additive;
|
|
anims[ "additive_in_strength" ] = 0.5;
|
|
anims[ "additive_out_strength" ] = 0.5;
|
|
}
|
|
return anims;
|
|
}
|
|
|
|
if ( dir == "left" )
|
|
{
|
|
if ( arm == "right" )
|
|
{
|
|
anims[ "fail" ] = %player_icepicker_right_high_stab_fail_a;
|
|
anims[ "additive" ] = %climb_right_additive;
|
|
anims[ "additive_in_strength" ] = 0.5;
|
|
anims[ "additive_out_strength" ] = 0.5;
|
|
}
|
|
else
|
|
{
|
|
anims[ "additive" ] = %climb_left_additive;
|
|
anims[ "additive_in_strength" ] = 0.5;
|
|
anims[ "additive_out_strength" ] = 1;
|
|
|
|
anims[ "vertical_corrector" ] = %climb_left_vertical_corrector;
|
|
}
|
|
return anims;
|
|
}
|
|
|
|
assertex( 0, "No dir " + dir );
|
|
}
|
|
|
|
|
|
#using_animtree( "script_model" );
|
|
climb_preview_anim()
|
|
{
|
|
anims = [];
|
|
anims[ "cliff_hero1_pose_A" ] = %cliff_hero1_pose_A;
|
|
anims[ "cliff_hero1_pose_B" ] = %cliff_hero1_pose_B;
|
|
anims[ "cliff_hero1_pose_C" ] = %cliff_hero1_pose_C;
|
|
anims[ "cliff_hero1_pose_D" ] = %cliff_hero1_pose_D;
|
|
anims[ "cliff_hero2_pose_A" ] = %cliff_hero2_pose_A;
|
|
anims[ "cliff_hero2_pose_B" ] = %cliff_hero2_pose_B;
|
|
anims[ "cliff_hero2_pose_C" ] = %cliff_hero2_pose_C;
|
|
anims[ "cliff_hero2_pose_D" ] = %cliff_hero2_pose_D;
|
|
anims[ "cliff_hero1_pose_jump1" ] = %cliff_hero1_pose_jump1;
|
|
anims[ "cliff_hero1_pose_jump2" ] = %cliff_hero1_pose_jump2;
|
|
anims[ "cliff_hero1_pose_jump3" ] = %cliff_hero1_pose_jump3;
|
|
anims[ "cliff_hero1_pose_jump4" ] = %cliff_hero1_pose_jump4;
|
|
anims[ "cliff_hero1_pose_jump5" ] = %cliff_hero1_pose_jump5;
|
|
anims[ "cliff_hero1_pose_jump6" ] = %cliff_hero1_pose_jump6;
|
|
self useanimtree( #animtree );
|
|
animation = anims[ self.animation ];
|
|
origin = GetStartOrigin( self.origin, self.angles, animation );
|
|
angles = GetStartAngles( self.origin, self.angles, animation );
|
|
thread climb_preview_animates( animation, origin, angles );
|
|
|
|
self anim_spawn_tag_model( "weapon_ice_picker", "tag_weapon_left" );
|
|
self anim_spawn_tag_model( "weapon_ice_picker", "tag_inhand" );
|
|
|
|
for ( ;; )
|
|
{
|
|
if ( distance( level.player.origin, self.origin ) < 150 )
|
|
break;
|
|
wait( 0.05 );
|
|
}
|
|
self delete();
|
|
}
|
|
|
|
climb_preview_animates( animation, origin, angles )
|
|
{
|
|
self endon( "death" );
|
|
for ( ;; )
|
|
{
|
|
self.origin = origin;
|
|
self.angles = angles;
|
|
self setflaggedanim( "anim", animation, 1, 0, 1 );
|
|
self waittillmatch( "anim", "end" );
|
|
}
|
|
}
|