Skip to content

Commit

Permalink
[v0.2.0] Failed attempt to make bots use lifts and doors and dodge ob…
Browse files Browse the repository at this point in the history
…stacles.
  • Loading branch information
Gustavo R. 'Gustavo6046' Rehermann committed Jul 22, 2018
1 parent 84bf6f8 commit 879120a
Show file tree
Hide file tree
Showing 13 changed files with 78 additions and 63 deletions.
15 changes: 13 additions & 2 deletions KeyConf.txt
Original file line number Diff line number Diff line change
@@ -1,6 +1,17 @@
defaultbind kp1 "summonfriend zetabot 0"
defaultbind kp2 "summon ztpathnode 0"
defaultbind kp3 "summon ztusenode 0"
defaultbind kp4 "summon ztjumpnode 0"
defaultbind kp4 "summon ztjumpnode 0"
defaultbind kp7 "kill zetadoom; kill zetastrife; kill zetasmushes"
defaultbind kp8 "summon ZTUploadNodes"
defaultbind kp9 "summon ZTPromptNodes"
defaultbind kp9 "summon ZTPromptNodes"

addkeysection "ZetaBot" "zetabots"

addmenukey "Spawn ZetaBot" "summonfriend zetabot 0"
addmenukey "Create Normal Path Node" "summon ztpathnode 0"
addmenukey "Create Use Path Node" "summon ztusenode 0"
addmenukey "Create Jump Path Node" "summon ztjumpnode 0"
addmenukey "Save Path Nodes" "summon ztuploadnodes"
addmenukey "Load Path Nodes" "summon ztpromptnodes"
addmenukey "Kill All Bots" "kill zetadoom; kill zetastrife; kill zetasmushes"
99 changes: 50 additions & 49 deletions ZScript.zsc
Original file line number Diff line number Diff line change
Expand Up @@ -515,15 +515,12 @@ class ZTBotController : Actor
{
if ( CVar.FindCVar("zb_debug").GetInt() > 0 && debugCount < 1 )
{
debugCount += 10;
debugCount = 20;
DestBall db = DestBall(possessed.SpawnMissile(Other, "DestBall"));

if ( db != null )
db.targetNode = Other;
}

else
debugCount--;
}

void SmartMove()
Expand Down Expand Up @@ -598,11 +595,14 @@ class ZTBotController : Actor

void SetCurrentNode(ZTPathNode pn)
{
bool use = pn.nodeType == ZTPathNode.NT_USE;

if ( pn != currNode )
DebugLog(LT_VERBOSE, myName.." is now at the node: \ck"..pn.serialize()..(use ? " | It's an USE node!" : ""));

if ( pn != null )
{
bool use = pn.nodeType == ZTPathNode.NT_USE;

if ( pn != currNode )
DebugLog(LT_VERBOSE, myName.." is now at the node: \ck"..pn.serialize()..(use ? " | It's an USE node!" : ""));
}

currNode = pn;
}

Expand All @@ -624,17 +624,14 @@ class ZTBotController : Actor
return best;
}

bool LineOfSight(Actor other, Actor from = null, bool CountActors = false)
bool LineOfSight(Actor other, Actor from = null)
{
if ( from == null )
from = possessed;

FLineTraceData data;
int flags = (CountActors ? 0 : TRF_THRUACTORS);

from.LineTrace(from.AngleTo(other), from.Distance2D(other), from.pitch, flags: flags, data: data);

return data.HitType == TRACE_HitNone;
// For a while, used to be a LineTrace, for multiple reasons.
// That didn't work, though :(
return from.CheckSight(other);
}

ZTPathNode ClosestVisibleNode(Actor other)
Expand Down Expand Up @@ -895,7 +892,7 @@ class ZTBotController : Actor

