mw3'ifying the code

This commit is contained in:
ineedbots 2021-05-13 13:17:25 -06:00
parent fa5b74044b
commit fef0c9c54e
3 changed files with 43 additions and 157 deletions

View File

@ -226,7 +226,7 @@ onWeaponChange()
self.bot.is_cur_full_auto = WeaponIsFullAuto(newWeapon); self.bot.is_cur_full_auto = WeaponIsFullAuto(newWeapon);
self.bot.cur_weap_dist_multi = SetWeaponDistMulti(newWeapon); self.bot.cur_weap_dist_multi = SetWeaponDistMulti(newWeapon);
self.bot.is_cur_sniper = IsWeapSniper(newWeapon); self.bot.is_cur_sniper = IsWeapSniper(newWeapon);
self.bot.is_cur_akimbo = isSubStr(newWeapon, "_akimbo_"); self.bot.is_cur_akimbo = isSubStr(newWeapon, "_akimbo");
if (newWeapon == "none") if (newWeapon == "none")
continue; continue;
@ -917,7 +917,7 @@ target()
initReactTime = self.pers["bots"]["skill"]["init_react_time"]; initReactTime = self.pers["bots"]["skill"]["init_react_time"];
hasTarget = isDefined(self.bot.target); hasTarget = isDefined(self.bot.target);
usingRemote = self isUsingRemote(); usingRemote = self isUsingRemote();
ignoreSmoke = isSubStr(self GetCurrentWeapon(), "_thermal_"); ignoreSmoke = isSubStr(self GetCurrentWeapon(), "_thermal");
vehEnt = undefined; vehEnt = undefined;
adsAmount = self PlayerADS(); adsAmount = self PlayerADS();
adsFovFact = self.pers["bots"]["skill"]["ads_fov_multi"]; adsFovFact = self.pers["bots"]["skill"]["ads_fov_multi"];
@ -1011,7 +1011,7 @@ target()
if (usingRemote) if (usingRemote)
{ {
canTargetPlayer = (bulletTracePassed(myEye, player getTagOrigin( "j_head" ), false, vehEnt) canTargetPlayer = (bulletTracePassed(myEye, player getTagOrigin( "j_head" ), false, vehEnt)
&& !player _hasPerk("specialty_coldblooded")); && !player _hasPerk("specialty_blindeye"));
} }
else else
{ {
@ -1400,8 +1400,6 @@ aim()
} }
knifeDist = level.bots_maxKnifeDistance; knifeDist = level.bots_maxKnifeDistance;
if (self _hasPerk("specialty_extendedmelee"))
knifeDist *= 1.4;
if((isplay || target.classname == "misc_turret") && !self.bot.isknifingafter && conedot > 0.9 && dist < knifeDist && trace_time > reaction_time && !usingRemote && getDvarInt("bots_play_knife")) if((isplay || target.classname == "misc_turret") && !self.bot.isknifingafter && conedot > 0.9 && dist < knifeDist && trace_time > reaction_time && !usingRemote && getDvarInt("bots_play_knife"))
{ {
self clear_bot_after_target(); self clear_bot_after_target();
@ -1558,7 +1556,7 @@ canFire(curweap)
if(curweap == "none") if(curweap == "none")
return false; return false;
if (curweap == "riotshield_mp" || curweap == "onemanarmy_mp") if (curweap == "riotshield_mp")
return false; return false;
if (self IsUsingRemote()) if (self IsUsingRemote())
@ -1592,7 +1590,7 @@ canAds(dist, curweap)
if(weapclass == "spread" || weapclass == "grenade") if(weapclass == "spread" || weapclass == "grenade")
return false; return false;
if (curweap == "riotshield_mp" || curweap == "onemanarmy_mp") if (curweap == "riotshield_mp")
return false; return false;
if (self.bot.is_cur_akimbo) if (self.bot.is_cur_akimbo)
@ -2361,7 +2359,7 @@ bot_lookat(pos, time)
botWeapon(weap) botWeapon(weap)
{ {
setDvar("bot" + self getEntityNumber() + "_weapon", weap); self switchToWeapon(weap);
} }
botAction(act) botAction(act)
@ -2393,6 +2391,5 @@ botMovement(forward, right)
botStop() botStop()
{ {
setDvar("bot" + self getEntityNumber() + "_movement", "0 0"); setDvar("bot" + self getEntityNumber() + "_movement", "0 0");
setDvar("bot" + self getEntityNumber() + "_weapon", "");
setDvar("bot" + self getEntityNumber() + "_buttons", 0); setDvar("bot" + self getEntityNumber() + "_buttons", 0);
} }

View File

@ -48,7 +48,6 @@ connected()
self thread onSpawned(); self thread onSpawned();
self thread onDeath(); self thread onDeath();
self thread onGiveLoadout();
self thread onKillcam(); self thread onKillcam();
} }
@ -898,7 +897,7 @@ onDamage(eInflictor, eAttacker, iDamage, iDFlags, sMeansOfDeath, sWeapon, vPoint
if(!isAlive(eAttacker)) if(!isAlive(eAttacker))
return; return;
if (!isSubStr(sWeapon, "_silencer_")) if (!isSubStr(sWeapon, "_silencer"))
self bot_cry_for_help( eAttacker ); self bot_cry_for_help( eAttacker );
self SetAttacker( eAttacker ); self SetAttacker( eAttacker );
@ -1393,26 +1392,6 @@ onDeath()
} }
} }
/*
Watches when the bot is given a loadout
*/
onGiveLoadout()
{
self endon("disconnect");
for(;;)
{
self waittill("giveLoadout");
class = self.class;
if (isDefined(self.bot_oma_class))
class = self.bot_oma_class;
self botGiveLoadout(self.team, class, !isDefined(self.bot_oma_class));
self.bot_oma_class = undefined;
}
}
/* /*
When the bot spawns. When the bot spawns.
*/ */
@ -1428,7 +1407,6 @@ onSpawned()
self.bot_change_class = undefined; self.bot_change_class = undefined;
self.bot_lock_goal = false; self.bot_lock_goal = false;
self.bot_oma_class = undefined;
self.help_time = undefined; self.help_time = undefined;
self.bot_was_follow_script_update = undefined; self.bot_was_follow_script_update = undefined;
self.bot_stuck_on_carepackage = undefined; self.bot_stuck_on_carepackage = undefined;
@ -1465,36 +1443,33 @@ start_bot_threads()
gameFlagWait("prematch_done"); gameFlagWait("prematch_done");
if (true) return;
// inventory usage // inventory usage
if (getDvarInt("bots_play_killstreak")) //if (getDvarInt("bots_play_killstreak"))
self thread bot_killstreak_think(); // self thread bot_killstreak_think();
self thread bot_weapon_think(); //self thread bot_weapon_think();
self thread doReloadCancel(); //self thread doReloadCancel();
self thread bot_perk_think();
// script targeting // script targeting
if (getDvarInt("bots_play_target_other")) if (getDvarInt("bots_play_target_other"))
{ {
self thread bot_target_vehicle(); //self thread bot_target_vehicle();
self thread bot_equipment_kill_think(); //self thread bot_equipment_kill_think();
self thread bot_turret_think(); //self thread bot_turret_think();
} }
// airdrop // airdrop
if (getDvarInt("bots_play_take_carepackages")) if (getDvarInt("bots_play_take_carepackages"))
{ {
self thread bot_watch_stuck_on_crate(); //self thread bot_watch_stuck_on_crate();
self thread bot_crate_think(); //self thread bot_crate_think();
} }
// awareness // awareness
self thread bot_revenge_think(); //self thread bot_revenge_think();
self thread bot_uav_think(); //self thread bot_uav_think();
self thread bot_listen_to_steps(); //self thread bot_listen_to_steps();
self thread follow_target(); //self thread follow_target();
// camp and follow // camp and follow
if (getDvarInt("bots_play_camp")) if (getDvarInt("bots_play_camp"))
@ -1517,7 +1492,7 @@ start_bot_threads()
// obj // obj
if (getDvarInt("bots_play_obj")) if (getDvarInt("bots_play_obj"))
{ {
self thread bot_dom_def_think(); /*self thread bot_dom_def_think();
self thread bot_dom_spawn_kill_think(); self thread bot_dom_spawn_kill_think();
self thread bot_hq(); self thread bot_hq();
@ -1535,7 +1510,7 @@ start_bot_threads()
self thread bot_gtnw(); self thread bot_gtnw();
self thread bot_oneflag(); self thread bot_oneflag();
self thread bot_arena(); self thread bot_arena();
self thread bot_vip(); self thread bot_vip();*/
} }
self thread bot_think_revive(); self thread bot_think_revive();
@ -1975,8 +1950,8 @@ getLockonAmmo()
{ {
answer = undefined; answer = undefined;
if(self getAmmoCount("at4_mp")) if(self getAmmoCount("iw5_smaw_mp"))
answer = "at4_mp"; answer = "iw5_smaw_mp";
if(self getAmmoCount("stinger_mp")) if(self getAmmoCount("stinger_mp"))
answer = "stinger_mp"; answer = "stinger_mp";
@ -2266,92 +2241,6 @@ followPlayer(who)
self notify("kill_follow_bot"); self notify("kill_follow_bot");
} }
/*
Bots thinking of using one man army and blast shield
*/
bot_perk_think()
{
self endon("disconnect");
self endon("death");
level endon("game_ended");
for (;;)
{
wait randomIntRange(5,7);
if (self IsUsingRemote())
continue;
if(self BotIsFrozen())
continue;
if(self isDefusing() || self isPlanting())
continue;
for (;self _hasPerk("specialty_blastshield");)
{
if (!self _hasPerk("_specialty_blastshield"))
{
if (randomInt(100) < 65)
break;
self _setPerk("_specialty_blastshield");
}
else
{
if (randomInt(100) < 90)
break;
self _unsetPerk("_specialty_blastshield");
}
break;
}
for (;self _hasPerk("specialty_onemanarmy") && self hasWeapon("onemanarmy_mp");)
{
if (self HasThreat() || self HasBotJavelinLocation())
break;
if (self InLastStand() && !self InFinalStand())
break;
anyWeapout = false;
weaponsList = self GetWeaponsListAll();
for (i = 0; i < weaponsList.size; i++)
{
weap = weaponsList[i];
if (self getAmmoCount(weap) || weap == "onemanarmy_mp")
continue;
anyWeapout = true;
}
if ((!anyWeapout && randomInt(100) < 90) || randomInt(100) < 10)
break;
class = self chooseRandomClass();
self.bot_oma_class = class;
if (!self changeToWeapon("onemanarmy_mp"))
{
self.bot_oma_class = undefined;
break;
}
self BotFreezeControls(true);
wait 1;
self BotFreezeControls(false);
self notify ( "menuresponse", game["menu_onemanarmy"], self.bot_oma_class );
self waittill_any_timeout ( 10, "changed_kit" );
break;
}
}
}
/* /*
Bots thinking of using a noobtube Bots thinking of using a noobtube
*/ */
@ -2509,6 +2398,14 @@ bot_use_equipment_think()
nade = "flare_mp"; nade = "flare_mp";
if (self GetAmmoCount("c4_mp")) if (self GetAmmoCount("c4_mp"))
nade = "c4_mp"; nade = "c4_mp";
if (self GetAmmoCount("bouncingbetty_mp"))
nade = "bouncingbetty_mp";
if (self GetAmmoCount("portable_radar_mp"))
nade = "portable_radar_mp";
if (self GetAmmoCount("scrambler_mp"))
nade = "scrambler_mp";
if (self GetAmmoCount("trophy_mp"))
nade = "trophy_mp";
if (!isDefined(nade)) if (!isDefined(nade))
continue; continue;
@ -2742,10 +2639,12 @@ bot_watch_think_mw2()
tube = self getValidTube(); tube = self getValidTube();
if (!isDefined(tube)) if (!isDefined(tube))
{ {
if (self GetAmmoCount("at4_mp")) if (self GetAmmoCount("iw5_smaw_mp"))
tube = "at4_mp"; tube = "iw5_smaw_mp";
else if (self GetAmmoCount("rpg_mp")) else if (self GetAmmoCount("rpg_mp"))
tube = "rpg_mp"; tube = "rpg_mp";
else if (self GetAmmoCount("xm25_mp"))
tube = "xm25_mp";
else else
continue; continue;
} }
@ -2830,7 +2729,7 @@ bot_watch_riot_weapons()
if (!isWeaponPrimary(weapon)) if (!isWeaponPrimary(weapon))
continue; continue;
if(curWeap == weapon || weapon == "none" || weapon == "" || weapon == "javelin_mp" || weapon == "stinger_mp" || weapon == "onemanarmy_mp") if(curWeap == weapon || weapon == "none" || weapon == "" || weapon == "javelin_mp" || weapon == "stinger_mp")
continue; continue;
weap = weapon; weap = weapon;
@ -3157,7 +3056,7 @@ bot_listen_to_steps()
break; break;
} }
hasHeartbeat = (isSubStr(self GetCurrentWeapon(), "_heartbeat_") && !self IsEMPed()); hasHeartbeat = (isSubStr(self GetCurrentWeapon(), "_heartbeat") && !self IsEMPed());
heartbeatDist = 350*350; heartbeatDist = 350*350;
if(!IsDefined(heard) && hasHeartbeat) if(!IsDefined(heard) && hasHeartbeat)
@ -3767,13 +3666,6 @@ bot_weapon_think()
continue; continue;
} }
if (isDefined(self.bot_oma_class))
{
if (curWeap != "onemanarmy_mp")
self thread ChangeToWeapon("onemanarmy_mp");
continue;
}
if (first) if (first)
{ {
@ -3784,7 +3676,7 @@ bot_weapon_think()
} }
else else
{ {
if(curWeap != "none" && self getAmmoCount(curWeap) && curWeap != "stinger_mp" && curWeap != "javelin_mp" && curWeap != "onemanarmy_mp") if(curWeap != "none" && self getAmmoCount(curWeap) && curWeap != "stinger_mp" && curWeap != "javelin_mp")
{ {
if(randomInt(100) > self.pers["bots"]["behavior"]["switch"]) if(randomInt(100) > self.pers["bots"]["behavior"]["switch"])
continue; continue;
@ -3807,7 +3699,7 @@ bot_weapon_think()
if (!isWeaponPrimary(weapon)) if (!isWeaponPrimary(weapon))
continue; continue;
if(curWeap == weapon || weapon == "none" || weapon == "" || weapon == "javelin_mp" || weapon == "stinger_mp" || weapon == "onemanarmy_mp") if(curWeap == weapon || weapon == "none" || weapon == "" || weapon == "javelin_mp" || weapon == "stinger_mp")
continue; continue;
weap = weapon; weap = weapon;

View File

@ -432,7 +432,7 @@ getValidTube()
if(!self getAmmoCount(weap)) if(!self getAmmoCount(weap))
continue; continue;
if ((isSubStr(weap, "gl_") && !isSubStr(weap, "_gl_")) || weap == "m79_mp") if ((isSubStr(weap, "alt_") && (isSubStr(weap, "_m320") || isSubStr(weap, "_gl") || isSubStr(weap, "_gp25"))) || weap == "m320_mp")
return weap; return weap;
} }
@ -451,6 +451,7 @@ getValidGrenade()
grenadeTypes[grenadeTypes.size] = "concussion_grenade_mp"; grenadeTypes[grenadeTypes.size] = "concussion_grenade_mp";
grenadeTypes[grenadeTypes.size] = "semtex_mp"; grenadeTypes[grenadeTypes.size] = "semtex_mp";
grenadeTypes[grenadeTypes.size] = "throwingknife_mp"; grenadeTypes[grenadeTypes.size] = "throwingknife_mp";
grenadeTypes[grenadeTypes.size] = "emp_grenade_mp";
possibles = []; possibles = [];
@ -499,7 +500,7 @@ WeaponIsFullAuto(weap)
*/ */
isSecondaryGrenade(gnade) isSecondaryGrenade(gnade)
{ {
return (gnade == "concussion_grenade_mp" || gnade == "flash_grenade_mp" || gnade == "smoke_grenade_mp"); return (gnade == "concussion_grenade_mp" || gnade == "flash_grenade_mp" || gnade == "smoke_grenade_mp" || gnade == "trophy_mp" || gnade == "emp_grenade_mp" || gnade == "flare_mp" || gnade == "scrambler_mp" || gnade == "portable_radar_mp");
} }
/* /*
@ -1710,7 +1711,3 @@ random_normal_distribution( mean, std_deviation, lower_bound, upper_bound )
onUsePlantObjectFix( player ) onUsePlantObjectFix( player )
{ {
} }
botGiveLoadout(team, class, copycat)
{
}