Angband Forums

Angband Forums (http://angband.oook.cz/forum/index.php)
-   Vanilla (http://angband.oook.cz/forum/forumdisplay.php?f=3)
-   -   Preparing for 4.2 release (http://angband.oook.cz/forum/showthread.php?t=9455)

Derakon July 8, 2019 19:16

Quote:

Originally Posted by Chud (Post 139077)
Is it considered "correct" to have disconnected levels? I have one that isn't technically disconnected (maybe), but in practice it is because it's connected only by the permanent walls of a vault. I don't really mind this, but I couldn't remember whether this wasn't supposed to happen or not.

It's been a thing since the beginning. The game assumes that vaults are walkable. I suspect that breaking that assumption would make it significantly harder to place vaults in levels, and thereby de facto make vaults more rare.

Nick July 9, 2019 03:02

So, looking through the 13 remaining bugs/tasks before 4.2 release, I came to #2118 and thought "that should be straightforward". And it probably is. But.

As a consequence of looking at what is needed to fix the bug, it became apparent to me that the correct thing to do is a major modification to the command system, and looking into that has showed me some shortcomings in the UI code...

So I will probably be vanishing down this rabbit hole for some time, and emerging with the codebase improved (and hopefully a fix for #2118). Which means 4.2 (which I was hoping to get out the door soonish) will probably be delayed a bit. Which gives everyone more time to argue the important issues like XP modifiers and food :)

Chud July 9, 2019 17:46

Quote:

Originally Posted by Derakon (Post 139079)
It's been a thing since the beginning. The game assumes that vaults are walkable. I suspect that breaking that assumption would make it significantly harder to place vaults in levels, and thereby de facto make vaults more rare.

That makes sense. As I said, I don't really mind the behavior; by the time you get far enough to be encountering large vaults on a regular basis you typically have enough mapping and digging options that you aren't going to miss out on much anyway.

Voovus July 9, 2019 20:55

On stealing - issues and recommendations. Findings of the Rogue @s committee. Executive summary.


1.
Issue:
Stealing is too difficult. Moreover
(i) Stealing should be worthwhile, so there should be some chance to steal an item off a high level opponent;
(ii) Defeating monsters should be more rewarding than stealing, so it should remain difficult to steal several items off opponents.

Recommendation:
In the code for calculating the chance of stealing (monster_reaction and skill_steal) change
monster_reaction = guard / 2 + randint1(MAX(guard / 2, 1));
monster_reaction += obj->weight / 10;
to
monster_reaction = guard / 4 + randint1(MAX(guard / 2, 1));
monster_reaction += obj->weight / 20;

The detailed computations can be made available (...if people don't have enough maths in their lives).


2.
Issue:
In the mid and late game there is no way of preparing @ for stealing off particularly tough targets through the use of limited consumables.

Recommendation:
Introduce a "Mushroom of Shadows", or some other consumable, that gives +10 Stealth for 50 turns and that can be found in the dungeon from early on. It will be useful to all characters for looting vaults, and to thieves for stealing. If desired, it can have negative side effects, such as Fear. Stat drain is not recommended as non-rogues will then not use this consumable.



3.
Issue:
It is currently desirable to keep weak uniques alive and repeatedly steal from them throughout the Angband journey.

Recommendation:
Either
(a) Do not generate unique monsters significantly deeper than their native depth, e.g. native depth + 30 (so no Wormtongue below 1900'),
or
(b) Give loot to (unique) monsters purely based on their native depth and not on current dungeon depth.

Note: this will have side-effects for all other players.

Nick July 9, 2019 22:38

Quote:

Originally Posted by Voovus (Post 139094)
On stealing - issues and recommendations. Findings of the Rogue @s committee. Executive summary.

Vote of thanks to the committee.

Quote:

Originally Posted by Voovus (Post 139094)
1.
Issue:
Stealing is too difficult. Moreover
(i) Stealing should be worthwhile, so there should be some chance to steal an item off a high level opponent;
(ii) Defeating monsters should be more rewarding than stealing, so it should remain difficult to steal several items off opponents.

Recommendation:
In the code for calculating the chance of stealing (monster_reaction and skill_steal) change
monster_reaction = guard / 2 + randint1(MAX(guard / 2, 1));
monster_reaction += obj->weight / 10;
to
monster_reaction = guard / 4 + randint1(MAX(guard / 2, 1));
monster_reaction += obj->weight / 20;

The detailed computations can be made available (...if people don't have enough maths in their lives).

I would actually like to see the maths. The current idea is the monster has a natural "protectiveness" which ranges between guard/2 and guard; so I'd probably rather rewrite what guard is so the code makes more sense later.

Quote:

Originally Posted by Voovus (Post 139094)
2.
Issue:
In the mid and late game there is no way of preparing @ for stealing off particularly tough targets through the use of limited consumables.

Recommendation:
Introduce a "Mushroom of Shadows", or some other consumable, that gives +10 Stealth for 50 turns and that can be found in the dungeon from early on. It will be useful to all characters for looting vaults, and to thieves for stealing. If desired, it can have negative side effects, such as Fear. Stat drain is not recommended as non-rogues will then not use this consumable.

I like this idea a lot.

Quote:

Originally Posted by Voovus (Post 139094)
3.
Issue:
It is currently desirable to keep weak uniques alive and repeatedly steal from them throughout the Angband journey.

Recommendation:
Either
(a) Do not generate unique monsters significantly deeper than their native depth, e.g. native depth + 30 (so no Wormtongue below 1900'),
or
(b) Give loot to (unique) monsters purely based on their native depth and not on current dungeon depth.

Note: this will have side-effects for all other players.

I think the side-effects are unacceptable. What does the committee think of the (slightly clunky) solution of keeping track of all unique thefts, and increasing their protectiveness each time an attempt is made to steal?

Voovus July 10, 2019 08:16

Quote:

Originally Posted by Nick (Post 139096)
I would actually like to see the maths. The current idea is the monster has a natural "protectiveness" which ranges between guard/2 and guard; so I'd probably rather rewrite what guard is so the code makes more sense later.

Ok, will do later today (UK time).

Quote:

Originally Posted by Nick (Post 139096)
I think the side-effects are unacceptable. What does the committee think of the (slightly clunky) solution of keeping track of all unique thefts, and increasing their protectiveness each time an attempt is made to steal?

This would still not solve issue 3 - it would still be worth keeping Wormtongue alive and farm him for loot at 4950'.

The other options considered by the committee were:

(c) Do not give monsters/uniques that are significantly deeper than their native depth any artifacts. (But this equally has side effects.)

and

(d) Keep track of the number of items carried by unique monsters. In other words, each time an item is stolen the total number of drops decreases in all future incarnations of this unique. So if you've already stolen from Wormtongue, then he will have an empty inventory forever after. (This feels clunky, but does not have side effects for other @s.)

Youssarian July 10, 2019 13:28

Another idea to make stealing more interesting, you could make certain things ONLY available through theft.

Maybe it's special consumables, scrolls or potions that would give the would-be thief a huge benefit later in tough battles.
Or you could steal something that you can then embed in an armor that gives it extra bonuses (which would be a lot more work to make possible I'm sure.

This would give thief a real benefit over playing other classes.

wobbly July 10, 2019 16:31

Suggestion 36: Introduce a virtue system. Player receives a message "How dishonourable!". This should have no in-game effect, just the warm fuzzy feeling of being a bad bad hobbit. The only honourable path should be to murder wormtongue for his loot.

Suggestion 47: Allow wormtongue to carry objects such as: death molds, scroll mimics & potions of death. Bonus pts if he cackles evilly about traps.

Suggestion 56:Wormtongue hires body guards. Next time you see him he has 1 extra mean mercenary for every object you steal.

More seriously maybe the way drops work in general isn't the best? Wormtongue dropping great at lvl 8 seems fine. When he drops great at dlvl 40 & drops a depth 24 great, I'm still unsure why the game is rewarding you for not killing him till he is way too easy. Why does a blue yeek on dlvl 100 drop depth 51 objects? That one is not as bad as it is probably still trash, but it's possible that how drops_great interacts with this stuff is not the best?

Voovus July 10, 2019 17:33

The current mechanic for stealing compares @'s "steal skill" (Skill) to the monster's defensive "monster reaction" level (Defense), adjusted by the weight of the item being stolen (Weight). To be successful one currently needs
Skill - Weight > Random[Defense/2, Defense],
where Random[A,B] denotes a random integer in the interval [A,B]. A failed attempt at a theft normally results in the monster waking up, which doubles their Defense value and makes further attempts futile. Thus, to have a decent chance to steal an item
@ needs (Skill - Weight) to be approximately (Defense*3/4).
For instance, this means that it is worth having a stab at stealing, but that @ is very unlikely to steal everything that a higher level monster has. In particular, defeating a monster will give higher rewards than theft.

What follows is a list of Skill values and Defense values for typical rogues and for sleeping monsters. For the sake of clarity, I will use the following slightly simplified formula compared to what's actually implemented:
Defense = MonsterLevel + MonsterSpeed/2 (for sleeping uniques),
Skill = Stealth + ToHitBonus(Dex) + PlayerSpeed*3/8,
Weight = Item weight in lb.
Formally, PlayerSpeed currently adjusts the monster Defense value rather than @'s Skill level, but that makes it harder to visualise what's going on. (The chosen factor 3/8th comes from the 1/2 in MonsterSpeed and the 3/4 in the second formula for the estimate of "reasonable stealing".) ToHitBonus(Dex) is, if I read the file right, +3, +4, +6, +10, +15 for Dex 18, 18/50, 18/100, 18/150 and 18/200, respectively.

Here is what typical hobbit rogues will have as their Skill values (with the simplified formula); bonuses refer to Stealth. Other rogues will have slightly lower skill due to lower stealth and dex.

Skill 10 - Level 1 Dex 18
Skill 15 - Level 10 Dex 18/50 Cloak of Stealth +3
Skill 20 - Level 20 Dex 18/100 Boots of Stealth +2 Ring of the Mouse +3
Skill 25 - Level 25 Dex 18/120 Boots of Stealth +2 Ring of the Mouse +4 Ring of the Mouse +2
Skill 30 - Level 30 Dex 18/150 Cloak of Stealth +3 Ring of the Mouse +4 Defender +3
Skill 35 - Level 35 Dex 18/200 Cloak of Stealth +3 Ring of the Mouse +4 Speed +8
Skill 40 - Level 40 Dex 18/200 Cloak of Stealth +3 Elf Shield +2 Speed +24
Skill 45 - Level 45 Dex 18/200 Cloak of Stealth +3 Elf Shield +2 Trickery +2 Speed +32
Skill 50 - Level 50 Dex 18/200 Cloak of Stealth +3 Elf Shield +2 Trickery +2 Elf Boots +4 Speed +32
Skill 55 - Level 50 Dex 18/200 Nimloth +3 Colannon +2 Elf Shield +2 Trickery +2 Elf Boots +4 Speed +40
Skill 60 - Level 50 Dex 18/200 Nimloth +3 Holcolleth +3 Hithlomir +3 Elf Shield +2 Trickery +3 Elf Boots +4 Speed +40
Skill 65 - Level 50 Dex 18/200 Defender +4 Belthronding +1 Luthien +3 Hithlomir +3 Elf Shield +2 Trickery +3 Elf Boots +4 Speed +48

Here are the Defense values for typical sleeping monsters (with the simplified formula and using the appropriate modification for non-uniques), followed by the range [A,B] to which Skill-Weight is compared:

0 [ 0.. 1] Maggot, Small kobold, Acolyte
10 [ 5.. 10] Wormtongue, Bullroarer, Druid
20 [10.. 20] Lugdush, Boldor, Mage
30 [15.. 30] Beorn, Mim, Vrock
40 [20.. 40] Lokkak, Lorgan, Ancient Blue Dragon
50 [25.. 50] Kavlax, Queen Ant, Elder Vampire
60 [30.. 60] Balrog of Moria, Shelob, Great Hell Wyrm
70 [35.. 70] Fundin, Smaug, Fury
80 [40.. 80] Thuringwethil, Osse
90 [45.. 90] Feagweath, Maeglin
100 [50..100] Lungorthin, Huan
230 [115..230] Morgoth (awake)

These values don't match well. Remember that it should be easier to steal something than to defeat the monster in battle. The hobbit rogue with skill level 50 described above can probably already take on Morgoth - there is no point in trying to steal from Maeglin by this stage, let alone from the Balrog of Moria, for whom Skill-Weight might actually match 3/4 Defense. The level 20 (skill 20) rogue ought to have a decent chance to pinch something from Beorn (defense 30), and the level 40 (skill 40) rogue, with preparation, from Lungorthin. Personally, I'd like the superhobbit (skill 65 + mushroom) to have a 5% chance to steal Grond from Morgoth - just because it will be fun. :D

Finally, the Weight penalty is quite brutal. Uniques appear to only carry equipment and ammo. A lot of (most?) equipment weighs >15 lb, resulting in almost guaranteed failure and the monster waking up.

Derakon July 10, 2019 17:57

Quote:

Originally Posted by wobbly (Post 139106)
More seriously maybe the way drops work in general isn't the best? Wormtongue dropping great at lvl 8 seems fine. When he drops great at dlvl 40 & drops a depth 24 great, I'm still unsure why the game is rewarding you for not killing him till he is way too easy. Why does a blue yeek on dlvl 100 drop depth 51 objects? That one is not as bad as it is probably still trash, but it's possible that how drops_great interacts with this stuff is not the best?

I'm inclined to agree with this. "Monsters drop better items when you encounter them deeper in the dungeon" works OK when "better" mostly just means "you have a slightly higher chance to get a useful consumable out of that troll." But for monsters like Wormtongue, whose drops are already scaled to be likely useful at native depth? Improving the drop when Wormtongue is deeper in the dungeon is frankly pretty silly.

I seem to recall at some point that uniques also got an artificial boost in their drop quality (i.e. the game explicitly says "is this monster a unique? OK, then boost their drop quality"). That makes this issue even worse.

I'd be in favor of changing it so that unique drop quality is always the unique's native depth. Your reward for killing them later is that you get an easier fight, no more and no less.

You can then fix the stealing issue by forgetting about it! If players want to scum a low-level unique for easily-stolen items, then that's on them; they could as easily scum dlvl20 for easily-found floor items.


All times are GMT +1. The time now is 15:19.

Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2023, vBulletin Solutions Inc.