i7 / kerkerkruip

Kerkerkruip - the interactive fiction roguelike game
kerkerkruip.org
84 stars 13 forks source link

Balance monster difficulty #356

Closed mciul closed 6 years ago

mciul commented 9 years ago

I'm using my new fighttest command (https://github.com/i7/kerkerkruip/commit/66284b084f46db45e4325f91aaa2d6977424b0f2) to see how various monsters measure up to each other. I'll record the stats here and we can consider whether any changes should be made.

In 100 fights, Israfel was killed 47 times and Bodmall was killed 53 times.

In 100 fights, the giant tentacle was killed 100 times and the minotaur was killed 0 times.

In 100 fights, the hound was killed 94 times and the demon of rage was killed 6 times. In 100 fights, the hound was killed 29 times and the chain golem was killed 71 times. In 100 fights, the hound was killed 84 times and the jumping bomb was killed 16 times. In 100 fights, the hound was killed 6 times and the angel of compassion was killed 94 times. In 100 fights, the chain golem was killed 99 times and the demon of rage was killed 1 times. In 100 fights, the chain golem was killed 86 times and the jumping bomb was killed 14 times. In 100 fights, the chain golem was killed 16 times and the angel of compassion was killed 84 times. In 100 fights, the rusted chain golem was killed 75 times and the Reaper was killed 25 times. In 100 fights, the jumping bomb was killed 6 times and the demon of rage was killed 94 times.

Notes:

mciul commented 9 years ago

Okay, a fresh start after adding some changes - now most things should be reset at the start of every battle, and I've changed the reviving process so it's easy to add more rules when they're needed, like with sudden combat reset. So here are the new numbers:

In 100 fights, The hound was killed 38 times and the demon of rage was killed 62 times. In 100 fights, The hound was killed 31 times and the chain golem was killed 69 times. In 100 fights, The hound was killed 152 times and the jumping bomb was killed 24 times (!?)

I'm using died counts to keep score, but it seems like when the jumping bomb kills the hound, the defeat is recorded twice. That looks like a bug.

mciul commented 9 years ago

Fixed the bug. New stats, including stats copied from above:

In 100 fights, The hound was killed 38 times and the demon of rage was killed 62 times. In 100 fights, The hound was killed 31 times and the chain golem was killed 69 times. In 100 fights, The hound was killed 78 times and the jumping bomb was killed 22 times.

I was just wondering if there's any bias towards the "champion" in each fight, who is assigned to the friendly faction and enters the arena after the "challenger."

In 100 fights, The jumping bomb was killed 40 times and the hound was killed 60 times. In 100 fights, The jumping bomb was killed 35 times and the hound was killed 65 times. In 100 fights, The jumping bomb was killed 23 times and the hound was killed 77 times. In 100 fights, The hound was killed 62 times and the jumping bomb was killed 38 times. In 100 fights, The hound was killed 74 times and the jumping bomb was killed 26 times. In 100 fights, The hound was killed 67 times and the jumping bomb was killed 33 times

Okay, looks like just random variation, nothing to worry about.

VictorGijsbers commented 9 years ago

This is a great idea. I don't think we need all the monsters to be perfectly balanced, but this will certainly allow us to get a little more consistency. I'm also very curious whether we'll see any non-transitivity: cases where A beats B, B beats C, and C beats A. I certainly hope so!

I don't think we need to test the wisps of pain. They'll automatically lose any fight since they cannot deal damage; the challenge with the wisps is to kill them without losing too much stat points.

mciul commented 9 years ago

If we don't find any non-transitivity, maybe we can come up with a monster who can provide it! :)

curiousdannii commented 9 years ago

This is an artificial situation, as what matters is whether they are balance in respect to the PC. Still, if we found that one was defeating another 95% of the time that would indicate that something probably needs to change.

I'd still love to eventually come up with a system where we can have a web server recording statistics from playthroughs. (Lots of interpreter hacking.) We could then see which rogues kill the most players and which get defeated too easily.

mciul commented 9 years ago

Yes, that would be best!

I've been considering writing an AI for the PC, but I'm not sure if that's really worth the effort.

So far, I think the biggest benefit has actually been discovering the bugs in the stats logging.

VictorGijsbers commented 9 years ago

I don't think it would be worth the effort, since monsters are also balanced in some other ways, e.g., bu the reward you'll get from them. I have a feeling that Israfel might be the toughest level 4 monster. But that's not so bad -- he'll also give you the best level 4 powers. So you can afford to spend some more resources fighting him. It might actually be unbalanced to make Israfel weaker!

Of course, if the automatic fights show that Israfel is actually weaker than the other level 4 monsters, then we might need to make some changes.

curiousdannii commented 9 years ago

To really test against a PC AI, the PC would need other powers, and it would need to test combinations of powers, which would just get far to complex. And ultimately we don't want a completely even game for every possible combination of powers, because using those powers well is part of the challenge. Some games you get lucky and some you get unlucky.

mciul commented 9 years ago

You sure do... I recently played a game where Malygris had unghoulification powers, fast healing, and no way to stop him from teleporting around...

mciul commented 9 years ago

As for Israfel, I agree that it's probably the hardest to beat, but in my tests, it seems pretty evenly matched with the Fanatics of Aite, which I think are the easiest. On the other hand, the player has a lot of strategy options with the Fanatics that Israfel might not use.

I don't think I'll spend too much time testing the Overmind against the other Level 4 monsters - like the wisps of pain, the challenge isn't so much in killing him directly but in working with the limitations he imposes.

mciul commented 9 years ago

In 100 fights, Israfel was killed 49 times and the healer of Aite was killed 51 times. In 100 fights, Bodmall was killed 16 times and the healer of Aite was killed 81 times. In 100 fights, Bodmall was killed 54 times and Israfel was killed 46 times.

You'll notice that there were three fights between Bodmall and the fanatics where no kill was recorded. I looked at the transcript and it appears that bees or thorns were the killers in three cases. Since it wasn't a hit, the killing rules didn't trigger. How should we handle that? In this specific case, it seems like the person creating the brambles should be the killer-guy, but what about other sources of damage? Can this be generalized? Should it?

At any rate, this is nicely asymmetrical! The Fanatics of Aite can't compete with Bodmall, but the other pairings are as close to equal as you can measure.

mciul commented 9 years ago

Level 3 round robin:

In 100 fights, The mindslug was killed 0 times and the giant tentacle was killed 100 times. In 100 fights, The mindslug was killed 41 times and the minotaur was killed 59 times. In 100 fights, The giant tentacle was killed 92 times and the minotaur was killed 8 times.

This setup has the mindslug fighting with Fafhrd and Mouser. Contrary to what I thought originally, the minotaur IS able to maze people (mazing is banned in Arena of the Gods, but not generally). Which brings up an interesting possibility. We could use a modified fighttest to generate a table of battle results between the minotaur and other NPCs - and then use that table to calculate the result of the minotaur mazing every other character! There's also a health loss that goes with that battle... perhaps it's best to leave things as they are, although they're hacky.

On the results here - it confirms my feeling that the tentacle is easier than the other two. It has a weakness against groups, so losing to the mindslug doesn't seem bad. But its ability is better than the minotaur's, in my opinion. It could maybe use a slight boost.

mciul commented 9 years ago

Level 2 revisited, including some results copied from above:

In 100 fights, The chain golem was killed 75 times and the jumping bomb was killed 25 times. In 100 fights, The chain golem was killed 73 times and the Reaper was killed 27 times. In 100 fights, the chain golem was killed 99 times and the demon of rage was killed 1 times. In 100 fights, The chain golem was killed 75 times and the hound was killed 25 times. In 100 fights, the chain golem was killed 16 times and the angel of compassion was killed 84 times. In 100 fights, The jumping bomb was killed 16 times and the Reaper was killed 84 times. In 100 fights, The jumping bomb was killed 14 times and the demon of rage was killed 86 times. In 100 fights, The jumping bomb was killed 35 times and the hound was killed 65 times. In 100 fights, The jumping bomb was killed 14 times and the angel of compassion was killed 86 times. In 100 fights, The Reaper was killed 35 times and the demon of rage was killed 65 times. In 100 fights, The Reaper was killed 68 times and the hound was killed 32 times. In 100 fights, The Reaper was killed 100 times and the angel of compassion was killed 0 times. In 100 fights, The demon of rage was killed 73 times and the hound was killed 27 times. In 100 fights, The demon of rage was killed 100 times and the angel of compassion was killed 0 times. In 100 fights, the hound was killed 100 times and the angel of compassion was killed 0 times.

Looks like we do have something just like Victor wanted to see: The chain golem mercilessly beats the Angel of Compassion, which demolishes the Demon of Rage, which crushes the chain golem! The Reaper can also take the Demon of Rage's place in the cycle. Clearly it helps to be eyeless when fighting a +4 radiance enemy!

Overall spread of defeats for each creature:

chain golem: 75 73 99 75 16 jumping bomb: 25 16 14 35 14 reaper: 27 84 35 68 100 demon of rage: 1 86 65 73 100 hound: 25 65 32 27 100 angel of compassion: 84 86 0 0 0

Given that things are so dynamic here, we may not need to make any changes, but I wonder of the chain golem could use a small boost. The jumping bomb feels pretty fair despite its performance here, but I wonder if the hound could be taken down a notch.

I'll run some cross-level tests after I do Level 1 to see how the demon of rage compares to Level 1 monsters. Maybe I can test the demon of rage against level 2 creatures after one power-up as well.

Note to self: Did I make sure protection is reset when reviving monsters?

VictorGijsbers commented 9 years ago

How did you handle the demon and the angle? Did you reset their levels after each fight? If so, to what?

mciul commented 9 years ago

I created a "backups" table where I can save a monster's stats on demand. When a monster is revived, a rule checks the backups table and restores the stats it finds in there.

The code is here:

https://github.com/i7/kerkerkruip/blob/5af9eac756973bb4b6a006b149539725ce0143b2/Kerkerkruip.materials/Extensions/Victor%20Gijsbers/Kerkerkruip%20Tests.i7x#L366

I've also made reviving into a rulebook, so any monster that has special properties can reset them when reviving.

https://github.com/i7/kerkerkruip/blob/5af9eac756973bb4b6a006b149539725ce0143b2/Kerkerkruip.materials/Extensions/Victor%20Gijsbers/Kerkerkruip%20Systems.i7x#L1522

As I've run the tests so far, the angel and the demon are backed up before anyone dies. Yesterday I was working on testing them after they've witnessed one death, but I ran into some problems I haven't figured out yet.

mciul commented 9 years ago

I've worked out a way to test the angel and the demon after they've witnessed a death. I added some commands for setting and viewing backups

> sneak
> battle wisps
> battle rage
> battle compassion
> smite wisps
> backups
> backup rage
> backup compassion
> backups
> smite rage
> smite compassion
> fighttest...

After this, I ran these fight tests again.

In 100 fights, The angel of compassion was killed 26 times and the chain golem was killed 74 times. In 100 fights, The angel of compassion was killed 92 times and the jumping bomb was killed 8 times. In 100 fights, The angel of compassion was killed 1 times and the Reaper was killed 99 times. In 100 fights, The angel of compassion was killed 0 times and the demon of rage was killed 100 times In 100 fights, The angel of compassion was killed 2 times and the hound was killed 98 times.

In 100 fights, The demon of rage was killed 18 times and the chain golem was killed 82 times. In 100 fights, The demon of rage was killed 81 times and the jumping bomb was killed 19 times. In 100 fights, The demon of rage was killed 41 times and the Reaper was killed 59 times. In 100 fights, The demon of rage was killed 46 times and the hound was killed 54 times.

Looking at the demon of rage, I noticed I missed a lot of things that could potentially affect its performance. It really gets a lot of modifications! flying, heat protection, damage reduction, hit protection... I'm not sure it's worth it to try to control all of them. I'm going to think about what should happen when it gets revived, though - should demon-of-rage number be reset to 0? Should the other properties be reset?

curiousdannii commented 9 years ago

Rather than resetting them with code, would it be better to use the undo system? The in progress stats could either be stored in an external file, or with a protected memory block.

mciul commented 9 years ago

That's a good idea. I've already done most of that work with the automated testing system. At first I was concerned about collisions when using both systems together, but actually I don't think there's ever a need to do that.

Using an external file would facilitate a stats-based approach to npc maze battles, too.

mciul commented 9 years ago

Answer to self: Yes, I did reset protection when reviving: https://github.com/i7/kerkerkruip/commit/567c10721d71cbe41203e234c82dfe14fbb58785

mciul commented 9 years ago

TODO: create Table of Fight Statistics, to be saved in an external file

Columns:

Winner Loser Winner-variant: a number that serves as a unique id for every variant of a creature that we track. This includes demon of rage powerup level, angel of compassion radiance, and a unique id for each kit that Miranda and the Reaper start with. Malygris has lots of variations, but I'm not sure how much we'll test him. Most creatures will use 0 or 1 all the time. Loser-variant Victory count Final health - average (or sum, for more precision) Final health - minimum Final health - maximum

I'm guessing there's a formula that can be used to generate a series of die rolls to achieve the average, minimum, and maximum...? Any stats people out there who know?

curiousdannii commented 9 years ago

Btw, I was wanting to create a kind of setup rulebook, which would handle all the natural weapon rules and other when play begins rules. I was thinking we should have a phrase for giving rogues their weapons/items that will clone them if necessary, so that in the arena of the fallen it's not an issue if the player already has their weapon. (Or is that already the case?) Your reviving rules could all be put in the same rulebook.

mciul commented 9 years ago

I've been thinking about that too! I thought maybe I'd mentioned it somewhere, but I'm not sure. There is this: #321

I think they might be separate though - reviving does some things that don't need to happen at the beginning of the game. I was thinking it should be something like this:

Last reviving rule for a person (called guy) (this is the equip everyone when reviving rule):
   follow the starting kit rules for guy;

And don't forget to make shimmer-weapons if the weapons are already in the dungeon.

Do you want to do it, or shall I?

mciul commented 9 years ago

@curiousdannii, I looked back at my Automated Testing code and realized that I scrapped the undo saving code because I had too many problems with it. Instead I put a queue of tests in an external file and restart the game. That might work for fight tests too. But I think we need to implement monster kits first.

@VictorGijsbers, I'm thinking of putting the starting kit code in Kerkerkruip Monsters but leaving the player setup in Start and Finish. Does that make sense? Also, you were talking about restructuring - would that include combining Kerkerkruip Monster Abilities with Kerkerkruip Monsters?

I've started on this now. I just noticed something: The addict's amulet is cursed, but the player's startup kit uncurses everything on the player. Is that intentional?

VictorGijsbers commented 9 years ago

The addict's amulet getting uncursed is certainly not intentional!

VictorGijsbers commented 9 years ago

Starting Kit in Kerkerkruip Monsters makes perfect sense, as does leving the player setup in S&F. We can add comments poiting to the other file.

Monster Abilities and Monsters were pried apart because Monsters is REALLY long. We could potentially take the general code out of Monsters and put it in Monster Abilities; and if necessary, we can at some point split Monsters. But I wouldn't merge them. (For me, at least, working with several smaller files is better than having one huge one.)

mciul commented 9 years ago

Here's an update on the tentacle after all of the changes I made to the damage system:

In 100 fights, The giant tentacle was killed 68 times and the minotaur was killed 32 times. In 100 fights, The giant tentacle was killed 100 times and the mindslug was killed 1 times. (in the one battle where the mindslug was killed, Fafhrd killed the tentacle immediately afterwards.)

VictorGijsbers commented 8 years ago

What's the status of this? Anything we need to do before we can release?

mciul commented 8 years ago

