BRUT/BRUTUS (Entry for the December contest)

Discussions about GameTypes
User avatar
TheDane
Masterful
Posts: 660
Joined: Tue Feb 12, 2008 2:47 pm
Personal rank: Happy fool :-)

Re: BRUT/BRUTUS (Entry for the December contest)

Post by TheDane »

JackGriffin wrote:Just to give you an idea D, here is an example map Krullor sent me to help me learn the emitter settings:
lL7UJZPAWes

Turn your YT settings way up to really see the details. And this is the demo, it only gets better as you tweak and improve the textures and settings.
looks great 8) if it's not a zillion megabytes it could be usefull for Unreal though it looks very real :wink:
Retired.
JackGriffin
Godlike
Posts: 3774
Joined: Fri Jan 14, 2011 1:53 pm
Personal rank: -Retired-

Re: BRUT/BRUTUS (Entry for the December contest)

Post by JackGriffin »

@TheDane: I can't reply to you.
150b7f238006e75e1713df8b2d7901e6.jpg
150b7f238006e75e1713df8b2d7901e6.jpg (44.85 KiB) Viewed 1795 times
So long, and thanks for all the fish
User avatar
TheDane
Masterful
Posts: 660
Joined: Tue Feb 12, 2008 2:47 pm
Personal rank: Happy fool :-)

Re: BRUT/BRUTUS (Entry for the December contest)

Post by TheDane »

JackGriffin wrote:@TheDane: I can't reply to you.

OMG I'm so blonde haha ... Sry!!! It should be fixed now :rock:
Retired.
User avatar
Dr.Flay
Godlike
Posts: 3347
Joined: Thu Aug 04, 2011 9:26 pm
Personal rank: Chaos Evangelist
Location: Kernow, UK
Contact:

Re: BRUT/BRUTUS (Entry for the December contest)

Post by Dr.Flay »

@TheDane I think all the available renderers are fine with any AV.
It is just ACE protected servers with admin that do not maintain their whitelist that is a problem.

You may find using the DX10 renderer works better than the regular GL or DX9 renderers, though in any case don't forget to install the full DX9 runtime distro to add the missing older files.
Kentie hasn't updated his renderers for a long time, and so Smirftsch got his source to make his own branch.
It is probably worth using whatever the newest preferred stable version is at OldUnreal.

When updating an existing renderer, the ini lines will no longer match.
Use the advanced options window to tweak the updated renderers, so any missing switches will be added to the ini file, so next time you can see manually edit all of them.


BTW. meowcat mentioned he may port a smaller version of his YARM - Yet Another Real-life Mod to UT99.
https://forums.beyondunreal.com/threads ... st-2627598
I wonder if certain members here would want to help that happen :wink:
User avatar
TheDane
Masterful
Posts: 660
Joined: Tue Feb 12, 2008 2:47 pm
Personal rank: Happy fool :-)

Re: BRUT/BRUTUS (Entry for the December contest)

Post by TheDane »

Thx, I'll try installing the latest drivers and see which one I like the best :tu:
Retired.
CoN_Dentures
Novice
Posts: 3
Joined: Mon Aug 27, 2018 9:15 pm

Re: BRUT/BRUTUS (Entry for the December contest)

Post by CoN_Dentures »

Love this gametype. Was just wondering if there have been any extensive testing done on a server?
User avatar
f7r
Experienced
Posts: 111
Joined: Mon Oct 19, 2020 6:53 pm

Re: BRUT/BRUTUS (Entry for the December contest)

Post by f7r »

Hi guys! I put a weapon on of this without using the mutator itself. For example, BRUTUS.Snipe_AWM. Can I reload somehow?
User avatar
OjitroC
Godlike
Posts: 3605
Joined: Sat Sep 12, 2015 8:46 pm

Re: BRUT/BRUTUS (Entry for the December contest)

Post by OjitroC »

f7r wrote: Wed Nov 25, 2020 10:29 pm Hi guys! I put a weapon on of this without using the mutator itself. For example, BRUTUS.Snipe_AWM. Can I reload somehow?
It reloads automatically doesn't it?

I don't use the BRUT/BRUTUS weapons much because I don't like the recoil. I have subclassed a couple to reduce the recoil (the M60, as it's not in the various Counter Strike weapon mods and it's a handy MG, and the AWM) - both reload automatically.

