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-511-g5569844878 Platform: unix Bits: 64 Game mode: normal Tiles: online Seed: 491142479629149502, deterministic pregen: 1 Command line: /usr/games/crawl-git-5569844878 -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:49:25.sock -await-connection RC options: restart_after_game = false Crash caused by signal #6: Aborted Obtained 34 stack frames. /usr/games/crawl-git-5569844878(_Z17write_stack_traceP8_IO_FILE+0x3e) [0x63df49ec162e]: write_stack_trace(_IO_FILE*) /usr/games/crawl-git-5569844878(_Z13do_crash_dumpv+0x43a) [0x63df49ecf78a]: do_crash_dump() /usr/games/crawl-git-5569844878(_Z20crash_signal_handleri+0x1fa) [0x63df49ec1b0a]: crash_signal_handler(int) /lib/x86_64-linux-gnu/libc.so.6(+0x42910) [0x7547e1242910]: /lib/x86_64-linux-gnu/libc.so.6(pthread_kill+0x11b) [0x7547e129999b]: /lib/x86_64-linux-gnu/libc.so.6(raise+0x16) [0x7547e1242866]: /usr/games/crawl-git-5569844878(+0x4b9aad) [0x63df49eceaad]: /usr/games/crawl-git-5569844878(_Z12AssertFailedPKcS0_iS0_z+0x1a1) [0x63df49ecf041]: AssertFailed(char const*, char const*, int, char const*, ...) /usr/games/crawl-git-5569844878(_ZN4bolt15initialise_fireEv+0x37d) [0x63df49e6d26d]: bolt::initialise_fire() /usr/games/crawl-git-5569844878(_ZN4bolt7do_fireEv+0x30) [0x63df49e7cab0]: bolt::do_fire() /usr/games/crawl-git-5569844878(_ZN4bolt4fireEv+0xa4) [0x63df49e7d9f4]: bolt::fire() /usr/games/crawl-git-5569844878(_ZN13targeter_beam7set_aimE9coord_def+0x9d) [0x63df4a52b3ed]: targeter_beam::set_aim(coord_def) /usr/games/crawl-git-5569844878(+0x54e0ea) [0x63df49f630ea]: /usr/games/crawl-git-5569844878(_ZN17direction_chooser6selectEbb+0x98) [0x63df49f63568]: direction_chooser::select(bool, bool) /usr/games/crawl-git-5569844878(_ZN17direction_chooser15process_commandE12command_type+0x65) [0x63df49f6a625]: direction_chooser::process_command(command_type) /usr/games/crawl-git-5569844878(_ZN22UIDirectionChooserView15process_commandE12command_type+0x2b) [0x63df49f73d6b]: UIDirectionChooserView::process_command(command_type) /usr/games/crawl-git-5569844878(_ZN22UIDirectionChooserView8on_eventERKN2ui5EventE+0x18a) [0x63df49f7409a]: UIDirectionChooserView::on_event(ui::Event const&) /usr/games/crawl-git-5569844878(_ZN2ui6UIRoot13deliver_eventERNS_5EventE+0x1b3) [0x63df4a582d93]: ui::UIRoot::deliver_event(ui::Event&) /usr/games/crawl-git-5569844878(_ZN2ui6UIRoot8on_eventER8wm_event+0x77) [0x63df4a583117]: ui::UIRoot::on_event(wm_event&) /usr/games/crawl-git-5569844878(_ZN2ui11pump_eventsEi+0xa5) [0x63df4a588315]: ui::pump_events(int) /usr/games/crawl-git-5569844878(_ZN17direction_chooser16choose_directionEv+0x2ea) [0x63df49f6d64a]: direction_chooser::choose_direction() /usr/games/crawl-git-5569844878(_Z9directionR4distRK22direction_chooser_args+0x80) [0x63df49f6d930]: direction(dist&, direction_chooser_args const&) /usr/games/crawl-git-5569844878(_Z15spell_directionR4distR4boltP22direction_chooser_args+0x1cf) [0x63df4a4ba1df]: spell_direction(dist&, bolt&, direction_chooser_args*) /usr/games/crawl-git-5569844878(_Z11your_spells10spell_typeibPK8item_defP4distb+0x66a) [0x63df4a45cf7a]: your_spells(spell_type, int, bool, item_def const*, dist*, bool) /usr/games/crawl-git-5569844878(_Z12cast_a_spellb10spell_typeP4distb+0x3c9) [0x63df4a45fd39]: cast_a_spell(bool, spell_type, dist*, bool) /usr/games/crawl-git-5569844878(_ZN6quiver12spell_action7triggerER4dist+0x126) [0x63df4a3d93e6]: quiver::spell_action::trigger(dist&) /usr/games/crawl-git-5569844878(_ZN6quiver13action_cycler9do_targetEv+0xf4) [0x63df4a3cc344]: quiver::action_cycler::do_target() /usr/games/crawl-git-5569844878(_ZN6quiver13action_cycler6targetEv+0x9c) [0x63df4a3d13dc]: quiver::action_cycler::target() /usr/games/crawl-git-5569844878(+0xc311ba) [0x63df4a6461ba]: /usr/games/crawl-git-5569844878(+0xc31cc5) [0x63df4a646cc5]: /usr/games/crawl-git-5569844878(main+0x1f7) [0x63df49df9f97]: /lib/x86_64-linux-gnu/libc.so.6(+0x280d0) [0x7547e12280d0]: /lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0x89) [0x7547e1228189]: /usr/games/crawl-git-5569844878(_start+0x25) [0x63df49dfa9b5]: 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". 0x00007547e130fbf7 in __GI___wait4 (pid=3425300, stat_loc=0x0, options=0, usage=0x0) at ../sysdeps/unix/sysv/linux/wait4.c:30 #0 0x00007547e130fbf7 in __GI___wait4 (pid=3425300, stat_loc=0x0, options=0, usage=0x0) at ../sysdeps/unix/sysv/linux/wait4.c:30 sc_ret = -512 sc_ret = #1 0x000063df49ec1cdc in call_gdb (file=0x7547e13ff6c0 <_IO_2_1_stderr_>) at crash.cc:438 gdb = attach_cmd = "attach 3425219\000\000\000\000\000" #2 0x000063df49ecf7a8 in do_crash_dump () at dbg-asrt.cc:692 t = 1733093531 dir = "/dgldir/morgue/tempest/" name = "/dgldir/morgue/tempest/crash-tempest-20241201-225211.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 = 0x7547e13ff6c0 <_IO_2_1_stderr_> #3 0x000063df49ec1b0a 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 = {140723699391520}} 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 0x00007547e1242866 in __GI_raise (sig=6) at ../sysdeps/posix/raise.c:26 ret = #9 0x000063df49eceaad in _BreakStrToDebugger (mesg=mesg@entry=0x7ffcca1d1e20 "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 0x000063df49ecf041 in AssertFailed (expr=expr@entry=0x63df4a65ac91 "range >= 0", file=file@entry=0x63df4a65a54a "beam.cc", line=line@entry=747, text=text@entry=0x63df4a6cea80 "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\350\274\301J\337c\000\000\270j\240\341Gu\000\000\300)\035\312\374\177\000\000e\000\000\000\000\000\000\000`\001\000\000\000\000\000\000\217\377\002J\337c\000\000e", '\000' , "\020\273pK\337c\000\000\020(\035\312\000\a\000\000\350\274\301J\337c\000\000\310\323%\341Gu\000\000e\000\000\000\000\000\000\000\020\"\035\312\374\177\000\000\002\000\000\000\000\000\000\000\210\357hJ\337c\000\000\330\"\035\312\374\177\000\000"... 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\300eJ\337c\000\000\352\300eJ\337c\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377\350\274\000\000\000\000\000\000\002\000\000\000\000\000\000\000\340\232\275K\337c\000\000 \000\000\000\000\000\000\000\020\000\000\0000\000\000\000\360,\035\312\374\177\000\000"... mesg = "ASSERT(range >= 0) in 'beam.cc' at line 747 failed.\000\000\000\000\000\310\323%\341Gu\000\000 \000\000\000\000\000\000\000\310\323%\341Gu\000\000\002\000\000\000\000\000\000\000\300\037\035\312\374\177\000\000\002\000\000\000\000\000\000\000\310\323%\341Gu\000\000\210 \035\312\374\177\000\000\340\037\035\312\374\177\000\000\000\000\000\000\000\000\000\000\354\300eJ\337c\000\000\250 \035\312\374\177\000\000\322U&\341Gu\000\000\000\000\000\000\000\000\000\000\n\000\000\000Gu\000\000 \034\035\312", '\000' , "\002\000\000\000\000\000\000\000"... args = {{gp_offset = 48, fp_offset = 48, overflow_arg_area = 0x7ffcca1d2318, reg_save_area = 0x7ffcca1d2230}} fileName = #11 0x000063df49e6d26d in bolt::initialise_fire (this=this@entry=0x7ffcca1d27b0) at /usr/include/c++/13/bits/basic_string.h:222 No locals. #12 0x000063df49e7cab0 in bolt::do_fire (this=this@entry=0x7ffcca1d27b0) at beam.cc:1237 coff = #13 0x000063df49e7d9f4 in bolt::fire (this=this@entry=0x7ffcca1d27b0) 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 = 68, y = 22}, target = {x = 69, y = 22}, damage = {num = 2, size = 4}, ench_power = 16, 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 0x000063df4a52b3ed in targeter_beam::set_aim (this=0x63df4bd718e0, 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 = 68, y = 22}, target = {x = 69, y = 22}, damage = {num = 2, size = 4}, ench_power = 16, 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 0x000063df49f630ea in direction_chooser::update_previous_target (this=this@entry=0x7ffcca1d3d30) at directn.cc:1310 old_m = 0x0 m = #16 0x000063df49f63568 in direction_chooser::update_previous_target (this=0x7ffcca1d3d30) at directn.cc:1617 old_m = m = old_m = m = ri = mon = #17 direction_chooser::select (this=this@entry=0x7ffcca1d3d30, allow_out_of_range=allow_out_of_range@entry=false, endpoint=endpoint@entry=false) at directn.cc:1620 mons = 0x0 #18 0x000063df49f6a625 in direction_chooser::process_command (this=0x7ffcca1d3d30, command=command@entry=CMD_TARGET_SELECT) at directn.cc:2285 loop_done = #19 0x000063df49f73d6b in UIDirectionChooserView::process_command (this=this@entry=0x63df4bd6a320, cmd=cmd@entry=CMD_TARGET_SELECT) at directn.cc:2456 cc = {cstate = false} loop_done = #20 0x000063df49f7409a in UIDirectionChooserView::on_event (this=0x63df4bd6a320, ev=...) at directn.cc:2428 key = 102 command = CMD_TARGET_SELECT top_prompt = "Casting: Construct Spike Launcher (safe; 4% risk of failure)" #21 0x000063df4a582d93 in ui::UIRoot::deliver_event (this=0x63df4ab4f660 , event=...) at ui.cc:2933 w = 0x63df4bd6a320 top = key = 102 #22 0x000063df4a583117 in ui::UIRoot::on_event (this=this@entry=0x63df4ab4f660 , event=...) at ui.cc:2857 key_event = { = {m_type = ui::Event::KeyDown, m_target = std::shared_ptr (use count 4, weak count 1) = {get() = 0x63df4bd6a320}}, m_key = 102} #23 0x000063df4a588315 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 = 102, 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 0x000063df49f6d64a in direction_chooser::choose_direction (this=this@entry=0x7ffcca1d3d30) 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 = 0x63df4a98e658 , origin = {x = 68, y = 22}, aim = {x = 68, y = 22}, agent = 0x63df4ab9e580 , why_not = "", obeys_mesmerise = false}, exp_range_min = 0, exp_range_max = 0, exp_map_min = {mData = {mData = {{mData = {32764, -904048192, 32764, 0, 0, 2, 32764, -904048040, 32764, 23, 0, -904056288, 32764, 22, 0, -513051156, 30023, -904047792, 32764}}, {mData = {1246703973, 25567, 22, 0, 24, 48, -904047984, 32764, -904048176, 32764, -904048128, 32764, 1246703973, 25567, 43, 0, 16, 48, 1869095009}}, {mData = {1651468130, 544106860, 1847620457, 1651663205, 8569, 1246703663, 25567, 8, 0, 16, 48, 538976288, 538976288, 538976288, 538976288, 538976288, 538976288, 538976288, 538976288}}, {mData = {538976288, 538976288, 2105376, 25567, 538976288, 538976288, 1884495872, 543517545, 1853186380, 1919248483, -904048128, 32764, -904047744, 32764, 304052992, 417697957, -904047712, 32764, 1246703663}}, {mData = {25567, 1936261152, 2112101, 691023409, 538976288, -905961440, 32764, -904047952, 32764, 0, 0, -904055344, 32764, 3291716, 32764, -904055232, 32764, 774973472, 10544}}, {mData = {1261589136, 25567, -904056000, 32764, -512454219, 30023, -904055712, 32764, 0, 0, -904056000, 32764, 0, 0, 1701667073, 32512, -904055344, 32764, -511271520}}, {mData = {30023, -512385102, 30023, 0, 0, -904055728, 32764, -904055232, 32764, 7, 0, -904055376, 32764, -512866283, 30023, -511302168, 30023, 1242495131, 25567}}, {mData = {2, 2, -904055344, 32764, -904055232, 32764, -904055440, 32764, -904055280, 32764, 1251675936, 25567, -904055248, 32764, 16777218, 3, -904055392, 32764, -904055424}}, {mData = {32764, -904055472, 32764, -904055568, 32764, -904055696, 32764, -904055336, 32764, -904055632, 32764, -904055536, 32764, -904055504, 32764, -904055600, 32764, -904055664, 32764}}, {mData = {2, 2, 2, 2, 2, 2, -904055712, 32764, 7, 0, 1830826027, 6644577, 2, 2, -904055680, 32764, 0, 0, 0}}, {mData = {2, 2, 2, -904055648, 32764, 3, 0, 2109483, 2, 2, 2, -904055616, 32764, 0, 0, 0, 2, 2, 2}}, {mData = {-904055584, 32764, 0, 0, 0, 2, 2, 2, -904055552, 32764, 0, 0, 0, 2, 2, 2, -904055520, 32764, 4}}, {mData = {0, 1701011821, 0, 2, 2, -904055488, 32764, 0, 0, -904054160, 32764, 2, 0, 0, 32764, -904054160, 32764, 0, 2}}, {mData = {2, 2, -904055424, 32764, 0, 0, 2109440, 2, 2, 2, -904055392, 32764, 0, 0, 1830825984, 6644577, 2, 2, -904055360}}, {mData = {32764, 7, 0, 1830826027, 6644577, 304052992, 417697957, -511302208, 30023, 1251675936, 25567, 0, 0, 0, 0, 0, 0, -904055248, 32764}}, {mData = {-904055241, 32764, -904055233, 32764, -511271520, 30023, 16, 417697957, -904055248, 32764, 0, 0, 1830826027, 6644577, -904054808, 32764, -511319056, 30023, -512428542}}, {mData = {30023, 0, 0, 4098, 0, 0, 2, 0, 0, 0, 0, 1242464552, 25567, 0, 0, 304052992, 417697957, 0, 0}}, {mData = {0, 0, 0, 0, -904054672, 32764, 0, 0, 1242482641, 25567, 0, 0, 1245977245, 25567, 0, 0, 1244845495, 25567, 142}}, {mData = {0, 1, 0, 18, 0, 1245977245, 25567, -904054151, 32764, 1245977245, 25567, 142, 0, 1244845495, 25567, 142, 0, 1, 0}}}}}, exp_map_max = {mData = {mData = {{mData = {18, 0, 1245977245, 25567, 1253192224, 25567, 1244845495, 25567, 142, 0, 1, 0, 18, 0, 1244856782, 25567, 179, 0, -1}}, {mData = {0, 1253192224, 25567, 18, 0, -904054848, 32764, 1253696896, 25567, 179, 0, 1, 0, 100, 0, 0, 0, -904054800, 32764}}, {mData = {0, 0, 1253696896, 25567, 0, 0, -1, 0, 1245385741, 25567, 6, 0, 1245325584, 4, 1241704256, 25567, 1245385741, 25567, 100}}, {mData = {0, 0, 49, 16, 0, 304052992, 417697957, 1253696896, 25567, 1253696896, 25567, 0, 0, 1245303308, 25567, 0, 0, 463, 0}}, {mData = {463, 0, 1246509391, 25567, 463, 0, 1246472576, 25567, 1660, 0, 16, 0, 463, 0, 1253696896, 25567, 0, 0, 1246067392}}, {mData = {25567, 22, 2, 61, 15, 1, 0, 304052992, 417697957, 0, 0, 304052992, 417697957, 1253696896, 25567, 1, 0, 1253696896, 25567}}, {mData = {1, 0, 0, 0, 1246481254, 25567, -904054496, 32764, 0, 0, 1701667073, 32512, -904053840, 32764, -511271520, 30023, -512428542, 30023, 0}}, {mData = {0, 304052992, 417697957, -904053728, 32764, -904053920, 32764, 0, 0, 304052992, 417697957, 1, 0, 0, 0, 0, 0, -904053592, 32764}}, {mData = {-904053968, 32764, 7, 0, -904054256, 32764, -512395538, 30023, 0, 0, -904053600, 32764, -904053664, 32764, -904053488, 32764, 7, 0, 1272083856}}, {mData = {25567, -904054256, 32764, -512454219, 30023, -904053968, 32764, 0, 0, -904054256, 32764, 0, 0, 1701667073, 32512, -904053600, 32764, -511271520, 30023}}, {mData = {-512385102, 30023, 0, 0, -904053984, 32764, -904053488, 32764, 7, 0, -904053632, 32764, -512866283, 30023, -511302168, 30023, 1242495131, 25567, -904054144}}, {mData = {32764, -904053600, 32764, -904053488, 32764, -904053696, 32764, -904053536, 32764, 1251675936, 25567, -904053504, 32764, 16777216, 3, -904053648, 32764, -904053680, 32764}}, {mData = {-904053728, 32764, -904053824, 32764, -904053952, 32764, -904053592, 32764, -904053888, 32764, -904053792, 32764, -904053760, 32764, -904053856, 32764, -904053920, 32764, 1272947504}}, {mData = {25567, -904053952, 32764, -512454219, 30023, -904053968, 32764, 7, 0, 1830826027, 6644577, 0, 0, -904053936, 32764, 0, 0, -511271680, 30023}}, {mData = {-512428542, 30023, -904053904, 32764, 304052992, 417697957, 2109483, 32764, -904053376, 32764, 0, 0, 304052992, 417697957, 1, 0, 0, 0, 0}}, {mData = {0, -904053048, 32764, -904053424, 32764, 7, 0, -904053712, 32764, -512395538, 30023, 0, 0, -904053056, 32764, -904053120, 32764, -904052944, 32764}}, {mData = {7, 0, 1272340848, 25567, -904053712, 32764, -512454219, 30023, -904053424, 32764, 0, 0, -904053712, 32764, 0, 0, 1701667073, 32512, -512428542}}, {mData = {30023, -511271520, 30023, 304052992, 417697957, 0, 0, 1245977245, 25567, 0, 0, 1245977245, 25567, 137, 0, -904053416, 32764, 16, 0}}, {mData = {1265351440, 25567, -904052464, 32764, -513051156, 30023, -904053552, 32764, 1239487669, 25567, -904053456, 32764, -904053456, 32764, -904053056, 32764, 1240853959, 25567, 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 0x000063df49f6d930 in direction (moves=..., args=...) at directn.cc:400 No locals. #26 0x000063df4a4ba1df in spell_direction (spelld=..., pbolt=..., args=args@entry=0x7ffcca1d4420) at spl-util.cc:861 newargs = {hitfunc = 0x63df4bd718e0, 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; 4% risk of failure)", behaviour = 0x7ffcca1d4110, 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 = 0x63df4b6bbb10, _M_const_object = 0x63df4b6bbb10, _M_function_pointer = 0x63df4b6bbb10, _M_member_pointer = (void (std::_Undefined_class::*)(std::_Undefined_class * const)) 0x63df4b6bbb10}, _M_pod_data = "\020\273kK\337c\000\000\000\000\000\000\000\000\000"}, _M_manager = 0x63df49e11450 , 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 = 0x63df49e10fd0 , 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 = 68, y = 22}} #27 0x000063df4a45cf7a 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=0x63df4bdefb48, 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 = 0x63df4bbc76d0, _M_const_object = 0x63df4bbc76d0, _M_function_pointer = 0x63df4bbc76d0, _M_member_pointer = (void (std::_Undefined_class::*)(std::_Undefined_class * const)) 0x63df4bbc76d0}, _M_pod_data = "\320v\274K\337c\000\000\000\000\000\000\000\000\000"}, _M_manager = 0x63df49e11450 , 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 = 0x63df49e10fd0 , 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 = 0x63df4a9aef78 , 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 = 0x63df4bc199a0, _M_const_object = 0x63df4bc199a0, _M_function_pointer = 0x63df4bc199a0, _M_member_pointer = (void (std::_Undefined_class::*)(std::_Undefined_class * const)) 0x63df4bc199a0}, _M_pod_data = "\240\231\301K\337c\000\000\000\000\000\000\000\000\000"}, _M_manager = 0x63df49e11450 , 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 = 0x63df49e10fd0 , 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-5569844878/saves" -DSHARED_DIR_PATH="/crawl-master/crawl-git/saves" -DDATA_DIR_PATH="/crawl-master/crawl-git-5569844878/data/" -DWEB_DIR_PATH="/crawl-master/crawl-git-5569844878/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 = corridors, absdepth0 = 1 Level vaults: layout_loops_ring grunt_ministairs_4 Markers: <<<<<<<<<<<<<<<<<<<<<< >>>>>>>>>>>>>>>>>>>>>> Messages: <<<<<<<<<<<<<<<<<<<<<< Welcome, tempest the Merfolk Forgewright. The incredible Orb of Zot lies far below, as if waiting for you to find it. 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 dart slug comes into view. Found a leather armour. The dart slug launches a dart at you. The slug dart hits you. You start resting. HP restored. You start waiting. A dart slug is nearby! You hit the dart slug but do no damage. The dart slug launches a dart at you. The slug dart misses you. Aiming: Kinetic Grapnel (safe; 4% risk of failure) Press: ? - help, Q - select action Shift-Dir - straight line Aim: a dart slug (100% to hit) The kinetic grapnel hits the dart slug. The dart slug is moderately wounded. Unknown command. Unknown command. The grapnel guides your strike. You hit the dart slug. The dart slug is moderately wounded. The dart slug launches a dart at you. The slug dart misses you. You hit the dart slug. The dart slug is severely wounded. The dart slug bites you. You hit the dart slug. You kill the dart slug! You start resting. Magic restored. You start resting. HP restored. d - a fizzy black potion Found a stone staircase leading down. A bat comes into view. The bat hits you. x2 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. The bat hits you but does no damage. The grapnel guides your strike. You hit the bat. You kill the bat! You see here a bat corpse. You start resting. HP restored. Magic restored. There is a stone staircase leading down here. A ball python comes into view. The ball python hisses angrily. You see here a scroll labelled YSIONA JUM BAIL. e - a scroll labelled YSIONA JUM BAIL 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. You kill the ball python! Unknown command. You start resting. Magic restored. A giant cockroach comes into view. Aiming: Kinetic Grapnel (safe; 4% risk of failure) Press: ? - help, Q - select action Shift-Dir - straight line Aim: a giant cockroach (asleep, 100% to hit) The kinetic grapnel hits the giant cockroach but does no damage. The giant cockroach bites you but does no damage. Unknown command. You hit the giant cockroach. The giant cockroach is moderately wounded. The giant cockroach closely misses you. You hit the giant cockroach. You kill the giant cockroach! Your Dodging skill increases to level 3! You see here a giant cockroach corpse. You start resting. Magic restored. Found a hand axe. 2 bats come into view. The bat closely misses you. 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 misses the bat. The bat hits you but does no damage. x2 Unknown command. Unknown command. You hit the bat. The bat is severely wounded. The bat hits you but does no damage. x2 Aiming: Kinetic Grapnel (safe; 4% risk of failure) Press: ? - help, Q - select action Shift-Dir - straight line Aim: a bat (severely wounded, 57% to hit) The kinetic grapnel hits the bat but does no damage. The bat is severely wounded. The bat closely misses you. Unknown command. You barely miss the bat. The bat is severely wounded. The bat barely misses you. The bat hits you. x2 Unknown command. Aiming: Kinetic Grapnel (safe; 4% risk of failure) Press: ? - help, Q - select action Shift-Dir - straight line Aim: a bat (severely wounded, 57% to hit) The kinetic grapnel hits the bat. You kill the bat! The bat hits you but does no damage. You have reached level 2! You don't have enough magic to cast this spell. You don't have enough magic to cast this spell. Unknown command. You barely miss the bat. The bat closely misses you. Unknown command. A kobold comes into view. It is wielding a +0 whip. The bat hits you. You hit the bat but do no damage. The kobold shouts! You hear a loud squeak. The bat misses you. An endoplasm comes into view. The bat hits you. The bat closely misses you. The bat hits you but does no damage. The bat hits you but does no damage. There are monsters nearby! 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 but does no damage. The bat misses you. The bat barely misses you. Unknown command. You hit the bat. You kill the bat! You start resting. A kobold is nearby! A kobold is nearby! Aiming: Kinetic Grapnel (safe; 4% risk of failure) Press: ? - help, Q - select action Shift-Dir - straight line Aim: a kobold, wielding a +0 whip (64% to hit) The kinetic grapnel hits the kobold. You kill the kobold! Unknown command. Things that are here: a +0 whip; a kobold corpse Unknown command. You start resting. Magic restored. You start waiting. Done waiting. An endoplasm is nearby! Aiming: Kinetic Grapnel (safe; 4% risk of failure) Press: ? - help, Q - select action Shift-Dir - straight line Aim: an endoplasm (wandering, hasn't noticed you, 98% to hit) The kinetic grapnel hits the endoplasm. The endoplasm is heavily wounded. The endoplasm quivers. The endoplasm hits you. Unknown command. The grapnel guides your strike. You hit the endoplasm. You kill the endoplasm! You start resting. HP restored. You start resting. Magic restored. Things that are here: a +0 whip; a kobold corpse You open the door. There is an open door here. Found a dagger. A goblin and a hobgoblin come into view. Found 5 poisoned darts and a scroll labelled PEUKKE QAAC. A rat comes into view. The hobgoblin shouts! The rat squeaks loudly. A rat is nearby! 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! Unknown command. You start resting. A hobgoblin is nearby! The hobgoblin barely misses you. 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 severely wounded. The hobgoblin barely misses you. Unknown command. The grapnel guides your strike. You sock the hobgoblin! You kill the hobgoblin! You see here a rat corpse. You start resting. Magic restored. You start waiting. A rat comes into view. You see here a scroll labelled ESUTOL CETIHENE. A rat is nearby! f - a scroll labelled ESUTOL CETIHENE The rat squeaks loudly. You hear a shout! You see here a scroll labelled PEUKKE QAAC. g - a scroll labelled PEUKKE QAAC 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! Unknown command. You start resting. Magic restored. The goblin shouts! A ball python comes into view. Aiming: Kinetic Grapnel (safe; 4% risk of failure) Press: ? - help, Q - select action Shift-Dir - straight line Aim: a goblin, wielding a +0 dagger (64% to hit) You miscast Kinetic Grapnel. You are very lightly contaminated with residual magic. Nothing appears to happen. The ball python hisses angrily. The goblin hits you but does no damage. You hit the goblin. The goblin is heavily wounded. The goblin barely misses you. The ball python bites you but does no damage. The ball python grabs you. The ball python constricts you. The goblin completely misses you. Aiming: Kinetic Grapnel (safe; 4% risk of failure) Press: ? - help, Q - select action Shift-Dir - straight line Aim: a goblin, wielding a +0 dagger (heavily wounded, 64% to hit) The kinetic grapnel hits the goblin. You kill the goblin! The ball python bites you but does no damage. The ball python constricts you. The ball python's grasp on you weakens, but your attempt to escape fails. The ball python bites you. The ball python constricts you. Aiming: Kinetic Grapnel (safe; 4% risk of failure) Press: ? - help, Q - select action Shift-Dir - straight line Aim: a ball python (constricting you, 75% to hit) The kinetic grapnel hits the ball python. The ball python is heavily wounded. The ball python bites you but does no damage. The ball python constricts you. The ball python bites you. The ball python constricts you. The grapnel guides your strike. You hit the ball python. You kill the ball python! Your magical contamination has completely faded away. Unknown command. You start resting. HP restored. You start resting. Magic restored. You start waiting. You start memorising the spell. You continue memorising. x2 You finish memorising. Spell assigned to 'b'. You see here a +0 dagger. A bat comes into view. The bat hits you. Casting: Kinetic Grapnel (safe; 3% risk of failure) Confirm with . or Enter, or press ? or * to list all spells. Aiming: Kinetic Grapnel (safe; 3% risk of failure) Press: ? - help, Shift-Dir - straight line Aim: a bat (57% to hit) The kinetic grapnel hits the bat. You kill the bat! Unknown command. You start resting. HP restored. Magic restored. You open the door. There is an open door here. You open the door. There is an open door here. 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 ball python hisses angrily. Unknown command. The rocky spike skewers the ball python. The ball python dies! You open the door. There is an open door here. A goblin comes into view. It is wielding a +0 club. You see here a fizzy black potion. d - 2 fizzy black potions (gained 1) 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 shouts! Unknown command. The rocky spike skewers the goblin. The goblin dies! You start resting. Magic restored. You see here a +0 club. Your legs become a tail as you enter the water. A ball python comes into view. Found a stone staircase leading down. The ball python hisses angrily. You hit the ball python. You kill the ball python! You now have 1 gold piece. A quokka comes into view. Found a thin cabochon amulet. A bat comes into view. The bat hits you but does no damage. 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 miscast Construct Spike Launcher. You are very lightly contaminated with residual magic. Nothing appears to happen. The bat barely misses you. You hit the bat. You kill the bat! You see here a bat corpse. Casting: Construct Spike Launcher (safe; 5% 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 quokka. The quokka bites you. The quokka bites you but does no damage. Unknown command. You closely miss the quokka. The quokka is almost dead. The rocky spike misses the quokka. The rocky spike skewers the quokka! The quokka dies! You start resting. Your magical contamination has completely faded away. HP restored. Magic restored. You now have 12 gold pieces (gained 11). h - an amulet of regeneration A frilled lizard comes into view. A frilled lizard is nearby! Casting: Construct Spike Launcher (safe; 5% 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. You start resting. Magic restored. You see here a frilled lizard corpse. A bat comes into view. There is a shaft here. The helpless bat fails to defend itself. You hit the bat. The bat is heavily wounded. The bat hits you. The bat hits you but does no damage. You barely miss the bat. The bat is heavily wounded. The bat hits you. The bat hits you but does no damage. You barely miss the bat. The bat is heavily wounded. The bat closely misses you. The bat hits you but does no damage. The bat barely misses you. You hit the bat. You kill the bat! Casting: Construct Spike Launcher (safe; 5% risk of failure) Press: ? - help, Q - select action, ( or ) - cycle Dir - look around, f - activate Okay, then. You start resting. HP restored. There is a shaft here. You see here a frilled lizard corpse. i - a scroll labelled TAPRAO IQAOSHRE j - a scroll labelled FECUPERPHAM You open the door. Found a sling. There is an open door here. Okay, then. You see here a +0 sling. A ball python comes into view. The ball python hisses angrily. The ball python bites you but does no damage. The ball python closely misses you. The ball python bites you. The ball python grabs you. The ball python constricts you. Casting: Construct Spike Launcher (safe; 5% 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 ball python barely misses you. The ball python constricts you. You hit the ball python. You kill the ball python! Unknown command. You start resting. HP restored. You start resting. Magic restored. As you open the door, it creaks loudly! A kobold comes into view. It is wielding a +0 short sword. The kobold shouts! Casting: Construct Spike Launcher (safe; 5% 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 short sword. Unknown command. The rocky spike skewers the kobold. The kobold dies! You start resting. A ball python comes into view. You see here a +0 short sword. The ball python hisses angrily. Casting: Construct Spike Launcher (safe; 5% 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 ball python bites you. The ball python grabs you. The ball python constricts you. Unknown command. You escape the ball python's grasp. You see here a +0 short sword. You closely miss the ball python. The rocky spike skewers the ball python. The ball python dies! You see here a +0 short sword. You start resting. Magic restored. You open the door. There is an open door here. There is an open door here. Found a faded altar of an unknown god. Found a club. A kobold comes into view. It is wielding a +0 short sword. Found 9 gold pieces. A rat comes into view. The kobold shouts! The rat squeaks loudly. The kobold closely misses you. The kobold closely misses you. Casting: Construct Spike Launcher (safe; 5% 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 hits you with a +0 short sword. Unknown command. The rocky spike misses the kobold. The kobold throws a stone. The stone hits you but does no damage. The rocky spike skewers the kobold. The kobold dies! The rat bites you. Things that are here: a +0 short sword; 5 stones The rat twitches its whiskers. The rat attacks as it pursues you! The rat barely misses you. A rat is nearby! You closely miss the rat. The rat barely misses you. You closely miss the rat. The rat bites you. You hit the rat. You kill the rat! You see here a rat corpse. You start resting. Magic restored. HP restored. You now have 21 gold pieces (gained 9). Found a stone staircase leading down. There is a stone staircase leading down here. A hobgoblin comes into view. The hobgoblin shouts! You closely miss the hobgoblin. The hobgoblin misses you. The hobgoblin hits you but does no damage. Casting: Construct Spike Launcher (safe; 5% 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 hits you. Unknown command. The rocky spike skewers the hobgoblin. The hobgoblin dies! You start resting. HP restored. Magic restored. Your legs become a tail as you enter the water. There is an open door here. There is an open door here. You open the door. There is an open door here. 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 short sword. Done exploring. Done exploring. There is an open door here. There is a stone staircase leading down here. You climb downwards. Found a scroll labelled TAPRAO IQAOSHRE. There is a stone staircase leading up here. Unknown command. Found a stone staircase leading down. Found a pair of gloves. Found a leather armour. i - 2 scrolls labelled TAPRAO IQAOSHRE (gained 1) A ball python comes into view. Found a scroll labelled HASHRIRHA ZUFAR. The ball python hisses angrily. You see here a +0 pair of gloves. k - a +0 pair of gloves The ball python misses you. The ball python closely misses you. The ball python bites you. The ball python closely misses you. The ball python attacks as it pursues you! The ball python misses you. The ball python closely misses you. Casting: Construct Spike Launcher (safe; 5% 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. HP restored. You start resting. An adder comes into view. You see here a ball python corpse. The adder misses you. Casting: Construct Spike Launcher (safe; 5% 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 but does no damage. Unknown command. The rocky spike skewers the adder. The adder bites you. You hit the adder. The adder is almost dead. The rocky spike skewers the adder. The adder dies! You have reached level 3! Your experience leads to an increase in your attributes! Increase (S)trength, (I)ntelligence, or (D)exterity? You feel clever. x2 You start resting. HP restored. You start resting. A bat comes into view. A bat is nearby! Okay, then. You start resting. A bat is nearby! The bat hits you. The bat hits you but does no damage. A bat is nearby! Casting: Construct Spike Launcher (safe; 4% 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 resting. Magic restored. You start waiting. Done waiting. This spell is quite dangerous to cast! You start memorising the spell. You continue memorising. x3 You finish memorising. Spell assigned to 'c'. l - a scroll labelled HASHRIRHA ZUFAR A quokka comes into view. A quokka is nearby! Found 8 gold pieces. The quokka bites you. Casting: Construct Spike Launcher (safe; 4% 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 quokka misses you. Unknown command. The quokka barely misses you. The rocky spike misses the quokka. The quokka attacks as it pursues you! The quokka barely misses you. You closely miss the quokka. The rocky spike misses the quokka. The rocky spike skewers the quokka. The quokka closely misses you. A quokka is nearby! You hit the quokka. You kill the quokka! You start resting. HP restored. You start resting. Magic restored. Found an escape hatch in the floor. You now have 29 gold pieces (gained 8). You open the door. Found a stone staircase leading up. There is an open door here. There is an open door here. You open the door. Found a stone staircase leading down. There is an open door here. There is a dry fountain here. There is an open door here. You now have 40 gold pieces (gained 11). A goblin comes into view. It is wielding a +0 club. As you read the scroll labelled TAPRAO IQAOSHRE, it crumbles to dust. It is a scroll of identify. g - a scroll of enchant weapon As you read the scroll of identify, it crumbles to dust. j - a scroll of immolation The goblin shouts! The goblin barely misses you. You barely miss the goblin. The goblin closely misses you. You hit the goblin. You kill the goblin! Things that are here: a +0 club; a goblin corpse d - 3 fizzy black potions (gained 1) Found a stone staircase leading up. i - a fizzy golden potion There is a stone staircase leading up here. Found an arbalest. Found an escape hatch in the floor. You see here a +0 arbalest. A giant cockroach and a goblin come into view. There is an escape hatch in the floor here. A quokka and a rat come into view. The giant cockroach bites you. You hit the giant cockroach. The giant cockroach is moderately wounded. The giant cockroach bites you but does no damage. You barely miss the giant cockroach. The giant cockroach is moderately wounded. The giant cockroach barely misses you. x2 You hit the giant cockroach. The giant cockroach is heavily wounded. The giant cockroach completely misses you. The giant cockroach bites you but does no damage. You barely miss the giant cockroach. The giant cockroach is heavily wounded. The giant cockroach barely misses you. You hit the giant cockroach. The giant cockroach is almost dead. The rat squeaks loudly. The giant cockroach misses you. The giant cockroach closely misses you. You hit the giant cockroach. You kill the giant cockroach! The quokka bites you but does no damage. You see here a giant cockroach corpse. The rat bites you but does no damage. The quokka closely misses you. Casting: Construct Spike Launcher (safe; 4% 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 rat bites you but does no damage. The quokka bites you. The quokka twitches its whiskers. The quokka attacks as it pursues you! The quokka bites you. Unknown command. Casting: Construct Spike Launcher (safe; 4% 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 quokka. The quokka bites you but does no damage. Unknown command. The rocky spike skewers the quokka. The quokka dies! The rocky spike skewers the rat. The rat dies! Your magical contamination has completely faded away. Things that are here: a rat corpse; a quokka corpse You start resting. HP restored. You start resting. Magic restored. A ribbon worm comes into view. Casting: Construct Spike Launcher (safe; 4% 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 ribbon worm. Unknown command. You hit the ribbon worm. The ribbon worm is heavily wounded. The rocky spike skewers the ribbon worm. x2 The ribbon worm dies! You see here a ribbon worm corpse. Unknown command. You closely miss the goblin. The goblin hits you with a +0 club. x2 The goblin attacks as it pursues you! The goblin hits you but does no damage. You see here a ribbon worm corpse. The goblin attacks as it pursues you! The goblin barely misses you. You hit the goblin. You kill the goblin! You see here a +0 club. You start resting. Magic restored. You start resting. HP restored. You see here a ribbon worm corpse. Things that are here: a rat corpse; a quokka corpse Found an escape hatch in the ceiling. There is an escape hatch in the ceiling here. An endoplasm comes into view. The endoplasm quivers. You hit the endoplasm. You kill the endoplasm! Casting: Construct Spike Launcher (safe; 4% 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. Magic restored. A hobgoblin comes into view. The hobgoblin shouts! You barely miss the hobgoblin. The hobgoblin misses you. Casting: Construct Spike Launcher (safe; 4% 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 hits you. Unknown command. The rocky spike skewers the hobgoblin. The hobgoblin attacks as it pursues you! The hobgoblin misses you. The rocky spike misses the hobgoblin. The hobgoblin attacks as it pursues you! The hobgoblin misses you. You barely miss the hobgoblin. The hobgoblin is almost dead. The hobgoblin hits you. A hobgoblin is nearby! You barely miss the hobgoblin. The hobgoblin is almost dead. The hobgoblin closely misses you. The hobgoblin barely misses you. You hit the hobgoblin but do no damage. The hobgoblin is almost dead. The hobgoblin barely misses you. You hit the hobgoblin. You kill the hobgoblin! You see here a hobgoblin corpse. You start resting. Magic restored. Found a quarterstaff. A ball python comes into view. The ball python hisses angrily. The ball python barely misses you. 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; 4% 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 ball python bites you but does no damage. The ball python constricts you. Unknown command. 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. Unknown command. You escape the ball python's grasp. The ball python bites you but does no damage. The ball python grabs you. The ball python constricts you. A ball python is nearby! The ball python's grasp on you weakens, but your attempt to escape fails. The ball python barely misses you. The ball python constricts you. The ball python bites you but does no damage. The ball python constricts you. A ball python is nearby! You escape the ball python's grasp. You see here 5 gold pieces. You hit the ball python. You kill the ball python! Unknown command. You see here a ball python corpse. You start resting. Magic restored. You now have 45 gold pieces (gained 5). HP restored. You see here a ball python corpse. Found a stone staircase leading down. There is a stone staircase leading down here. A hobgoblin comes into view. The hobgoblin shouts! The hobgoblin closely misses you. Casting: Construct Spike Launcher (safe; 4% 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 resting. Magic restored. m - a fuming orange potion A goblin comes into view. It is wielding a +0 club. A goblin is nearby! Casting: Construct Spike Launcher (safe; 4% 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 goblin! The goblin dies! Unknown command. You start resting. Magic restored. An endoplasm comes into view. The endoplasm quivers. You barely miss the endoplasm. The endoplasm hits you. Casting: Construct Spike Launcher (safe; 4% 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. Magic restored. A hobgoblin comes into view. It is wielding a +0 mace. The hobgoblin shouts! Casting: Construct Spike Launcher (safe; 4% risk of failure) Press: ? - help, Q - select action, ( or ) - cycle Dir - look around, f - activate >>>>>>>>>>>>>>>>>>>>>> Version history: Game started: 0.33-a0-511-g5569844878 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: 24/24; mods: 0/0 MP: 4/6; mod: 0 Stats: 10 (10) 16 (16) 12 (12) Position: (68, 22), 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 | 247 | 69/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 | 673 | 173/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: 45 #49: 80 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 }}}}}}}}}}} Webtiles message buffer: Webtiles JSON stack: Screenshot: #.# #.# #.# #.# #######.# ........# ##########..## #............##### #.####......g@...# #.# #.###...###.# ####.####.# #...# #.# .......)..# #...# #.# ####.###### #...# #.# ###...#######...# #.# ................# #.# .##...#########.# #.# )###.##########.# #.# clua stack: dlua stack: Lua persistent data: <<<<<<<<<<<<<<<<<<<<<< >>>>>>>>>>>>>>>>>>>>>> Lua marker contents: <<<<<<<<<<<<<<<<<<<<<< >>>>>>>>>>>>>>>>>>>>>>