I would suggest checking on the hound and the tentacle. Do others also feel that the hound is too difficult and the tentacle is too easy?

rvdpluijm commented 8 years ago

Hmm, I do find the tentacle too easy. Being a tentacle; could we perhaps add an ability that, when you do more than half the total amount of hitpoints in nonmagical damage, the damaged tentacle part becomes an extra tentacle with its own intelligence, more or less like the flatworm?

mciul commented 8 years ago

What do you think of the tentacle's new throwing ability, Remko?

I am improving fight tests right now as I test the Angel of Mercy. The Angel seems a bit underpowered at the moment - all of the other Level 3 monsters beat it more than half the time. But what really surprised me is that the tentacle basically always wins against it. I think that's because the tentacle is eyeless, so radiance makes no difference.

mciul commented 8 years ago

Remko, I have been thinking about adding a hydra-like monster that multiplies when you damage it. I thought maybe a big undead creature, to give the player a better chance of saving themselves when reading a scroll of summoning as a reaction. It could be like the rotting corpse, only the limbs that fall off keep attacking you!

mciul commented 8 years ago

My new fight tests are much faster. I'm going to post a few results here...

in 100 fights, giant tentacle won 94 times, angel of mercy won 6 times
in 100 fights, mindslug won 46 times, angel of mercy won 44 times
mciul commented 8 years ago

I realized that the angel of mercy is pretty easy to beat if you simply unready your weapon. So I tweaked the AI - now the angel will take the gloves off sooner if it realizes there are no weapons to steal. I'm going to run the tests again soon...

I just noticed something during these tests: being thrown by the tentacle doesn't appear to break concentration. I'm fine with maintaining concentration while being squeezed, but I think we should change it for being thrown.

rvdpluijm commented 8 years ago

I'll have to check it out. Will probably have time tonight to test the new build (I received my new MacBook Air and I still need to setup my environment (i.e. Github etc) or I could test this one on my Linux environment).

mciul commented 8 years ago

Current fight stats:

giant tentacle won 48 times, angel of mercy won 52 times
minotaur won 56 times, angel of mercy won 44 times
mindslug won 42 times, angel of mercy won 58 times 
minotaur won 80 times, giant tentacle won 20 times
mindslug won 98 times, giant tentacle won 2 times
mindslug won 60 times, minotaur won 40 times

In some mindslug battles (2 with the angel of mercy, 1 with the tentacle), the mindslug died but its slaves killed the opponent afterwards. I counted these as a win for the opponent. Before running minotaur vs mindslug, I changed the fight test code to end the fight as soon as the mindslug dies.

curiousdannii commented 8 years ago

Would it be useful to eventually run these on Travis?

mciul commented 8 years ago

I don't think so, although I've considered using them as source data for a more accurate minotaur-fight calculation.

Actually, I wonder... I don't think it's useful in terms of making sure each build works, but it might be useful as a repository of data for future development - if Travis (or some process) continually does round-robins among all the monsters, we can get an up-to-date picture of how all our rogues are doing.

mciul commented 8 years ago

(edit: deleted lots of meaningless results)

@VictorGijsbers, do you remember why you boosted the jumping bomb in January 2014? You gave it a +1 melee. It feels too powerful to me now. In the games I've played, if I fight the jumping bomb with a Level 1 power, the bomb never misses (not counting the free dodge of course).

Hmm... I just remembered that the free dodge is only given to the player, not the bomb's other opponents. (edit: I think the bomb is fine now, but I reduced its mind score to 1 because it feels unfair when it gets critical hits)

mciul commented 8 years ago

I improved the tests - I gave other monsters the bomb's free dodge when testing, and I discovered that the difficulty setting was arbitrarily high... so I think most of these results are useless. I'm going to delete most of the results from the comments above and start over...

mciul commented 8 years ago

Table of fight results:

A a m g j R d h C s L t y H B O I U M
swarm of daggers X 64 15 54 50 51 34 55 14 23 0 5 1 0 0 0 10 0 0 0
blood ape 36 X 23 39 15 44 18 27 8 0 1 8 0 0 0 0 5 0 0 0
ravenous armadillo 85 77 X 75 21 8 14 57 23 0 1 100 0 0 0 0 23 0 0 0
Miranda 46 61 25 X 10 36 29 54 18 0 0 7 1 0 0 0 4 0 0 0
chain golem 50 85 79 90 X 78 56 82 43 29 0 10 6 27 0 0 49 6 1 0
jumping bomb 49 56 92 64 22 X 71 69 34 35 0 23 6 34 0 1 41 4 10 0
Reaper 66 82 86 71 44 29 X 69 34 0 0 20 6 0 0 0 33 0 2 0
demon of rage 45 73 43 46 18 31 31 X 21 0 1 3 0 1 0 0 2 0 0 0
hound 86 92 77 82 57 66 66 79 X 0 6 36 10 3 0 0 24 0 2 0
angel of compassion 77 100 100 100 71 65 100 100 100 X 75 68 54 12 1 34 97 8 17 0
mindslug 100 99 98 100 100 100 100 99 94 25 X 100 57 44 0 0 100 4 10 0
giant tentacle 95 92 0 93 90 77 80 97 64 32 0 X 32 50 0 0 21 0 0 0
minotaur 99 100 100 99 94 94 94 100 90 46 43 68 X 45 12 18 67 8 32 0
angel of mercy 100 100 100 100 73 66 100 99 97 88 56 50 55 X 68 67 99 0 5 0
healer of Aite 100 100 100 100 100 100 100 100 100 99 100 100 88 32 X 38 100 64 56 0
Bodmall 100 100 100 100 100 99 100 100 100 66 100 100 82 33 62 X 100 47 61 0
overmind 90 95 77 96 51 59 67 98 76 3 0 79 33 1 0 0 X 0 2 0
Israfel 100 100 100 100 94 96 100 100 100 92 96 100 92 100 36 53 100 X 50 0
Automatos 100 100 100 100 99 90 98 100 98 83 90 100 68 95 44 38 98 50 X 0
Malygris 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 X

Rankings:

monster performance weakest defeater losses to defeater strongest defeated wins to defeated
blood ape 11% n/a mindslug 1
Miranda 15% blood ape 39 minotaur 1
demon of rage 16% blood ape 27 angel of mercy 1
swarm of daggers 19% blood ape 36 minotaur 1
ravenous armadillo 25% blood ape 23 mindslug 1
Reaper 28% blood ape 18 Automatos 2
jumping bomb 32% blood ape 44 Israfel 4
hound 36% blood ape 8 Automatos 2
chain golem 36% blood ape 15 Israfel 6
giant tentacle 43% blood ape 8 angel of mercy 50
overmind 43% blood ape 5 Automatos 2
angel of compassion 62% swarm of daggers 23 Israfel 8
minotaur 63% Miranda 1 Israfel 8
mindslug 64% blood ape 1 Israfel 4
angel of mercy 69% demon of rage 1 healer of Aite 68
Bodmall 81% jumping bomb 1 Israfel 47
Automatos 81% Reaper 2 Israfel 50
healer of Aite 83% angel of compassion 1 Israfel 64
Israfel 84% jumping bomb 4 n/a
Malygris 100% n/a n/a
mciul commented 8 years ago

Check out the tables above! Because of the massive speedups in fight tests I was able to run a full round robin over the course of a couple days. I tallied the total victories for each monster and generated a table of ranking from least to most victories, along with the lowest-ranked monster to defeat each one and the hightest-ranked monster that each one defeated, and how many times those things happened.

I used the map legend characters for each monster in the header of the first table. Automatos and the Angel of Mercy don't have legend characters... who has been making those? I came up with suggestions for each of them - "y" for Angel of Mercy and "U" for Automatos.

Based on this chart I would say that the hound might still be a little overpowered (and since I boosted the chain golem, it is too). The tentacle is bordering on powerful enough but could still use a small boost I think. And the angel of mercy might stand to be dialed back very slightly, as could Israfel.

