MapChecker

Tutorials and discussions about Mapping - Introduce your own ones!
Buggie
Godlike
Posts: 2641
Joined: Sat Mar 21, 2020 5:32 am

Re: MapChecker

Post by Buggie »

Then you can select all plants and uncheck this flag (bCollideWorld). Or somehow change collision of it. If collision not same as default, there no warning.

You can't place InventorySpots manually. So this pointless tell this. It just hint about missing it. This mean you need rebuild paths.
User avatar
Barbie
Godlike
Posts: 2765
Joined: Fri Sep 25, 2015 9:01 pm
Location: moved without proper hashing

Re: MapChecker

Post by Barbie »

Suggestion for check: is ScriptedPawn.RangedProjectile of class projectile?
code

Code: Select all

function bool CheckRangedProjectile(out int ErrCount) {
/*********************************************************************************************
Checks if ScriptedPawn.RangedProjectile is a projectile and issues a warning for other classes.
ScriptedPawn.RangedProjectile==None may be correct.
*********************************************************************************************/
local ScriptedPawn SP;

	ErrCount = 0;
	foreach AllActors(class'ScriptedPawn', SP)
	{
		if (SP.RangedProjectile != None && ! ClassIsChildOf(SP.RangedProjectile, class'Projectile'))
		{
			logger(LOG_Warning, "CheckRangedProjectile", SP $ ".RangedProjectile ==" @ SP.RangedProjectile @ "is not of type 'Projectile'");
			ErrCount++;
		}
	}
	return ErrCount == 0;
}
"Multiple exclamation marks," he went on, shaking his head, "are a sure sign of a diseased mind." --Terry Pratchett
Buggie
Godlike
Posts: 2641
Joined: Sat Mar 21, 2020 5:32 am

Re: MapChecker

Post by Buggie »

Added more checks:

Code: Select all

	checkWeaponLockerWeaponOrder();
Improved some checks:
- checkScriptedPawnRangedProjectile

Add modular system for connect modules which make check required create dependency.

Updated in first post: viewtopic.php?f=5&t=14809
User avatar
Barbie
Godlike
Posts: 2765
Joined: Fri Sep 25, 2015 9:01 pm
Location: moved without proper hashing

Re: MapChecker

Post by Barbie »

I noticed your comment "Plasma too?" - yes, that also needs a fix, because Plasma@UnrealShare.u has a damage of 0 (do devs have forgotten to set property?)

FYI my fix of RangedProjectiles

Code: Select all

function int FixRangedProjectiles(ELogType LogLevel) {
/*******************************************************************************
Changes RangedProjectile for all ScriptedPawns, if RangedProjectile.Class is
equal to:
* "class'UnrealShare.Plasma'" -> ScriptedPawn.Default.RangedProjectile
* "class'BotPack.GuidedWarShell'" -> ScriptedPawn.Default.RangedProjectile
* "class'UnrealShare.EnergyBolt'" -> Class'EnergyBoltSB'
* "class'UnrealShare.ShellCase'" -> ScriptedPawn.Default.RangedProjectile

If a stock SkaarjTrooper has no weapon, the default weapon is assigned.

Log a warning if
	ScriptedPawn.bHasRangedAttack != ScriptedPawn.Default.bHasRangedAttack
	ScriptedPawn.RangedProjectile != None && ! ScriptedPawn.bHasRangedAttack
Returns the number of modified ScriptedPawns.
*******************************************************************************/
local ScriptedPawn SP;
local int result;

	// log("Entered FixRangedProjectiles, Level.PawnList=" $ Level.PawnList);

	foreach AllActors(class'ScriptedPawn', SP)
		if (SkaarjTrooper(SP) != None && SkaarjTrooper(SP).WeaponType == None)
		{
			if      (SP.Class == class'SkaarjTrooper')  SkaarjTrooper(SP).WeaponType  = class'SkaarjTrooper'.Default.WeaponType;
			else if (SP.Class == class'SkaarjGunner')   SkaarjGunner(SP).WeaponType    = class'SkaarjGunner'.Default.WeaponType;
			else if (SP.Class == class'SkaarjInfantry') SkaarjInfantry(SP).WeaponType  = class'SkaarjInfantry'.Default.WeaponType;
			else if (SP.Class == class'SkaarjOfficer')  SkaarjOfficer(SP).WeaponType   = class'SkaarjOfficer'.Default.WeaponType;
			else if (SP.Class == class'SkaarjSniper')   SkaarjSniper(SP).WeaponType    = class'SkaarjSniper'.Default.WeaponType;
			// other types are custom and should not be changed
		}
		else if (SP.RangedProjectile == class'UnrealShare.Plasma')
			FixRangedProjectile(LOG_Info, SP, SP.Default.RangedProjectile, result);
		else if (SP.RangedProjectile == class'BotPack.GuidedWarShell')
			FixRangedProjectile(LOG_Info, SP, SP.Default.RangedProjectile, result);
		else if (SP.RangedProjectile == class'UnrealShare.EnergyBolt')
			FixRangedProjectile(LOG_Info, SP, Class'EnergyBoltSB', result);
		else if (SP.RangedProjectile == class'UnrealShare.ShellCase' || SP.RangedProjectile == class'Botpack.UT_ShellCase')
			FixRangedProjectile(LOG_Info, SP, SP.Default.RangedProjectile, result);
		// if *RangedProjectile==None* then *bHasRangedAttack* is not necessarily FALSE - see Titan for example. Such cases cannot be detected.
		else if (SP.bHasRangedAttack != SP.Default.bHasRangedAttack)
			logger(LOG_Warning, "FixRangedProjectiles", "bHasRangedAttack=" $ SP.bHasRangedAttack @ "is not the default value for" @ SP $ "; RangedProjectile=" $ SP.RangedProjectile);
		else if (SP.RangedProjectile != None && ! SP.bHasRangedAttack)
			logger(LOG_Warning, "FixRangedProjectiles", "bHasRangedAttack=false for" @ SP @ "although it has a RangedProjectile=" $ SP.RangedProjectile);
	return result;
}

