Package Conformal discussion

Discussions about UT99
User avatar
sektor2111
Godlike
Posts: 6403
Joined: Sun May 09, 2010 6:15 pm
Location: On the roof.

Re: Package Conformal discussion

Post by sektor2111 »

IN THE SAME SetPawnDifficulty at tail of function you CAN ADD CLAMPERS RECHECKING scaling conditions and capping craps in normal limits. What is that hard ?
This doesn't use Core's clamping fucntions they are simple in RAW format:
Spoiler

Code: Select all

function SetPawnDifficulty( ScriptedPawn S ) //Pretty Slow - no longer recommended usage in AlwaysKeep
{
	local Texture Sk;
	local Texture ms0;
	local Texture ms1;
	local Texture ms2;
	local Texture ms3;
	local Texture ms4;
	local Texture ms5;
	local Texture ms6;
	local Texture ms7;
	local string MSH, Prj;
//	local float Timer;
//	local float F[2];
	local Actor XCPM;
	local XC_Mgmt XCM;

//	class'XC_CoreStatics'.static.Clock( F);

	if (!Level.bStartup)
		S.bCollideWorld=True;
	if (S.Health <= 0)
		GoTo JL1314;
/*	if ( Level.NetMode != NM_DedicatedServer )
		S.Shadow = Level.Spawn(class'MH_A_V2.Monster2Shadow',S);
*/
	if ( S.MenuName == "" )
		S.MenuName = GetItemName(String(S.class));
	if ( ( Caps(Left((S.MenuName),1)) == "A"
		|| Caps(Left((S.MenuName),1)) == "E"
		|| Caps(Left((S.MenuName),1)) == "I"
		|| Caps(Left((S.MenuName),1)) == "O"
		|| Caps(Left((S.MenuName),1)) == "U" )
		&& (Caps(Left((S.NameArticle),3)) == " A "
		|| Caps(Left((S.NameArticle),2)) == "A " 
		|| Caps(Left((S.NameArticle),2)) == " A"
		|| Caps(Left((S.NameArticle),1)) == "A") )
		S.NameArticle = " an ";

	S.DamageScaling = S.DamageScaling * DiffScale / 100;
	if ( S.Mesh != None )
	{
		if ( S.Mesh != S.Class.Default.Mesh )
			S.Mesh = S.Class.Default.Mesh;
		MSH = Caps(S.Mesh);
//		log ("Mesh stored is "$MSH);
	}
	else MSH = Caps(Tz);
	if ( S.RangedProjectile != None )
	{
		Prj = Caps(S.RangedProjectile);
	}
	else
		Prj = Caps(Tz);
//	log ("Projectile for "$S$" stored is "$Prj);
	if (S.PeripheralVision < -1.6) S.PeripheralVision = -1.6;
	if (S.PeripheralVision > -0.2) S.PeripheralVision = -0.2;
	if (S.Aggressiveness < 0.8) S.Aggressiveness = 0.8;
	S.Health = (S.Health * DiffScale) / 100;
	if ( MonsterMultiplier > 1 )
	{
		if (S.IsA('ExFly'))
			goto MoveOn;
		if (S.IsA('ExRat'))
			goto MoveOn;
		S.Health = Clamp(S.Health*MonsterMultiplier,MinMonsterHealth,MaxMonsterHealth); //Use Minimum-Health at once with Multiplier
	}
MoveOn:
	S.SightRadius = (S.Default.SightRadius * DiffScale) / 100;
//	S.HearingThreshold = (S.Default.HearingThreshold * DiffScale) / 100;
	S.Aggressiveness = (S.Default.Aggressiveness * DiffScale) / 100;
	S.MeleeRange = S.Default.MeleeRange; //Yea, idiots ! Fixed craps right now :P !
//	S.ReFireRate = (S.Default.ReFireRate * DiffScale) / 100;
	S.CombatStyle = (S.Default.CombatStyle * DiffScale) / 100;
	S.ProjectileSpeed = (S.Default.ProjectileSpeed * DiffScale) / 100;
	S.GroundSpeed = (S.Default.GroundSpeed * DiffScale) / 100;
	S.AirSpeed = (S.Default.AirSpeed * DiffScale) / 100;
	S.WaterSpeed = (S.Default.WaterSpeed * DiffScale) / 100;
	S.JumpZ = (S.JumpZ * Diffscale) / 100; //... Done, small adjustments changing style.

	if (S.GroundSpeed > 500) 
		S.GroundSpeed = 500;
	if (S.HearingThreshold < 0.1)
		S.HearingThreshold = 0.1;
	if (S.HearingThreshold > 0.8)
		S.HearingThreshold = 0.8;
	if (S.SightRadius < 3500)
		S.SightRadius = 3500;
	if (S.SightRadius > 4500)
		S.SightRadius = 4500;
	if (S.AccelRate > 700)
		S.AccelRate = 700;
	if (S.AirSpeed > 500)
		S.AirSpeed = 500;
	if (S.WaterSpeed > 400)
		S.WaterSpeed = 400;
	if (S.CombatStyle > 0.9)
		S.CombatStyle = 0.9;
	if (S.CombatStyle < 0.3)
		S.CombatStyle = 0.3;
	if (S.Aggressiveness > 1.0)
		S.Aggressiveness = 1.0;
	if (S.Aggressiveness < 0.5)
		S.Aggressiveness = 0.5;
	if ( MH2.bStartedHunt )
		S.AttitudeToPlayer = ATTITUDE_Frenzy;

	if (Right((MSH),6)=="SQUID1")
//	if (S.Mesh == LodMesh 'Squid1')
	{
		ms0 = S.MultiSkins[0];
		ms1 = S.MultiSkins[1];
		ms2 = S.MultiSkins[2];
		ms3 = S.MultiSkins[3];
		ms4 = S.MultiSkins[4];
		ms5 = S.MultiSkins[5];
		ms6 = S.MultiSkins[6];
		ms7 = S.MultiSkins[7];
		if (S.Skin != None && S.Skin != Texture'UnrealI.Skins.JSquid1')
			Sk = S.Skin;
		else
			Sk = Texture'UnrealI.Skins.JSquid1';
		S.Mesh = LodMesh 'ExSquid1';
		S.Skin = Sk;
		S.MultiSkins[0] = ms0;
		S.MultiSkins[1] = ms1;
		S.MultiSkins[2] = ms2;
		S.MultiSkins[3] = ms3;
		S.MultiSkins[4] = ms4;
		S.MultiSkins[5] = ms5;
		S.MultiSkins[6] = ms6;
		S.MultiSkins[7] = ms7;
//		S.Fatness = S.Default.Fatness;
	}
	if (Right((MSH),7)=="NALICOW")
//	if (S.Mesh == LodMesh 'NaliCow')
	{
		ms0 = S.MultiSkins[0];
		ms1 = S.MultiSkins[1];
		ms2 = S.MultiSkins[2];
		ms3 = S.MultiSkins[3];
		ms4 = S.MultiSkins[4];
		ms5 = S.MultiSkins[5];
		ms6 = S.MultiSkins[6];
		ms7 = S.MultiSkins[7];
		if (S.Skin != None && S.Skin != Texture'UnrealShare.Skins.JCow1')
			Sk = S.Skin;
		else
			Sk = Texture'UnrealShare.Skins.JCow1';
		S.Mesh = LodMesh 'ExNaliCow';
		S.Skin = Sk;
		S.MultiSkins[0] = ms0;
		S.MultiSkins[1] = ms1;
		S.MultiSkins[2] = ms2;
		S.MultiSkins[3] = ms3;
		S.MultiSkins[4] = ms4;
		S.MultiSkins[5] = ms5;
		S.MultiSkins[6] = ms6;
		S.MultiSkins[7] = ms7;
		S.Fatness = S.Default.Fatness;
//		S.Style = STY_Masked;
	}
	if (Right((MSH),4)=="FLYM")
//	if (S.Mesh == LodMesh 'FlyM')
	{
		ms0 = S.MultiSkins[0];
		ms1 = S.MultiSkins[1];
		ms2 = S.MultiSkins[2];
		ms3 = S.MultiSkins[3];
		ms4 = S.MultiSkins[4];
		ms5 = S.MultiSkins[5];
		ms6 = S.MultiSkins[6];
		ms7 = S.MultiSkins[7];
		if (S.Skin != None && S.Skin != Texture'UnrealShare.Skins.JFly1')
			Sk = S.Skin;
		else
			Sk = Texture'UnrealShare.Skins.JFly1';
		S.Mesh = LodMesh 'ExFlyM';
		S.Skin = Sk;
		S.MultiSkins[0] = ms0;
		S.MultiSkins[1] = ms1;
		S.MultiSkins[2] = ms2;
		S.MultiSkins[3] = ms3;
		S.MultiSkins[4] = ms4;
		S.MultiSkins[5] = ms5;
		S.MultiSkins[6] = ms6;
		S.MultiSkins[7] = ms7;
		S.Fatness = S.Default.Fatness;
//		S.Style = STY_Masked;
	}
	if (Right((MSH),6)=="SLITH1")
//	if (S.Mesh == LodMesh 'Slith1')
	{
		ms0 = S.MultiSkins[0];
		ms1 = S.MultiSkins[1];
		ms2 = S.MultiSkins[2];
		ms3 = S.MultiSkins[3];
		ms4 = S.MultiSkins[4];
		ms5 = S.MultiSkins[5];
		ms6 = S.MultiSkins[6];
		ms7 = S.MultiSkins[7];
		if (S.Skin != None && S.Skin != Texture'UnrealShare.Skins.JSlith1')
			Sk = S.Skin;
		else
			Sk = Texture'UnrealShare.Skins.JSlith1';
		S.Mesh = LodMesh 'ExSlith1';
		S.Skin = Sk;
		S.MultiSkins[0] = ms0;
		S.MultiSkins[1] = ms1;
		S.MultiSkins[2] = ms2;
		S.MultiSkins[3] = ms3;
		S.MultiSkins[4] = ms4;
		S.MultiSkins[5] = ms5;
		S.MultiSkins[6] = ms6;
		S.MultiSkins[7] = ms7;
		S.Fatness = S.Default.Fatness;
//		S.Style = STY_Masked;
	}
	if (Right((MSH),6)=="TITAN1")
//	if (S.Mesh == LodMesh 'Titan1')
	{
		ms0 = S.MultiSkins[0];
		ms1 = S.MultiSkins[1];
		ms2 = S.MultiSkins[2];
		ms3 = S.MultiSkins[3];
		ms4 = S.MultiSkins[4];
		ms5 = S.MultiSkins[5];
		ms6 = S.MultiSkins[6];
		ms7 = S.MultiSkins[7];
		if (S.Skin != None && S.Skin != Texture'UnrealI.Skins.JTitan1')
			Sk = S.Skin;
		else
			Sk = Texture'UnrealI.Skins.JTitan1';
		S.Mesh = LodMesh 'ExTitan1';
		S.Skin = Sk;
		S.MultiSkins[0] = ms0;
		S.MultiSkins[1] = ms1;
		S.MultiSkins[2] = ms2;
		S.MultiSkins[3] = ms3;
		S.MultiSkins[4] = ms4;
		S.MultiSkins[5] = ms5;
		S.MultiSkins[6] = ms6;
		S.MultiSkins[7] = ms7;
		S.Fatness = S.Default.Fatness;
	}
	if (Right((MSH),7)=="SPINNER")
//	if ( S.Mesh == LodMesh 'Spinner' )
	{
		ms0 = S.MultiSkins[0];
		ms1 = S.MultiSkins[1];
		ms2 = S.MultiSkins[2];
		ms3 = S.MultiSkins[3];
		ms4 = S.MultiSkins[4];
		ms5 = S.MultiSkins[5];
		ms6 = S.MultiSkins[6];
		ms7 = S.MultiSkins[7];
		sk = S.Skin;
		S.Mesh = LodMesh 'ExSpinner';
		if ( S.Skin != None && S.Skin != S.Default.Skin )
			S.Skin = Sk;
		S.MultiSkins[0] = ms0;
		S.MultiSkins[1] = ms1;
		S.MultiSkins[2] = ms2;
		S.MultiSkins[3] = ms3;
		S.MultiSkins[4] = ms4;
		S.MultiSkins[5] = ms5;
		S.MultiSkins[6] = ms6;
		S.MultiSkins[7] = ms7;
		S.Fatness = S.Default.Fatness;
	}

	if ( Pupae(S) != None )
	{
		if (S.RangedProjectile == None)
			S.bHasRangedAttack = False;
	}
	if ( Manta(S) != None )
	{
		if (S.RangedProjectile == None)
			S.bHasRangedAttack = False;
	}
	if ( Mercenary(S) != None )
	{
		Mercenary(S).bHasInvulnerableShield = False;
		Mercenary(S).invulnerableCharge = 0.2;
	}
	if (MH2.bMProjTweak)
	{
	if (Right((Prj),15)=="BRUTEPROJECTILE")
	{
		S.RangedProjectile = class 'MH_A_V2.ExBruteProjectile';
		goto EndProj;
	}
//------------------
	if (Right((Prj),10)=="MERCROCKET")
	{
		S.RangedProjectile = class 'MH_A_V2.ExMercRocket';
		goto EndProj;
	}
//------------------
	if (Right((Prj),14)==".WARLORDROCKET")
	{
		S.RangedProjectile = class 'MH_A_V2.ExWarlordRocket';
		goto EndProj;
	}
//------------------
	if (Right((Prj),11)=="GASBAGBELCH")
	{
		S.RangedProjectile = class 'MH_A_V2.mhGasBagBelch';
		goto EndProj;
	}
	if (Right((Prj),9)=="KRAALBOLT")
	{
		S.RangedProjectile = class 'MH_A_V2.mhKraalBolt';
		goto EndProj;
	}
	if (Right((Prj),14)=="ELITEKRALLBOLT")
	{
		S.RangedProjectile = class 'MH_A_V2.mhEliteKrallBolt';
		goto EndProj;
	}
	if (Right((Prj),16)=="SKAARJPROJECTILE")
	{
		S.RangedProjectile = class 'MH_A_V2.mhSkaarjProjectile';
		goto EndProj;
	}
	if (Right((Prj),15)=="QUEENPROJECTILE")
	{
		S.RangedProjectile = class 'MH_A_V2.mhqueenprojectile';
		goto EndProj;
	}
	if (Right((Prj),18)=="TENTACLEPROJECTILE")
	{
		S.RangedProjectile = class 'MH_A_V2.mhTentacleProjectile';
		goto EndProj;
	}
//-- Expect Lava Bullshit modifications first, in order to be slapped down
	if (Right((Prj),19)=="LAVASLITHPROJECTILE")
	{
		S.RangedProjectile = class 'MH_A_V2.mhLavaSlithProjectile';
		goto EndProj;
	}
//----------------
	if (Right((Prj),15)=="SLITHPROJECTILE")
	{
		S.RangedProjectile = class 'MH_A_V2.mhSlithProjectile';
		goto EndProj;
	}
	if (Right((Prj),13)=="SEEKINGROCKET")
	{
		S.RangedProjectile = class 'MH_A_V2.MHSeekingRocket';
		goto EndProj;
	}
	if (Right((Prj),10)=="RAILROCKET")
	{
		S.RangedProjectile = class 'MH_A_V2.MHTazerProj';
		goto EndProj;
	}
	if (Right((Prj),7)==".ROCKET")
	{
		S.RangedProjectile = class 'MH_A_V2.MHRocket';
		goto EndProj;
	}
	if (Right((Prj),9)=="TAZERPROJ")
	{
		S.RangedProjectile = class 'MH_A_V2.MHTazerProj';
		goto EndProj;
	}
	if (Right((Prj),10)=="RAZORBLADE")
	{
		S.RangedProjectile = class 'MH_A_V2.MHRazorBlade';
		goto EndProj;
	}
	if (Right((Prj),15)=="RAZORBLADEALT")
	{
		S.RangedProjectile = class 'MH_A_V2.MHRazorBladeAlt';
		goto EndProj;
	}
	if (Right((Prj),14)=="DISPERSIONAMMO" || Right((Prj),6)=="PLASMA")
	{
		S.RangedProjectile = class 'MH_A_V2.MHOSDispersionAmmo';
		goto EndProj;
	}
	if (Right((Prj),10)=="ENERGYBOLT")
	{
		S.RangedProjectile = class 'MH_A_V2.MHEnergyBolt';
		goto EndProj;
	}
	if (Right((Prj),6)=="DAMMO2")
	{
		S.RangedProjectile = class 'MH_A_V2.MHOSDAmmo2';
		goto EndProj;
	}
	if (Right((Prj),6)=="DAMMO3")
	{
		S.RangedProjectile = class 'MH_A_V2.MHOSDAmmo3';
		goto EndProj;
	}
	if (Right((Prj),6)=="DAMMO4")
	{
		S.RangedProjectile = class 'MH_A_V2.MHOSDAmmo4';
		goto EndProj;
	}
	if (Right((Prj),6)=="DAMMO5")
	{
		S.RangedProjectile = class 'MH_A_V2.MHOSDAmmo5';
		goto EndProj;
	}
	if (Right((Prj),9)=="FLAKSHELL")
	{
		S.RangedProjectile = class 'MH_A_V2.MHFlakShell';
		goto EndProj;
	}
	if (Right((Prj),17)=="STINGERPROJECTILE")
	{
		S.RangedProjectile = class 'MH_A_V2.MHStingerProjectile';
		goto EndProj;
	}
	if (Right((Prj),8)==".BIODROP")
	{
		S.RangedProjectile = class 'MH_A_V2.MHBioGel';
		goto EndProj;
	}
	if (Right((Prj),9)=="BIGBIOGEL")
	{
		S.RangedProjectile = class 'MH_A_V2.MHBigBiogel';
		goto EndProj;
	}
	if (Right((Prj),7)==".BIOGEL")
	{
		S.RangedProjectile = class 'MH_A_V2.MHBioGel';
		goto EndProj;
	}
	if (Right((Prj),11)=="MASTERCHUNK")
	{
		S.RangedProjectile = class 'MH_A_V2.MHMasterChunk';
		goto EndProj;
	}
	if (Right((Prj),6)=="CHUNK1")
	{
		S.RangedProjectile = class 'MH_A_V2.MHChunk1';
		goto EndProj;
	}
	if (Right((Prj),6)=="CHUNK2")
	{
		S.RangedProjectile = class 'MH_A_V2.MHChunk2';
		goto EndProj;
	}
	if (Right((Prj),6)=="CHUNK3")
	{
		S.RangedProjectile = class 'MH_A_V2.MHChunk3';
		goto EndProj;
	}
	if (Right((Prj),6)=="CHUNK4")
	{
		S.RangedProjectile = class 'MH_A_V2.MHChunk4';
		goto EndProj;
	}
	if (Right((Prj),8)==".GRENADE")
	{
		S.RangedProjectile = class 'MH_A_V2.MHgrenade';
		goto EndProj;
	}
	}

EndProj:
	if (S.BaseEyeHeight < S.CollisionHeight/1.5)
		S.BaseEyeHeight = S.CollisionHeight/1.5;
	S.Intelligence = BRAINS_HUMAN;
	S.bInitialFear=False;
	S.Skill = MySkill;
	if (S.CarcassType != None)
		S.CarcassType = class'MH_A_V2.ExCreatureCarcass';
	if ( S.bCanWalk && !S.bCanFly )
		S.SetPhysics(PHYS_Falling);
	S.NetUpdateFrequency=20;
	S.NetPriority=3.000000;
/*
	if ( bExtendedXC )
	{
		if ( S.DrawScale > 2 ||
			(S.class.default.CollisionHeight > 45 && S.DrawScale > 0.5 ) ||
			(( S.class.default.CollisionHeight < S.class.default.CollisionRadius ) && S.DrawScale >= 1 ) )
		{
			XCM = Spawn(class'XC_Mgmt',S,,S.Location+vect(0,0,50));
			XCPM = Spawn(XC_Class,S,,S.Location+vect(0,0,40));
			if (XCM != None && XCPM != None)
				XCM.A = XCPM;
		}
	}
*/
//	log (S$" has skill level "$S.Skill);
	Sk = None;
	ms0 = None;
	ms1 = None;
	ms2 = None;
	ms3 = None;
	ms4 = None;
	ms5 = None;
	ms6 = None;
	ms7 = None;

//	Timer = class'XC_CoreStatics'.static.UnClock( F);
//	Log("Pawn Difficulty setup took: "$Timer$" seconds.");
JL1314:
}
These codes are already posted if search forum check for package string and there is the deal with StartMatch capture and others as well... GOLD which is your code basement is pretty outdated. If a MH has run-time replacements looking properly, for sure me and other dude has these fine tunes which don't exist in any of those mods a la 2012 regarding to colors used and fancy looking. :|

Edit:
Right now I was looking for completing Bot Support in some map for playing OFF-Line. It do not seems to worth efforts. Map uses whatever Gauntlet package (that probably can be conformed into a fixed one), and that package is not for being used in MH. The same shit done over years, if exist a game-type with some monsters, every "mapper" is trying that in MonsterHunt even if that thing has nothing to do with MonsterHunt to not mention spamming tick errors for no purpose.

Code: Select all

function Died(pawn Killer, name damageType, vector HitLocation)
{
	u4egauntlet(level.game).MonsterKilled(Value,Killer,self); //Oh, Really ? Where is this in MH, geniuses ?
	super.Died(Killer, damageType, HitLocation);
}
Probably will be fun to use a few console commands and some key in Editor:

Code: Select all

set ScriptedPawn bSelected 1
and Pressing "Delete" Key and then... using normal creatures tuned VIA MyLevel if they have to...
User avatar
sektor2111
Godlike
Posts: 6403
Joined: Sun May 09, 2010 6:15 pm
Location: On the roof.

Re: Package Conformal discussion

Post by sektor2111 »

Back to this chapter... I think happiness doesn't take 3 months.

Let me see a sample. toward packages conformed - for NON STOCK files is a BAD THING.
Server A - admin using a Conformed Hunters.U having Generation 2
Server B - admin using another Conformed Hunters.U Generation 2 - did not cooperate with admin of server A - AS USUAL in UT.
If clean player is downloading some file Gen 2, probably is messing the other Gen 2 file. It looks like not in all cases player is rejected but game looks pretty much borked - HUD seems gone as first bad sign.

Player needs cached/loaded original Gen 1 package and nothing else like a Gen 1 - here we might have a bunch of others.
In this case, even is a nasty thing, mismatch is solution, evil but healthy - NON Conformed file; else Player will never figure what is going on.

For stock, oh well, is a big difference, nobody can start UT without Engine, UnrealShare, BotPack, UnrealI so these previous identical packages for all players are always compatible with a well conformed stuff doesn't matter how many admins are doing their own packages, ALL of them are compatible with Player's stock and... we don't have any new download...

So, conforming solution for non stock is only a nice dream when 4 morons are doing 4 different Gen 2 types of the same named file... everything goes down-hill in such case...
Post Reply