The readme says "Players may add on-demand reload by binding "Mutate BRRELOAD" to a key" but I'm not sure if that works outside the mod itself. I can't remember if there is a property in the weapons to do with reloading - you can check that out in the Editor.
User avatar
f7r
Experienced
Posts: 111
Joined: Mon Oct 19, 2020 6:53 pm

Re: BRUT/BRUTUS (Entry for the December contest)

Post by f7r »

OjitroC wrote: Thu Nov 26, 2020 12:37 am It reloads automatically doesn't it?
Уes you are right. It do it automatically too. But I want to reload on half clip. I know very little about Unreal Script.
I found that:
in class BRUT extends Mutator config(BRUT);
Spoiler

Code: Select all

//Reload of the weapons on demand
function Mutate (string MutateString, PlayerPawn Sender)
{
	if (Left(Caps(MutateString),8) == "BRRELOAD")
	{
		if(Sender != None)
		{
			if(Sender.Weapon != None && !Sender.Weapon.bMeleeWeapon)
			{
				if(Sender.Weapon.IsA('CSSWeapons'))
				{
					if((CSSWeapons(Sender.Weapon).ClipCount < CSSWeapons(Sender.Weapon).default.ClipCount) && (CSSWeapons(Sender.Weapon).AmmoType.AmmoAmount > 0))
					{
						if(!CSSWeapons(Sender.Weapon).IsInState('NewClip'))
							CSSWeapons(Sender.Weapon).Reload();
					}
				}
			}
		}
	}

	Super.Mutate(MutateString,Sender);

	if(NextMutator != None)
		NextMutator.Mutate(MutateString,Sender);
}
and in class Sniper_AWM extends CSSWeapons;
Spoiler

Code: Select all

function Reload()
{
   if ((AmmoType.AmmoAmount>0) && (ClipCount < Default.ClipCount))
   {
    	PZoomLevel = 0;
      GotoState('NewClip');
      PlayReloading();
      ClientReload();

      if(Owner.IsA('PlayerPawn'))
		{
			if (PlayerPawn(Owner).Player.IsA('ViewPort'))
			{
				if(PlayerPawn(Owner).DesiredFOV != PlayerPawn(Owner).DefaultFOV)
				{
					PlayerPawn(Owner).DesiredFOV = PlayerPawn(Owner).DefaultFOV;
					PlayerPawn(Owner).FOVAngle = PlayerPawn(Owner).DesiredFOV;
				}
			}
		}
   }
}

simulated function ClientReload()
{
   if ((Role < ROLE_Authority) && (ClipCount < Default.ClipCount) && (AmmoType.AmmoAmount>0))
   {
    	PZoomLevel = 0;
    	GoToState('ClientReloading');
      PlayReloading();

      if(Owner.IsA('PlayerPawn'))
		{
			if (PlayerPawn(Owner).Player.IsA('ViewPort'))
			{
				if(PlayerPawn(Owner).DesiredFOV != PlayerPawn(Owner).DefaultFOV)
				{
					PlayerPawn(Owner).DesiredFOV = PlayerPawn(Owner).DefaultFOV;
					PlayerPawn(Owner).FOVAngle = PlayerPawn(Owner).DesiredFOV;
				}
			}
		}
   }
}

simulated function PlayReloading()
{
   if ((Owner == None))
      return;
   PlayAnim('Reload',0.8, 0.05);
}
Аlso the mutator does not change the weapon, it does class BattleRoyaleUT extends DeathMatchPlus;.
I don't want a Battle Royal, I want a CS weapon. I saw the CSWeapon16_v2 here on the forum, but I'm having some problems with it. So I decided to try the BRUT.
Thanks to you, I am now thinking about subclassing this weapon and creating my own simple mutator. :omfg:
a9902957@nepwk.com
Experienced
Posts: 85
Joined: Thu Nov 03, 2011 5:12 am

Re: BRUT/BRUTUS (Entry for the December contest)

Post by a9902957@nepwk.com »

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?
Spoiler
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
Attachments
BattleRoyaleUTUBZFV.u
(6.77 KiB) Downloaded 17 times
Last edited by a9902957@nepwk.com on Sun Aug 29, 2021 8:14 pm, edited 2 times in total.
User avatar
papercoffee
Godlike
Posts: 10443
Joined: Wed Jul 15, 2009 11:36 am
Personal rank: coffee addicted !!!
Location: Cologne, the city with the big cathedral.
Contact:

Re: BRUT/BRUTUS (Entry for the December contest)

Post by papercoffee »

