01:34:22 Unstable branch on crawl.develz.org updated to: 0.26-a0-495-g20a46bdb45 (34) 01:55:00 Windows builds of master branch on crawl.develz.org updated to: 0.26-a0-495-g20a46bdb45 03:26:58 Kagalorn (L26 DsSu) ASSERT(mthing.holding_monster() == mon) in 'mon-gear.cc' at line 83 failed. (Abyss:1) 03:28:00 Unstable branch on crawl.beRotato.org updated to: 0.26-a0-495-g20a46bd (34) 03:31:00 Fork (bcrawl) on crawl.kelbi.org updated to: 0.23-a0-3526-ge83b935abd 04:30:08 -!- amalloy is now known as amalloy_ 07:44:50 Yermak: yes the new charge values might need tuninng 07:46:00 !tell jfcaron an evocable source of dead animation isn't super great since our goal is to make different skills/gods/equipment *different*, duplicating an already duplicated effect is not desired 07:46:00 ebering: OK, I'll let jfcaron know. 08:59:59 03ebering02 07* 0.26-a0-496-gd769fb5: Update the changelog 10(22 seconds ago, 1 file, 18+ 4-) 13https://github.com/crawl/crawl/commit/d769fb5ce290 09:01:55 Unstable branch on crawl.kelbi.org updated to: 0.26-a0-496-gd769fb5ce2 (34) 09:32:17 advil: or amalloy_ could you please update the TU pin: https://www.reddit.com/r/dcss/comments/i45e44/trunk_updates_5_august_2020/ 12:14:03 Hi! I've been mulling over making a little tool to allow identification of "interesting" seeds, e.g. "Give me all seeds that contain Vampire's Tooth before dungeon level 14." The two pieces I see that will pose difficulty would be related - I don't know C++, and I would need to export the dungeon descriptions in a coherent format. Another possible 12:14:03 source of difficulty is that crawl's design doesn't lend itself to generating the whole dungeon in one fell swoop and then exporting it, although given all of the work the devs put in to make seeding work, I'm fairly optimistic it could be done. Morgue files might be a reasonable format, if there's a good way to "fake" them, and if they're not too 12:14:04 lossy 12:15:35 !source explorer.lua 12:15:35 https://github.com/crawl/crawl/blob/master/crawl-ref/source/dat/dlua/explorer.lua 12:15:56 Crawl's Lua interface has the capability for a seed explorer, we use it for testing seed stability 12:16:11 !source seed_explorer.lua 12:16:11 https://github.com/crawl/crawl/blob/master/crawl-ref/source/test/seed_explorer.lua 12:17:43 oh, perfect! 12:29:24 ebering acrobat is active while searing ray is channeling with the wait command 12:30:29 should i do a real live bug report? 12:34:20 well dang, that looks like it's going to be easier than I could've hoped. So I guess that leaves running the seed explorer (presumably by downloading crawl and using the command examples), parsing the output, and doing some matrix operations on the results. 12:36:01 It looks like the function catalog_seed takes a first class function called describe_cat, which I guess lets you choose contextually relevant information output for whatever purpose you're doing? 12:36:03 so if the output is too lossy, i can just modify whatever function is being used 12:36:35 the script is generally not too hard to customize if you know lua 12:37:07 generating full dungeons is not super fast, fwiw 12:39:05 don't know lua, but it feels pretty readable. every time i've poked around in the codebase i've been impressed with how clear it is 12:39:53 that's very polite of you but also funny :D 12:40:26 although this particular script is written entirely by me rather than like 30 misc people over the last 15 years, so it at least has the intent of coherence 12:43:02 haha, well. it's definitely way more modular than many of the codebases i've worked on. Beats enterprise python development by a long shot 12:43:32 so if generating a bajillion dungeons is prohibitively expensive, i also thought i could just parse morgue files 12:44:11 that would obviously suffer from incompleteness, but given that somebody's already done all that computation.. 12:45:11 I know the people who generated all 2^32 Tourist starts for NetHack used a fearsome amount of compute just to do that. 12:46:12 I think morgues will be really lossy for what you're after 12:47:04 Maybe objstats could be adapted to do this? 12:47:21 objstat doesn't actually use seeding 12:48:19 Right, but maybe it could be adapted to do this? It's already got all the infrastructure to tell you what objects generated where. 12:50:09 I think that's effectively what the seed explorer is 12:53:21 the only reason to use mapstat/objstat over it is that they are random simulations rather than something that uses the full dungeon generation pipeline, and so get you aggregate data a lot faster 12:53:34 (also I think I just found a bug in the seed explorer) 12:55:40 hm. i don't mind if it takes me a month of compute time on my laptop. if it's completely infeasible, i could likely dummy some of the costlier step 12:56:05 and then, it would be pretty trivial to farm this out to 100+ VMs 12:57:17 just need to time it i think :) 13:02:59 roflc0ptic: https://pellsson.github.io/ may be interesting - that's a 100GB database just for opening game state 13:07:26 could you send that link again? 13:07:31 roflc0ptic: https://pellsson.github.io/ may be interesting - that's a 100GB database just for opening game state 13:14:54 that's pretty neat 13:15:29 also, fearsomely large. fortunately i don't think i need to bruteforce the whole seed space to find interesting stuff 13:16:56 And of course 64-bit seeds blow the whole scheme out of the water. 13:21:51 twelwe: a real live bug report would be appreciated 13:22:08 ok doing so now 13:22:33 oh, true. i had noticed those seed numbers seemed... large, didn't realize it was 64 bit. Unfortunately don't have the NSA's resources for this particular task 13:23:23 Huh, I thought acrobat and Searing Ray interaction was a feature. 13:24:00 at some point when I have more time some code archaeology on the subject will be required 13:25:16 Acrobat amulet active while channeling searing ray with wait command 13https://crawl.develz.org/mantis/view.php?id=12335 by twelwe 13:25:47 done https://crawl.develz.org/mantis/view.php?id=12335 13:28:48 roflc0ptic: I'm not saying they are 64-bit (they seem to be about 48 bits, which is an odd number, but never mind) 13:29:02 ... just that it's only _just_ feasible with 32-bit seeds anyway 13:30:24 Unstable branch on crawl.akrasiac.org updated to: 0.26-a0-496-gd769fb5 (34) 13:51:08 dcss seeds are unsigned 64bit 13:51:34 Hm, I just can't count 13:55:09 while crawl is compiling, an unrelated question. I was looking at DCSS familiar, which is a damage calculator someone wrote. According to it, unarmed has almost double the DPT as any other weapon. Experientally, that doesn't feel right. Looking through how attack damage is calculated, I... was reminded of aforementioned enterprise python databases 13:55:39 UC is very good at high skill but you could just check with fsim 13:56:09 Is there a tutorial/manual somewhere as an introduction to fsim? 13:56:35 ohhh, hadn't heard of that 13:56:36 http://crawl.akrasiac.org/docs/fight_simulator.txt 13:56:42 looks like it hits the important notes 13:57:23 erm. not databases. codebases* 13:57:35 also databases, but that's neither here nor there 13:58:59 ty 14:10:11 03advil02 07* 0.26-a0-497-g0187308: Fix seed explorer handling of multiple portals 10(3 minutes ago, 1 file, 4+ 0-) 13https://github.com/crawl/crawl/commit/018730820181 14:16:57 Unstable branch on crawl.kelbi.org updated to: 0.26-a0-497-g0187308201 (34) 14:23:12 If acrobat shouldn't be active while searing ray is active, I found the line that needs to be edited and added in that bug report. 14:36:19 idontcare (L7 GrBe) Crash caused by signal #6: Aborted (D:4) 15:05:00 -!- amalloy_ is now known as amalloy 15:44:34 ooph. 30-40 seconds to generate one dungeon. extrapolating, that comes out to about a metric ton of computation (a month of compute time for 100k dungeons). I think what I'd like to do is set it up as a nightly cron job and run ~8 concurrent threads. The one impediment I see is that when I run the command, it causes a popup to appear that says 15:44:34 "click any key to continue." Given that I can build DCSS (man, getting that working was so straightforward), it would probably be trivial to wire it up to skip that step 15:45:59 would there be any issue with running multiple concurrent instances of crawl? a database lock or file overwrites? 15:46:26 what build are you using? 15:46:35 `make profile` is a *lot* better than `make debug` 15:46:45 oh, definitely did make debug 15:47:00 I would also consider not generating anything from extended if you currently are 15:47:22 at least not hell 15:48:00 running this script concurrently should be fine but it's cpu-bound so there's a limit to how much that will get you (~ number of cores I suppose) 15:48:43 what does `make profile` do? i use `make debug-lite` 15:48:44 yeah, 4 cores, 8 threads, i think you get more juice if you do 8 15:50:40 I can't remember everything it does but regular debug builds (including debug-lite iirc) set -O0, profile uses the default 15:50:59 or maybe -O2? 15:51:36 yeah, I think it uses -O2 15:51:42 possibly some other tweaks as well 15:52:00 it's fairly comparable to the speed of a regular non-debug build in my testing 15:54:39 seems reasonable. i've never needed a build where i care about performance, so debug-lite has been fine 15:54:51 but of course if you want to build thousands of dungeons that seems smarter 15:55:38 I also occasionally use it for profiling (I think that's why it's named the way it is), sometimes on a debug build the hotspots are debug-only 15:56:15 I think on my very long todo list is included making that script work without a debug build in the first place 16:02:40 `ifneq (,$(filter profile,$(MAKECMDGOALS))) FULLDEBUG=YesPlease DEBUG=YesPlease COVERAGE=YesPleaseendif` 16:03:13 where debug and debug-lite also set NO_OPTIMIZE=YesPlease 18:08:09 New branch created: pull/1509 (1 commit) 13https://github.com/crawl/crawl/pull/1509 18:08:09 03Implojin02 07https://github.com/crawl/crawl/pull/1509 * 0.26-a0-498-g8fb820a: Update monster creation documentation 10(10 minutes ago, 1 file, 11+ 6-) 13https://github.com/crawl/crawl/commit/8fb820aabe09 18:25:17 Unstable branch on underhound.eu updated to: 0.26-a0-497-g0187308201 (34) 18:26:41 indeed, i did accidentally switch channels 18:27:31 i got it working - this command was sufficient `time util/fake_pty ./crawl -extra-opt-first tile_skip_title=yes -script seed_explorer.lua -seed random -count 50 2> out.txt` apparently i wouldn't need the tile_skip_title option if i compiled it without tiles 18:27:41 thanks for all of the help today! 18:41:32 so the question that just occurs to me now is - rather than writing a parser for this, how easy/difficult would it be to serialize the lua data structures as json? I'm reading through seed_explorer.lua, and it seems like the serialization function is show_level_fun, but i feel fairly confused about how that gets set 18:41:50 also, wondering how lua gets the values from the C++ code - an FFI? 19:11:02 okay, think i grok it. it gets serialized in a map/dict object catalog_funs, which is a set of (key => function). Serializes using that, and then printed in catalog_current_place. The levels are sourced from debug.generate_level, whose definition I can't find in lua. There seems to be a generate_level function in the C++ codebase. All of the 19:11:02 proximate questions aside, I guess my ur question is - is there a way to modify and run these lua scripts without having to recompile? Either way, I think I have enough to putz my way to victory, though any hints would be welcome :) 19:15:06 roflc0ptic: you don't need to recompile after editing the lua file. You might need to install it again, if you're running from an installed copy of dcss rather than out of your source directory 19:19:05 roflc0ptic it looks like you might be running that script on the tiles version? it should be even quicker on console (surprised it works on tiles) 19:19:17 lua scripts don't need recompiling 19:20:52 serializing it as json or some other structured format should be quite doable 19:21:00 probably easier than parsing the script output 19:26:17 btw one caveat for `-seed random` is that it uses lua's built in random which is only 32bit 19:47:54 with regard to the 32 bit thing - what are the consequences of that 19:48:07 yes, i am running on tiles version. will recompile sans tiles 19:50:12 roflc0ptic: it means you can only search (about) 2^32 keys, not the full 2^64 range that dcss supports 19:50:19 /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/type_traits:1624:38: error: implicit instantiation of undefined template 'std::__1::hash' 19:50:30 why do I get this error from code like: 19:50:32 static unordered_map _cloud_ring_ench_to_cloud = { 19:50:42 full error: https://dpaste.com/FNXZ526XM and code: https://dpaste.com/DRWYZ49QL 19:55:21 hm, other uses of unordered_map have a third type argument(??) of std::hash 19:58:23 adding that works!!... I don't understand why 20:04:50 <|amethyst> alexjurkiewicz: because template argument deduction doesn't try to do conversions from enums to ints 20:05:02 <|amethyst> so looks for std::hash and doesn't find it 20:06:37 Guys, Ozocubu's Refrigeration animation is one giant turn-off for anyone who wants to use it. I know you can modify your rc to disable it, and that's what most of informed players do. Yes, a new player who casts it for the first time will say "Wow, cool!" But I think even they will get annoyed after a few casts. It's not worth it. It should be shortened or changed somehow. 20:09:48 03Alex Jurkiewicz02 07https://github.com/crawl/crawl/pull/1489 * 0.26-a0-498-g2807fc2: Fix comment typos and missing break; 10(3 weeks ago, 2 files, 3+ 3-) 13https://github.com/crawl/crawl/commit/2807fc2cddf6 20:09:48 03Alex Jurkiewicz02 07https://github.com/crawl/crawl/pull/1489 * 0.26-a0-499-gcf1d512: Make ring of thunder permanent 10(3 weeks ago, 3 files, 5+ 4-) 13https://github.com/crawl/crawl/commit/cf1d5127db50 20:09:48 03Alex Jurkiewicz02 07https://github.com/crawl/crawl/pull/1489 * 0.26-a0-500-gadb9d1a: Add quiet parameter to monster::add_ench 10(3 weeks ago, 2 files, 4+ 4-) 13https://github.com/crawl/crawl/commit/adb9d1a34a3e 20:09:48 03Alex Jurkiewicz02 07https://github.com/crawl/crawl/pull/1489 * 0.26-a0-501-g83b2fb2: Add surround_mons_with_cloud helper function 10(3 weeks ago, 2 files, 22+ 0-) 13https://github.com/crawl/crawl/commit/83b2fb2ba367 20:09:48 03Alex Jurkiewicz02 07https://github.com/crawl/crawl/pull/1489 * 0.26-a0-502-ga159bfe: Add ring of flames as a monster spell 10(3 weeks ago, 8 files, 32+ 39-) 13https://github.com/crawl/crawl/commit/a159bfef4d84 20:09:48 03Alex Jurkiewicz02 07https://github.com/crawl/crawl/pull/1489 * 0.26-a0-503-g6566637: Add cloud rings for monsters 10(3 weeks ago, 3 files, 56+ 6-) 13https://github.com/crawl/crawl/commit/65666373cdb5 20:09:48 03Alex Jurkiewicz02 07https://github.com/crawl/crawl/pull/1489 * 0.26-a0-504-ge443df8: Add cloud rings to some pan lords 10(3 weeks ago, 3 files, 47+ 1-) 13https://github.com/crawl/crawl/commit/e443df8c7e51 20:09:48 03Alex Jurkiewicz02 07https://github.com/crawl/crawl/pull/1489 * 0.26-a0-505-g6623377: Fix pandemonium lord cloud ring probabilities 10(3 weeks ago, 1 file, 2+ 2-) 13https://github.com/crawl/crawl/commit/662337715c9f 20:09:48 03Alex Jurkiewicz02 07https://github.com/crawl/crawl/pull/1489 * 0.26-a0-506-g8a6071d: fixup! Add surround_mons_with_cloud helper function 10(7 minutes ago, 3 files, 5+ 12-) 13https://github.com/crawl/crawl/commit/8a6071deb1fe 20:09:48 03Alex Jurkiewicz02 07https://github.com/crawl/crawl/pull/1489 * 0.26-a0-507-gf5dd936: fixup! Add cloud rings to some pan lords 10(6 minutes ago, 1 file, 0+ 2-) 13https://github.com/crawl/crawl/commit/f5dd9368291e 20:09:48 ... and 3 more commits 20:13:36 |amethyst: right. So when the map tries to hash the enchant_type, it first casts to an integer? 20:31:55 03Alex Jurkiewicz02 07https://github.com/crawl/crawl/pull/1489 * 0.26-a0-511-g43afd8d: fixup! fixup! Add cloud rings for monsters 10(5 minutes ago, 1 file, 7+ 3-) 13https://github.com/crawl/crawl/commit/43afd8d848ab 20:31:55 03Alex Jurkiewicz02 07https://github.com/crawl/crawl/pull/1489 * 0.26-a0-512-gae50181: Add targeter status text for monster cloud rings 10(5 minutes ago, 3 files, 25+ 0-) 13https://github.com/crawl/crawl/commit/ae501810da41 20:56:37 03Implojin02 {ebering} 07* 0.26-a0-498-g0fdccc9: Update monster creation documentation 10(3 hours ago, 1 file, 11+ 6-) 13https://github.com/crawl/crawl/commit/0fdccc92097c 21:02:02 Unstable branch on crawl.kelbi.org updated to: 0.26-a0-498-g0fdccc9209 (34) 21:05:08 @advil fair. that's a constraint i can live with :) 21:31:19 <|amethyst> alexjurkiewicz: if you specify the hash function, yes 21:31:52 <|amethyst> alexjurkiewicz: since calling a function (like the hash instantiation) *does* do implicit type conversion 21:32:15 <|amethyst> alexjurkiewicz: and non-class enums convert to int implicitly (but from int only explicitly) 21:34:55 <|amethyst> (technically hash is an class with operator(), but operator() is a function so what I said still holds) 21:35:07 <|amethyst> s/an class/a class/ 21:37:37 <|amethyst> alexjurkiewicz: huh, but according to cppreference, "the standard library provides specializations for all (scoped and unscoped) enumeration types." and that statement doesn't appear to be versioned, so I don't know why hash doesn't exist 21:38:25 <|amethyst> alexjurkiewicz: oh... if you remove that third template parameter and instead #include , does that work? 22:08:24 Unidentified Scrolls of acquirement still "crumble to dust" when read, even though they can still be salvaged 13https://crawl.develz.org/mantis/view.php?id=12336 by Midn8 22:57:38 Anyone using VS Code for development? 23:06:30 Zitu: i do 23:07:17 Zitu: the one thing I suggest is setting whatever defines you want to assume are enabled in "C_Cpp.default.defines": [] setting 23:07:23 eg currently i have "USE_TILE_WEB=y" 23:07:44 |amethyst: that didn't work 23:15:16 Thanks for the tip - I'm getting it all setup as a transition from vim/terminal 23:20:13 there's a lot to learn. If you like vim comands there's a plugin, but I gave it up personally after a few months 23:30:08 localmul (L8 TrMo) Crash caused by signal #6: Aborted (D:8) 23:31:51 <|amethyst> alexjurkiewicz: ah, hm, maybe it's a library version problem or maybe I'm misunderstanding that passage 23:35:40 localmul (L8 TrMo) Crash caused by signal #6: Aborted (D:8) 23:35:45 i guess i'll keep the third arg, it's following existing practice anyway 23:36:09 (!cloud_at(*ai) || cloud_at(*ai)->type == cloud) <--- is there some way to write this which doesn't need to call the func twice, and doesn't use a temporary variable? 23:37:35 <|amethyst> not that I'm aware of... you could make a function, but the parameter would be a temporary variable so that doesn't count 23:39:06 I guess I'm too used to fancy null coalescing in newer lang 23:43:48 <|amethyst> alexjurkiewicz: hm, looking at that surround_mons_with_cloud function, if two monsters are adjacent it seems like the net effect (who ends up sitting on a cloud) depends on the order in which they're iterated over 23:44:18 <|amethyst> alexjurkiewicz: i.e. the second monster will delete the cloud placed on its spot by the first monster, but not vice versa 23:44:30 well, assuming both monsters are allied, neither should place a cloud on the other 23:45:23 not sure if I pushed that logic yet. I'm writing it now.. 23:45:35 <|amethyst> and I would suggest surround_actor_with_cloud 23:45:36 alexjurkiewicz: I'd lean towards thinking behind the scenes the compiler is smart enough to reuse the result of the first call synchronously, esp. considering it's in the same condition 23:46:09 <|amethyst> otherwise I will put "surround_mons_with_cloud(&you, ...)" on @crawlcode 23:46:21 |amethyst: :) 23:46:49 narrowly avoided a horrible fate 23:47:34 <|amethyst> Zitu: since cloud_at isn't defined in the header, the compiler has no way of figuring out that calling it is idempotent in this situation 23:50:37 <|amethyst> Zitu: (and it's not idempotent in general, since something could have placed a cloud in between the two calls, so marking it IMMUTABLE would be semantically wrong) 23:50:56 Forgive me if this has been fixed in the last few months; but I just noticed an odd quirk in god wrath. When the wrath is noise...it doesn't happen until the next turn. IE: Get message that TSO booms out that you should repent. (beat) take an action. monsters react to the noise. 23:59:18 03Alex Jurkiewicz02 07https://github.com/crawl/crawl/pull/1489 * 0.26-a0-513-ge422d04: fixup! fixup! Add surround_mons_with_cloud helper function 10(19 minutes ago, 4 files, 22+ 16-) 13https://github.com/crawl/crawl/commit/e422d044b78b