Angband Forums

Angband Forums (http://angband.oook.cz/forum/index.php)
-   Vanilla (http://angband.oook.cz/forum/forumdisplay.php?f=3)
-   -   5 May 2011 development release(s) (http://angband.oook.cz/forum/showthread.php?t=4416)

myshkin May 5, 2011 06:38

5 May 2011 development release(s)
 
There is a new build of the development version of Angband. (I am trying to avoid the term "nightly," for reasons that should be clear.) I've started a new thread for it so that we can retire the very lengthy old one. Changes since the 23 April 2011 build:
  • Bug fixes: Curlicues Vault layout corrected; out of depth items can no longer reduce level feelings; out of depth item creation deep in the dungeon no longer crashes the game; ego item creation now recognizes when flags are already attached to a pvals; detect invisible now detects monsters again
  • Targetting displays a path from the player to the target.
  • Monster drops are created when the monster spawns.
  • Level feeling boosts from artifacts and ego items are more consistent.
  • The game records more specifically the origin of objects lying on the floor (special room, labyrinth, cavern, pit, vault, rubble).
  • Refactoring related to object flags, to the test harness, and to the stats module
  • Code cleanup and a function length utility
  • Artifact description edits

The teleport other description change is not in the version currently up on rephial (sorry, SSK!), but I do have a change committed, and hope to have that change in a new version on rephial later today.

Thanks for all of the feedback. Please follow up in this thread with any reports you may have.

PowerDiver May 5, 2011 07:16

Yeeha! I think this is the release I've been waiting for since January. You might want to give it a real label.

Just please tell me that this includes the fix to detect invisible, which was marked closed on trac.

Timo Pietilš May 5, 2011 07:19

Quote:

Originally Posted by PowerDiver (Post 52463)
Yeeha! I think this is the release I've been waiting for since January. You might want to give it a real label.

Just please tell me that this includes the fix to detect invisible, which was marked closed on trac.

Last one in "bug fixes" :)

Magnate May 5, 2011 12:50

Quote:

Originally Posted by PowerDiver (Post 52463)
Yeeha! I think this is the release I've been waiting for since January. You might want to give it a real label.

Just please tell me that this includes the fix to detect invisible, which was marked closed on trac.

That's interesting - what is it about this release that has you so positive? (It can't be the dInvis fix, because that was a regression post-January!)

Just a warning note to everybody: do not play with Preserve off in this version, as you may well lose artifacts carried by unkilled monsters. I had preserve back to front in my head so have not yet amended the preservation code to account for the earlier generation of drops.

d_m May 5, 2011 14:39

Quote:

Originally Posted by PowerDiver (Post 52463)
Yeeha! I think this is the release I've been waiting for since January. You might want to give it a real label.

Just please tell me that this includes the fix to detect invisible, which was marked closed on trac.

I think there are still a few bugs (teleport-other description, the preserve issue Magnate mentioned) that should be fixed. After (and a bit more testing) that I agree that it's worth tagging in some way.

EDIT: Because my post was confusing:
1. There were other bugs
2. They are now fixed and will be in the next nightly
3. It will be worth tagging if it is tested a bit and found to be pretty stable.

Chud May 5, 2011 18:24

The problem with incorporating a carriage return in a keymap (e.g. "R&\n") still seems to be an issue - I assume there's already an open ticket for that.

PowerDiver May 5, 2011 18:32

Quote:

Originally Posted by Magnate (Post 52466)
That's interesting - what is it about this release that has you so positive? (It can't be the dInvis fix, because that was a regression post-January!)

I was ready to port some code, but there were blocking(*) bugs. I think the first was the invisible purple monsters, but I don't really remember any more. Then a long progression in which a new blocking bug was introduced before the previous one was fixed. The dInvis bug is merely the last one.

You folks teased me a few times by closing all of the trac issues that bothered me, and then I'd find out something else got broken but hadn't been noticed yet. This better not be a repeat!

I don't mean the above as a complaint. You have to expect that sort of thing given the pace and nature of V development. I've just been waiting for a long time.


(*) Bugs bad enough that I didn't want to play with them, and introduced recently so it made more sense to me for the person who introduced them to fix them rather than for me to debug them myself.

PowerDiver May 5, 2011 18:35

Quote:

Originally Posted by Timo Pietilš (Post 52464)
Last one in "bug fixes" :)

Showing that I am blind. I looked 3 times. There's a reason I asked for running to be disturbed the step before you move adjacent to a monster. :)

Thanks for pointing that out.

Chud May 5, 2011 18:58

There also seems to be a bug in item stacking, and numbering items in the home.

http://www.chud.net/~chd/images/home-inv.jpg

I bought some !CCW in town and noticed they didn't stack together in my inventory, and by dropping some and collecting some I was able to get them t group in different ways - 30 and 2, 20 and 19, and then the same thing with the life levels ones.

FYI...

myshkin May 5, 2011 21:20

Quote:

Originally Posted by Chud (Post 52488)
The problem with incorporating a carriage return in a keymap (e.g. "R&\n") still seems to be an issue - I assume there's already an open ticket for that.

That is correct...trac ticket #1378. Patches cheerfully accepted. :) Beyond that, I believe no one is actively working on it, but it ought to get closed before 3.3.0.

PowerDiver May 5, 2011 21:38

There seems to have been a change, as of the 4/22 stuff I have been messing with, that gives monsters saving throws when they didn't use to have them. I couldn't even ID a wand [sleep monster I think] with repeated aims at a cutpurse. Was there any change to that in this 5/5 release?

d_m May 5, 2011 21:40

Quote:

Originally Posted by PowerDiver (Post 52501)
There seems to have been a change, as of the 4/22 stuff I have been messing with, that gives monsters saving throws when they didn't use to have them. I couldn't even ID a wand [sleep monster I think] with repeated aims at a cutpurse. Was there any change to that in this 5/5 release?

I don't remember this, but I'll take a look for a commit on 4/22 that introduces this.

Sure does seem like a bug.

Chud May 6, 2011 00:01

Quote:

Originally Posted by Chud (Post 52492)
There also seems to be a bug in item stacking

Noticed this in the dungeon now too; I found !CCW that won't stack with my inventory, and also a spellbook that similarly won't stack. It seems not to be related to inscriptions (my first though was hmm, these are both auto-inscribe items) - I tried removing the inscriptions and removing the auto-inscribe setting, no effect.

My character is a CL27 Mage, and this only started happening recently - I'm not sure what changed. The savefile and pref files were copied over from the previous release (Apr 23) if that is relevant. Should I open a ticket for this, even though I'm not a developer? I'm not sure what the correct process is here. :)

PowerDiver May 6, 2011 00:17

Quote:

Originally Posted by d_m (Post 52502)
I don't remember this, but I'll take a look for a commit on 4/22 that introduces this.

Sure does seem like a bug.

I was wondering if it's completely unintentional, or a goof on something similar but intentional.

Don't look too hard. The previous nightly I have is dated 1/13, so it could have been introduced much earlier.

Taha May 6, 2011 02:27

The was a failure to ID wands and staves by use bug a little while back. It was related to sleep / confuse / slow monsters I think. Can't find the ticket or thread right now, but pretty sure it was fixed in the last build I played.
________
ExoticMae cam

Magnate May 6, 2011 09:40

Quote:

Originally Posted by Chud (Post 52522)
Noticed this in the dungeon now too; I found !CCW that won't stack with my inventory, and also a spellbook that similarly won't stack. It seems not to be related to inscriptions (my first though was hmm, these are both auto-inscribe items) - I tried removing the inscriptions and removing the auto-inscribe setting, no effect.

My character is a CL27 Mage, and this only started happening recently - I'm not sure what changed. The savefile and pref files were copied over from the previous release (Apr 23) if that is relevant. Should I open a ticket for this, even though I'm not a developer? I'm not sure what the correct process is here. :)

No, please don't open a ticket - we know what the problem is, but not why it's happening.

