Meh, even if you have skill/difficulty 0 without making sure about relevance you will have some chances to break maps, Yeah, I had troubles here because Shrimp has a BAD option with shadow in server. I really don't need his original deal but STILL need relevance - mapper has not set nothing as for another case.
Next point - another map (and not the single) was one of those done with dinosaurs all counted with a default counter having 254. Map was fixed and over-fixed not because of monsters setup, but because some of them were gone. Even if you have difficulty 0 - for easy hunting, you can have all Monsters over there. I don't get these complaints for not using at least a CheckReplacement toward monster relevance, WHY NOT ?
SKILL dependent on Difficulty (which I have 3 - max for creatures in run-line) is capped by creature to the same 3 in some PreBeginPlay if I well recall. However by waiting and assigning a monster tracker for creature living shortly, this actor can boost creature after prebeginplay to whatever skill you need. But... exist a problem, tested by me in 2013 if I well recall, monster having real skill 7 will always fail target, it's actually dumber than sh!t. That's why Epic capped them at 3 because the aiming formula is crapped up and goes nowhere - some "modders" proved how much garbage can do with some whatever MonsterLord unable to aim player at all. Stupidity at full power. For Bot it's not the same story, Bot goes evil based on its own difficulty deal but Shrimp has found a way for giving some FALSE skill to monster which actually at value 2 it's USELESS processing some math entirely without purpose when Bot skill is being chosen.
Code: Select all
case 2:
DiffScale = 100;
break;
...
S.Health = (S.Health * DiffScale) / 100; //3 * 100 / 100 = 3 - the same sh!t.
I did not modify too much what Shrimp did, but I moved this into BaseMutator for being called at once with relevance and getting rid of this useless parameter as long as it's known and won't need other processing, because here I had to cap mapping craps done to monsters so I added other codes where Shrimp was only blabbering especially at damage byte.
These are easy to figure without any WIKI, codes are there, READABLE so We can summarize pawn's existence and relevance. Let's say that I don't think that some pawn is removed when difficulty is 0 and not removed when difficulty is 4 if you do the right relevance deal - maybe admin wants an easy MH, but also HAVING Monsters. Why this removal ? Else 4 don't seems very logic
Code: Select all
var byte Difficulty; // 0=easy, 1=medium, 2=hard, 3=very hard.
Said GameInfo
Then Pawn
Code: Select all
if ( Level.Game != None )
Skill += Level.Game.Difficulty;
Skill = FClamp(Skill, 0, 3);
What WIKI do we need to figure that difficulty of creature is limited at 3 regarding to some dumb value performed in run-line ? 4 is a non-sense. Where did you get this 4 from ? Just to pass that filter ? Seriously ? C'mon, IsRelevant can be helpful as well and monsters can be changed speeding up relevance checking and preventing those tests which are exhaustive at 3000 monsters anyway.
Also I'm not sure if I well recall about a HighDetail actor as not being removed in a LowDetail game - this might be entertaining to study. For all of you working with MH, I have ALL monsters even if difficulty is 0 or 1 - yeah, just because a "Return True" wherever is placed is VERY HELPFUL and I did not see many maps with monsters having that filter screwed and you can replace monsters anyway in other formula than default garbage based on CheckReplacement. Be serious, that's not an answer. We have a MonsterHunt game so definitely the purpose is to have monsters - ALL Monsters, doesn't matter which MH version I'm firing. No break and no crap regarding to difficulty setup. Want my reason for using difficulty 3 in run-line in all servers ignited by me ? I'm doing this for a few years, take a look at this:
Code: Select all
if ( Skill > 2 )
bLeadTarget = true;
else if ( (Skill == 0) && (Health < 500) )
{
bLeadTarget = false;
ReFireRate = 0.75 * ReFireRate;
}
if ( bIsBoss )
Health = Health + 0.15 * Skill * Health;
This is ScriptedPawn root, skilled monsters are superior.
Reading Krall class:
Code: Select all
if ( Skill == 0 )
ProjectileSpeed *= 0.85;
else if ( Skill > 2 )
{
bCanStrafe = true;
ProjectileSpeed *= 1.1;
}
Projectiles fired by a skilled Krall are faster than those fired by a NOOB Krall and Skilled Krall will strafe away being a bit more a bad-ass than a retarded one, that's why I'm using that byte and NOT because of relevance, relevance is always properly in my controllers and... I can replace monsters but right now that's history. Of course if you spawn monsters later in a low skill server is hard to boost them up, you have to recall these PreBeginPlay sequences or else no one can figure skilled monster. I failed once this chapter until I realized what I had to do - RUN-LINE. Without processing replacements game is more clear and smoother.
For OFF-Line MH (or ON-Line) in Bot company there are a few nice things doable but not many people are interested so I think these options are mine so far. All starts with rewriting movement code and continuing with some tweaks - to not forget wrapping a new Bot which works fine regarding to "goto" called often, no worries here. Perhaps another future version will use external statics and all that stuff for server-side code, but not today...
Not the last thing about Bot in MH, there is a small tweak making Bot to find even a less reachable MonsterWayPoint using... default Engine

.
I did a test map when I worked at XC_MonsterHunt - result was fascinating, in original MH Bot did not even move a finger, but he went mad in XC_MonsterHunt jumping at WayPoint which was entirely in air not on the ground reachable as usual. Of course engine has some limitations, some new code can be implemented (not done yet because I don't need that) but that's a story for Bot fans not for Bot haters. For over-sized maps over engine boundaries only messing up with pushers out of any NavigationPoint Bot can do something else it's gone...
These I think are the easy part.
Now I'm interested which part of C++ can be called from UScript even here in MH because I sat down thinking at this line which Higor wrote
Code: Select all
#exec _cpptext void StaticConstructor();
I would like to know what else can be used this way but I'm not sure if I can get some comprehensive answers.
Edit: And to not forget a few important things. If "I guess" well, in my even older MH2 controllers, I do have a relevance check, monsters replacements, and even using difficulty ZERO and ALL Monsters which mapper has set. The question is: What exactly doesn't work at monsters here ? And no, I'm
disagree with relevance removal regarding to what you say. If Shrimp used that combined with a lousy idea that's another story. If a mapper has 303 Monsters in map but in your game you have only 290 definitely I won't use your "solution". Last time if mappers did not connected creatures with stuff it's probably because a monster connected to a critical thing (activate teleporter, switch playerstarts, open a door, firing a factory, etc, etc.) which is removed from map will break map, simple as that, all these are because of broken MH versions which you are happily planning and saying that relevance it's not a good design. What is a good design, making map to go broken ? Seriously ? Even ECoop controllers are doing a relevance check because there are many monsters are connected with stuff in SP/Coop maps, feel free to look at those things because they won't hurt you and try to do things as should. Some admins will never change original MonsterHunt and then if you are planning a monsters replacement mutator using default replacement, you'll fail - first problem is relevance from original MH,the second is collision deal, the third is probably Skaarj Weapon

. However, replacements are doable even if mapper was moron or Admin wants only original MH - THIS IS your key not removing relevance because it's not a "good design", maybe you want to light me what a good design is in MH, where we do want all Monsters, not fragments, and we want them connected with map not dropped around as junks done last years in maps. When a map has 200 Creatures in primitive original MH, definitely your "improved" one should have the same and you should not make mapper to get mad.
Aldebaran wrote:So if I remove "if(Other.IsA('ScriptedPawn')) return true;" in function AlwaysKeep in MH2Gold
And you can move it into CheckReplacement - simple as that, and destroy stupid shadow deal - that's PLAYER stuff not server stuff.