Files
IL-GSC/AW/PC/animscripts/dog/dog_combat.gsc
InfinityLoader b2389dbcb9 Full AW Dump
2024-04-22 02:38:24 -04:00

1944 lines
42 KiB
Plaintext

/*******************************************************************
* Decompiled By: Bog
* Decompiled File: dog\dog_combat.gsc
* Game: Call of Duty: Advanced Warfare
* Platform: PC
* Function Count: 82
* Decompile Time: 970 ms
* Timestamp: 4/22/2024 1:58:44 AM
*******************************************************************/
//Function Number: 1
main()
{
if(isdefined(level.shark_functions))
{
if(issubstr(self.model,"shark"))
{
self [[ level.shark_functions["combat"] ]]();
return;
}
}
self endon("killanimscript");
if(!isalive(self.enemy))
{
combatidle();
return;
}
if(isplayer(self.enemy))
{
meleebiteattackplayer();
return;
}
meleestrugglevsai();
}
//Function Number: 2
end_script()
{
self setpitchorient();
self.doglastknowngoodpos = undefined;
}
//Function Number: 3
killplayer()
{
self endon("pvd_melee_interrupted");
if(!isdefined(self.meleeingplayer.player_view))
{
return;
}
var_00 = self.meleeingplayer.player_view;
if(isdefined(var_00.player_killed))
{
return;
}
var_00.player_killed = 1;
if(maps\_utility::killing_will_down(self.meleeingplayer))
{
knock_down_player_coop(self.meleeingplayer,self);
return;
}
self.meleeingplayer.specialdeath = 1;
self.meleeingplayer setcandamage(1);
if(var_00 gettagindex("tag_torso") != -1)
{
playfxontag(level._effect["dog_bite_blood"],var_00,"tag_torso");
}
wait(1);
if(!isdefined(self) || !isdefined(self.meleeingplayer))
{
return;
}
var_01 = is_hyena();
self.meleeingplayer enablehealthshield(0);
if(!isalive(self.meleeingplayer))
{
return;
}
self.meleeingplayer dog_player_kill(self);
self.meleeingplayer shellshock("default",5);
waittillframeend;
setdvar("ui_deadquote","");
thread dog_death_hud(self.meleeingplayer,var_01);
}
//Function Number: 4
knock_down_player_coop(param_00,param_01)
{
param_00.dog_downed_player = 1;
var_02 = dog_vs_player_anim_rate();
self setflaggedanimknobrestart("meleeanim",%german_shepherd_player_getoff,1,0.1,var_02);
param_00.player_view notify("pvd_melee_interrupted");
param_00.player_view notify("pvd_melee_done");
param_00.player_view playerview_endsequence(param_00);
if(!maps\_utility::killing_will_down(param_00))
{
param_00 dog_player_kill(param_01);
}
}
//Function Number: 5
dog_player_kill(param_00)
{
if(maps\_utility::laststand_enabled())
{
self enabledeathshield(0);
}
self disableinvulnerability();
if(isalive(param_00))
{
self kill(self.origin,param_00);
return;
}
self kill(self.origin);
}
//Function Number: 6
dog_death_hud(param_00,param_01)
{
if(maps\_utility::is_specialop())
{
return;
}
wait(1.5);
thread dog_deathquote(param_00);
var_02 = newclienthudelem(param_00);
var_02.x = 0;
var_02.y = 50;
if(param_01)
{
var_02 setshader("hud_hyena_melee",96,96);
}
else
{
var_02 setshader("hud_dog_melee",96,96);
}
var_02.alignx = "center";
var_02.aligny = "middle";
var_02.horzalign = "center";
var_02.vertalign = "middle";
var_02.foreground = 1;
var_02.alpha = 0;
var_02 fadeovertime(1);
var_02.alpha = 1;
}
//Function Number: 7
dog_deathquote(param_00)
{
var_01 = param_00 maps\_hud_util::createclientfontstring("default",1.75);
var_01.color = (1,1,1);
var_01 settext(level.dog_death_quote);
var_01.x = 0;
var_01.y = -30;
var_01.alignx = "center";
var_01.aligny = "middle";
var_01.horzalign = "center";
var_01.vertalign = "middle";
var_01.foreground = 1;
var_01.alpha = 0;
var_01 fadeovertime(1);
var_01.alpha = 1;
}
//Function Number: 8
attackmiss()
{
self clearanim(%body,0.1);
var_00 = %german_shepherd_attack_player_miss_b;
if(isdefined(self.enemy))
{
var_01 = anglestoforward((0,self.desiredangle,0));
var_02 = vectornormalize(self.enemy.origin - self.origin);
var_03 = self.enemy.origin - self.origin + var_01 * 40;
if(vectordot(var_02,var_01) > 0.707 || vectordot(var_03,var_01) > 0)
{
thread animscripts\dog\dog_stop::lookattarget("normal");
}
else
{
self.skipstartmove = 1;
thread attackmisstracktargetthread();
if(var_02[0] * var_01[1] - var_02[1] * var_01[0] > 0)
{
var_00 = %german_shepherd_attack_player_miss_turnr;
}
else
{
var_00 = %german_shepherd_attack_player_miss_turnl;
}
}
}
self setflaggedanimrestart("miss_anim",var_00,1,0,1);
var_04 = getanimlength(var_00);
soundscripts\_snd::snd_message("anml_doberman","attack_miss");
animscripts\notetracks::donotetracksfortime(var_04 - 0.1,"miss_anim");
self notify("stop tracking");
}
//Function Number: 9
attackmisstracktargetthread()
{
self endon("killanimscript");
wait(0.6);
self orientmode("face enemy");
}
//Function Number: 10
knockoutofads(param_00)
{
param_00 endon("death");
param_00 allowads(0);
wait(0.75);
param_00 allowads(1);
}
//Function Number: 11
dogmelee()
{
if(isdefined(self.meleeingplayer))
{
if(isdefined(self.meleeingplayer.using_uav) && self.meleeingplayer.using_uav)
{
self.meleeingplayer notify("force_out_of_uav");
}
if(self.meleeingplayer islinked())
{
return undefined;
}
if(self.meleeingplayer ismantling())
{
return undefined;
}
if(self.meleeingplayer.laststand && self.meleeingplayer.ignoreme)
{
return undefined;
}
}
if(isdefined(self.enemy))
{
if(distance2d(self.origin,self.enemy.origin) < 32)
{
return self melee();
}
}
return self melee(anglestoforward(self.angles));
}
//Function Number: 12
handlemeleebiteattacknotetracks(param_00)
{
switch(param_00)
{
case "dog_melee":
var_01 = dogmelee();
if(isdefined(var_01))
{
if(isplayer(var_01))
{
var_02 = var_01 getcurrentweapon();
if(isdefined(var_02) && var_02 == "s1_exo_shield_sp")
{
var_01 shellshock("dog_bite_hit_shield",0.5);
}
else
{
var_01 shellshock("dog_bite",1);
}
soundscripts\_snd::snd_message("anml_doberman","attack_hit");
thread knockoutofads(var_01);
}
}
else
{
attackmiss();
return 1;
}
break;
case "stop_tracking":
self orientmode("face current");
break;
}
}
//Function Number: 13
addsafetyhealth()
{
var_00 = self.meleeingplayer getnormalhealth();
if(var_00 == 0)
{
return 0;
}
if(var_00 < 0.25)
{
self.meleeingplayer setnormalhealth(var_00 + 0.25);
return 1;
}
return 0;
}
//Function Number: 14
removesafetyhealth()
{
var_00 = self.meleeingplayer getnormalhealth();
if(var_00 > 0.25)
{
self.meleeingplayer setnormalhealth(var_00 - 0.25);
return;
}
self.meleeingplayer setnormalhealth(0.01);
}
//Function Number: 15
handlemeleefinishattacknotetracks(param_00)
{
switch(param_00)
{
case "dog_melee":
var_01 = addsafetyhealth();
var_02 = dogmelee();
if(isdefined(var_02) && isplayer(var_02) && isalive(self.meleeingplayer))
{
if(var_01)
{
removesafetyhealth();
}
self.skipstartmove = undefined;
self.meleeingplayer.player_view = playerview_spawn(self);
if(self.meleeingplayer.player_view playerview_startsequence(self))
{
self setcandamage(0);
}
}
else
{
if(var_01)
{
removesafetyhealth();
}
attackmiss();
return 1;
}
break;
case "dog_early":
self notify("dog_early_notetrack");
var_03 = 0.45 + 0.8 * level.dog_melee_timing_array[level.dog_melee_index];
var_03 = var_03 * dog_vs_player_anim_rate();
level.dog_melee_index++;
if(level.dog_melee_index >= level.dog_melee_timing_array.size)
{
level.dog_melee_index = 0;
level.dog_melee_timing_array = common_scripts\utility::array_randomize(level.dog_melee_timing_array);
}
self setflaggedanimlimited("meleeanim",%german_shepherd_attack_player,1,0.2,var_03);
self setflaggedanimlimited("meleeanim",%german_shepherd_attack_player_late,1,0.2,var_03);
self.meleeingplayer.player_view playerview_playknockdownanimlimited(var_03);
break;
case "dog_lunge":
thread set_melee_timer();
var_03 = dog_vs_player_anim_rate();
self setflaggedanim("meleeanim",%german_shepherd_attack_player,1,0.2,var_03);
self.meleeingplayer.player_view playerview_playknockdownanim(var_03);
break;
case "dogbite_damage":
thread killplayer();
break;
case "stop_tracking":
self orientmode("face current");
break;
}
}
//Function Number: 16
handle_dogbite_notetrack(param_00)
{
switch(param_00)
{
case "dogbite_damage":
thread killplayer();
break;
}
}
//Function Number: 17
set_melee_timer()
{
wait(0.1);
thread dog_hint();
wait(0.05);
self.melee_able_timer = gettime();
}
//Function Number: 18
playerdoginit()
{
self.lastdogmeleeplayertime = 0;
self.dogmeleeplayercounter = 0;
}
//Function Number: 19
meleebiteattackplayer()
{
self.meleeingplayer = self.enemy;
if(!isdefined(self.meleeingplayer.doginited))
{
self.meleeingplayer playerdoginit();
}
var_00 = 30;
var_01 = self.meleeattackdist + var_00;
for(;;)
{
if(!isalive(self.enemy))
{
break;
}
if(!isplayer(self.enemy))
{
break;
}
if(maps\_utility::is_player_down(self.enemy))
{
combatidle();
continue;
}
if((isdefined(self.meleeingplayer.syncedmeleetarget) && self.meleeingplayer.syncedmeleetarget != self) || isdefined(self.meleeingplayer.player_view) && isdefined(self.meleeingplayer.player_view.inseq))
{
if(checkendcombat(var_01))
{
break;
}
else
{
combatidle();
continue;
}
}
if(shouldwaitincombatidle())
{
combatidle();
continue;
}
self orientmode("face enemy");
self animmode("zonly_physics");
self.safetochangescript = 0;
prepareattackplayer();
self clearanim(%body,0.1);
self clearpitchorient();
self.meleeingplayer setnextdogattackallowtime(500);
if(dog_cant_kill_in_one_hit() || !isdefined(self.dogallowplayerpairedanim))
{
self.meleeingplayer.lastdogmeleeplayertime = gettime();
self.meleeingplayer.dogmeleeplayercounter++;
self setflaggedanimrestart("meleeanim",%german_shepherd_run_attack_b,1,0.2,1);
animscripts\shared::donotetracks("meleeanim",::handlemeleebiteattacknotetracks);
}
else
{
thread dog_melee_death();
self.meleeingplayer.attacked_by_dog = 1;
self.meleeingplayer.laststand = 0;
self.meleeingplayer.achieve_downed_kills = undefined;
thread clear_player_attacked_by_dog_on_death();
self setflaggedanimrestart("meleeanim",%german_shepherd_attack_player,1,0.2,1);
self setflaggedanimrestart("meleeanim",%german_shepherd_attack_player_late,1,0,1);
self setanimlimited(%attack_player,1,0,1);
self setanimlimited(%attack_player_late,0.01,0,1);
animscripts\shared::donotetracks("meleeanim",::handlemeleefinishattacknotetracks);
self notify("dog_no_longer_melee_able");
self setcandamage(1);
self unlink();
}
self.safetochangescript = 1;
wait(0.05);
if(checkendcombat(var_01))
{
break;
}
}
self.safetochangescript = 1;
self animmode("none");
}
//Function Number: 20
clear_player_attacked_by_dog_on_death()
{
self waittill("death");
self.meleeingplayer.attacked_by_dog = undefined;
}
//Function Number: 21
dog_cant_kill_in_one_hit()
{
if(isdefined(self.meleeingplayer.dogs_dont_instant_kill))
{
return 1;
}
if(maps\_utility::is_player_down(self.meleeingplayer))
{
return 1;
}
if(isdefined(self.meleeingplayer.slidemodel))
{
return 1;
}
if(gettime() - self.meleeingplayer.lastdogmeleeplayertime > 8000)
{
self.meleeingplayer.dogmeleeplayercounter = 0;
}
return self.meleeingplayer.dogmeleeplayercounter < self.meleeingplayer.gs.dog_hits_before_kill && self.meleeingplayer.health > 25;
}
//Function Number: 22
shouldwaitincombatidle()
{
return isdefined(self.enemy.dogattackallowtime) && gettime() < self.enemy.dogattackallowtime;
}
//Function Number: 23
setnextdogattackallowtime(param_00)
{
self.dogattackallowtime = gettime() + param_00;
}
//Function Number: 24
isdoingtraversal()
{
return self isinscriptedstate() && self.script != "scripted" && self.script != "<custom>";
}
//Function Number: 25
meleestrugglevsai()
{
if(!isalive(self.enemy) || !isdefined(level.allow_dog_paired_melee_vs_ai))
{
return;
}
if(isdefined(self.enemy.melee))
{
if(!isdefined(self.enemy.melee.target) || self.enemy.melee.target != self)
{
combatidle();
return;
}
}
if(isdefined(self.enemy.syncedmeleetarget) || shouldwaitincombatidle() || !isai(self.enemy))
{
combatidle();
return;
}
self.in_melee = 1;
self.enemy setnextdogattackallowtime(500);
self.enemy.dog_attacking_me = self;
var_00 = animscripts\battlechatter::getdirectionfacingclock(self.enemy.angles,self.enemy.origin,self.origin);
var_01 = "F";
switch(var_00)
{
case "4":
case "3":
case "2":
var_01 = "R";
break;
case "10":
case "9":
case "8":
var_01 = "L";
break;
case "7":
case "6":
case "5":
var_01 = "B";
break;
}
self.enemy.dog_attack_dir = var_01;
level notify("dog_attacks_ai",self,self.enemy,var_01);
self.enemy notify("dog_attacks_ai",self,var_01);
if(isdefined(level.dog_alt_melee_func))
{
if([[ level.dog_alt_melee_func ]](var_01))
{
return 1;
}
}
self.safetochangescript = 0;
self animmode("zonly_physics");
self.pushable = 0;
self clearpitchorient();
self.meleekilltarget = !isdefined(self.enemy.magic_bullet_shield) && !isdefined(self.enemy.noragdoll) && isdefined(self.enemy.a.doinglongdeath) || isdefined(self.meleealwayswin) || randomint(100) > 50;
self.originaltarget = self.enemy;
self.enemy.battlechatter = 0;
self.enemy.ignoreall = 1;
self.enemy clearenemy();
self.enemy.diequietly = 1;
var_02 = 0;
if(isdefined(self.enemy.use_old_dog_attack))
{
var_02 = 1;
}
if(meleestruggle_istraverse())
{
return meleestrugglevsai_traverse(var_01);
}
var_03 = vectortoangles(self.origin - self.enemy.origin);
var_03 = (0,var_03[1],0);
var_04 = [];
var_04[0] = %body;
if(var_02)
{
self.enemy.use_old_dog_attack = 1;
var_04[1] = %iw6_dog_kill_front_quick_1;
var_05 = 1;
if(isdefined(self.controlling_dog) && self.controlling_dog)
{
thread maps\_utility::play_sound_on_entity("scn_nml_dog_attack_short");
}
else
{
thread maps\_utility::play_sound_on_entity("scn_nml_dog_attack_short_npc");
}
}
else if(isdefined(self.enemy.a.doinglongdeath) || self.enemy.a.pose == "prone" || self.enemy isdoingtraversal())
{
thread maps\_utility::play_sound_on_entity("scn_nml_dog_attack_short_npc");
return domeleevsai_simple();
}
else
{
var_05[1] = %iw6_dog_kill_front_long_1;
var_05 = 1;
switch(var_01)
{
case "R":
var_04[1] = %iw6_dog_kill_right_quick_1;
var_05 = 1;
var_03 = var_03 + (0,90,0);
if(isdefined(self.controlling_dog) && self.controlling_dog)
{
thread maps\_utility::play_sound_on_entity("scn_nml_dog_attack_short");
}
else
{
thread maps\_utility::play_sound_on_entity("scn_nml_dog_attack_short_npc");
}
break;
case "L":
var_04[1] = %iw6_dog_kill_left_quick_1;
var_05 = 1;
var_03 = var_03 + (0,-90,0);
if(isdefined(self.controlling_dog) && self.controlling_dog)
{
thread maps\_utility::play_sound_on_entity("scn_nml_dog_attack_short");
}
else
{
thread maps\_utility::play_sound_on_entity("scn_nml_dog_attack_short_npc");
}
break;
case "B":
var_04[1] = %iw6_dog_kill_back_quick_1;
var_05 = 1;
var_03 = var_03 - (0,180,0);
if(isdefined(self.controlling_dog) && self.controlling_dog)
{
thread maps\_utility::play_sound_on_entity("scn_nml_dog_attack_quick_back_plr");
}
else
{
thread maps\_utility::play_sound_on_entity("scn_nml_dog_attack_quick_back_npc");
}
break;
default:
if(isdefined(self.controlling_dog) && self.controlling_dog)
{
thread maps\_utility::play_sound_on_entity("scn_nml_dog_attack_front_plr");
}
else
{
thread maps\_utility::play_sound_on_entity("scn_nml_dog_attack_front_npc");
}
break;
}
}
return domeleevsai(var_04,var_05,var_03);
}
//Function Number: 26
domeleevsai_simple()
{
self animcustom(::domeleevsai_simple_animcustom,::domeleevsai_simple_animcustom_cleanup);
return 1;
}
//Function Number: 27
domeleevsai_simple_animcustom()
{
self notify("stop_pant");
self.flashbangimmunity = 1;
self.enemy meleestrugglevsdog_justdie();
var_00 = self.enemy.origin - self.origin;
var_01 = vectortoangles(var_00);
self clearanim(%body,0.1);
self animmode("zonly_physics");
self orientmode("face angle",var_01[1]);
animscripts\shared::donotetracks("meleeanim");
}
//Function Number: 28
domeleevsai_simple_animcustom_cleanup()
{
self.pushable = 1;
self.safetochangescript = 1;
self.flashbangimmunity = 0;
self.in_melee = 0;
}
//Function Number: 29
domeleevsai(param_00,param_01,param_02,param_03)
{
self notify("stop_pant");
self setcandamage(0);
self.enemy.fndogmeleevictim = param_03;
self endon("melee_dog_interrupted");
thread meleestrugglevsai_interruptedcheck(self.enemy);
self clearanim(param_00[0],0.1);
self animrelative("meleeanim",self.enemy.origin,param_02,param_00[1]);
if(!animhasnotetrack(param_00[1],"ai_attack_start"))
{
handlestartaipart("ai_attack_start");
}
animscripts\shared::donotetracks("meleeanim",::handlestartaipart);
self notify("end_dog_interrupted_check");
self setcandamage(1);
self animmode("zonly_physics");
for(var_04 = 1;var_04 < param_01;var_04++)
{
if(isdefined(level._effect["dog_bite"]) && isdefined(level._effect["dog_bite"][var_04]) && isdefined(self.enemy))
{
playfxontag(level._effect["dog_bite"][var_04],self.enemy,"TAG_EYE");
}
self clearanim(param_00[var_04],0);
if(!insyncmeleewithtarget())
{
break;
}
if(!self.meleekilltarget && var_04 + 1 == param_01)
{
self.health = 1;
}
self setflaggedanimrestart("meleeanim",param_00[var_04 + 1],1,0,1);
animscripts\shared::donotetracks("meleeanim");
}
melee_dogcleanup();
return 1;
}
//Function Number: 30
melee_dogcleanup()
{
self unlink();
if(!self.meleekilltarget)
{
if(!isdefined(self.magic_bullet_shield))
{
self kill();
}
}
else
{
self.pushable = 1;
self.safetochangescript = 1;
self.flashbangimmunity = 0;
}
thread ragdoll_corpses();
self.in_melee = 0;
if(isdefined(self.doglastknowngoodpos))
{
var_00 = self aiphysicstrace(self.origin,self.origin + (0,0,2),undefined,undefined,1,0,1);
if(distancesquared(var_00,self.origin) < 0.001)
{
self forceteleport(self.doglastknowngoodpos,self.angles,60);
}
self.doglastknowngoodpos = undefined;
}
self animmode("none");
}
//Function Number: 31
meleestruggle_istraverse()
{
var_00 = self getdogattackbeginnode();
return isdefined(var_00);
}
//Function Number: 32
meleestrugglevsai_traverse(param_00)
{
self.safetochangescript = 0;
self animmode("zonly_physics");
self.pushable = 0;
self clearpitchorient();
self.meleekilltarget = !isdefined(self.enemy.magic_bullet_shield) && isdefined(self.enemy.a.doinglongdeath) || isdefined(self.meleealwayswin) || randomint(100) > 50;
self.originaltarget = self.enemy;
self.enemy.battlechatter = 0;
var_01 = vectortoangles(self.origin - self.enemy.origin);
var_01 = (0,var_01[1],0);
var_02 = [];
var_02[0] = %body;
var_02[1] = %iw6_dog_kill_wall_over_front_1;
var_03 = 1;
if(self.enemy isdoingtraversal())
{
thread maps\_utility::play_sound_on_entity("scn_nml_dog_attack_short_npc");
}
else if(isdefined(self.controlling_dog) && self.controlling_dog)
{
thread maps\_utility::play_sound_on_entity("scn_nml_dog_attack_front_plr");
}
else
{
thread maps\_utility::play_sound_on_entity("scn_nml_dog_attack_front_npc");
}
self.doglastknowngoodpos = self.origin;
return domeleevsai(var_02,var_03,var_01,::meleestrugglevsdog_traverse);
}
//Function Number: 33
meleestrugglevsai_interrupted_animcustom()
{
self animmode("gravity");
self clearanim(%body,0.2);
self setflaggedanim("meleeanim",%iw6_dog_kill_breach_end_nml);
animscripts\shared::donotetracks("meleeanim");
}
//Function Number: 34
meleestrugglevsai_interrupted_animcustom_cleanup()
{
if(isdefined(self.doglastknowngoodposcustom))
{
self.doglastknowngoodpos = self.doglastknowngoodposcustom;
}
self.doglastknowngoodposcustom = undefined;
self animmode("zonly_physics");
melee_dogcleanup();
meleestrugglevsdog_end();
}
//Function Number: 35
meleestrugglevsai_interruptedcheck(param_00)
{
self endon("killanimscript");
self endon("death");
self endon("end_melee_all");
self endon("end_dog_interrupted_check");
param_00 waittill("death");
self notify("melee_dog_interrupted");
self unlink();
self setcandamage(1);
self.doglastknowngoodposcustom = self.doglastknowngoodpos;
self animcustom(::meleestrugglevsai_interrupted_animcustom,::meleestrugglevsai_interrupted_animcustom_cleanup);
}
//Function Number: 36
combatidle()
{
self orientmode("face enemy");
self clearanim(%body,0.1);
self animmode("zonly_physics");
var_00 = [];
var_00[0] = %iw6_dog_attackidle;
var_00[1] = %iw6_dog_attackidle_bark;
var_01 = common_scripts\utility::random(var_00);
thread combatidlepreventoverlappingplayer();
self setflaggedanimrestart("combat_idle",var_01,1,0.2,1);
animscripts\shared::donotetracks("combat_idle");
self notify("combatIdleEnd");
}
//Function Number: 37
combatidlepreventoverlappingplayer()
{
self endon("killanimscript");
self endon("combatIdleEnd");
for(;;)
{
wait(0.1);
var_00 = getentarray("player","classname");
for(var_01 = 0;var_01 < var_00.size;var_01++)
{
var_02 = var_00[var_01];
if(!isdefined(var_02.syncedmeleetarget) || var_02.syncedmeleetarget == self)
{
continue;
}
var_03 = var_02.origin - self.origin;
if(var_03[2] * var_03[2] > 6400)
{
continue;
}
var_03 = (var_03[0],var_03[1],0);
var_04 = length(var_03);
if(var_04 < 1)
{
var_03 = anglestoforward(self.angles);
}
if(var_04 < 30)
{
var_03 = var_03 * 3 / var_04;
self safeteleport(self.origin - var_03,(0,30,0));
}
}
}
}
//Function Number: 38
insyncmeleewithtarget()
{
return isdefined(self.enemy) && isdefined(self.enemy.syncedmeleetarget) && self.enemy.syncedmeleetarget == self;
}
//Function Number: 39
handlestartaipart(param_00)
{
if(param_00 != "ai_attack_start")
{
handlevxnotetrack(param_00);
return undefined;
}
if(!isdefined(self.enemy))
{
return 1;
}
if(self.enemy != self.originaltarget)
{
return 1;
}
if(isdefined(self.enemy.syncedmeleetarget))
{
return 1;
}
self.flashbangimmunity = 1;
self.enemy.syncedmeleetarget = self;
if(self.enemy isdoingtraversal())
{
self.enemy meleestrugglevsdog_justdie();
return;
}
if(isdefined(self.enemy.fndogmeleevictim))
{
self.enemy animcustom(self.enemy.fndogmeleevictim);
return;
}
self.enemy animcustom(::meleestrugglevsdog);
}
//Function Number: 40
checkendcombat(param_00)
{
if(!isdefined(self.enemy))
{
return 0;
}
var_01 = distancesquared(self.origin,self.enemy.origin);
return var_01 > param_00 * param_00;
}
//Function Number: 41
prepareattackplayer()
{
if(is_hyena())
{
level.dog_death_quote = &"NEW_HYENA_DEATH_DO_NOTHING_ALT";
level.so_dog_death_quote = "@NEW_HYENA_DEATH_DO_NOTHING_ALT";
}
else
{
level.dog_death_quote = &"NEW_DOG_DEATH_DO_NOTHING_ALT";
level.so_dog_death_quote = "@NEW_DOG_DEATH_DO_NOTHING_ALT";
}
level.dog_death_type = "nothing";
var_00 = distance(self.origin,self.enemy.origin);
if(var_00 > self.meleeattackdist)
{
var_01 = self.enemy.origin - self.origin;
var_02 = var_00 - self.meleeattackdist / var_00;
var_01 = (var_01[0] * var_02,var_01[1] * var_02,var_01[2] * var_02);
thread attackteleportthread(var_01);
}
}
//Function Number: 42
attackteleportthread(param_00)
{
self endon("death");
self endon("killanimscript");
var_01 = 5;
var_02 = (param_00[0] / var_01,param_00[1] / var_01,param_00[2] / var_01);
for(var_03 = 0;var_03 < var_01;var_03++)
{
self teleport(self.origin + var_02);
wait(0.05);
}
}
//Function Number: 43
player_attacked()
{
return isalive(self.meleeingplayer) && self.meleeingplayer meleebuttonpressed();
}
//Function Number: 44
dog_hint()
{
var_00 = self.meleeingplayer.gs.dog_presstime / 1000 / dog_vs_player_anim_rate();
level endon("clearing_dog_hint");
if(isdefined(self.meleeingplayer.doghintelem))
{
self.meleeingplayer.doghintelem maps\_hud_util::destroyelem();
}
self.meleeingplayer.doghintelem = self.meleeingplayer maps\_hud_util::createclientfontstring("default",3);
self.meleeingplayer.doghintelem.color = (1,1,1);
self.meleeingplayer.doghintelem settext(&"SCRIPT_PLATFORM_DOG_HINT");
self.meleeingplayer.doghintelem.x = 0;
self.meleeingplayer.doghintelem.y = 20;
self.meleeingplayer.doghintelem.alignx = "center";
self.meleeingplayer.doghintelem.aligny = "middle";
self.meleeingplayer.doghintelem.horzalign = "center";
self.meleeingplayer.doghintelem.vertalign = "middle";
self.meleeingplayer.doghintelem.foreground = 1;
self.meleeingplayer.doghintelem.alpha = 1;
self.meleeingplayer.doghintelem.hidewhendead = 1;
self.meleeingplayer.doghintelem.sort = -1;
self.meleeingplayer.doghintelem endon("death");
wait(var_00);
thread dog_hint_fade();
}
//Function Number: 45
dog_hint_fade()
{
level notify("clearing_dog_hint");
if(isdefined(self) && isdefined(self.meleeingplayer.doghintelem))
{
var_00 = self.meleeingplayer.doghintelem;
if(isdefined(self.meleeingplayer.player_view.necksnapped) && self.meleeingplayer.player_view.necksnapped)
{
var_01 = 0.5;
var_00 changefontscaleovertime(var_01);
var_00.fontscale = var_00.fontscale * 1.5;
var_00.glowcolor = (0.3,0.6,0.3);
var_00.glowalpha = 1;
var_00 fadeovertime(var_01);
var_00.color = (0,0,0);
var_00.alpha = 0;
wait(var_01);
var_00 maps\_hud_util::destroyelem();
return;
}
var_00 maps\_hud_util::destroyelem();
}
}
//Function Number: 46
dog_delayed_unlink()
{
wait(0.7);
if(isdefined(self))
{
self unlink();
}
}
//Function Number: 47
dog_delayed_allow_damage()
{
self endon("death");
wait(1.5);
if(isdefined(self))
{
self setcandamage(1);
}
}
//Function Number: 48
dog_melee_death()
{
self endon("killanimscript");
self endon("dog_no_longer_melee_able");
var_00 = 0;
var_01 = self.meleeingplayer.gs.dog_presstime / dog_vs_player_anim_rate();
self waittill("dog_early_notetrack");
while(player_attacked())
{
wait(0.05);
}
var_02 = 0;
for(;;)
{
if(!var_00)
{
if(player_attacked())
{
var_00 = 1;
if(isdefined(self.melee_able_timer) && isalive(self.meleeingplayer))
{
if(gettime() - self.melee_able_timer <= var_01)
{
self.meleeingplayer set_melee_early(var_02);
self.meleeingplayer.player_view.necksnapped = 1;
self notify("melee_stop");
self setflaggedanimknobrestart("dog_death_anim",%german_shepherd_player_neck_snap,1,0.2,1);
thread dog_delayed_allow_damage();
self setcandamage(0);
self waittillmatch("dog_death","dog_death_anim");
thread common_scripts\utility::play_sound_in_space("dog_neckbreak",self geteye());
self setcandamage(1);
self.a.nodeath = 1;
self.dog_neck_snapped = 1;
var_03 = self.meleeingplayer.origin - self.origin;
var_03 = (var_03[0],var_03[1],0);
thread dog_delayed_unlink();
self kill(self geteye() - var_03,self.meleeingplayer);
self notify("killanimscript");
}
else
{
self.meleeingplayer set_melee_early(var_02);
self.meleeingplayer.player_view playerview_knockdownlate();
self setanimlimited(%attack_player,0.01,0.2,1);
self setanimlimited(%attack_player_late,1,0.2,1);
if(is_hyena())
{
level.dog_death_quote = &"NEW_HYENA_DEATH_TOO_LATE_ALT";
level.so_dog_death_quote = "@NEW_HYENA_DEATH_TOO_LATE_ALT";
}
else
{
level.dog_death_quote = &"NEW_DOG_DEATH_TOO_LATE_ALT";
level.so_dog_death_quote = "@NEW_DOG_DEATH_TOO_LATE_ALT";
}
level.dog_death_type = "late";
}
return;
}
var_02 = 1;
if(self.meleeingplayer can_early_melee())
{
if(is_hyena())
{
level.dog_death_quote = &"NEW_HYENA_DEATH_TOO_SOON_ALT";
level.so_dog_death_quote = "@NEW_HYENA_DEATH_TOO_SOON_ALT";
}
else
{
level.dog_death_quote = &"NEW_DOG_DEATH_TOO_SOON_ALT";
level.so_dog_death_quote = "@NEW_DOG_DEATH_TOO_SOON_ALT";
}
level.dog_death_type = "soon";
var_04 = dog_vs_player_anim_rate();
self setflaggedanimknobrestart("meleeanim",%german_shepherd_player_neck_miss,1,0.2,var_04);
self.meleeingplayer.player_view playerview_playmissanim(var_04);
return;
}
}
}
else if(!player_attacked())
{
var_01 = 0;
}
wait(0.05);
}
}
//Function Number: 49
can_early_melee()
{
if(self.gameskill == 3)
{
return 1;
}
if(isdefined(self.dogmeleeearly) && self.dogmeleeearly)
{
return 1;
}
return 0;
}
//Function Number: 50
set_melee_early(param_00)
{
if(!param_00)
{
return;
}
if(level.gameskill > 1 && !isdefined(self.dogmeleeearly))
{
self.dogmeleeearly = 1;
}
}
//Function Number: 51
meleestrugglevsdog()
{
self endon("killanimscript");
self endon("death");
self endon("end_melee_all");
if(!isdefined(self.syncedmeleetarget))
{
return;
}
self stopsounds();
var_00 = vectortoangles(self.syncedmeleetarget.origin - self.origin);
var_01 = var_00[1];
if(isdefined(self.use_old_dog_attack) && self.use_old_dog_attack)
{
var_02 = [];
var_02[0] = %body;
var_02[1] = %iw6_dog_kill_front_quick_guy_1;
var_03 = 1;
maps\_utility::gun_remove();
}
else
{
var_02 = [];
var_02[0] = %body;
switch(self.dog_attack_dir)
{
case "F":
var_02[1] = %iw6_dog_kill_front_long_guy_1;
var_03 = 1;
playsound_victim("dogdeathlong");
break;
case "R":
var_02[1] = %iw6_dog_kill_right_quick_guy_1;
var_03 = 1;
var_01 = var_00[1] + 90;
playsound_victim("dogdeathshort");
break;
case "L":
var_02[1] = %iw6_dog_kill_left_quick_guy_1;
var_03 = 1;
var_01 = var_00[1] - 90;
playsound_victim("dogdeathshort");
break;
case "B":
var_02[1] = %iw6_dog_kill_back_quick_guy_1;
var_03 = 1;
var_01 = var_00[1] - 180;
playsound_victim("dogdeathshort");
break;
default:
break;
}
}
domeleevsdog(var_02,var_01);
}
//Function Number: 52
playsound_victim(param_00)
{
if(isdefined(self.syncedmeleetarget.controlling_dog))
{
param_00 = param_00 + "plr";
}
thread animscripts\face::saygenericdialogue(param_00);
}
//Function Number: 53
meleestrugglevsdog_interruptedcheck()
{
self endon("killanimscript");
self endon("death");
self endon("end_melee_all");
var_00 = [];
var_00[1] = %ai_attacked_german_shepherd_02_getup_a;
var_00[2] = %ai_attacked_german_shepherd_02_getup_a;
if(self.syncedmeleetarget.meleekilltarget)
{
var_00[4] = %ai_attacked_german_shepherd_04_getup_a;
}
for(;;)
{
if(!isdefined(self.syncedmeleetarget) || !isalive(self.syncedmeleetarget))
{
break;
}
wait(0.1);
}
self.ragdoll_immediate = undefined;
if(self.meleeseq > 0)
{
if(!isdefined(var_00[self.meleeseq]))
{
return;
}
self clearanim(%melee_dog,0.1);
self setflaggedanimrestart("getupanim",var_00[self.meleeseq],1,0.1,1);
animscripts\shared::donotetracks("getupanim");
}
meleestrugglevsdog_end();
}
//Function Number: 54
meleestrugglevsdog_end()
{
self orientmode("face default");
self.syncedmeleetarget = undefined;
self.meleeseq = undefined;
self.allowpain = 1;
self.battlechatter = 1;
self.use_old_dog_attack = undefined;
self.dog_attacking_me = undefined;
setnextdogattackallowtime(1000);
if(isdefined(self.olddontattackme))
{
self.dontattackme = self.olddontattackme;
self.olddontattackme = undefined;
}
self notify("end_melee_all");
}
//Function Number: 55
meleestrugglevsdog_collision(param_00)
{
self endon("killanimscript");
self endon("death");
self endon("end_melee_all");
var_01 = self.syncedmeleetarget;
var_01 endon("death");
var_01 endon("killanimscript");
if(isdefined(param_00) && param_00 > 0)
{
wait(param_00);
}
var_01.doglastknowngoodpos = var_01.origin;
for(;;)
{
var_02 = var_01 aiphysicstrace(self.origin,var_01.origin,undefined,undefined,1,1,1);
if(var_02["fraction"] >= 1)
{
var_01.doglastknowngoodpos = var_01.origin;
wait(0.05);
continue;
}
if(var_02["normal"][2] >= 0)
{
var_03 = var_02["position"] - var_01.origin;
var_04 = vectordot(var_03,var_02["normal"]);
if(var_04 > 0)
{
var_05 = self.origin + var_04 + 1 * var_02["normal"];
var_06 = var_05 + (0,0,9);
var_07 = var_05 + (0,0,-9);
var_08 = self aiphysicstrace(var_06,var_07);
if(var_08[2] > var_05[2])
{
var_05 = var_08;
}
self forceteleport(var_05,self.angles,60);
}
}
wait(0.05);
}
}
//Function Number: 56
meleestrugglevsdog_justdie()
{
thread animscripts\face::saygenericdialogue("dogdeathlong");
self.ragdoll_immediate = 1;
if(!isdefined(self.magic_bullet_shield))
{
self.forceragdollimmediate = 1;
animscripts\shared::dropallaiweapons();
self kill(self.dog_attacking_me.origin,self.dog_attacking_me);
}
thread ragdoll_corpses();
setnextdogattackallowtime(1000);
}
//Function Number: 57
meleestrugglevsdog_traverse()
{
if(!isdefined(self.syncedmeleetarget))
{
return;
}
var_00 = vectortoangles(self.syncedmeleetarget.origin - self.origin);
var_01 = var_00[1];
var_02 = [];
var_02[0] = %body;
var_02[1] = %iw6_dog_kill_wall_over_front_guy_1;
playsound_victim("dogdeathlong");
domeleevsdog(var_02,var_01,0.15);
}
//Function Number: 58
domeleevsdog(param_00,param_01,param_02)
{
self endon("killanimscript");
self endon("death");
self endon("end_melee_all");
if(!isdefined(self.syncedmeleetarget))
{
return;
}
self orientmode("face angle",param_01);
self animmode("gravity");
self.olddontattackme = self.dontattackme;
self.dontattackme = 1;
self.health = 1;
self.battlechatter = 0;
self.a.pose = "stand";
self.a.special = "none";
if(animscripts\utility::usingsidearm())
{
animscripts\shared::placeweaponon(self.primaryweapon,"right");
}
self.ragdoll_immediate = 1;
self.meleeseq = 0;
thread meleestrugglevsdog_interruptedcheck();
self clearanim(param_00[0],0.1);
self setflaggedanimrestart("aianim",param_00[1],1,0.1,1);
thread animscripts\shared::donotetracks("aianim");
wait(0.15);
self.syncedmeleetarget linkto(self,"tag_sync",(0,0,0),(0,0,0));
thread meleestrugglevsdog_collision(param_02);
self waittillmatch("end","aianim");
self.syncedmeleetarget notify("end_dog_interrupted_check");
if(!isdefined(self.magic_bullet_shield))
{
self.forceragdollimmediate = 1;
self.a.nodeath = 1;
animscripts\shared::dropallaiweapons();
self kill(self.dog_attacking_me.origin,self.dog_attacking_me);
}
meleestrugglevsdog_end();
}
//Function Number: 59
playerdrone_create(param_00)
{
var_01 = spawn("script_model",param_00.origin);
var_01 [[ param_00.last_modelfunc ]]();
var_01 useanimtree(#animtree);
return var_01;
}
//Function Number: 60
playerdrone_anim_knockdown(param_00)
{
self endon("death");
var_01 = getanimlength(%player_3rd_dog_knockdown);
self setanim(%player_3rd_dog_knockdown,1,0,param_00);
}
//Function Number: 61
playerdone_anim_neck_snap()
{
self setanimknobrestart(%player_3rd_dog_knockdown_neck_snap,1,0,1);
}
//Function Number: 62
playerdone_anim_saved()
{
self setanimknobrestart(%player_3rd_dog_knockdown_saved,1,0,1);
}
//Function Number: 63
playerdone_anim_laststand()
{
self setanimknobrestart(%player_3rd_dog_knockdown_laststand,1,0,1);
}
//Function Number: 64
playerview_spawn(param_00)
{
var_01 = spawn("script_model",param_00.meleeingplayer.origin);
var_01.angles = param_00.meleeingplayer.angles;
var_01 setmodel(level.player_viewhand_model);
var_01 useanimtree(#animtree);
var_01 hide();
return var_01;
}
//Function Number: 65
handleplayerknockdownnotetracks(param_00)
{
switch(param_00)
{
case "allow_player_save":
if(isdefined(self.dog))
{
wait(1);
self.dog setcandamage(1);
}
break;
case "blood_pool":
if(!isdefined(self.dog.meleeingplayer))
{
break;
}
if(maps\_utility::killing_will_down(self.dog.meleeingplayer))
{
break;
}
var_01 = self gettagorigin("tag_torso");
var_02 = self gettagangles("tag_torso");
var_03 = anglestoforward(var_02);
var_04 = anglestoup(var_02);
var_05 = anglestoright(var_02);
var_01 = var_01 + var_03 * -8.5 + var_04 * 5 + var_05 * 0;
playfx(level._effect["deathfx_bloodpool"],var_01,var_03,var_04);
break;
}
}
//Function Number: 66
playerview_knockdownanim(param_00)
{
self endon("pvd_melee_interrupted");
var_01 = param_00.meleeingplayer;
self.dog = param_00;
thread playerview_checkinterrupted(var_01);
self setflaggedanimrestart("viewanim",%player_view_dog_knockdown);
self setflaggedanimrestart("viewanim",%player_view_dog_knockdown_late);
self setanimlimited(%knockdown,1,0,1);
self setanimlimited(%knockdown_late,0.01,0,1);
animscripts\shared::donotetracks("viewanim",::handleplayerknockdownnotetracks);
self dontinterpolate();
self.dog = undefined;
playerview_endsequence(var_01);
self notify("pvd_melee_done");
}
//Function Number: 67
playerview_checkinterrupted(param_00)
{
self endon("pvd_melee_done");
self.dog common_scripts\utility::waittill_any("death","pain","melee_stop");
if(!isdefined(param_00.specialdeath) && isalive(param_00))
{
self notify("pvd_melee_interrupted");
self.dog notify("pvd_melee_interrupted");
playerview_endsequence(param_00);
}
}
//Function Number: 68
playerview_startsequence(param_00)
{
if(isdefined(self.inseq))
{
return 0;
}
var_01 = param_00.meleeingplayer;
if(isdefined(var_01) && isdefined(var_01.placingsentry))
{
var_01 notify("sentry_placement_canceled");
}
var_01 notify("dog_attacks_player");
self.inseq = 1;
if(isalive(var_01))
{
var_01 hidehud();
}
var_01 setstance("stand");
var_01.syncedmeleetarget = param_00;
var_01.player_view playerview_show(var_01);
var_02 = param_00.origin - var_01.origin;
self.angles = vectortoangles(var_02);
self.angles = (0,self.angles[1],0);
self.startangles = self.angles;
var_03 = var_01.origin;
var_04 = var_01 getdroptofloorposition(var_01.origin);
if(isdefined(var_04))
{
self.origin = var_04;
}
else
{
self.origin = var_01.origin;
}
thread playerview_knockdownanim(param_00);
self dontinterpolate();
var_01 playerlinktoabsolute(self,"tag_player");
param_00 linkto(self,"tag_sync",(0,0,0),(0,0,0));
var_05 = self gettagangles("tag_sync");
param_00 orientmode("face angle",var_05[1]);
param_00 orientmode("face default");
var_01 allowstand(1);
var_01 allowlean(0);
var_01 allowcrouch(0);
var_01 allowprone(0);
var_01 freezecontrols(1);
var_01 setcandamage(0);
return 1;
}
//Function Number: 69
savednotify(param_00)
{
wait(0.5);
param_00 playsound("saved_from_dog");
}
//Function Number: 70
player_gets_weapons_back()
{
self endon("death");
self showviewmodel();
self enableweapons();
}
//Function Number: 71
playerview_endsequence(param_00)
{
param_00 showhud();
if(isalive(param_00))
{
self clearanim(%player_view_dog_knockdown,0.1);
if(isdefined(self.necksnapped))
{
self setflaggedanimrestart("viewanim",%player_view_dog_knockdown_neck_snap,1,0.2,1);
if(isdefined(self.playerdrone))
{
self.playerdrone playerdone_anim_neck_snap();
}
}
else if(isdefined(param_00.dog_downed_player))
{
self setflaggedanimknobrestart("viewanim",%player_view_dog_knockdown_laststand,1,0.1,1);
if(isdefined(self.playerdrone))
{
self.playerdrone playerdone_anim_laststand();
}
}
else
{
thread savednotify(param_00);
self setflaggedanimrestart("viewanim",%player_view_dog_knockdown_saved);
if(isdefined(self.playerdrone))
{
self.playerdrone playerdone_anim_saved();
}
}
if(!isdefined(param_00.dog_downed_player))
{
param_00 maps\_utility::delaythread(2.5,::player_gets_weapons_back);
animscripts\shared::donotetracks("viewanim");
param_00 notify("player_saved_from_dog");
}
else
{
animscripts\shared::donotetracks("viewanim");
param_00 notify("deathshield",1000000,self.dog);
param_00 showviewmodel();
}
playerview_unlinkplayeranddelete(param_00);
}
else
{
setsaveddvar("compass",0);
}
param_00.syncedmeleetarget = undefined;
param_00.dog_downed_player = undefined;
restoreplayercontrols(param_00);
}
//Function Number: 72
playerview_unlinkplayeranddelete(param_00)
{
param_00 show();
param_00 unlink();
param_00 setorigin(self.origin);
param_00 setplayerangles(self.startangles);
param_00 setcandamage(1);
var_01 = param_00.player_view;
if(isdefined(var_01))
{
if(isdefined(var_01.playerdrone))
{
var_01.playerdrone delete();
}
var_01 delete();
param_00.player_view = undefined;
}
}
//Function Number: 73
restoreplayercontrols(param_00)
{
param_00 allowlean(1);
param_00 allowcrouch(1);
param_00 allowprone(1);
param_00 freezecontrols(0);
param_00.attacked_by_dog = undefined;
}
//Function Number: 74
playerview_show(param_00)
{
self showonclient(param_00);
if(maps\_utility::is_coop())
{
var_01 = playerdrone_create(param_00);
var_01 linkto(self,"tag_origin",(0,0,0),(0,0,0));
var_01 thread playerdrone_anim_knockdown(1);
self.playerdrone = var_01;
if(level.player == param_00 && isdefined(level.player2))
{
param_00 hideonclient(level.player2);
var_01 hideonclient(level.player);
}
else
{
param_00 hideonclient(level.player);
var_01 hideonclient(level.player2);
}
}
param_00 hideviewmodel();
param_00 disableweapons();
}
//Function Number: 75
playerview_playknockdownanimlimited(param_00)
{
self setflaggedanimlimited("viewanim",%player_view_dog_knockdown,1,0.2,param_00);
self setflaggedanimlimited("viewanim",%player_view_dog_knockdown_late,1,0.2,param_00);
if(isdefined(self.playerdrone))
{
self.playerdrone playerdrone_anim_knockdown(param_00);
}
}
//Function Number: 76
playerview_playknockdownanim(param_00)
{
self setflaggedanimlimited("viewanim",%player_view_dog_knockdown,1,0.2,param_00);
self setflaggedanimlimited("viewanim",%player_view_dog_knockdown_late,1,0.2,param_00);
if(isdefined(self.playerdrone))
{
self.playerdrone playerdrone_anim_knockdown(param_00);
}
}
//Function Number: 77
playerview_playmissanim(param_00)
{
self setflaggedanimknobrestart("viewanim",%player_view_dog_knockdown_neck_miss,1,0.2,param_00);
}
//Function Number: 78
playerview_knockdownlate()
{
self setanimlimited(%knockdown,0.01,0.2,1);
self setanimlimited(%knockdown_late,1,0.2,1);
}
//Function Number: 79
dog_vs_player_anim_rate()
{
return 1;
}
//Function Number: 80
is_hyena()
{
if(issubstr(self.classname,"hyena"))
{
return 1;
}
return 0;
}
//Function Number: 81
ragdoll_corpses()
{
wait(0.1);
var_00 = getcorpsearray();
foreach(var_02 in var_00)
{
if(var_02 isragdoll() == 0)
{
var_02 startragdoll();
}
}
}
//Function Number: 82
handlevxnotetrack(param_00)
{
if(common_scripts\utility::string_starts_with(param_00,"vfx"))
{
if(isdefined(level._effect[param_00]))
{
playfxontag(common_scripts\utility::getfx(param_00),self,"TAG_MOUTH_FX");
return;
}
return;
}
if(common_scripts\utility::string_starts_with(param_00,"screen_blood"))
{
if(isdefined(self.controlling_dog))
{
var_01 = "bottom";
if(issubstr(param_00,"right"))
{
var_01 = "right";
}
else if(issubstr(param_00,"left"))
{
var_01 = "left";
}
self notify("screen_blood",var_01);
return;
}
}
}