void BotChat(String kind, double importance)
{
if ( importance < FRandom(0, 9.9999) )
if ( importance < FRandom(0, 2.25) )
return;

A_PlaySound("zetabot/"..myVoice.."/"..kind, CHAN_VOICE, attenuation: 0.7);
Expand Down Expand Up @@ -942,16 +939,17 @@ class ZTBotController : Actor
lastWeapS = lastWeap.GetClassName();

if ( enemy == null )
DebugLog(LT_VERBOSE, "["..myName.."'s STATS] Health: "..possessed.health.." | Current State: "..BStateNames[bstate].." | Enemy Type: "..enemyType.." | Going After Type: "..goingAfterType.." | Current Pathnode: "..currNodeS..(useNode ? " (use)" : "").." | Destination Pathnode: "..navDestS.." | Age: "..age.."s | Best Weapon: none. | Last Weapon: "..lastWeapS);
DebugLog(LT_VERBOSE, "["..myName.."'s STATS] Health: "..possessed.health.." | Current State: "..BStateNames[bstate].." | Enemy Type: None | Going After Type: "..goingAfterType.." | Current Pathnode: "..currNodeS..(useNode ? " (use)" : "").." | Destination Pathnode: "..navDestS.." | Age: "..age.."s | Best Weapon: none. | Last Weapon: "..lastWeapS);

else
{
ZetaWeapon wp;
double rt;
bool _;
string enemyH = " | Enemy Health: "..enemy.Health;

[ wp, _, rt ] = BestWeaponAllTic();
DebugLog(LT_VERBOSE, "["..myName.."'s STATS] Health: "..possessed.health.." | Current State: "..BStateNames[bstate].." | Enemy Type: "..enemyType.." | Going After Type: "..goingAfterType.." | Current Pathnode: "..currNodeS..(useNode ? " (use)" : "").." | Destination Pathnode: "..navDestS.." | Age: "..age.."s | Best Weapon: "..wp.GetClassName().." ("..rt.." dopamine molecules"..(_ ? ", alt" : "")..") | Last Weapon: "..lastWeapS);
DebugLog(LT_VERBOSE, "["..myName.."'s STATS] Health: "..possessed.health.." | Current State: "..BStateNames[bstate].." | Enemy Type: "..enemyType..enemyH.." | Going After Type: "..goingAfterType.." | Current Pathnode: "..currNodeS..(useNode ? " (use)" : "").." | Destination Pathnode: "..navDestS.." | Age: "..age.."s | Best Weapon: "..wp.GetClassName().." ("..rt.." dopamine molecules"..(_ ? ", alt" : "")..") | Last Weapon: "..lastWeapS);
}
}

Expand Down Expand Up @@ -1034,6 +1032,7 @@ class ZTBotController : Actor
return;

age += 1. / 35;
debugCount -= 1;

if ( age - lastShot > 0.7 && possessed.bShooting )
possessed.EndShoot();
Expand Down Expand Up @@ -1085,7 +1084,8 @@ class ZTBotController : Actor
PriorityQueue targets = new("PriorityQueue");

for ( uint i = 0; i < mon.length(); i++ )
targets.add(mon.get(i), TargetPriority(mon.get(i)));
if ( mon.get(i).Health > 0 )
targets.add(mon.get(i), TargetPriority(mon.get(i)));

if ( bstate != BS_ATTACKING || enemy == null )
enemy = Actor(targets.poll());
Expand Down Expand Up @@ -1113,7 +1113,10 @@ class ZTBotController : Actor
}

else
{
MakeDestBall(enemy);
SetBotState(BS_ATTACKING);
}

return;
}
Expand Down Expand Up @@ -1347,6 +1350,8 @@ class ZTBotController : Actor
possessed.EndShoot();
lastEnemyPos = enemy.pos;
SetBotState(BS_HUNTING);

return;
}

/* - our bots can't be cowards
Expand All @@ -1357,37 +1362,33 @@ class ZTBotController : Actor
}
*/

else
{
if ( FRandom(0, 1) < 0.2 )
possessed.Jump();

BotChat("ACTV", 0.08);

ZetaWeapon w = BestWeapon();
// MakeDestBall(enemy);
if ( FRandom(0, 1) < 0.2 )
possessed.Jump();

BotChat("ACTV", 0.08);

ZetaWeapon w = BestWeapon();

if ( BestWeaponAllTic() == null )
{
SetBotState(BS_FLEEING);
return;
}
if ( BestWeaponAllTic() == null )
{
SetBotState(BS_FLEEING);
return;
}

if ( possessed.Distance3D(enemy) > 256 + enemy.radius || ( w != null && w.IsMelee() ) )
MoveToward(enemy, 0.282);

else if ( possessed.Distance3D(enemy) < 128 + enemy.radius )
StepBackFrom(enemy);

RandomStrafe();
AimToward(enemy, 0.27, 30);

if ( fireBestWeapon() )
possessed.BeginShoot();

else
possessed.EndShoot();
}
if ( possessed.Distance3D(enemy) > 256 + enemy.radius || ( w != null && w.IsMelee() ) )
MoveToward(enemy, 0.282);