When a savefile is loaded, each object is read into memory using a function called rd_item_X, where X is the version number of the savefile. Object flag handling has now changed, so X was incremented to save and load the new flags properly using rd_item_3. I added code to rd_item_2 which should convert the flags of objects in old savefiles so that they stack properly with new objects, but for some reason this isn't working. The two relevant lines in rd_item_2 are

of_copy(o_ptr->flags, o_ptr->kind->base->flags);
of_union(o_ptr->flags, o_ptr->kind->flags);

We saw this bug in staging but couldn't see why it wasn't working, and assumed that it must have been an artefact of us all using savefiles we'd played in the staging branch, where things tend to get a bit muddled. I couldn't reproduce it with a "proper" old savefile.

But the assumption was wrong, and it is clearly a problem with the changes to object flags (ticket #120) and the rd_item_2 code.

All patches and suggestions welcome. In the meantime, apologies for the inconvenience w.r.t. stacking.

Magnate May 6, 2011 09:43

Quote:

Originally Posted by Taha (Post 52533)
The was a failure to ID wands and staves by use bug a little while back. It was related to sleep / confuse / slow monsters I think. Can't find the ticket or thread right now, but pretty sure it was fixed in the last build I played.

This was #1366 and was indeed closed about four weeks ago. Like d_m I am unaware of monsters getting additional saving throws for anything, but as Eddie says this could be an unintended side effect of something else. There has been a lot of refactoring of *player* saving throws to monster spells and breaths, but AFAICT that shouldn't yet have had any impact at all on monster saves. Definitely bears further observation though.

Magnate May 6, 2011 09:45

Quote:

Originally Posted by PowerDiver (Post 52489)
I was ready to port some code, but there were blocking(*) bugs. I think the first was the invisible purple monsters, but I don't really remember any more. Then a long progression in which a new blocking bug was introduced before the previous one was fixed. The dInvis bug is merely the last one.

You folks teased me a few times by closing all of the trac issues that bothered me, and then I'd find out something else got broken but hadn't been noticed yet. This better not be a repeat!

I don't mean the above as a complaint. You have to expect that sort of thing given the pace and nature of V development. I've just been waiting for a long time.

No worries - I'll be glad if there aren't any issues in this nightly that prevent you from porting.

What bothers me about this is that I don't have any real idea which bugs/issues you (and other forks) consider intolerable and which are just irritants. IMO it might be worth adding a "severity" field to trac so that we can distinguish tickets in this way, and focus on fixing the top-rated ones.

scud May 6, 2011 11:38

Previously I was under the impression that Enchant Weapon/Armour only got you as far as +10 before failing (or possibly being so unlikely to succeed that it was effectively 'impossible'). I've just dragged some arrows and speedy boots up to +15 levels. Nice.

Doesn't quite make up for losing my stock of books and scrolls and potions, though...

Derakon May 6, 2011 15:27

Yeah, the difficulty of enchanting was reduced awhile back. I couldn't tell you why, but at least in the case of armor it helps make up for the fact that you now need more AC than you used to.

PowerDiver May 6, 2011 19:16

Quote:

Originally Posted by Magnate (Post 52556)
What bothers me about this is that I don't have any real idea which bugs/issues you (and other forks) consider intolerable and which are just irritants. IMO it might be worth adding a "severity" field to trac so that we can distinguish tickets in this way, and focus on fixing the top-rated ones.

Some examples that come to mind:

Dungeon areas with no stairs, which is a killer for ironman or disconnected_stairs. Pits missing a wall. Invisible purple monsters. Since I focus on id-by-use issues, failure of dInv is a much bigger deal to me than to others. The newest one is the failure of weak wands like -sleep to affect even cutpurses. I haven't made it to testing if that was fixed or is still broken.

I wouldn't be surprised if half the issues I consider severe no one else find even serious, and presumably I am not the only one with a specific personal viewpoint, so I don't know if a new severity field is worth the effort.

Chud May 6, 2011 19:35

Quote:

Originally Posted by Magnate (Post 52554)
I added code to rd_item_2 which should convert the flags of objects in old savefiles so that they stack properly with new objects, but for some reason this isn't working.

Ah, okay. Time permitting I may try to see what's going on there (dust off my meager C skills a little). In the meantime it sounds like I should be able to solve the problem by ditching any items brought over form the previous build and just acquiring new ones in the current version then.

Quote:

In the meantime, apologies for the inconvenience w.r.t. stacking.
No worries at all - such is the world of the development release. :)

d_m May 6, 2011 20:32

Quote:

Originally Posted by PowerDiver (Post 52526)
I was wondering if it's completely unintentional, or a goof on something similar but intentional.

Don't look too hard. The previous nightly I have is dated 1/13, so it could have been introduced much earlier.

I can confirm that my character was completely unable to put a white icky thing to sleep with a wand of sleep monster.

This is in trac as bug #1427

myshkin May 7, 2011 01:10

Quote:

Originally Posted by PowerDiver (Post 52501)
There seems to have been a change, as of the 4/22 stuff I have been messing with, that gives monsters saving throws when they didn't use to have them. I couldn't even ID a wand [sleep monster I think] with repeated aims at a cutpurse. Was there any change to that in this 5/5 release?

I'm having trouble reproducing this; I was able to ID-by-use a wand of confuse monster with a level 1 dwarf priest versus a small kobold at 50' on the first try. With what level character were you aiming the wand? The base resist chance for sleep monster wands versus cutpurses is 27%, minus 1% for every five player levels.

(White icky things, being STUPID, cannot be slept.)

myshkin May 7, 2011 01:12

Quote:

Originally Posted by Chud (Post 52570)
Ah, okay. Time permitting I may try to see what's going on there (dust off my meager C skills a little). In the meantime it sounds like I should be able to solve the problem by ditching any items brought over form the previous build and just acquiring new ones in the current version then.

No need to spend effort here. I believe I've found and fixed the bug. But yes, your workaround should work between now and the next development release.

will_asher May 7, 2011 01:26

Quote:

Originally Posted by myshkin (Post 52582)
(White icky things, being STUPID, cannot be slept.)

So sleep monster was made even more useless than it already was?

Derakon May 7, 2011 01:29

If a monster can be asleep, then it should be sleepable. Therefore either mindless monsters should be sleepable or they should always start out awake. Given how marginal sleep-monster is already I'd lean towards the former.

PowerDiver May 7, 2011 01:36

Quote:

Originally Posted by myshkin (Post 52582)
I'm having trouble reproducing this; I was able to ID-by-use a wand of confuse monster with a level 1 dwarf priest versus a small kobold at 50' on the first try. With what level character were you aiming the wand? The base resist chance for sleep monster wands versus cutpurses is 27%, minus 1% for every five player levels.

I don't know, a paladin probably CL around 20 to 25. I could have been unlucky 4 times in a row before giving up. It might even have been just 3 tries, though I think it was 4 -- the only reason I tried multiple times was that I thought it might be wonder.

There didn't use to be much of a base resist. You were pretty much certain up to ML 11, and it was pointless beyond that. My original post was asking if there had been a change, rather than reporting it as a bug.

How long has a cutpurse had a save over 20%? It would surprise me that I did not notice.

myshkin May 7, 2011 02:35

Quote:

Originally Posted by PowerDiver (Post 52586)
I don't know, a paladin probably CL around 20 to 25. I could have been unlucky 4 times in a row before giving up. It might even have been just 3 tries, though I think it was 4 -- the only reason I tried multiple times was that I thought it might be wonder.

There didn't use to be much of a base resist. You were pretty much certain up to ML 11, and it was pointless beyond that. My original post was asking if there had been a change, rather than reporting it as a bug.

How long has a cutpurse had a save over 20%? It would surprise me that I did not notice.

