Angband 4.0 beta release
Collapse
X
-
I agree with you, this is exactly what is happening (and nice catch spotting this just from the observed behaviour).Judging by the pattern of which doors are missing, I'm going to take a stab that the problem is with where the symbols used in room_template.txt have been semi-standardised with vault symbols, and the "place some monsters and treasures nearby" symbol, (previously !) has been changed to a number 9. It looks like the code is possibly reading 3-followed-by-9 as 39 and failing to place a door because it doesn't recognise it's a 3, or something similar.
The code that parses these rooms contains the line (gen-room.c:1913):
where t is a pointer into the room template. Due to C's confusion between char-pointers and strings, atoi will read as many successive characters as possible from the room template and try to convert them into a number.Code:doorpos = atoi(t);
Leave a comment:
-
Well, the initial example I was actually going to post was this one:Judging by the pattern of which doors are missing, I'm going to take a stab that the problem is with where the symbols used in room_template.txt have been semi-standardised with vault symbols, and the "place some monsters and treasures nearby" symbol, (previously !) has been changed to a number 9. It looks like the code is possibly reading 3-followed-by-9 as 39 and failing to place a door because it doesn't recognise it's a 3, or something similar.
Which follows the exact same pattern.Code:[bc=black][color=lightgrey] ############### #.............# #.#.###.#####.# #.#...#.#...#.# #.#...#.[COLOR="#C08040"]'[/COLOR]...#.# #.#...#.#...#.# #.#####.#####.# #.............# ############### [/color][/bc]
I actually specifically scummed for the "Ten little boxes" layout because I remembered seeing one with broken walls before and wanted to see if it bore out my hunch that it was happening in the same situation with the 9s - which it did - and I thought it would make a more illustrative example. (Although from if the code hasn't changed from before, I don't really see how it actually could be reading the two numbers together instead of taking them one at a time - but I confess I'm baffled as to why it follows so predictable a pattern otherwise.)Code:[bc=black][color=lightgrey]D:%%%%%%%%%%%%%%% D:%.............% D:%.##2##.##4##.% D:%.#...#.#...#.% D:%.1...[color=orange]3[/color]9[color=orange]3[/color]...1.% D:%.#...#.#...#.% D:%.##4##.##2##.% D:%.............% D:%%%%%%%%%%%%%%%[/color][/bc]
I'll keep an eye out for any more examples...Leave a comment:
-
Nice guess, but I don't think that's the problem - but I have no idea what the problem actually is, and I'm often wrong. Please keep an eye out for other malformed template rooms that might give clues.Judging by the pattern of which doors are missing, I'm going to take a stab that the problem is with where the symbols used in room_template.txt have been semi-standardised with vault symbols, and the "place some monsters and treasures nearby" symbol, (previously !) has been changed to a number 9. It looks like the code is possibly reading 3-followed-by-9 as 39 and failing to place a door because it doesn't recognise it's a 3, or something similar.Leave a comment:
-
When my Rogue switches back and forth between super heavy armour (AC 102 adamantite plate) and leather, not only is the SP display incorrect. Also the AC is not always updated correctly, the old values remain even after switch. I will make a copy of the savefile if it turns out to be hard to reproduce.Leave a comment:
-
There seems to be an issue with the randomly positioned doors not always being generated correctly for templated rooms, causing the generation process to make a break in the wall. For instance, I've just come across this:
Which is seemingly supposed to be this layout with the doors in position 3:Code:[bc=black][color=lightgrey] ####################### #.....................# #.#.#.###.###.#.#.###.# #.#.#.#.[COLOR="#C08040"]'[/COLOR].#.[COLOR="#C08040"]'[/COLOR].#.#.#.[COLOR="#C08040"]'[/COLOR].# #.###.###.###.###.###.# #.....................# #.###.###.#.#.###.###.# #.[COLOR="#C08040"]'[/COLOR].#.[COLOR="#C08040"]'[/COLOR].#.#.#.[COLOR="#C08040"]'[/COLOR].#.[COLOR="#C08040"]'[/COLOR].#.# #.###.###.###.###.###.# #.....................# ####################### [/color][/bc]
Judging by the pattern of which doors are missing, I'm going to take a stab that the problem is with where the symbols used in room_template.txt have been semi-standardised with vault symbols, and the "place some monsters and treasures nearby" symbol, (previously !) has been changed to a number 9. It looks like the code is possibly reading 3-followed-by-9 as 39 and failing to place a door because it doesn't recognise it's a 3, or something similar.Code:[bc=black][color=lightgrey]D:%%%%%%%%%%%%%%%%%%%%%%% D:%.....................% D:%.#2#.#2#.#2#.#2#.#2#.% D:%.1.[color=orange]3[/color]91.[color=orange]3[/color].19[color=orange]3[/color].1.[color=orange]3[/color]91.[color=orange]3[/color].% D:%.#4#.#4#.#4#.#4#.#4#.% D:%.....................% D:%.#4#.#4#.#4#.#4#.#4#.% D:%.[color=orange]3[/color].19[color=orange]3[/color].1.[color=orange]3[/color]91.[color=orange]3[/color].19[color=orange]3[/color].1.% D:%.#2#.#2#.#2#.#2#.#2#.% D:%.....................% D:%%%%%%%%%%%%%%%%%%%%%%%[/color][/bc]
Leave a comment:
-
I was finding that my mage's SP was usually set to 0 every time I reloaded a savefile. Looks like the problem is that max SP is sometimes calculated with an uninitialised INT of zero. I think this fix does what was intended:
Code:--- a/src/player-calcs.c +++ b/src/player-calcs.c @@ -1296,10 +1296,10 @@ static void calc_spells(struct player *p) /** * Get the player's max spell points per effective level */ -int mana_per_level(struct player *p) +int mana_per_level(struct player *p, struct player_state *state) { int stat = p->class->magic.spell_realm->stat; - return adj_mag_mana[p->state.stat_ind[stat]]; + return adj_mag_mana[state->stat_ind[stat]]; } /** @@ -1326,7 +1326,7 @@ static void calc_mana(struct player *p, struct player_state *state) levels = (p->lev - p->class->magic.spell_first) + 1; if (levels > 0) { msp = 1; - msp += mana_per_level(p) * levels / 100; + msp += mana_per_level(p, state) * levels / 100; } else { levels = 0; msp = 0;Last edited by passer_by; May 2, 2015, 20:35.Leave a comment:
-
Today's release. Rogue L30, insane amount of armour (AC170). SP = 4/4 in main screen but Character Screen with "C" (roguelike) says SP = 0/0. And I can't cast any spells, so the character screen seems correct.Leave a comment:
-
Leave a comment:
-
When finding rings of known type the message is not as before. You get this also in the item list even before picking it up.Update bdd602d:- Makes a lot of PowerWyrm's suggested fixes to ID
- Fixes some bad object names and descriptions (PowerWyrm again)
- Fixes the bug where immunities were broken, which actually broke a whole lot of resistance-related stuff
Please report wherever ID and anything involving balls, bolts and breaths hitting the player seems not to be working.
You see a Ring of Reckless attacks {worn}
You see a Ring of the Mouse {worn}
You see a Ring of Protection {worn}Leave a comment:
-
Update bdd602d:- Makes a lot of PowerWyrm's suggested fixes to ID
- Fixes some bad object names and descriptions (PowerWyrm again)
- Fixes the bug where immunities were broken, which actually broke a whole lot of resistance-related stuff
Please report wherever ID and anything involving balls, bolts and breaths hitting the player seems not to be working.Leave a comment:
-
Thanks. Mercifully the actual setting of booleans like this seems to be confined to obj-desc and obj-info - there's a lot of use of things like (mode & ODESC_TERSE) in conditionals, which should be fine.Terse mode doesn't show terse info.
Tested in debug mode, the "mode" flag contains "ODESC_TERSE", the boolean value is set to FALSE. This is because unary operators don't return a boolean value. So the correct code is:Code:bool terse = (mode & ODESC_TERSE);
There are a LOT of such declarations in the code. It's probably a good time to fix them all...Code:bool terse = (mode & ODESC_TERSE)? TRUE: FALSE;
Leave a comment:
-
Minor message issue I've just noticed with selling items to shops/dropping them into the home. If you sell one of a stack of consumables in your inventory, you get a message like:
But if you sell a single item/the entire stack at once, you get:Code:You sold a Scroll of Detect Invisible (f) for 13 gold.
I assume the empty parentheses mean it's not checking for the inventory letter until after the item's already gone.Code:You sold a Scroll of Detect Invisible () for 13 gold.
Leave a comment:
-
Even though its a bit rough around the edges, it puts a smile on my face to see this game is gettin updated still.
Once you get it, its hard to get off it, like cigarettes, or crack.Leave a comment:
-
Oof, what a mess. Looks like I'll be struggling with ID more this weekend. Sorry for the crappy behavior.More ID issues in 203d3e8 - just picked up an Awl-pike and it spontaneously ID'd itself when pseudo kicked in:
This was happening before in an earlier version and was subsequently fixed, but back then it was affecting all egos, whereas I've picked up other {excellent} items in this game without them doing the same - Extra Attacks is the first one that it's happened with.Code:You feel the Awl-pike of Extra Attacks (t) in your pack is excellent.
ETA: I've also just noticed that the Metal Cap of Intelligence I'm wearing has no pseudo tag or indication it's not fully ID'd, yet the equipment screen just lists it as "a Metal Cap [3, +4] <+1>", no ego name, while the Inspect screen only lists "+1 Intelligence", no mention of other properties but also no "You do not know the full extent of this item's powers" line. Again, it's not possible to ID manually with the staff I'm carrying. Save file is attached:Leave a comment:
Leave a comment: