Crash caused by signal #6: Aborted Version: Dungeon Crawl Stone Soup 0.33-a0-554-g008097b4cb Platform: unix Bits: 64 Game mode: normal Tiles: online Seed: 3466044356038297940, deterministic pregen: 1 Command line: /usr/games/crawl-git-008097b4cb -name Coo1 -rc /dgldir/rcfiles/crawl-git/Coo1.rc -macro /dgldir/rcfiles/crawl-git/Coo1.macro -morgue /dgldir/morgue/Coo1/ -webtiles-socket /crawl-master/webserver/sockets/Coo1:2024-12-11.12:50:34.sock -await-connection RC options: restart_after_game = false Crash caused by signal #6: Aborted Obtained 24 stack frames. /usr/games/crawl-git-008097b4cb(_Z17write_stack_traceP8_IO_FILE+0x3e) [0x5882d70dadae]: write_stack_trace(_IO_FILE*) /usr/games/crawl-git-008097b4cb(_Z13do_crash_dumpv+0x43a) [0x5882d70e8e4a]: do_crash_dump() /usr/games/crawl-git-008097b4cb(_Z20crash_signal_handleri+0x1fa) [0x5882d70db28a]: crash_signal_handler(int) /lib/x86_64-linux-gnu/libc.so.6(+0x45320) [0x7984da96c320]: /lib/x86_64-linux-gnu/libc.so.6(pthread_kill+0x11c) [0x7984da9c5b1c]: /lib/x86_64-linux-gnu/libc.so.6(gsignal+0x1e) [0x7984da96c26e]: /lib/x86_64-linux-gnu/libc.so.6(abort+0xdf) [0x7984da94f8ff]: /lib/x86_64-linux-gnu/libc.so.6(+0x297b6) [0x7984da9507b6]: /lib/x86_64-linux-gnu/libc.so.6(+0xa8fe5) [0x7984da9cffe5]: /lib/x86_64-linux-gnu/libc.so.6(+0xab37c) [0x7984da9d237c]: /lib/x86_64-linux-gnu/libc.so.6(__libc_free+0x7e) [0x7984da9d4d9e]: /usr/games/crawl-git-008097b4cb(_ZN12monster_infoD1Ev+0x8f) [0x5882d709b47f]: monster_info::~monster_info() /usr/games/crawl-git-008097b4cb(_ZN14TilesFramework10_send_cellERK9coord_defRK13screen_cell_tS5_RK8map_cellS8_RSt3mapIjS0_St4lessIjESaISt4pairIKjS0_EEEb+0xf33) [0x5882d784ad23]: TilesFramework::_send_cell(coord_def const&, screen_cell_t const&, screen_cell_t const&, map_cell const&, map_cell const&, std::map<unsigned int, coord_def, std::less<unsigned int>, std::allocator<std::pair<unsigned int const, coord_def> > >&, bool) /usr/games/crawl-git-008097b4cb(_ZN14TilesFramework9_send_mapEb+0x486) [0x5882d784b4e6]: TilesFramework::_send_map(bool) /usr/games/crawl-git-008097b4cb(_ZN14TilesFramework6redrawEv+0xf3) [0x5882d784c603]: TilesFramework::redraw() /usr/games/crawl-git-008097b4cb(_Z8getch_ckv+0x111) [0x5882d78518c1]: getch_ck() /usr/games/crawl-git-008097b4cb(+0x789cb5) [0x5882d73b8cb5]: /usr/games/crawl-git-008097b4cb(_Z25getch_with_command_macrosv+0x210) [0x5882d73bca60]: getch_with_command_macros() /usr/games/crawl-git-008097b4cb(+0xc2fb24) [0x5882d785eb24]: /usr/games/crawl-git-008097b4cb(+0xc30505) [0x5882d785f505]: /usr/games/crawl-git-008097b4cb(main+0x1f7) [0x5882d70146f7]: /lib/x86_64-linux-gnu/libc.so.6(+0x2a1ca) [0x7984da9511ca]: /lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0x8b) [0x7984da95128b]: /usr/games/crawl-git-008097b4cb(_start+0x25) [0x5882d7015115]: Trying to run gdb. GNU gdb (Ubuntu 15.0.50.20240403-0ubuntu1) 15.0.50.20240403-git Copyright (C) 2024 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html> 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: <https://www.gnu.org/software/gdb/bugs/>. Find the GDB manual and other documentation resources online at: <http://www.gnu.org/software/gdb/documentation/>. 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". 0x00007984daa377a7 in __GI___wait4 (pid=1093698, stat_loc=0x0, options=0, usage=0x0) at ../sysdeps/unix/sysv/linux/wait4.c:30 #0 0x00007984daa377a7 in __GI___wait4 (pid=1093698, stat_loc=0x0, options=0, usage=0x0) at ../sysdeps/unix/sysv/linux/wait4.c:30 sc_ret = -512 sc_ret = <optimized out> #1 0x00005882d70db45c in call_gdb (file=0x7984dab2b4e0 <_IO_2_1_stderr_>) at crash.cc:438 gdb = <optimized out> attach_cmd = "attach 1090500\000\000\000\000\000" #2 0x00005882d70e8e68 in do_crash_dump () at dbg-asrt.cc:677 t = 1733921483 dir = "/dgldir/morgue/Coo1/" name = "/dgldir/morgue/Coo1/crash-Coo1-20241211-125123.txt", '\000' <repeats 129 times> signal_info = "Crash caused by signal #6: Aborted" cause_msg = "Crash caused by signal #6: Aborted" file = 0x7984dab2b4e0 <_IO_2_1_stderr_> #3 0x00005882d70db28a in crash_signal_handler (sig_num=6) at crash.cc:198 No locals. #4 <signal handler called> No locals. #5 __pthread_kill_implementation (no_tid=0, signo=6, threadid=<optimized out>) at ./nptl/pthread_kill.c:44 tid = <optimized out> ret = 0 pd = <optimized out> old_mask = {__val = {0}} ret = <optimized out> pd = <optimized out> old_mask = <optimized out> ret = <optimized out> tid = <optimized out> ret = <optimized out> resultvar = <optimized out> resultvar = <optimized out> __arg3 = <optimized out> __arg2 = <optimized out> __arg1 = <optimized out> _a3 = <optimized out> _a2 = <optimized out> _a1 = <optimized out> __futex = <optimized out> resultvar = <optimized out> __arg3 = <optimized out> __arg2 = <optimized out> __arg1 = <optimized out> _a3 = <optimized out> _a2 = <optimized out> _a1 = <optimized out> __futex = <optimized out> __private = <optimized out> __oldval = <optimized out> #6 __pthread_kill_internal (signo=6, threadid=<optimized out>) at ./nptl/pthread_kill.c:78 No locals. #7 __GI___pthread_kill (threadid=<optimized out>, signo=signo@entry=6) at ./nptl/pthread_kill.c:89 No locals. #8 0x00007984da96c26e in __GI_raise (sig=sig@entry=6) at ../sysdeps/posix/raise.c:26 ret = <optimized out> #9 0x00007984da94f8ff in __GI_abort () at ./stdlib/abort.c:79 save_stage = 1 act = {__sigaction_handler = {sa_handler = 0x20, sa_sigaction = 0x20}, sa_mask = {__val = {97319000880560, 97319000892680, 281479271677962, 140736498565631, 140736512009376, 140736512009248, 97318982753773, 140736512009296, 97318981622615, 206, 0, 140736512009168, 97318990476928, 140736512009280, 97318990476928, 140736512009440}}, sa_flags = 714259456, sa_restorer = 0x0} #10 0x00007984da9507b6 in __libc_message_impl (fmt=fmt@entry=0x7984daaf58d7 "%s\n") at ../sysdeps/posix/libc_fatal.c:132 ap = {{gp_offset = 16, fp_offset = 0, overflow_arg_area = 0x7fffc5ce2520, reg_save_area = 0x7fffc5ce24b0}} fd = 2 iov = {{iov_base = 0x7984daaf3672, iov_len = 23}, {iov_base = 0x7984daaf58d9, iov_len = 1}, {iov_base = 0x1d2c, iov_len = 4294967293}, {iov_base = 0x0, iov_len = 140736512007192}, {iov_base = 0x7fffc5ce2940, iov_len = 97318983472088}, {iov_base = 0x5882d7d6bb08 <tiles+72>, iov_len = 97318990482376}, {iov_base = 0x5882d8c5c200, iov_len = 8811472961506819072}} iovcnt = <optimized out> total = <optimized out> cp = <optimized out> #11 0x00007984da9cffe5 in malloc_printerr (str=str@entry=0x7984daaf3672 "free(): invalid pointer") at ./malloc/malloc.c:5772 No locals. #12 0x00007984da9d237c in _int_free (av=<optimized out>, p=<optimized out>, have_lock=0) at ./malloc/malloc.c:4507 size = <optimized out> fb = <optimized out> #13 0x00007984da9d4d9e in __GI___libc_free (mem=0x5882d7db8b70 <you+5360>) at ./malloc/malloc.c:3398 ar_ptr = <optimized out> p = 0x5882d7db8b60 <you+5344> err = 2 #14 0x00005882d709b47f in std::default_delete<item_def>::operator() (this=<optimized out>, __ptr=0x5882d7db8b70 <you+5360>) at /usr/include/c++/13/bits/allocator.h:184 No locals. #15 std::default_delete<item_def>::operator() (__ptr=0x5882d7db8b70 <you+5360>, this=<optimized out>) at /usr/include/c++/13/bits/unique_ptr.h:93 No locals. #16 std::unique_ptr<item_def, std::default_delete<item_def> >::~unique_ptr (this=0x7fffc5ce27f8, __in_chrg=<optimized out>) at /usr/include/c++/13/bits/unique_ptr.h:404 __ptr = @0x7fffc5ce27f8: 0x5882d7db8b70 <you+5360> #17 monster_info::~monster_info (this=0x7fffc5ce2650, __in_chrg=<optimized out>) at /home/crawl-dev/dgamelaunch-config/crawl-build/crawl-git-repository/crawl-ref/source/mon-info.h:309 No locals. #18 0x00005882d784ad23 in TilesFramework::_send_cell (this=this@entry=0x5882d7d6bac0 <tiles>, gc=..., current_sc=..., next_sc=..., current_mc=..., next_mc=..., new_monster_locs=std::map with 0 elements, force_full=false) at tileweb.cc:1710 minfo = {<monster_info_base> = {pos = {x = 0, y = 0}, mb = {_vptr.FixedBitVector = 0x5882d7b81b28 <vtable for FixedBitVector<189u>+16>, data = std::bitset = {[152] = 1}}, mname = "", type = MONS_PLAYER, base_type = MONS_PLAYER, {number = 0, num_heads = 0, slime_size = 0, is_active = 0}, _colour = -1, ghost_colour = -685750250, attitude = ATT_HOSTILE, threat = MTHRT_UNDEF, dam = MDAM_OKAY, fire_blocker = DNGN_UNSEEN, description = "", quote = "", holi = {<_enum_bitfield_exponent_base<5, true>> = {static last_exponent = 5}, flags = 16}, mintel = I_BRAINLESS, hd = 0, ac = 0, ev = 0, base_ev = 0, sh = 0, mr = 10, mresists = 4206616, can_see_invis = false, mitemuse = MONUSE_NOTHING, mbase_speed = 0, menergy = {move = 10 '\n', swim = 10 '\n', attack = 10 '\n', missile = 10 '\n', spell = 10 '\n'}, props = {<std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, CrawlStoreValue, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, CrawlStoreValue> > >> = std::map with 1 element = {["monster_tile"] = {type = SV_INT, flags = 0 '\000', val = {boolean = 52, byte = 52 '4', _short = 6452, _int = 6452, _float = 9.04117769e-42, _int64 = 6452, ptr = 0x1934}}}, <No data fields>}, constrictor_name = "", constricting_name = std::vector of length 0, capacity 0, spells = std::vector of length 0, capacity 0, attack = {{type = AT_NONE, flavour = AF_PLAIN, damage = 0}, {type = AT_NONE, flavour = AF_PLAIN, damage = 0}, {type = AT_NONE, flavour = AF_PLAIN, damage = 0}, {type = AT_NONE, flavour = AF_PLAIN, damage = 0}}, can_go_frenzy = false, can_feel_fear = 188, sleepwalking = 146, backlit = 42, umbraed = 249, client_id = 0, summoner_id = 0}, inv = {std::unique_ptr<item_def> = {get() = 0x5882d7db8b70 <you+5360>}, std::unique_ptr<item_def> = {get() = 0x0}, std::unique_ptr<item_def> = {get() = 0x0}, std::unique_ptr<item_def> = {get() = 0x0}, std::unique_ptr<item_def> = {get() = 0x0}, std::unique_ptr<item_def> = {get() = 0x0}, std::unique_ptr<item_def> = {get() = 0x0}, std::unique_ptr<item_def> = {get() = 0x0}, std::unique_ptr<item_def> = {get() = 0x0}}, i_ghost = {species = 3635977312, job = 22658, religion = 714259456, best_skill = 2051580921, best_skill_rank = 29, xl_rank = 0, damage = 0, ac = 0}} item = <optimized out> mcache_idx = <optimized out> entry = <optimized out> player_doll_changed = <optimized out> result = {parts = 0x5882d8c28610} next_pc = @0x7984da75eaa8: {num_dngn_overlay = 1, dngn_overlay = {mData = {2409, 0, 0, 0, 98239962, 0, 98502110, 0, 0, 0, 0, 7, 0, 0, 458752, 1001, 6553749, 0, 0, 0}}, fg = 531213, bg = 4, flv = {floor_idx = 0, wall_idx = 0, feat_idx = 0, floor = 4, wall = 1000, feat = 0, special = 20}, cloud = 0, icons = std::set with 0 elements, map_knowledge = {flags = 66, _feat = DNGN_FLOOR, _feat_colour = 0 '\000', _trap = TRAP_UNASSIGNED, _cloud = 0x0, _item = 0x5882d893e290, _mons = 0x0}, is_highlighted_summoner = false, is_bloody = false, is_silenced = false, halo = 0 '\000', is_sanctuary = false, is_blasphemy = false, is_liquefied = false, mangrove_water = false, awakened_forest = false, orb_glow = 0 '\000', blood_rotation = 0 '\000', old_blood = false, travel_trail = 0 '\000', quad_glow = false, disjunct = 0 '\000', has_bfb_corpse = false} fg_changed = false overlays_changed = <optimized out> current_pc = @0x5882d914ff08: {num_dngn_overlay = 1, dngn_overlay = {mData = {2409, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 32775, 0, 0, 0, 105842254, 0, 106366550, 0}}, fg = 531213, bg = 4, flv = {floor_idx = 0, wall_idx = 0, feat_idx = 0, floor = 4, wall = 1000, feat = 0, special = 20}, cloud = 0, icons = std::set with 0 elements, map_knowledge = {flags = 66, _feat = DNGN_FLOOR, _feat_colour = 0 '\000', _trap = TRAP_UNASSIGNED, _cloud = 0x0, _item = 0x5882d86be880, _mons = 0x0}, is_highlighted_summoner = false, is_bloody = false, is_silenced = false, halo = 0 '\000', is_sanctuary = false, is_blasphemy = false, is_liquefied = false, mangrove_water = false, awakened_forest = false, orb_glow = 0 '\000', blood_rotation = 0 '\000', old_blood = false, travel_trail = 0 '\000', quad_glow = false, disjunct = 0 '\000', has_bfb_corpse = false} fg_idx = <optimized out> in_water = false mf = <optimized out> glyph = <optimized out> #19 0x00005882d784b4e6 in TilesFramework::_send_map (this=this@entry=0x5882d7d6bac0 <tiles>, force_full=force_full@entry=false) at tileweb.cc:1889 gc = {x = 24, y = 44} sc = <optimized out> mc = <optimized out> x = 24 y = 44 no_rentry = {val = @0x5882d7d6bb32, oldval = false} new_monster_locs = std::map with 0 elements default_cell = {glyph = 32 U' ', colour = 7, flash_colour = 0, flash_alpha = 0, tile = {num_dngn_overlay = 0, dngn_overlay = {mData = {0, -683412033, 22658, -976344624, 32767, -674186368, 22658, -654357616, 22658, 40, 0, 40, 0, 714259456, 2051580921, -976344576, 32767, 7, 0, 1851877475}}, fg = 0, bg = 262144, flv = {floor_idx = 0, wall_idx = 0, feat_idx = 0, floor = 0, wall = 0, feat = 0, special = 0}, cloud = 0, icons = std::set with 0 elements, map_knowledge = {flags = 0, _feat = DNGN_UNSEEN, _feat_colour = 0 '\000', _trap = TRAP_UNASSIGNED, _cloud = 0x0, _item = 0x0, _mons = 0x0}, is_highlighted_summoner = false, is_bloody = false, is_silenced = false, halo = 0 '\000', is_sanctuary = false, is_blasphemy = false, is_liquefied = false, mangrove_water = false, awakened_forest = false, orb_glow = 0 '\000', blood_rotation = 0 '\000', old_blood = false, travel_trail = 0 '\000', quad_glow = false, disjunct = 0 '\000', has_bfb_corpse = false}} default_map_cell = {flags = 0, _feat = DNGN_UNSEEN, _feat_colour = 0 '\000', _trap = TRAP_UNASSIGNED, _cloud = 0x0, _item = 0x0, _mons = 0x0} last_gc = {x = 31, y = 42} send_gc = false flash_colour = 0 #20 0x00005882d784c603 in TilesFramework::redraw (this=this@entry=0x5882d7d6bac0 <tiles>) at tileweb.cc:2205 No locals. #21 0x00005882d78518c1 in _get_key_from_curses () at libunix.cc:527 c = 3636580792 c = <optimized out> c = <optimized out> #22 getch_ck () at libunix.cc:616 c = <optimized out> #23 0x00005882d73b8cb5 in _getch_mul () at macro.cc:841 keys = std::deque with 0 elements a = /build/gdb-1WjiBe/gdb-15.0.50.20240403/gdb/utils.c:704: internal-error: virtual memory exhausted: can't allocate 32768 bytes. A problem internal to GDB has been detected, further debugging may prove unreliable. Quit this debugging session? (y or n) [answered Y; input not from terminal] 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-008097b4cb/saves" -DSHARED_DIR_PATH="/crawl-master/crawl-git/saves" -DDATA_DIR_PATH="/crawl-master/crawl-git-008097b4cb/data/" -DWEB_DIR_PATH="/crawl-master/crawl-git-008097b4cb/data/web/" -D_DEFAULT_SOURCE -D_XOPEN_SOURCE=600 LDFLAGS: -rdynamic -fuse-ld=gold -O2 >>>>>>>>>>> Place info: branch = 0, depth = 1 Level id: D:1 Level build method = random_map_for_place, level layout type = corridors, absdepth0 = 0 Level vaults: nzn_arrival_crosshair layout_loops_cross serial_shops shop minmay_octomino_c4 Markers: <<<<<<<<<<<<<<<<<<<<<< Marker #0, type 0 at (32, 27): feature (stone_stairs_up_i) >>>>>>>>>>>>>>>>>>>>>> Messages: <<<<<<<<<<<<<<<<<<<<<< Welcome, Coo1 the Armataur Conjurer. The sublime 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. Saving game... please wait. Welcome back, Coo1 the Armataur Conjurer. Press ? for a list of commands and other information. Saving game... please wait. Welcome back, Coo1 the Armataur Conjurer. Welcome back, Coo1 the Armataur Conjurer. Press ? for a list of commands and other information. You open the door. There is an open door here. Found a plate armour. Found 9 gold pieces. A bat comes into view. Casting: Magic Dart (safe; 4% risk of failure) Confirm with . or Enter, or press ? or * to list all spells. Aiming: Magic Dart (safe; 4% risk of failure) Press: ? - help, Shift-Dir - straight line Aim: a bat (100% to hit) The magic dart hits the bat. The bat is severely wounded. The bat hits you but does no damage. Casting: Magic Dart (safe; 4% risk of failure) Confirm with . or Enter, or press ? or * to list all spells. Aiming: Magic Dart (safe; 4% risk of failure) Press: ? - help, Shift-Dir - straight line Aim: a bat (severely wounded, 100% to hit) The magic dart hits the bat. You kill the bat! You see here a +0 plate armour. Press: ? - help, v - describe, . - travel The floor. You now have 9 gold pieces. A kobold comes into view. It is wielding a +0 short sword. The kobold shouts! Casting: Magic Dart (safe; 4% risk of failure) Confirm with . or Enter, or press ? or * to list all spells. Aiming: Magic Dart (safe; 4% risk of failure) Press: ? - help, Shift-Dir - straight line Aim: a kobold, wielding a +0 short sword and quivering stones (100% to hit) The magic dart hits the kobold but does no damage. The kobold barely misses you. Casting: Magic Dart (safe; 4% risk of failure) Confirm with . or Enter, or press ? or * to list all spells. Aiming: Magic Dart (safe; 4% risk of failure) Press: ? - help, Shift-Dir - straight line Aim: a kobold, wielding a +0 short sword and quivering stones (100% to hit) The magic dart hits the kobold. You kill the kobold! Casting: Magic Dart (safe; 4% risk of failure) Confirm with . or Enter, or press ? or * to list all spells. Okay, then. Things that are here: a +0 short sword; 4 stones c - a +0 short sword c - a +0 short sword (weapon) >>>>>>>>>>>>>>>>>>>>>> Version history: Game started: 0.33-a0-554-g008097b4cb Game state: mouse_enabled: 0, waiting_for_command: 1, terminal_resized: 0 io_inited: 1, need_save: 1, saving_game: 0, updating_scores: 0: seen_hups: 0, map_stat_gen: 0, type: 1, arena_suspended: 0 prev_cmd = CMD_WIELD_WEAPON repeat_cmd = CMD_NO_CMD Player: {{{{{{{{{{{ Name: [Coo1] Species: Armataur Job: Conjurer HP: 14/14; mods: 0/0 MP: 1/3; mod: 0 Stats: 12 (12) 18 (18) 8 (8) Position: (24, 44), 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/59 Short Blades | X | 0 | 0 | 0 | 0 | 0/59 Long Blades | X | 0 | 0 | 0 | 0 | 0/59 Axes | X | 0 | 0 | 0 | 0 | 0/70 Maces & Flails | X | 0 | 0 | 0 | 0 | 0/59 Polearms | X | 0 | 0 | 0 | 0 | 0/70 Staves | X | 0 | 0 | 0 | 0 | 0/59 Ranged Weapons | X | 0 | 0 | 0 | 0 | 0/84 Throwing | X | 0 | 0 | 0 | 0 | 0/59 Armour | X | 0 | 0 | 0 | 0 | 0/35 Dodging | X | 1 | 25 | 1 | 158 | 74/168 Stealth | X | 1 | 25 | 2 | 134 | 28/106 Shields | X | 0 | 0 | 0 | 0 | 0/42 Unarmed Combat | X | 0 | 0 | 0 | 0 | 0/59 Spellcasting | X | 1 | 25 | 1 | 186 | 116/142 Conjurations | X | 1 | 25 | 3 | 510 | 154/238 Hexes | X | 0 | 0 | 0 | 0 | 0/59 Summonings | X | 0 | 0 | 0 | 0 | 0/70 Necromancy | X | 0 | 0 | 0 | 0 | 0/70 Translocations | X | 0 | 0 | 0 | 0 | 0/50 Forgecraft | X | 0 | 0 | 0 | 0 | 0/70 Fire Magic | X | 0 | 0 | 0 | 0 | 0/59 Ice Magic | X | 0 | 0 | 0 | 0 | 0/59 Air Magic | X | 0 | 0 | 0 | 0 | 0/59 Earth Magic | X | 0 | 0 | 0 | 0 | 0/59 Alchemy | X | 0 | 0 | 0 | 0 | 0/59 Invocations | X | 0 | 0 | 0 | 0 | 0/50 Evocations | X | 0 | 0 | 0 | 0 | 0/50 Shapeshifting | X | 0 | 0 | 0 | 0 | 0/70 Spell bugs: Durations: Attributes: #12: 9 #49: 67 Mutations: deformed body: 1 (innate) tough skin: 3 (innate) armoured tail: 1 (innate) rollpage: 1 (innate) Inventory bugs: Recursive crash.