Closed mciul closed 6 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.
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.
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.
If we don't find any non-transitivity, maybe we can come up with a monster who can provide it! :)
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.
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.
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.
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.
You sure do... I recently played a game where Malygris had unghoulification powers, fast healing, and no way to stop him from teleporting around...
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.
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.
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.
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?
How did you handle the demon and the angle? Did you reset their levels after each fight? If so, to what?
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:
I've also made reviving into a rulebook, so any monster that has special properties can reset them when reviving.
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.
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?
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.
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.
Answer to self: Yes, I did reset protection when reviving: https://github.com/i7/kerkerkruip/commit/567c10721d71cbe41203e234c82dfe14fbb58785
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?
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.
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?
@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?
The addict's amulet getting uncursed is certainly not intentional!
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.)
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.)
What's the status of this? Anything we need to do before we can release?
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?
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?
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.
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!
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
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.
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).
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.
Would it be useful to eventually run these on Travis?
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.
(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)
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...
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 |
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.
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 |
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?
Thank you for doing all of this!
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.
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).
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?
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. :-)
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.
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?
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: