Uberjackal problem
issueid=12 03-07-2008 10:47 PM
Junior Member
Number of reported issues by Dental_floss: 6
Uberjackal problem
Monster rarity calculated on generation rate

Some very rare monsters are very commonly summoned, leading to unintended leveling. Large spiders, jackals, and Bees are very good examples. Encountering a single elven priest can lead to spiders having hundreds of hit points.
Issue Details
Issue Number 12
Project ADOM (Ancient Domains Of Mystery)
Category Windows XP
Status Fixed
Priority 4
Affected Version Unknown
Fixed Version ADOM 1.2.0 pre 7
Milestone (none)
Users able to reproduce bug 18
Users unable to reproduce bug 2
Assigned Users (none)
Tags (none)




03-11-2009 03:45 AM
Ancient Member
Quote Originally Posted by Silfir
Uber-ants or bees usually don't happen. Oh, they become harder to kill, but they rarely become "superheroes". I'm talking about that single red worm after having killed 200 of them that suddenly deals 100000 damage per hit. The monsters SHOULD become stronger to deter grinding behaviour, but not unfairly so.
I had the uberbee effect after just one hive on my current character, though it was apparently a very big hive. I killed 147 bee soldiers from that one hive, and as a result, any subsequent hives the bees are so strong it takes 4-5 Elemental Bolts to kill them. This is coming from an Elementalist with around +25 Eff. in the bolt spells.

07-06-2009 10:39 AM
Junior Member
Heh, yeah I usually play melee chars and I can tell you that bees and ants can get kinda ridiculous. However killing jackals has never presented a problem to me no matter how many I kill.

04-28-2010 11:23 PM
Senior Member
To go into further detail, the issue is that only the natural generation rate of monsters is taken into account when applying the increased monster strength effects based on how many you've killed. For most monsters this is fine, and probably even too weak of an effect -- but for monsters that can be summoned and monsters that are pre-set at various places in the game, it causes major issues.

A lazy quick-fix for this issue would be to boost the natural Jackal spawn rate from 25 to 50 and Chaos Servant from 10 to at least 25 (possibly 50). This is obviously not ideal, but it would be a really easy way to temporarily fix it until a real solution could be coded.


Pumpernickel made a suggestion that seemed pretty good too, which would be implemented roughly like:

1) Create a pre-set monster flag (I think there is already a 'summoned' flag), assigned to every monster that is created by the game rather than randomly.
2) Create a second counter for killed monsters only for summoned & pre-set.
3) When a monster is killed, check the flags to see if it was summoned or pre-set. If so, increment new counter; else, increment old counter.
4) When tallying total monsters killed, add together both counters. When checking strength increases, only check the random generation counter.

A problem with this solution is that it does let a player abuse summoned monsters by repeatedly killing them for various benefits, so I suppose some other middle ground solution might be best.

05-05-2010 02:12 AM
IGB IGB is offline
Member
I do not consider the "uberjackal effect" a bug at all. It is actually a nice feature as it is. There are ways to avoid killing lots of same creatures even for melee types. Maybe some fiddling with generation probability is ok, but nothing else is neccesary.

05-05-2010 05:11 AM
Senior Member
While Pumpernickel's approach is interesting, I'd like to see a tweaked version of it.

First, have a flag for "placed" monsters - these would include ants and bees, vault monsters, and any other monsters that are generated immediately in position, rather than being randomly generated (including, for instance, the trees of the animated forest, wilderness encounters, etc).

Second, keep distinct counters for each of three (or is it four?) categories of monster - normal, summoned (is bred a separate flag?), and placed.

Now, placed monsters should still increase the strength of future monsters of the same type, but the effect should be reduced. For instance, perhaps the impact is only a quarter of the impact of normal monster kills. This would ensure that ants and bees grow slower, and that killing pre-set monsters like in single-type vaults doesn't lead to overly powerful monsters of the same type later - instead, it makes them more powerful, but to a lesser extent. The same idea would apply to the number of summoned/bred monster kills, but with other impact numbers. So, for instance, if we let the number of normal kills be N, placed kills be P, and summoned kills be S (assuming bred is same as summoned), then perhaps the formula is N + P/4 + S/8 - so it takes four placed kills or 8 summoned kills to be equivalent to the impact of one normal kill.

Summoned and bred monsters should operate on a different system. Their level should be dependent more on the level of the summoner/breeder that they came from, than on how many you have killed. However, they should still be influenced by number of kills of that type of creature. How to achieve this? Upon summoning or breeding, the system checks the level of the summoner/breeder, and uses this as a base value. It then uses a formula based on kills of the summoned/bred monster type to determine how much more or less powerful it is.

Let's use an example of a jackalwere. You have killed 5 jackals normally, 20 from a previous jackalwere, and 25 from a gnoll vault. My knowledge of exactly what the formulae are for power of generated monsters is limited, so I'll do this simplistically, as a simple linear level progression. Suppose that the current Jackalwere level is 5, and Jackalwere levels start at 4. Suppose that the jackal levels start at 1, and that they increase at a rate of one level every 4 normal jackals. Now, the total kills as far as level raises is concerned is 5 + 25/4 + 20/8 = 13.75, which equates to 3 raises in level, placing normal jackals on level 4. But what about the summoned jackals? Well, start with the jackalwere level, 5. Subtract 2 levels as the base level for its summons, so 3. Then add half the number of level raises the summoned creature has seen, in this case half of 3 works out to 1 (rounded down), resulting in level 4 summoned jackals.

This is, of course, just an example of what I mean, and not my suggestion for the best way to implement my idea. It serves to describe what I mean regarding the summoned monsters, not to be a specific design for how to implement it.

05-05-2010 07:57 AM
Ancient Member
I'd like a simpler solution that wouldn't require multiple counters. Just have the same system for all monsters, BUT their levels start increasing only when 200 or so have been killed. In a normal game you won't kill very many monsters of a single type - looking through the YAVPs would help set a reasonable value. Once a certain amount of a monster type has been killed, they start to level very fast. So for example jackals would be level one until 200 are killed, by 500 they would have become very tough.

05-05-2010 12:55 PM
Ancient Member
Quote Originally Posted by Laukku
I'd like a simpler solution that wouldn't require multiple counters. Just have the same system for all monsters, BUT their levels start increasing only when 200 or so have been killed. In a normal game you won't kill very many monsters of a single type - looking through the YAVPs would help set a reasonable value. Once a certain amount of a monster type has been killed, they start to level very fast. So for example jackals would be level one until 200 are killed, by 500 they would have become very tough.
I don't like that. I think the level scaling as it is now works really great with all monsters except for a small bunch (jackals, bees, etc.) For the rest of the monsters, it correctly scales them so that they become progressively harder with time, but without creating absurd situations like a jackal being stronger than an emperor lich.

Your suggestion would effectively turn off level scaling except for some particular cases.

I really prefer the suggestions that are focused on the idea of just tweaking the counters for jackals, spiders and bees. As a programmer I don't think it can be too complex, just a couple of ifs to check if the creature is one of the problematic ones and that's all. For the rest of the monsters the current formula for level scaling works great IMHO.

05-05-2010 06:13 PM
Ancient Member
Quote Originally Posted by Al-Khwarizmi
I don't like that. I think the level scaling as it is now works really great with all monsters except for a small bunch (jackals, bees, etc.) For the rest of the monsters, it correctly scales them so that they become progressively harder with time, but without creating absurd situations like a jackal being stronger than an emperor lich.

Your suggestion would effectively turn off level scaling except for some particular cases.

I really prefer the suggestions that are focused on the idea of just tweaking the counters for jackals, spiders and bees. As a programmer I don't think it can be too complex, just a couple of ifs to check if the creature is one of the problematic ones and that's all. For the rest of the monsters the current formula for level scaling works great IMHO.
Wasn't the point of monsters getting progressively tougher to prevent scumming? :/ As a punishment for killing hundreds of summoned monsters for exp, weapon marks and items? I don't see why killing fewer than the amount you would normally kill in a game should make them more powerful.

05-05-2010 06:35 PM
Ancient Member
There must be something already in the game that prevents rats and giant rats from becoming dangerous, like, ever. Apply the same for jackals and spiders, to some extent. And get rid of worm and battle bunny superheroes.

05-06-2010 08:49 AM
Senior Member
The reason rats don't suffer from the uberjackal effect is that they are common natural spawns. Because they are 4 times more likely to be spawned naturally, they level up 4 times slower than jackals do. The entire issue is that the level-up system doesn't account for the fact creatures can be created in ways other than spawning randomly (summoning, pre-set in temples), and thus you kill a lot more of certain types of creatures leveling them up much faster.

05-08-2010 02:40 AM
Senior Member
Quote Originally Posted by Laukku
Wasn't the point of monsters getting progressively tougher to prevent scumming? :/ As a punishment for killing hundreds of summoned monsters for exp, weapon marks and items? I don't see why killing fewer than the amount you would normally kill in a game should make them more powerful.
I think so, however the way it's implemented causes it to become a problem even when not "scumming" the jackals. One could tone it down and yet still easily correct the "scum" problem by applying other measures, e.g. item value decreases, item number decreases, XP amount decreases, etc. as kills go up, at least for summoned monsters (use a separate counter for summoned vs. random). These would not have such deadly or time-wasting consequences as them getting so tough so fast.

There's other situations in the game where monsters can get tough fast even when the player does not intend to scum, like with worms breeding like crazy. If the worms breed faster than they are killed, they can become an impassable mess that gets really strong. There should be some sort of cap on breeding or something like that. There's other ways to prevent the "scumming" that don't create lethal or time-wasting effects in non-scumming situations, as I mentioned.

