Need More Fixes ?

Posts about Nelsona's findings in UT!
Post Reply
User avatar
Nelsona
Posts: 998
Joined: Sun Mar 06, 2011 11:45 am
What is the middle number? (one, TWO, three): 2
ExtraAntiSpam: Blue
extraextraantispam: Yes
Location: Still at Keyboard
Contact:

Re: Need More Fixes ?

Post by Nelsona » Sat Jan 11, 2014 3:32 pm

I have seen not a long time ago a kind of electro-affinity but sadly these prototype of projectiles like EnergyBolt are a simple garbages On-Line. I think time come for some recreational work.

Code: Select all

//=============================================================================
// EnergyBolt. -> Local Bolt -> Null server code Bolt -> Crappy effects On-Line Bolt...
// Kinda null mapping knowledge related to server-stuff
// Finishing Intro, let's see this in a server
// Step 1) Put simulated functions as for other functional projectiles
// Step 2) Put a bit of noise into the crap
// Step 3) Being a slow Projectile made sure about presence of Instigator when hits an actor target - it might die during fly time
// Step 4) Is not a need for this to fly 3 years. Is a mess in end
//=============================================================================
class MHEnergyBolt extends Projectile;

	simulated function PostBeginPlay() //These ought to be simulated in order to work in Net, I'm guessing.
	{
		Super.PostBeginPlay(); //Call momma
//		Acceleration = vect(0,0,0); //Wheew ! Impressive
		Velocity = Vector(Rotation) * MaxSpeed;	// velocity
//		SetLocation( Location + vect(0,0,25) );	//Fire from Hat, right ? Not now.
		PlaySound(SpawnSound, SLOT_Misc, 2.0);	//A small sound
	}

	simulated function ProcessTouch( Actor Other, Vector HitLocation )
	{
		local vector momentum;
		if (MHEnergyBolt(Other) == none)
		{
			if ( Role == ROLE_Authority ) //Code done already in other classes
			{
				momentum = MomentumTransfer * Normal(Velocity);
				if ( Instigator != None ) //Still alive ?
					Other.TakeDamage(damage,Instigator,hitLocation,momentum,'zapped');
				else
					Other.TakeDamage(damage,None,hitLocation,momentum,'zapped');
			}
			Destroy();
		}
	}

	simulated function HitWall( vector HitNormal, actor Wall )//lil effect
	{
		Super.HitWall(HitNormal, Wall);	
		PlaySound(ImpactSound, SLOT_Misc, 0.5); //human sound
		SetPhysics(PHYS_None); 
		SetCollision(false,false,false);
		MakeNoise(0.5); //Disturb Evil spirits
		Destroy();
	}

	simulated function Explode(vector HitLocation, vector HitNormal)
	{
	}

	simulated function AnimEnd()
	{
		Destroy();
	}

defaultproperties
{
     LifeSpan=10.00
     MaxSpeed=1000.000000
     MomentumTransfer=20
     damage=20
     RemoteRole=ROLE_SimulatedProxy
     SpawnSound=Sound'UnrealShare.General.ArrowSpawn'
     ImpactSound=Sound'UnrealShare.Razorjack.BladeHit'
     Mesh=LodMesh'UnrealShare.bolt1'
     AmbientGlow=67
     bUnlit=True
     LightType=LT_Steady
     LightRadius=19
}
This works for sure, for the moment they don't have decals and I don't need them this time.

User avatar
Nelsona
Posts: 998
Joined: Sun Mar 06, 2011 11:45 am
What is the middle number? (one, TWO, three): 2
ExtraAntiSpam: Blue
extraextraantispam: Yes
Location: Still at Keyboard
Contact:

Re: Need More Fixes ?

Post by Nelsona » Mon Jan 13, 2014 1:19 pm

If next problem is off-topic I appologise in advance.

A question haunted me a veery long time. What if a few monsters enemies are against you at a moment (or against a Bot) ?
Second question: Is good or is bad ? I did not tried this yet but let me drink something first.
Third question: Is this possible ? I'm guessing ... yes.

What kinda code we need ?

