ProjectileSpeed inflicts some errors in client or not depending on what Monster does. It has bLeadTarget if monster is high skilled and is a "Big One" or else the majority of servers are not having anything here anyway.
Code: Select all
if ( Skill > 2 )
bLeadTarget = true;
else if ( (Skill == 0) && (Health < 500) )
{
bLeadTarget = false;
ReFireRate = 0.75 * ReFireRate;
}
Skill (real pawn skill) is linked with gameinfo's
Difficulty and this can be used in Run-Line else all is ZERO. Exactly, I saw MonsterHunt servers having monster "boosted" but NO SKILL. You can check yourself what monster does with bLeadTarget, Monster without this value won't predict anything, they just fire against enemy.
Code: Select all
...
var(AI) float Skill; // skill, scaled by game difficulty (add difficulty to this value)
....
if ( Level.Game != None )
Skill += Level.Game.Difficulty;
Skill = FClamp(Skill, 0, 3);
PreSetMovement();
If difficulty is Not SET, this byte is Zero heading to ZERO SKILL which will head to not "bLeadTarget" - a clumsy and dumb monster more exactly. In MH servers which I maintain this byte is ESSENTIAL, I got tired playing years against monsters firing only behind me. It's more entertaining when they attempt to predict you and you will need to change direction or you die in seconds...
Default properties for an actor which is a ServerPackage is known by client and UE1 won't replicate known values which are not changing in time. In other hand an actor will have
Location more or less replicated for Projectiles - a good network it's also important, discussion is longer here and off-topic. Configuration for such a mod where access to run-line is not easy (several services are having this), you will need a new configurable variable and altering this byte. It has to be FAST because this deal it's in PreBeginPlay - usually can be used InitGame and it's what I did to my older MH mods, linking somehow that MH specific "Skill" with Level.Game.Difficulty for earning a True skill for both monsters from map and those Spawned later by Factories...
Code: Select all
event InitGame( string Options, out string Error )
{
...
...
if (SkillMonster > 7) SkillMonster = 7;
if (SkillMonster < 1) SkillMonster = 1;
if ( SkillMonster == 1 )
Difficulty = 0;
if (SkillMonster == 2 || SkillMonster == 3)
Difficulty = 1;
if (SkillMonster == 4 || SkillMonster == 5)
Difficulty = 2;
if (SkillMonster == 6 || SkillMonster == 7)
Difficulty = 3;
...
...
Errata: I see ProjectileSpeed a variable in class
ScriptedPawn over here and NOT PAWN. It surprises me that you have it in Pawn...