This is totally great.
I had to attempt and make FerBotz compatible with this and try to make those go more actively/pronounced for the zone's center.
The latter part is still WIP and I am such a newbie I definitely would welcome e.g. Higor himself stepping in.
Where is that Betrayal Beta gametype FerBotz have a file for by the way?
diff --git a/BRUT.uc b/BRUT.uc
index 637cd11..29dda41 100644
--- a/BRUT.uc
+++ b/BRUT.uc
@@ -338,7 +338,7 @@ function modifyPlayer(pawn Other)
if(Other != None)
{
- if(Other.IsA('PlayerPawn') || Other.IsA('Bot') && !Other.IsA('Spectator'))
+ if(Other.IsA('PlayerPawn') || (Other.IsA('Bot') || Other.IsA('Botz')) && !Other.IsA('Spectator'))
{
W = Weapon(Other.FindInventoryType(Class'Enforcer'));
if(W != None)
@@ -611,6 +611,7 @@ simulated function Timer()
local PlayerPawn PP;
local pawn p;
local Bot BB;
+ local Botz BBotz;
local float CenterDistance, PNDistance, f;
local Vector EndFlashFog, X;
local GraffitiLight T;
@@ -857,8 +858,46 @@ simulated function Timer()
}
}
}
- }
}
+ }
+ //Damage Botz in the radiation
+ Foreach AllActors(class'Botz',BBotz)
+ {
+ If (BBotz !=none)
+ {
+ CenterDistance=VSize(CZG.Location - BBotz.Location);
+ if ((CenterDistance / 50) > (CZoneSpawn.Drawscale))
+ {
+ BBotz.TakeDamage(5, pawn(owner), Location, 100.0 * X, 'Zoned');
+
+ //Make sure no current burger exists for the bot
+ IExist = False;
+
+ foreach AllActors(class'BotBurger', BO)
+ {
+ if(BO.Owner == BBotz) //Found one
+ {
+ IExist = True;
+ break;
+ }
+ }
+
+ if (!IExist)
+ {
+ //Check for a nearby pathnode that's in the safe zone
+ foreach RadiusActors(class'Pathnode', PN, 300, BBotz.Location)
+ {
+ PNDistance=VSize(CZG.Location - PN.Location);
+ if(PNDistance < CenterDistance)
+ {
+ Spawn(Class'BotBurger', BBotz,, PN.Location);
+ break;
+ }
+ }
+ }
+ }
+ }
+ }
//Destroy any BotBurgers that are in the radiation zone
Foreach AllActors(class'BotBurger',BO)
@@ -953,6 +992,8 @@ simulated function Timer()
BattleRoyaleUT(Level.Game).EndGame("BRUT");
foreach AllActors(class'Bot',BB) //added check to stop bots respawning
BB.GotoState('GameEnded');
+ foreach AllActors(class'Botz',BBotz) //added check to stop bots respawning
+ BBotz.GotoState('GameEnded');
}
else
{
@@ -977,7 +1018,7 @@ Function TimeChange()
For(p=level.pawnlist;p!=none;p=p.nextpawn)
{
- if(p.isa('bot') || p.isa('playerpawn'))
+ if(p.isa('bot') || p.isa('Botz') || p.isa('playerpawn'))
{
p.GroundSpeed = p.Default.GroundSpeed * (Normalspeed/Level.Timedilation);
p.WaterSpeed = p.Default.WaterSpeed * (Normalspeed/Level.Timedilation);
diff --git a/BattleRoyaleUT.uc b/BattleRoyaleUT.uc
index d5f17f1..cd85d36 100644
--- a/BattleRoyaleUT.uc
+++ b/BattleRoyaleUT.uc
@@ -359,7 +359,9 @@ event InitGame(string Options, out string Error)
function float GameThreatAdd(Bot aBot, Pawn Other)
{
- if (!Other.bIsPlayer)
+// Botz probably have a bIsPlayer=true but we afford this extra check for being lazy too to check this now ...
+// and are not ashamed enough to spell that out here
+ if (!Other.bIsPlayer && !Other.IsA('Botz') )
return 0;
else
return 0.1 * Other.PlayerReplicationInfo.Score;
@@ -414,20 +416,22 @@ function bool RestartPlayer(pawn aPlayer)
if(bRestartLevel && Level.NetMode!=NM_DedicatedServer && Level.NetMode!=NM_ListenServer)
return true;
-
+ // This special handling for the FerBotz here would be better put elsewhere but meh!
+ if (aPlayer.IsA('Botz') && aPlayer.PlayerReplicationInfo.Deaths < 1)
+ aPlayer.PlayerReplicationInfo.Score = 1; // not Lives; more than 1 is weird and would break the cond above
if (aPlayer.PlayerReplicationInfo.Score < 1)
{
- BroadcastLocalizedMessage(class'BRUTOutMessage', 0, aPlayer.PlayerReplicationInfo);
For (P=Level.PawnList; P!=None; P=P.NextPawn)
if (P.bIsPlayer && (P.PlayerReplicationInfo.Score >= 1))
P.PlayerReplicationInfo.Score += 0.00001;
- if (aPlayer.IsA('Bot'))
+ if (aPlayer.IsA('Bot') || aPlayer.IsA('Botz'))
{
aPlayer.PlayerReplicationInfo.bIsSpectator = true;
aPlayer.PlayerReplicationInfo.bWaitingPlayer = true;
aPlayer.GotoState('GameEnded');
return false; // bots don't respawn when ghosts
}
+ BroadcastLocalizedMessage(class'BRUTOutMessage', 0, aPlayer.PlayerReplicationInfo);
}
startSpot = FindPlayerStart(None, 255);
if(startSpot == None)
@@ -497,6 +501,7 @@ function CheckEndGame()
local int StillPlaying;
local bool bStillHuman;
local bot B, D, BB;
+ local Botz BBotz;
local actor A;
if (bGameEnded)
@@ -505,6 +510,9 @@ function CheckEndGame()
// Check to see if everyone is a ghost.
NumGhosts = 0;
for (PawnLink=Level.PawnList; PawnLink!=None; PawnLink=PawnLink.nextPawn)
+// hmm this shall check for us if Botz have the bIsPlayer=true bool Yay!
+// does not appear so; so the check above is needed it seems
+// err actually not sure :/
if (PawnLink.bIsPlayer)
{
if (PawnLink.PlayerReplicationInfo.Score < 1)
@@ -530,6 +538,8 @@ function CheckEndGame()
EndGame("BRUT");
foreach AllActors(class'Bot',BB) //added check to stop bots respawning
BB.GotoState('GameEnded');
+ foreach AllActors(class'Botz',BBotz) //added check to stop bots respawning
+ BBotz.GotoState('GameEnded');
}
}
else if (!bStillHuman)
diff --git a/DeadPlayerMarker.uc b/DeadPlayerMarker.uc
index 80f15dd..d88701a 100644
--- a/DeadPlayerMarker.uc
+++ b/DeadPlayerMarker.uc
@@ -54,7 +54,7 @@ auto state Pickup
}
Self.Destroy();
}
- else if (ValidTouch(Other) && Other.IsA('Bot'))
+ else if (ValidTouch(Other) && (Other.IsA('Bot') || Other.IsA('Botz'))
{
PlaySound (PickupSound,,2.5);
Self.Destroy();
Attached is the FerBotz special support .u (which I did not bless with useful comments or awesome formatting so far unfortunately).
Plus this version has embarrassing errors and shall get vastly improved. I am slowly getting there.
This is great fun on
https://www.mapraider.com/maps/unreal-t ... picTownV2A
You do not have the required permissions to view the files attached to this post.