Code: Select all

//some timer in here rated as you want
local ScriptedPawn S, S1;
local Pawn P;
//bla bla pawnlist to start sorting monsters one by one
//then
				if ( S.Enemy != None && !S.Enemy.IsA('ScriptedPawn'))
				foreach S.VisibleCollidingActors (class 'ScriptedPawn',S1, 700) //Trigger other nearby monster properly.
				{
					if ( (S1.Enemy == None || (FRand() > 0.5 && S1.Enemy != None && S1.Enemy != S.Enemy ) ) && S != S1 )
					{		S1.Enemy = S.Enemy;
							S1.Hated = S.Hated;
						if ( S1.IsInstate('Waiting') || S1.IsInState('Wandering'))
							S1.GotoState('Attacking');
					}
				}
Translation ? Then let me see.
If a monster has an enemy non-monster, all visible other monsters in 700 uu range will hate that enemy guy or will randomly quit their current enemy for this newer. If they are in state ... "sleeping as usual" they will attack.
Now let's compute probability of a chain attack. No, too much math, better let's see how awsome is your CPU - I'm not responsable for damaging your cooler or whatever...
A_few_enemies.JPG
Must be a cute battle in there.
You do not have the required permissions to view the files attached to this post.

User avatar
Hook
Posts: 3444
Joined: Fri Feb 16, 2007 9:41 am
What is the middle number? (one, TWO, three): 3
extraextraantispam: No
NoMoreSpam: Silver
Location: Minnesota USA (Just West of MPLS - by a pond beneath a tree - Dead & Buried)
Contact:

Re: Need More Fixes ?

Post by Hook » Mon Jan 13, 2014 1:27 pm

Now THIS is some new cool stuff! :D
Holy Criminy, look at all those monsters or zombies !?!? :shock:
Can you imagine what that would look like if you fired a COLOSSUS Missile into that crowd of whatever they are???
=Hook= of Hook's UT Place - Hopelessly Addicted to UT99!
Forum: https://hooksutplace.freeforums.net
CROSSBONES Missile Madness {CMM} (GT Top 50)
PRO-Redeemer | PRO-SNIPER-Redeemer | SEEKER-Redeemer
Birth Place of ALL Seeker/Scoped Deemers!
IP: NEW IP to come!
CROSSBONES Monster Hunt {CMH} (Special Edition MH by mars007)
IP: 108.61.238.93:7777

User avatar
Nelsona
Posts: 998
Joined: Sun Mar 06, 2011 11:45 am
What is the middle number? (one, TWO, three): 2
ExtraAntiSpam: Blue
extraextraantispam: Yes
Location: Still at Keyboard
Contact:

Re: Need More Fixes ?

Post by Nelsona » Wed Jan 15, 2014 2:13 pm

This map supposed by Kaal - Original V6 as he did it (as he knew) in my version of mod has a functional Bot Support, has armed pawns, has 1043 pawns (monsters) not very far placed each-other. With such a load challenging engine I performed more tests (Monsters, Bots, tweaks, etc.). All worked with 0 crash. I couldn't recall a better map for chain reaction of monster-furry. I picked this one.

Now... cons. I think none of any UT fan can play such big HATE. In 2 seconds I reached at 0.8 to 1.2 FPS. Pretty nasty even for spectating. I tried a test session On-Line. Server kicked me for lag. Imagine that I played connected to server VIA 1 Switch having 350 to 550 ms ping. Runing server in Core 0 I got 99-100% CPU load. Other core sustained OS, no client crash, no server crash, but ... 0 playability.

Then I recomputed something. I think in such maps I'll cap giant hate at 254 pieces. I think engine is familiarized with 254. Algorithm is as follow:
- NumInsane is a value having a default 1000 much over 254 - just for extra-safety;
- Player notice amplifier (all hunters, Human and Bot). When amplifier comes will be automatically checked the number of monsters from map already stored in game-core;
- if monsters remain 254 pieces or less - they will get mad at this human threat. If in a map we have in a spot 20 creatures and one of them detected player. Other 19 creatures placed at a maximum path distance (700 UU) will gain this enemy, also if next pawn has other nearby pawn and so on;
- posibility to start fighting themselves based on agry moments not exist in my game-core because I inflicted technology for teaming them. Yes, they are part of a team having a Leader as prescribed by Epic in Teaming sequence and if one tends to threat a friend order is restored (kinda teaming clock) so all of them are leaded by a purpose: kill that enemy.

For such prototype of MH I did not have rest because I had an Insane curiosity.

Now let me guess what's happening. Noticing an enemy and setting up parent attack state. If they cannot see enemy (a lot of chances) will try to find a path. Engine needs to give acces to ... all of them to target. Once detected a visual contact and a single one not very relevant path, will hunt enemy directly. Result... previous image. Now I think you have reasons to use insane weapons not how were used until this moment - coward style - I found them pretty useless against a normal and pathetic game-controller. A giant Big Boom against 3 flies ? What is exactly the definition "Shooter-Game" ? Me killing pawns without giving them a single chance and playing with 0 sport? Now ... I have 0 chance against them without a Big Gun, right ?

User avatar
Dr.Flay
Posts: 268
Joined: Sun Apr 07, 2013 6:35 am
What is the middle number? (one, TWO, three): 2
ExtraAntiSpam: Blue
extraextraantispam: Yes
NoMoreSpam: Silver
Location: Kernow, UK
Contact:

Re: Need More Fixes ?

Post by Dr.Flay » Mon Jan 20, 2014 1:18 am

Ah-ha ! now I see where the Captain was inspired from.

Nelsona, I agree. All levels of monsters should be a challenge, or you may as well just put a matchstick in the mouse-button, and go and make a drink while the score builds-up.

This is why I am happy with fairly normal weapons and monsters. It makes me work hard, and panic when I run low on ammo.

ChaosUT helps there, as you can kick the monster away (if you get your timing right!)
Image
chaoticdreams.org - @TheChaosMod - Web IRChat - [url=irc://irc.quakenet.org/chaoticdreams]IRChat[/url]

User avatar
Nelsona
Posts: 998
Joined: Sun Mar 06, 2011 11:45 am
What is the middle number? (one, TWO, three): 2
ExtraAntiSpam: Blue
extraextraantispam: Yes
Location: Still at Keyboard
Contact:

Re: Need More Fixes ?

Post by Nelsona » Mon Jan 20, 2014 1:46 am

Doc, if I recall some game from a few years ago let guess why good poeple left. Without to post names to not awake spirits so bad.

Levels ATAAxstupidremade or whatever. Server mod without self damage. Bpak the most wanted crap. All player spent time in a spot spaming bRipper with 0 skill. Game was like in railway-station, players entering - players leaving. I think admin was happy to see ins-outs. The spirit of a shooter is level -10 in such case where even retards can score well, in fact even better than good players, based on lucky bonuses. As I said about that random, always new player was rewarded well and old player had less bonuses. Now let me guess, some dude more rebel quited this coward play and started a war with FlameWaver or such BPak integrated manure. You know, at least 2 people crashed based on display errors. What do you think ? Do I will to return at such game some day ? Of course... NOT. I made noise about mapping to develop a bit these level not only monsters sleeping. The level is known sooner or later. Anyone can use a deemer in a spot where a monster is sleeping well. Why ? Because not many people can launch a patrol or trigger an alarm, run to gain help, destroy something to spawn reinforcements, eh, imagination can be completed by more cute good things but ... we have levels based on lights, cubes, glasses - UT content related to monsters has been forgot, and mods ... the same old architecture just with other colors. It looks like everybody are happy with such kinda shooter, but I'll play mine, that's why I'm not very playing ON-Line. I know the most of monster reactions from almost all MH servers. For CTF ? I have also one different, the same - a different one - for DM. Those are my challenges not fancy colors, after years of UT I considered that time come to setup a party with UT content unused.

User avatar
Hermskii
Site Admin
Posts: 8501
Joined: Sun Jul 10, 2005 9:56 pm
What is the middle number? (one, TWO, three): 2
ExtraAntiSpam: Blue
extraextraantispam: Yes
NoMoreSpam: Silver
Location: Houston, Texas
Contact:

Re: Need More Fixes ?

Post by Hermskii » Mon Jan 20, 2014 9:39 am

I was watching my kid play UT at another server the other day and he was shooting deemer after deemer at a giant gasbag. He was almost at a pointblank range too thus being well WITHIN the blast radius.

It sickened me that he had that much of this type of weapon ammo and that much health that he could not die and that the monster had so much health that 1 deemer wasn't enough to kill him.

Call my server old fashioned all you want but you can't call it easy or too easy. I tried to make the balance just right with the types of maps I run in conjunction with the strength of the regeneration mod I run on it.

I also certainly didn't appreciate the HOLY "CRAP" sound bite repeating itself over and over each type he shot one of these deemers into 1 million pupa in other locations on the map.
~Peace~

Hermskii

User avatar
Nelsona
Posts: 998
Joined: Sun Mar 06, 2011 11:45 am
What is the middle number? (one, TWO, three): 2
ExtraAntiSpam: Blue
extraextraantispam: Yes
Location: Still at Keyboard
Contact:

Re: Need More Fixes ?

Post by Nelsona » Mon Jan 20, 2014 11:37 am

See Doc ? Herm knows old MH spirit and team-play. "New blood" spaming forums cannot even dream at such things and some of them cannot even imagine why I'm posting here different forumulas.

If you played (any of you) MH and you know let's say a map like Arden. Imagine Berserkers near snipers-tower starting to get mad at player not at themselves. Imagine those snipers firing at player (having weapons of course) challenging a team-work and even sacrifice.
MH-BoomBoomBridge version with two holes for defence (ex-CTF version). Only a simple hit into Bridge area to trigger a single monster and a whole swarm will ambush player: Mercs, flies, brutes, lavasliths ... except titans and warlords (unable to navigate well this time) and more examples like this. This is my MH teaming prototype. Any chicken can run away, this is not important - a stupid bot can manage this fight. As long as all monsters are into a team ruled by controller they have a single purpose: attack external threat. Now I told you exactly why I won't play anymore default MH.

And because I have a very good moment this time, we can speak in a bit of coding terms about what we need. That so called TeamTag seems unknown by "experts". TeamTag is a (preferable) small string assigned to all monsters which is meant to make them to act friendly only with small rebelions randomly. In order to not reject team-work they need a leader. Well... this is a bit of trick. Leader is a custom monster with some function modified to not ever enter in combat (leader is all time in game until end of level like a ghost - Bot Eye can see it). Why we need this controller to manage teaming ? Simple - Epic's laziness - read again. CreatureFactory as a stupid keypoint which failed a few parameters and protections. Monsters spawned later with CreatureFactory cannot be in team because we don't have this option implemented and we don't have bHateWhenTriggered as more others required things. They could manage a separate section if prototype is a Monster else don't spawn craps. I've been thinking at a deal with these in controller, but ... because random rebels tends to attack themselves (and EG noticed this) we need fragments of SYF code. In fact SYF code won't be only a block fight code, will be a teaming code sequence slowed down. Original acting each tick (20 fps or more) new thing acts each 400 ms or more leaving pawns to mind their states. Things are more conviceable aplying chain-furry. Results ? I think previous image is prety relevant. All of them attacked like mads one Bot who dared to challenge them. Being a hard code I capped number at 254. If map has more, chain furry in not in action Monsters still being a powerfull team. That's it.

Oops, reminder: I have to rethink that Scorekill thing with Holy ... grandma.

User avatar
Nelsona
Posts: 998
Joined: Sun Mar 06, 2011 11:45 am
What is the middle number? (one, TWO, three): 2
ExtraAntiSpam: Blue
extraextraantispam: Yes
Location: Still at Keyboard
Contact:

Re: Need More Fixes ?

Post by Nelsona » Sat Jan 25, 2014 7:07 pm

Keep moving - this won't be a very fix, the mostly is addressing to A.I. because players have everything (even useless things).

Scenario (use imagination), a Fortress into the middle, or a mountain. one road is to the left and the second road to the right. We want to see some action from A.I. switching these roads. Let's see some brother of known (or less known) BlockedPath. BlockedPath can be used a single time to unlock that way and ... DONE. This time we can slap into MyLevel or other package another thing named let's say PathSwitcher as follows:

Code: Select all

class PathSwitcher extends BlockedPath;

var() bool bInitialEnabled;

event PostBeginPlay()
{
	if (bInitialEnabled)
		Extracost = 100000000;
	else
		Extracost = 0;
	Super.PostBeginPlay();
}

function Trigger( actor Other, pawn EventInstigator )
{
	if ( ExtraCost > 0 )
		ExtraCost = 0;
	else
		ExtraCost = 100000000;
}

defaultproperties
{
     bInitialEnabled=True
}
How works ? We are placing 2 such pieces at begining of each road. One will be set bInitialEnabled=True (default with path locked), the second will have bInitialEnabled=False. Both of these things are going to be set with the same TAG. Now... if we are using a TimedTrigger to repeat trigering each 15 seconds with an Event matching those 2 TAGS, will see A.I. modifying attack switching from Left road to Right road and vice-versa crawling on both roads. Also can be used one with a clear path that needs to be closed later due to mission parameters.
Also in a CTF map with 2 main roads can be used without any too much deal with AlternatePath when paths need to be a bit randomized.

Note:
If A.I. is engaged in nasty combat and/or heavy threats will attempt to attack or retreat the mostly forcing paths with any risk ignoring pathing directives leaded by their native code VS aggressivity. This is very functional normally when threats aren't so relevant.

User avatar
Nelsona
Posts: 998
Joined: Sun Mar 06, 2011 11:45 am
What is the middle number? (one, TWO, three): 2
ExtraAntiSpam: Blue
extraextraantispam: Yes
Location: Still at Keyboard
Contact:

Re: Need More Fixes ?

Post by Nelsona » Tue Jan 28, 2014 1:42 am

Sometimes I call nasty things especially when battle-noise is more interesting than a stupid song which will get older soon and will going to be hated by people - of course author won't notice this detail because he think is cool forever.
There are some logs crawling into my WebPage (even if works only temporary) looking for some music folder. Oh, really ? I think is a joke. Why ? Watch this:

Code: Select all

mutemut expands mutator;
....
	ConsoleCommand("set LevelInfo Song Null48.Null48");
	ConsoleCommand("set MusicEvent Song Null48.Null48");
....
Some people are playing in the dark, others in low-gravity, others with stupid stuff. Let's say I'm a fan of battle-noise having -10 interest for Music stuff. I've been playing for years with music muted. If I need music I listen my most loved songs not what runs in a map. Beside this new player joined won't really notice new music changed previously at a moment in level before his/her presence, so ... ! Btw ! I'm not the guy looking for admins experts in "admin set" commands :lol: .

User avatar
Dr.Flay
Posts: 268
Joined: Sun Apr 07, 2013 6:35 am
What is the middle number? (one, TWO, three): 2
ExtraAntiSpam: Blue
extraextraantispam: Yes
NoMoreSpam: Silver
Location: Kernow, UK
Contact:

Re: Need More Fixes ?

Post by Dr.Flay » Tue Jan 28, 2014 6:49 am

I don't think it was stupidity that lead to problems with spawned monsters.
Remember UT is really just a mod for Unreal, and inherits the original single-player campaign monsters.
It is (or feels like) a hack, so we should probably be grateful that it even works at all :mrgreen:

:!: Interesting ! what you say about setting a leader.
I assumed you set a leader in a team so the other pawns would follow and support that one.

:shock: I also assumed putting the pawns in teams was common, as it seemed the most sensible way to make them cooperate and not fight each-other.
Damn that's dumb if people are not using it.
Image
chaoticdreams.org - @TheChaosMod - Web IRChat - [url=irc://irc.quakenet.org/chaoticdreams]IRChat[/url]

User avatar
Nelsona
Posts: 998
Joined: Sun Mar 06, 2011 11:45 am
What is the middle number? (one, TWO, three): 2
ExtraAntiSpam: Blue
extraextraantispam: Yes
Location: Still at Keyboard
Contact:

Re: Need More Fixes ?

Post by Nelsona » Tue Jan 28, 2014 12:12 pm

Perfect... small explanations

Monsters (normally 4 pieces for SP missions) tends to be a team if have TeamTag and TeamLeader. Also they might be boosted with bHateWhentriggered. Problem, cannot gain these using CreatureFactory, later in game (not with default one). CreatureFactory has poor coding options like the code for Leader Monster (ScriptedPawn root) - being probably less tested is enough bugged and makes people mad. A Leader must respect some battle conditions else will spam console with errors. I don't cry in here. I have a Leader able to respect console and people. Will be there just for his team (claping hands and/or encouraging team - use any imagination) - WARNING - is not about PlayerReplication.Info.Team - that's a simple TEAM. Monsters doesn't have PlayerReplication.Info, so if we compare such code in Botpack via "IF" functions and trying to deal with such values will return only Accesed Nones. All BotPack stuff calling such things rise only bad things and for this reason I recoded a bunch of functions.
The meaning of Leader is to keep them as a team. Else they become wild with intentions to kill each-other (nasty attitude code). And... yes the best way to stop pawns to fight each-other is to make them friends. In this way even a SkaarjBerserker won't really attack like mad other Berserkers (just few isolated cases) but is very possible to see it attacking itself ... or to attack server (crash) - Congrats EPIC ! After all these or different spoken, we need small punches from outside (controller - mutator) meant to restore order properly. One thing boosting Team-Attack was chain-furry developed for a single enemy encountered at a moment from all monsters placed nearby that guy to avoid bumping each-other with bad intentions. The point is, only a smarter MH controller can manage things better. Why ? I fooled with settings from an old tutorial and for sure everything works for a CoopGame. For default MonsterHunt it looks like they consumed some drugs because are worst than you can imagine. Patrol works, guard works, Alarm Works, problems occur when these are a bit combined, is a lotery if map is not tested.
Yes, is hard to fully understand these at first look - I scanned them with MindReaders, I put logs, and heavily I found a solution which isn't probably the best because I screwed a few problems in purpse to gain desired result. Now indeed I think I need a 20GHz CPU if I don't cap things properly.

User avatar
Nelsona
Posts: 998
Joined: Sun Mar 06, 2011 11:45 am
What is the middle number? (one, TWO, three): 2
ExtraAntiSpam: Blue
extraextraantispam: Yes
Location: Still at Keyboard
Contact:

Re: Need More Fixes ?

Post by Nelsona » Mon Feb 10, 2014 8:00 am

Q: What day is today ?
A: I think is February 10 2014.

Q: So what ?
A: I have a kind of MonsterHunt recompiled and... I got rif of all Oldskool bits - dependencies.

Q: Decaled Projectiles you say ?
A: Yup, and reworked because I hate 10 years of craps:
This is old

Code: Select all

if ( Role == ROLE_Authority )
			Other.TakeDamage(Damage, instigator,HitLocation,
					15000.0 * Normal(velocity), 'burned');
		Explode(HitLocation, Vect(0,0,0));
and is used in more projectiles who develop only errors, even attempt to play unexistent sounds in certain instances when are spawned.

Q: Wait a minute. What exactly I need for my new prototypes ?
A: A wrapped check or let's say a HANDLER like:

Code: Select all

		if ( Role == ROLE_Authority )
			if ( instigator != None ) //Meh... this cannot be always alive.
				Other.TakeDamage(Damage,instigator,HitLocation, 15000.0 * Normal(velocity), 'burned');
			else
				Other.TakeDamage(Damage,None,HitLocation, 15000.0 * Normal(velocity), 'burned');
Explode(HitLocation, Vect(0,0,0));
If Sliths had at this moment a better view of projectiles now I totaly rebuilded them including that LavaSlithProjectile using desired RemoteRole and a Botpack related decal.
Q: And this ought to be allright ?
A: Why such a big hurry ? Parent Projectile class is still wrong when a HitActor is called or such because ... Instigator might be dead already and has chances to be called :evil: ... F..¤©%#4 -.

User avatar
Nelsona
Posts: 998
Joined: Sun Mar 06, 2011 11:45 am
What is the middle number? (one, TWO, three): 2
ExtraAntiSpam: Blue
extraextraantispam: Yes
Location: Still at Keyboard
Contact:

Re: Need More Fixes ?

Post by Nelsona » Wed Feb 12, 2014 2:07 pm

Recall TeamAttack, I mean monsters acting as a team attacking. Getting bored to hunt until number of monsters reaches at 200 or such.

Better other way. Players are 4 pieces. Randomly sorted a multiplier in range 3-5, meaning 1 VS 3 or whatever 1 VS 5. Now example: 4 players × 4 random needed enemies = 16. If a monster is under threat and has visual contact with nearby 20 friends will trigger a chain attack calling help to reach at 16 monsters attacking at once. If that player is alone must be happy because has chances to score (or to run away). Each 5 seconds number of hunters is detected to gain the desired result. If more monsters are triggered by player (Bot), then ... pray for CPU, for Cooler, for... a man kind.

Code can be implemented in other MH architecture than default and has 0 errors in console. Need indeed a timer to control action, all is based on previously described chained attack. Anybody interested can contact me in private for such cute job.
Of course I forgot to mention, this is very interesting for maps pathed not empty stupid cubes, monster who cannot reach at enemy will groaning like moron being useless so I'm not bother to play anymore unpathed maps. I prefer 30 good maps rather than 300 trashes.

Code: Select all

				if ( NumAttackers < NeedAttackers )
				{
					if ( S.Enemy != None && !S.Enemy.IsA('ScriptedPawn') && VSize(S.Velocity) > 50 )
					{
						NumAttackers++;
						foreach S.VisibleCollidingActors (class 'ScriptedPawn',S1, 700) //Trigger other nearby monster properly.
						{
							if (S1 != None)
							{
								if ( (S1.Enemy == None || (FRand() > 0.7 && S1.Enemy != None && S1.Enemy != S.Enemy ) )
								&& S != S1 && S1.Health >= 1 && NumAttackers <= NeedAttackers
								&& ( S1.IsInstate('Waiting') || S1.IsInState('Wandering') ))
								{
									S1.Enemy = S.Enemy;
									S1.Hated = S.Hated;
									S1.GotoState('Attacking');
									if ( S.Enemy == S1.Enemy )
										NumAttackers++;
								}
								else 
									if (NumAttackers > NeedAttackers) break; //preserve safe break if reached to desired number of attackers even if are more
							}
						}
					}
				}
Adjust and/or use this as needed

User avatar
Nelsona
Posts: 998
Joined: Sun Mar 06, 2011 11:45 am
What is the middle number? (one, TWO, three): 2
ExtraAntiSpam: Blue
extraextraantispam: Yes
Location: Still at Keyboard
Contact:

Re: Need More Fixes ?

Post by Nelsona » Fri Feb 14, 2014 1:43 am

Looking at logs during testing I was curious if some error as: BotPack.Bot.SetOrders:344 Accesed None can be removed without to rework UT Bot. After 1 hour I got rid of it. Now Bot keeps console clean - I want to see what will occur for other game-types reworked by me last time.

Why did this happen ?
Probably some confusion about meaning of Attack Vs Freelance.
Bot with Freelance won't really spread these errors... because will do what it wants related to game instructions and enemy ignoring human commander or whatever Leader.
In Attack will try to deal with pawn supposed Leader bitching through monsters while it constantly builds PawnList checking that manure PlayerReplicationInfo.Team unexistent at monsters and not recommended at all. Code is solvable in other way reworking Bot, but this will involve a lot of changes and is more simple to gain speed switching A.I. controll from core. How works ? "Freelance" will deliver full power attack. "Attack" will be a kinda "Search And Destroy". Problem solved, resources saved.

Post Reply