Dangerous.jpg
ShellCaseMesh.jpg
Code: Select all
class InvNode expands PathNode;
event int SpecialCost(Pawn Seeker)
{
local Bot B;
B = Bot(Seeker);
if ( !Seeker.bIsPlayer ) //Deny Monster heading to Player Base
return 100000000;
if ( B == None ) //External alien support
return 0;
if ( B != None )
{
if ( B.Weapon != None && B.Weapon.AIRating >= 0.5 ) //Using weapon specific rating - crawl for a good weapon before passing through this node
return 0;
else
return 100000000;
}
return 100000000;
}
defaultproperties
{
bNoDelete=True
bStatic=False
bSpecialCost=True
bHidden=True
}
How about status based inventory? Say for example that bot can not enter area unless it has shield or armor... or required health points.sektor2111 wrote: ↑Tue Apr 26, 2022 12:38 pm If this map is accidentally called NoRush I think I have a NORMAL* version.
Info___:
NORMAL means that a few things were adjusted, certain junk data removed and Bot Support available based on original MH503.
Here, for others having a hobby toward Bots and their needed "Fire Power" due to real dangerous Tentacles, I think I have some Node telling them to get some weaponry instead of racing to objectives poorly armed - requires manual paths handling/mangling due to environment... or the knowledge in how this node must be placed for Goblin's "pathing" activity.Spoiler
Code: Select all
class InvNode expands PathNode; event int SpecialCost(Pawn Seeker) { local Bot B; B = Bot(Seeker); if ( !Seeker.bIsPlayer ) //Deny Monster heading to Player Base return 100000000; if ( B == None ) //External alien support return 0; if ( B != None ) { if ( B.Weapon != None && B.Weapon.AIRating >= 0.5 ) //Using weapon specific rating - crawl for a good weapon before passing through this node return 0; else return 100000000; } return 100000000; } defaultproperties { bNoDelete=True bStatic=False bSpecialCost=True bHidden=True }
I had this in my head but... I discarded idea right before to start working on it...Old UT Veteran wrote: ↑Tue Apr 26, 2022 8:05 pm How about status based inventory? Say for example that bot can not enter area unless it has shield or armor... or required health points.
Code: Select all
class WeakNode expands PathNode;
var() int ReqHealth;
event PostBeginPlay()
{
if ( ReqHealth > 10 )
bSpecialCost = True;
else
log("> ReqHealth is inconclusive. Node won't react.",Name);
}
event int SpecialCost(Pawn Seeker)
{
if ( Seeker == None )
return 100000000;
if ( Seeker.Health < ReqHealth )
return 100000000;
else
return 0;
}
defaultproperties
{
bNoDelete=True
bStatic=False
bCollideWhenPlacing=False
CollisionRadius=20.000000
CollisionHeight=40.000000
RemoteRole=ROLE_None
}
Code: Select all
foreach AllActors(class'ScriptedPawn', SP)
if (SP.RangedProjectile != None && ! SP.RangedProjectile.IsA('Projectile'))
{
logger(LOG_Warning, "CheckRangedProjectile", SP $ ".RangedProjectile ==" @ SP.RangedProjectile);
ErrCount++;
}
Code: Select all
foreach AllActors(class'ScriptedPawn', SP)
if (SP.RangedProjectile != None && SP.RangedProjectile.IsA('ShellCase'))
{
logger(LOG_Warning, "CheckRangedProjectile", SP $ ".RangedProjectile ==" @ SP.RangedProjectile);
ErrCount++;
}
Yes, this is what I've removed recently from MapGarbage because it did not work for some (unknown to me) reasons. The check was supposed toward a non-projectile class and reverting it to default. The result was a misery, every single monster way changed to original projectile class - either way reported as being wrong configured...Barbie wrote: ↑Sun May 01, 2022 9:44 am ScriptedPawn(Other) .RangedProjectile is a Projectile? The following seems not to work:Code: Select all
foreach AllActors(class'ScriptedPawn', SP) if (SP.RangedProjectile != None && ! SP.RangedProjectile.IsA('Projectile')) { logger(LOG_Warning, "CheckRangedProjectile", SP $ ".RangedProjectile ==" @ SP.RangedProjectile); ErrCount++; }
Yes, but my intention was to check if the value RangedProjectile is a projectile. While I was mislead that 'ShellCase' is NOT a projectile but in fact it is. So my above code works, but didn't show up any warning because 'ShellCase' IS a projectile.Buggie wrote: ↑Sun May 01, 2022 10:34 amCode: Select all
if (SP.RangedProjectile != None && SP.RangedProjectile.IsA('ShellCase'))
Yes, that also works fine:
Code: Select all
if (SP.RangedProjectile != None && ! ClassIsChildOf(SP.RangedProjectile, class'Projectile'))