3once_per_request(G):- must_run_html(G),!.
    4
    5ensure_readable_html:-
    6  once_per_request(format('~s',['
    7<style>
    8body {
    9  //background: #000; 
   10  //mix-blend-mode: difference;
   11}
   12
   13p {
   14	background: #ffffff;
   15	background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMgAAADICAMAAACahl6sAAAAA1BMVEVilQmZw+RvAAAAAXRSTlOF3TSvyQAAAD1JREFUeNrtwQENAAAAwqD3T20PBxQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPBmnQgAAd4aVNwAAAAASUVORK5CYII=");
   16	background-repeat: repeat-y;
   17    background-size: 0% auto;
   18	color: #ffffff;
   19	padding: 5px;
   20	text-align: center;
   21	border: 1px solid #3E8096;
   22	display: block; 
   23}
   24</style>'])).
   25
   26ensure_swish_app_html:- in_pp(http),!.
   27ensure_swish_app_html:- in_pp(swish),!.
   28ensure_swish_app_html:- !.
   29ensure_swish_app_html:-
   30  once_per_request(format('\n<div id="hidden_swish_app" style="display:none; visibility:hidden">
   31		<header class="navbar navbar-default">
   32			<div class="container pull-left">
   33				<div class="navbar-header">
   34					<a href="/" class="pengine-logo">&nbsp;</a>
   35					<a href="/" class="swish-logo">&nbsp;</a>
   36				</div>
   37				<nav id="navbar"></nav>
   38			</div>
   39		</header>
   40		<div id="content" class="container">
   41		  <div class="tile horizontal" data-split="60%">
   42			<div class="prolog-editor"></div>
   43			<div class="tile vertical" data-split="70%">
   44			  <div class="prolog-runners"></div>
   45			  <div class="prolog-query"></div>
   46			</div>
   47		  </div>
   48		</div>
   49   </div>')).
   50
   51
   52add_context_menu:-
   53once_per_request((
   54write('
   55<div>
   56<cssmenu class="cssmenu">
   57  <li class="cssmenu-item">
   58    <button type="button" class="cssmenu-btn"> <i class="fa fa-folder-open"></i> <span class="cssmenu-text">Open</span> </button>
   59  </li>
   60  <li class="cssmenu-item disabled">
   61    <button type="button" class="cssmenu-btn"> <span class="cssmenu-text">Open in New Window</span> </button>
   62  </li>
   63  <li class="cssmenu-separator"></li>
   64  <li class="cssmenu-item">
   65    <button type="button" class="cssmenu-btn"> <i class="fa fa-reply"></i> <span class="cssmenu-text">Reply</span> </button>
   66  </li>
   67  <li class="cssmenu-item">
   68    <button type="button" class="cssmenu-btn"> <i class="fa fa-star"></i> <span class="cssmenu-text">Favorite</span> </button>
   69  </li>
   70  <li class="cssmenu-item subcssmenu">
   71    <button type="button" class="cssmenu-btn"> <i class="fa fa-users"></i> <span class="cssmenu-text">Social</span> </button>
   72    <cssmenu class="cssmenu">
   73      <li class="cssmenu-item">
   74        <button type="button" class="cssmenu-btn"> <i class="fa fa-comment"></i> <span class="cssmenu-text">Comment</span> </button>
   75      </li>
   76      <li class="cssmenu-item subcssmenu">
   77        <button type="button" class="cssmenu-btn"> <i class="fa fa-share"></i> <span class="cssmenu-text">Share</span> </button>
   78        <cssmenu class="cssmenu">
   79          <li class="cssmenu-item">
   80            <button type="button" class="cssmenu-btn"> <i class="fa fa-twitter"></i> <span class="cssmenu-text">Twitter</span> </button>
   81          </li>
   82          <li class="cssmenu-item">
   83            <button type="button" class="cssmenu-btn"> <i class="fa fa-facebook-official"></i> <span class="cssmenu-text">Facebook</span> </button>
   84          </li>
   85          <li class="cssmenu-item">
   86            <button type="button" class="cssmenu-btn"> <i class="fa fa-google-plus"></i> <span class="cssmenu-text">Google Plus</span> </button>
   87          </li>
   88          <li class="cssmenu-item">
   89            <button type="button" class="cssmenu-btn"> <i class="fa fa-envelope"></i> <span class="cssmenu-text">Email</span> </button>
   90          </li>
   91        </cssmenu>
   92      </li>
   93    </cssmenu>
   94  </li>
   95  <li class="cssmenu-separator"></li>
   96  <li class="cssmenu-item">
   97    <button type="button" class="cssmenu-btn"> <i class="fa fa-download"></i> <span class="cssmenu-text">Save</span> </button>
   98  </li>
   99  <li class="cssmenu-item">
  100    <button type="button" class="cssmenu-btn"> <i class="fa fa-edit"></i> <span class="cssmenu-text">Rename</span> </button>
  101  </li>
  102  <li class="cssmenu-item">
  103    <button type="button" class="cssmenu-btn"> <i class="fa fa-trash"></i> <span class="cssmenu-text">Delete</span> </button>
  104  </li>
  105</cssmenu>
  106<div class="container">
  107  <h1>JS & CSS Context Cssmenu</h1>
  108</div>
  109<script>
  110var cssmenu = document.querySelector(".cssmenu");
  111
  112function showCssmenu(x, y){
  113    cssmenu.style.left = x + "px";
  114    cssmenu.style.top = y + "px";
  115    cssmenu.classList.add("show-cssmenu");
  116}
  117
  118function hideCssmenu(){
  119    cssmenu.classList.remove("show-cssmenu");
  120}
  121
  122function onContextCssmenu(e){
  123    e.preventDefault();
  124    showCssmenu(e.pageX, e.pageY);
  125    document.addEventListener("click", onClick, false);
  126}
  127
  128function onClick(e){
  129    hideCssmenu();
  130    document.removeEventListener("click", onClick);
  131}
  132
  133document.addEventListener("contextmenu", onContextCssmenu, false);
  134</script>
  135<style type="text/css">
  136html {
  137 // width: 100%;
  138 // height: 100%;
  139 // background: radial-gradient(circle, #fff 0%, #a6b9c1 100%) no-repeat;
  140}
  141
  142//.container {
  143//  left: 0;
  144//  margin: auto;
  145//  position: absolute;
  146//  top: 20%;
  147//  width: 100%;
  148//  text-align: center;
  149//}
  150
  151//h1, h2 { color: #555; }
  152
  153/* Cssmenu */
  154
  155
  156.cssmenu {
  157  position: absolute;
  158  width: 200px;
  159  padding: 2px;
  160  margin: 0;
  161  border: 1px solid #bbb;
  162  background: #eee;
  163  background: -webkit-linear-gradient(to bottom, #fff 0%, #e5e5e5 100px, #e5e5e5 100%);
  164  background: linear-gradient(to bottom, #fff 0%, #e5e5e5 100px, #e5e5e5 100%);
  165  z-index: 100;
  166  border-radius: 3px;
  167  box-shadow: 1px 1px 4px rgba(0,0,0,.2);
  168  opacity: 0;
  169  -webkit-transform: translate(0, 15px) scale(.95);
  170  transform: translate(0, 15px) scale(.95);
  171  transition: transform 0.1s ease-out, opacity 0.1s ease-out;
  172  pointer-events: none;
  173}
  174
  175.cssmenu-item {
  176  display: block;
  177  position: relative;
  178  margin: 0;
  179  padding: 0;
  180  white-space: nowrap;
  181}
  182
  183.cssmenu-btn {
  184  background: none;
  185  line-height: normal;
  186  overflow: visible;
  187  -webkit-user-select: none;
  188  -moz-user-select: none;
  189  -ms-user-select: none;
  190  display: block;
  191  width: 100%;
  192  color: #444;
  193  font-family: "Roboto", sans-serif;
  194  font-size: 13px;
  195  text-align: left;
  196  cursor: pointer;
  197  border: 1px solid transparent;
  198  white-space: nowrap;
  199  padding: 6px 8px;
  200  border-radius: 3px;
  201}
  202 .cssmenu-btn::-moz-focus-inner, .cssmenu-btn::-moz-focus-inner {
  203 border: 0;
  204 padding: 0;
  205}
  206
  207.cssmenu-text { margin-left: 25px; }
  208
  209.cssmenu-btn .fa {
  210  position: absolute;
  211  left: 8px;
  212  top: 50%;
  213  -webkit-transform: translateY(-50%);
  214  transform: translateY(-50%);
  215}
  216
  217.cssmenu-item:hover > .cssmenu-btn {
  218  color: #fff;
  219  outline: none;
  220  background-color: #2E3940;
  221  background: -webkit-linear-gradient(to bottom, #5D6D79, #2E3940);
  222  background: linear-gradient(to bottom, #5D6D79, #2E3940);
  223  border: 1px solid #2E3940;
  224}
  225
  226.cssmenu-item.disabled {
  227  opacity: .5;
  228  pointer-events: none;
  229}
  230
  231.cssmenu-item.disabled .cssmenu-btn { cursor: default; }
  232
  233.cssmenu-separator {
  234  display: block;
  235  margin: 7px 5px;
  236  height: 1px;
  237  border-bottom: 1px solid #fff;
  238  background-color: #aaa;
  239}
  240
  241.cssmenu-item.subcssmenu::after {
  242  content: "";
  243  position: absolute;
  244  right: 6px;
  245  top: 50%;
  246  -webkit-transform: translateY(-50%);
  247  transform: translateY(-50%);
  248  border: 5px solid transparent;
  249  border-left-color: #808080;
  250}
  251
  252.cssmenu-item.subcssmenu:hover::after { border-left-color: #fff; }
  253
  254.cssmenu .cssmenu {
  255  top: 4px;
  256  left: 99%;
  257}
  258
  259.show-cssmenu, .cssmenu-item:hover > .cssmenu {
  260  opacity: 1;
  261  -webkit-transform: translate(0, 0) scale(1);
  262  transform: translate(0, 0) scale(1);
  263  pointer-events: auto;
  264}
  265
  266.cssmenu-item:hover > .cssmenu {
  267  -webkit-transition-delay: 100ms;
  268  transition-delay: 300ms;
  269}
  270</style>
  271</div>
  272
  273'))).
  274
  275
  276
  277add_blur_menu:-
  278once_per_request((
  279write('
  280    <div id="content">
  281        <h1>jQuery Social Selection Examples</h1><div id="carbon-block"></div>
  282        <div id="search" class="demo">
  283            <h3>Search Engines</h3>
  284            <p>Lorem ipsum dolor sit amet </p>
  285        </div>
  286        <div id="share" class="demo">
  287            <h3>Social Share</h3>
  288            <p>Lorem ipsum dolor sit amet </p>
  289        </div>
  290        <div id="visit" class="demo">
  291            <h3>Quick links</h3>
  292            <p>Lorem ipsum dolor sit amet </p>
  293        </div>
  294        <div class="demo">
  295            <h3>Customize The Plugin</h3>
  296            <div id="custom0" class="demo demoGroup">
  297                <h4>Default</h4>
  298                <p>Lorem ipsum dolor sit amet </p>
  299            </div>
  300            <div id="custom1" class="demo demoGroup">
  301                <h4>Custom Icons</h4>
  302                <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</p>
  303            </div>
  304            <div id="custom2" class="demo demoGroup">
  305                <h4>5 Icons Per Row</h4>
  306                <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</p>
  307            </div>
  308            <div id="custom3" class="demo demoGroup">
  309                <h4>Change Search Keywords</h4>
  310                <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</p>
  311            </div>
  312            <div id="custom4" class="demo demoGroup">
  313                <h4>Localization</h4>
  314                <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</p>
  315            </div>
  316            <div id="custom5" class="demo demoGroup">
  317                <h4>Add New Platform</h4>
  318                <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</p>
  319            </div>
  320        </div>
  321        <div id="new" class="demo">
  322            <h3>QR Code</h3>
  323            <p>Lorem ipsum dolor sit amet  </p>
  324        </div>
  325        <div id="html" class="demo">
  326            <h3>HTML</h3>
  327            <p>You can also use pure HTML to initiation the plugin.</p>
  328            <selecton-tooltip data-target="#html" data-comps="foo">
  329                <component-search>
  330                    <google></google>
  331                </component-search>
  332                <component-share>
  333                    <facebook></facebook>
  334                </component-share>
  335                <component-visit data-github="abc"></component-visit>
  336                <component-foo data-icon-path="/swish/lm_xref/pixmapx/selected/img/qrcode.svg" data-text="123">
  337                    <bar1 data-name="Bar1" data-link="{{bar1}}"  data-icon-path="/swish/lm_xref/pixmapx/selected/img/wechat.svg" data-require="qrcode"></bar1>
  338                </component-foo>
  339            </selecton-tooltip>
  340        </div>
  341    </div>
  342
  343
  344<script type="text/javascript">
  345
  346(function() {
  347    let search = {
  348        components: {
  349            search: {
  350                enabled: "all"
  351            },
  352            share: {
  353                enabled: "none"
  354            },
  355            visit: {
  356                enabled: "none"
  357            },
  358        }
  359    }
  360    let share = {
  361        components: {
  362            search: {
  363                enabled: "none"
  364            },
  365            share: {
  366                enabled: "all"
  367            },
  368            visit: {
  369                enabled: "none"
  370            },
  371        }
  372    }
  373    let visit = {
  374        dev: true,
  375        components: {
  376            search: {
  377                enabled: "none"
  378            },
  379            share: {
  380                enabled: "none"
  381            },
  382            visit: {
  383                enabled: "all"
  384            },
  385        }
  386    }
  387    let custom = {
  388        components: {
  389            search: {
  390                enabled: "all"
  391            },
  392            share: {
  393                enabled: "none"
  394            },
  395            visit: {
  396                enabled: "none"
  397            },
  398        }
  399    }
  400    let newComp = {
  401        components: {
  402            search: {
  403                enabled: ["google", "bing"]
  404            },
  405            share: {
  406                enabled: ["facebook", "line"]
  407            },
  408            visit: {
  409                facebook: "default",
  410                youtube: "default"
  411            },
  412
  413            foo: {
  414                enabled: ["bar1"],
  415                url: "google.com",
  416                iconPath: "/swish/lm_xref/pixmapx/selected/img/qrcode.svg",
  417                platforms: {
  418                    bar1: {
  419                        link: "{{url}}",
  420                        iconPath: "/swish/lm_xref/pixmapx/selected/img/wechat.svg",
  421                        require: ["qrcode"]
  422                    }
  423                }
  424            }
  425        },
  426        locale: {
  427            components: {
  428                foo: {
  429                    title: "Share QR Code to {{platform}}",
  430                    platforms: {
  431                        bar1: "Bar1"
  432                    },
  433                }
  434            }
  435        },
  436    }
  437    let customConfig = [
  438        {},
  439        {
  440            components: {
  441                search: {
  442                    iconPath: "/swish/lm_xref/pixmapx/selected/img/wikipedia.svg",
  443                    platforms: {
  444                        wikipedia: {
  445                            iconPath: "/swish/lm_xref/pixmapx/selected/img/search.svg"
  446                        }
  447                    }
  448                },
  449            }
  450        },
  451        { itemsPerColumn: 5 },
  452        {
  453            components: {
  454                search: {
  455                    text: "Hello World",
  456                }
  457            }
  458        },
  459        {
  460            locale: {
  461                components: {
  462                    search: {
  463                        title: "{{platform}} Custom Search",
  464                    }
  465                },
  466                platforms: {
  467                    google: "New Google"
  468                }
  469            }
  470        },
  471        {
  472            components: {
  473                search: {
  474                    platforms: {
  475                        google2: {
  476                            link: "https://www.google.com/search?q={{text}}",
  477                            name: "Google2",
  478                            iconPath: "https://www.google.com/images/branding/googlelogo/2x/googlelogo_color_272x92dp.png"
  479                        },
  480                    },
  481                }
  482            }
  483        },
  484    ]
  485    $("#default").socialSelection(newComp);
  486    // $("#body").socialSelection(newComp);
  487    //$("#table4").socialSelection(newComp);
  488
  489    $("#search").socialSelection(search);
  490    $("#share").socialSelection(share);
  491    $("#visit").socialSelection(visit);
  492    $("#new").socialSelection(newComp);
  493    customConfig.map((v, i) => {
  494        $("#custom" + i).socialSelection($.fn.deepExtend(v, custom));
  495   })
  496   
  497</script>
  498
  499'))).
  500
  501
  502one_2_three_blur:-
  503once_per_request((
  504write('
  505<script type="text/javascript">
  506
  507if (!window.x) {
  508    window.x = {};
  509}
  510
  511window.x.Selector = {};
  512window.x.Selector.getSelected = function() {
  513    var t = "";
  514    if (window.getSelection) {
  515        t = window.getSelection();
  516    } else if (document.getSelection) {
  517        t = document.getSelection();
  518    } else if (document.selection) {
  519        t = document.selection.createRange().text;
  520    }
  521    return t;
  522}
  523
  524var pageX;
  525var pageY;
  526var selectedX;
  527var lastSelectedText;
  528
  529$(document).ready(function() {
  530    $(document).bind("mouseup", function() {
  531
  532
  533    var selectedText = x.Selector.getSelected();
  534
  535    if(selectedText != ""){            
  536
  537			document.execCommand("copy")
  538			lastSelectedText = selectedText;
  539	 
  540      $("div.selectionTooltip:first").css({"left": pageX - 105,"top" : pageY - 175}).fadeIn(200);  
  541      $newdiv1.prepend($("div.selectionTooltip").clone())
  542      $newdiv1.prepend("<p>"+selectedText+"</p>");
  543            $newdiv1.css({
  544                "left": pageX - 55,
  545                "top" : pageY - 155
  546            }).fadeIn(200);
  547            
  548           
  549        } else {
  550           // $("ul.tools").fadeOut(200);
  551            //$("div.selectionTooltip").fadeOut(200);            
  552        }
  553    });
  554
  555    $(document).on("mousedown", function(e){
  556        pageX = e.pageX;
  557        pageY = e.pageY;
  558            if (e.buttons == 2) {
  559				//debugger;
  560				if(lastSelectedText!=null)  {
  561					//document.execCommand("Paste", null, null); // 
  562				    document.execCommand("paste")
  563					//lastSelectedText = null;
  564				}
  565			}
  566	
  567    
  568    });
  569
  570
  571  function getClipboard() {
  572    var pasteTarget = document.createElement("div");
  573    pasteTarget.contentEditable = true;
  574    var actElem = document.activeElement.appendChild(pasteTarget).parentNode;
  575    pasteTarget.focus();
  576    document.execCommand("Paste", null, null);
  577    var paste = pasteTarget.innerText;
  578    actElem.removeChild(pasteTarget);
  579    return paste;
  580  };
  581});
  582</script>
  583'))).
  584
  585
  586
  587
  588
  589
  590
  591ensure_collapsable_styles:- 
  592once_per_request(pformat_write('<style>
  593.collapsible {
  594  background-color: #777;
  595  color: white;
  596  cursor: pointer;
  597  padding: 18px;
  598  width: 100%;
  599  border: none;
  600  text-align: left;
  601  outline: none;
  602  font-size: 15px;
  603}
  604
  605.active, .collapsible:hover {
  606  background-color: #555;
  607}
  608
  609.collapsible:after {
  610  content: "\\002B";
  611  color: white;
  612  font-weight: bold;
  613  float: right;
  614  margin-left: 5px;
  615}
  616
  617.active:after {
  618  content: "\\2212";
  619}
  620
  621.collapsed-c {
  622  padding: 0 18px;
  623  max-height: 0;
  624  overflow: hidden;
  625  transition: max-height 0.2s ease-out;
  626  background-color: #f1f1f1;
  627}
  628
  629</style>
  630
  631')).
  632
  633ensure_collapsable_script:- 
  634once_per_request(pformat_write('
  635<script>
  636var coll = document.getElementsByClassName("collapsible");
  637var i;
  638
  639for (i = 0; i < coll.length; i++) {
  640  coll[i].addEventListener("click", function(e) {
  641    this.classList.toggle("active");
  642    e.preventDefault();
  643    var content = this.nextElementSibling;
  644    if (content.style.maxHeight){
  645      content.style.maxHeight = null;
  646    } else {
  647      content.style.maxHeight = content.scrollHeight + "px";
  648    }     
  649  });
  650}
  651</script> ')).
  652
  653
  654
  655
  656
  657
  658show_menu_types:-
  659 (once_per_request(write('  	
  660
  661		<div class="displayBox">
  662
  663			<div class="header"><h1>Example Pop-Up Icon Menus</h1></div>
  664
  665			<div class="icon-box-top">
  666				<div id="defaultTest" style="margin-left: 75px">
  667					<i class="fa fa-cog leftBorder rightBorder"></i>
  668				</div>
  669				<p class="icon-text">
  670					Menu set with default settings and nothing passed through to the plugin. Will result in a menu with 2 items that give information on how to set up menus.
  671					<br />
  672					Contains 3 icons. Uses Font Awesome icons.
  673				</p>
  674			</div>
  675
  676			<div class="icon-box">
  677				<div id="myPopUp" name="menu1">
  678					<i class="fa fa-cog leftBorder rightBorder"></i>
  679				</div>
  680				<p class="icon-text">
  681					Menu using a settings icon. Default styling color, position on top, activated by click, animation: bounce, disappears on click outside of the menu. Set to show an alert box but could be set to a link.
  682					<br />
  683					Contains 4 icons. Uses Font Awesome icons.
  684				</p>
  685			</div>
  686
  687			<div class="icon-box">
  688				<div id="myPopUp2">
  689					<i class="fa fa-bars leftBorder rightBorder"></i>
  690				</div>
  691				<p class="icon-text">
  692					Menu using a hamburger icon. Red theme styling, position to the left, activated by click, animation: flip, disappears on click outside of the menu. Set to show/hide an area of the screen.
  693					<br />
  694					Contains 3 icons. Uses Font Awesome icons.
  695				</p>
  696			</div>
  697
  698			<div class="icon-box">
  699				<div id="myPopUp3">
  700					<i class="fa fa-thumbs-up leftBorder rightBorder"></i>
  701				</div>
  702				<p class="icon-text">
  703					Menu using a thumbs-up icon. Custom styling, position to the right, activated by hover, animation: grow, appears on mouseover the menu and disappears on mouse leaving the popup menu. Set to append a div to the screen.
  704					<br />
  705					Contains 5 icons. Uses Google Material Icons. Button can be moved around the screen for a movable menu thanks to jQuery"s "draggable" ui (if you link it).
  706				</p>
  707			</div>
  708<p/>
  709			<div class="icon-box">
  710				<div id="myPopUp4">
  711					<i class="material-icons leftBorder rightBorder">more_vert</i>          
  712				</div>
  713				<p class="icon-text">
  714					Menu using 3 vertical dots. Green theme styling, position to the bottom, activated by click, animation: standard, disappears only when clicked again (not outside of the icon). Set to show an alert box but could be set to a link.
  715					<br />
  716					Contains 5 icons. Uses Google Material Icons. Button can be moved around the screen for a movable menu thanks to jQuery"s "draggable" ui (if you link it).
  717				</p>
  718			</div>
  719
  720			<div class="icon-box">
  721				<p id="textPopup">Menu</p>
  722				<p class="menuText">
  723					A text type menu. Blue theme styling, position to the bottom, activated by hover, animation: standard, appears on mouseover the menu and disappears on mouse leaving the popup menu. Set to show an alert box but could be set to a link.
  724					<br />
  725					Contains 4 icons. Uses Font Awesome icons.
  726				</p>
  727			</div>
  728
  729		</div>
  730
  731		<div id="starWarsIcons" title="Click the icon to clear it.">
  732			<div id="rebel">
  733				<i class="fa fa-ra swIcon"></i>
  734				<p>Rebel Alliance</p>
  735			</div>
  736
  737			<div id="empire">
  738				<i class="fa fa-empire swIcon"></i>
  739				<p>Empire</p>
  740			</div>
  741
  742			<div id="firstOrderIcon">
  743				<i class="fa fa-first-order swIcon"></i>
  744				<p>First Order</p>
  745			</div>
  746
  747		</div>'))).
  748
  749
  750world_snap:- once_per_request((world_snap(X),print_html_term_tree(X))).
  751
  752world_snap([perceptq(x(player,i1),[]),props(x(cup,i1),[traits([cup,object]),
  753  shape=cup,default_rel=in,opened=f,can_be(open,t),has_rel(in,t),inherited(container),inherited(physical),
  754  can_be(move,t),can_be(touch,t),cleanliness=clean,class_desc(["kind is corporial","kind is normally thinkable","kind is an Movable Object"]),
  755  inherited(fully_corporial),can_be(examine,t),inherited(thinkable),inherited(moveable),inherited(flask),inherited(cup),
  756  co([shape=cup,traits([cup]),inherit(cup,t),sp(nouns,[cup])])]),props(x(cabinate,i1),[shape=cabinate,traits([cabinate]),
  757default_rel=in,opened=f,can_be(open,t),has_rel(in,t),inherited(container),can_be(take,f),
  758class_desc(["kind is an Immobile Object","kind is corporial","kind is normally thinkable","kind is furnature"]),
  759inherited(untakeable),can_be(touch,t),inherited(fully_corporial),has_rel(on,t),cleanliness=clean,inherited(surface),
  760can_be(examine,t),inherited(thinkable),inherited(physical),inherited(furnature),volume_capacity=10,inherited(cabinate),
  761 co([shape=cabinate,traits([cabinate]),inherit(cabinate,t),sp(nouns,[cabinate])])]),props(x(plate,i1),[traits([plate,object]),
  762 shape=plate,has_rel(on,t),default_rel=on,inherited(surface),inherited(physical),can_be(move,t),can_be(touch,t),cleanliness=clean,
  763 class_desc(["kind is corporial","kind is normally thinkable","kind is an Movable Object"]),inherited(fully_corporial),
  764  can_be(examine,t),inherited(thinkable),inherited(moveable),volume_capacity=2,breaks_into=shards,inherited(plate),
  765  co([shape=plate,traits([plate]),inherit(plate,t),sp(nouns,[plate])])]),props(x(sink,i1),[traits([sink,object]),shape=sink,
  766 cleanliness=dirty,opened=t,can_be(close,f),can_be(open,f),inherited(uncloseable),default_rel=in,has_rel(in,t),inherited(container),
  767  can_be(move,t),class_desc(["kind is an Movable Object","kind is an Immobile Object","kind is corporial","kind is normally thinkable","kind is furnature"]),inherited(moveable),inherited(flask),can_be(take,f),inherited(untakeable),can_be(touch,t),inherited(fully_corporial),has_rel(on,t),inherited(surface),can_be(examine,t),inherited(thinkable),inherited(physical),inherited(furnature),volume_capacity=5,inherited(sink),co([shape=sink,traits([sink]),inherit(sink,t),sp(nouns,[sink])])]),props(x(lamp,i1),[traits([lamp,object]),shape=lamp,name="shiny brass lamp",powered=t,can_be(switch,t),inherited(light),inherited(brass),inherited(shiny),inherited(physical),can_be(move,t),can_be(touch,t),cleanliness=clean,class_desc(["kind is corporial","kind is normally thinkable","kind is an Movable Object"]),inherited(fully_corporial),can_be(examine,t),inherited(thinkable),inherited(moveable),emitting(see,light),effect(switch(on),setprop(x(lamp,i1),emitting(see,light))),effect(switch(off),delprop(x(lamp,i1),emitting(see,light))),breaks_into=broken_lamp,inherited(lamp),co([shape=lamp,traits([lamp]),inherit(lamp,t),sp(nouns,[lamp])])]),props(x(flour,i1),[traits([flour,object]),shape=flour,can_be(eat,t),inherited(physical),can_be(move,t),can_be(touch,t),cleanliness=clean,class_desc(["kind is corporial","kind is normally thinkable","kind is an Movable Object"]),inherited(fully_corporial),can_be(examine,t),inherited(thinkable),inherited(moveable),inherited(food),ammount=some,inherited(measurable),inherited(flour),co([shape=flour,traits([flour]),inherit(flour,t),sp(nouns,[flour])])]),props(x(bowl,i1),[traits([bowl,object]),shape=bowl,opened=t,can_be(close,f),can_be(open,f),inherited(uncloseable),default_rel=in,has_rel(in,t),inherited(container),inherited(physical),can_be(move,t),can_be(touch,t),cleanliness=clean,class_desc(["kind is corporial","kind is normally thinkable","kind is an Movable Object"]),inherited(fully_corporial),can_be(examine,t),inherited(thinkable),inherited(moveable),inherited(flask),volume_capacity=2,breaks_into=shards,name="porcelain bowl",desc="This is a modest glass cooking bowl with a yellow flower motif glazed into the outside surface.",inherited(bowl),co([shape=bowl,traits([bowl]),inherit(bowl,t),sp(nouns,[bowl])])]),props(x(box,i1),[traits([box,object]),shape=box,volume_capacity=11,default_rel=in,opened=f,can_be(open,t),has_rel(in,t),inherited(container),inherited(physical),can_be(move,t),can_be(touch,t),cleanliness=clean,class_desc(["kind is corporial","kind is normally thinkable","kind is an Movable Object"]),inherited(fully_corporial),can_be(examine,t),inherited(thinkable),inherited(moveable),can_be(burn,t),inherited(paper),inherited(cardboard),inherited(box),co([shape=box,traits([box]),inherit(box,t),sp(nouns,[box])])]),props(x(table,i1),[shape=(table),traits([table]),has_rel(on,t),cleanliness=clean,inherited(surface),inherited(physical),default_rel=on,inherited(table),co([shape=(table),traits([table]),inherit(table,t),sp(nouns,[table])])]),props(x(table_leg,i1),[shape=table_leg,traits([table_leg]),inherited(table_leg),co([shape=table_leg,traits([table_leg]),inherit(table_leg,t),sp(nouns,[table_leg])])]),props(x(brklamp,i1),[traits([brklamp,object]),shape=brklamp,name="definately broken",effect(switch(on),true),effect(switch(off),true),nominals(broken),inherited(dented),inherited(broken),effect(hit,[print_("Hit brklamp"),setprop(x(brklamp,i1),inherit(broken))]),powered=t,can_be(switch,t),inherited(light),inherited(brass),inherited(shiny),inherited(physical),can_be(move,t),can_be(touch,t),cleanliness=clean,class_desc(["kind is corporial","kind is normally thinkable","kind is an Movable Object"]),inherited(fully_corporial),can_be(examine,t),inherited(thinkable),inherited(moveable),emitting(see,light),breaks_into=broken_lamp,inherited(lamp),inherited(brklamp),co([shape=brklamp,traits([brklamp]),inherit(brklamp,t),sp(nouns,[brklamp])])]),props(x(apple,i1),[shape=apple,traits([apple]),inherited(apple),co([shape=apple,traits([apple]),inherit(apple,t),sp(nouns,[apple])])]),props(x(crate,i1),[traits([crate,object]),shape=crate,default_rel=in,opened=f,can_be(open,t),has_rel(in,t),inherited(container),inherited(physical),can_be(move,t),can_be(touch,t),cleanliness=clean,class_desc(["kind is corporial","kind is normally thinkable","kind is an Movable Object"]),inherited(fully_corporial),can_be(examine,t),inherited(thinkable),inherited(moveable),volume_capacity=13,breaks_into=splinters,can_be(burn,t),inherited(wooden),inherited(crate),co([shape=crate,traits([crate]),inherit(crate,t),sp(nouns,[crate])])]),props(x(screendoor,i1),[shape=screendoor,traits([screendoor]),door_to(kitchen),door_to(garden),class_desc(["kind is an Immobile Object","kind is furnature","kind is normally thinkable","kind is corporial"]),inherited(untakeable),has_rel(on,t),default_rel=on,inherited(surface),inherited(physical),inherited(furnature),can_be(open,t),can_be(close,t),opened=f,can_be(touch,t),can_be(examine,t),inherited(thinkable),cleanliness=clean,inherited(fully_corporial),can_be(take,f),inherited(door),inherited(screendoor),co([shape=screendoor,traits([screendoor]),inherit(screendoor,t),sp(nouns,[screendoor])])]),props(x(fireplace,i1),[shape=fireplace,traits([fireplace]),has_rel(on,f),has_rel(over,t),opened=t,can_be(close,f),can_be(open,f),default_rel=in,has_rel(in,t),
  768 inherited(container),inherited(uncloseable),volume_capacity=20,can_be(take,f),class_desc(["kind is an Immobile Object","kind is corporial","kind is normally thinkable","kind is furnature"]),inherited(untakeable),can_be(touch,t),inherited(fully_corporial),cleanliness=clean,inherited(surface),can_be(examine,t),inherited(thinkable),inherited(physical),inherited(furnature),inherited(fireplace),co([shape=fireplace,traits([fireplace]),inherit(fireplace,t),sp(nouns,[fireplace])])]),props(x(videocamera,i1),[shape=videocamera,traits([videocamera]),inherited(memorize_perceptq),can_be(switch,t),effect(switch(on),setprop(x(videocamera,i1),powered=t)),effect(switch(off),setprop(x(videocamera,i1),powered=f)),powered=t,has_sense(see),breaks_into=broken_videocam,inherited(videocamera),co([shape=videocamera,traits([videocamera]),inherit(videocamera,t),sp(nouns,[videocamera])])]),memories(x(videocamera,i1),[spropOf(memories,x(videocamera,i1)),structure_label(mem(x(videocamera,i1))),timestamp(0,5848.7),current_goals(_29854,[]),goals_skipped(_29854,[]),goals_satisfied(_29854,[]),intent(_29854,[act3(look,x(videocamera,i1),[])]),inst(x(videocamera,i1))]),perceptq(x(videocamera,i1),[]),props(x(shovel,i1),[shape=shovel,traits([shovel]),inherited(shovel),co([shape=shovel,traits([shovel]),inherit(shovel,t),sp(nouns,[shovel])])]),props(x(mushroom,i1),[traits([mushroom,object]),shape=mushroom,name="speckled mushroom",inherited(physical),can_be(move,t),can_be(touch,t),cleanliness=clean,class_desc(["kind is corporial","kind is normally thinkable","kind is an Movable Object"]),inherited(fully_corporial),can_be(examine,t),inherited(thinkable),inherited(moveable),ammount=some,inherited(measurable),inherited(food),inherited(fungus),inherited(toadstool),inherited(speckled),initial("A speckled mushroom grows out of the sodden earth, on a long stalk."),desc="The mushroom is capped with blotches, and you aren't at all sure it's not a toadstool.",can_be(eat,t),before(eat,(random100=<30,die("It was poisoned!");"yuck!")),after(take,(initial,"You pick the mushroom, neatly cleaving its thin stalk.")),inherited(mushroom),co([shape=mushroom,traits([mushroom]),inherit(mushroom,t),sp(nouns,[mushroom])])]),props(x(water,i1),[shape=water,traits([water]),inherited(water),co([shape=water,traits([water]),inherit(water,t),sp(nouns,[water])])]),props(x(fountain,i1),[traits([fountain,object]),shape=fountain,volume_capacity=150,desc="this is a place",inherited(here),can_be(move,f),has_rel(fn(exit,_30660),t),inherited(place),cleanliness=dirty,opened=t,can_be(close,f),can_be(open,f),inherited(uncloseable),default_rel=in,has_rel(in,t),inherited(container),class_desc(["kind is an Movable Object","kind is an Immobile Object","kind is corporial","kind is normally thinkable","kind is furnature"]),inherited(moveable),inherited(flask),can_be(take,f),inherited(untakeable),can_be(touch,t),inherited(fully_corporial),has_rel(on,t),inherited(surface),can_be(examine,t),inherited(thinkable),inherited(physical),inherited(furnature),inherited(sink),inherited(fountain),co([shape=fountain,traits([fountain]),inherit(fountain,t),sp(nouns,[fountain])])]),props(x(rock,i1),[shape=rock,traits([rock]),inherited(rock),co([shape=rock,traits([rock]),inherit(rock,t),sp(nouns,[rock])])]),props(x(locker,i1),[traits([locker,object]),shape=locker,default_rel=in,can_be(open,t),has_rel(in,t),inherited(container),inherited(physical),can_be(move,t),can_be(touch,t),cleanliness=clean,class_desc(["kind is corporial","kind is normally thinkable","kind is an Movable Object"]),inherited(fully_corporial),can_be(examine,t),inherited(thinkable),inherited(moveable),volume_capacity=13,can_be(burn,f),inherited(metal),opened=f,inherited(locker),co([shape=locker,traits([locker]),inherit(locker,t),sp(nouns,[locker])])]),props(x(shelf,i1),[shape=shelf,traits([shelf]),can_be(take,f),class_desc(["kind is an Immobile Object","kind is corporial","kind is normally thinkable","kind is furnature"]),inherited(untakeable),can_be(touch,t),inherited(fully_corporial),has_rel(on,t),default_rel=on,cleanliness=clean,inherited(surface),can_be(examine,t),inherited(thinkable),inherited(physical),inherited(furnature),inherited(shelf),co([shape=shelf,traits([shelf]),inherit(shelf,t),sp(nouns,[shelf])])]),props(x(living_room,i1),[shape=living_room,traits([living_room]),volume_capacity=10000,default_rel=in,desc="this is a place",has_rel(in,t),inherited(here),can_be(move,f),can_be(take,f),has_rel(fn(exit,_31872),t),inherited(place),inherited(living_room),co([shape=living_room,traits([living_room]),inherit(living_room,t),sp(nouns,[living_room])])]),props(x(dining_room,i1),[shape=dining_room,traits([dining_room]),volume_capacity=10000,default_rel=in,desc="this is a place",has_rel(in,t),inherited(here),can_be(move,f),can_be(take,f),has_rel(fn(exit,_32090),t),inherited(place),inherited(dining_room),co([shape=dining_room,traits([dining_room]),inherit(dining_room,t),sp(nouns,[dining_room])])]),props(x(garden,i1),[shape=garden,traits([garden]),volume_capacity=10000,default_rel=in,desc="this is a place",has_rel(in,t),inherited(here),can_be(move,f),can_be(take,f),has_rel(fn(exit,_32308),t),inherited(place),cant_go($agent,up,"You lack the ability to fly."),inherited(garden),co([shape=garden,traits([garden]),inherit(garden,t),sp(nouns,[garden])])]),props(x(basement,i1),[shape=basement,traits([basement]),volume_capacity=10000,default_rel=in,desc="this is a place",has_rel(in,t),inherited(here),can_be(move,f),can_be(take,f),has_rel(fn(exit,_32544),t),inherited(place),dark=t,inherited(basement),co([shape=basement,traits([basement]),inherit(basement,t),sp(nouns,[basement])])]),props(x(wrench,i1),[traits([wrench,object]),shape=wrench,inherited(physical),can_be(move,t),class_desc(["kind is an Movable Object","kind is normally thinkable","kind is corporial"]),inherited(moveable),can_be(touch,t),can_be(examine,t),inherited(thinkable),cleanliness=clean,inherited(fully_corporial),inherited(shiny),inherited(wrench),co([shape=wrench,traits([wrench]),inherit(wrench,t),sp(nouns,[wrench])])]),props(x(coins,i1),[traits([coins,object]),shape=coins,inherited(physical),can_be(move,t),class_desc(["kind is an Movable Object","kind is normally thinkable","kind is corporial"]),inherited(moveable),can_be(touch,t),can_be(examine,t),inherited(thinkable),cleanliness=clean,inherited(fully_corporial),inherited(shiny),ammount=some,inherited(measurable),inherited(coins),co([shape=coins,traits([coins]),inherit(coins,t),sp(nouns,[coins])])]),props(x(bag,i1),[traits([bag,object]),shape=bag,volume_capacity=10,default_rel=in,opened=f,can_be(open,t),has_rel(in,t),inherited(container),inherited(physical),can_be(move,t),can_be(touch,t),cleanliness=clean,class_desc(["kind is corporial","kind is normally thinkable","kind is an Movable Object"]),inherited(fully_corporial),can_be(examine,t),inherited(thinkable),inherited(moveable),inherited(bag),co([shape=bag,traits([bag]),inherit(bag,t),sp(nouns,[bag])])]),props(x(watch,i1),[shape=watch,traits([watch]),inherited(watch),co([shape=watch,traits([watch]),inherit(watch,t),sp(nouns,[watch])])]),props(x(player,i1),[traits([player,console]),shape=player,name=x(player,i1),look_depth=3,user_mode=2,access_level=admin,inherited(physical),inherited(console),knows_verbs(eat,t),has_rel(worn_by,t),has_rel(held_by,t),model_depth=3,mass=50,volume=50,has_sense(see),knows_verbs(examine,t),inherited(actor),inherited(perceptive),class_desc(["When entering a new area the Agent will automatically\n            get an overview of the env (without purposeful looking)","Sensory percepts that discover new objects request further details (notice dirty plates are in the sink)","kind is corporial","kind is normally thinkable","direct inheriters are completely noncorporial","kind is both partly corporial and non-corporial"]),inherited(autolook),inherited(autoscan),can_be(touch,t),cleanliness=clean,inherited(fully_corporial),inherit(fully_corporial,t),can(examine)=f,can_be(examine,t),inherited(thinkable),inherited(noncorporial),inherited(partly_noncorporial),inherited(character),can_be(switch(off),f),powered=t,inherited(humanoid),inherited(player),co([shape=player,traits([player]),inherit(player,t),sp(nouns,[player])])]),memories(x(player,i1),[spropOf(memories,x(player,i1)),structure_label(mem(x(player,i1))),timestamp(0,5848.6),current_goals(_34146,[]),goals_skipped(_34146,[]),goals_satisfied(_34146,[]),intent(_34146,[act3(look,x(player,i1),[])]),inst(x(player,i1))]),props(x(kitchen,i1),[shape=kitchen,traits([kitchen]),volume_capacity=10000,default_rel=in,desc="this is a place",has_rel(in,t),inherited(here),can_be(move,f),can_be(take,f),has_rel(fn(exit,_34354),t),inherited(place),inherited(kitchen),co([shape=kitchen,traits([kitchen]),inherit(kitchen,t),sp(nouns,[kitchen])])]),props(x(floyd,i1),[traits([floyd,object]),shape=floyd,name="Floyd the robot",powered=f,knows_verbs(eat,f),inherited(impulsive),class_desc(["like Floyd the robot will, instances will automatically use its planner\n        about planning to decide on what to do","kind is an Movable Object","When entering a new area the Agent will automatically\n            get an overview of the env (without purposeful looking)","Sensory percepts that discover new objects request further details (notice dirty plates are in the sink)","kind is corporial","kind is normally thinkable","direct inheriters are completely noncorporial","kind is both partly corporial and non-corporial"]),inherited(autonomous),emitting(see,light),mass=200,inherited(metallic),desc="Your classic robot: metallic with glowing red eyes, enthusiastic but not very clever.",can_be(switch,t),iza(memorizer),inherited(physical),can_be(move,t),inherited(moveable),inherited(shiny),has_rel(worn_by,t),has_rel(held_by,t),model_depth=3,volume=50,has_sense(see),knows_verbs(examine,t),inherited(actor),inherited(perceptive),inherited(autolook),inherited(autoscan),can_be(touch,t),cleanliness=clean,inherited(fully_corporial),inherit(fully_corporial,t),can(examine)=f,can_be(examine,t),inherited(thinkable),inherited(noncorporial),inherited(partly_noncorporial),inherited(character),effect(switch(on),setprop(x(floyd,i1),powered=t)),effect(switch(off),setprop(x(floyd,i1),powered=f)),inherited(robot),inherited(floyd),co([shape=floyd,traits([floyd]),inherit(floyd,t),sp(nouns,[floyd])])]),perceptq(x(floyd,i1),[]),memories(x(floyd,i1),[spropOf(memories,x(floyd,i1)),structure_label(mem(x(floyd,i1))),timestamp(0,5848.6),current_goals(_35136,[]),goals_skipped(_35136,[]),goals_satisfied(_35136,[]),intent(_35136,[act3(look,x(floyd,i1),[])]),inst(x(floyd,i1))]),props(x(pantry,i1),[shape=pantry,traits([pantry]),volume_capacity=1000,inherited(closet),nominals(kitchen),desc="You're in a dark kitchen pantry.",dark=t,default_rel=in,has_rel(in,t),inherited(here),can_be(move,f),can_be(take,f),has_rel(fn(exit,_35376),t),inherited(place),inherited(pantry),co([shape=pantry,traits([pantry]),inherit(pantry,t),sp(nouns,[pantry])])]),h(spatial,in,x(floyd,i1),x(pantry,i1)),h(spatial,in,x(player,i1),x(kitchen,i1)),h(spatial,worn_by,x(watch,i1),x(player,i1)),h(spatial,held_by,x(bag,i1),x(player,i1)),h(spatial,in,x(coins,i1),x(bag,i1)),h(spatial,held_by,x(wrench,i1),x(floyd,i1)),h(spatial,fn(exit,north),x(kitchen,i1),x(pantry,i1)),h(spatial,fn(exit,south),x(pantry,i1),x(kitchen,i1)),h(spatial,fn(exit,down),x(pantry,i1),x(basement,i1)),h(spatial,fn(exit,up),x(basement,i1),x(pantry,i1)),h(spatial,fn(exit,south),x(kitchen,i1),x(garden,i1)),h(spatial,fn(exit,north),x(garden,i1),x(kitchen,i1)),h(spatial,fn(exit,west),x(kitchen,i1),x(dining_room,i1)),h(spatial,fn(exit,east),x(dining_room,i1),x(kitchen,i1)),h(spatial,fn(exit,west),x(dining_room,i1),x(living_room,i1)),h(spatial,fn(exit,east),x(living_room,i1),x(dining_room,i1)),h(spatial,in,x(shelf,i1),x(pantry,i1)),h(spatial,in,x(locker,i1),x(pantry,i1)),h(spatial,in,x(rock,i1),x(garden,i1)),h(spatial,in,x(rock,2),x(garden,i1)),h(spatial,in,x(fountain,i1),x(garden,i1)),h(spatial,in,x(water,i1),x(fountain,i1)),h(spatial,in,x(mushroom,i1),x(garden,i1)),h(spatial,in,x(shovel,i1),x(basement,i1)),h(spatial,in,x(videocamera,i1),x(living_room,i1)),h(spatial,in,x(fireplace,i1),x(living_room,i1)),h(spatial,in,x(screendoor,i1),x(kitchen,i1)),h(spatial,in,x(crate,i1),x(kitchen,i1)),h(spatial,in,x(apple,i1),x(crate,i1)),h(spatial,in,x(screendoor,i1),x(garden,i1)),h(spatial,in,x(brklamp,i1),x(garden,i1)),h(spatial,on,x(table,i1),x(table_leg,i1)),h(spatial,on,x(box,i1),x(table,i1)),h(spatial,in,x(bowl,i1),x(box,i1)),h(spatial,in,x(flour,i1),x(bowl,i1)),h(spatial,in,x(table,i1),x(kitchen,i1)),h(spatial,on,x(lamp,i1),x(table,i1)),h(spatial,in,x(sink,i1),x(kitchen,i1)),h(spatial,in,x(plate,i1),x(sink,i1)),h(spatial,in,x(cabinate,i1),x(kitchen,i1)),h(spatial,in,x(cup,i1),x(cabinate,i1)),type_props(broken_videocam,[can_be(switch,f),powered=f,inherit(videocamera,t)]),type_props(videocamera,[inherit(memorizer,t),inherit(perceptq,t),inherit(memorize_perceptq,t),can_be(switch,t),effect(switch(on),setprop($self,powered=t)),effect(switch(off),setprop($self,powered=f)),powered=t,has_sense(see),breaks_into=broken_videocam]),type_props(wrench,[inherit(shiny,t)]),type_props(table,[inherit(surface,t),inherit(physical,t),default_rel=on]),type_props(shelf,[inherit(surface,t),inherit(physical,t),inherit(furnature,t)]),type_props(surface,[has_rel(on,t),default_rel=on,inherit(physical,t),cleanliness=clean]),type_props(broken_lamp,[name="dented brass lamp",inherit(light,t),traits(brass),inherit(broken,t),inherit(dented,t),can_be(switch,t),effect(switch(on),true),effect(switch(off),true)]),type_props(lamp,[name="shiny brass lamp",powered=t,can_be(switch,t),inherit(light,t),inherit(brass,t),inherit(shiny,t),inherit(moveable,t),emitting(see,light),effect(switch(on),setprop($self,emitting(see,light))),effect(switch(off),delprop($self,emitting(see,light))),breaks_into=broken_lamp]),type_props(flour,[inherit(food,t),inherit(measurable,t)]),type_props(coins,[inherit(shiny,t),inherit(measurable,t)]),type_props(shiny,[inherit(shiny,t),inherit(moveable,t),inherit(fully_corporial,t)]),type_props(measurable,[inherit(measurable,t),ammount=some]),type_props(fountain,[volume_capacity=150,inherit(place,t),inherit(sink,t)]),type_props(cabinate,[inherit(container,t),inherit(furnature,t),volume_capacity=10]),type_props(uncloseable,[opened=t,can_be(close,f),can_be(open,f),inherit(container,t)]),type_props(sink,[cleanliness=dirty,inherit(uncloseable,t),inherit(flask,t),inherit(furnature,t),volume_capacity=5]),type_props(paper,[can_be(burn,t)]),type_props(cardboard,[inherit(paper,t)]),type_props(metal,[can_be(burn,f)]),type_props(wooden,[breaks_into=splinters,can_be(burn,t)]),type_props(locker,[inherit(container,t),inherit(moveable,t),volume_capacity=13,inherit(metal,t),opened=f]),type_props(crate,[inherit(container,t),inherit(moveable,t),volume_capacity=13,inherit(wooden,t),opened=t]),type_props(box,[opened=f,volume_capacity=11,inherit(container,t),inherit(moveable,t),inherit(cardboard,t)]),type_props(fireplace,[has_rel(on,f),has_rel(over,t),inherit(uncloseable,t),volume_capacity=20,inherit(furnature,t)]),type_props(plate,[inherit(surface,t),inherit(moveable,t),volume_capacity=2,breaks_into=shards,cleanliness=dirty]),type_props(bowl,[inherit(uncloseable,t),inherit(flask,t),volume_capacity=2,breaks_into=shards,cleanliness=dirty,name="porcelain bowl",desc="This is a modest glass cooking bowl with a yellow flower motif glazed into the outside surface."]),type_props(flask,[inherit(physical,t),inherit(container,t),opened=t,inherit(moveable,t)]),type_props(cup,[inherit(flask,t)]),type_props(bag,[volume_capacity=10,inherit(container,t),inherit(moveable,t)]),type_props(container,[default_rel=in,opened=f,can_be(open,t),has_rel(in,t)]),type_props(place,[volume_capacity=10000,default_rel=in,desc="this is a place",has_rel(in,t),inherit(here,t),can_be(move,f),can_be(take,f),has_rel(fn(exit,_38384),t)]),type_props(perceptq,[inherit(no_perceptq,f)]),type_props(no_perceptq,[inherit(perceptq,f)]),type_props(natural_force,[knows_verbs(eat,f),can_be(touch,f),has_rel(held_by,f),has_rel(worn_by,f),has_sense(see),inherit(noncorporial,t),inherit(actor,t)]),type_props(robot,[knows_verbs(eat,f),inherit(autonomous,t),emitting(see,light),volume=50,mass=200,inherit(robot,t),inherit(metallic,t),desc="Your classic robot: metallic with glowing red eyes, enthusiastic but not very clever.",can_be(switch,t),iza(memorizer),inherit(robot,t),inherit(shiny,t),inherit(character,t),powered=t,effect(switch(on),setprop($self,powered=t)),effect(switch(off),setprop($self,powered=f))]),type_props(actor,[knows_verbs(examine,t),inherit(partly_noncorporial,t)]),type_props(character,[has_rel(worn_by,t),has_rel(held_by,t),model_depth=3,mass=50,volume=50,has_sense(see),inherit(perceptq,t),inherit(memorizer,t),inherit(actor,t),inherit(autoscan,t),inherit(partly_noncorporial,t)]),type_props(autolook,[inherit(autolook,t),class_desc(["When entering a new area the Agent will automatically\n            get an overview of the env (without purposeful looking)"])]),type_props(autoscan,[inherit(perceptive,t),inherit(autolook,t),class_desc(["Sensory percepts that discover new objects request further details (notice dirty plates are in the sink)"])]),type_props(decider_plugin,[traits(decider),inherit(nomicmu_plugin,t),class_desc(["plugins that contain decide_action hooks"])]),type_props(nomicmu_plugin,[inherit(plugin,t),inherit(unthinkable,t),prefix='$error'("required config var"),class_desc(["Nomicmu plugin"])]),type_props(decider,[class_desc(["agents of this type/class call decide_action/3 hooks (and per plugin)"])]),type_props(autonomous,[inherit(autoscan,t),inherit(impulsive,t),class_desc(["like Floyd the robot will, instances will automatically use its planner\n        about planning to decide on what to do"])]),type_props(humanoid,[knows_verbs(eat,t),volume=50,mass=50,inherit(character,t),inherit(memorizer,t),can_be(switch(off),f),powered=t]),type_props(console,[inherit(physical,t),traits([console]),inherit(player,t)]),type_props(player,[name= $self,model_depth=3,inherit(character,t),inherit(autoscan,t),look_depth=3,user_mode=2,access_level=admin,inherit(console,t),inherit(humanoid,t)]),type_props(telnet,[inherit(remote,t),inherit(player,t),inherit(player,t)]),type_props(floyd,[name="Floyd the robot",powered=f,inherit(autonomous,t),inherit(robot,t)]),type_props(furnature,[can_be(examine,t),inherit(furnature,t),inherit(untakeable,t),inherit(fully_corporial,t),inherit(surface,t),inherit(thinkable,t),inherit(physical,t),class_desc(["kind is furnature"])]),type_props(untakeable,[inherit(untakeable,t),can_be(take,f),class_desc(["kind is an Immobile Object"])]),type_props(moveable,[can_be(examine,t),inherit(physical,t),inherit(moveable,t),traits(object),can_be(move,t),inherit(fully_corporial,t),inherit(thinkable,t),class_desc(["kind is an Movable Object"])]),type_props(fully_corporial,[can_be(touch,t),can_be(examine,t),inherit(thinkable,t),cleanliness=clean,inherit(fully_corporial,t),class_desc(["kind is corporial"])]),type_props(partly_noncorporial,[inherit(fully_corporial,t),inherit(partly_noncorporial,t),inherit(noncorporial,t),class_desc(["kind is both partly corporial and non-corporial"])]),type_props(only_conceptual,[inherit(only_conceptual,t),inherit(noncorporial,t),inherit(thinkable,t),class_desc(["kind is only conceptual"])]),type_props(noncorporial,[can(examine)=f,can_be(touch,f),inherit(thinkable,t),inherit(noncorporial,t),inherit(fully_corporial,f),class_desc(["direct inheriters are completely noncorporial"])]),type_props(thinkable,[can_be(examine,t),inherit(thinkable,t),class_desc(["kind is normally thinkable"])]),type_props(unthinkable,[can_be(examine,f),inherit(unthinkable,t),class_desc(["kind is normally unthinkable"])]),type_props(door,[inherit(furnature,t),can_be(open,t),can_be(close,t),opened=f,inherit(door,t),inherit(fully_corporial,t),can_be(take,f)]),type_props(mushroom,[name="speckled mushroom",inherit(food,t),inherit(mushroom,t),inherit(fungus,t),inherit(toadstool,t),inherit(speckled,t),initial("A speckled mushroom grows out of the sodden earth, on a long stalk."),desc="The mushroom is capped with blotches, and you aren't at all sure it's not a toadstool.",can_be(eat,t),before(eat,(random100=<30,die("It was poisoned!");"yuck!")),after(take,(initial,"You pick the mushroom, neatly cleaving its thin stalk."))]),type_props(broken,[name="definately broken",effect(switch(on),true),effect(switch(off),true),can_be(switch,t),nominals(broken),inherit(broken,t),inherit(dented,t)]),type_props(screendoor,[door_to(kitchen),door_to(garden),opened=f,inherit(door,t)]),type_props(brklamp,[inherit(broken,t),name="possibly broken lamp",effect(switch(on),print_(_40786,"Switch is flipped")),effect(hit,[print_("Hit brklamp"),setprop($self,inherit(broken))]),inherit(lamp,t)]),type_props(pantry,[volume_capacity=1000,inherit(closet,t),nominals(kitchen),desc="You're in a dark kitchen pantry.",dark=t,inherit(place,t)]),type_props(living_room,[inherit(place,t)]),type_props(kitchen,[inherit(place,t),desc="cooking happens here"]),type_props(garden,[inherit(place,t),cant_go($agent,up,"You lack the ability to fly."),desc="this is the garden",cant_go($agent,_41050,"The fence surrounding the garden is too tall and solid to pass.")]),type_props(dining_room,[inherit(place,t)]),type_props(basement,[inherit(place,t),desc="This is a very dark basement.",dark=t]),
  769 type_props(food,[can_be(eat,t),inherit(moveable,t),inherit(measurable,t)]),structure_label(istate)]).
  770
  771show_map_legend :- once_per_request(write_html(
  772'<table border=0 cellpadding=5 bgcolor="#000000"><tr><td>
  773<pre><div style="background-color:#000000;float:left"><code><font size=2 face="Courier New, FixedSys, Lucida Console, Courier New, Courier"><font color="#0">
  774</font><font color="#C0C0C0">The map key is:
  775
  776        </font><font color="#FF00FF">#</font><font color="#C0C0C0">  - You                         --- - North/south wall
  777        </font><font color="#FF0000">*</font><font color="#C0C0C0">  - Other players                |  - East/west wall
  778        </font><font color="#FFFF00">!</font><font color="#C0C0C0">  - Mobiles                      +  - Door (closed)
  779        </font><font color="#00FFFF">!</font><font color="#C0C0C0">  - Pet/other charmed mob        </font><font color="#0000FF">+</font><font color="#C0C0C0">  - Door (locked)
  780        </font><font color="#FF0000">!</font><font color="#C0C0C0">  - Angry mob (with Sense        &gt;  - Up exit
  781             Anger cast)                  </font><font color="#808000">&gt;</font><font color="#C0C0C0">  - Up exit (closed)
  782        </font><font color="#00FF00">!</font><font color="#C0C0C0">  - Unkillable Mob               &lt;  - Down exit
  783        </font><font color="#00FF00">$</font><font color="#C0C0C0">  - Shopkeeper                   </font><font color="#808000">&lt;</font><font color="#C0C0C0">  - Down exit (closed)
  784       </font><font color="#00FFFF">[</font><font color="#FFFFFF">?</font><font color="#00FFFF">]</font><font color="#C0C0C0"> - Area exit                    </font><font color="#800000">#</font><font color="#C0C0C0">  - PK-flagged room             
  785       </font><font color="#00FF00">[</font><font color="#FFFFFF">?</font><font color="#00FF00">]</font><font color="#C0C0C0"> - Clan public hall exit        </font><font color="#FF0000">D</font><font color="#C0C0C0">  - Donation room
  786
  787Other characters on the map represent the terrain of the local area. Some 
  788of the major terrains are:
  789
  790        [</font><font color="#FF00FF"> </font><font color="#C0C0C0">]   Inside             .</font><font color="#FF00FF"> </font><font color="#C0C0C0">.   City
  791        </font><font color="#008000">,</font><font color="#FF00FF"> </font><font color="#008000">`</font><font color="#C0C0C0">   Field              </font><font color="#00FF00">;</font><font color="#FF00FF"> </font><font color="#00FF00">;</font><font color="#C0C0C0">   Hills
  792        </font><font color="#808000">/</font><font color="#FF00FF"> </font><font color="#808000">\\</font><font color="#C0C0C0">   Mountain           </font><font color="#0000FF">~~</font><font color="#FF00FF"> </font><font color="#0000FF">~~</font><font color="#C0C0C0">   Water
  793        </font><font color="#0000FF">~~</font><font color="#FF00FF"> </font><font color="#0000FF">~~</font><font color="#C0C0C0">   Waternoswim        </font><font color="#008080">.</font><font color="#FF00FF"> </font><font color="#008080">.</font><font color="#C0C0C0">   Air
  794        </font><font color="#808000">~~</font><font color="#FF00FF"> </font><font color="#808000">~~</font><font color="#C0C0C0">   Desert             </font><font color="#FFFF00">%</font><font color="#FF00FF"> </font><font color="#FFFF00">%</font><font color="#C0C0C0">   Quicksand
  795        </font><font color="#000080">~~</font><font color="#FF00FF"> </font><font color="#000080">~~</font><font color="#C0C0C0">   Underwater         </font><font color="#00FFFF">~~</font><font color="#FF00FF"> </font><font color="#00FFFF">~~</font><font color="#C0C0C0">   Ice
  796        </font><font color="#0000FF">.</font><font color="#FF00FF"> </font><font color="#0000FF">.</font><font color="#C0C0C0">   Underground        -</font><font color="#FF00FF"> </font><font color="#C0C0C0">-   East/West road
  797        . .   North/South road   </font><font color="#00FFFF">~~ ~~</font><font color="#C0C0C0">   River
  798        </font><font color="#FF0000">/</font><font color="#FF00FF"> </font><font color="#FF0000">\\</font><font color="#C0C0C0">   Volcano            </font><font color="#000080">%</font><font color="#FF00FF"> </font><font color="#000080">%</font><font color="#C0C0C0">   Cave
  799        # #   Dungeon            </font><font color="#008000">( *</font><font color="#C0C0C0">   Forest
  800
  801Other terrain types not listed here are for aesthetic purposes only, such
  802as </font><font color="#008080">[ ]</font><font color="#C0C0C0"> for temples, </font><font color="#FFFF00">* *</font><font color="#C0C0C0"> for shops, etc.
  803</font></font></code></div></pre></td></tr></table>')),!