05-08-2010 02:48 AM
Senior Member
Quote Originally Posted by Twinge
To go into further detail, the issue is that only the natural generation rate of monsters is taken into account when applying the increased monster strength effects based on how many you've killed. For most monsters this is fine, and probably even too weak of an effect -- but for monsters that can be summoned and monsters that are pre-set at various places in the game, it causes major issues.

A lazy quick-fix for this issue would be to boost the natural Jackal spawn rate from 25 to 50 and Chaos Servant from 10 to at least 25 (possibly 50). This is obviously not ideal, but it would be a really easy way to temporarily fix it until a real solution could be coded.


Pumpernickel made a suggestion that seemed pretty good too, which would be implemented roughly like:

1) Create a pre-set monster flag (I think there is already a 'summoned' flag), assigned to every monster that is created by the game rather than randomly.
2) Create a second counter for killed monsters only for summoned & pre-set.
3) When a monster is killed, check the flags to see if it was summoned or pre-set. If so, increment new counter; else, increment old counter.
4) When tallying total monsters killed, add together both counters. When checking strength increases, only check the random generation counter.

A problem with this solution is that it does let a player abuse summoned monsters by repeatedly killing them for various benefits, so I suppose some other middle ground solution might be best.
Then you make the "benefits" fall off as one or more of those counters go up for the monster types that counter applies to. E.g. make items cheapen or get less common, make XP tail off, etc.

05-08-2010 03:52 PM
Senior Member
Quote Originally Posted by mike3
There should be some sort of cap on breeding or something like that.
With this, I agree a lot. But rather than an explicit cap, I think I'd rather see a reduction in the probability of breeding as the total number of monsters on the level increases. So while it's possible for breeding to become totally out of control, the chance of it happening is reduced. This, of course, in conjunction with making sure that they don't become unfeasibly powerful as you kill them by one of the various techniques mentioned in these replies.

05-09-2010 07:38 PM
Member
I do not consider the "uberjackal effect" a bug at all. It is actually a nice feature as it is. There are ways to avoid killing lots of same creatures even for melee types. Maybe some fiddling with generation probability is ok, but nothing else is neccesary.
I agree that is a good feature.

Wasn't the point of monsters getting progressively tougher to prevent scumming? :/ As a punishment for killing hundreds of summoned monsters for exp, weapon marks and items?
Yes, exactly.

When tallying total monsters killed, add together both counters. When checking strength increases, only check the random generation counter.
I do not agree with this. There might be a purpose for each counter separately, but I think strength increases should be used in both cases. In addition, I think summoned monsters should give only half experience, and no items once the summon count reaches more than a certain number (maybe 25).

Actually, I think the counters for monster level increase should count up when you (or any of your companions) hurt or sacrifice an invididual creature (only one time per individual, so if you hurt one individual five times it counts up only once, but if you hurt two red dragons in one room, it counts once for each of them, for a total of +2), instead of when they are killed.

05-09-2010 07:48 PM
Ancient Member
Quote Originally Posted by zzo38
I agree that is a good feature.
Monsters getting tougher the more you kill, yes. Some monsters leveling way out of proportion, no.

I mean, why can one freely kill rats as much as he likes, but must avoid jackals like plague? There's no logic in that.

05-10-2010 01:17 AM
Qui Qui is offline
Senior Member
In DCSS summons don't give xp. I think that might be a simple and effective solution for ADoM too, instead of increasing monster difficulty. Summon = no xp or items on kill, no weapon marks from hitting/being hit by. Another problem would be scumming wilderness packs, but if someone wants to waste time (both real and game) for that, I don't see it being particularly game-breaking. Still, item drops in wilderness could be reduced or someting.

05-10-2010 06:02 PM
Member
Quote Originally Posted by Laukku
I mean, why can one freely kill rats as much as he likes, but must avoid jackals like plague? There's no logic in that.
That's right. It needs to be fixed so that rats can level up more, too. And also everything else.

05-10-2010 08:03 PM
Ancient Member
Quote Originally Posted by zzo38
That's right. It needs to be fixed so that rats can level up more, too. And also everything else.
What!? Make everything level so fast that they become uber? I think the game is difficult enough without every single monster becoming invincible halfway through the game.

05-11-2010 05:36 PM
Ancient Member
Honestly, considering that there are really only maybe 4 or 5 monsters that this poses a problem for, it's probably easiest just to adjust the spawn rate variable a little bit on these creatures to make them more sane. Uberjackal effect isn't a problem for rats or wolves, even though these have fairly significant summoning potential as well--if jackals were as common as these, you'd never notice this. Likewise, making chaos servants more common would similarly make this a bit more sensible. The overall mechanic isn't flawed and works pretty well for the vary majority of monsters. Rewriting the entire mechanics of the otherwise pretty good system to solve a problem that can be easily fixed by changing a couple of numbers seems a little excessive to me.

05-23-2010 06:24 PM
Member
Quote Originally Posted by Laukku
What!? Make everything level so fast that they become uber? I think the game is difficult enough without every single monster becoming invincible halfway through the game.
No, you just have to be careful who you killed

+ Reply