The armadillo fared surprisingly well. I'm not sure what to do about that. I find the armadillo both boring and frustrating to fight. Can anyone think of an entertaining handicap for it? Maybe it could start out weaker and get stronger every time it eats items.

The armadillo turns into a vampire when it eats Drakul's lifeblood. Can we have it do more crazy things like that? Essences should work on it, for example... I'm fine with waiting for Kerkerkruip 11 to do it.

mciul commented 8 years ago

I've tweaked several monsters including the armadillo, the minotaur, the tentacle, Miranda, the chain golem, and the hound. The tentacle is still scoring low as a level 3 monster but it's much stronger and has a new ability- sometimes hitting it will not break its grip, if the damage is low. The hound has been reduced in power and the chain golem has been boosted. They are now scoring about equal to each other and slightly better than the jumping bomb. The minotaur himself has not been changed but his axe has been boosted along with all other axes, according to #374.

I left the blood ape alone because it seemed to make sense to have it start out weak. Miranda has been boosted very slightly and the armadillo has been dialed back to bring them closer to the other Level 1 monsters. This was in line with my experience that fights with Miranda were too short and fights with the armadillo were a little long.

The whirling chains are now quite a bit harder to get past, but they do less damage when they hit you. The chain golem's health is lower. The hound's teeth have a lower damage die and the hound has slightly less health and body score.

Table of fight results:

A a m g j R d h C s L t y H B O I U M
swarm of daggers X 65 27 53 50 46 36 37 17 35 0 0 0 2 0 0 13 3 0 0
blood ape 35 X 47 25 18 34 18 35 22 0 1 2 0 0 0 0 6 0 0 0
ravenous armadillo 73 53 X 60 15 8 9 51 22 0 1 79 0 0 0 0 12 0 0 0
Miranda 47 75 40 X 36 39 31 58 33 0 1 2 1 0 0 0 4 0 0 0
chain golem 50 82 85 64 X 80 40 70 44 19 0 0 2 38 0 0 42 5 1 0
jumping bomb 54 66 92 61 20 X 54 60 19 46 0 20 19 37 0 0 38 0 6 0
Reaper 64 82 91 69 60 46 X 72 37 0 3 8 4 1 0 0 22 0 2 0
demon of rage 63 65 49 42 30 40 28 X 30 0 1 0 4 0 0 0 7 0 0 0
hound 83 78 78 67 56 81 63 70 X 1 2 5 6 0 0 0 17 0 1 0
angel of compassion 65 100 100 100 81 54 100 100 99 X 71 25 82 21 1 26 97 15 26 0
mindslug 100 99 99 99 100 100 97 99 98 29 X 90 47 40 0 0 97 9 6 0
giant tentacle 100 98 21 98 100 80 92 100 95 75 10 X 47 98 0 0 68 3 0 0
minotaur 100 100 100 99 98 81 96 96 94 18 53 53 X 55 15 1 90 4 11 0
angel of mercy 98 100 100 100 62 63 99 100 100 79 60 2 45 X 49 51 94 3 2 0
healer of Aite 100 100 100 100 100 100 100 100 100 99 100 100 85 51 X 45 100 60 51 0
Bodmall 100 100 100 100 100 100 100 100 100 74 100 100 99 49 55 X 100 42 70 0
overmind 87 94 88 96 58 62 78 93 83 3 3 32 10 6 0 0 X 0 1 0
Israfel 97 100 100 100 95 100 100 100 100 85 91 96 96 97 40 58 100 X 43 0
Automatos 100 100 100 100 99 94 98 100 99 74 93 100 89 98 49 30 99 57 X 0
Malygris 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 X

Rankings:

monster performance weakest defeater losses to defeater strongest defeated wins to defeated
blood ape 12% blood ape mindslug 1
demon of rage 18% blood ape 35 mindslug 1
Miranda 19% blood ape 25 mindslug 1
ravenous armadillo 20% blood ape 47 mindslug 1
swarm of daggers 20% blood ape 35 Israfel 3
Reaper 29% blood ape 18 Automatos 2
jumping bomb 31% blood ape 34 Automatos 6
hound 32% blood ape 22 Automatos 1
chain golem 32% blood ape 18 Israfel 5
overmind 41% blood ape 6 Automatos 1
giant tentacle 57% blood ape 2 Israfel 3
angel of compassion 61% swarm of daggers 35 Israfel 15
minotaur 61% demon of rage 4 Israfel 4
angel of mercy 63% swarm of daggers 2 Israfel 3
mindslug 63% blood ape 1 Israfel 9
Automatos 83% Reaper 2 Israfel 57
Bodmall 83% angel of compassion 26 Israfel 42
healer of Aite 83% angel of compassion 1 Israfel 60
Israfel 84% swarm of daggers 3 Israfel
Malygris 100% Malygris Malygris
mciul commented 8 years ago

Victor, I forgot that discussion at the beginning about not making Israfel weaker, and I ended up knocking 2 points off its health and slowing down its healing ability a little. It's still the toughest Level 4 monster but not as tough as it was. If anyone wants to do some playtesting and give feedback on any of the monsters at this point, that would be really helpful. Also, I haven't changed the powers to reflect changes in the monsters... is there a scheme for figuring out how that should work?

curiousdannii commented 8 years ago

Thank you for doing all of this!

mciul commented 8 years ago

It was my pleasure!

I played a game last night with the Angel of Mercy. It felt pretty easy, actually, but I'm considering leaving things the way they are for now: in some ways the Angel of Mercy is like the blood ape. If you let it steal your weapon, you can get a size-agnostic weapon with bigger damage after you kill it. So the player has a choice to make the battle harder for greater reward.

I've also decided to go ahead and apply the angel's special parrying effect to all monsters. (defender size does not affect attack strength when parrying) But I am going to add a weapon size penalty for parrying with a wrong-sized weapon.

rvdpluijm commented 8 years ago

I find the Angel of Mercy extremely easy, especially since, before her attack, she mentions that there is still time to flee. If one attacks immediately after that, there is a chance to break the concentration. I constantly got two turns to concentrate. Perhaps a little tweak in the AI is in order (admittedly, I played on the lowest level since I tried it during my break, but I cannot imagine we adapted the AI level).

VictorGijsbers commented 8 years ago

Awesome! Really, really good. I can't wait to start up the game and try the new balance!

We don't need to change the powers, I think -- they're not closely correlated to the monster stats. Does the angel of mercy already have a power?

VictorGijsbers commented 8 years ago

I just played two nice and satisfying games (one where I used the staff of insanity to make Malygris insane. Then one where I grabbed the rod of the master builder in the room where Malygtis was, at which point he teleported away and summoned the assassin. I had almost no powers... but managed to survive by using the holy symbols. Then I found a secret room, the Mausoleum, with two weak undead and a tomb that contained the Caduceus. Great weapon, with which I put everyone asleep!).

No bugs. Everything seemed balanced, good fights, about as difficult as I'd expect. But I haven't met the Angel of Mercy yet. :-)

mciul commented 8 years ago

That's great news!

Yes, the Angel of Mercy has a power. It's passive only, but defeating the Angel of Mercy gives you two great items, and the potential to improve your own weapons if you take some risks.

I think I will boost the Angel of Mercy some more. My idea is for it to be a very strong monster that handicaps itself through a strict code of behavior. Currently I think the gauntlet of attraction is not powerful enough. I was so worried about it being overpowered that I think I went too far to limit it.

I'm currently trying to figure out how to handle the Angel's power during dreams, since it's a combat-only effect similar to the Blood Ape's, but it affects radiance, which is a bit more complicated to manage than size.

mciul commented 8 years ago

Remko, perhaps we should give the Angel of Mercy a concentration-breaking skill like Miranda and the Overmind. I think that would fit with its personality...

Actually, maybe something more like the wisps "torment" ability would be appropriate. Hm... what if it plays soothing music that reduces concentration by 1 point and also lowers the tension?