else if ( possessed.Distance3D(enemy) < 128 + enemy.radius )
StepBackFrom(enemy);

RandomStrafe();
AimToward(enemy, 0.27, 30);

if ( fireBestWeapon() )
possessed.BeginShoot();

else
possessed.EndShoot();
}

else
Expand Down
2 changes: 2 additions & 0 deletions ZetaCode/Pathing.zsc
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,8 @@ class PathBall : DoomImpBall
Default
{
Damage 0;

+PAINLESS;
}

States
Expand Down
2 changes: 1 addition & 1 deletion ZetaCode/WeaponSupport/Doom/ZetaBFG.zsc
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,6 @@ class ZetaBFG : ZetaWeapon

override void Fire(Actor shooter, Actor target)
{
shooter.SpawnMissileAngle("BFGBall", shooter.angle, tan(shooter.pitch));
shooter.SpawnMissileAngle("BFGBall", shooter.angle, (target.pos.z - shooter.pos.z) * 25 / target.Distance2D(shooter));
}
}
2 changes: 1 addition & 1 deletion ZetaCode/WeaponSupport/Doom/ZetaPR.zsc
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,6 @@ class ZetaPR : ZetaWeapon

override void Fire(Actor shooter, Actor target)
{
shooter.SpawnMissileAngle("PlasmaBall", shooter.angle, tan(shooter.pitch));
shooter.SpawnMissileAngle("PlasmaBall", shooter.angle, (target.pos.z - shooter.pos.z) * 25 / target.Distance2D(shooter));
}
}
2 changes: 1 addition & 1 deletion ZetaCode/WeaponSupport/Doom/ZetaRL.zsc
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,6 @@ class ZetaRL : ZetaWeapon

override void Fire(Actor shooter, Actor target)
{
shooter.SpawnMissileAngle("Rocket", shooter.angle, tan(shooter.pitch));
shooter.SpawnMissileAngle("Rocket", shooter.angle, (target.pos.z - shooter.pos.z) * 20 / target.Distance2D(shooter));
}
}
4 changes: 2 additions & 2 deletions ZetaCode/WeaponSupport/SentientMushes/ZetaFireBallista.zsc
Original file line number Diff line number Diff line change
Expand Up @@ -32,14 +32,14 @@ class Minigun : ZetaWeapon

override void Fire(Actor shooter, Actor target)
{
shooter.SpawnMissileAngle("BallistaMissile", shooter.angle, tan(shooter.pitch));
shooter.SpawnMissileAngle("BallistaMissile", shooter.angle, (target.pos.z - shooter.pos.z) * 15 / target.Distance2D(shooter));
shooter.A_PlaySound("fireballista/shoot");
}

override void AltFire(Actor shooter, Actor target)
{
for ( int _ = 0; _ < 11; _++ )
shooter.SpawnMissileAngle("DrunkBallistaMissile", shooter.angle + frandom(-3, 3), tan(shooter.pitch));
shooter.SpawnMissileAngle("DrunkBallistaMissile", shooter.angle + frandom(-3, 3), (target.pos.z - shooter.pos.z) * 15 / target.Distance2D(shooter));

shooter.A_PlaySound("fireballista/shoot");
}
Expand Down
6 changes: 3 additions & 3 deletions ZetaCode/WeaponSupport/SentientMushes/ZetaRocketeer.zsc
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ class ZetaRocketeer : ZetaWeapon
Class<Actor> gg = ggs;

if ( gg )
shooter.SpawnMissileAngle(gg, shooter.angle, tan(shooter.pitch));
shooter.SpawnMissileAngle(gg, shooter.angle, (target.pos.z - shooter.pos.z) * 25 / target.Distance2D(shooter));
}

override void AltFire(Actor shooter, Actor target)
Expand All @@ -52,8 +52,8 @@ class ZetaRocketeer : ZetaWeapon