does it work? do the bots go for the center instead of dying in the radiation alone?
a9902957@nepwk.com
Experienced
Posts: 85
Joined: Thu Nov 03, 2011 5:12 am

Re: BRUT/BRUTUS (Entry for the December contest)

Post by a9902957@nepwk.com »

I would say the effort definitely shows and they do better than the stock bots do with this mod (making more use of the translocator when playing with that e.g. which
came sort of free with Higor's FerBotz).
I packaged my tampered BRUT.u to make it more easy for you to give it a try:
https://ufile.io/eb7ausad
mirror: https://www.udrop.com/5TAE/BRUT_tampered_u_file.7z

But as I hinted at I am a newbie when it comes to writing UBZFV files or general better support for FerBotz for gametypes.
This could get vastly improved with the proper know-how.

Some more map recommendations for this:
(Mapraider's Huge category helped turn these up):

https://www.mapraider.com/maps/unreal-t ... paceBeacon ("My" FerBotz20 on UTv436 with XC-Engine19 have troubles with the lifts in this one. Maybe newer XC_Engine and FerBotz18 UScript would fare better).
Some of Zerker's UltimeUndwerworld maps.

The following two can give you sweet cool/wow experiences when you do not yet know the map, play with a very fast collapsing zone like I do currently ( ZoneSpeed=0.07 you could tone that down to 0.065 or so because that should still be relatively fast; mine is nearing "extreme" ) and you and the center happen to be at the right places at the right times. I was so lucky, so maybe you are as well. (So I would suggest not checking the maps out in detail beforehand but adding FerBotz before the start so that you are ~22 at the start and if you yourself die early, restart do not watch till the end).
https://www.mapraider.com/maps/unreal-t ... t-Atlantis
https://www.mapraider.com/maps/unreal-t ... oineCavern rename/link as DM-...
a9902957@nepwk.com
Experienced
Posts: 85
Joined: Thu Nov 03, 2011 5:12 am

Re: BRUT/BRUTUS (Entry for the December contest)

Post by a9902957@nepwk.com »

This should be an improvement on the last one. (DELETETHISPREFIXBattleRoyaleUTUBZFV.u is maybe better you will have to rename/overwrite; This does away with three SetMoveTarget calls again in the hopes of having bots run less against/into walls in a stuck manner)
Still I need to keep at it.
And also check out if I can get the FerBotz improvements that are in here (which offer greater control; however it is not compiled yet):
https://github.com/CacoFFF/XC-UT99-Old/ ... er/FerBotz

Because I think I might have hit a road block with what I can do with the TargetAdder class/plugin in terms of attempting to make the bots stop to go for items outside of the zone.
Attachments
DELETETHISPREFIXBattleRoyaleUTUBZFV.u
(9.37 KiB) Downloaded 12 times
BattleRoyaleUTUBZFV.u
(9.45 KiB) Downloaded 11 times
User avatar
sektor2111
Godlike
Posts: 6403
Joined: Sun May 09, 2010 6:15 pm
Location: On the roof.

Re: BRUT/BRUTUS (Entry for the December contest)

Post by sektor2111 »

I was chatting a bit with Kelly about out-of-zone stuff. I don't know if something else was operated here but things might be solved - I guess...
Whatever actor or that zone itself can lock-down paths for nodes out of range and then Pawns won't walk there - poor lost Pawns will remain to die.
Paths lock-down can be done by adding 100000000 Cost perhaps even ExtraCost or retrieving connections with DescribeSpec and removing connections from Paths upStreamPaths PrunedPaths lists exactly like in map SkaarjTower pathed by Higor where some Teleporters inactive needed to be hacked as long as Teleporter code it's incomplete. A Teleporter disabled should lock paths as well not only when pawn is closer (with SpecialHandling) leaving it to Wander around. Higor's actor is tracking teleporters based on a timer and is placing paths back into lists if Teleporter is going enabled. It's a bit engineering but is doable - demonstrated.
User avatar
papercoffee
Godlike
Posts: 10443
Joined: Wed Jul 15, 2009 11:36 am
Personal rank: coffee addicted !!!
Location: Cologne, the city with the big cathedral.
Contact:

Re: BRUT/BRUTUS (Entry for the December contest)

Post by papercoffee »

interesting would be for bots to have a strong desire to reach the centre actor.
not only pathnodes but weapons and pickups should be also disabled when entering the deadly outside zone.
sometimes are bots so eager to get an item they miss the chance to get back in the savezone... and then they die very slowly.
Post Reply