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:
}
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);
}
Code: Select all
set ScriptedPawn bSelected 1