if ( cb && rf )
{
shooter.SpawnMissileAngle(cb, shooter.angle, tan(shooter.pitch));
shooter.SpawnMissileAngle(rf, shooter.angle, tan(shooter.pitch));
shooter.SpawnMissileAngle(cb, shooter.angle, (target.pos.z - shooter.pos.z) * 19 / target.Distance2D(shooter));
shooter.SpawnMissileAngle(rf, shooter.angle, shooter.pitch);
}
}
}
2 changes: 1 addition & 1 deletion ZetaCode/WeaponSupport/SentientMushes/ZetaRockox.zsc
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ class ZetaRockox : ZetaWeapon

if ( rr )
{
shooter.SpawnMissileAngle(rr, shooter.angle, tan(shooter.pitch));
shooter.SpawnMissileAngle(rr, shooter.angle, (target.pos.z - shooter.pos.z) * 20 / target.Distance2D(shooter));
shooter.A_PlaySound("rockox/fire", CHAN_WEAPON);
}
}
Expand Down
2 changes: 1 addition & 1 deletion ZetaCode/WeaponSupport/Strife/ZetaCrossbow1.zsc
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ class ZetaCrossbow1 : ZetaWeapon

override void Fire(Actor shooter, Actor target)
{
shooter.SpawnMissileAngle("ElectricBolt", ZetaWeapon.RandomAngle(5.625 / pow(2, floor(shooter.accuracy / 2)), shooter.angle), tan(ZetaWeapon.RandomAngle(5.625 / pow(2, floor(shooter.accuracy / 2)), shooter.pitch)));
shooter.SpawnMissileAngle("ElectricBolt", ZetaWeapon.RandomAngle(5.625 / pow(2, floor(shooter.accuracy / 2)), shooter.angle), tan(ZetaWeapon.RandomAngle(5.625 / pow(2, floor(shooter.accuracy / 2)))) + (target.pos.z - shooter.pos.z) * 30 / target.Distance2D(shooter));
shooter.A_PlaySound("weapons/xbowshoot", CHAN_WEAPON);
}
}
2 changes: 1 addition & 1 deletion ZetaCode/WeaponSupport/Strife/ZetaCrossbow2.zsc
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ class ZetaCrossbow2 : ZetaWeapon

override void Fire(Actor shooter, Actor target)
{
shooter.SpawnMissileAngle("PoisonBolt", ZetaWeapon.RandomAngle(5.625 / pow(2, floor(shooter.accuracy / 2)), shooter.angle), tan(ZetaWeapon.RandomAngle(5.625 / pow(2, floor(shooter.accuracy / 2)), shooter.pitch)));
shooter.SpawnMissileAngle("PoisonBolt", ZetaWeapon.RandomAngle(5.625 / pow(2, floor(shooter.accuracy / 2)), shooter.angle), tan(ZetaWeapon.RandomAngle(5.625 / pow(2, floor(shooter.accuracy / 2)))) + (target.pos.z - shooter.pos.z) * 30 / target.Distance2D(shooter));
shooter.A_PlaySound("weapons/xbowshoot", CHAN_WEAPON);
}
}
2 changes: 1 addition & 1 deletion ZetaCode/WeaponSupport/Strife/ZetaMiniMissile.zsc
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,6 @@ class ZetaMiniMissile : ZetaWeapon

override void Fire(Actor shooter, Actor target)
{
shooter.SpawnMissileAngle("MiniMissile", shooter.angle + ZetaWeapon.RandomAngle(11 - shooter.accuracy / 10), tan(shooter.pitch + ZetaWeapon.RandomAngle(11 - shooter.accuracy / 10)));
shooter.SpawnMissileAngle("MiniMissile", shooter.angle + ZetaWeapon.RandomAngle(11 - shooter.accuracy / 10), tan(ZetaWeapon.RandomAngle(11 - shooter.accuracy / 10)) + (target.pos.z - shooter.pos.z) * 20 / target.Distance2D(shooter));
}
}
1 change: 1 addition & 0 deletions ZetaCode/WeaponSupport/ZetaBullet.zsc
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@ class ZetaBullet : Actor
{
bullet.currDmg = Floor(damage + 0.5);
bullet.angle += FRandom(-spreadX, spreadX);
bullet.pitch = (target.pos.z - shooter.pos.z) / target.Distance2D(shooter);
bullet.pitch += FRandom(-spreadY, spreadY);
bullet.shooter = shooter;
bullet.damageType = damageType;
Expand Down

0 comments on commit 879120a

Please sign in to comment.