/*
 * Copyright (c) 2021 Ross Cunniff
 *
 * Permission is hereby granted, free of charge, to any person obtaining a copy
 * of this software and associated documentation files (the "Software"), to deal
 * in the Software without restriction, including without limitation the rights
 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 * copies of the Software, and to permit persons to whom the Software is
 * furnished to do so, subject to the following conditions:
 *
 * The above copyright notice and this permission notice shall be included in
 * all copies or substantial portions of the Software.
 *
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 * THE SOFTWARE.
 */
class MpuLoc(StdLoc) {
    public proc create(par)
    {
        loc = par;
        par.addCont(self);
    }
}

class LitMpuLoc(MpuLoc) {
    public var pLight = true;
}

StdLoc road();
StdLoc gard();
StdLoc frst();     proc fdsc() {"You're lost in the forest.\n";}
StdLoc farm();
StdLoc town();

LitMpuLoc road1(road) {...}
LitMpuLoc road2(road) {...}
LitMpuLoc road3(road) {...}
LitMpuLoc road4(road) {...}
LitMpuLoc road5(road) {...}
LitMpuLoc road6(road) {...}
LitMpuLoc road7(road) {...}
StdLoc Roadx();     /* Where things on Highway 7 get held */
StdLoc riverx();    /* Where things in the river bed get held */

LitMpuLoc gard1(gard) {...}
LitMpuLoc gard2(gard) {...}

LitMpuLoc  frst1(frst) {...}

LitMpuLoc farm1(farm) {...}
LitMpuLoc farm2(farm) {...}
LitMpuLoc farm3(farm) {...}
LitMpuLoc farm4(farm) {...}
LitMpuLoc farm5(farm) {...}
LitMpuLoc farm6(farm) {...}
LitMpuLoc farm7(farm) {...}

LitMpuLoc town1(town) {...}
LitMpuLoc town2(town) {...}
LitMpuLoc town3(town) {...}
LitMpuLoc town4(town) {...}
StdLoc bank();
LitMpuLoc town5(bank) {...}
LitMpuLoc town6(bank) {...}

StdLoc cel01 {...}
StdLoc cel02 {...}
StdLoc cel03 {...}
LitRoom cel04 {...}
StdLoc cel05 {...}
StdLoc cel06 {...}
StdLoc cel07 {...}
StdLoc cel08 {...}
StdLoc cel09 {...}
StdLoc cel10 {...}
StdLoc cel11 {...}
StdLoc cel12 {...}
class Cel13(StdLoc) { public var HOLED; }
Cel13 cel13 {...}
StdLoc cel14 {...}
StdLoc cel15 {...}
StdLoc cel16 {...}
StdLoc cel17 {...}
StdLoc cel18 {...}
StdLoc cel19 {...}
StdLoc cel20 {...}
LitRoom cel21 {...}
LitRoom desert {...}
LitRoom field {...}

StdLoc city {...}
LitRoom building {...}