diff --git a/userraw/maps/mp/bots/_bot_internal.gsc b/userraw/maps/mp/bots/_bot_internal.gsc index 772defe..5203650 100644 --- a/userraw/maps/mp/bots/_bot_internal.gsc +++ b/userraw/maps/mp/bots/_bot_internal.gsc @@ -35,6 +35,10 @@ added() self.pers["bots"]["skill"]["help_dist"] = 10000; self.pers["bots"]["skill"]["semi_time"] = 0.05; self.pers["bots"]["skill"]["shoot_after_time"] = 1; + self.pers["bots"]["skill"]["aim_offset_time"] = 1; + self.pers["bots"]["skill"]["aim_offset_amount"] = 1; + self.pers["bots"]["skill"]["bones"] = []; + self.pers["bots"]["skill"]["bones"][0] = "j_head"; self.pers["bots"]["behavior"] = []; self.pers["bots"]["behavior"]["strafe"] = 50; @@ -1785,13 +1789,13 @@ target() targetAnkleLeft = player getTagOrigin( "j_ankle_le" ); targetAnkleRight = player getTagOrigin( "j_ankle_ri" ); - canTargetPlayer = ((distanceSquared(BulletTrace(myEye, targetHead, false, self)["position"], targetHead) <= 1.0 || - distanceSquared(BulletTrace(myEye, targetAnkleLeft, false, self)["position"], targetAnkleLeft) <= 1.0 || - distanceSquared(BulletTrace(myEye, targetAnkleRight, false, self)["position"], targetAnkleRight) <= 1.0) + canTargetPlayer = ((distanceSquared(BulletTrace(myEye, targetHead, false, self)["position"], targetHead) < 0.05 || + distanceSquared(BulletTrace(myEye, targetAnkleLeft, false, self)["position"], targetAnkleLeft) < 0.05 || + distanceSquared(BulletTrace(myEye, targetAnkleRight, false, self)["position"], targetAnkleRight) < 0.05) - && (distanceSquared(PhysicsTrace( myEye, targetHead, false, self ), targetHead) <= 1.0 || - distanceSquared(PhysicsTrace( myEye, targetAnkleLeft, false, self ), targetAnkleLeft) <= 1.0 || - distanceSquared(PhysicsTrace( myEye, targetAnkleRight, false, self ), targetAnkleRight) <= 1.0) + && (distanceSquared(PhysicsTrace( myEye, targetHead, false, self ), targetHead) < 0.05 || + distanceSquared(PhysicsTrace( myEye, targetAnkleLeft, false, self ), targetAnkleLeft) < 0.05 || + distanceSquared(PhysicsTrace( myEye, targetAnkleRight, false, self ), targetAnkleRight) < 0.05) && (SmokeTrace(myEye, player.origin, level.smokeRadius) || daDist < level.bots_maxKnifeDistance*4) @@ -2134,7 +2138,7 @@ aim() conedot = getConeDot(aimpos, eyePos, angles); - if (!nadeAimOffset && conedot > 0.999) + if (!nadeAimOffset && conedot > 0.999 && lengthsquared(aimoffset) < 0.05) self thread bot_lookat(aimpos, 0.05); else self thread bot_lookat(aimpos, aimspeed); diff --git a/userraw/maps/mp/bots/_bot_script.gsc b/userraw/maps/mp/bots/_bot_script.gsc index be9f265..b63ef63 100644 --- a/userraw/maps/mp/bots/_bot_script.gsc +++ b/userraw/maps/mp/bots/_bot_script.gsc @@ -337,6 +337,9 @@ chooseRandomPerk(perkkind, primary) if (perk == "specialty_coldblooded") continue; + + if (perk == "specialty_localjammer") + continue; } if (reasonable) @@ -1020,6 +1023,13 @@ difficulty() self.pers["bots"]["skill"]["help_dist"] = 0; self.pers["bots"]["skill"]["semi_time"] = 0.9; self.pers["bots"]["skill"]["shoot_after_time"] = 1; + self.pers["bots"]["skill"]["aim_offset_time"] = 1.5; + self.pers["bots"]["skill"]["aim_offset_amount"] = 4; + self.pers["bots"]["skill"]["bones"] = []; + self.pers["bots"]["skill"]["bones"][0] = "j_spineupper"; + self.pers["bots"]["skill"]["bones"][1] = "j_ankle_le"; + self.pers["bots"]["skill"]["bones"][2] = "j_ankle_ri"; + self.pers["bots"]["behavior"]["strafe"] = 0; self.pers["bots"]["behavior"]["nade"] = 10; self.pers["bots"]["behavior"]["sprint"] = 10; @@ -1043,6 +1053,14 @@ difficulty() self.pers["bots"]["skill"]["help_dist"] = 500; self.pers["bots"]["skill"]["semi_time"] = 0.75; self.pers["bots"]["skill"]["shoot_after_time"] = 0.75; + self.pers["bots"]["skill"]["aim_offset_time"] = 1; + self.pers["bots"]["skill"]["aim_offset_amount"] = 3; + self.pers["bots"]["skill"]["bones"] = []; + self.pers["bots"]["skill"]["bones"][0] = "j_spineupper"; + self.pers["bots"]["skill"]["bones"][1] = "j_ankle_le"; + self.pers["bots"]["skill"]["bones"][2] = "j_ankle_ri"; + self.pers["bots"]["skill"]["bones"][3] = "j_head"; + self.pers["bots"]["behavior"]["strafe"] = 10; self.pers["bots"]["behavior"]["nade"] = 15; self.pers["bots"]["behavior"]["sprint"] = 15; @@ -1066,6 +1084,15 @@ difficulty() self.pers["bots"]["skill"]["help_dist"] = 750; self.pers["bots"]["skill"]["semi_time"] = 0.65; self.pers["bots"]["skill"]["shoot_after_time"] = 0.65; + self.pers["bots"]["skill"]["aim_offset_time"] = 0.75; + self.pers["bots"]["skill"]["aim_offset_amount"] = 2.5; + self.pers["bots"]["skill"]["bones"] = []; + self.pers["bots"]["skill"]["bones"][0] = "j_spineupper"; + self.pers["bots"]["skill"]["bones"][1] = "j_spineupper"; + self.pers["bots"]["skill"]["bones"][2] = "j_ankle_le"; + self.pers["bots"]["skill"]["bones"][3] = "j_ankle_ri"; + self.pers["bots"]["skill"]["bones"][4] = "j_head"; + self.pers["bots"]["behavior"]["strafe"] = 20; self.pers["bots"]["behavior"]["nade"] = 20; self.pers["bots"]["behavior"]["sprint"] = 20; @@ -1089,6 +1116,16 @@ difficulty() self.pers["bots"]["skill"]["help_dist"] = 1000; self.pers["bots"]["skill"]["semi_time"] = 0.5; self.pers["bots"]["skill"]["shoot_after_time"] = 0.5; + self.pers["bots"]["skill"]["aim_offset_time"] = 0.5; + self.pers["bots"]["skill"]["aim_offset_amount"] = 2; + self.pers["bots"]["skill"]["bones"] = []; + self.pers["bots"]["skill"]["bones"][0] = "j_spineupper"; + self.pers["bots"]["skill"]["bones"][1] = "j_spineupper"; + self.pers["bots"]["skill"]["bones"][2] = "j_ankle_le"; + self.pers["bots"]["skill"]["bones"][3] = "j_ankle_ri"; + self.pers["bots"]["skill"]["bones"][4] = "j_head"; + self.pers["bots"]["skill"]["bones"][5] = "j_head"; + self.pers["bots"]["behavior"]["strafe"] = 30; self.pers["bots"]["behavior"]["nade"] = 25; self.pers["bots"]["behavior"]["sprint"] = 30; @@ -1112,6 +1149,14 @@ difficulty() self.pers["bots"]["skill"]["help_dist"] = 1500; self.pers["bots"]["skill"]["semi_time"] = 0.4; self.pers["bots"]["skill"]["shoot_after_time"] = 0.35; + self.pers["bots"]["skill"]["aim_offset_time"] = 0.35; + self.pers["bots"]["skill"]["aim_offset_amount"] = 1.5; + self.pers["bots"]["skill"]["bones"] = []; + self.pers["bots"]["skill"]["bones"][0] = "j_spineupper"; + self.pers["bots"]["skill"]["bones"][1] = "j_spineupper"; + self.pers["bots"]["skill"]["bones"][2] = "j_head"; + self.pers["bots"]["skill"]["bones"][3] = "j_head"; + self.pers["bots"]["behavior"]["strafe"] = 40; self.pers["bots"]["behavior"]["nade"] = 35; self.pers["bots"]["behavior"]["sprint"] = 40; @@ -1135,6 +1180,13 @@ difficulty() self.pers["bots"]["skill"]["help_dist"] = 2000; self.pers["bots"]["skill"]["semi_time"] = 0.25; self.pers["bots"]["skill"]["shoot_after_time"] = 0.25; + self.pers["bots"]["skill"]["aim_offset_time"] = 0.25; + self.pers["bots"]["skill"]["aim_offset_amount"] = 1; + self.pers["bots"]["skill"]["bones"] = []; + self.pers["bots"]["skill"]["bones"][0] = "j_spineupper"; + self.pers["bots"]["skill"]["bones"][1] = "j_head"; + self.pers["bots"]["skill"]["bones"][2] = "j_head"; + self.pers["bots"]["behavior"]["strafe"] = 50; self.pers["bots"]["behavior"]["nade"] = 45; self.pers["bots"]["behavior"]["sprint"] = 50; @@ -1158,6 +1210,11 @@ difficulty() self.pers["bots"]["skill"]["help_dist"] = 3000; self.pers["bots"]["skill"]["semi_time"] = 0.1; self.pers["bots"]["skill"]["shoot_after_time"] = 0; + self.pers["bots"]["skill"]["aim_offset_time"] = 0; + self.pers["bots"]["skill"]["aim_offset_amount"] = 0; + self.pers["bots"]["skill"]["bones"] = []; + self.pers["bots"]["skill"]["bones"][0] = "j_head"; + self.pers["bots"]["behavior"]["strafe"] = 65; self.pers["bots"]["behavior"]["nade"] = 65; self.pers["bots"]["behavior"]["sprint"] = 65; @@ -1200,6 +1257,14 @@ set_diff() self.pers["bots"]["skill"]["help_dist"] = randomIntRange(500, 25000); self.pers["bots"]["skill"]["semi_time"] = randomFloatRange(0.05, 1); self.pers["bots"]["skill"]["shoot_after_time"] = randomFloatRange(0.05, 1); + self.pers["bots"]["skill"]["aim_offset_time"] = randomFloatRange(0.05, 1); + self.pers["bots"]["skill"]["aim_offset_amount"] = randomFloatRange(0.05, 1); + self.pers["bots"]["skill"]["bones"] = []; + self.pers["bots"]["skill"]["bones"][0] = "j_head"; + self.pers["bots"]["skill"]["bones"][1] = "j_spineupper"; + self.pers["bots"]["skill"]["bones"][2] = "j_ankle_ri"; + self.pers["bots"]["skill"]["bones"][3] = "j_ankle_le"; + self.pers["bots"]["behavior"]["strafe"] = randomInt(100); self.pers["bots"]["behavior"]["nade"] = randomInt(100); self.pers["bots"]["behavior"]["sprint"] = randomInt(100); diff --git a/userraw/maps/mp/bots/_bot_utility.gsc b/userraw/maps/mp/bots/_bot_utility.gsc index e31e80c..3bebe22 100644 --- a/userraw/maps/mp/bots/_bot_utility.gsc +++ b/userraw/maps/mp/bots/_bot_utility.gsc @@ -257,13 +257,6 @@ BotFreezeControls(what) self notify("kill_goal"); } -GetRandomBone() -{ - bones = strtok("j_mainroot,j_coatfront_le,j_coatfront_ri,j_coatrear_le,j_hip_le,j_hip_ri,j_spinelower,j_hiptwist_le,j_hiptwist_ri,j_knee_le,j_knee_ri,j_shorts_le,j_shorts_lift_le,j_shorts_lift_ri,j_shorts_ri,j_spineupper,j_ankle_le,j_ankle_ri,j_knee_bulge_le,j_knee_bulge_ri,j_spine4,j_ball_le,j_ball_ri,j_clavicle_le,j_clavicle_ri,j_neck,j_shoulderraise_le,j_shoulderraise_ri,j_head,j_shoulder_le,j_shoulder_ri,j_brow_le,j_brow_ri,j_cheek_le,j_cheek_ri,j_elbow_bulge_le,j_elbow_bulge_ri,j_elbow_le,j_elbow_ri,j_eye_lid_bot_le,j_eye_lid_bot_ri,j_eye_lid_top_le,j_eye_lid_top_ri,j_eyeball_le,j_eyeball_ri,j_head_end,j_jaw,j_levator_le,j_levator_ri,j_lip_top_le,j_lip_top_ri,j_mouth_le,j_mouth_ri,j_shouldertwist_le,j_shouldertwist_ri,j_chin_skinroll,j_helmet,j_lip_bot_le,j_lip_bot_ri,j_wrist_le,j_wrist_ri,j_wristtwist_le,j_wristtwist_ri,j_gun,j_index_le_1,j_index_ri_1,j_mid_le_1,j_mid_ri_1,j_pinky_le_1,j_pinky_ri_1,j_ring_le_1,j_ring_ri_1,j_thumb_le_,j_thumb_ri_1,j_index_le_2,j_index_ri_2,j_mid_le_2,j_mid_ri_2,j_pinky_le_2,j_pinky_ri_2,j_ring_le_2,j_ring_ri_2,j_thumb_le_2,j_thumb_ri_2,j_index_le_3,j_index_ri_3,j_mid_le_3,j_mid_ri_3,j_pinky_le_3,j_pinky_ri_3,j_ring_le_3,j_ring_ri_3,j_thumb_le_3,j_thumb_ri_3", ","); - - return random(bones); -} - /* Returns if the bot is script frozen. */ @@ -2193,6 +2186,9 @@ botGiveLoadout( team, class, allowCopycat ) if (loadoutPerk2 == "specialty_coldblooded") loadoutPerk2 = "specialty_none"; + + if (loadoutPerk3 == "specialty_localjammer") + loadoutPerk3 = "specialty_none"; }