polserver/docs/docs.polserver.com/pol100/objref.svg
turleypol 6d73472029
Testsuite reorganization, new feature to call exported functions (#237)
* restructured pol testscripts
pkg based (dedicated pkgroot)
runs per pkg:
setup.ecl if exists
all scripts starting with "test"
cleanup.ecl if exists

return 1 for success everything else is an error

* Scripts can now be loaded and exported functions called
adapted testscripts to use this feature
critical script handling missing

* added support for used in critical scripts

* use weakptr instead of pid
moved keep_alive flag to uoexecutor

* Function and nethod accept now a argument list

* added docs

* missing docs

* faster shutdown time

* fixed typo

* fixed weird cornercase

* shorter test functions names, the length is limited, renamed
loadexported test script to have a dedicated testscript

* generate tiledata/multi for small boat
added generate scripts for generation..
adapted testdata set

* boat tests

* extended scripttests
scheduler will now always know about the loaded script
secured scheduler api

* cleanuo scripts for boat and npc

* shorter function for error return
fixed cleanup: npcs have gravestones, chars was one off and scripted
create of a char made it permanent logged in (until next restart),
which also means that it cannot be deleted

* bypass windows specific ecompile.cfg logic

* fix for parallel execution

* on windows its called .exe ..

* use target binary directly, so cmake can replace it with the actual path
use absolute path to testsuite
disabled temporary the copy of ecompile

* configure ecompile.cfg to add absolute path

* early sleepms calls can lead to endless waiting

* Code coverage (#260)

* play with coverage reports

* fix yml

* use 0 as default for gcov cmake var

* fixed used cov version, hopefully fixed now cmake

* demangle function names

* removed debug msg

* added a few polcore tests (basically just for coverage)
first set executor to noncritical before blocking

* added https://coveralls.io/github/polserver/polserver

* added a stackable item
added a few backpack insert tests
do coverage build only on push events not also for PR merge builds

* added storage tests..
docs need fixes, the Imps are not working at all

* fixed storage test to really move items

* added a house
corrected static/dynamic flag
created a few house tests

* updated yml file to new github api

* corrected coverage discord job name

* always put to runlist even if not necessary

* extended aos prop tests

* equip/unequip aos mod

* extra ci step for shard test fixtures and activated verbose shard test

* use extra ci step for all build configs, sorted testscripts for
execution

* fixed sorting

* added param to syslog to not print the context (cleaner testscript
visualization)

* added build targets for tests

* sleep api cleanup

* more aos property tests

* build for coveralls also on pullrequest

* readded debug state reset on schedule

* updated checkout ci action

* updated checkout in all ci runs
2020-12-16 18:56:10 +01:00

532 lines
18 KiB
XML

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Generated by graphviz version 2.44.0 (0)
-->
<!-- Pages: 1 -->
<svg width="624pt" height="237pt"
viewBox="0.00 0.00 623.60 237.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 233)">
<!-- uobject -->
<g id="node1" class="node">
<title>uobject</title>
<g id="a_node1"><a xlink:href="#UObject" xlink:title="UObject" target="_top">
<text text-anchor="middle" x="145" y="-219.4" font-family="monospace" font-size="12.00" fill="blue">UObject</text>
</a>
</g>
</g>
<!-- 0 -->
<!-- uobject&#45;&#45;0 -->
<g id="edge1" class="edge">
<title>uobject:s&#45;&#45;0</title>
<path fill="none" stroke="black" d="M145,-215.5C145,-215.5 145,-202.67 145,-201.06"/>
</g>
<!-- char -->
<g id="node2" class="node">
<title>char</title>
<g id="a_node2"><a xlink:href="#Character" xlink:title="Character" target="_top">
<text text-anchor="middle" x="94.6" y="-176.2" font-family="monospace" font-size="12.00" fill="blue">Character</text>
</a>
</g>
</g>
<!-- npc -->
<g id="node4" class="node">
<title>npc</title>
<g id="a_node4"><a xlink:href="#NPC" xlink:title="NPC" target="_top">
<text text-anchor="middle" x="94.6" y="-133" font-family="monospace" font-size="12.00" fill="blue">NPC</text>
</a>
</g>
</g>
<!-- char&#45;&#45;npc -->
<g id="edge6" class="edge">
<title>char&#45;&#45;npc</title>
<path fill="none" stroke="black" d="M94.6,-172.55C94.6,-164.39 94.6,-150.74 94.6,-142.66"/>
</g>
<!-- item -->
<g id="node3" class="node">
<title>item</title>
<g id="a_node3"><a xlink:href="#Item" xlink:title="Item" target="_top">
<text text-anchor="middle" x="195.4" y="-176.2" font-family="monospace" font-size="12.00" fill="blue">Item</text>
</a>
</g>
</g>
<!-- 3 -->
<!-- item&#45;&#45;3 -->
<g id="edge7" class="edge">
<title>item&#45;&#45;3</title>
<path fill="none" stroke="black" d="M195.4,-172.37C195.4,-156.17 195.4,-117.05 195.4,-114.62"/>
</g>
<!-- equipment -->
<g id="node5" class="node">
<title>equipment</title>
<g id="a_node5"><a xlink:href="#Equipment" xlink:title="Equipment" target="_top">
<text text-anchor="middle" x="44.2" y="-89.8" font-family="monospace" font-size="12.00" fill="blue">Equipment</text>
</a>
</g>
</g>
<!-- 8 -->
<!-- equipment&#45;&#45;8 -->
<g id="edge16" class="edge">
<title>equipment&#45;&#45;8</title>
<path fill="none" stroke="black" d="M44.2,-86.07C44.2,-80.13 44.2,-72.35 44.2,-71.4"/>
</g>
<!-- lockable -->
<g id="node6" class="node">
<title>lockable</title>
<g id="a_node6"><a xlink:href="#Lockable" xlink:title="Lockable" target="_top">
<text text-anchor="middle" x="145" y="-89.8" font-family="monospace" font-size="12.00" fill="blue">Lockable</text>
</a>
</g>
</g>
<!-- 11 -->
<!-- lockable&#45;&#45;11 -->
<g id="edge21" class="edge">
<title>lockable&#45;&#45;11</title>
<path fill="none" stroke="black" d="M145,-86.07C145,-80.13 145,-72.35 145,-71.4"/>
</g>
<!-- map -->
<g id="node7" class="node">
<title>map</title>
<g id="a_node7"><a xlink:href="#Map" xlink:title="Map" target="_top">
<text text-anchor="middle" x="245.8" y="-89.8" font-family="monospace" font-size="12.00" fill="blue">Map</text>
</a>
</g>
</g>
<!-- multi -->
<g id="node8" class="node">
<title>multi</title>
<g id="a_node8"><a xlink:href="#Multi" xlink:title="Multi" target="_top">
<text text-anchor="middle" x="346.6" y="-89.8" font-family="monospace" font-size="12.00" fill="blue">Multi</text>
</a>
</g>
</g>
<!-- 14 -->
<!-- multi&#45;&#45;14 -->
<g id="edge26" class="edge">
<title>multi&#45;&#45;14</title>
<path fill="none" stroke="black" d="M346.6,-86.07C346.6,-80.13 346.6,-72.35 346.6,-71.4"/>
</g>
<!-- armor -->
<g id="node9" class="node">
<title>armor</title>
<g id="a_node9"><a xlink:href="#Armor" xlink:title="Armor" target="_top">
<text text-anchor="middle" x="19" y="-46.6" font-family="monospace" font-size="12.00" fill="blue">Armor</text>
</a>
</g>
</g>
<!-- weapon -->
<g id="node10" class="node">
<title>weapon</title>
<g id="a_node10"><a xlink:href="#Weapon" xlink:title="Weapon" target="_top">
<text text-anchor="middle" x="69.4" y="-46.6" font-family="monospace" font-size="12.00" fill="blue">Weapon</text>
</a>
</g>
</g>
<!-- door -->
<g id="node11" class="node">
<title>door</title>
<g id="a_node11"><a xlink:href="#Door" xlink:title="Door" target="_top">
<text text-anchor="middle" x="119.8" y="-46.6" font-family="monospace" font-size="12.00" fill="blue">Door</text>
</a>
</g>
</g>
<!-- container -->
<g id="node12" class="node">
<title>container</title>
<g id="a_node12"><a xlink:href="#Container" xlink:title="Container" target="_top">
<text text-anchor="middle" x="170.2" y="-46.6" font-family="monospace" font-size="12.00" fill="blue">Container</text>
</a>
</g>
</g>
<!-- 17 -->
<!-- container&#45;&#45;17 -->
<g id="edge31" class="edge">
<title>container&#45;&#45;17</title>
<path fill="none" stroke="black" d="M170.2,-42.87C170.2,-36.93 170.2,-29.15 170.2,-28.2"/>
</g>
<!-- boat -->
<g id="node13" class="node">
<title>boat</title>
<g id="a_node13"><a xlink:href="#Boat" xlink:title="Boat" target="_top">
<text text-anchor="middle" x="321.4" y="-46.6" font-family="monospace" font-size="12.00" fill="blue">Boat</text>
</a>
</g>
</g>
<!-- house -->
<g id="node14" class="node">
<title>house</title>
<g id="a_node14"><a xlink:href="#House" xlink:title="House" target="_top">
<text text-anchor="middle" x="371.8" y="-46.6" font-family="monospace" font-size="12.00" fill="blue">House</text>
</a>
</g>
</g>
<!-- spellbook -->
<g id="node15" class="node">
<title>spellbook</title>
<g id="a_node15"><a xlink:href="#Spellbook" xlink:title="Spellbook" target="_top">
<text text-anchor="middle" x="141.4" y="-3.4" font-family="monospace" font-size="12.00" fill="blue">Spellbook</text>
</a>
</g>
</g>
<!-- corpse -->
<g id="node16" class="node">
<title>corpse</title>
<g id="a_node16"><a xlink:href="#Corpse" xlink:title="Corpse" target="_top">
<text text-anchor="middle" x="199" y="-3.4" font-family="monospace" font-size="12.00" fill="blue">Corpse</text>
</a>
</g>
</g>
<!-- account -->
<g id="node17" class="node">
<title>account</title>
<g id="a_node17"><a xlink:href="#Account" xlink:title="Account" target="_top">
<text text-anchor="middle" x="346.6" y="-219.4" font-family="monospace" font-size="12.00" fill="blue">Account</text>
</a>
</g>
</g>
<!-- array -->
<g id="node18" class="node">
<title>array</title>
<g id="a_node18"><a xlink:href="#Array" xlink:title="Array" target="_top">
<text text-anchor="middle" x="346.6" y="-197.8" font-family="monospace" font-size="12.00" fill="blue">Array</text>
</a>
</g>
</g>
<!-- auxconnection -->
<g id="node19" class="node">
<title>auxconnection</title>
<g id="a_node19"><a xlink:href="#AuxConnection" xlink:title="AuxConnection" target="_top">
<text text-anchor="middle" x="346.6" y="-176.2" font-family="monospace" font-size="12.00" fill="blue">AuxConnection</text>
</a>
</g>
</g>
<!-- binaryfile -->
<g id="node20" class="node">
<title>binaryfile</title>
<g id="a_node20"><a xlink:href="#BinaryFile" xlink:title="BinaryFile" target="_top">
<text text-anchor="middle" x="346.6" y="-154.6" font-family="monospace" font-size="12.00" fill="blue">BinaryFile</text>
</a>
</g>
</g>
<!-- boolean -->
<g id="node21" class="node">
<title>boolean</title>
<g id="a_node21"><a xlink:href="#Boolean" xlink:title="Boolean" target="_top">
<text text-anchor="middle" x="346.6" y="-133" font-family="monospace" font-size="12.00" fill="blue">Boolean</text>
</a>
</g>
</g>
<!-- client -->
<g id="node22" class="node">
<title>client</title>
<g id="a_node22"><a xlink:href="#Client" xlink:title="Client" target="_top">
<text text-anchor="middle" x="454.6" y="-219.4" font-family="monospace" font-size="12.00" fill="blue">Client</text>
</a>
</g>
</g>
<!-- datafile -->
<g id="node23" class="node">
<title>datafile</title>
<g id="a_node23"><a xlink:href="#Datafile" xlink:title="Datafile" target="_top">
<text text-anchor="middle" x="454.6" y="-197.8" font-family="monospace" font-size="12.00" fill="blue">Datafile</text>
</a>
</g>
</g>
<!-- datafileelement -->
<g id="node24" class="node">
<title>datafileelement</title>
<g id="a_node24"><a xlink:href="#DataFileElement" xlink:title="DataFileElement" target="_top">
<text text-anchor="middle" x="454.6" y="-176.2" font-family="monospace" font-size="12.00" fill="blue">DataFileElement</text>
</a>
</g>
</g>
<!-- dictionary -->
<g id="node25" class="node">
<title>dictionary</title>
<g id="a_node25"><a xlink:href="#Dictionary" xlink:title="Dictionary" target="_top">
<text text-anchor="middle" x="454.6" y="-154.6" font-family="monospace" font-size="12.00" fill="blue">Dictionary</text>
</a>
</g>
</g>
<!-- error -->
<g id="node26" class="node">
<title>error</title>
<g id="a_node26"><a xlink:href="#Error" xlink:title="Error" target="_top">
<text text-anchor="middle" x="454.6" y="-133" font-family="monospace" font-size="12.00" fill="blue">Error</text>
</a>
</g>
</g>
<!-- functionobject -->
<g id="node27" class="node">
<title>functionobject</title>
<g id="a_node27"><a xlink:href="#FunctionObject" xlink:title="FunctionObject" target="_top">
<text text-anchor="middle" x="454.6" y="-111.4" font-family="monospace" font-size="12.00" fill="blue">FunctionObject</text>
</a>
</g>
</g>
<!-- guild -->
<g id="node28" class="node">
<title>guild</title>
<g id="a_node28"><a xlink:href="#Guild" xlink:title="Guild" target="_top">
<text text-anchor="middle" x="454.6" y="-89.8" font-family="monospace" font-size="12.00" fill="blue">Guild</text>
</a>
</g>
</g>
<!-- package -->
<g id="node29" class="node">
<title>package</title>
<g id="a_node29"><a xlink:href="#Package" xlink:title="Package" target="_top">
<text text-anchor="middle" x="454.6" y="-68.2" font-family="monospace" font-size="12.00" fill="blue">Package</text>
</a>
</g>
</g>
<!-- packet -->
<g id="node30" class="node">
<title>packet</title>
<g id="a_node30"><a xlink:href="#Packet" xlink:title="Packet" target="_top">
<text text-anchor="middle" x="454.6" y="-46.6" font-family="monospace" font-size="12.00" fill="blue">Packet</text>
</a>
</g>
</g>
<!-- party -->
<g id="node31" class="node">
<title>party</title>
<g id="a_node31"><a xlink:href="#Party" xlink:title="Party" target="_top">
<text text-anchor="middle" x="454.6" y="-25" font-family="monospace" font-size="12.00" fill="blue">Party</text>
</a>
</g>
</g>
<!-- polcore -->
<g id="node32" class="node">
<title>polcore</title>
<g id="a_node32"><a xlink:href="#Polcore" xlink:title="PolCore" target="_top">
<text text-anchor="middle" x="454.6" y="-3.4" font-family="monospace" font-size="12.00" fill="blue">PolCore</text>
</a>
</g>
</g>
<!-- script -->
<g id="node33" class="node">
<title>script</title>
<g id="a_node33"><a xlink:href="#Script" xlink:title="Script" target="_top">
<text text-anchor="middle" x="562.6" y="-219.4" font-family="monospace" font-size="12.00" fill="blue">Script</text>
</a>
</g>
</g>
<!-- struct -->
<g id="node34" class="node">
<title>struct</title>
<g id="a_node34"><a xlink:href="#Struct" xlink:title="Struct" target="_top">
<text text-anchor="middle" x="562.6" y="-197.8" font-family="monospace" font-size="12.00" fill="blue">Struct</text>
</a>
</g>
</g>
<!-- string -->
<g id="node35" class="node">
<title>string</title>
<g id="a_node35"><a xlink:href="#String" xlink:title="String" target="_top">
<text text-anchor="middle" x="562.6" y="-176.2" font-family="monospace" font-size="12.00" fill="blue">String</text>
</a>
</g>
</g>
<!-- storageareas -->
<g id="node36" class="node">
<title>storageareas</title>
<g id="a_node36"><a xlink:href="#StorageAreas" xlink:title="StorageAreas" target="_top">
<text text-anchor="middle" x="562.6" y="-154.6" font-family="monospace" font-size="12.00" fill="blue">StorageAreas</text>
</a>
</g>
</g>
<!-- storagearea -->
<g id="node37" class="node">
<title>storagearea</title>
<g id="a_node37"><a xlink:href="#StorageArea" xlink:title="StorageArea" target="_top">
<text text-anchor="middle" x="562.6" y="-133" font-family="monospace" font-size="12.00" fill="blue">StorageArea</text>
</a>
</g>
</g>
<!-- xmlfile -->
<g id="node38" class="node">
<title>xmlfile</title>
<g id="a_node38"><a xlink:href="#XMLFile" xlink:title="XMLFile" target="_top">
<text text-anchor="middle" x="562.6" y="-111.4" font-family="monospace" font-size="12.00" fill="blue">XMLFile</text>
</a>
</g>
</g>
<!-- xmlnode -->
<g id="node39" class="node">
<title>xmlnode</title>
<g id="a_node39"><a xlink:href="#XMLNode" xlink:title="XMLNode" target="_top">
<text text-anchor="middle" x="562.6" y="-89.8" font-family="monospace" font-size="12.00" fill="blue">XMLNode</text>
</a>
</g>
</g>
<!-- xmlattributes -->
<g id="node40" class="node">
<title>xmlattributes</title>
<g id="a_node40"><a xlink:href="#XMLAttributes" xlink:title="XMLAttributes" target="_top">
<text text-anchor="middle" x="562.6" y="-68.2" font-family="monospace" font-size="12.00" fill="blue">XMLAttributes</text>
</a>
</g>
</g>
<!-- exportedscript -->
<g id="node41" class="node">
<title>exportedscript</title>
<g id="a_node41"><a xlink:href="#ExportedScript" xlink:title="ExportedScript" target="_top">
<text text-anchor="middle" x="562.6" y="-46.6" font-family="monospace" font-size="12.00" fill="blue">ExportedScript</text>
</a>
</g>
</g>
<!-- 1 -->
<!-- 0&#45;&#45;1 -->
<g id="edge2" class="edge">
<title>0&#45;&#45;1</title>
<path fill="none" stroke="black" d="M144.86,-200.9C141.99,-200.9 97.51,-200.9 94.74,-200.9"/>
</g>
<!-- 2 -->
<!-- 0&#45;&#45;2 -->
<g id="edge3" class="edge">
<title>0&#45;&#45;2</title>
<path fill="none" stroke="black" d="M145.14,-200.9C148.01,-200.9 192.49,-200.9 195.26,-200.9"/>
</g>
<!-- 1&#45;&#45;char -->
<g id="edge4" class="edge">
<title>1&#45;&#45;char:n</title>
<path fill="none" stroke="black" d="M94.6,-200.74C94.6,-199.13 94.6,-186.3 94.6,-186.3"/>
</g>
<!-- 2&#45;&#45;item -->
<g id="edge5" class="edge">
<title>2&#45;&#45;item:n</title>
<path fill="none" stroke="black" d="M195.4,-200.74C195.4,-199.13 195.4,-186.3 195.4,-186.3"/>
</g>
<!-- 5 -->
<!-- 3&#45;&#45;5 -->
<g id="edge8" class="edge">
<title>3&#45;&#45;5</title>
<path fill="none" stroke="black" d="M195.26,-114.5C192.39,-114.5 147.91,-114.5 145.14,-114.5"/>
</g>
<!-- 6 -->
<!-- 3&#45;&#45;6 -->
<g id="edge9" class="edge">
<title>3&#45;&#45;6</title>
<path fill="none" stroke="black" d="M195.54,-114.5C198.41,-114.5 242.89,-114.5 245.66,-114.5"/>
</g>
<!-- 4 -->
<!-- 4&#45;&#45;equipment -->
<g id="edge12" class="edge">
<title>4&#45;&#45;equipment</title>
<path fill="none" stroke="black" d="M44.2,-114.44C44.2,-113.67 44.2,-105.84 44.2,-99.84"/>
</g>
<!-- 5&#45;&#45;lockable -->
<g id="edge13" class="edge">
<title>5&#45;&#45;lockable</title>
<path fill="none" stroke="black" d="M145,-114.44C145,-113.67 145,-105.84 145,-99.84"/>
</g>
<!-- 5&#45;&#45;4 -->
<g id="edge10" class="edge">
<title>5&#45;&#45;4</title>
<path fill="none" stroke="black" d="M144.93,-114.5C141.92,-114.5 47.23,-114.5 44.27,-114.5"/>
</g>
<!-- 6&#45;&#45;map -->
<g id="edge14" class="edge">
<title>6&#45;&#45;map</title>
<path fill="none" stroke="black" d="M245.8,-114.44C245.8,-113.67 245.8,-105.84 245.8,-99.84"/>
</g>
<!-- 7 -->
<!-- 6&#45;&#45;7 -->
<g id="edge11" class="edge">
<title>6&#45;&#45;7</title>
<path fill="none" stroke="black" d="M245.87,-114.5C248.88,-114.5 343.57,-114.5 346.53,-114.5"/>
</g>
<!-- 7&#45;&#45;multi -->
<g id="edge15" class="edge">
<title>7&#45;&#45;multi</title>
<path fill="none" stroke="black" d="M346.6,-114.44C346.6,-113.67 346.6,-105.84 346.6,-99.84"/>
</g>
<!-- 9 -->
<!-- 8&#45;&#45;9 -->
<g id="edge17" class="edge">
<title>8&#45;&#45;9</title>
<path fill="none" stroke="black" d="M44.13,-71.3C42.7,-71.3 20.46,-71.3 19.07,-71.3"/>
</g>
<!-- 10 -->
<!-- 8&#45;&#45;10 -->
<g id="edge18" class="edge">
<title>8&#45;&#45;10</title>
<path fill="none" stroke="black" d="M44.27,-71.3C45.7,-71.3 67.94,-71.3 69.33,-71.3"/>
</g>
<!-- 9&#45;&#45;armor -->
<g id="edge19" class="edge">
<title>9&#45;&#45;armor</title>
<path fill="none" stroke="black" d="M19,-71.24C19,-70.47 19,-62.64 19,-56.64"/>
</g>
<!-- 10&#45;&#45;weapon -->
<g id="edge20" class="edge">
<title>10&#45;&#45;weapon</title>
<path fill="none" stroke="black" d="M69.4,-71.24C69.4,-70.47 69.4,-62.64 69.4,-56.64"/>
</g>
<!-- 12 -->
<!-- 11&#45;&#45;12 -->
<g id="edge22" class="edge">
<title>11&#45;&#45;12</title>
<path fill="none" stroke="black" d="M144.93,-71.3C143.5,-71.3 121.26,-71.3 119.87,-71.3"/>
</g>
<!-- 13 -->
<!-- 11&#45;&#45;13 -->
<g id="edge23" class="edge">
<title>11&#45;&#45;13</title>
<path fill="none" stroke="black" d="M145.07,-71.3C146.5,-71.3 168.74,-71.3 170.13,-71.3"/>
</g>
<!-- 12&#45;&#45;door -->
<g id="edge24" class="edge">
<title>12&#45;&#45;door</title>
<path fill="none" stroke="black" d="M119.8,-71.24C119.8,-70.47 119.8,-62.64 119.8,-56.64"/>
</g>
<!-- 13&#45;&#45;container -->
<g id="edge25" class="edge">
<title>13&#45;&#45;container</title>
<path fill="none" stroke="black" d="M170.2,-71.24C170.2,-70.47 170.2,-62.64 170.2,-56.64"/>
</g>
<!-- 15 -->
<!-- 14&#45;&#45;15 -->
<g id="edge27" class="edge">
<title>14&#45;&#45;15</title>
<path fill="none" stroke="black" d="M346.53,-71.3C345.1,-71.3 322.86,-71.3 321.47,-71.3"/>
</g>
<!-- 16 -->
<!-- 14&#45;&#45;16 -->
<g id="edge28" class="edge">
<title>14&#45;&#45;16</title>
<path fill="none" stroke="black" d="M346.67,-71.3C348.1,-71.3 370.34,-71.3 371.73,-71.3"/>
</g>
<!-- 15&#45;&#45;boat -->
<g id="edge29" class="edge">
<title>15&#45;&#45;boat</title>
<path fill="none" stroke="black" d="M321.4,-71.24C321.4,-70.47 321.4,-62.64 321.4,-56.64"/>
</g>
<!-- 16&#45;&#45;house -->
<g id="edge30" class="edge">
<title>16&#45;&#45;house</title>
<path fill="none" stroke="black" d="M371.8,-71.24C371.8,-70.47 371.8,-62.64 371.8,-56.64"/>
</g>
<!-- 18 -->
<!-- 17&#45;&#45;18 -->
<g id="edge32" class="edge">
<title>17&#45;&#45;18</title>
<path fill="none" stroke="black" d="M170.12,-28.1C168.48,-28.1 143.06,-28.1 141.48,-28.1"/>
</g>
<!-- 19 -->
<!-- 17&#45;&#45;19 -->
<g id="edge33" class="edge">
<title>17&#45;&#45;19</title>
<path fill="none" stroke="black" d="M170.28,-28.1C171.92,-28.1 197.34,-28.1 198.92,-28.1"/>
</g>
<!-- 18&#45;&#45;spellbook -->
<g id="edge34" class="edge">
<title>18&#45;&#45;spellbook</title>
<path fill="none" stroke="black" d="M141.4,-28.04C141.4,-27.27 141.4,-19.44 141.4,-13.44"/>
</g>
<!-- 19&#45;&#45;corpse -->
<g id="edge35" class="edge">
<title>19&#45;&#45;corpse</title>
<path fill="none" stroke="black" d="M199,-28.04C199,-27.27 199,-19.44 199,-13.44"/>
</g>
</g>
</svg>