#include common_scripts\utility; #using_animtree ("zombie_dog"); main() { level.dog_debug_orient = 0; level.dog_debug_anims = 0; level.dog_debug_anims_ent = 0; level.dog_debug_turns = 0; self useAnimTree( #animtree ); self.animSet = "zombie"; initDogAnimations(); animscripts\zombie_init::firstInit(); self.chatInitialized = false; self.noDodgeMove = true; self.root_anim = %root; self.meleeAttackDist = 0; self thread setMeleeAttackDist(); level.dogRunTurnSpeed = 20; level.dogRunPainSpeed = 20; self.a = SpawnStruct(); self.a.pose = "stand"; self.a.nextStandingHitDying = false; self.a.movement = "walk"; animscripts\zombie_init::set_anim_playback_rate(); self.disableArrivals = false; self.pathEnemyFightDist = 512; self setTalkToSpecies( "dog" ); self.health = int( anim.dog_health * self.health ); } change_anim_set( animset ) { assert( animset == "shepherd" || animset == "zombie" ); self.animSet = animset; if( isdefined(anim.dogAnims) && isdefined(anim.dogAnims[self.animSet]) ) self.stopAnimDistSq = anim.dogAnims[self.animSet].dogStoppingDistSq; } setMeleeAttackDist() { self endon( "death" ); while ( 1 ) { if ( IsDefined( self.enemy ) && IsPlayer(self.enemy) ) { self.meleeAttackDist = anim.dogAnims[self.animSet].dogAttackPlayerDist; } else { self.meleeAttackDist = 102; } self waittill( "enemy" ); } } initDogAnimations() { if ( !IsDefined( level.dogsInitialized ) ) { level.dogsInitialized = true; precachestring( &"SCRIPT_PLATFORM_DOG_DEATH_DO_NOTHING" ); precachestring( &"SCRIPT_PLATFORM_DOG_DEATH_TOO_LATE" ); precachestring( &"SCRIPT_PLATFORM_DOG_DEATH_TOO_SOON" ); precachestring( &"SCRIPT_PLATFORM_DOG_HINT" ); } if ( IsDefined (anim.NotFirstTimeDogs) ) { return; } anim.NotFirstTimeDogs = 1; anim.dogStartMoveAngles[8] = 0; anim.dogStartMoveAngles[6] = 90; anim.dogStartMoveAngles[4] = -90; anim.dogStartMoveAngles[3] = 180; anim.dogStartMoveAngles[1] = -180; initCommonDogAnims(); initZombieDogAnimations(); level._effect[ "dog_bite_blood" ] = loadfx( "impacts/fx_deathfx_bloodpool_view" ); level._effect[ "deathfx_bloodpool" ] = loadfx( "impacts/fx_deathfx_dogbite" ); slices = 5; array = []; for ( i = 0; i <= slices; i++ ) { array[ array.size ] = i / slices; } level.dog_melee_index = 0; level.dog_melee_timing_array = array_randomize( array ); SetDvar( "friendlySaveFromDog", "0" ); } initCommonDogAnims() { } calcAnimLengthVariables(animset) { anim.dogAnims[animset].dogStoppingDistSq = lengthSquared( getmovedelta( anim.dogAnims[animset].move["run_stop"], 0, 1 ) * 1.2 ) ; anim.dogAnims[animset].dogStartMoveDist = length( getmovedelta( anim.dogAnims[animset].move["run_start"], 0, 1 ) ); } initZombieDogAnimations() { anim.dogAnims["zombie"] = spawnstruct(); anim.dogAnims["zombie"].lookKnob[2] = %zombie_dog_look_2; anim.dogAnims["zombie"].lookKnob[4] = %zombie_dog_look_4; anim.dogAnims["zombie"].lookKnob[6] = %zombie_dog_look_6; anim.dogAnims["zombie"].lookKnob[8] = %zombie_dog_look_8; anim.dogAnims["zombie"].traverse = []; anim.dogAnims["zombie"].traverse["wallhop"] = %zombie_dog_run_jump_40; anim.dogAnims["zombie"].traverse[ "window_40" ] = %zombie_dog_run_jump_window_40; anim.dogAnims["zombie"].traverse["jump_down_40"] = %zombie_dog_traverse_down_40; anim.dogAnims["zombie"].traverse["jump_down_190"] = %zombie_dog_traverse_down_190; anim.dogAnims["zombie"].traverse["jump_down_120"] = %zombie_dog_traverse_down_126; anim.dogAnims["zombie"].traverse["jump_up_40"] = %zombie_dog_traverse_up_40; anim.dogAnims["zombie"].traverse[ "jump_up_80" ] = %zombie_dog_traverse_up_80; anim.dogAnims["zombie"].look["attackIdle"][2] = %zombie_dog_attack_look_down; anim.dogAnims["zombie"].look["attackIdle"][4] = %zombie_dog_attack_look_left; anim.dogAnims["zombie"].look["attackIdle"][6] = %zombie_dog_attack_look_right; anim.dogAnims["zombie"].look["attackIdle"][8] = %zombie_dog_attack_look_up; anim.dogAnims["zombie"].look["normal"][2] = %zombie_dog_look_down; anim.dogAnims["zombie"].look["normal"][4] = %zombie_dog_look_left; anim.dogAnims["zombie"].look["normal"][6] = %zombie_dog_look_right; anim.dogAnims["zombie"].look["normal"][8] = %zombie_dog_look_up; anim.dogAnims["zombie"].pain["pain"][2] = %zombie_dog_pain_hit_front; anim.dogAnims["zombie"].pain["pain"][4] = %zombie_dog_pain_hit_left; anim.dogAnims["zombie"].pain["pain"][6] = %zombie_dog_pain_hit_right; anim.dogAnims["zombie"].pain["pain"][8] = %zombie_dog_pain_hit_back; anim.dogAnims["zombie"].pain["pain_run"][2] = %zombie_dog_run_pain_front; anim.dogAnims["zombie"].pain["pain_run"][4] = %zombie_dog_run_pain_front; anim.dogAnims["zombie"].pain["pain_run"][6] = %zombie_dog_run_pain_front; anim.dogAnims["zombie"].pain["pain_run"][8] = %zombie_dog_run_pain_front; anim.dogAnims["zombie"].death[2] = %zombie_dog_death_front; anim.dogAnims["zombie"].death[4] = %zombie_dog_death_hit_left; anim.dogAnims["zombie"].death[6] = %zombie_dog_death_hit_right; anim.dogAnims["zombie"].death[8] = %zombie_dog_death_hit_back; anim.dogAnims["zombie"].turn["90_left"] = %zombie_dog_turn_90_left; anim.dogAnims["zombie"].turn["90_right"] = %zombie_dog_turn_90_right; anim.dogAnims["zombie"].turn["180_left"] = %zombie_dog_turn_180_left; anim.dogAnims["zombie"].turn["180_right"] = %zombie_dog_turn_180_right; anim.dogAnims["zombie"].turn["turn_knob"] = %zombie_dog_turn_knob; anim.dogAnims["zombie"].runTurn["90_left"] = %zombie_dog_run_turn_90_left; anim.dogAnims["zombie"].runTurn["90_right"] = %zombie_dog_run_turn_90_right; anim.dogAnims["zombie"].runTurn["180_left"] = %zombie_dog_run_turn_180_left; anim.dogAnims["zombie"].runTurn["180_right"] = %zombie_dog_run_turn_180_right; anim.dogAnims["zombie"].combatIdle["attackidle"] = %zombie_dog_attackidle; anim.dogAnims["zombie"].combatIdle["attackidle_bark"] = %zombie_dog_attackidle_bark; anim.dogAnims["zombie"].combatIdle["attackidle_growl"] = %zombie_dog_attackidle_growl; anim.dogAnims["zombie"].idle = %zombie_dog_idle; anim.dogAnims["zombie"].attack["attackidle_knob"] = %zombie_dog_attackidle_knob; anim.dogAnims["zombie"].attack["attack_player_miss"] = %zombie_dog_run_attack_miss; anim.dogAnims["zombie"].attack["attack_player_miss_turnR"] = %zombie_dog_attack_player_miss_turnR; anim.dogAnims["zombie"].attack["attack_player_miss_turnL"] = %zombie_dog_attack_player_miss_turnL; anim.dogAnims["zombie"].attack["run_attack"] = %zombie_dog_run_attack; anim.dogAnims["zombie"].attack["attack_player_late"] = %zd_attack_player_late; anim.dogAnims["zombie"].move["run_attack_low"] = %zombie_dog_run_attack_low; anim.dogAnims["zombie"].move["run_stop"] = %zombie_dog_run_stop; anim.dogAnims["zombie"].move["run_start"] = %zombie_dog_run; anim.dogAnims["zombie"].move["run_start_knob"] = %zombie_dog_run; anim.dogAnims["zombie"].move["run"] = %zombie_dog_run; anim.dogAnims["zombie"].move["run_lean_L"] = %zombie_dog_run_lean_l; anim.dogAnims["zombie"].move["run_lean_R"] = %zombie_dog_run_lean_r; anim.dogAnims["zombie"].move["run_knob"] = %zombie_dog_run_knob; anim.dogAnims["zombie"].move["walk"] = %zombie_dog_trot; calcAnimLengthVariables("zombie"); anim.dogAnims["zombie"].dogAttackPlayerDist = 64; }