Good question, and I didn't know the answer until I looked it up. The change in behavior appears to have entered the codebase at the end of January, with the merge of Jeff's monster pain messages patch (with some fixes from CunningGabe). Previously, immunity to sleep was governed only by the NO_SLEEP or UNIQUE flags; saving throw was 0 until level 11, and then was (mlvl - 10) in (clvl - 10). Now, immunity to sleep comes from NO_SLEEP, STUPID, EMPTY_MIND, WEIRD_MIND, and UNDEAD. Uniques get three saving throws (I think this is supposed to be two saving throws, but some code is duplicated). The saving throw is (25 + mlvl - clvl/5) in 100. The upshot is that it is easier to sleep high-level monsters than before, but much harder to sleep low-level monsters.

Jeff, if this is not what you intended, please comment.

will_asher May 7, 2011 02:48

Why would STUPID and WEIRD_MIND make a monster immune to sleep? doesn't make sense. What's the point of the NO_SLEEP flag if you use a bunch of different flags to decide what is immune to sleep? If something should be immune to sleep, it should have that flag, otherwise it should be able to be put to sleep.

Magnate May 7, 2011 10:37

Quote:

Originally Posted by myshkin (Post 52583)
No need to spend effort here. I believe I've found and fixed the bug. But yes, your workaround should work between now and the next development release.

Thank you, that's excellent. I will merge the fix in a new nightly today. Apologies to all concerned. The one piece of good news is that I'm not going mad - there is indeed nothing wrong with the code in rd_item_2 that sets the flags, but myshkin found a stray return earlier on, which meant it wasn't getting there for non-wearable items. Doh!

gudjkrist May 7, 2011 15:07

Just a quick thank you to the developers. Amazing work on a great game.

Do you recommend porting a Level 48 to the developmental version (from the April 23rd nightly) or just finishing the game on the old one?

d_m May 7, 2011 15:17

Quote:

Originally Posted by gudjkrist (Post 52610)
Just a quick thank you to the developers. Amazing work on a great game.

Do you recommend porting a Level 48 to the developmental version (from the April 23rd nightly) or just finishing the game on the old one?

I would definitely recommend finishing with that character.

If you *do* decide to port, I'd also make a backup copy... not for cheating but for recovering from in case of an emergency.

Max Stats May 12, 2011 16:59

Branded ammo doesn't show extra damage
 
1 Attachment(s)
I have branded a few stacks of ammo with the spell from Tensers, but when I examine them, they do not say that they are "branded" nor does the damage rating show that they do extra damage to monsters susceptible to their element. They do, however, get named according to their branding, and they can't be re-branded with another element. Ammo that is created already branded seems to function normally.

Version string is v3.2.0-820-g49911e7-dirtybash-4.1. Savefile attached (affected ammo is in quiver slots n, p, and r).

Spacebux May 12, 2011 17:17

Stack-bug / Null Pointer dereferenced / Crash.
 
Not sure where to throw this, but in the May 7th nightly (r82a3cef40a), I still had a program crash using 'n' to repeat an action with a stack of items on the floor.

Looks the code is tripping up with Line 132 in object/identify.c with the expression o_ptr -> kind

I have not tried to debug this any further. I think the code is getting snagged there because if nothing is left on the floor, the object_type pointer ought to be referencing something akin to NULL at that point. Not sure where the code is calling that bool from, but the problem is probably stemming from an incorrect command processing sequence, ... somewhere in cmd0.c, but I haven't found it yet....

I think there was a ticket open for this, if so, I haven't double-checked to see if it was closed or not.

Spacebux May 12, 2011 17:55

I think I found it in game-cmd.c...
 
Quote:

Originally Posted by Spacebux (Post 52812)
Not sure where to throw this, but in the May 7th nightly (r82a3cef40a), I still had a program crash using 'n' to repeat an action with a stack of items on the floor.

Looks like the bug is in game-cmd.c, line 540:

538 {
539 bool get_target = FALSE;
540 object_type *o_ptr = object_from_item_idx(cmd->arg[0].choice);
541
542 /* If we couldn't resolve the item, then abort this */
543 if (!o_ptr->kind) break;

I believe this is incorrect, as the code does not take into account that cmd->arg[0].choice could be NULL. It simply assumes the command references something that exists. The old 3.2.0 code is below, for comparison:

bool get_target = FALSE;

if (obj_needs_aim(object_from_item_idx(cmd->arg[0].choice)))

{
The old code correctly catches the condition. I don't know what if (!o_ptr->kind) break; catches, yet, but I bet it does not catch the case where cmd->arg[0].choice is NULL.

Apologies in advance if this is completely incorrect, as my C skills are quite feeble...

-SBux-

Spacebux May 12, 2011 22:18

I'm trying to compile, but failing horribly at the moment:

game-cmd.c:

538 {
539 bool get_target = FALSE;
540 object_type *o_ptr = object_from_item_idx(cmd->arg[0].choice);
541
542 /* check for a null pointer list before proceeding. */
543 if (!o_ptr) break;
544
545 /* If we couldn't resolve the item, then abort this */
546 if (!o_ptr->kind) break;

-SBux-

bulian May 13, 2011 02:27

Sorry if these are silly questions but...

Have ?recharge been removed from stores?
More than 50% of levels i'm getting are "superb" - is this just to make sure that we completely ignore level feelings?
I've seen at least one staff with known flavors where the charges were displayed before picking it up, possibly after drinking ?enlightenment
All items are displayed in a "maze?" level upon creation

Other feedback -
The game does seem harder in general that it did the last time i played. good job?
The new level design changes the feel of the game but are pretty cool - caverns have seemed very frequent.
Not a single randart yet by DL 39

Spacebux May 13, 2011 04:24

I got it, I finally found the offending part of the code, but I still don't have an idea on how to fix it yet. This took me a while to sort out where all the commands are coming from / being sent in the code. Wow.


In cmd-obj.c:

https://github.com/angband/angband/b...cmd-obj.c#L513

513 bool was_aware = object_flavor_is_aware(o_ptr);

This bool value calls object_flavor_is_aware() irregardless if o_ptr contains a NULL value, which is what it does when repeating to a command to Read a scroll that no longer exists on the floor.

Now, I have tried to work around this, but either way, I run into a segmentation fault if I purposely set was_aware to TRUE / FALSE. I might have screwed up the code elsewhere; in all my attempts to track down the command-train, I put in a bunch of msg commands.

-SBux-

takkaria May 13, 2011 09:07

Quote:

Originally Posted by Spacebux (Post 52829)
I got it, I finally found the offending part of the code, but I still don't have an idea on how to fix it yet. This took me a while to sort out where all the commands are coming from / being sent in the code. Wow.

Well done for getting that far! Following the code there isn't that easy...

Quote:

In cmd-obj.c:

https://github.com/angband/angband/b...cmd-obj.c#L513

513 bool was_aware = object_flavor_is_aware(o_ptr);

This bool value calls object_flavor_is_aware() irregardless if o_ptr contains a NULL value, which is what it does when repeating to a command to Read a scroll that no longer exists on the floor.

Now, I have tried to work around this, but either way, I run into a segmentation fault if I purposely set was_aware to TRUE / FALSE. I might have screwed up the code elsewhere; in all my attempts to track down the command-train, I put in a bunch of msg commands.

-SBux-
OK, I've filed a bug using this information but it's going to take a while to fix. The correct fix is in game-cmd.c, you were right before, it needs a safety check to make sure all the relevant bits of the command are still valid when repeating it.

Spacebux May 13, 2011 15:58

Quote:

Originally Posted by takkaria (Post 52837)
OK, I've filed a bug using this information but it's going to take a while to fix. The correct fix is in game-cmd.c, you were right before, it needs a safety check to make sure all the relevant bits of the command are still valid when repeating it.

Thank you for doing that.. but, all my attempts to perform a NULL pointer check in game-cmd.c failed---which is what threw me off so often. The repeat command sequence is quite elusive in the code. While most of the commands are well-defined in game-cmd.h/.c, how the code handles 'n' is not trivial, in my opinion (as a weak C-coder).

Somehow, even if you put in checks in game-cmd.c, the code still circumvents those checks and repeats the command. I still haven't mastered the flow of the code yet to comprehend how "assert()" is still being called even if a I insert a check for a NULL pointer in game-cmd.c or even into cmd-obj.c ahead of that line. Maybe checking o_ptr is not the answer...?

-SBux-

Spacebux May 13, 2011 18:55

Quaff crash.
 
BTW, I confirmed it also follows that quaffing a stack of potions off the floor will also get your the crash, since quaffing is also handled by the same generic do_cmd_use() routine.

Spacebux May 13, 2011 20:45

Fixed!
 
Fixed. This fixes crashes from eating a stack of food off the floor, quaffing potions off the floor, and reading scrolls off the floor when pressing 'n' or CTRL-V when the item count reaches 0.


In cmd-obj.c, insert:
void do_cmd_use(cmd_code code, cmd_arg args[])
{
int item = args[0].item;
object_type *o_ptr = object_from_item_idx(item);
int effect;

if (!item_is_available(item, NULL, (USE_INVEN | USE_FLOOR))) {
msg("That item is not within your reach.");
return;
}

bool ident = FALSE, used = FALSE;
bool was_aware = object_flavor_is_aware(o_ptr);
int dir = 5;

Maybe that is not the best place for it, but that check prevents the code from going further, generating segmentation faults and worse.

-SBux-

Magnate May 13, 2011 20:53

Quote:

Originally Posted by Max Stats (Post 52811)
I have branded a few stacks of ammo with the spell from Tensers, but when I examine them, they do not say that they are "branded" nor does the damage rating show that they do extra damage to monsters susceptible to their element. They do, however, get named according to their branding, and they can't be re-branded with another element. Ammo that is created already branded seems to function normally.

Version string is v3.2.0-820-g49911e7-dirtybash-4.1. Savefile attached (affected ammo is in quiver slots n, p, and r).

Oooh, well spotted - I think this is an obscure result of the object flags changes, because IIRC the ammo branding spell sets the ego type directly. Will check this.

EDIT: Yes - got it - thanks again. Fix will be in the next autobuilt version (but that might not be for a week or so).

Max Stats May 14, 2011 00:19

Very minor message formatting issue
 
Playing current nightly, after dropping artifact:

> You drop The Lucerne Hammer 'Turmil' (2d5) (+10,+11) [+8] <+4> (t).
> You no longer have the Lucerne Hammers 'Turmil' (2d5) (+10,+11) [+8] <+4> (t).

Spacebux May 15, 2011 19:28

Stone-to-Mud Crash.
 
Magnate, I think this one is for you (apologies if it is not..!):

Your new cavern levels do not have a Perma-wall surrounding the edges of the level. Hence, one can cause havoc (i.e., crashes) when digging or casting stone-to-mud at the edge of the level.


"Failed assertion: oidx <= z_info -> o_max at line 4281 of file object/obj-util.c"

This is the error message that pops up when you tunnel or attempt to remove the wall edge.

-SBux-

d_m May 15, 2011 19:36

Quote:

Originally Posted by Spacebux (Post 52901)
Magnate, I think this one is for you (apologies if it is not..!):

Your new cavern levels do not have a Perma-wall surrounding the edges of the level. Hence, one can cause havoc (i.e., crashes) when digging or casting stone-to-mud at the edge of the level.

That is my fault. I will fix it, thanks for reporting it!

SSK May 16, 2011 03:39

1 Attachment(s)
Quote:

Originally Posted by myshkin (Post 52457)
There is a new build of the development version of Angband. (I am trying to avoid the term "nightly," for reasons that should be clear.) I've started a new thread for it so that we can retire the very lengthy old one. Changes since the 23 April 2011 build:
  • Bug fixes: Curlicues Vault layout corrected; out of depth items can no longer reduce level feelings; out of depth item creation deep in the dungeon no longer crashes the game; ego item creation now recognizes when flags are already attached to a pvals; detect invisible now detects monsters again
  • Targetting displays a path from the player to the target.
  • Monster drops are created when the monster spawns.
  • Level feeling boosts from artifacts and ego items are more consistent.
  • The game records more specifically the origin of objects lying on the floor (special room, labyrinth, cavern, pit, vault, rubble).
  • Refactoring related to object flags, to the test harness, and to the stats module
  • Code cleanup and a function length utility
  • Artifact description edits

The teleport other description change is not in the version currently up on rephial (sorry, SSK!), but I do have a change committed, and hope to have that change in a new version on rephial later today.

Thanks for all of the feedback. Please follow up in this thread with any reports you may have.

Been playing a later version I guess

1) The description of the teleport other BOLT is now correct and not misleading. THANK YOU MYSHKIN (BTW my new character hasn't located Eonwe, but just found AULE HELLO! With Dor-Lomin, Dal-i-Thalion, ring o' speed, and other goodies, I think he's going to the bottom--carrying LIBERAL teleport level and some *destruction* now. TO is for losers without beaming). Playing more conservatively as well. I hope he doesn't go bye-bye due to a program bug.

2) Aha! now I understand why monsters are now dropping artifacts on superb levels rather than on-floor.

3) Minor issue: accents in item (artifact) descriptions still don't display right on my Mac version, and lack of spaces between some words has now cropped up. I notice the Mumakil plural and Craban/Crebain singular/plural thing hasn't yet been addressed. Trying to get you a screenshot example: OK attached the description of Dor-Lomin illustrating accent problem as well as spacing problem.

myshkin May 16, 2011 07:00

Quote:

Originally Posted by SSK (Post 52926)
3) Minor issue: accents in item (artifact) descriptions still don't display right on my Mac version, and lack of spaces between some words has now cropped up. I notice the Mumakil plural and Craban/Crebain singular/plural thing hasn't yet been addressed. Trying to get you a screenshot example: OK attached the description of Dor-Lomin illustrating accent problem as well as spacing problem.

The spaces are my fault; I failed to add them in some cases when I edited the artifact descriptions. Thanks for the report. I've fixed them in development.

I am aware of the plural and accent issues, and fixing them is on my to-do list.

Derakon May 16, 2011 18:58

Here's my comments from my previous character, who was running...hm, not sure what version, but I'll try to trim out stuff that I know has been fixed. Of course, much of this is irrelevant to the nightlies and more just musings on game balance.

* If you have a stack of two different kinds of money, it shows up as &. Seems like money could be consolidated, or just show as the most valuable of the resident types

* Lesser Recharging sucks. At clvl 35 you have odds of 1 in 3.27 of destroying a Wand of Firebolts with 3 charges in it; 1 in 5.26 if it's empty. Those increase to 1 in 8.3 (for an empty wand at that character level) for Greater Recharging.

* When you ignore torches, one of your options is "Ignore: All Wooden Torch".

* The various elemental wands have wildly varying damage ratings. Fireball wands are 2.25x better than lightning ball wands. That seems excessive at some level.

* I've seen numerous times that walls aren't present. E.g. an entire row taken out of a vault (replaced by empty space), or cross-shaped rooms whose inner room has holes in the corners.

* Monsters can teleport into vaults, e.g. via Rift or Teleport Away.

* Comments get truncated when saved to file. E.g. I have a comment "Well, it *was* guarded by water trolls, so I guess I got what". The line limit when writing a comment should be adjusted to suit the line limit in the file, or vice versa.

* The damage boosts for wands from magic device skill should be reflected in their descriptions (if only as "You get a 1.35x multiplier to this damage"). Drain Life and Annihilation are awesome wands -- Drain Life beats everything in Raal's, and Annihilation beats Mana Storm.

* ?Acquirement can generate squelched items (e.g. dungeon books), making it look like nothing happened. Of course, it shouldn't be guaranteed to generate non-squelched stuff...

* Maeglin gives less experience than Khamul. What.

* Recasting Haste Self doesn't reset the duration. Very irritating, since if you cast it awhile back and are about to start a big fight, you need to wait for it to expire before recasting.

* Stone to Mud wakes enemies that it passes through; Trap-Door Destruction doesn't. I guess because StM has the potential to harm enemies?

* Glaurung is able to breathe on me from here. Intended?
http://derakon.dyndns.org/~chriswei/temp2/los.png

* Boots of Elvenkind seem not very worthwhile now for how rare they are, since they consistently have bad speed boosts. More common or more speed (3-6?), one of the two.

* Qlzqqlzuup drops various ordinary items (i.e. not guaranteed good). Intended?

* Being able to cast Banishment renders graveyards and zoos trivially plunderable for their floor items. Of course this is only an endgame mage trick, so I don't know that it's worth fixing. NPP handles this by giving the items to the monsters in the nest, but then there's less temptation to try to clear the thing out.

* Randart names: Iron-Shod Boots of Gondolin; Quarterstaff 'Moron'.

* Morgoth really can't handle permanent walls at all; he got stuck ludicrously easily in a Bubbles vault. I'm guessing this has something to do with wall-eaters ignoring walls for purposes of pathing; shouldn't they not ignore permanent walls?

Timo Pietilš May 16, 2011 19:52

Quote:

Originally Posted by Derakon (Post 52943)
* Glaurung is able to breathe on me from here. Intended?
http://derakon.dyndns.org/~chriswei/temp2/los.png

Asymmetric targeting works both ways. You just got hockey-sticked.

IMO asymmetric targeting is not big problem if it would restrict to grids you really see. Glaurung doesn't see you from that position and you wouldn't be able to see Glaurung if things were reversed, so that should not be possible.

Magnate May 16, 2011 21:53

Quote:

Originally Posted by Derakon (Post 52943)
* The damage boosts for wands from magic device skill should be reflected in their descriptions (if only as "You get a 1.35x multiplier to this damage").

Nice idea - feel free to open a ticket for this. I suspect it's not too hard, though it might take a while to get around to it. Note that if you were playing Sangband or Crawl the designers would say that this is precisely the kind of info players should not have ...
Quote:

* Maeglin gives less experience than Khamul. What.
Ringwraiths have been overvalued for a long time, and I don't think the original designer (JLE?) knew how tough Maeglin would be. IIRC JLE's monsters were tougher for their xp than most of their predecessors. Ultimately monster xp should be based on monster power, but I want to do a bit more work on power first. (d_m is still keen to implement a situational power rating.)
Quote:

* Recasting Haste Self doesn't reset the duration. Very irritating, since if you cast it awhile back and are about to start a big fight, you need to wait for it to expire before recasting.
Shucks ;-) It doesn't re-set the duration, but it adds to it - so you can cast multiple times for a longer spell ...
Quote:

* Stone to Mud wakes enemies that it passes through; Trap-Door Destruction doesn't. I guess because StM has the potential to harm enemies?
Yes, this is WAD. Though in fact I would happily go for all bolt projections to wake all creatures they pass.
Quote:

* Glaurung is able to breathe on me from here. Intended?
No, I don't think so, but d_m is our LOS guru ...
Quote:

* Boots of Elvenkind seem not very worthwhile now for how rare they are, since they consistently have bad speed boosts. More common or more speed (3-6?), one of the two.
Thank you - a perfect use for multiple pvals. 1-4 stealth and 3-6 speed sounds fine. I'd even go 4-8 speed, maybe. Most ppl would wear +9 or +10 speed boots in most cases, so they'd still struggle to compete.
Quote:

* Qlzqqlzuup drops various ordinary items (i.e. not guaranteed good). Intended?
Don't think so - not sure how this happened.
Quote:

* Being able to cast Banishment renders graveyards and zoos trivially plunderable for their floor items. Of course this is only an endgame mage trick, so I don't know that it's worth fixing. NPP handles this by giving the items to the monsters in the nest, but then there's less temptation to try to clear the thing out.
My suggestion is to crank up the damage-per-monster from banishment. It could again be dependent on monster power - or we could use monster hp in the meantime.
Quote:

* Morgoth really can't handle permanent walls at all; he got stuck ludicrously easily in a Bubbles vault. I'm guessing this has something to do with wall-eaters ignoring walls for purposes of pathing; shouldn't they not ignore permanent walls?
Agreed. Pathfinding needs some serious love.

Derakon May 16, 2011 22:09

Quote:

Originally Posted by Magnate (Post 52957)
Nice idea - feel free to open a ticket for this. I suspect it's not too hard, though it might take a while to get around to it. Note that if you were playing Sangband or Crawl the designers would say that this is precisely the kind of info players should not have ...

Well, then they can not implement it. :) Vanilla's been going towards maximal transparency for awhile now, and this is just one more step along that route.

Quote:

Ringwraiths have been overvalued for a long time, and I don't think the original designer (JLE?) knew how tough Maeglin would be. IIRC JLE's monsters were tougher for their xp than most of their predecessors. Ultimately monster xp should be based on monster power, but I want to do a bit more work on power first. (d_m is still keen to implement a situational power rating.)
Fair enough. It's not a huge deal; just a bit jarring. Uniques don't account for a significant proportion of gained XP anyway.

Quote:

Shucks ;-) It doesn't re-set the duration, but it adds to it - so you can cast multiple times for a longer spell
Looking at the code, if you aren't currently hasted, then you get 1d(clvl + 20) added to the haste timer. Otherwise you get 1d5. Functionally the latter behavior is useless. I'd rather get "timer = max(cur timer, 1d(clvl + 20))". The goal after all is to guarantee that a casting will last you through the next fight, and the next fight is almost certain to exceed 50 game turns.

Quote:

...Yes, this is WAD. Though in fact I would happily go for all bolt projections to wake all creatures they pass.
Fine by me. The disparity just generally seems weird.

Quote:

No, I don't think so, but d_m is our LOS guru ...
Here I'd go for "visible doesn't mean targetable", NPP-style. But that's just me.

Quote:

Thank you - a perfect use for multiple pvals. 1-4 stealth and 3-6 speed sounds fine. I'd even go 4-8 speed, maybe. Most ppl would wear +9 or +10 speed boots in most cases, so they'd still struggle to compete.
Looking at egos.txt, current Elvenkind is +d6 speed; I think it's just that the only two examples I've found in-game have both rolled poorly. They're rarity-30 while Speed is rarity 24; I don't know how relative rarities affect drop rates but I'd guess they're on the order of four or five times less common than boots of speed. At that rate you're very likely to have found good speed boots by the time you find elvenkind, so it's low odds that they'd be worth using.

What if Elvenkind were more like rarity 14, and gave 3+d3 stealth and d4 speed? As an intermediary step between the "low" boots (FA, Stealth, Stability) and speed boots?

Quote:

My suggestion is to crank up the damage-per-monster from banishment. It could again be dependent on monster power - or we could use monster hp in the meantime.
I can't really see that making a difference unless trying to use banishment against a graveyard could kill you from max HP...and since graveyards are full of differently-symboled monsters, that could be problematic. Should you die for banishing 10 Black Reavers? What if you want to remove the one in this vault that's letting all the monsters out and Feagwath's on the other side of the level where you haven't seen him yet?

Max Stats May 16, 2011 22:10

Crash using monster recall in very latest dev code
 
Downloaded from staging branch and compiled just minutes ago (version v3.2.0-820-g49911e7-dirtybash-4.1). By inserting debugging messages, I have traced the crash to the exit of function get_attack_colors in monster1.c but don't know enough about the code to see exactly why it crashes. It is not savefile-related; you can get the crash by starting a brand new character, targeting a townsperson, and pressing "r" to see the monster recall.

Magnate May 16, 2011 22:53

Quote:

Originally Posted by Max Stats (Post 52962)
Downloaded from staging branch and compiled just minutes ago (version v3.2.0-820-g49911e7-dirtybash-4.1). By inserting debugging messages, I have traced the crash to the exit of function get_attack_colors in monster1.c but don't know enough about the code to see exactly why it crashes. It is not savefile-related; you can get the crash by starting a brand new character, targeting a townsperson, and pressing "r" to see the monster recall.

Please don't use the staging branch. But that crash should now be fixed ...

EDIT: actually, please use the staging branch all you like - but please don't post about it here, as it will confuse things. If you have a question or comment about anything in staging, please come to #angband-dev on IRC.

Magnate May 16, 2011 23:07

Quote:

Originally Posted by Derakon (Post 52961)
Well, then they can not implement it. :) Vanilla's been going towards maximal transparency for awhile now, and this is just one more step along that route.

Yup - this is both why I gave up Crawl and why I prefer Joshua's maintainership to Leon's.
Quote:

Looking at the code, if you aren't currently hasted, then you get 1d(clvl + 20) added to the haste timer. Otherwise you get 1d5. Functionally the latter behavior is useless. I'd rather get "timer = max(cur timer, 1d(clvl + 20))". The goal after all is to guarantee that a casting will last you through the next fight, and the next fight is almost certain to exceed 50 game turns.
Hmmkay. I don't really have a strong view, but I'm inclined towards not making it more useful.
Quote:

Looking at egos.txt, current Elvenkind is +d6 speed; I think it's just that the only two examples I've found in-game have both rolled poorly. They're rarity-30 while Speed is rarity 24; I don't know how relative rarities affect drop rates but I'd guess they're on the order of four or five times less common than boots of speed. At that rate you're very likely to have found good speed boots by the time you find elvenkind, so it's low odds that they'd be worth using.

What if Elvenkind were more like rarity 14, and gave 3+d3 stealth and d4 speed? As an intermediary step between the "low" boots (FA, Stealth, Stability) and speed boots?
Well, rarity doesn't work like it used to at all. 100/rarity is the number of entries in the ego_alloc table. So elvenkind gets 3 entries and speed gets 4, making speed 33% more common, currently (assuming both are in-depth). I wouldn't be averse to making speed once again the ultimate boots, and making elvenkind more common. IMO speed boots are too common anyway, and ought to go to 50 or 100 (2 or 1 entries). Elvenkind could then stay as is, with d6 about right.
Quote:

I can't really see that making a difference unless trying to use banishment against a graveyard could kill you from max HP...and since graveyards are full of differently-symboled monsters, that could be problematic. Should you die for banishing 10 Black Reavers? What if you want to remove the one in this vault that's letting all the monsters out and Feagwath's on the other side of the level where you haven't seen him yet?
Wait a minute. I was thinking Mass Banishment. Surely a zoo or graveyard is not trivial to clear using normal banishment because of the number of different species? Plus, there aren't that many floor objects anyway, compared with the number carried by graveyard denizens. And surely they can pick up the floor objects too? You have a point about zoos, since you probably only need to banish Z and M, but IMO there shouldn't be much on the floor of a zoo ... anyway, how about making Banishment fail occasionally on a per-monster basis? So you're 90% likely to get rid of a single critter, but if there are ten Black Reavers you're likely to need more than one cast ...

Derakon May 16, 2011 23:19

Quote:

Originally Posted by Magnate (Post 52966)
Hmmkay. I don't really have a strong view, but I'm inclined towards not making it more useful.

My options here are basically to either a) sleep until haste runs out, then re-cast it, or b) go into combat and hope it doesn't run out at a bad time. Is this really desirable?
Quote:

Well, rarity doesn't work like it used to at all. 100/rarity is the number of entries in the ego_alloc table. So elvenkind gets 3 entries and speed gets 4, making speed 33% more common, currently (assuming both are in-depth).
Ah, okay. Good to know. I was basing my relative rarities on across-entire-game rates, and Elvenkind boots are native to dlvl 60, which explains the difference I was seeing.
Quote:

I wouldn't be averse to making speed once again the ultimate boots, and making elvenkind more common. IMO speed boots are too common anyway, and ought to go to 50 or 100 (2 or 1 entries). Elvenkind could then stay as is, with d6 about right.
Fine by me.
Quote:

Wait a minute. I was thinking Mass Banishment. Surely a zoo or graveyard is not trivial to clear using normal banishment because of the number of different species?
Mages have infinite of both spells, so they can pick whichever they like. I generally prefer Banishment for acting across the entire level and only taking out the specific monster types I don't want to fight -- using Mass Banishment against a graveyard requires you to get close enough to activate the monsters. In fact I don't think I cast Mass Banishment more than once with my last character...and that once was only to remove the {untried} tag. I'd be fine with Mass Banishment's hitpoint cost going up, since in that scenario you have a good idea of how many monsters are in the area of effect.
Quote:

Plus, there aren't that many floor objects anyway, compared with the number carried by graveyard denizens. And surely they can pick up the floor objects too? You have a point about zoos, since you probably only need to banish Z and M, but IMO there shouldn't be much on the floor of a zoo ... anyway, how about making Banishment fail occasionally on a per-monster basis? So you're 90% likely to get rid of a single critter, but if there are ten Black Reavers you're likely to need more than one cast ...
Fine by me. Again I don't think this is a serious issue, since as you noted there's not all that much in graveyards/zoos anyway.

Zikke May 17, 2011 03:07

Quote:

Originally Posted by Derakon (Post 52967)
My options here are basically to either a) sleep until haste runs out, then re-cast it, or b) go into combat and hope it doesn't run out at a bad time. Is this really desirable?

It seems to me like just resetting the duration to the original duration would maintain game balance and would help avoid irritating wait times. IMO this should be the case for all duration-based spells (like Bless, etc.).

Resetting the duration seems to me to be the most common method in general for other games and probably already fits the mental model of most players as what would happen if they recast the spell. Part of having temporary buffs is having to plan for refreshing that buff if the fight lasts too long.

Just throwing in my opinion.

Quote:

I'd be fine with Mass Banishment's hitpoint cost going up, since in that scenario you have a good idea of how many monsters are in the area of effect.
I agree that adding more damage to Banishment would really add unnecessary risk of insta-death to the game since it affects the entire level and not just your own detection range. The current damage per monster is balanced about right to account for a pit off in the distance or a unique on the level with minions.

Or you can make it not kill you outright from damage, but reduce you to 0 hp and stun you or hallucinate you for a while, or cause a *destruction* around you if you asplode too many baddies at once.

buzzkill May 17, 2011 03:31

Quote:

Originally Posted by Zikke (Post 52968)
It seems to me like just resetting the duration to the original duration would maintain game balance and would help avoid irritating wait times. IMO this should be the case for all duration-based spells (like Bless, etc.).

This... or make it cumulative, but not to exceed twice the maximum normal duration.

It always bothered me that it was possible to buy a stack of Protection From Evil (for example), read them all while waiting for recall to kick in, and be protected for a long, long time... probably until you're ready to recall back to town again.

takkaria May 17, 2011 04:14

Quote:

Originally Posted by buzzkill (Post 52969)
This... or make it cumulative, but not to exceed twice the maximum normal duration.

It always bothered me that it was possible to buy a stack of Protection From Evil (for example), read them all while waiting for recall to kick in, and be protected for a long, long time... probably until you're ready to recall back to town again.

Maybe we should implement lower caps on such effects - at the moment I think it's set at 10k turns... a few hundred should probably suffice, right?

Antoine May 17, 2011 04:21

Quote:

Originally Posted by Derakon (Post 52943)
* Being able to cast Banishment renders graveyards and zoos trivially plunderable for their floor items. Of course this is only an endgame mage trick, so I don't know that it's worth fixing. NPP handles this by giving the items to the monsters in the nest, but then there's less temptation to try to clear the thing out.

Is there some halfway-house - like, when a monster is Banished, any objects it is standing on are destroyed?

A.

Derakon May 17, 2011 06:25

Quote:

Originally Posted by Antoine (Post 52971)
Is there some halfway-house - like, when a monster is Banished, any objects it is standing on are destroyed?

A.

I really don't think this needs fixing, honestly. It's such a niche case, and besides, punishing mages for one of their few useful abilities (namely, to avoid fights that are not worth fighting without having to avoid the monsters involved) just seems uncalled-for.

scud May 17, 2011 12:37

What is 'weak' branding?

I am at present seeing "You slightly burn the Ethereal hound", and I find the qualifier 'slightly' far more amusing than I probably should...

buzzkill May 17, 2011 12:39

Quote:

Originally Posted by Derakon (Post 52976)
I really don't think this needs fixing, honestly. It's such a niche case, and besides, punishing mages for one of their few useful abilities (namely, to avoid fights that are not worth fighting without having to avoid the monsters involved) just seems uncalled-for.

It's not really a punishment. Assuming, as you say, the point is to "avoid fights that are not worth fighting", then that is accomplished. If the point was actually to gather a room full of treasure by doing something rather ordinary for a mage, namely casting a spell, then yes it's a punishment.

Derakon May 17, 2011 15:33

Quote:

Originally Posted by scud (Post 52978)
What is 'weak' branding?

I am at present seeing "You slightly burn the Ethereal hound", and I find the qualifier 'slightly' far more amusing than I probably should...

Magnate added some x2 brands, with the idea that they might be more viable for off-weapon branding (though as far as I'm aware nothing uses them yet in the standard set). Feel free to suggest better messaging.

Starhawk May 17, 2011 17:18

"singe" might be better verbiage than "slightly burn." :p

Derakon May 17, 2011 17:59

Quote:

Originally Posted by buzzkill (Post 52979)
It's not really a punishment. Assuming, as you say, the point is to "avoid fights that are not worth fighting", then that is accomplished. If the point was actually to gather a room full of treasure by doing something rather ordinary for a mage, namely casting a spell, then yes it's a punishment.

Okay, let me put it this way: this is an "obvious rule patch", a change in the rules solely to prevent some undesirable behavior, that makes no sense in-universe. Banishment destroys monsters. Naturally that means that the monsters' inventories are gone. Why should it affect things on the floor? The spell explicitly targets monsters, not terrain or objects.

Now, obvious rule patches can be acceptable or even important if the alternative is seriously broken. Then there's an obvious strong justification -- if we didn't do this, then this undesirable result would occur, with a significant impact on the game. If you don't have that kind of strong justification, though, then obvious rule patches are undesirable, because they break the illusion of a consistent world.

Basically, what we have here is a corner case that is, yes, technically exploitative. The requirements for exploitation require you to be playing a specific class and to have gotten that class's last spellbook, so there's a very narrow window for exploitation before you go on to win the game. If you patch the game to remove this exploitation, then all the other presumably-justified uses of the Banishment ability in more limited form (scrolls and staves) have this bizarre behavior for no real gain.

In other words, I don't think the cost-benefit is there.

Max Stats May 17, 2011 19:50

Quote:

Originally Posted by Starhawk (Post 52987)
"singe" might be better verbiage than "slightly burn." :p

I like that too. What about the other elements?

Frost: "You chill it." (or, to be silly, "You give it a mild case of frostbite.")
Acid: "You irritate it."
Lightning: "You zap it" is currently the strong version; maybe this should be the weak version, and "You shock it" should be the strong version. I thought of "You electrocute it" but technically that would mean you killed it.
Poison: Not sure here... "You sicken it" or "You nauseate it" sounds just as strong as "You poison it" besides the fact that they make it sound like your character is just ugly. :)

Magnate May 17, 2011 20:24

Quote:

Originally Posted by Derakon (Post 52988)
In other words, I don't think the cost-benefit is there.

What is your day job? Lawyer? You have an amazing way of explaining things clearly. I wish I could do that.

Magnate May 17, 2011 20:30

Quote:

Originally Posted by Max Stats (Post 52989)
I like that too. What about the other elements?

Frost: "You chill it." (or, to be silly, "You give it a mild case of frostbite.")
Acid: "You irritate it."
Lightning: "You zap it" is currently the strong version; maybe this should be the weak version, and "You shock it" should be the strong version. I thought of "You electrocute it" but technically that would mean you killed it.
Poison: Not sure here... "You sicken it" or "You nauseate it" sounds just as strong as "You poison it" besides the fact that they make it sound like your character is just ugly. :)

Ok, I've made changes to fire (singe), lightning (zap and shock) and poison (sicken). Chill was already in place - I'm just looking for something better than irritate for x2 acid brand, as irritate is more like enrage than corrode. Melts?

Derakon May 17, 2011 20:31

Here's my votes for weak/strong brands:

Frost: chill / freeze
Fire: singe / burn
Lightning: shock / zap (I feel "zap" sounds stronger than "shock", personally...)
Acid: corrode / dissolve
Poison: poison / strongly poison (...I got nuthin', aside from that "weakly X" is worse IMO than "strongly X" since the weak variant is still stronger than a bog-standard attack)

My day job, oddly enough, is software development. But thanks for the compliment. :)

Magnate May 17, 2011 20:32

Quote:

Originally Posted by Derakon (Post 52985)
Magnate added some x2 brands, with the idea that they might be more viable for off-weapon branding (though as far as I'm aware nothing uses them yet in the standard set). Feel free to suggest better messaging.

The x2 cold brand is on Paurnimmen in the nightlies. So far it doesn't appear to be dramatically unbalancing.

Nick May 17, 2011 21:51

Quote:

Originally Posted by Magnate (Post 52990)
What is your day job? Lawyer? You have an amazing way of explaining things clearly.

Not a lawyer, then ;)

Max Stats May 17, 2011 22:43

Quote:

Originally Posted by Derakon (Post 52992)
My day job, oddly enough, is software development. But thanks for the compliment. :)

Aren't software developers usually obfuscators instead of explainers? :p

buzzkill May 18, 2011 02:13

Before we go any further, I'm discussing what I believe to be Mass Banishment (hereafter referred to as Banishment), the one that removes everything around you, not the one that targets a specific race. My bad if I'm off topic.

Quote:

Originally Posted by Derakon (Post 52988)
Okay, let me put it this way: this is an "obvious rule patch", a change in the rules solely to prevent some undesirable behavior, that makes no sense in-universe. Banishment destroys monsters. Naturally that means that the monsters' inventories are gone. Why should it affect things on the floor? The spell explicitly targets monsters, not terrain or objects.

Your making assumptions that aren't necessarily true. Literally, Banishment should banish things. Who's to say that it's only monsters. Using your logic, I could just as easily definitively state it to be only treasures. Banishment targets monsters only because that's what it has always done. It could just as easily be interpreted to banish all things in the vicinity.

Quote:

Now, obvious rule patches can be acceptable or even important if the alternative is seriously broken. Then there's an obvious strong justification -- if we didn't do this, then this undesirable result would occur, with a significant impact on the game. If you don't have that kind of strong justification, though, then obvious rule patches are undesirable, because they break the illusion of a consistent world.
Since when is a "strong justification" needed to push something into nightlies. While the current implementation isn't broken, it is highly exploitable by the mage class, or by anyone with the right scroll. Consistency isn't Angband's strong suit, legacy is. Lot's of things in Angband make no sense and are inconsistent. These things are generally accepted because player are used to them and/or it's the way it always been.

Quote:

Basically, what we have here is a corner case that is, yes, technically exploitative. The requirements for exploitation require you to be playing a specific class and to have gotten that class's last spell book, so there's a very narrow window for exploitation before you go on to win the game.
An exploit none the less. Why not fix it? Are we still "making the game harder" or has that been abandoned already. In terms of cost/benefit, the best way to make the harder is to eliminate known exploits.

Quote:

If you patch the game to remove this exploitation, then all the other presumably-justified uses of the Banishment ability in more limited form (scrolls and staves) have this bizarre behavior for no real gain.
It's not bizarre behavior, it's just a little different from what we're used to. It might even produce unanticipated good side effects, like players actually fighting monsters rather than skipping by them. Of course, they would still have the option to skip by them, just at a cost.

Quote:

In other words, I don't think the cost-benefit is there.
The benefit is there, what's the cost? I doubt that coding this would be that big of a deal, but what do I know.

SSK May 18, 2011 05:53

For what it's worth, I side with Derakon on Banishment (the spell at issue here is Banishment, not Mass Banishment--the one where you eliminate a monster symbol, formerly known as "genocide"). Leave it alone. Mages are weak enough and others don't get unlimited banishment except if they have Celeborn--thus its limited availability is already a balancing factor.

As for branding language:

I like:

Flame:
STRONG: Scorch, Incinerate, Immolate, Burn
WEAK: Singe, Braise, Char

Frost:
STRONG: Freeze
WEAK: Chill

Lightning:
STRONG: Electrocute
WEAK: shock, zap

Venom:
STRONG: Poison
WEAK: Sicken, toxify, blight

Acid:
STRONG: Blister, Burn (if we decide to go with a different word for flame)
WEAK: corrode, scathe

I also propose better language for *slay* vs slay for dragon and demon (don't like "fiercely smite" much)

*SLAY*: Wallop, Lambaste, Smash
slay: smite

Taking this further, one could also extend specific words to weapon types:

Blunt: Strike, Hit, bash
Slashing swords: Slash
Scythes: slice
puncturing weapons: Impale, pierce

But this would be harder and there are combo type weapons like Halberds...

Taha May 18, 2011 14:07

Mass Banishment, if it also removes items, becomes Destruction minus the messy terrain, but with damage to the character so less useful as an escape. If we really want to go down that road (my vote is against it), then I think we are better off removing Mass Banishment rather than changing it into a less useful version of Destruction.

Normal one monster Banishment is just as easy if you are talking about clearing pits with a mage; by the time a mage has the spell, he has more than enough mana to cast it repeatedly, and it can be done from any range.

With destruction removing artifacts from the floor, luring the monsters out of an undead pit before destructing them has already become a relevant strategy. This just leaves you with another spell requiring the same thing.

Max Stats May 18, 2011 14:59

Bug ignoring unidentified rod
 
I have hard-coded some squelch settings into my copy of the game, so that items that I think are always useless are pre-squelched to save myself the trouble. Because of this, I have several items that are squelched before they are identified. I had an unidentified rod in my inventory, and I used the ignore command on it. My choices were:

a) This item only
b) Unignore all Iron Rod

I suspected that this meant that this was one of the rods I had "pre-squelched" so I identified it, and sure enough it was. So if you try to ignore an unidentified item that would be squelched if it were identified, you get tipped off that it is an item in your squelch list.

A very patient player could ID an item for free (assuming it had been seen in previous games to show up in the squelch list) by squelching items of the same kind, ignoring the unknown item (but aborting the command), then refining the squelch list and repeating until the item is isolated. It's not a major exploit, because it requires a lot of work for a pretty minor gain.

SSK May 19, 2011 01:15

Quote:

Originally Posted by Max Stats (Post 53030)
I have hard-coded some squelch settings into my copy of the game, so that items that I think are always useless are pre-squelched to save myself the trouble. Because of this, I have several items that are squelched before they are identified...

Actually, this brings up an issue I'd wanted to raise:

Can we have the default at the beginning of the game set to ignore certain worthless items without having to set them all by hand every dang time you play?

I mean can't we have it begin as default to squelch "bad" for quality settings instead of "none"?

Max Stats May 19, 2011 01:31

Quote:

Originally Posted by SSK (Post 53044)
Can we have the default at the beginning of the game set to ignore certain worthless items without having to set them all by hand every dang time you play?

I would like this to be an option on the squelch screen, to save the current squelch settings to a .prf file to be used as starting squelch settings when creating a new character. This would work best if saved to a class-specific pref file (Warrior.prf, Mage.prf, etc.) because different classes find different items useful, and you won't have to worry about making a new copy when you start a character with a different name.

Quote:

Originally Posted by SSK (Post 53044)
I mean can't we have it begin as default to squelch "bad" for quality settings instead of "none"?

This fix is as simple as changing a '0' to a '1' in squelch_init (or maybe it is init_squelch, not 100% sure ATM).

takkaria May 19, 2011 03:27

Quote:

Originally Posted by Max Stats (Post 53030)
I have hard-coded some squelch settings into my copy of the game, so that items that I think are always useless are pre-squelched to save myself the trouble. Because of this, I have several items that are squelched before they are identified. I had an unidentified rod in my inventory, and I used the ignore command on it. My choices were:

a) This item only
b) Unignore all Iron Rod

I suspected that this meant that this was one of the rods I had "pre-squelched" so I identified it, and sure enough it was. So if you try to ignore an unidentified item that would be squelched if it were identified, you get tipped off that it is an item in your squelch list.

A very patient player could ID an item for free (assuming it had been seen in previous games to show up in the squelch list) by squelching items of the same kind, ignoring the unknown item (but aborting the command), then refining the squelch list and repeating until the item is isolated. It's not a major exploit, because it requires a lot of work for a pretty minor gain.

Hmm, did you hardcode this in the pref files or in the source code?

Max Stats May 19, 2011 20:28

Quote:

Originally Posted by takkaria (Post 53049)
Hmm, did you hardcode this in the pref files or in the source code?

I did it in the source code, as described here (I think the function names have changed since I wrote this post). Is it possible to do it in the pref files? That would probably be a better solution, since I wouldn't have to keep reinserting the code every time I update to a new version.

Spacebux May 20, 2011 22:52

Separate Squelch Issue
 
I noticed no longer is one able to say kill a certain # of a specific item from inventory or quiver. However, if you tried to say, drop x items from a stack of y in one of your slots, then kill that item on the ground, it actually does not destroy those items just dropped.

The kill code was working fine in 3.2.0, I thought... I know you guys are working hard on revamping the item-handling code, but this current revision of kill/squelch is a bit spotty.

I like the work and effort being done to increase usability of item squelch in the vanilla code, but at times it seems like for all the effort you are putting into the project, its coming out as a less useful solution to what already exists. (***Please, I'm trying to be tender here!***)

If you can cinch up the 'k'ill code a tad more, then you will have improved on the older 3.2.0 system.

-SBux-

Magnate May 21, 2011 10:55

Quote:

Originally Posted by Spacebux (Post 53128)
I noticed no longer is one able to say kill a certain # of a specific item from inventory or quiver. However, if you tried to say, drop x items from a stack of y in one of your slots, then kill that item on the ground, it actually does not destroy those items just dropped.

The kill code was working fine in 3.2.0, I thought... I know you guys are working hard on revamping the item-handling code, but this current revision of kill/squelch is a bit spotty.

I like the work and effort being done to increase usability of item squelch in the vanilla code, but at times it seems like for all the effort you are putting into the project, its coming out as a less useful solution to what already exists. (***Please, I'm trying to be tender here!***)

If you can cinch up the 'k'ill code a tad more, then you will have improved on the older 3.2.0 system.

-SBux-

I'm pretty sure this has been mentioned before, but just for clarity: we're trying to move from a system where items can actually be destroyed to one where they are actually just hidden from view (squelched). The current system has more or less moved to this new paradigm, but one of the wrinkles yet to be ironed out is that you can't squelch part of a stack, whereas you could previously destroy part of a stack. This will of course be sorted out eventually.

Spacebux May 23, 2011 16:43

Quote:

Originally Posted by Spacebux (Post 52851)
Fixed. This fixes crashes from eating a stack of food off the floor, quaffing potions off the floor, and reading scrolls off the floor when pressing 'n' or CTRL-V when the item count reaches 0.


In cmd-obj.c, insert:
void do_cmd_use(cmd_code code, cmd_arg args[])
{
int item = args[0].item;
object_type *o_ptr = object_from_item_idx(item);
int effect;

if (!item_is_available(item, NULL, (USE_INVEN | USE_FLOOR | USE_EQUIP))) {
msg("That item is not within your reach.");
return;
}

bool ident = FALSE, used = FALSE;
bool was_aware = object_flavor_is_aware(o_ptr);
int dir = 5;

Maybe that is not the best place for it, but that check prevents the code from going further, generating segmentation faults and worse.

-SBux-

Update:
My artifacts were no longer activatable...

I modified my code above to included the USE_EQUIP flag check. My items are activatable again.

-SBux-


All times are GMT +1. The time now is 00:36.

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