ASSERT(range >= 0) in 'beam.cc' at line 747 failed. (beam 'rocky spike', source 'player', item 'none'; has range -1) Version: Dungeon Crawl Stone Soup 0.33-a0-510-gbf341ee2b0 Platform: unix Bits: 64 Game mode: normal Tiles: online Seed: 6759508574311752594, deterministic pregen: 1 Command line: /usr/games/crawl-git-bf341ee2b0 -name tempest -rc /dgldir/rcfiles/crawl-git/tempest.rc -macro /dgldir/rcfiles/crawl-git/tempest.macro -morgue /dgldir/morgue/tempest/ -webtiles-socket /crawl-master/webserver/sockets/tempest:2024-12-01.22:27:12.sock -await-connection RC options: restart_after_game = false Crash caused by signal #6: Aborted Obtained 34 stack frames. /usr/games/crawl-git-bf341ee2b0(_Z17write_stack_traceP8_IO_FILE+0x3e) [0x5897e46df62e]: write_stack_trace(_IO_FILE*) /usr/games/crawl-git-bf341ee2b0(_Z13do_crash_dumpv+0x43a) [0x5897e46ed78a]: do_crash_dump() /usr/games/crawl-git-bf341ee2b0(_Z20crash_signal_handleri+0x1fa) [0x5897e46dfb0a]: crash_signal_handler(int) /lib/x86_64-linux-gnu/libc.so.6(+0x42910) [0x7cde58442910]: /lib/x86_64-linux-gnu/libc.so.6(pthread_kill+0x11b) [0x7cde5849999b]: /lib/x86_64-linux-gnu/libc.so.6(raise+0x16) [0x7cde58442866]: /usr/games/crawl-git-bf341ee2b0(+0x4b9aad) [0x5897e46ecaad]: /usr/games/crawl-git-bf341ee2b0(_Z12AssertFailedPKcS0_iS0_z+0x1a1) [0x5897e46ed041]: AssertFailed(char const*, char const*, int, char const*, ...) /usr/games/crawl-git-bf341ee2b0(_ZN4bolt15initialise_fireEv+0x37d) [0x5897e468b26d]: bolt::initialise_fire() /usr/games/crawl-git-bf341ee2b0(_ZN4bolt7do_fireEv+0x30) [0x5897e469aab0]: bolt::do_fire() /usr/games/crawl-git-bf341ee2b0(_ZN4bolt4fireEv+0xa4) [0x5897e469b9f4]: bolt::fire() /usr/games/crawl-git-bf341ee2b0(_ZN13targeter_beam7set_aimE9coord_def+0x9d) [0x5897e4d493ed]: targeter_beam::set_aim(coord_def) /usr/games/crawl-git-bf341ee2b0(+0x54e0ea) [0x5897e47810ea]: /usr/games/crawl-git-bf341ee2b0(_ZN17direction_chooser6selectEbb+0x98) [0x5897e4781568]: direction_chooser::select(bool, bool) /usr/games/crawl-git-bf341ee2b0(_ZN17direction_chooser15process_commandE12command_type+0x65) [0x5897e4788625]: direction_chooser::process_command(command_type) /usr/games/crawl-git-bf341ee2b0(_ZN22UIDirectionChooserView15process_commandE12command_type+0x2b) [0x5897e4791d6b]: UIDirectionChooserView::process_command(command_type) /usr/games/crawl-git-bf341ee2b0(_ZN22UIDirectionChooserView8on_eventERKN2ui5EventE+0x18a) [0x5897e479209a]: UIDirectionChooserView::on_event(ui::Event const&) /usr/games/crawl-git-bf341ee2b0(_ZN2ui6UIRoot13deliver_eventERNS_5EventE+0x1b3) [0x5897e4da0d93]: ui::UIRoot::deliver_event(ui::Event&) /usr/games/crawl-git-bf341ee2b0(_ZN2ui6UIRoot8on_eventER8wm_event+0x77) [0x5897e4da1117]: ui::UIRoot::on_event(wm_event&) /usr/games/crawl-git-bf341ee2b0(_ZN2ui11pump_eventsEi+0xa5) [0x5897e4da6315]: ui::pump_events(int) /usr/games/crawl-git-bf341ee2b0(_ZN17direction_chooser16choose_directionEv+0x2ea) [0x5897e478b64a]: direction_chooser::choose_direction() /usr/games/crawl-git-bf341ee2b0(_Z9directionR4distRK22direction_chooser_args+0x80) [0x5897e478b930]: direction(dist&, direction_chooser_args const&) /usr/games/crawl-git-bf341ee2b0(_Z15spell_directionR4distR4boltP22direction_chooser_args+0x1cf) [0x5897e4cd81df]: spell_direction(dist&, bolt&, direction_chooser_args*) /usr/games/crawl-git-bf341ee2b0(_Z11your_spells10spell_typeibPK8item_defP4distb+0x66a) [0x5897e4c7af7a]: your_spells(spell_type, int, bool, item_def const*, dist*, bool) /usr/games/crawl-git-bf341ee2b0(_Z12cast_a_spellb10spell_typeP4distb+0x3c9) [0x5897e4c7dd39]: cast_a_spell(bool, spell_type, dist*, bool) /usr/games/crawl-git-bf341ee2b0(_ZN6quiver12spell_action7triggerER4dist+0x126) [0x5897e4bf73e6]: quiver::spell_action::trigger(dist&) /usr/games/crawl-git-bf341ee2b0(_ZN6quiver13action_cycler9do_targetEv+0xf4) [0x5897e4bea344]: quiver::action_cycler::do_target() /usr/games/crawl-git-bf341ee2b0(_ZN6quiver13action_cycler6targetEv+0x9c) [0x5897e4bef3dc]: quiver::action_cycler::target() /usr/games/crawl-git-bf341ee2b0(+0xc311ba) [0x5897e4e641ba]: /usr/games/crawl-git-bf341ee2b0(+0xc31cc5) [0x5897e4e64cc5]: /usr/games/crawl-git-bf341ee2b0(main+0x1f7) [0x5897e4617f97]: /lib/x86_64-linux-gnu/libc.so.6(+0x280d0) [0x7cde584280d0]: /lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0x89) [0x7cde58428189]: /usr/games/crawl-git-bf341ee2b0(_start+0x25) [0x5897e46189b5]: Trying to run gdb. GNU gdb (Ubuntu 14.0.50.20230907-0ubuntu1) 14.0.50.20230907-git Copyright (C) 2023 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. Type "show copying" and "show warranty" for details. This GDB was configured as "x86_64-linux-gnu". Type "show configuration" for configuration details. For bug reporting instructions, please see: . Find the GDB manual and other documentation resources online at: . For help, type "help". Type "apropos word" to search for commands related to "word". [Thread debugging using libthread_db enabled] Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1". 0x00007cde5850fbf7 in __GI___wait4 (pid=3421599, stat_loc=0x0, options=0, usage=0x0) at ../sysdeps/unix/sysv/linux/wait4.c:30 #0 0x00007cde5850fbf7 in __GI___wait4 (pid=3421599, stat_loc=0x0, options=0, usage=0x0) at ../sysdeps/unix/sysv/linux/wait4.c:30 sc_ret = -512 sc_ret = #1 0x00005897e46dfcdc in call_gdb (file=0x7cde585ff6c0 <_IO_2_1_stderr_>) at crash.cc:438 gdb = attach_cmd = "attach 3421446\000\000\000\000\000" #2 0x00005897e46ed7a8 in do_crash_dump () at dbg-asrt.cc:692 t = 1733092070 dir = "/dgldir/morgue/tempest/" name = "/dgldir/morgue/tempest/crash-tempest-20241201-222750.txt", '\000' signal_info = "Crash caused by signal #6: Aborted" cause_msg = "ASSERT(range >= 0) in 'beam.cc' at line 747 failed. (beam 'rocky spike', source 'player', item 'none'; has range -1)" file = 0x7cde585ff6c0 <_IO_2_1_stderr_> #3 0x00005897e46dfb0a in crash_signal_handler (sig_num=6) at crash.cc:198 No locals. #4 No locals. #5 __pthread_kill_implementation (no_tid=0, signo=6, threadid=) at ./nptl/pthread_kill.c:44 tid = ret = 0 pd = old_mask = {__val = {140734798580928}} ret = pd = old_mask = ret = tid = ret = resultvar = resultvar = __arg3 = __arg2 = __arg1 = _a3 = _a2 = _a1 = __futex = resultvar = __arg3 = __arg2 = __arg1 = _a3 = _a2 = _a1 = __futex = __private = __oldval = #6 __pthread_kill_internal (signo=6, threadid=) at ./nptl/pthread_kill.c:78 No locals. #7 __GI___pthread_kill (threadid=, signo=signo@entry=6) at ./nptl/pthread_kill.c:89 No locals. #8 0x00007cde58442866 in __GI_raise (sig=6) at ../sysdeps/posix/raise.c:26 ret = #9 0x00005897e46ecaad in _BreakStrToDebugger (mesg=mesg@entry=0x7fff5fad4ec0 "ASSERT(range >= 0) in 'beam.cc' at line 747 failed. (beam 'rocky spike', source 'player', item 'none'; has range -1)", assert=true) at dbg-asrt.cc:818 No locals. #10 0x00005897e46ed041 in AssertFailed (expr=expr@entry=0x5897e4e78c91 "range >= 0", file=file@entry=0x5897e4e7854a "beam.cc", line=line@entry=747, text=text@entry=0x5897e4eeca80 "beam '%s', source '%s', item '%s'; has range -1") at dbg-asrt.cc:851 detail = "beam 'rocky spike', source 'player', item 'none'; has range -1\000\000\250\217C\345\227X\000\000\270\332\301X\336|\000\000`Z\255_\377\177\000\000e\000\000\000\000\000\000\000`\001\000\000\000\000\000\000\217߄\344\227X\000\000e", '\000' , "\020k\230\347\227X\000\000\260X\255_\000\a\000\000\250\217C\345\227X\000\000\310\323EX\336|\000\000e\000\000\000\000\000\000\000\260R\255_\377\177\000\000\002\000\000\000\000\000\000\000\210\317\352\344\227X\000\000xS\255_\377\177\000\000v"... final_mesg = "ASSERT(range >= 0) in 'beam.cc' at line 747 failed. (beam 'rocky spike', source 'player', item 'none'; has range -1)\000\000\000\000\352\240\347\344\227X\000\000\352\240\347\344\227X\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\250\217\000\000\000\000\000\000\002\000\000\000\000\000\000\000\020\377\345\347\227X\000\000 \000\000\000\000\000\000\000\020\000\000\0000\000\000\000\220]\255_\377\177\000\000"... mesg = "ASSERT(range >= 0) in 'beam.cc' at line 747 failed.\000\000\000\000\000\310\323EX\336|\000\000 \000\000\000\000\000\000\000\310\323EX\336|\000\000\002\000\000\000\000\000\000\000`P\255_\377\177\000\000\002\000\000\000\000\000\000\000\310\323EX\336|\000\000(Q\255_\377\177\000\000\200P\255_\377\177\000\000\000\000\000\000\000\000\000\000\354\240\347\344\227X\000\000HQ\255_\377\177\000\000\322UFX\336|\000\000\000\000\000\000\000\000\000\000\n\000\000\000\336|\000\000 L\255_", '\000' , "\002\000\000\000\000\000\000\000"... args = {{gp_offset = 48, fp_offset = 48, overflow_arg_area = 0x7fff5fad53b8, reg_save_area = 0x7fff5fad52d0}} fileName = #11 0x00005897e468b26d in bolt::initialise_fire (this=this@entry=0x7fff5fad5850) at /usr/include/c++/13/bits/basic_string.h:222 No locals. #12 0x00005897e469aab0 in bolt::do_fire (this=this@entry=0x7fff5fad5850) at beam.cc:1237 coff = #13 0x00005897e469b9f4 in bolt::fire (this=this@entry=0x7fff5fad5850) at beam.cc:1211 boltcopy = {origin_spell = SPELL_SPIKE_LAUNCHER, range = -1, glyph = 96 U'`', colour = 7 '\a', flavour = BEAM_MMISSILE, real_flavour = BEAM_MMISSILE, drop_item = false, item_mulches = false, item = 0x0, launcher = 0x0, source = {x = 24, y = 20}, target = {x = 22, y = 20}, damage = {num = 2, size = 4}, ench_power = 13, hit = 13, thrower = KILL_YOU_MISSILE, ex_size = 0, source_id = 4294967295, source_name = "", name = "rocky spike", short_name = "", hit_verb = "", loudness = 2, hit_noise_msg = "", explode_noise_msg = "", pierce = false, is_explosion = false, is_death_effect = false, aimed_at_spot = true, aux_source = "", affects_nothing = false, effect_known = true, effect_wanton = false, no_saving_throw = false, draw_delay = 15, explode_delay = 50, redraw_per_cell = true, special_explosion = 0x0, was_missile = false, animate = true, ac_rule = ac_type::normal, obvious_effect = false, seen = false, heard = false, path_taken = std::vector of length 0, capacity 0, extra_range_used = 0, is_tracer = true, is_targeting = true, aimed_at_feet = false, msg_generated = false, noise_generated = false, passed_target = false, in_explosion_phase = false, attitude = ATT_FRIENDLY, foe_ratio = 0, hit_count = std::map with 0 elements, foe_info = {count = 0, power = 0, hurt = 0, helped = 0, dont_stop = true}, friend_info = {count = 0, power = 0, hurt = 0, helped = 0, dont_stop = true}, chose_ray = false, beam_cancelled = false, dont_stop_player = true, overshoot_prompt = true, friendly_past_target = false, bounces = 0, bounce_pos = {x = 0, y = 0}, reflections = 0, reflector = 0, use_target_as_pos = false, ray = {r = {start = {x = 0, y = 0}, dir = {x = 0, y = 0}}, on_corner = false, cycle_idx = -1}, tile_beam = 0, tile_explode = 0, can_see_invis = false, nightvision = false, can_trigger_bullseye = false, message_cache = std::set with 0 elements} #14 0x00005897e4d493ed in targeter_beam::set_aim (this=0x5897e7ecd550, a=...) at target.cc:228 tempbeam = {origin_spell = SPELL_SPIKE_LAUNCHER, range = -1, glyph = 96 U'`', colour = 7 '\a', flavour = BEAM_MMISSILE, real_flavour = BEAM_MMISSILE, drop_item = false, item_mulches = false, item = 0x0, launcher = 0x0, source = {x = 24, y = 20}, target = {x = 22, y = 20}, damage = {num = 2, size = 4}, ench_power = 13, hit = 13, thrower = KILL_YOU_MISSILE, ex_size = 0, source_id = 4294967295, source_name = "", name = "rocky spike", short_name = "", hit_verb = "", loudness = 2, hit_noise_msg = "", explode_noise_msg = "", pierce = false, is_explosion = false, is_death_effect = false, aimed_at_spot = true, aux_source = "", affects_nothing = false, effect_known = true, effect_wanton = false, no_saving_throw = false, draw_delay = 15, explode_delay = 50, redraw_per_cell = true, special_explosion = 0x0, was_missile = false, animate = true, ac_rule = ac_type::normal, obvious_effect = false, seen = false, heard = false, path_taken = std::vector of length 0, capacity 0, extra_range_used = 0, is_tracer = true, is_targeting = true, aimed_at_feet = false, msg_generated = false, noise_generated = false, passed_target = false, in_explosion_phase = false, attitude = ATT_FRIENDLY, foe_ratio = 0, hit_count = std::map with 0 elements, foe_info = {count = 0, power = 0, hurt = 0, helped = 0, dont_stop = true}, friend_info = {count = 0, power = 0, hurt = 0, helped = 0, dont_stop = true}, chose_ray = false, beam_cancelled = false, dont_stop_player = true, overshoot_prompt = true, friendly_past_target = false, bounces = 0, bounce_pos = {x = 0, y = 0}, reflections = 0, reflector = 0, use_target_as_pos = false, ray = {r = {start = {x = 0, y = 0}, dir = {x = 0, y = 0}}, on_corner = false, cycle_idx = -1}, tile_beam = 0, tile_explode = 0, can_see_invis = false, nightvision = false, can_trigger_bullseye = false, message_cache = std::set with 0 elements} #15 0x00005897e47810ea in direction_chooser::update_previous_target (this=this@entry=0x7fff5fad6dd0) at directn.cc:1310 old_m = 0x0 m = #16 0x00005897e4781568 in direction_chooser::update_previous_target (this=0x7fff5fad6dd0) at directn.cc:1617 old_m = m = old_m = m = ri = mon = #17 direction_chooser::select (this=this@entry=0x7fff5fad6dd0, allow_out_of_range=allow_out_of_range@entry=false, endpoint=endpoint@entry=false) at directn.cc:1620 mons = 0x0 #18 0x00005897e4788625 in direction_chooser::process_command (this=0x7fff5fad6dd0, command=command@entry=CMD_TARGET_SELECT) at directn.cc:2285 loop_done = #19 0x00005897e4791d6b in UIDirectionChooserView::process_command (this=this@entry=0x5897e7ac8dc0, cmd=cmd@entry=CMD_TARGET_SELECT) at directn.cc:2456 cc = {cstate = false} loop_done = #20 0x00005897e479209a in UIDirectionChooserView::on_event (this=0x5897e7ac8dc0, ev=...) at directn.cc:2428 key = 32 command = CMD_TARGET_SELECT top_prompt = "Casting: Construct Spike Launcher (safe; 6% risk of failure)" #21 0x00005897e4da0d93 in ui::UIRoot::deliver_event (this=0x5897e536d660 , event=...) at ui.cc:2933 w = 0x5897e7ac8dc0 top = key = 32 #22 0x00005897e4da1117 in ui::UIRoot::on_event (this=this@entry=0x5897e536d660 , event=...) at ui.cc:2857 key_event = { = {m_type = ui::Event::KeyDown, m_target = std::shared_ptr (use count 4, weak count 1) = {get() = 0x5897e7ac8dc0}}, m_key = 32} #23 0x00005897e4da6315 in ui::pump_events (wait_event_timeout=wait_event_timeout@entry=2147483647) at ui.cc:3311 ev = {type = 2 '\002', active = {type = 0 '\000', gain = 0 '\000', state = 0 '\000'}, key = {type = 0 '\000', state = 0 '\000', keysym = {scancode = 0 '\000', sym = 32, key_mod = 0 '\000', unicode = 0}}, mouse_event = {type = 0 '\000', event = wm_mouse_event::PRESS, button = wm_mouse_event::NONE, held = 0, mod = 0 '\000', px = 0, py = 0}, resize = {type = 0 '\000', w = 0, h = 0}, expose = {type = 0 '\000'}, quit = {type = 0 '\000'}, custom = {type = 0 '\000', code = 0, data1 = 0x0, data2 = 0x0}} macro_key = k = #24 0x00005897e478b64a in direction_chooser::choose_direction (this=this@entry=0x7fff5fad6dd0) at directn.cc:2634 ui_cutoff_point = ccon = {cstate = false} no_blinking = {prev = false} mc = {m_previous_mode = MOUSE_MODE_NORMAL} legacy_range = { = {_vptr.targeter = 0x5897e51ac658 , origin = {x = 24, y = 20}, aim = {x = 24, y = 20}, agent = 0x5897e53bc580 , why_not = "", obeys_mesmerise = false}, exp_range_min = 0, exp_range_max = 0, exp_map_min = {mData = {mData = {{mData = {32767, 1605206624, 32767, 0, 0, 2, 32767, 1605206776, 32767, 20, 0, 1605198528, 32767, 19, 0, 1485534700, 31966, 1605207024, 32767}}, {mData = {-456060571, 22679, 19, 0, 24, 48, 1605206832, 32767, 1605206640, 32767, 1605206688, 32767, -456060571, 22679, 43, 0, 16, 48, 1869291617}}, {mData = {1684828002, 544434464, 1918985582, 2193762, 32767, -456060881, 22679, 8, 0, 16, 48, 538976288, 538976288, 538976288, 538976288, 538976288, 538976288, 538976288, 538976288}}, {mData = {538976288, 538976288, 2105376, 22679, 538976288, 538976288, 1884495872, 543517545, 1853186380, 1919248483, 1605206784, 32767, 1605207072, 32767, -296653312, -1556979150, 1605207104, 32767, -456060881}}, {mData = {22679, 1936261152, 2112101, 691023409, 538976288, 1593843744, 32767, 1605206864, 32767, 2, 2, 2, 2, 3291716, 2, 2, 2, 774973472, 10544}}, {mData = {2 }} , {mData = {2 , -456787299, 22679, 2, 2, -457919049, 22679, 142}}, {mData = {0, 1, 0, 18, 0, -456787299, 22679, 2, 2, -456787299, 22679, 142, 0, -457919049, 22679, 142, 0, 1, 0}}}}}, exp_map_max = {mData = {mData = {{mData = {18, 0, -456787299, 22679, -449572320, 22679, -457919049, 22679, 142, 0, 1, 0, 18, 0, -457907762, 22679, 179, 0, -1}}, {mData = {0, -449572320, 22679, 18, 0, 1605199968, 32767, -449067648, 22679, 179, 0, 1, 0, 100, 0, 0, 0, 1605200016, 32767}}, {mData = {0, 0, -449067648, 22679, 0, 0, -1, 0, -457378803, 22679, 6, 0, -457438960, 4, -461060288, 22679, -457378803, 22679, 100}}, {mData = {0, 0, 49, 14, 0, -296653312, -1556979150, -449067648, 22679, -449067648, 22679, 0, 0, -457461236, 22679, 0, 0, 463, 0}}, {mData = {463, 0, -456255153, 22679, 463, 0, -456291968, 22679, 1394, 0, 13, 0, 463, 0, -449067648, 22679, 0, 0, -456697152}}, {mData = {22679, 20, 2, 17, 13, 1, 0, -296653312, -1556979150, 0, 0, -296653312, -1556979150, -449067648, 22679, 1, 0, -449067648, 22679}}, {mData = {1, 0, 0, 0, -456283290, 22679, 1605200320, 32767, 0, 0, 1701667073, 32512, 1605200976, 32767, 1487314336, 31966, 1486157314, 31966, 0}}, {mData = {0, -296653312, -1556979150, 1605201088, 32767, 1605200896, 32767, 0, 0, -296653312, -1556979150, 1, 0, 0, 0, 0, 0, 1605201224, 32767}}, {mData = {1605200848, 32767, 7, 0, 1605200560, 32767, 1486190318, 31966, 0, 0, 1605201216, 32767, 1605201152, 32767, 1605201328, 32767, 7, 0, -404004256}}, {mData = {22679, 1605200560, 32767, 1486131637, 31966, 1605200848, 32767, 0, 0, 1605200560, 32767, 0, 0, 1701667073, 32512, 1605201216, 32767, 1487314336, 31966}}, {mData = {1486200754, 31966, 0, 0, 1605200832, 32767, 1605201328, 32767, 7, 0, 1605201184, 32767, 1485719573, 31966, 1487283688, 31966, -460269413, 22679, 1605200672}}, {mData = {32767, 1605201216, 32767, 1605201328, 32767, 1605201120, 32767, 1605201280, 32767, -451088608, 22679, 1605201312, 32767, 16777216, 0, 1605201168, 32767, 1605201136, 32767}}, {mData = {1605201088, 32767, 1605200992, 32767, 1605200864, 32767, 1605201224, 32767, 1605200928, 32767, 1605201024, 32767, 1605201056, 32767, 1605200960, 32767, 1605200896, 32767, -413532624}}, {mData = {22679, 1605200864, 32767, 1486131637, 31966, 1605200848, 32767, 7, 0, 1663053867, 6452588, 0, 0, 1605200880, 32767, 0, 0, 1487314176, 31966}}, {mData = {1486157314, 31966, 1605200912, 32767, -296653312, -1556979150, 2109483, 32767, 1605201440, 32767, 0, 0, -296653312, -1556979150, 1, 0, 0, 0, 0}}, {mData = {0, 1605201768, 32767, 1605201392, 32767, 7, 0, 1605201104, 32767, 1486190318, 31966, 0, 0, 1605201760, 32767, 1605201696, 32767, 1605201872, 32767}}, {mData = {7, 0, -410958816, 22679, 1605201104, 32767, 1486131637, 31966, 1605201392, 32767, 0, 0, 1605201104, 32767, 0, 0, 1701667073, 32512, 1486157314}}, {mData = {31966, 1487314336, 31966, -296653312, -1556979150, 0, 0, -456787299, 22679, 0, 0, -456787299, 22679, 137, 0, 1605201400, 32767, 16, 0}}, {mData = {-414627216, 22679, 1605202352, 32767, 1485534700, 31966, 1605201264, 32767, -463276875, 22679, 1605201360, 32767, 1605201360, 32767, 1605201760, 32767, -461910585, 22679, 0}}}}}, range = 7, cannot_harm_player = false, affects_walls = true, can_target_monsters = true, affects_pos = 0x0} rva = tmp = {previous = true} save_more = {val = , oldval = true} directn_view = #25 0x00005897e478b930 in direction (moves=..., args=...) at directn.cc:400 No locals. #26 0x00005897e4cd81df in spell_direction (spelld=..., pbolt=..., args=args@entry=0x7fff5fad74c0) at spl-util.cc:861 newargs = {hitfunc = 0x5897e7ecd550, restricts = DIR_NONE, mode = TARG_HOSTILE, range = 7, just_looking = false, needs_path = true, prefer_farthest = false, try_multizap = false, unrestricted = false, allow_shift_dir = true, self = confirm_prompt_type::none, target_prefix = 0x0, top_prompt = "Casting: Construct Spike Launcher (safe; 6% risk of failure)", behaviour = 0x7fff5fad71b0, show_floor_desc = false, show_boring_feats = true, get_desc_func = {, std::allocator >, std::allocator, std::allocator > > >, monster_info const&>> = {, std::allocator >, std::allocator, std::allocator > > > >> = {}, }, = {static _M_max_size = 16, static _M_max_align = 8, _M_functor = {_M_unused = {_M_object = 0x5897e7494a70, _M_const_object = 0x5897e7494a70, _M_function_pointer = 0x5897e7494a70, _M_member_pointer = (void (std::_Undefined_class::*)(std::_Undefined_class * const)) 0x5897e7494a70}, _M_pod_data = "pJI\347\227X\000\000\000\000\000\000\000\000\000"}, _M_manager = 0x5897e462f450 , std::allocator >, std::allocator, std::allocator > > > (monster_info const&), std::_Bind, std::allocator >, std::allocator, std::allocator > > > (*(std::_Placeholder<1>, targeter*))(monster_info const&, targeter*)> >::_M_manager(std::_Any_data&, std::_Any_data const&, std::_Manager_operation)>}, _M_invoker = 0x5897e462efd0 , std::allocator >, std::allocator, std::allocator > > > (monster_info const&), std::_Bind, std::allocator >, std::allocator, std::allocator > > > (*(std::_Placeholder<1>, targeter*))(monster_info const&, targeter*)> >::_M_invoke(std::_Any_data const&, monster_info const&)>}, default_place = {x = 24, y = 20}} #27 0x00005897e4c7af7a in your_spells (spell=spell@entry=SPELL_SPIKE_LAUNCHER, powc=, powc@entry=0, actual_spell=true, evoked_wand=evoked_wand@entry=0x0, target=target@entry=0x5897e7e53398, force_failure=force_failure@entry=false) at spl-cast.cc:2130 prompt = additional_desc = {, std::allocator >, std::allocator, std::allocator > > >, monster_info const&>> = {, std::allocator >, std::allocator, std::allocator > > > >> = {}, }, = {static _M_max_size = 16, static _M_max_align = 8, _M_functor = {_M_unused = {_M_object = 0x5897e7b71ef0, _M_const_object = 0x5897e7b71ef0, _M_function_pointer = 0x5897e7b71ef0, _M_member_pointer = (void (std::_Undefined_class::*)(std::_Undefined_class * const)) 0x5897e7b71ef0}, _M_pod_data = "\360\036\267\347\227X\000\000\000\000\000\000\000\000\000"}, _M_manager = 0x5897e462f450 , std::allocator >, std::allocator, std::allocator > > > (monster_info const&), std::_Bind, std::allocator >, std::allocator, std::allocator > > > (*(std::_Placeholder<1>, targeter*))(monster_info const&, targeter*)> >::_M_manager(std::_Any_data&, std::_Any_data const&, std::_Manager_operation)>}, _M_invoker = 0x5897e462efd0 , std::allocator >, std::allocator, std::allocator > > > (monster_info const&), std::_Bind, std::allocator >, std::allocator, std::allocator > > > (*(std::_Placeholder<1>, targeter*))(monster_info const&, targeter*)> >::_M_invoke(std::_Any_data const&, monster_info const&)>} spell_title_color = verb = "Casting" needs_path = beh = { = {_vptr.targeting_behaviour = 0x5897e51ccf78 , prompt = "", just_looking = false, get_desc_func = {, std::allocator >, std::allocator, std::allocator > > >, monster_info const&>> = {, std::allocator >, std::allocator, std::allocator > > > >> = {}, }, = {static _M_max_size = 16, static _M_max_align = 8, _M_functor = {_M_unused = {_M_object = 0x5897e75c2bf0, _M_const_object = 0x5897e75c2bf0, _M_function_pointer = 0x5897e75c2bf0, _M_member_pointer = (void (std::_Undefined_class::*)(std::_Undefined_class * const)) 0x5897e75c2bf0}, _M_pod_data = "\360+\\\347\227X\000\000\000\000\000\000\000\000\000"}, _M_manager = 0x5897e462f450 , std::allocator >, std::allocator, std::allocator > > > (monster_info const&), std::_Bind, std::allocator >, std::allocator, std::allocator > > > (*(std::_Placeholder<1>, targeter*))(monster_info const&, targeter*)> >::_M_manager(std::_Any_data&, std::_Any_data const&, std::_Manager_operation)>}, _M_invoker = 0x5897e462efd0 , std::allocator >, std::allocator, std::allocator > > > (monster_info const&), std::_Bind, std::allocator >, std::allocator, std::allocator > > > (*(std::_Placeholder<1>, targeter*))(monster_info const&, targeter*)> >::_M_invoke(std::_Any_data const&, monster_info const&)>}, needs_path = {value = maybe_bool::mbool_t::maybe, static maybe = Compilation info: <<<<<<<<<<< Compiled with GCC 13.2.0 Build platform: x86_64-linux-gnu Platform: x86_64-linux-gnu CFLAGS: -O2 -pipe -DUSE_TILE -DUSE_TILE_WEB -Wall -Wformat-security -Wundef -Wextra -Wno-missing-field-initializers -Wno-implicit-fallthrough -Wno-type-limits -Wno-uninitialized -Wno-array-bounds -Wno-format-zero-length -Wmissing-declarations -Wredundant-decls -Wno-parentheses -Wwrite-strings -Wshadow -pedantic -Wuninitialized -Iutil -I. -isystem /usr/include/lua5.1 -g -DWIZARD -DASSERTS -DREGEX_PCRE -DCLUA_BINDINGS -DDGAMELAUNCH -DSAVE_DIR_PATH="/crawl-master/crawl-git-bf341ee2b0/saves" -DSHARED_DIR_PATH="/crawl-master/crawl-git/saves" -DDATA_DIR_PATH="/crawl-master/crawl-git-bf341ee2b0/data/" -DWEB_DIR_PATH="/crawl-master/crawl-git-bf341ee2b0/data/web/" -D_DEFAULT_SOURCE -D_XOPEN_SOURCE=600 LDFLAGS: -rdynamic -fuse-ld=gold -O2 >>>>>>>>>>> Place info: branch = 0, depth = 2 Level id: D:2 Level build method = , level layout type = rooms, absdepth0 = 1 Level vaults: layout_basic serial_shops shop Markers: <<<<<<<<<<<<<<<<<<<<<< >>>>>>>>>>>>>>>>>>>>>> Messages: <<<<<<<<<<<<<<<<<<<<<< Welcome, tempest the Merfolk Forgewright. It is said that the Orb of Zot exists deep within this dungeon. Press ? for a list of commands and other information. Found a staircase leading out of the dungeon. You open the door. There is an open door here. A hobgoblin comes into view. The hobgoblin shouts! Aiming: Kinetic Grapnel (safe; 4% risk of failure) Press: ? - help, Q - select action Shift-Dir - straight line Aim: a hobgoblin (71% to hit) The kinetic grapnel hits the hobgoblin. You kill the hobgoblin! Unknown command. You see here a hobgoblin corpse. You start resting. Magic restored. You see here a hobgoblin corpse. Found a sling. A hobgoblin comes into view. The hobgoblin shouts! Aiming: Kinetic Grapnel (safe; 4% risk of failure) Press: ? - help, Q - select action Shift-Dir - straight line Aim: a hobgoblin (71% to hit) The kinetic grapnel hits the hobgoblin. The hobgoblin is heavily wounded. The hobgoblin closely misses you. The grapnel guides your strike. You hit the hobgoblin. The hobgoblin is almost dead. The hobgoblin hits you. You hit the hobgoblin but do no damage. The hobgoblin is almost dead. The hobgoblin barely misses you. A hobgoblin is nearby! You hit the hobgoblin but do no damage. The hobgoblin is almost dead. The hobgoblin barely misses you. The hobgoblin hits you but does no damage. Aiming: Kinetic Grapnel (safe; 4% risk of failure) Press: ? - help, Q - select action Shift-Dir - straight line Aim: a hobgoblin (almost dead, 71% to hit) The kinetic grapnel hits the hobgoblin. You kill the hobgoblin! Unknown command. You start resting. HP restored. You start resting. Magic restored. d - a scroll labelled DAJO DUWNISMYI A bat comes into view. Found a stone staircase leading down. Aiming: Kinetic Grapnel (safe; 4% risk of failure) Press: ? - help, Q - select action Shift-Dir - straight line Aim: a bat (57% to hit) The kinetic grapnel hits the bat. The bat is severely wounded. The bat closely misses you. Unknown command. The grapnel guides your strike. You thump the bat! You kill the bat! You see here a bat corpse. You start resting. Magic restored. A frilled lizard comes into view. You see here a scroll labelled JIULEA ANIO. A frilled lizard is nearby! e - a scroll labelled JIULEA ANIO You see here a bat corpse. You start waiting. You see here a bat corpse. The frilled lizard hisses angrily. Aiming: Kinetic Grapnel (safe; 4% risk of failure) Press: ? - help, Q - select action Shift-Dir - straight line Aim: a frilled lizard (53% to hit) The kinetic grapnel misses the frilled lizard. The frilled lizard bites you. Unknown command. You barely miss the frilled lizard. The frilled lizard closely misses you. The frilled lizard misses you. You miss the frilled lizard. The frilled lizard bites you. You thump the frilled lizard! You kill the frilled lizard! Aiming: Kinetic Grapnel (safe; 4% risk of failure) Press: ? - help, Q - select action Shift-Dir - straight line Okay, then. You start resting. Magic restored. You start resting. HP restored. You start waiting. Done waiting. A rat comes into view. A kobold comes into view. It is wielding a +0 short sword. The kobold shouts! The rat squeaks loudly. Aiming: Kinetic Grapnel (safe; 4% risk of failure) Press: ? - help, Q - select action Shift-Dir - straight line Aim: a rat (71% to hit) The kinetic grapnel hits the rat. You kill the rat! Your Dodging skill increases to level 3! Aiming: Kinetic Grapnel (safe; 4% risk of failure) Press: ? - help, Q - select action Shift-Dir - straight line Aim: a kobold, wielding a +0 short sword (64% to hit) The kinetic grapnel hits the kobold. You kill the kobold! Unknown command. You see here a +0 short sword. You start resting. Magic restored. f - a +0 short sword A ball python comes into view. The ball python hisses angrily. Aiming: Kinetic Grapnel (safe; 4% risk of failure) Press: ? - help, Q - select action Shift-Dir - straight line Aim: a ball python (75% to hit) The kinetic grapnel hits the ball python. The ball python is moderately wounded. Unknown command. The grapnel guides your strike. You thump the ball python! You kill the ball python! You have reached level 2! You start resting. Magic restored. You start waiting. Done waiting. You start memorising the spell. You continue memorising. x2 You finish memorising. Spell assigned to 'b'. You see here a ball python corpse. Found a stone staircase leading down. A dart slug comes into view. A hobgoblin comes into view. The dart slug launches a dart at you. The slug dart hits you but does no damage. Casting: Construct Spike Launcher (safe; 6% risk of failure) Press: ? - help, Q - select action, ( or ) - cycle Dir - look around, f - activate You shape a spike launcher from a nearby wall. The rocky spike skewers the dart slug. The dart slug bites you. Unknown command. You hit the dart slug. The dart slug is almost dead. The rocky spike skewers the dart slug. The dart slug dies! Unknown command. You see here a dart slug corpse. A hobgoblin is nearby! A hobgoblin is nearby! You see here a dart slug corpse. You start resting. Magic restored. g - a scroll labelled MIDYUKHAWKAR You pick up a book of Displacement and begin reading... You add the spells Lesser Beckoning, Teleport Other and Maxwell's Portable Piledriver to your library. A rat comes into view. The rat squeaks loudly. Casting: Construct Spike Launcher (safe; 6% risk of failure) Press: ? - help, Q - select action, ( or ) - cycle Dir - look around, f - activate You shape a spike launcher from a nearby wall. The rocky spike skewers the rat. The rat dies! A ball python comes into view. The ball python hisses angrily. The rocky spike skewers the ball python. The ball python attacks as it pursues you! The ball python misses you. The rocky spike skewers the ball python. The ball python dies! You start resting. Magic restored. You start waiting. Done waiting. Okay, then. Unknown command. Unknown command. h - a bubbling clear potion i - an amulet of magic regeneration You start putting on your amulet. You continue putting on your amulet of magic regeneration. x5 You finish putting on your amulet of magic regeneration. i - an amulet of magic regeneration (around neck) The amulet throbs as it attunes itself to your body. A ball python comes into view. Casting: Construct Spike Launcher (safe; 6% risk of failure) Press: ? - help, Q - select action, ( or ) - cycle Dir - look around, f - activate You shape a spike launcher from a nearby wall. Unknown command. The rocky spike misses the ball python. You sock the ball python! You kill the ball python! Unknown command. You see here a ball python corpse. You start waiting. Done waiting. You see here a ball python corpse. A frilled lizard comes into view. The frilled lizard hisses angrily. Found a stone staircase leading down. You see here 9 gold pieces. You now have 9 gold pieces. Casting: Construct Spike Launcher (safe; 6% risk of failure) Press: ? - help, Q - select action, ( or ) - cycle Dir - look around, f - activate You shape a spike launcher from a nearby wall. Unknown command. The rocky spike skewers the frilled lizard. The frilled lizard dies! You start resting. Magic restored. Your spike launcher falls apart as you grow too distant to maintain it. A rat comes into view. The rat squeaks loudly. The rat twitches its whiskers. Casting: Construct Spike Launcher (safe; 6% risk of failure) Press: ? - help, Q - select action, ( or ) - cycle Dir - look around, f - activate You shape a spike launcher from a nearby wall. Unknown command. The rocky spike skewers the rat. The rat dies! You start waiting. Done waiting. You see here a rat corpse. You now have 23 gold pieces (gained 14). Found a club. You see here a +0 club. A kobold comes into view. It is wielding a +0 short sword. The kobold shouts! Casting: Construct Spike Launcher (safe; 6% risk of failure) Press: ? - help, Q - select action, ( or ) - cycle Dir - look around, f - activate You shape a spike launcher from a nearby wall. The rocky spike skewers the kobold. The kobold dies! Unknown command. Things that are here: a +0 short sword; a kobold corpse Your spike launcher falls apart as you grow too distant to maintain it. A giant cockroach comes into view. Casting: Construct Spike Launcher (safe; 6% risk of failure) Press: ? - help, Q - select action, ( or ) - cycle Dir - look around, f - activate You shape a spike launcher from a nearby wall. Unknown command. The rocky spike skewers the giant cockroach but does no damage. You barely miss the giant cockroach. The rocky spike misses the giant cockroach. x2 The giant cockroach bites you but does no damage. x2 You hit the giant cockroach. You kill the giant cockroach! You see here a giant cockroach corpse. You start waiting. Done waiting. A giant cockroach comes into view. You hit the giant cockroach. You kill the giant cockroach! Casting: Construct Spike Launcher (safe; 6% risk of failure) Press: ? - help, Q - select action, ( or ) - cycle Dir - look around, f - activate You shape a spike launcher from a nearby wall. Unknown command. Unknown command. Magic restored. Your spike launcher falls apart as you grow too distant to maintain it. A kobold comes into view. It is wielding a +0 club. A kobold is nearby! A hobgoblin comes into view. The kobold closely misses you. Casting: Construct Spike Launcher (safe; 6% risk of failure) Press: ? - help, Q - select action, ( or ) - cycle Dir - look around, f - activate You shape a spike launcher from a nearby wall. The kobold hits you with a +0 club. Unknown command. The kobold attacks as it pursues you! The kobold barely misses you. The rocky spike skewers the kobold. The kobold attacks as it pursues you! The kobold closely misses you. The rocky spike skewers the kobold. The kobold dies! The hobgoblin shouts! You see here a +0 club. You barely miss the hobgoblin. The hobgoblin misses you. You see here a +0 club. The hobgoblin attacks as it pursues you! The hobgoblin closely misses you. You hit the hobgoblin. The hobgoblin is lightly wounded. The hobgoblin closely misses you. The hobgoblin barely misses you. Casting: Construct Spike Launcher (safe; 6% risk of failure) Press: ? - help, Q - select action, ( or ) - cycle Dir - look around, f - activate You shape a spike launcher from a nearby wall. The rocky spike skewers the hobgoblin. The hobgoblin dies! Unknown command. You see here a hobgoblin corpse. You start waiting. Done waiting. You start waiting. Done waiting. You see here a +0 club. A ball python comes into view. The ball python hisses angrily. The ball python bites you but does no damage. The ball python grabs you. The ball python constricts you. The ball python bites you. The ball python constricts you. Casting: Construct Spike Launcher (safe; 6% risk of failure) Press: ? - help, Q - select action, ( or ) - cycle Dir - look around, f - activate You shape a spike launcher from a nearby wall. The rocky spike skewers the ball python. The ball python dies! Unknown command. You start resting. Magic restored. You start resting. HP restored. You start waiting. Done waiting. e - 2 scrolls labelled JIULEA ANIO (gained 1) e - 3 scrolls labelled JIULEA ANIO (gained 1) A ball python comes into view. Casting: Construct Spike Launcher (safe; 6% risk of failure) Press: ? - help, Q - select action, ( or ) - cycle Dir - look around, f - activate You shape a spike launcher from a nearby wall. The rocky spike skewers the ball python. The ball python dies! Unknown command. You see here a ball python corpse. You start waiting. Done waiting. You see here a ball python corpse. Found a mace. You see here a +0 mace. Found a mace. You see here a +0 mace. As you open the door, it creaks loudly! There is an open door here. There is an open door here. You see here a +0 mace. You see here a ball python skeleton. There is a stone staircase leading down here. Casting: Construct Spike Launcher (safe; 6% risk of failure) Press: ? - help, Q - select action, ( or ) - cycle Dir - look around, f - activate You miscast Construct Spike Launcher. You are very lightly contaminated with residual magic. Nothing appears to happen. Unknown command. Casting: Construct Spike Launcher (safe; 6% risk of failure) Press: ? - help, Q - select action, ( or ) - cycle Dir - look around, f - activate You shape a spike launcher from a nearby wall. The hobgoblin shouts! Unknown command. You hit the hobgoblin but do no damage. The hobgoblin hits you. You hit the hobgoblin but do no damage. The rocky spike skewers the hobgoblin. The hobgoblin hits you. You barely miss the hobgoblin. The hobgoblin is moderately wounded. The rocky spike skewers the hobgoblin. The hobgoblin dies! Your magical contamination has completely faded away. You start resting. HP restored. You start waiting. Done waiting. A bat comes into view. The bat hits you. Casting: Construct Spike Launcher (safe; 6% risk of failure) Press: ? - help, Q - select action, ( or ) - cycle Dir - look around, f - activate You shape a spike launcher from a nearby wall. The rocky spike skewers the bat. The bat dies! Unknown command. You start waiting. Done waiting. You start waiting. Done waiting. Done exploring. Done exploring. There is a stone staircase leading down here. You climb downwards. There is a stone staircase leading up here. A kobold comes into view. It is wielding a +0 club. Casting: Construct Spike Launcher (safe; 6% risk of failure) Press: ? - help, Q - select action, ( or ) - cycle Dir - look around, f - activate You shape a spike launcher from a nearby wall. The kobold shouts! Unknown command. The kobold hits you with a +0 club. The kobold throws a stone. The stone hits you but does no damage. The rocky spike skewers the kobold. The kobold hits you with a +0 club. You barely miss the kobold. The kobold is severely wounded. The rocky spike misses the kobold. The rocky spike skewers the kobold. The kobold dies! Things that are here: a +0 club; a stone; a kobold corpse You start resting. HP restored. You start waiting. Done waiting. A kobold comes into view. It is wielding a +0 club. You hit the kobold. The kobold is moderately wounded. The kobold hits you with a +0 club. Casting: Construct Spike Launcher (safe; 6% risk of failure) Press: ? - help, Q - select action, ( or ) - cycle Dir - look around, f - activate You shape a spike launcher from a nearby wall. The rocky spike misses the kobold. The kobold barely misses you. Unknown command. You closely miss the kobold. The kobold is moderately wounded. The rocky spike skewers the kobold. The kobold dies! j - an amulet of regeneration Things that are here: a +0 club; a kobold corpse You start resting. HP restored. You start waiting. Done waiting. An adder comes into view. The adder hisses angrily. Welcome back, tempest the Merfolk Forgewright. Press ? for a list of commands and other information. Casting: Construct Spike Launcher (safe; 6% risk of failure) Press: ? - help, Q - select action, ( or ) - cycle Dir - look around, f - activate You shape a spike launcher from a nearby wall. Unknown command. Casting: Construct Spike Launcher (safe; 6% risk of failure) Confirm with . or Enter, or press ? or * to list all spells. Aiming: Kinetic Grapnel (safe; 4% risk of failure) Press: ? - help, Shift-Dir - straight line Aim: an adder (53% to hit) The kinetic grapnel hits the adder. The adder is lightly wounded. The rocky spike skewers the adder. Unknown command. The grapnel guides your strike. You hit the adder. The adder is severely wounded. The rocky spike skewers the adder. The adder dies! Found a scroll labelled DYINLYNEECK and a leather armour. You start resting. Magic restored. k - a scroll labelled DYINLYNEECK As you open the door, it creaks loudly! Found a scroll labelled JIULEA ANIO. A frilled lizard comes into view. The frilled lizard hisses angrily. There is an open door here. The frilled lizard barely misses you. Casting: Construct Spike Launcher (safe; 6% risk of failure) Press: ? - help, Q - select action, ( or ) - cycle Dir - look around, f - activate You miscast Construct Spike Launcher. You are very lightly contaminated with residual magic. Nothing appears to happen. The frilled lizard barely misses you. An endoplasm comes into view. Casting: Construct Spike Launcher (safe; 6% risk of failure) Press: ? - help, Q - select action, ( or ) - cycle Dir - look around, f - activate You shape a spike launcher from a nearby wall. The rocky spike skewers the frilled lizard. The frilled lizard dies! Unknown command. A ball python comes into view. There is an open door here. Your magical contamination has completely faded away. You see here a frilled lizard corpse. A ball python is nearby! There is an open door here. The ball python attacks as it pursues you! The ball python barely misses you. The ball python grabs you. The ball python constricts you. The ball python's grasp on you weakens, but your attempt to escape fails. The ball python bites you but does no damage. The ball python constricts you. You barely miss the ball python. The ball python bites you but does no damage. The ball python constricts you. The ball python bites you but does no damage. The ball python constricts you. You hit the ball python. You kill the ball python! There is an open door here. Unknown command. An endoplasm is nearby! An endoplasm is nearby! An endoplasm is nearby! The endoplasm quivers. Casting: Construct Spike Launcher (safe; 6% risk of failure) Press: ? - help, Q - select action, ( or ) - cycle Dir - look around, f - activate You shape a spike launcher from a nearby wall. The rocky spike skewers the endoplasm. The endoplasm freezes you. You are frozen. The rocky spike skewers the endoplasm. The endoplasm dies! You start resting. HP restored. You start waiting. e - 4 scrolls labelled JIULEA ANIO (gained 1) A bat comes into view. The bat hits you but does no damage. You barely miss the bat. The bat hits you. x2 Casting: Construct Spike Launcher (safe; 6% risk of failure) Press: ? - help, Q - select action, ( or ) - cycle Dir - look around, f - activate You shape a spike launcher from a nearby wall. The bat closely misses you. Unknown command. Unknown command. The bat hits you but does no damage. You hit the bat. The bat is severely wounded. The rocky spike misses the bat. The rocky spike skewers the bat. The bat dies! You start waiting. Done waiting. You start waiting. Done waiting. Okay, then. Found an escape hatch in the floor. Found a stone staircase leading down. You open the door. There is an open door here. You now have 35 gold pieces (gained 12). There is an open door here. A goblin comes into view. It is wielding a +0 dagger. Found a stone staircase leading down. The goblin shouts! Found a scroll labelled JIULEA ANIO. Casting: Construct Spike Launcher (safe; 6% risk of failure) Press: ? - help, Q - select action, ( or ) - cycle Dir - look around, f - activate You shape a spike launcher from a nearby wall. The goblin hits you but does no damage. Unknown command. The goblin attacks as it pursues you! The goblin barely misses you. The rocky spike skewers the goblin. The goblin dies! You start waiting. Things that are here: a +0 dagger; a goblin corpse You now have 44 gold pieces (gained 9). e - 5 scrolls labelled JIULEA ANIO (gained 1) Things that are here: a +0 dagger; a goblin corpse You open the door. There is an open door here. You open the door. There is an open door here. Found a short sword. An adder comes into view. Found a stone staircase leading up. The adder bites you. Casting: Construct Spike Launcher (safe; 6% risk of failure) Press: ? - help, Q - select action, ( or ) - cycle Dir - look around, f - activate You shape a spike launcher from a nearby wall. The rocky spike skewers the adder. The adder bites you. You are poisoned. The adder poisons you! The rocky spike skewers the adder. You feel sick. The adder attacks as it pursues you! The adder closely misses you. The rocky spike misses the adder. You feel sick. The adder attacks as it pursues you! The adder bites you. You barely miss the adder. The adder is severely wounded. The rocky spike skewers the adder. The adder dies! You feel sick. Unknown command. You feel sick. You feel sick. You start resting. You feel sick. You are no longer poisoned. You start resting. HP restored. You start waiting. Done waiting. Found an escape hatch in the ceiling. A hobgoblin comes into view. The hobgoblin shouts! The hobgoblin hits you. Casting: Construct Spike Launcher (safe; 6% risk of failure) Press: ? - help, Q - select action, ( or ) - cycle Dir - look around, f - activate You shape a spike launcher from a nearby wall. The rocky spike skewers the hobgoblin. The hobgoblin dies! Unknown command. You start waiting. Done waiting. You see here a hobgoblin corpse. A kobold comes into view. It is wielding a +0 club. Casting: Construct Spike Launcher (safe; 6% risk of failure) Press: ? - help, Q - select action, ( or ) - cycle Dir - look around, f - activate >>>>>>>>>>>>>>>>>>>>>> Version history: Game started: 0.33-a0-510-gbf341ee2b0 Game state: mouse_enabled: 0, waiting_for_command: 0, terminal_resized: 0 io_inited: 1, need_save: 1, saving_game: 0, updating_scores: 0: seen_hups: 1, map_stat_gen: 0, type: 1, arena_suspended: 0 prev_cmd = CMD_FIRE repeat_cmd = CMD_NO_CMD Player: {{{{{{{{{{{ Name: [tempest] Species: Merfolk Job: Forgewright HP: 19/19; mods: 0/0 MP: 3/5; mod: 0 Stats: 10 (10) 14 (14) 12 (12) Position: (24, 20), god: No God (0), turn_is_over: 0, banished: 0 Standing on/in/over feature: floor Skills (mode: manual) Name | can_currently_train | train | training | level | points | progress Fighting | X | 0 | 0 | 0 | 0 | 0/42 Short Blades | X | 0 | 0 | 0 | 0 | 0/35 Long Blades | X | 0 | 0 | 0 | 0 | 0/35 Axes | X | 0 | 0 | 0 | 0 | 0/70 Maces & Flails | X | 0 | 0 | 0 | 0 | 0/70 Polearms | X | 0 | 0 | 0 | 0 | 0/29 Staves | X | 0 | 0 | 0 | 0 | 0/70 Ranged Weapons | X | 0 | 0 | 0 | 0 | 0/70 Throwing | X | 0 | 0 | 0 | 0 | 0/50 Armour | X | 0 | 0 | 0 | 0 | 0/84 Dodging | X | 1 | 34 | 3 | 214 | 36/119 Stealth | X | 0 | 0 | 2 | 127 | 21/106 Shields | X | 0 | 0 | 0 | 0 | 0/50 Unarmed Combat | X | 0 | 0 | 0 | 0 | 0/42 Spellcasting | X | 0 | 0 | 2 | 179 | 1/178 Conjurations | X | 0 | 0 | 0 | 0 | 0/70 Hexes | X | 0 | 0 | 0 | 0 | 0/50 Summonings | X | 0 | 0 | 0 | 0 | 0/50 Necromancy | X | 0 | 0 | 0 | 0 | 0/70 Translocations | X | 0 | 0 | 0 | 0 | 0/70 Forgecraft | X | 2 | 66 | 4 | 621 | 121/250 Fire Magic | X | 0 | 0 | 0 | 0 | 0/84 Ice Magic | X | 0 | 0 | 0 | 0 | 0/42 Air Magic | X | 0 | 0 | 0 | 0 | 0/70 Earth Magic | X | 0 | 0 | 0 | 0 | 0/70 Alchemy | X | 0 | 0 | 0 | 0 | 0/29 Invocations | X | 0 | 0 | 0 | 0 | 0/42 Evocations | X | 0 | 0 | 0 | 0 | 0/50 Shapeshifting | X | 0 | 0 | 0 | 0 | 0/35 Spell bugs: Durations: Attributes: #12: 44 #49: 54 Mutations: nimble swimmer: 2 (innate) mertail: 1 (innate) Inventory bugs: Equipment: eq slot #0, inv slot #0: +0 hammer eq slot #6, inv slot #2: +0 robe eq slot #9, inv slot #8: amulet of magic regeneration }}}}}}}}}}} Webtiles message buffer: Webtiles JSON stack: Screenshot: ..... ... #### .. #.# ...## #.# ###### ..#.# #.# #..... . .... #.# #..... ..##..##.# #..... .......#.#######..#######+# #......#..@K............... #....#########. ######.# #....#.....######..#####.# ........................... ##.########.###########...# # #####.# #####..# # #.....# #....... ##.####.....# #..[.... ..........†.# #....... clua stack: dlua stack: Lua persistent data: <<<<<<<<<<<<<<<<<<<<<< >>>>>>>>>>>>>>>>>>>>>> Lua marker contents: <<<<<<<<<<<<<<<<<<<<<< >>>>>>>>>>>>>>>>>>>>>>