----- snip -----

class EnergyBoltSB extends EnergyBolt;


simulated function Explode(vector HitLocation, vector HitNormal) {
/******************************************************************************
EnergyBolt.Explode() is not "simulated".
******************************************************************************/
	Destroy();
}


defaultproperties {
	RemoteRole=ROLE_SimulatedProxy
	LifeSpan=7
}

"Multiple exclamation marks," he went on, shaking his head, "are a sure sign of a diseased mind." --Terry Pratchett
Buggie
Godlike
Posts: 2641
Joined: Sat Mar 21, 2020 5:32 am

Re: MapChecker

Post by Buggie »

Plasma work for some scripted stuff. It blown and make damage if touch DispersionAmmo

Code: Select all

simulated function Explode(vector HitLocation, vector HitNormal)
{
	if ( Role == ROLE_Authority )
		HurtRadius(Damage,150.0, 'exploded', MomentumTransfer, HitLocation );	
	Destroy();
}

simulated function ProcessTouch (Actor Other, vector HitLocation)
{
	If ( (Other!=Instigator) && Other.IsA('DispersionAmmo') )
		Explode(HitLocation, HitLocation);
}
   
Auto merged new post submitted 3 minutes later
Improved some checks:
- checkScriptedPawnRangedProjectile

Updated in first post: viewtopic.php?f=5&t=14809
User avatar
Barbie
Godlike
Posts: 2765
Joined: Fri Sep 25, 2015 9:01 pm
Location: moved without proper hashing

Re: MapChecker

Post by Barbie »

But Plasma has a damage of zero - then HurtRadius(Damage,150.0, …) does not really hurt.
And if it had a none zero damage: would really anybody shoot other player's or ScriptedPawns' dispersion pistol's projectiles? :shock:
"Multiple exclamation marks," he went on, shaking his head, "are a sure sign of a diseased mind." --Terry Pratchett
Buggie
Godlike
Posts: 2641
Joined: Sat Mar 21, 2020 5:32 am

Re: MapChecker

Post by Buggie »

Idk. it look as weird ancient stuff or hack from Unreal.
Buggie
Godlike
Posts: 2641
Joined: Sat Mar 21, 2020 5:32 am

Re: MapChecker

Post by Buggie »

Improved some checks:
- checkMoverMoveTime

Updated in first post: viewtopic.php?f=5&t=14809
Red_Fist
Godlike
Posts: 2163
Joined: Sun Oct 05, 2008 3:31 am

Re: MapChecker

Post by Red_Fist »

Barbie wrote: Mon May 29, 2023 10:35 pm But Plasma has a damage of zero - then HurtRadius(Damage,150.0, …) does not really hurt.
And if it had a none zero damage: would really anybody shoot other player's or ScriptedPawns' dispersion pistol's projectiles? :shock:
Long time ago I sort of gave the thought (total nube), and after reading some code, the whole dispersion thing only works for ,,,momentum more-so,,, but somehow it delivers damage like a bullet. (based on momentum)

Something more, a lot more, going on with that weapon.

I could be full of shit, but ,,,,,,,,,,,,,,,,,
Binary Space Partitioning
User avatar
sektor2111
Godlike
Posts: 6395
Joined: Sun May 09, 2010 6:15 pm
Location: On the roof.

Re: MapChecker

Post by sektor2111 »

Plasma is not a Dispersion projectile - it looks like a sort of, but it's not the same, it's another class and frankly useless for both human player and A.I. players/monsters - and there are others too... We can build elsewhere a list with these junks that are useless in maps or... they are not exactly mapping actors... because it's off-topic to discuss them here.
Buggie
Godlike
Posts: 2641
Joined: Sat Mar 21, 2020 5:32 am

Re: MapChecker

Post by Buggie »

Improved some checks:
- checkPathNodeClose

Updated in first post: viewtopic.php?f=5&t=14809
Buggie
Godlike
Posts: 2641
Joined: Sat Mar 21, 2020 5:32 am

Re: MapChecker

Post by Buggie »

Added more checks:

Code: Select all

	checkMoverLiftInitialState();
Updated in first post: viewtopic.php?f=5&t=14809
Buggie
Godlike
Posts: 2641
Joined: Sat Mar 21, 2020 5:32 am

Re: MapChecker

Post by Buggie »

Added more checks:

Code: Select all

	checkBadStandingCount();
Updated in first post: viewtopic.php?f=5&t=14809
Red_Fist
Godlike
Posts: 2163
Joined: Sun Oct 05, 2008 3:31 am

Re: MapChecker

Post by Red_Fist »

When it says pathbides are too high or too low with that number.

What does the number mean

1 UU unit ?
It finds a lot of those but the numbers seem so low, like 12, or 1, ur 40, how large does the number have to be to be worth messing around with all those nodes. ?

It has helped me on things and fixxed most of them.

Not sure about scaled movers complaint or the , no delete complaints, like , smallsmokepuff.
Binary Space Partitioning
User avatar
OjitroC
Godlike
Posts: 3581
Joined: Sat Sep 12, 2015 8:46 pm

Re: MapChecker

Post by OjitroC »

Can you explain what BadStandingCount is/means? Thanks.