/* Generated by Opal 0.8.0 */
(function(Opal) {
Opal.dynamic_require_severity = "error";
function $rb_plus(lhs, rhs) {
return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs);
}
function $rb_minus(lhs, rhs) {
return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs);
}
function $rb_gt(lhs, rhs) {
return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs > rhs : lhs['$>'](rhs);
}
var $a, $b, TMP_1, self = Opal.top, $scope = Opal, nil = Opal.nil, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass, $hash2 = Opal.hash2;
Opal.add_stubs(['$stage', '$new', '$nil?', '$attr_writer', '$default', '$!', '$open?', '$include', '$attr_reader', '$==', '$open=', '$parent', '$kind_of?', '$serialize', '$attr_accessor', '$destination', '$reverse', '$direction', '$each', '$that_are', '$children', '$name', '$synonyms', '$name=', '$adjective', '$find_reverse', '$locked?', '$locked=', '$automatic?', '$automatic=', '$lock_key', '$lock_key=', '$portable=', '$find', '$plot', '$proper_named=', '$raise', '$cap_first', '$to_s', '$tell', '$delete_if', '$[]', '$itemized=', '$push', '$room', '$that_are_not', '$uniq', '$uniq!', '$transparent?', '$respond', '$perform', '$The', '$xlate', '$yes_or_no', '$answer', '$cue', '$meta', '$the', '$length', '$join_and', '$parent=', '$text', '$proceed', '$[]=', '$execute', '$objects', '$reachable', '$visible', '$portable?', '$locked', '$description', '$locale_description', '$explicit_exits?', '$A', '$An', '$has_description?', '$split_words', '$include?', '$commandwords', '$start_with?', '$join', '$interpret', '$is?', '$key', '$assert_action', '$embark', '$private', '$last', '$clone', '$shift', '$on_update', '$save', '$entities', '$on_player_update', '$scene', '$last_order', '$verb', '$action', '$history', '$user', '$restore', '$pop', '$default=', '$call', '$scene_managers', '$start', '$get_destinations_for', '$keys', '$first', '$unavailable_message', '$options=', '$finish', '$selection', '$mobile?', '$attached?', '$attached=', '$class', '$an', '$prompt', '$input', '$flatten', '$match', '$extension', '$to_i', '$link', '$stream', '$personal?', '$make', '$connect', '$worn?', '$pause', '$next_cue=', '$synonyms=', '$description=', '$pick', '$make_destination_hash', '$===', '$path', '$unshift', '$random', '$introduction', '$conclusion', '$locale_description=', '$static_plot']);
return ($a = ($b = $scope.get('GameficOpal').$static_plot()).$stage, $a.$$p = (TMP_1 = function(){var self = TMP_1.$$s || this, $a, $b, TMP_15, $c, TMP_16, $d, TMP_17, $e, TMP_18, $f, TMP_19, $g, TMP_20, $h, TMP_21, $i, TMP_22, $j, TMP_23, $k, TMP_24, $l, TMP_25, $m, TMP_26, $n, TMP_27, $o, TMP_28, $p, TMP_29, $q, TMP_30, $r, TMP_31, $s, TMP_32, $t, TMP_33, $u, TMP_34, $v, TMP_35, $w, TMP_36, $x, TMP_37, $y, TMP_38, $z, TMP_39, $aa, TMP_40, $ab, TMP_41, $ac, TMP_42, $ad, TMP_43, $ae, TMP_44, $af, TMP_45, $ag, TMP_46, $ah, TMP_47, $ai, TMP_49, $aj, TMP_50, $ak, TMP_51, $al, TMP_52, $am, TMP_53, $an, TMP_54, $ao, TMP_55, $ap, TMP_56, $aq, TMP_57, $ar, TMP_58, $as, TMP_59, $at, TMP_60, $au, TMP_61, $av, TMP_62, $aw, TMP_63, $ax, TMP_64, $ay, TMP_65, $az, TMP_66, $ba, TMP_72, $bb, TMP_74, $bc, TMP_75, $bd, TMP_76, $be, TMP_77, $bf, TMP_78, $bg, TMP_80, $bh, TMP_81, $bi, TMP_82, $bj, TMP_83, $bk, TMP_84, $bl, TMP_85, $bm, TMP_86, $bn, TMP_87, $bo, TMP_88, $bp, TMP_89, $bq, TMP_90, $br, TMP_91, $bs, TMP_92, $bt, TMP_93, $bu, TMP_94, $bv, TMP_95, $bw, TMP_96, $bx, TMP_97, $by, TMP_98, $bz, TMP_99, $ca, TMP_100, $cb, TMP_101, $cc, TMP_102, $cd, TMP_103, $ce, TMP_104, $cf, TMP_105, $cg, TMP_106, $ch, TMP_107, $ci, TMP_108, $cj, TMP_109, $ck, TMP_110, $cl, TMP_111, $cm, TMP_112, $cn, TMP_113, $co, TMP_114, $cp, TMP_115, $cq, TMP_119, $cr, TMP_120, $cs, TMP_121, $ct, TMP_122, $cu, TMP_123, $cv, TMP_124, $cw, TMP_125, $cx, TMP_127, $cy, TMP_131, $cz, TMP_132, $da, TMP_133, $db, TMP_134, $dc, TMP_135, $dd, TMP_136, $de, TMP_137, $df, TMP_138, $dg, TMP_139, $dh, TMP_140, $di, TMP_141, $dj, TMP_145, $dk, TMP_146, $dl, TMP_147, $dm, TMP_148, $dn, TMP_149, $do, TMP_150, $dp, TMP_152, $dq, TMP_153, $dr, TMP_154, $ds, TMP_155, $dt, TMP_156, $du, TMP_157, $dv, TMP_158, $dw, TMP_159, $dx, TMP_160, $dy, TMP_161, $dz, TMP_162, $ea, TMP_163, $eb, TMP_164, $ec, TMP_165, $ed, TMP_166, $ee, TMP_167, $ef, TMP_168, $eg, TMP_169, $eh, TMP_170, $ei, TMP_172, $ej, TMP_173, $ek, TMP_174, $el, TMP_175, $em, TMP_176, $en, TMP_177, $eo, TMP_178, $ep, TMP_179, $eq, TMP_180, $er, TMP_181, $es, TMP_182, $et, TMP_183, $eu, TMP_184, $ev, TMP_185, $ew, TMP_186, $ex, TMP_187, $ey, TMP_188, $ez, TMP_189, $fa, TMP_190, $fb, TMP_191, $fc, TMP_192, $fd, TMP_193, $fe, TMP_194, $ff, TMP_196, $fg, TMP_197, $fh, TMP_198, $fi, TMP_199, $fj, TMP_200, $fk, TMP_201, $fl, TMP_202, $fm, TMP_203, $fn, TMP_204, $fo, TMP_205, $fp, TMP_206, $fq, TMP_207, $fr, TMP_208, $fs, TMP_209, $ft, TMP_210, $fu, TMP_211, $fv, TMP_212, $fw, TMP_213, $fx, TMP_214, $fy, TMP_215, $fz, TMP_216, $ga, TMP_217, $gb, TMP_218, $gc, TMP_219, $gd, TMP_220, $ge, TMP_221, $gf, TMP_222, $gg, TMP_223, $gh, TMP_224, $gi, TMP_225, $gj, TMP_226, $gk, TMP_227, $gl, TMP_228, $gm, TMP_229, $gn, TMP_230, $go, TMP_231, $gp, TMP_232, $gq, TMP_233, $gr, TMP_234, $gs, TMP_235, $gt, TMP_236, $gu, TMP_237, $gv, TMP_238, $gw, TMP_239, $gx, TMP_240, $gy, TMP_241, $gz, TMP_242, $ha, TMP_243, $hb, TMP_244, $hc, TMP_245, $hd, TMP_246, $he, TMP_247, $hf, TMP_248, $hg, TMP_249, $hh, TMP_250, $hi, TMP_251, $hj, TMP_252, $hk, TMP_253, $hl, TMP_254, $hm, TMP_255, $hn, TMP_256, $ho, TMP_257, $hp, TMP_258, $hq, TMP_259, $hr, TMP_260, $hs, TMP_261, $ht, TMP_262, $hu, TMP_263, $hv, TMP_264, $hw, TMP_265, $hx, TMP_266, $hy, TMP_267, last_snapshot = nil, couch = nil, foam = nil, blood = nil, mattress = nil, townhouses = nil, drawer = nil, photo = nil, paystub = nil, laundry_truck = nil, uniform = nil, club_lobby = nil, club_lounge = nil, chairs = nil, hostess = nil, club_hallway = nil, south_door = nil, east_door = nil, tisch_lobby = nil, entrance = nil, directory = nil, study_hall = nil, courtesy_phone = nil, office_hallway = nil, cafeteria = nil, northeastern_corner = nil, back_hallway = nil, custodian_office = nil, plaque = nil, office_phone = nil, southwestern_corner = nil, western_hallway = nil, guard = nil, howell_office = nil, office_door = nil, desk = nil, card = nil, office_rooms = nil, desk_phone = nil, elevators = nil, cesar_wall = nil, paper = nil, super_door = nil, blocked = nil, chair = nil, gun = nil, up_from_alley = nil, boxes = nil, door = nil, rope = nil, tape = nil, cesar_desk = nil, door_to_studio = nil, eastern_door = nil, blocking_chair = nil, frank = nil, carla = nil, workbench = nil, stairs = nil, bike = nil, flip = nil;
if (self.martys_apartment == null) self.martys_apartment = nil;
if (self.martys_bedroom == null) self.martys_bedroom = nil;
if (self.martys_street == null) self.martys_street = nil;
if (self.bedford_avenue == null) self.bedford_avenue = nil;
if (self.your_apartment == null) self.your_apartment = nil;
if (self.bed == null) self.bed = nil;
if (self.dresser == null) self.dresser = nil;
if (self.east_15th_street == null) self.east_15th_street = nil;
if (self.lockpicks == null) self.lockpicks = nil;
if (self.broadway == null) self.broadway = nil;
if (self.mulberry_street == null) self.mulberry_street = nil;
if (self.cesar_lobby == null) self.cesar_lobby = nil;
if (self.super_office == null) self.super_office = nil;
if (self.ladder == null) self.ladder = nil;
if (self.cesar_hallway == null) self.cesar_hallway = nil;
if (self.thug == null) self.thug = nil;
if (self.alley == null) self.alley = nil;
if (self.fire_escape == null) self.fire_escape = nil;
if (self.fire_escape_bottom == null) self.fire_escape_bottom = nil;
if (self.south_roof == null) self.south_roof = nil;
if (self.north_roof == null) self.north_roof = nil;
if (self.storage_room == null) self.storage_room = nil;
if (self.hostage == null) self.hostage = nil;
if (self.cesar_office == null) self.cesar_office = nil;
if (self.cesar_studio == null) self.cesar_studio = nil;
if (self.macguffin == null) self.macguffin = nil;
if (self.west_37th_street == null) self.west_37th_street = nil;
if (self.riviera_cabaret == null) self.riviera_cabaret = nil;
if (self.thirty_fourth_street == null) self.thirty_fourth_street = nil;
if (self.nj_transit == null) self.nj_transit = nil;
if (self.amtrak == null) self.amtrak = nil;
if (self.lost_found == null) self.lost_found = nil;
if (self.clerk == null) self.clerk = nil;
if (self.lirr == null) self.lirr = nil;
(function($base) {
var self = $module($base, 'Use');
var def = self.$$proto, $scope = self.$$scope;
Opal.defs(self, '$children', function(args) {
var $a, self = this;
args = $slice.call(arguments, 0);
return ($a = (((($scope.get('Gamefic')).$$scope.get('Query'))).$$scope.get('Children'))).$new.apply($a, [].concat(args));
});
Opal.defs(self, '$family', function(args) {
var $a, self = this;
args = $slice.call(arguments, 0);
return ($a = (((($scope.get('Gamefic')).$$scope.get('Query'))).$$scope.get('Family'))).$new.apply($a, [].concat(args));
});
Opal.defs(self, '$parent', function(args) {
var $a, self = this;
args = $slice.call(arguments, 0);
return ($a = (((($scope.get('Gamefic')).$$scope.get('Query'))).$$scope.get('Parent'))).$new.apply($a, [].concat(args));
});
Opal.defs(self, '$siblings', function(args) {
var $a, self = this;
args = $slice.call(arguments, 0);
return ($a = (((($scope.get('Gamefic')).$$scope.get('Query'))).$$scope.get('Siblings'))).$new.apply($a, [].concat(args));
});
Opal.defs(self, '$text', function(args) {
var $a, self = this;
args = $slice.call(arguments, 0);
return ($a = (((($scope.get('Gamefic')).$$scope.get('Query'))).$$scope.get('Text'))).$new.apply($a, [].concat(args));
});
})($scope.get('Gamefic'));
(function($base) {
var self = $module($base, 'Attachable');
var def = self.$$proto, $scope = self.$$scope;
Opal.defn(self, '$attached?', function() {
var $a, self = this;
if (self.attached == null) self.attached = nil;
if ((($a = self.attached['$nil?']()) !== nil && (!$a.$$is_boolean || $a == true))) {
self.attached = false};
return self.attached;
});
Opal.defn(self, '$attached=', function(bool) {
var self = this;
return self.attached = bool;
});
})(self);
(function($base) {
var self = $module($base, 'Darkenable');
var def = self.$$proto, $scope = self.$$scope;
self.$attr_writer("dark");
Opal.defn(self, '$dark?', function() {
var $a, self = this;
if (self.dark == null) self.dark = nil;
return ((($a = self.dark) !== false && $a !== nil) ? $a : self.dark = false);
});
})($scope.get('Gamefic'));
(function($base) {
var self = $module($base, 'Enterable');
var def = self.$$proto, $scope = self.$$scope;
self.$attr_writer("enterable");
Opal.defn(self, '$enterable?', function() {
var $a, self = this;
if (self.enterable == null) self.enterable = nil;
return ((($a = self.enterable) !== false && $a !== nil) ? $a : self.enterable = false);
});
})($scope.get('Gamefic'));
(function($base) {
var self = $module($base, 'ExplicitExits');
var def = self.$$proto, $scope = self.$$scope;
self.$attr_writer("explicit_exits");
Opal.defn(self, '$explicit_exits?', function() {
var $a, self = this;
if (self.explicit_exits == null) self.explicit_exits = nil;
return ((($a = self.explicit_exits) !== false && $a !== nil) ? $a : self.explicit_exits = $scope.get('ExplicitExits').$default());
});
Opal.defs(self, '$default', function() {
var $a, self = this;
if (self["default"] == null) self["default"] = nil;
if ((($a = self["default"]['$nil?']()) !== nil && (!$a.$$is_boolean || $a == true))) {
self["default"] = true};
return self["default"];
});
Opal.defs(self, '$default=', function(bool) {
var self = this;
return self["default"] = bool;
});
})($scope.get('Gamefic'));
(function($base) {
var self = $module($base, 'Itemizable');
var def = self.$$proto, $scope = self.$$scope;
self.$attr_writer("itemized");
Opal.defn(self, '$itemized?', function() {
var $a, self = this;
if (self.itemized == null) self.itemized = nil;
if ((($a = self.itemized['$nil?']()) !== nil && (!$a.$$is_boolean || $a == true))) {
self.itemized = $scope.get('Itemizable').$default()};
return self.itemized;
});
Opal.defs(self, '$default', function() {
var $a, self = this;
if (self["default"] == null) self["default"] = nil;
if ((($a = self["default"]['$nil?']()) !== nil && (!$a.$$is_boolean || $a == true))) {
self["default"] = true};
return self["default"];
});
Opal.defs(self, '$default=', function(bool) {
var self = this;
return self["default"] = bool;
});
})($scope.get('Gamefic'));
(function($base) {
var self = $module($base, 'Openable');
var def = self.$$proto, $scope = self.$$scope;
self.$attr_writer("open");
Opal.defn(self, '$open?', function() {
var $a, self = this;
if (self.open == null) self.open = nil;
return ((($a = self.open) !== false && $a !== nil) ? $a : self.open = false);
});
Opal.defn(self, '$closed?', function() {
var self = this;
return self['$open?']()['$!']();
});
})($scope.get('Gamefic'));
(function($base) {
var self = $module($base, 'Lockable');
var def = self.$$proto, $scope = self.$$scope;
self.$include($scope.get('Openable'));
self.$attr_reader("lock_key");
Opal.defn(self, '$locked=', function(bool) {
var $a, $b, self = this;
if (self.locked == null) self.locked = nil;
self.locked = bool;
if (self.locked['$=='](true)) {
return (($a = [false]), $b = self, $b['$open='].apply($b, $a), $a[$a.length-1])
} else {
return nil
};
});
Opal.defn(self, '$open=', function(bool) {
var self = this;
if (self.open == null) self.open = nil;
self.open = bool;
if (self.open['$=='](true)) {
return self.locked = false
} else {
return nil
};
});
Opal.defn(self, '$locked?', function() {
var $a, self = this;
if (self.locked == null) self.locked = nil;
return ((($a = self.locked) !== false && $a !== nil) ? $a : self.locked = false);
});
Opal.defn(self, '$has_lock_key?', function() {
var self = this;
if (self.lock_key == null) self.lock_key = nil;
return self.lock_key['$nil?']()['$!']();
});
Opal.defn(self, '$lock_key=', function(entity) {
var self = this;
return self.lock_key = entity;
});
})($scope.get('Gamefic'));
(function($base) {
var self = $module($base, 'ParentRoom');
var def = self.$$proto, $scope = self.$$scope;
Opal.defn(self, '$room', function() {
var $a, $b, $c, self = this, p = nil;
p = self.$parent();
while ((($b = ($c = p['$kind_of?']($scope.get('Room'))['$!'](), $c !== false && $c !== nil ?p['$nil?']()['$!']() : $c)) !== nil && (!$b.$$is_boolean || $b == true))) {
p = p.$parent()};
return p;
})
})($scope.get('Gamefic'));
(function($base) {
var self = $module($base, 'Portable');
var def = self.$$proto, $scope = self.$$scope;
self.$attr_writer("portable");
Opal.defn(self, '$portable?', function() {
var $a, self = this;
if (self.portable == null) self.portable = nil;
return ((($a = self.portable) !== false && $a !== nil) ? $a : self.portable = false);
});
})($scope.get('Gamefic'));
(function($base) {
var self = $module($base, 'Transparent');
var def = self.$$proto, $scope = self.$$scope;
self.$attr_writer("transparent");
Opal.defn(self, '$transparent?', function() {
var $a, self = this;
if (self.transparent == null) self.transparent = nil;
return ((($a = self.transparent) !== false && $a !== nil) ? $a : self.transparent = false);
});
})($scope.get('Gamefic'));
(function($base, $super) {
function $Entity(){};
var self = $Entity = $klass($base, $super, 'Entity', $Entity);
var def = self.$$proto, $scope = self.$$scope;
def.locale_description = nil;
self.$include($scope.get('Portable'));
self.$include($scope.get('Itemizable'));
self.$include($scope.get('ParentRoom'));
self.$include($scope.get('Attachable'));
self.$attr_writer("locale_description");
self.$serialize("locale_description", "portable?", "itemized?", "attached?");
return (def.$locale_description = function() {
var $a, self = this;
return ((($a = self.locale_description) !== false && $a !== nil) ? $a : self.locale_description = "");
}, nil) && 'locale_description';
})($scope.get('Gamefic'), null);
(function($base, $super) {
function $Thing(){};
var self = $Thing = $klass($base, $super, 'Thing', $Thing);
var def = self.$$proto, $scope = self.$$scope;
return nil;
})($scope.get('Gamefic'), (($scope.get('Gamefic')).$$scope.get('Entity')));
(function($base, $super) {
function $Container(){};
var self = $Container = $klass($base, $super, 'Container', $Container);
var def = self.$$proto, $scope = self.$$scope;
self.$include($scope.get('Enterable'));
self.$include($scope.get('Openable'));
self.$include($scope.get('Lockable'));
self.$include($scope.get('Transparent'));
return self.$serialize("enterable?", "open?", "locked?", "lock_key", "transparent?");
})($scope.get('Gamefic'), (($scope.get('Gamefic')).$$scope.get('Entity')));
(function($base, $super) {
function $Portal(){};
var self = $Portal = $klass($base, $super, 'Portal', $Portal);
var def = self.$$proto, $scope = self.$$scope, TMP_3;
def.direction = def.name = nil;
self.$attr_accessor("destination", "direction");
self.$serialize("destination", "direction");
def.$find_reverse = function() {try {
var $a, $b, TMP_2, self = this, rev = nil;
if ((($a = self.$destination()['$nil?']()) !== nil && (!$a.$$is_boolean || $a == true))) {
return nil};
rev = self.$direction().$reverse();
if ((($a = rev['$=='](nil)['$!']()) !== nil && (!$a.$$is_boolean || $a == true))) {
($a = ($b = self.$destination().$children().$that_are($scope.get('Portal'))).$each, $a.$$p = (TMP_2 = function(c){var self = TMP_2.$$s || this;
if (c == null) c = nil;
if (c.$direction()['$=='](rev)) {
Opal.ret(c)
} else {
return nil
}}, TMP_2.$$s = self, TMP_2), $a).call($b)};
return nil;
} catch ($returner) { if ($returner === Opal.returner) { return $returner.$v } throw $returner; }
};
def.$direction = function() {
var $a, self = this;
return ((($a = self.direction) !== false && $a !== nil) ? $a : self.direction = $scope.get('Direction').$new($hash2(["name"], {"name": self.name})));
};
def.$name = function() {
var $a, self = this;
return ((($a = self.name) !== false && $a !== nil) ? $a : self.$direction().$name());
};
return (def.$synonyms = TMP_3 = function() {var $zuper = $slice.call(arguments, 0);
var self = this, $iter = TMP_3.$$p, $yield = $iter || nil;
TMP_3.$$p = null;
return "" + (Opal.find_super_dispatcher(self, 'synonyms', TMP_3, $iter).apply(self, $zuper)) + " " + (self.direction) + " " + (self.$direction().$synonyms());
}, nil) && 'synonyms';
})($scope.get('Gamefic'), (($scope.get('Gamefic')).$$scope.get('Entity')));
(function($base, $super) {
function $Door(){};
var self = $Door = $klass($base, $super, 'Door', $Door);
var def = self.$$proto, $scope = self.$$scope, TMP_4, TMP_5, TMP_6;
def.name = def.direction = def.lock_key = def.automatic = nil;
self.$include($scope.get('Openable'));
self.$include($scope.get('Lockable'));
self.$serialize("open?", "locked?", "lock_key", "automatic?");
def.$post_initialize = TMP_4 = function() {var $zuper = $slice.call(arguments, 0);
var $a, $b, self = this, $iter = TMP_4.$$p, $yield = $iter || nil, proper_named = nil, rev = nil;
TMP_4.$$p = null;
Opal.find_super_dispatcher(self, 'post_initialize', TMP_4, $iter).apply(self, $zuper);
if ((($a = ($b = self.name['$nil?'](), $b !== false && $b !== nil ?self.direction['$nil?']()['$!']() : $b)) !== nil && (!$a.$$is_boolean || $a == true))) {
proper_named = false;
rev = self.direction.$reverse();
return (($a = ["the " + (self.direction.$adjective()) + " door"]), $b = self, $b['$name='].apply($b, $a), $a[$a.length-1]);
} else {
return nil
};
};
def['$open='] = TMP_5 = function(bool) {var $zuper = $slice.call(arguments, 0);
var $a, $b, self = this, $iter = TMP_5.$$p, $yield = $iter || nil, rev = nil;
TMP_5.$$p = null;
Opal.find_super_dispatcher(self, 'open=', TMP_5, $iter).apply(self, $zuper);
rev = self.$find_reverse();
if ((($a = ($b = rev['$nil?']()['$!'](), $b !== false && $b !== nil ?rev['$open?']()['$=='](bool)['$!']() : $b)) !== nil && (!$a.$$is_boolean || $a == true))) {
return (($a = [bool]), $b = rev, $b['$open='].apply($b, $a), $a[$a.length-1])
} else {
return nil
};
};
def['$locked='] = TMP_6 = function(bool) {var $zuper = $slice.call(arguments, 0);
var $a, $b, self = this, $iter = TMP_6.$$p, $yield = $iter || nil, rev = nil;
TMP_6.$$p = null;
Opal.find_super_dispatcher(self, 'locked=', TMP_6, $iter).apply(self, $zuper);
rev = self.$find_reverse();
if ((($a = ($b = rev['$nil?']()['$!'](), $b !== false && $b !== nil ?rev['$locked?']()['$=='](bool)['$!']() : $b)) !== nil && (!$a.$$is_boolean || $a == true))) {
return (($a = [bool]), $b = rev, $b['$locked='].apply($b, $a), $a[$a.length-1])
} else {
return nil
};
};
def['$automatic='] = function(bool) {
var $a, $b, self = this, rev = nil;
self.automatic = bool;
rev = self.$find_reverse();
if ((($a = ($b = rev['$nil?']()['$!'](), $b !== false && $b !== nil ?rev['$automatic?']()['$=='](bool)['$!']() : $b)) !== nil && (!$a.$$is_boolean || $a == true))) {
return (($a = [bool]), $b = rev, $b['$automatic='].apply($b, $a), $a[$a.length-1])
} else {
return nil
};
};
def.$lock_key = function() {
var self = this;
return self.lock_key;
};
def['$lock_key='] = function(entity) {
var $a, $b, self = this, rev = nil;
self.lock_key = entity;
rev = self.$find_reverse();
if ((($a = ($b = rev['$nil?']()['$!'](), $b !== false && $b !== nil ?rev.$lock_key()['$=='](entity)['$!']() : $b)) !== nil && (!$a.$$is_boolean || $a == true))) {
return (($a = [entity]), $b = rev, $b['$lock_key='].apply($b, $a), $a[$a.length-1])
} else {
return nil
};
};
return (def['$automatic?'] = function() {
var $a, self = this;
return ((($a = self.automatic) !== false && $a !== nil) ? $a : self.automatic = true);
}, nil) && 'automatic?';
})($scope.get('Gamefic'), (($scope.get('Gamefic')).$$scope.get('Portal')));
(function($base, $super) {
function $Fixture(){};
var self = $Fixture = $klass($base, $super, 'Fixture', $Fixture);
var def = self.$$proto, $scope = self.$$scope;
return nil;
})($scope.get('Gamefic'), (($scope.get('Gamefic')).$$scope.get('Thing')));
(function($base, $super) {
function $Item(){};
var self = $Item = $klass($base, $super, 'Item', $Item);
var def = self.$$proto, $scope = self.$$scope;
return (def.$pre_initialize = function() {
var $a, $b, self = this;
return (($a = [true]), $b = self, $b['$portable='].apply($b, $a), $a[$a.length-1]);
}, nil) && 'pre_initialize'
})($scope.get('Gamefic'), (($scope.get('Gamefic')).$$scope.get('Thing')));
(function($base, $super) {
function $Room(){};
var self = $Room = $klass($base, $super, 'Room', $Room);
var def = self.$$proto, $scope = self.$$scope;
def.synonyms = nil;
self.$include($scope.get('Darkenable'));
self.$include($scope.get('ExplicitExits'));
self.$serialize("dark?", "explicit_exits?");
def.$connect = function(destination, direction, type, two_way) {
var $a, $b, self = this, portal = nil, reverse = nil, portal2 = nil;
if (type == null) {
type = $scope.get('Portal')
}
if (two_way == null) {
two_way = true
}
if ((($a = direction['$kind_of?']($scope.get('String'))) !== nil && (!$a.$$is_boolean || $a == true))) {
direction = $scope.get('Direction').$find(direction)};
portal = type.$new(self.$plot(), $hash2(["direction", "parent", "destination"], {"direction": direction, "parent": self, "destination": destination}));
if (type['$==']($scope.get('Portal'))) {
(($a = [true]), $b = portal, $b['$proper_named='].apply($b, $a), $a[$a.length-1])};
if (two_way['$=='](true)) {
reverse = direction.$reverse();
if (reverse['$=='](nil)) {
self.$raise("" + (direction.$name().$cap_first()) + " does not have an opposite direction")};
portal2 = type.$new(self.$plot(), $hash2(["direction", "parent", "destination"], {"direction": reverse, "parent": destination, "destination": self}));
if (type['$==']($scope.get('Portal'))) {
(($a = [true]), $b = portal2, $b['$proper_named='].apply($b, $a), $a[$a.length-1])};};
return portal;
};
def.$synonyms = function() {
var self = this;
return $rb_plus(self.synonyms.$to_s(), " around here room");
};
def.$tell = function(message) {
var $a, $b, TMP_7, self = this;
return ($a = ($b = self.$children()).$each, $a.$$p = (TMP_7 = function(c){var self = TMP_7.$$s || this;
if (c == null) c = nil;
return c.$tell(message)}, TMP_7.$$s = self, TMP_7), $a).call($b);
};
return (def.$find_portal = function(direction) {
var $a, $b, TMP_8, self = this, d = nil, portals = nil;
d = direction.$to_s();
portals = ($a = ($b = self.$children().$that_are($scope.get('Portal'))).$delete_if, $a.$$p = (TMP_8 = function(p){var self = TMP_8.$$s || this;
if (p == null) p = nil;
return p.$direction().$to_s()['$=='](d)['$!']()}, TMP_8.$$s = self, TMP_8), $a).call($b);
return portals['$[]'](0);
}, nil) && 'find_portal';
})($scope.get('Gamefic'), (($scope.get('Gamefic')).$$scope.get('Entity')));
(function($base, $super) {
function $Scenery(){};
var self = $Scenery = $klass($base, $super, 'Scenery', $Scenery);
var def = self.$$proto, $scope = self.$$scope;
return (def.$pre_initialize = function() {
var $a, $b, self = this;
return (($a = [false]), $b = self, $b['$itemized='].apply($b, $a), $a[$a.length-1]);
}, nil) && 'pre_initialize'
})($scope.get('Gamefic'), (($scope.get('Gamefic')).$$scope.get('Thing')));
(function($base, $super) {
function $Rubble(){};
var self = $Rubble = $klass($base, $super, 'Rubble', $Rubble);
var def = self.$$proto, $scope = self.$$scope;
return nil;
})($scope.get('Gamefic'), (($scope.get('Gamefic')).$$scope.get('Scenery')));
(function($base, $super) {
function $Supporter(){};
var self = $Supporter = $klass($base, $super, 'Supporter', $Supporter);
var def = self.$$proto, $scope = self.$$scope;
self.$include($scope.get('Enterable'));
return self.$serialize("enterable?");
})($scope.get('Gamefic'), (($scope.get('Gamefic')).$$scope.get('Thing')));
(function($base, $super) {
function $Character(){};
var self = $Character = $klass($base, $super, 'Character', $Character);
var def = self.$$proto, $scope = self.$$scope;
self.$include($scope.get('ParentRoom'));
self.$include($scope.get('Attachable'));
self.$include($scope.get('Itemizable'));
return self.$serialize("attached?", "itemized?");
})($scope.get('Gamefic'), null);
(function($base) {
var self = $module($base, 'Query');
var def = self.$$proto, $scope = self.$$scope;
(function($base, $super) {
function $Reachable(){};
var self = $Reachable = $klass($base, $super, 'Reachable', $Reachable);
var def = self.$$proto, $scope = self.$$scope, TMP_9;
return (def.$context_from = TMP_9 = function(subject) {var $zuper = $slice.call(arguments, 0);
var $a, $b, TMP_10, self = this, $iter = TMP_9.$$p, $yield = $iter || nil, array = nil;
TMP_9.$$p = null;
array = Opal.find_super_dispatcher(self, 'context_from', TMP_9, $iter).apply(self, $zuper);
if ((($a = ((($b = subject.$parent()['$kind_of?']($scope.get('Container'))) !== false && $b !== nil) ? $b : subject.$parent()['$kind_of?']($scope.get('Supporter')))) !== nil && (!$a.$$is_boolean || $a == true))) {
array.$push(subject.$parent())};
if ((($a = subject.$parent()['$=='](subject.$room())['$!']()) !== nil && (!$a.$$is_boolean || $a == true))) {
array = $rb_plus(array, subject.$room().$children())};
($a = ($b = array).$each, $a.$$p = (TMP_10 = function(thing){var self = TMP_10.$$s || this, $a, $b, TMP_11;
if (thing == null) thing = nil;
if ((($a = thing['$kind_of?']($scope.get('Container'))) !== nil && (!$a.$$is_boolean || $a == true))) {
if ((($a = thing['$open?']()) !== nil && (!$a.$$is_boolean || $a == true))) {
array = $rb_plus(array, thing.$children().$that_are_not("attached?"))}
} else if ((($a = ((($b = thing['$kind_of?']($scope.get('Supporter'))) !== false && $b !== nil) ? $b : thing['$=='](subject))) !== nil && (!$a.$$is_boolean || $a == true))) {
array = $rb_plus(array, thing.$children().$that_are_not("attached?"))};
return ($a = ($b = thing.$children().$that_are("attached?")).$each, $a.$$p = (TMP_11 = function(att){var self = TMP_11.$$s || this, $a, $b, $c;
if (att == null) att = nil;
array.$push(att);
if ((($a = ((($b = att['$kind_of?']($scope.get('Supporter'))) !== false && $b !== nil) ? $b : (($c = att['$kind_of?']($scope.get('Container')), $c !== false && $c !== nil ?att['$open?']() : $c)))) !== nil && (!$a.$$is_boolean || $a == true))) {
return array = $rb_plus(array, att.$children())
} else {
return nil
};}, TMP_11.$$s = self, TMP_11), $a).call($b);}, TMP_10.$$s = self, TMP_10), $a).call($b);
return $rb_minus(array.$uniq(), [subject]);
}, nil) && 'context_from'
})(self, $scope.get('Family'))
})($scope.get('Gamefic'));
(function($base) {
var self = $module($base, 'Use');
var def = self.$$proto, $scope = self.$$scope;
Opal.defs(self, '$reachable', function(args) {
var $a, self = this;
args = $slice.call(arguments, 0);
return ($a = (((($scope.get('Gamefic')).$$scope.get('Query'))).$$scope.get('Reachable'))).$new.apply($a, [].concat(args));
})
})($scope.get('Gamefic'));
(function($base) {
var self = $module($base, 'Query');
var def = self.$$proto, $scope = self.$$scope;
(function($base, $super) {
function $Room(){};
var self = $Room = $klass($base, $super, 'Room', $Room);
var def = self.$$proto, $scope = self.$$scope;
return (def.$context_from = function(subject) {
var self = this;
return [subject.$room()];
}, nil) && 'context_from'
})(self, $scope.get('Parent'))
})($scope.get('Gamefic'));
(function($base) {
var self = $module($base, 'Use');
var def = self.$$proto, $scope = self.$$scope;
Opal.defs(self, '$room', function(args) {
var $a, self = this;
args = $slice.call(arguments, 0);
return ($a = (((($scope.get('Gamefic')).$$scope.get('Query'))).$$scope.get('Room'))).$new.apply($a, [].concat(args));
})
})($scope.get('Gamefic'));
(function($base) {
var self = $module($base, 'Query');
var def = self.$$proto, $scope = self.$$scope;
(function($base, $super) {
function $Visible(){};
var self = $Visible = $klass($base, $super, 'Visible', $Visible);
var def = self.$$proto, $scope = self.$$scope, TMP_12;
def.$base_specificity = function() {
var self = this;
return 40;
};
return (def.$context_from = TMP_12 = function(subject) {var $zuper = $slice.call(arguments, 0);
var $a, $b, TMP_13, self = this, $iter = TMP_12.$$p, $yield = $iter || nil, array = nil;
TMP_12.$$p = null;
array = Opal.find_super_dispatcher(self, 'context_from', TMP_12, $iter).apply(self, $zuper);
array = $rb_plus(array, subject.$room().$children());
array['$uniq!']();
($a = ($b = array).$each, $a.$$p = (TMP_13 = function(thing){var self = TMP_13.$$s || this, $a, $b, TMP_14;
if (thing == null) thing = nil;
if ((($a = thing['$kind_of?']($scope.get('Container'))) !== nil && (!$a.$$is_boolean || $a == true))) {
if ((($a = ((($b = thing['$open?']()) !== false && $b !== nil) ? $b : thing['$transparent?']())) !== nil && (!$a.$$is_boolean || $a == true))) {
array = $rb_plus(array, thing.$children().$that_are_not("attached?"))}
} else if ((($a = thing['$kind_of?']($scope.get('Supporter'))) !== nil && (!$a.$$is_boolean || $a == true))) {
array = $rb_plus(array, thing.$children().$that_are_not("attached?"))};
return ($a = ($b = thing.$children().$that_are("attached?")).$each, $a.$$p = (TMP_14 = function(att){var self = TMP_14.$$s || this, $a, $b, $c, $d;
if (att == null) att = nil;
array.$push(att);
if ((($a = ((($b = att['$kind_of?']($scope.get('Supporter'))) !== false && $b !== nil) ? $b : (($c = att['$kind_of?']($scope.get('Container')), $c !== false && $c !== nil ?(((($d = att['$open?']()) !== false && $d !== nil) ? $d : att['$transparent?']())) : $c)))) !== nil && (!$a.$$is_boolean || $a == true))) {
return array = $rb_plus(array, att.$children().$that_are_not("attached?"))
} else {
return nil
};}, TMP_14.$$s = self, TMP_14), $a).call($b);}, TMP_13.$$s = self, TMP_13), $a).call($b);
return $rb_minus(array, [subject]);
}, nil) && 'context_from';
})(self, $scope.get('Family'))
})($scope.get('Gamefic'));
(function($base) {
var self = $module($base, 'Use');
var def = self.$$proto, $scope = self.$$scope;
Opal.defs(self, '$visible', function(args) {
var $a, self = this;
args = $slice.call(arguments, 0);
return ($a = (((($scope.get('Gamefic')).$$scope.get('Query'))).$$scope.get('Visible'))).$new.apply($a, [].concat(args));
})
})($scope.get('Gamefic'));
($a = ($b = self).$respond, $a.$$p = (TMP_15 = function(actor){var self = TMP_15.$$s || this;
if (actor == null) actor = nil;
return actor.$tell("Time passes.")}, TMP_15.$$s = self, TMP_15), $a).call($b, "wait");
($a = ($c = self).$respond, $a.$$p = (TMP_16 = function(actor){var self = TMP_16.$$s || this;
if (actor == null) actor = nil;
return actor.$tell("You talk to yourself.")}, TMP_16.$$s = self, TMP_16), $a).call($c, "talk");
($a = ($d = self).$respond, $a.$$p = (TMP_17 = function(actor, yourself){var self = TMP_17.$$s || this;
if (actor == null) actor = nil;if (yourself == null) yourself = nil;
return actor.$perform("talk")}, TMP_17.$$s = self, TMP_17), $a).call($d, "talk", (($scope.get('Query')).$$scope.get('Self')).$new());
($a = ($e = self).$respond, $a.$$p = (TMP_18 = function(actor, thing){var self = TMP_18.$$s || this;
if (actor == null) actor = nil;if (thing == null) thing = nil;
return actor.$tell("Nothing happens.")}, TMP_18.$$s = self, TMP_18), $a).call($e, "talk", (($scope.get('Query')).$$scope.get('Reachable')).$new());
($a = ($f = self).$respond, $a.$$p = (TMP_19 = function(actor, character){var self = TMP_19.$$s || this;
if (actor == null) actor = nil;if (character == null) character = nil;
if (actor['$=='](character)) {
return actor.$perform("talk")
} else {
return actor.$tell("" + (self.$The(character)) + " has nothing to say.")
}}, TMP_19.$$s = self, TMP_19), $a).call($f, "talk", (($scope.get('Query')).$$scope.get('Reachable')).$new($scope.get('Character')));
($a = ($g = self).$respond, $a.$$p = (TMP_20 = function(actor, character, text){var self = TMP_20.$$s || this;
if (actor == null) actor = nil;if (character == null) character = nil;if (text == null) text = nil;
return actor.$perform("talk", character)}, TMP_20.$$s = self, TMP_20), $a).call($g, "talk", (($scope.get('Query')).$$scope.get('Reachable')).$new($scope.get('Character')), (($scope.get('Query')).$$scope.get('Text')).$new());
self.$xlate("talk to :character", "talk :character");
self.$xlate("talk to :character about :subject", "talk :character :subject");
self.$xlate("ask :character :subject", "talk :character :subject");
self.$xlate("ask :character about :subject", "talk :character :subject");
self.$xlate("tell :character :subject", "talk :character :subject");
self.$xlate("tell :character about :subject", "talk :character :subject");
self.$xlate("ask :character for :subject", "talk :character :subject");
($a = ($h = self).$respond, $a.$$p = (TMP_21 = function(actor, thing){var self = TMP_21.$$s || this;
if (actor == null) actor = nil;if (thing == null) thing = nil;
return actor.$perform("look", thing)}, TMP_21.$$s = self, TMP_21), $a).call($h, "read", (($scope.get('Query')).$$scope.get('Visible')).$new());
($a = ($i = self).$yes_or_no, $a.$$p = (TMP_22 = function(actor, data){var self = TMP_22.$$s || this;
if (actor == null) actor = nil;if (data == null) data = nil;
if (data.$answer()['$==']("yes")) {
return self.$cue(actor, "concluded")
} else {
return self.$cue(actor, "active")
}}, TMP_22.$$s = self, TMP_22), $a).call($i, "confirm_quit", "Are you sure you want to quit?");
($a = ($j = self).$meta, $a.$$p = (TMP_23 = function(actor){var self = TMP_23.$$s || this;
if (actor == null) actor = nil;
return self.$cue(actor, "confirm_quit")}, TMP_23.$$s = self, TMP_23), $a).call($j, "quit");
($a = ($k = self).$respond, $a.$$p = (TMP_24 = function(actor, thing){var self = TMP_24.$$s || this;
if (actor == null) actor = nil;if (thing == null) thing = nil;
return actor.$tell("There's nothing to see under " + (self.$the(thing)) + ".")}, TMP_24.$$s = self, TMP_24), $a).call($k, "look_under", (($scope.get('Query')).$$scope.get('Reachable')).$new());
($a = ($l = self).$respond, $a.$$p = (TMP_25 = function(actor){var self = TMP_25.$$s || this;
if (actor == null) actor = nil;
if ($rb_gt(actor.$children().$length(), 0)) {
return actor.$tell("You are carrying " + (actor.$children().$join_and()) + ".")
} else {
return actor.$tell("You aren't carrying anything.")
}}, TMP_25.$$s = self, TMP_25), $a).call($l, "inventory");
self.$xlate("i", "inventory");
($a = ($m = self).$respond, $a.$$p = (TMP_26 = function(actor, character, gift){var self = TMP_26.$$s || this, $a;
if (actor == null) actor = nil;if (character == null) character = nil;if (gift == null) gift = nil;
if ((($a = gift.$parent()['$=='](actor)['$!']()) !== nil && (!$a.$$is_boolean || $a == true))) {
actor.$perform("take", gift)};
if (gift.$parent()['$=='](actor)) {
return actor.$perform("give", character, gift)
} else {
return nil
};}, TMP_26.$$s = self, TMP_26), $a).call($m, "give", (($scope.get('Query')).$$scope.get('Reachable')).$new($scope.get('Character')), (($scope.get('Query')).$$scope.get('Reachable')).$new());
($a = ($n = self).$respond, $a.$$p = (TMP_27 = function(actor, character, gift){var self = TMP_27.$$s || this;
if (actor == null) actor = nil;if (character == null) character = nil;if (gift == null) gift = nil;
return actor.$tell("Nothing happens.")}, TMP_27.$$s = self, TMP_27), $a).call($n, "give", (($scope.get('Query')).$$scope.get('Reachable')).$new(), (($scope.get('Query')).$$scope.get('Children')).$new());
($a = ($o = self).$respond, $a.$$p = (TMP_28 = function(actor, character, gift){var self = TMP_28.$$s || this;
if (actor == null) actor = nil;if (character == null) character = nil;if (gift == null) gift = nil;
return actor.$tell("You don't have " + (self.$the(gift)) + ".")}, TMP_28.$$s = self, TMP_28), $a).call($o, "give", (($scope.get('Query')).$$scope.get('Reachable')).$new(), (($scope.get('Query')).$$scope.get('Reachable')).$new());
($a = ($p = self).$respond, $a.$$p = (TMP_29 = function(actor, character, gift){var self = TMP_29.$$s || this;
if (actor == null) actor = nil;if (character == null) character = nil;if (gift == null) gift = nil;
return actor.$tell("" + (self.$The(character)) + " doesn't want " + (self.$the(gift)) + ".")}, TMP_29.$$s = self, TMP_29), $a).call($p, "give", (($scope.get('Query')).$$scope.get('Reachable')).$new($scope.get('Character')), (($scope.get('Query')).$$scope.get('Children')).$new());
($a = ($q = self).$respond, $a.$$p = (TMP_30 = function(actor, character, gift){var self = TMP_30.$$s || this;
if (actor == null) actor = nil;if (character == null) character = nil;if (gift == null) gift = nil;
return actor.$tell("You don't see any \"" + (character) + "\" here.")}, TMP_30.$$s = self, TMP_30), $a).call($q, "give", (($scope.get('Query')).$$scope.get('Text')).$new(), (($scope.get('Query')).$$scope.get('Children')).$new());
self.$xlate("give :gift to :character", "give :character :gift");
($a = ($r = self).$respond, $a.$$p = (TMP_31 = function(actor, thing){var self = TMP_31.$$s || this;
if (actor == null) actor = nil;if (thing == null) thing = nil;
return actor.$tell("You're not carrying " + (self.$the(thing)) + ".")}, TMP_31.$$s = self, TMP_31), $a).call($r, "drop", (($scope.get('Query')).$$scope.get('Visible')).$new());
($a = ($s = self).$respond, $a.$$p = (TMP_32 = function(actor, thing){var self = TMP_32.$$s || this, $a, $b;
if (actor == null) actor = nil;if (thing == null) thing = nil;
(($a = [actor.$parent()]), $b = thing, $b['$parent='].apply($b, $a), $a[$a.length-1]);
return actor.$tell("You drop " + (self.$the(thing)) + ".");}, TMP_32.$$s = self, TMP_32), $a).call($s, "drop", (($scope.get('Query')).$$scope.get('Children')).$new());
self.$xlate("put down :thing", "drop :thing");
self.$xlate("put :thing down", "drop :thing");
($a = ($t = self).$respond, $a.$$p = (TMP_33 = function(actor, string){var self = TMP_33.$$s || this;
if (actor == null) actor = nil;if (string == null) string = nil;
return actor.$tell("You don't see any \"" + (string) + "\" here.")}, TMP_33.$$s = self, TMP_33), $a).call($t, "close", (($scope.get('Query')).$$scope.get('Text')).$new());
($a = ($u = self).$respond, $a.$$p = (TMP_34 = function(actor, thing){var self = TMP_34.$$s || this;
if (actor == null) actor = nil;if (thing == null) thing = nil;
return actor.$tell("You can't close " + (self.$the(thing)) + ".")}, TMP_34.$$s = self, TMP_34), $a).call($u, "close", (($scope.get('Query')).$$scope.get('Reachable')).$new());
($a = ($v = self).$respond, $a.$$p = (TMP_35 = function(actor, container){var self = TMP_35.$$s || this, $a, $b;
if (actor == null) actor = nil;if (container == null) container = nil;
if ((($a = container['$open?']()['$!']()) !== nil && (!$a.$$is_boolean || $a == true))) {
return actor.$tell("It's already closed.")
} else {
actor.$tell("You close " + (self.$the(container)) + ".");
return (($a = [false]), $b = container, $b['$open='].apply($b, $a), $a[$a.length-1]);
}}, TMP_35.$$s = self, TMP_35), $a).call($v, "close", (($scope.get('Query')).$$scope.get('Reachable')).$new($scope.get('Openable')));
($a = ($w = self).$respond, $a.$$p = (TMP_36 = function(actor, supporter){var self = TMP_36.$$s || this, $a, $b;
if (actor == null) actor = nil;if (supporter == null) supporter = nil;
(($a = [supporter]), $b = actor, $b['$parent='].apply($b, $a), $a[$a.length-1]);
return actor.$tell("You get on " + (self.$the(supporter)) + ".");}, TMP_36.$$s = self, TMP_36), $a).call($w, "enter", (($scope.get('Query')).$$scope.get('Siblings')).$new($scope.get('Supporter'), "enterable?"));
($a = ($x = self).$respond, $a.$$p = (TMP_37 = function(actor, container){var self = TMP_37.$$s || this, $a, $b;
if (actor == null) actor = nil;if (container == null) container = nil;
(($a = [container]), $b = actor, $b['$parent='].apply($b, $a), $a[$a.length-1]);
return actor.$tell("You get in " + (self.$the(container)) + ".");}, TMP_37.$$s = self, TMP_37), $a).call($x, "enter", (($scope.get('Query')).$$scope.get('Siblings')).$new($scope.get('Container'), "enterable?"));
($a = ($y = self).$respond, $a.$$p = (TMP_38 = function(actor, thing){var self = TMP_38.$$s || this;
if (actor == null) actor = nil;if (thing == null) thing = nil;
return actor.$tell("" + (self.$The(thing)) + " can't accommodate you.")}, TMP_38.$$s = self, TMP_38), $a).call($y, "enter", (($scope.get('Query')).$$scope.get('Siblings')).$new($scope.get('Thing')));
($a = ($z = self).$respond, $a.$$p = (TMP_39 = function(actor, container){var self = TMP_39.$$s || this;
if (actor == null) actor = nil;if (container == null) container = nil;
return actor.$tell("You're already in " + (self.$the(container)) + ".")}, TMP_39.$$s = self, TMP_39), $a).call($z, "enter", $scope.get('Use').$parent());
($a = ($aa = self).$respond, $a.$$p = (TMP_40 = function(actor, supporter){var self = TMP_40.$$s || this;
if (actor == null) actor = nil;if (supporter == null) supporter = nil;
return actor.$tell("You're already on " + (self.$the(supporter)) + ".")}, TMP_40.$$s = self, TMP_40), $a).call($aa, "enter", $scope.get('Use').$parent($scope.get('Supporter')));
($a = ($ab = self).$respond, $a.$$p = (TMP_41 = function(actor, text){var self = TMP_41.$$s || this;
if (actor == null) actor = nil;if (text == null) text = nil;
return actor.$tell("You don't see any \"" + (text) + "\" here.")}, TMP_41.$$s = self, TMP_41), $a).call($ab, "enter", $scope.get('Use').$text());
($a = ($ac = self).$respond, $a.$$p = (TMP_42 = function(actor){var self = TMP_42.$$s || this, supporters = nil;
if (actor == null) actor = nil;
supporters = actor.$room().$children().$that_are($scope.get('Supporter')).$that_are("enterable");
if (supporters.$length()['$=='](1)) {
return actor.$perform("enter", supporters['$[]'](0))
} else if ($rb_gt(supporters.$length(), 1)) {
return actor.$tell("I don't know where you want to sit: " + (supporters.$join_and(", ", " or ")) + ".")
} else {
return actor.$tell("There's nowhere to sit here.")
};}, TMP_42.$$s = self, TMP_42), $a).call($ac, "sit");
self.$xlate("sit :thing", "enter :thing");
self.$xlate("sit on :thing", "enter :thing");
self.$xlate("get on :thing", "enter :thing");
self.$xlate("get in :thing", "enter :thing");
self.$xlate("stand on :thing", "enter :thing");
self.$xlate("sit down", "sit");
($a = ($ad = self).$respond, $a.$$p = (TMP_43 = function(actor, portal){var self = TMP_43.$$s || this, $a, $b;
if (actor == null) actor = nil;if (portal == null) portal = nil;
if ((($a = actor.$parent()['$=='](actor.$room())['$!']()) !== nil && (!$a.$$is_boolean || $a == true))) {
actor.$perform("leave")};
if (actor.$parent()['$=='](actor.$room())) {
if ((($a = portal.$destination()['$nil?']()) !== nil && (!$a.$$is_boolean || $a == true))) {
return actor.$tell("That portal leads nowhere.")
} else {
(($a = [portal.$destination()]), $b = actor, $b['$parent='].apply($b, $a), $a[$a.length-1]);
actor.$tell("You go " + (portal.$direction()) + ".");
return actor.$perform("look", actor.$room());
}
} else {
return nil
};}, TMP_43.$$s = self, TMP_43), $a).call($ad, "go", (($scope.get('Query')).$$scope.get('Reachable')).$new($scope.get('Portal')));
($a = ($ae = self).$respond, $a.$$p = (TMP_44 = function(actor, door){var self = TMP_44.$$s || this;
if (actor == null) actor = nil;if (door == null) door = nil;
return actor.$tell("" + (self.$The(door)) + " is locked.")}, TMP_44.$$s = self, TMP_44), $a).call($ae, "go", (($scope.get('Query')).$$scope.get('Reachable')).$new($scope.get('Door'), "locked?"));
($a = ($af = self).$respond, $a.$$p = (TMP_45 = function(actor, door){var self = TMP_45.$$s || this, $a;
if (actor == null) actor = nil;if (door == null) door = nil;
if ((($a = door['$automatic?']()) !== nil && (!$a.$$is_boolean || $a == true))) {
actor.$perform("open", door);
if ((($a = door['$open?']()) !== nil && (!$a.$$is_boolean || $a == true))) {
return actor.$proceed()
} else {
return nil
};
} else {
return actor.$tell("" + (self.$The(door)) + " is closed.")
}}, TMP_45.$$s = self, TMP_45), $a).call($af, "go", (($scope.get('Query')).$$scope.get('Reachable')).$new($scope.get('Door'), "closed?"));
($a = ($ag = self).$respond, $a.$$p = (TMP_46 = function(actor, string){var self = TMP_46.$$s || this;
if (actor == null) actor = nil;if (string == null) string = nil;
return actor.$tell("You don't see any exit \"" + (string) + "\" from here.")}, TMP_46.$$s = self, TMP_46), $a).call($ag, "go", (($scope.get('Query')).$$scope.get('Text')).$new());
($a = ($ah = self).$respond, $a.$$p = (TMP_47 = function(actor, text){var self = TMP_47.$$s || this, $a, $b, TMP_48, portals = nil, destinations = nil, d_map = nil, matches = nil;
if (actor == null) actor = nil;if (text == null) text = nil;
portals = actor.$room().$children().$that_are($scope.get('Portal'));
destinations = [];
d_map = $hash2([], {});
($a = ($b = portals).$each, $a.$$p = (TMP_48 = function(portal){var self = TMP_48.$$s || this, $a;
if (portal == null) portal = nil;
if ((($a = portal.$destination()['$nil?']()) !== nil && (!$a.$$is_boolean || $a == true))) {
return nil;};
destinations.$push(portal.$destination());
return d_map['$[]='](portal.$destination(), portal);}, TMP_48.$$s = self, TMP_48), $a).call($b);
matches = (($scope.get('Query')).$$scope.get('Base')).$new().$execute(destinations, text);
if (matches.$objects().$length()['$=='](1)) {
return actor.$perform("go", d_map['$[]'](matches.$objects()['$[]'](0)))
} else {
return actor.$proceed()
};}, TMP_47.$$s = self, TMP_47), $a).call($ah, "go", $scope.get('Use').$text());
($a = ($ai = self).$respond, $a.$$p = (TMP_49 = function(actor){var self = TMP_49.$$s || this;
if (actor == null) actor = nil;
return actor.$tell("Where do you want to go?")}, TMP_49.$$s = self, TMP_49), $a).call($ai, "go");
self.$xlate("north", "go north");
self.$xlate("south", "go south");
self.$xlate("west", "go west");
self.$xlate("east", "go east");
self.$xlate("up", "go up");
self.$xlate("down", "go down");
self.$xlate("northwest", "go northwest");
self.$xlate("northeast", "go northeast");
self.$xlate("southwest", "go southwest");
self.$xlate("southeast", "go southeast");
self.$xlate("n", "go north");
self.$xlate("s", "go south");
self.$xlate("w", "go west");
self.$xlate("e", "go east");
self.$xlate("u", "go up");
self.$xlate("d", "go down");
self.$xlate("nw", "go northwest");
self.$xlate("ne", "go northeast");
self.$xlate("sw", "go southwest");
self.$xlate("se", "go southeast");
($a = ($aj = self).$respond, $a.$$p = (TMP_50 = function(actor, thing, target){var self = TMP_50.$$s || this;
if (actor == null) actor = nil;if (thing == null) thing = nil;if (target == null) target = nil;
return actor.$tell("You can't put " + (self.$the(thing)) + " inside " + (self.$the(target)) + ".")}, TMP_50.$$s = self, TMP_50), $a).call($aj, "insert", $scope.get('Use').$children(), $scope.get('Use').$reachable());
($a = ($ak = self).$respond, $a.$$p = (TMP_51 = function(actor, thing, container){var self = TMP_51.$$s || this, $a;
if (actor == null) actor = nil;if (thing == null) thing = nil;if (container == null) container = nil;
if ((($a = thing.$parent()['$=='](actor)['$!']()) !== nil && (!$a.$$is_boolean || $a == true))) {
actor.$perform("take", thing)};
if (thing.$parent()['$=='](actor)) {
return actor.$perform("drop_in", thing, container)
} else {
return nil
};}, TMP_51.$$s = self, TMP_51), $a).call($ak, "insert", $scope.get('Use').$visible(), $scope.get('Use').$reachable($scope.get('Container')));
($a = ($al = self).$respond, $a.$$p = (TMP_52 = function(actor, thing, container){var self = TMP_52.$$s || this, $a, $b;
if (actor == null) actor = nil;if (thing == null) thing = nil;if (container == null) container = nil;
if ((($a = container['$open?']()['$!']()) !== nil && (!$a.$$is_boolean || $a == true))) {
return actor.$tell("" + (self.$The(container)) + " is closed.")
} else {
(($a = [container]), $b = thing, $b['$parent='].apply($b, $a), $a[$a.length-1]);
return actor.$tell("You put " + (self.$the(thing)) + " in " + (self.$the(container)) + ".");
}}, TMP_52.$$s = self, TMP_52), $a).call($al, "insert", $scope.get('Use').$children(), $scope.get('Use').$reachable($scope.get('Container')));
($a = ($am = self).$respond, $a.$$p = (TMP_53 = function(actor, thing, container){var self = TMP_53.$$s || this;
if (actor == null) actor = nil;if (thing == null) thing = nil;if (container == null) container = nil;
return actor.$tell("You don't see anything called \"" + (container) + "\" here.")}, TMP_53.$$s = self, TMP_53), $a).call($am, "insert", $scope.get('Use').$visible(), $scope.get('Use').$text());
($a = ($an = self).$respond, $a.$$p = (TMP_54 = function(actor, thing, container){var self = TMP_54.$$s || this;
if (actor == null) actor = nil;if (thing == null) thing = nil;if (container == null) container = nil;
return actor.$tell("You don't see anything called \"" + (thing) + "\" here.")}, TMP_54.$$s = self, TMP_54), $a).call($an, "insert", $scope.get('Use').$text(), $scope.get('Use').$visible());
($a = ($ao = self).$respond, $a.$$p = (TMP_55 = function(actor, thing, container){var self = TMP_55.$$s || this;
if (actor == null) actor = nil;if (thing == null) thing = nil;if (container == null) container = nil;
return actor.$tell("I don't know what you mean by \"" + (thing) + "\" or \"" + (container) + ".\"")}, TMP_55.$$s = self, TMP_55), $a).call($ao, "insert", $scope.get('Use').$text(), $scope.get('Use').$text());
self.$xlate("drop :item in :container", "insert :item :container");
self.$xlate("put :item in :container", "insert :item :container");
self.$xlate("place :item in :container", "insert :item :container");
($a = ($ap = self).$respond, $a.$$p = (TMP_56 = function(actor, supporter){var self = TMP_56.$$s || this, $a, $b;
if (actor == null) actor = nil;if (supporter == null) supporter = nil;
(($a = [supporter.$parent()]), $b = actor, $b['$parent='].apply($b, $a), $a[$a.length-1]);
return actor.$tell("You get off " + (self.$the(supporter)) + ".");}, TMP_56.$$s = self, TMP_56), $a).call($ap, "leave", (($scope.get('Query')).$$scope.get('Parent')).$new($scope.get('Supporter')));
($a = ($aq = self).$respond, $a.$$p = (TMP_57 = function(actor, supporter){var self = TMP_57.$$s || this, $a, $b;
if (actor == null) actor = nil;if (supporter == null) supporter = nil;
(($a = [supporter.$parent()]), $b = actor, $b['$parent='].apply($b, $a), $a[$a.length-1]);
return actor.$tell("You get out of " + (self.$the(supporter)) + ".");}, TMP_57.$$s = self, TMP_57), $a).call($aq, "leave", (($scope.get('Query')).$$scope.get('Parent')).$new($scope.get('Container')));
($a = ($ar = self).$respond, $a.$$p = (TMP_58 = function(actor, room){var self = TMP_58.$$s || this, portals = nil;
if (actor == null) actor = nil;if (room == null) room = nil;
portals = room.$children().$that_are($scope.get('Portal'));
if (portals.$length()['$=='](0)) {
return actor.$tell("You don't see any obvious exits.")
} else if (portals.$length()['$=='](1)) {
return actor.$perform("go", portals['$[]'](0))
} else {
return actor.$tell("I don't know which way you want to go: " + (portals.$join_and(", ", " or ")) + ".")
};}, TMP_58.$$s = self, TMP_58), $a).call($ar, "leave", (($scope.get('Query')).$$scope.get('Parent')).$new($scope.get('Room')));
($a = ($as = self).$respond, $a.$$p = (TMP_59 = function(actor){var self = TMP_59.$$s || this;
if (actor == null) actor = nil;
return actor.$perform("leave", actor.$parent())}, TMP_59.$$s = self, TMP_59), $a).call($as, "leave");
self.$xlate("exit", "leave");
self.$xlate("exit :supporter", "leave :supporter");
self.$xlate("get off :supporter", "leave :supporter");
self.$xlate("get up from :supporter", "leave :supporter");
self.$xlate("get up", "leave");
self.$xlate("stand", "leave");
self.$xlate("stand up", "leave");
self.$xlate("get off", "leave");
self.$xlate("get out :container", "leave :container");
self.$xlate("get out of :container", "leave :container");
($a = ($at = self).$respond, $a.$$p = (TMP_60 = function(actor, string){var self = TMP_60.$$s || this;
if (actor == null) actor = nil;if (string == null) string = nil;
return actor.$tell("You don't see any \"" + (string) + "\" here.")}, TMP_60.$$s = self, TMP_60), $a).call($at, "lock", (($scope.get('Query')).$$scope.get('Text')).$new());
($a = ($au = self).$respond, $a.$$p = (TMP_61 = function(actor, thing){var self = TMP_61.$$s || this;
if (actor == null) actor = nil;if (thing == null) thing = nil;
return actor.$tell("You can't lock " + (self.$the(thing)) + ".")}, TMP_61.$$s = self, TMP_61), $a).call($au, "lock", (($scope.get('Query')).$$scope.get('Reachable')).$new());
($a = ($av = self).$respond, $a.$$p = (TMP_62 = function(actor, container){var self = TMP_62.$$s || this, $a, $b, key = nil;
if (actor == null) actor = nil;if (container == null) container = nil;
if ((($a = ($b = container['$portable?'](), $b !== false && $b !== nil ?container.$parent()['$=='](actor)['$!']() : $b)) !== nil && (!$a.$$is_boolean || $a == true))) {
actor.$perform("take", container);
if ((($a = container.$parent()['$=='](actor)['$!']()) !== nil && (!$a.$$is_boolean || $a == true))) {
return ($breaker.$v = nil, $breaker)};};
if ((($a = container['$locked?']()) !== nil && (!$a.$$is_boolean || $a == true))) {
return actor.$tell("It's already locked.")
} else {
key = nil;
if (container.$lock_key()['$nil?']()['$=='](false)) {
if (container.$lock_key().$parent()['$=='](actor)) {
key = container.$lock_key()}};
if ((($a = key['$nil?']()) !== nil && (!$a.$$is_boolean || $a == true))) {
return actor.$tell("You don't have any way to lock " + (self.$the(container)) + ".")
} else {
actor.$tell("You lock " + (self.$the(container)) + " with " + (self.$the(key)) + ".");
return (($a = [true]), $b = container, $b['$locked='].apply($b, $a), $a[$a.length-1]);
};
};}, TMP_62.$$s = self, TMP_62), $a).call($av, "lock", (($scope.get('Query')).$$scope.get('Reachable')).$new($scope.get('Lockable'), "has_lock_key?"));
($a = ($aw = self).$respond, $a.$$p = (TMP_63 = function(actor, container, key){var self = TMP_63.$$s || this, $a, $b;
if (actor == null) actor = nil;if (container == null) container = nil;if (key == null) key = nil;
if (container.$locked()['$=='](false)) {
if (container.$lock_key()['$=='](key)) {
actor.$tell("You lock " + (self.$the(container)) + " with " + (self.$the(key)) + ".");
return (($a = [true]), $b = container, $b['$locked='].apply($b, $a), $a[$a.length-1]);
} else {
return actor.$tell("You can't lock " + (self.$the(container)) + " with " + (self.$the(key)) + ".")
}
} else {
return actor.$tell("It's already locked.")
}}, TMP_63.$$s = self, TMP_63), $a).call($aw, "lock", (($scope.get('Query')).$$scope.get('Reachable')).$new($scope.get('Lockable'), "has_lock_key?"), (($scope.get('Query')).$$scope.get('Children')).$new());
self.$xlate("lock :container with :key", "lock :container :key");
($a = ($ax = self).$respond, $a.$$p = (TMP_64 = function(actor, supporter){var self = TMP_64.$$s || this;
if (actor == null) actor = nil;if (supporter == null) supporter = nil;
actor.$tell(supporter.$description());
return actor.$tell("You are currently on " + (self.$the(supporter)) + ".");}, TMP_64.$$s = self, TMP_64), $a).call($ax, "look", $scope.get('Use').$parent($scope.get('Supporter')));
($a = ($ay = self).$respond, $a.$$p = (TMP_65 = function(actor, _){var self = TMP_65.$$s || this;
if (actor == null) actor = nil;if (_ == null) _ = nil;
return actor.$tell(actor.$description())}, TMP_65.$$s = self, TMP_65), $a).call($ay, "look", (($scope.get('Query')).$$scope.get('Self')).$new());
($a = ($az = self).$respond, $a.$$p = (TMP_66 = function(actor, room){var self = TMP_66.$$s || this, $a, $b, TMP_67, $c, TMP_68, $d, TMP_69, $e, TMP_70, $f, TMP_71, with_locales = nil, chars = nil, charsum = nil, items = nil, itemsum = nil, portals = nil, dirs = nil;
if (actor == null) actor = nil;if (room == null) room = nil;
actor.$tell("" + (room.$name().$cap_first()) + "");
actor.$tell(room.$description());
with_locales = [];
chars = $rb_minus(room.$children().$that_are($scope.get('Character')).$that_are("itemized?"), [actor]);
charsum = [];
($a = ($b = chars).$each, $a.$$p = (TMP_67 = function(char$){var self = TMP_67.$$s || this, $a;
if (char$ == null) char$ = nil;
if ((($a = char$.$locale_description()['$==']("")['$!']()) !== nil && (!$a.$$is_boolean || $a == true))) {
return with_locales.$push(char$)
} else {
return charsum.$push(char$)
}}, TMP_67.$$s = self, TMP_67), $a).call($b);
if ($rb_gt(charsum.$length(), 0)) {
actor.$tell("" + (charsum.$join_and().$cap_first()) + " " + ((function() {if (charsum.$length()['$=='](1)) {
return "is"
} else {
return "are"
}; return nil; })()) + " here.")};
items = $rb_minus($rb_minus($rb_minus(room.$children().$that_are("itemized?"), [actor]), room.$children().$that_are($scope.get('Character'))), room.$children().$that_are($scope.get('Portal')));
itemsum = [];
($a = ($c = items).$each, $a.$$p = (TMP_68 = function(item){var self = TMP_68.$$s || this, $a;
if (item == null) item = nil;
if ((($a = item.$locale_description()['$==']("")['$!']()) !== nil && (!$a.$$is_boolean || $a == true))) {
return with_locales.$push(item)
} else {
return itemsum.$push(item)
}}, TMP_68.$$s = self, TMP_68), $a).call($c);
if ($rb_gt(itemsum.$length(), 0)) {
actor.$tell("You see " + (itemsum.$join_and()) + ".")};
($a = ($d = with_locales).$each, $a.$$p = (TMP_69 = function(entity){var self = TMP_69.$$s || this;
if (entity == null) entity = nil;
return actor.$tell(entity.$locale_description())}, TMP_69.$$s = self, TMP_69), $a).call($d);
if ((($a = room['$explicit_exits?']()) !== nil && (!$a.$$is_boolean || $a == true))) {
portals = room.$children().$that_are($scope.get('Portal')).$that_are("itemized?");
if ($rb_gt(portals.$length(), 0)) {
if (portals.$length()['$=='](1)) {
actor.$tell("There is an exit " + (portals['$[]'](0).$direction()) + ".")
} else {
dirs = [];
($a = ($e = portals).$each, $a.$$p = (TMP_70 = function(p){var self = TMP_70.$$s || this;
if (p == null) p = nil;
return dirs.$push(p.$direction())}, TMP_70.$$s = self, TMP_70), $a).call($e);
actor.$tell("There are exits " + (dirs.$join_and(", ")) + ".");
}};};
if ((($a = actor.$parent()['$kind_of?']($scope.get('Supporter'))) !== nil && (!$a.$$is_boolean || $a == true))) {
actor.$tell("You are on " + (self.$the(actor.$parent())) + ".");
return ($a = ($f = actor.$parent().$children().$that_are_not(actor)).$each, $a.$$p = (TMP_71 = function(s){var self = TMP_71.$$s || this;
if (s == null) s = nil;
return actor.$tell("" + (self.$A(s)) + " is on " + (self.$the(actor.$parent())) + ".")}, TMP_71.$$s = self, TMP_71), $a).call($f);
} else {
return nil
};}, TMP_66.$$s = self, TMP_66), $a).call($az, "look", (($scope.get('Query')).$$scope.get('Room')).$new($scope.get('Room')));
self.$xlate("look", "look around");
self.$xlate("l", "look around");
($a = ($ba = self).$respond, $a.$$p = (TMP_72 = function(actor, thing){var self = TMP_72.$$s || this, $a, $b, TMP_73;
if (actor == null) actor = nil;if (thing == null) thing = nil;
actor.$tell(thing.$description());
return ($a = ($b = thing.$children().$that_are("attached?").$that_are("itemized?")).$each, $a.$$p = (TMP_73 = function(item){var self = TMP_73.$$s || this;
if (item == null) item = nil;
return actor.$tell("" + (self.$An(item)) + " is attached to " + (self.$the(thing)) + ".")}, TMP_73.$$s = self, TMP_73), $a).call($b);}, TMP_72.$$s = self, TMP_72), $a).call($ba, "look", (($scope.get('Query')).$$scope.get('Visible')).$new());
($a = ($bb = self).$respond, $a.$$p = (TMP_74 = function(actor, string){var self = TMP_74.$$s || this;
if (actor == null) actor = nil;if (string == null) string = nil;
return actor.$tell("You don't see any \"" + (string) + "\" here.")}, TMP_74.$$s = self, TMP_74), $a).call($bb, "look", $scope.get('Use').$text());
($a = ($bc = self).$respond, $a.$$p = (TMP_75 = function(actor, container){var self = TMP_75.$$s || this, $a, contents = nil;
if (actor == null) actor = nil;if (container == null) container = nil;
if ((($a = container['$has_description?']()) !== nil && (!$a.$$is_boolean || $a == true))) {
actor.$tell(container.$description())};
if ((($a = container['$open?']()) !== nil && (!$a.$$is_boolean || $a == true))) {
contents = container.$children().$that_are_not("attached?");
if ($rb_gt(contents.$length(), 0)) {
return actor.$tell("You see " + (contents.$join_and()) + " inside " + (self.$the(container)) + ".")
} else {
return actor.$tell("" + (self.$The(container)) + " is empty.")
};
} else {
return actor.$tell("" + (self.$The(container)) + " is closed.")
};}, TMP_75.$$s = self, TMP_75), $a).call($bc, "look", (($scope.get('Query')).$$scope.get('Reachable')).$new($scope.get('Container')));
($a = ($bd = self).$respond, $a.$$p = (TMP_76 = function(actor, supporter){var self = TMP_76.$$s || this, supported = nil;
if (actor == null) actor = nil;if (supporter == null) supporter = nil;
actor.$proceed();
supported = supporter.$children().$that_are_not("attached?");
if ($rb_gt(supported.$length(), 0)) {
return actor.$tell("You see " + (supported.$join_and()) + " sitting there.")
} else {
return nil
};}, TMP_76.$$s = self, TMP_76), $a).call($bd, "look", (($scope.get('Query')).$$scope.get('Visible')).$new($scope.get('Supporter')));
($a = ($be = self).$respond, $a.$$p = (TMP_77 = function(actor, door){var self = TMP_77.$$s || this, $a;
if (actor == null) actor = nil;if (door == null) door = nil;
if ((($a = door['$has_description?']()) !== nil && (!$a.$$is_boolean || $a == true))) {
actor.$proceed()};
return actor.$tell($rb_plus($rb_plus("" + (self.$The(door)) + " is ", ((function() {if ((($a = door['$open?']()) !== nil && (!$a.$$is_boolean || $a == true))) {
return "open"
} else {
return "closed"
}; return nil; })())), "."));}, TMP_77.$$s = self, TMP_77), $a).call($be, "look", (($scope.get('Query')).$$scope.get('Reachable')).$new($scope.get('Door')));
self.$xlate("look at :thing", "look :thing");
self.$xlate("l :thing", "look :thing");
self.$xlate("examine :thing", "look :thing");
self.$xlate("x :thing", "look :thing");
self.$xlate("search :thing", "look :thing");
($a = ($bf = self).$meta, $a.$$p = (TMP_78 = function(actor, string){var self = TMP_78.$$s || this, $a, $b, TMP_79, $c, words = nil, found = nil;
if (actor == null) actor = nil;if (string == null) string = nil;
words = string.$split_words();
if ((($a = self.$commandwords()['$include?'](words['$[]'](0))) !== nil && (!$a.$$is_boolean || $a == true))) {
if ($rb_gt(words.$length(), 1)) {
return actor.$tell("I recognize '" + (words['$[]'](0)) + "' as a verb but could not understand the rest of your sentence.")
} else {
return actor.$tell("I recognize '" + (words['$[]'](0)) + "' as a verb but could not understand it in this context.")
}
} else {
found = [];
($a = ($b = self.$commandwords()).$each, $a.$$p = (TMP_79 = function(c){var self = TMP_79.$$s || this, $a, $b;
if (c == null) c = nil;
if ((($a = c['$include?']("_")) !== nil && (!$a.$$is_boolean || $a == true))) {
return nil;};
if ((($a = (($b = $rb_gt(c.$length(), words['$[]'](0).$length())) ? c['$start_with?'](words['$[]'](0)) : $b)) !== nil && (!$a.$$is_boolean || $a == true))) {
return found.$push(c)
} else {
return nil
};}, TMP_79.$$s = self, TMP_79), $a).call($b);
if (found.$length()['$=='](1)) {
words['$[]='](0, found['$[]'](0));
return actor.$perform(words.$join(" "));
} else if ((($a = (($c = $rb_gt(found.$length(), 1)) ? $rb_gt(words['$[]'](0).$length(), 2) : $c)) !== nil && (!$a.$$is_boolean || $a == true))) {
return actor.$tell("I'm not sure if " + (words['$[]'](0)) + " means " + (found.$join_and(", ", " or ")) + ".")
} else {
return actor.$tell("I don't recognize '" + (words['$[]'](0)) + "' as a verb.")
};
};}, TMP_78.$$s = self, TMP_78), $a).call($bf, nil, (($scope.get('Query')).$$scope.get('Text')).$new());
($a = ($bg = self).$meta, $a.$$p = (TMP_80 = function(actor, string){var self = TMP_80.$$s || this, $a, words = nil;
if (actor == null) actor = nil;if (string == null) string = nil;
words = string.$split_words();
if ((($a = self.$commandwords()['$include?'](words['$[]'](0))) !== nil && (!$a.$$is_boolean || $a == true))) {
return actor.$tell("I'm not sure what you mean by \"it.\"")
} else {
return actor.$proceed()
};}, TMP_80.$$s = self, TMP_80), $a).call($bg, nil, (($scope.get('Query')).$$scope.get('Text')).$new("it"));
($a = ($bh = self).$respond, $a.$$p = (TMP_81 = function(actor, string){var self = TMP_81.$$s || this;
if (actor == null) actor = nil;if (string == null) string = nil;
return actor.$tell("You don't see any \"" + (string) + "\" here.")}, TMP_81.$$s = self, TMP_81), $a).call($bh, "open", (($scope.get('Query')).$$scope.get('Text')).$new());
($a = ($bi = self).$respond, $a.$$p = (TMP_82 = function(actor, thing){var self = TMP_82.$$s || this;
if (actor == null) actor = nil;if (thing == null) thing = nil;
return actor.$tell("You can't open " + (self.$the(thing)) + ".")}, TMP_82.$$s = self, TMP_82), $a).call($bi, "open", (($scope.get('Query')).$$scope.get('Reachable')).$new());
($a = ($bj = self).$respond, $a.$$p = (TMP_83 = function(actor, container){var self = TMP_83.$$s || this, $a, $b;
if (actor == null) actor = nil;if (container == null) container = nil;
if ((($a = ($b = container['$portable?'](), $b !== false && $b !== nil ?container.$parent()['$=='](actor)['$!']() : $b)) !== nil && (!$a.$$is_boolean || $a == true))) {
actor.$perform("take", container);
if ((($a = container.$parent()['$=='](actor)['$!']()) !== nil && (!$a.$$is_boolean || $a == true))) {
return ($breaker.$v = nil, $breaker)};};
if ((($a = container['$locked?']()) !== nil && (!$a.$$is_boolean || $a == true))) {
return actor.$tell("" + (self.$The(container)) + " is locked.")
} else if ((($a = container['$open?']()['$!']()) !== nil && (!$a.$$is_boolean || $a == true))) {
actor.$tell("You open " + (self.$the(container)) + ".");
return (($a = [true]), $b = container, $b['$open='].apply($b, $a), $a[$a.length-1]);
} else {
return actor.$tell("It's already open.")
};}, TMP_83.$$s = self, TMP_83), $a).call($bj, "open", (($scope.get('Query')).$$scope.get('Reachable')).$new($scope.get('Openable')));
($a = ($bk = self).$respond, $a.$$p = (TMP_84 = function(actor, thing, supporter){var self = TMP_84.$$s || this;
if (actor == null) actor = nil;if (thing == null) thing = nil;if (supporter == null) supporter = nil;
return actor.$tell("You can't put " + (self.$the(thing)) + " on " + (self.$the(supporter)) + ".")}, TMP_84.$$s = self, TMP_84), $a).call($bk, "place", $scope.get('Use').$children(), $scope.get('Use').$reachable());
($a = ($bl = self).$respond, $a.$$p = (TMP_85 = function(actor, thing, supporter){var self = TMP_85.$$s || this, $a;
if (actor == null) actor = nil;if (thing == null) thing = nil;if (supporter == null) supporter = nil;
if ((($a = thing.$parent()['$=='](actor)['$!']()) !== nil && (!$a.$$is_boolean || $a == true))) {
actor.$perform("take", thing)};
if (thing.$parent()['$=='](actor)) {
return actor.$perform("drop_on", thing)
} else {
return nil
};}, TMP_85.$$s = self, TMP_85), $a).call($bl, "place", $scope.get('Use').$visible(), $scope.get('Use').$reachable($scope.get('Supporter')));
($a = ($bm = self).$respond, $a.$$p = (TMP_86 = function(actor, thing, supporter){var self = TMP_86.$$s || this, $a, $b;
if (actor == null) actor = nil;if (thing == null) thing = nil;if (supporter == null) supporter = nil;
(($a = [supporter]), $b = thing, $b['$parent='].apply($b, $a), $a[$a.length-1]);
return actor.$tell("You put " + (self.$the(thing)) + " on " + (self.$the(supporter)) + ".");}, TMP_86.$$s = self, TMP_86), $a).call($bm, "place", $scope.get('Use').$children(), $scope.get('Use').$reachable($scope.get('Supporter')));
($a = ($bn = self).$respond, $a.$$p = (TMP_87 = function(actor, thing, supporter){var self = TMP_87.$$s || this;
if (actor == null) actor = nil;if (thing == null) thing = nil;if (supporter == null) supporter = nil;
return actor.$tell("You don't see anything called \"" + (supporter) + "\" here.")}, TMP_87.$$s = self, TMP_87), $a).call($bn, "place", $scope.get('Use').$visible(), $scope.get('Use').$text());
($a = ($bo = self).$respond, $a.$$p = (TMP_88 = function(actor, thing, supporter){var self = TMP_88.$$s || this;
if (actor == null) actor = nil;if (thing == null) thing = nil;if (supporter == null) supporter = nil;
return actor.$tell("You don't see anything called \"" + (thing) + "\" here.")}, TMP_88.$$s = self, TMP_88), $a).call($bo, "place", $scope.get('Use').$text(), $scope.get('Use').$visible());
($a = ($bp = self).$respond, $a.$$p = (TMP_89 = function(actor, thing, supporter){var self = TMP_89.$$s || this;
if (actor == null) actor = nil;if (thing == null) thing = nil;if (supporter == null) supporter = nil;
return actor.$tell("I don't know what you mean by \"" + (thing) + "\" or \"" + (supporter) + ".\"")}, TMP_89.$$s = self, TMP_89), $a).call($bp, "place", $scope.get('Use').$text(), $scope.get('Use').$text());
self.$xlate("put :thing on :supporter", "place :thing :supporter");
self.$xlate("put :thing down on :supporter", "place :thing :supporter");
self.$xlate("set :thing on :supporter", "place :thing :supporter");
self.$xlate("set :thing down on :supporter", "place :thing :supporter");
self.$xlate("drop :thing on :supporter", "place :thing :supporter");
self.$xlate("place :thing on :supporter", "place :thing :supporter");
($a = ($bq = self).$respond, $a.$$p = (TMP_90 = function(actor, character, thing){var self = TMP_90.$$s || this;
if (actor == null) actor = nil;if (character == null) character = nil;if (thing == null) thing = nil;
return actor.$tell("" + (self.$The(character)) + " isn't interested in " + (self.$the(thing)) + ".")}, TMP_90.$$s = self, TMP_90), $a).call($bq, "show", $scope.get('Use').$reachable($scope.get('Character')), $scope.get('Use').$children());
($a = ($br = self).$respond, $a.$$p = (TMP_91 = function(actor, witness, thing){var self = TMP_91.$$s || this;
if (actor == null) actor = nil;if (witness == null) witness = nil;if (thing == null) thing = nil;
return actor.$tell("Nothing happens.")}, TMP_91.$$s = self, TMP_91), $a).call($br, "show", $scope.get('Use').$reachable(), $scope.get('Use').$children());
($a = ($bs = self).$respond, $a.$$p = (TMP_92 = function(actor, thing, text){var self = TMP_92.$$s || this;
if (actor == null) actor = nil;if (thing == null) thing = nil;if (text == null) text = nil;
return actor.$tell("You don't see any \"" + (text) + "\" here.")}, TMP_92.$$s = self, TMP_92), $a).call($bs, "show", $scope.get('Use').$children(), $scope.get('Use').$text());
self.$interpret("show :thing to :character", "show :character :thing");
($a = ($bt = self).$respond, $a.$$p = (TMP_93 = function(actor, string){var self = TMP_93.$$s || this;
if (actor == null) actor = nil;if (string == null) string = nil;
return actor.$tell("You don't see any \"" + (string) + "\" here.")}, TMP_93.$$s = self, TMP_93), $a).call($bt, "unlock", (($scope.get('Query')).$$scope.get('Text')).$new());
($a = ($bu = self).$respond, $a.$$p = (TMP_94 = function(actor, thing){var self = TMP_94.$$s || this;
if (actor == null) actor = nil;if (thing == null) thing = nil;
return actor.$tell("You can't unlock " + (self.$the(thing)) + ".")}, TMP_94.$$s = self, TMP_94), $a).call($bu, "unlock", (($scope.get('Query')).$$scope.get('Reachable')).$new());
($a = ($bv = self).$respond, $a.$$p = (TMP_95 = function(actor, container){var self = TMP_95.$$s || this, $a, $b, key = nil;
if (actor == null) actor = nil;if (container == null) container = nil;
if ((($a = ($b = container['$portable?'](), $b !== false && $b !== nil ?container.$parent()['$=='](actor)['$!']() : $b)) !== nil && (!$a.$$is_boolean || $a == true))) {
actor.$perform("take", container);
if ((($a = container.$parent()['$=='](actor)['$!']()) !== nil && (!$a.$$is_boolean || $a == true))) {
return ($breaker.$v = nil, $breaker)};};
if (container['$locked?']()['$=='](false)) {
return actor.$tell("" + (self.$The(container)) + " isn't locked.")
} else {
key = nil;
if (container.$lock_key()['$nil?']()['$=='](false)) {
if (container.$lock_key().$parent()['$=='](actor)) {
key = container.$lock_key()}};
if ((($a = key['$nil?']()) !== nil && (!$a.$$is_boolean || $a == true))) {
return actor.$tell("You don't have any way to unlock " + (self.$the(container)) + ".")
} else {
actor.$tell("You unlock " + (self.$the(container)) + " with " + (self.$the(key)) + ".");
return (($a = [false]), $b = container, $b['$locked='].apply($b, $a), $a[$a.length-1]);
};
};}, TMP_95.$$s = self, TMP_95), $a).call($bv, "unlock", (($scope.get('Query')).$$scope.get('Reachable')).$new($scope.get('Lockable')));
($a = ($bw = self).$respond, $a.$$p = (TMP_96 = function(actor, container, thing){var self = TMP_96.$$s || this;
if (actor == null) actor = nil;if (container == null) container = nil;if (thing == null) thing = nil;
return actor.$tell("You don't have anything called '" + (thing) + ".'")}, TMP_96.$$s = self, TMP_96), $a).call($bw, "unlock", (($scope.get('Query')).$$scope.get('Reachable')).$new($scope.get('Lockable')), (($scope.get('Query')).$$scope.get('Text')).$new());
($a = ($bx = self).$respond, $a.$$p = (TMP_97 = function(actor, container, key){var self = TMP_97.$$s || this, $a;
if (actor == null) actor = nil;if (container == null) container = nil;if (key == null) key = nil;
if ((($a = container['$is?']("locked")) !== nil && (!$a.$$is_boolean || $a == true))) {
if (container.$key()['$=='](key)) {
return actor.$perform("unlock", container)
} else {
return actor.$tell("You can't unlock " + (self.$the(container)) + " with " + (self.$the(key)) + ".")
}
} else {
return actor.$tell("" + (self.$The(container)) + " isn't locked.")
}}, TMP_97.$$s = self, TMP_97), $a).call($bx, "unlock", (($scope.get('Query')).$$scope.get('Reachable')).$new($scope.get('Lockable'), "has_lock_key?"), (($scope.get('Query')).$$scope.get('Children')).$new());
($a = ($by = self).$respond, $a.$$p = (TMP_98 = function(actor, container, key){var self = TMP_98.$$s || this, $a;
if (actor == null) actor = nil;if (container == null) container = nil;if (key == null) key = nil;
if ((($a = container['$is?']("locked")) !== nil && (!$a.$$is_boolean || $a == true))) {
actor.$perform("unlock", container, key);
if ((($a = container['$is?']("locked")['$!']()) !== nil && (!$a.$$is_boolean || $a == true))) {
return actor.$perform("open", container)
} else {
return nil
};
} else {
return actor.$perform("open", container)
}}, TMP_98.$$s = self, TMP_98), $a).call($by, "open", (($scope.get('Query')).$$scope.get('Reachable')).$new($scope.get('Lockable'), "has_lock_key?"), (($scope.get('Query')).$$scope.get('Children')).$new());
($a = ($bz = self).$respond, $a.$$p = (TMP_99 = function(actor, key, container){var self = TMP_99.$$s || this;
if (actor == null) actor = nil;if (key == null) key = nil;if (container == null) container = nil;
return actor.$perform("unlock", container, key)}, TMP_99.$$s = self, TMP_99), $a).call($bz, "use", (($scope.get('Query')).$$scope.get('Children')).$new(), (($scope.get('Query')).$$scope.get('Reachable')).$new($scope.get('Lockable'), "has_lock_key?"));
self.$xlate("unlock :container with :key", "unlock :container :key");
self.$xlate("open :container with :key", "open :container :key");
($a = ($ca = self).$respond, $a.$$p = (TMP_100 = function(actor, tool){var self = TMP_100.$$s || this;
if (actor == null) actor = nil;if (tool == null) tool = nil;
return actor.$tell("I don't know how. (A more specific command might work.)")}, TMP_100.$$s = self, TMP_100), $a).call($ca, "use", (($scope.get('Query')).$$scope.get('Reachable')).$new());
($a = ($cb = self).$respond, $a.$$p = (TMP_101 = function(actor, thing){var self = TMP_101.$$s || this;
if (actor == null) actor = nil;if (thing == null) thing = nil;
return actor.$tell("You don't see any '" + (thing) + "' you can use here.")}, TMP_101.$$s = self, TMP_101), $a).call($cb, "use", (((($scope.get('Gamefic')).$$scope.get('Query'))).$$scope.get('Text')).$new());
($a = ($cc = self).$respond, $a.$$p = (TMP_102 = function(actor, tool, object){var self = TMP_102.$$s || this;
if (actor == null) actor = nil;if (tool == null) tool = nil;if (object == null) object = nil;
return actor.$tell("You're not carrying the " + (tool) + ".")}, TMP_102.$$s = self, TMP_102), $a).call($cc, "use", (($scope.get('Query')).$$scope.get('Reachable')).$new(), (($scope.get('Query')).$$scope.get('Reachable')).$new());
($a = ($cd = self).$respond, $a.$$p = (TMP_103 = function(actor, tool, object){var self = TMP_103.$$s || this;
if (actor == null) actor = nil;if (tool == null) tool = nil;if (object == null) object = nil;
return actor.$tell("You don't see any '" + (object) + "' here.")}, TMP_103.$$s = self, TMP_103), $a).call($cd, "use", (((($scope.get('Gamefic')).$$scope.get('Query'))).$$scope.get('Children')).$new(), (((($scope.get('Gamefic')).$$scope.get('Query'))).$$scope.get('Text')).$new());
($a = ($ce = self).$respond, $a.$$p = (TMP_104 = function(actor, tool, object){var self = TMP_104.$$s || this;
if (actor == null) actor = nil;if (tool == null) tool = nil;if (object == null) object = nil;
return actor.$tell("You don't have anything called '" + (tool) + ".'")}, TMP_104.$$s = self, TMP_104), $a).call($ce, "use", (($scope.get('Query')).$$scope.get('Text')).$new(), (($scope.get('Query')).$$scope.get('Reachable')).$new());
($a = ($cf = self).$respond, $a.$$p = (TMP_105 = function(actor, tool, object){var self = TMP_105.$$s || this;
if (actor == null) actor = nil;if (tool == null) tool = nil;if (object == null) object = nil;
return actor.$tell("I don't know how. (A more specific command might work.)")}, TMP_105.$$s = self, TMP_105), $a).call($cf, "use", (($scope.get('Query')).$$scope.get('Children')).$new(), (($scope.get('Query')).$$scope.get('Reachable')).$new());
self.$xlate("use :tool on :object", "use :tool :object");
($a = ($cg = self).$respond, $a.$$p = (TMP_106 = function(actor, thing){var self = TMP_106.$$s || this;
if (actor == null) actor = nil;if (thing == null) thing = nil;
return actor.$tell("You can't take " + (self.$the(thing)) + ".")}, TMP_106.$$s = self, TMP_106), $a).call($cg, "take", $scope.get('Use').$reachable());
($a = ($ch = self).$respond, $a.$$p = (TMP_107 = function(actor, thing){var self = TMP_107.$$s || this, $a, $b;
if (actor == null) actor = nil;if (thing == null) thing = nil;
(($a = [actor]), $b = thing, $b['$parent='].apply($b, $a), $a[$a.length-1]);
return actor.$tell("You take " + (self.$the(thing)) + ".");}, TMP_107.$$s = self, TMP_107), $a).call($ch, "take", (($scope.get('Query')).$$scope.get('Reachable')).$new("portable?"));
($a = ($ci = self).$respond, $a.$$p = (TMP_108 = function(actor, thing){var self = TMP_108.$$s || this, $a, $b;
if (actor == null) actor = nil;if (thing == null) thing = nil;
if (thing.$parent()['$=='](actor.$parent())) {
return actor.$proceed()
} else if ((($a = ($b = thing.$parent()['$kind_of?']($scope.get('Container')), $b !== false && $b !== nil ?thing.$parent()['$open?']()['$!']() : $b)) !== nil && (!$a.$$is_boolean || $a == true))) {
return actor.$tell("" + (self.$The(thing)) + " is inside " + (self.$the(thing.$parent())) + ", which is closed.")
} else {
return nil
}}, TMP_108.$$s = self, TMP_108), $a).call($ci, "take", (($scope.get('Query')).$$scope.get('Visible')).$new());
($a = ($cj = self).$respond, $a.$$p = (TMP_109 = function(actor, thing){var self = TMP_109.$$s || this, $a, $b, $c;
if (actor == null) actor = nil;if (thing == null) thing = nil;
if ((($a = ($b = ($c = actor.$parent()['$kind_of?']($scope.get('Supporter')), $c !== false && $c !== nil ?actor.$parent()['$=='](thing.$parent())['$!']() : $c), $b !== false && $b !== nil ?actor.$parent()['$=='](thing.$parent().$parent())['$!']() : $b)) !== nil && (!$a.$$is_boolean || $a == true))) {
return actor.$tell("You can't reach it from " + (self.$the(actor.$parent())) + ".")
} else {
return actor.$proceed()
}}, TMP_109.$$s = self, TMP_109), $a).call($cj, "take", (($scope.get('Query')).$$scope.get('Visible')).$new());
($a = ($ck = self).$respond, $a.$$p = (TMP_110 = function(actor, thing){var self = TMP_110.$$s || this;
if (actor == null) actor = nil;if (thing == null) thing = nil;
return actor.$tell("" + (self.$The(thing)) + " is attached to " + (self.$the(thing.$parent())) + ".")}, TMP_110.$$s = self, TMP_110), $a).call($ck, "take", (($scope.get('Query')).$$scope.get('Reachable')).$new("attached?"));
($a = ($cl = self).$respond, $a.$$p = (TMP_111 = function(actor, thing){var self = TMP_111.$$s || this, $a, $b;
if (actor == null) actor = nil;if (thing == null) thing = nil;
if ((($a = actor.$parent()['$=='](thing.$parent())['$!']()) !== nil && (!$a.$$is_boolean || $a == true))) {
actor.$tell("You take " + (self.$the(thing)) + " from " + (self.$the(thing.$parent())) + ".");
return (($a = [actor]), $b = thing, $b['$parent='].apply($b, $a), $a[$a.length-1]);
} else {
return actor.$proceed()
}}, TMP_111.$$s = self, TMP_111), $a).call($cl, "take", (($scope.get('Query')).$$scope.get('Reachable')).$new("portable?"));
($a = ($cm = self).$respond, $a.$$p = (TMP_112 = function(actor, thing){var self = TMP_112.$$s || this;
if (actor == null) actor = nil;if (thing == null) thing = nil;
return actor.$tell("You're already carrying " + (self.$the(thing)) + ".")}, TMP_112.$$s = self, TMP_112), $a).call($cm, "take", (((($scope.get('Gamefic')).$$scope.get('Query'))).$$scope.get('Children')).$new());
($a = ($cn = self).$respond, $a.$$p = (TMP_113 = function(actor, rubble){var self = TMP_113.$$s || this;
if (actor == null) actor = nil;if (rubble == null) rubble = nil;
return actor.$tell("You don't have any use for " + (self.$the(rubble)) + ".")}, TMP_113.$$s = self, TMP_113), $a).call($cn, "take", $scope.get('Use').$reachable((($scope.get('Gamefic')).$$scope.get('Rubble'))));
($a = ($co = self).$respond, $a.$$p = (TMP_114 = function(actor, text){var self = TMP_114.$$s || this;
if (actor == null) actor = nil;if (text == null) text = nil;
return actor.$tell("You don't see any \"" + (text) + "\" here.")}, TMP_114.$$s = self, TMP_114), $a).call($co, "take", $scope.get('Use').$text());
self.$interpret("get :thing", "take :thing");
self.$interpret("pick up :thing", "take :thing");
self.$interpret("pick :thing up", "take :thing");
self.$interpret("carry :thing", "take :thing");
($a = ($cp = self).$assert_action, $a.$$p = (TMP_115 = function(actor, action){var self = TMP_115.$$s || this, $a, $b;
if (actor == null) actor = nil;if (action == null) action = nil;
if ((($a = ((($b = actor['$nil?']()['$!']()) !== false && $b !== nil) ? $b : actor.$room()['$is?']("lighted"))) !== nil && (!$a.$$is_boolean || $a == true))) {
return true
} else if (action['$==']("go")) {
return true
} else {
actor.$tell("It's too dark in here.");
return false;
}}, TMP_115.$$s = self, TMP_115), $a).call($cp, "has_enough_light");
(function($base, $super) {
function $Pathfinder(){};
var self = $Pathfinder = $klass($base, $super, 'Pathfinder', $Pathfinder);
var def = self.$$proto, $scope = self.$$scope;
def.origin = def.destination = def.path = def.paths = nil;
self.$attr_reader("origin", "destination", "path");
def.$initialize = function(origin, destination) {
var $a, $b, $c, self = this;
self.origin = origin;
self.destination = destination;
self.path = nil;
self.paths = [[self.origin]];
self.visited = [];
if (self.origin['$=='](self.destination)) {
return self.path = []
} else {
while ((($b = ($c = self.path['$nil?'](), $c !== false && $c !== nil ?$rb_gt(self.paths.$length(), 0) : $c)) !== nil && (!$b.$$is_boolean || $b == true))) {
self.$embark()}
};
};
self.$private();
return (def.$embark = function() {
var $a, $b, TMP_116, $c, TMP_118, self = this, new_paths = nil;
new_paths = [];
($a = ($b = self.paths).$each, $a.$$p = (TMP_116 = function(path){var self = TMP_116.$$s || this, $a, $b, TMP_117, last = nil, portals = nil;
if (path == null) path = nil;
last = path.$last();
portals = last.$children().$that_are($scope.get('Portal'));
($a = ($b = portals).$each, $a.$$p = (TMP_117 = function(portal){var self = TMP_117.$$s || this, $a, new_path = nil;
if (self.visited == null) self.visited = nil;
if (self.destination == null) self.destination = nil;
if (self.path == null) self.path = nil;
if (portal == null) portal = nil;
new_path = path.$clone();
if ((($a = self.visited['$include?'](portal.$destination())['$!']()) !== nil && (!$a.$$is_boolean || $a == true))) {
new_path.$push(portal.$destination());
self.visited.$push(portal.$destination());
if (portal.$destination()['$=='](self.destination)) {
self.path = new_path;
self.path.$shift();
return ($breaker.$v = nil, $breaker);};
return new_paths.$push(new_path);
} else {
return nil
};}, TMP_117.$$s = self, TMP_117), $a).call($b);
return path.$push(nil);}, TMP_116.$$s = self, TMP_116), $a).call($b);
self.paths = $rb_plus(self.paths, new_paths);
return ($a = ($c = self.paths).$delete_if, $a.$$p = (TMP_118 = function(path){var self = TMP_118.$$s || this;
if (path == null) path = nil;
return path.$last()['$nil?']()}, TMP_118.$$s = self, TMP_118), $a).call($c);
}, nil) && 'embark';
})($scope.get('Gamefic'), null);
(function($base) {
var self = $module($base, 'Hypertext');
var def = self.$$proto, $scope = self.$$scope;
Opal.defs(self, '$link', function(command, text) {
var $a, self = this;
if (text == null) {
text = nil
}
return "" + (((($a = text) !== false && $a !== nil) ? $a : command)) + "";
})
})($scope.get('Gamefic'));
self.snapshots = nil;
last_snapshot = nil;
($a = ($cq = self).$on_update, $a.$$p = (TMP_119 = function(){var self = TMP_119.$$s || this, $a;
if (self.snapshots == null) self.snapshots = nil;
last_snapshot = nil;
if ((($a = self.snapshots['$nil?']()['$!']()) !== nil && (!$a.$$is_boolean || $a == true))) {
return last_snapshot = self.snapshots.$save(self.$entities())
} else {
return nil
};}, TMP_119.$$s = self, TMP_119), $a).call($cq);
($a = ($cr = self).$on_player_update, $a.$$p = (TMP_120 = function(actor){var self = TMP_120.$$s || this, $a, $b, $c, $d, $e;
if (self.snapshots == null) self.snapshots = nil;
if (actor == null) actor = nil;
((($a = self.snapshots) !== false && $a !== nil) ? $a : self.snapshots = $scope.get('Snapshots').$new(self.$entities()));
if ((($a = ($b = ($c = ($d = (($e = actor.$scene().$key()['$==']("active")) ? actor['$[]']("testing")['$=='](true)['$!']() : $e), $d !== false && $d !== nil ?actor.$last_order()['$nil?']()['$!']() : $d), $c !== false && $c !== nil ?actor.$last_order().$action().$verb()['$==']("undo")['$!']() : $c), $b !== false && $b !== nil ?last_snapshot['$nil?']()['$!']() : $b)) !== nil && (!$a.$$is_boolean || $a == true))) {
return self.snapshots.$history().$push(last_snapshot)
} else {
return nil
};}, TMP_120.$$s = self, TMP_120), $a).call($cr);
($a = ($cs = self).$meta, $a.$$p = (TMP_121 = function(actor){var self = TMP_121.$$s || this;
if (actor == null) actor = nil;
return actor.$perform("save", "game.sav")}, TMP_121.$$s = self, TMP_121), $a).call($cs, "save");
($a = ($ct = self).$meta, $a.$$p = (TMP_122 = function(actor, filename){var self = TMP_122.$$s || this;
if (self.snapshots == null) self.snapshots = nil;
if (actor == null) actor = nil;if (filename == null) filename = nil;
return actor.$user().$save(filename, self.snapshots.$save(self.$entities()))}, TMP_122.$$s = self, TMP_122), $a).call($ct, "save", (($scope.get('Query')).$$scope.get('Text')).$new());
($a = ($cu = self).$meta, $a.$$p = (TMP_123 = function(actor){var self = TMP_123.$$s || this;
if (actor == null) actor = nil;
return actor.$perform("restore", "game.sav")}, TMP_123.$$s = self, TMP_123), $a).call($cu, "restore");
($a = ($cv = self).$meta, $a.$$p = (TMP_124 = function(actor, filename){var self = TMP_124.$$s || this, $a, data = nil;
if (self.snapshots == null) self.snapshots = nil;
if (actor == null) actor = nil;if (filename == null) filename = nil;
data = actor.$user().$restore(filename);
if ((($a = data['$nil?']()['$!']()) !== nil && (!$a.$$is_boolean || $a == true))) {
self.snapshots.$restore(data);
return actor.$tell("Game restored.");
} else {
return nil
};}, TMP_124.$$s = self, TMP_124), $a).call($cv, "restore", (($scope.get('Query')).$$scope.get('Text')).$new());
($a = ($cw = self).$meta, $a.$$p = (TMP_125 = function(actor){var self = TMP_125.$$s || this, $a, last = nil;
if (self.snapshots == null) self.snapshots = nil;
if (actor == null) actor = nil;
last = self.snapshots.$history().$pop();
if ((($a = last['$nil?']()) !== nil && (!$a.$$is_boolean || $a == true))) {
return actor.$tell("No previous turns are available.")
} else {
self.snapshots.$restore(last);
return actor.$tell("Previous turn undone.");
};}, TMP_125.$$s = self, TMP_125), $a).call($cw, "undo");
(($a = [false]), $cx = $scope.get('ExplicitExits'), $cx['$default='].apply($cx, $a), $a[$a.length-1]);
(function($base, $super) {
function $Transporter(){};
var self = $Transporter = $klass($base, $super, 'Transporter', $Transporter);
var def = self.$$proto, $scope = self.$$scope, TMP_126;
def.unavailable_message = def.mobile = def.destinations_block = nil;
self.$attr_writer("unavailable_message", "mobile");
def.$unavailable_message = function() {
var $a, self = this;
return ((($a = self.unavailable_message) !== false && $a !== nil) ? $a : self.unavailable_message = "You don't have anywhere to go right now.");
};
def['$mobile?'] = function() {
var $a, self = this;
return ((($a = self.mobile) !== false && $a !== nil) ? $a : self.mobile = false);
};
def.$make_destination_hash = TMP_126 = function() {
var self = this, $iter = TMP_126.$$p, block = $iter || nil;
TMP_126.$$p = null;
return self.destinations_block = block;
};
return (def.$get_destinations_for = function(actor) {
var $a, self = this, destinations = nil;
if ((($a = self.destinations_block['$nil?']()['$!']()) !== nil && (!$a.$$is_boolean || $a == true))) {
destinations = self.destinations_block.$call(actor)};
return ((($a = destinations) !== false && $a !== nil) ? $a : $hash2([], {}));
}, nil) && 'get_destinations_for';
})($scope.get('Gamefic'), (($scope.get('Gamefic')).$$scope.get('Fixture')));
self.$scene_managers()['$[]=']("enter_transporter", ($a = ($cx = $scope.get('MultipleChoiceSceneManager')).$new, $a.$$p = (TMP_127 = function(config){var self = TMP_127.$$s || this, $a, $b, TMP_128, $c, TMP_130;
if (config == null) config = nil;
($a = ($b = config).$start, $a.$$p = (TMP_128 = function(actor, data){var self = TMP_128.$$s || this, $a, $b, TMP_129, $c, $d, transporter = nil, destinations = nil;
if (actor == null) actor = nil;if (data == null) data = nil;
transporter = actor.$parent();
destinations = transporter.$get_destinations_for(actor);
($a = ($b = destinations).$delete_if, $a.$$p = (TMP_129 = function(k, v){var self = TMP_129.$$s || this;
if (k == null) k = nil;if (v == null) v = nil;
return v['$=='](transporter.$parent())}, TMP_129.$$s = self, TMP_129), $a).call($b);
if ((($a = ((($c = destinations.$keys().$length()['$=='](0)) !== false && $c !== nil) ? $c : ((($d = destinations.$keys().$length()['$=='](1)) ? destinations['$[]'](destinations.$keys().$first())['$nil?']() : $d)))) !== nil && (!$a.$$is_boolean || $a == true))) {
actor.$tell(transporter.$unavailable_message());
(($a = [transporter.$parent()]), $c = actor, $c['$parent='].apply($c, $a), $a[$a.length-1]);
return self.$cue(actor, "active");
} else {
(($a = [destinations.$keys()]), $c = data, $c['$options='].apply($c, $a), $a[$a.length-1]);
return actor.$tell("Where do you want go?");
};}, TMP_128.$$s = self, TMP_128), $a).call($b);
return ($a = ($c = config).$finish, $a.$$p = (TMP_130 = function(actor, data){var self = TMP_130.$$s || this, $a, $b, transporter = nil, destinations = nil;
if (actor == null) actor = nil;if (data == null) data = nil;
transporter = actor.$parent();
destinations = transporter.$get_destinations_for(actor);
if ((($a = destinations['$[]'](data.$selection())['$nil?']()) !== nil && (!$a.$$is_boolean || $a == true))) {
actor.$tell("You stay here.");
(($a = [transporter.$parent()]), $b = actor, $b['$parent='].apply($b, $a), $a[$a.length-1]);
} else {
(($a = [destinations['$[]'](data.$selection())]), $b = actor, $b['$parent='].apply($b, $a), $a[$a.length-1])
};
if ((($a = transporter['$mobile?']()) !== nil && (!$a.$$is_boolean || $a == true))) {
(($a = [actor.$parent()]), $b = transporter, $b['$parent='].apply($b, $a), $a[$a.length-1])};
actor.$perform("look");
return self.$cue(actor, "active");}, TMP_130.$$s = self, TMP_130), $a).call($c);}, TMP_127.$$s = self, TMP_127), $a).call($cx));
($a = ($cy = self).$respond, $a.$$p = (TMP_131 = function(actor, transporter){var self = TMP_131.$$s || this, $a, $b;
if (actor == null) actor = nil;if (transporter == null) transporter = nil;
(($a = [transporter]), $b = actor, $b['$parent='].apply($b, $a), $a[$a.length-1]);
return self.$cue(actor, "enter_transporter");}, TMP_131.$$s = self, TMP_131), $a).call($cy, "enter", $scope.get('Use').$reachable((($scope.get('Gamefic')).$$scope.get('Transporter'))));
($a = ($cz = self).$respond, $a.$$p = (TMP_132 = function(actor, transporter){var self = TMP_132.$$s || this;
if (actor == null) actor = nil;if (transporter == null) transporter = nil;
return actor.$perform("enter", transporter)}, TMP_132.$$s = self, TMP_132), $a).call($cz, "take", $scope.get('Use').$reachable((($scope.get('Gamefic')).$$scope.get('Transporter'))));
($a = ($da = self).$respond, $a.$$p = (TMP_133 = function(actor, transporter){var self = TMP_133.$$s || this;
if (actor == null) actor = nil;if (transporter == null) transporter = nil;
return actor.$perform("enter", transporter)}, TMP_133.$$s = self, TMP_133), $a).call($da, "ride", $scope.get('Use').$reachable((($scope.get('Gamefic')).$$scope.get('Transporter'))));
($a = ($db = self).$respond, $a.$$p = (TMP_134 = function(actor, transporter){var self = TMP_134.$$s || this;
if (actor == null) actor = nil;if (transporter == null) transporter = nil;
return actor.$perform("enter", transporter)}, TMP_134.$$s = self, TMP_134), $a).call($db, "go", $scope.get('Use').$reachable((($scope.get('Gamefic')).$$scope.get('Transporter'))));
($a = ($dc = self).$respond, $a.$$p = (TMP_135 = function(actor, transporter){var self = TMP_135.$$s || this;
if (actor == null) actor = nil;if (transporter == null) transporter = nil;
return actor.$perform("enter", transporter)}, TMP_135.$$s = self, TMP_135), $a).call($dc, "go_for", $scope.get('Use').$reachable((($scope.get('Gamefic')).$$scope.get('Transporter'))));
($a = ($dd = self).$respond, $a.$$p = (TMP_136 = function(actor, transporter){var self = TMP_136.$$s || this;
if (actor == null) actor = nil;if (transporter == null) transporter = nil;
return actor.$perform("enter", transporter)}, TMP_136.$$s = self, TMP_136), $a).call($dd, "use", $scope.get('Use').$reachable((($scope.get('Gamefic')).$$scope.get('Transporter'))));
($a = ($de = self).$respond, $a.$$p = (TMP_137 = function(actor, transporter){var self = TMP_137.$$s || this;
if (actor == null) actor = nil;if (transporter == null) transporter = nil;
return actor.$perform("enter", transporter)}, TMP_137.$$s = self, TMP_137), $a).call($de, "move", $scope.get('Use').$reachable((($scope.get('Gamefic')).$$scope.get('Transporter'))));
(function($base, $super) {
function $Clothing(){};
var self = $Clothing = $klass($base, $super, 'Clothing', $Clothing);
var def = self.$$proto, $scope = self.$$scope;
return (def['$worn?'] = function() {
var $a, self = this;
return ($a = self.$parent()['$kind_of?']($scope.get('Character')), $a !== false && $a !== nil ?self['$attached?']() : $a);
}, nil) && 'worn?'
})($scope.get('Gamefic'), (($scope.get('Gamefic')).$$scope.get('Item')));
(function($base, $super) {
function $Coat(){};
var self = $Coat = $klass($base, $super, 'Coat', $Coat);
var def = self.$$proto, $scope = self.$$scope;
return nil;
})($scope.get('Gamefic'), (($scope.get('Gamefic')).$$scope.get('Clothing')));
(function($base, $super) {
function $Gloves(){};
var self = $Gloves = $klass($base, $super, 'Gloves', $Gloves);
var def = self.$$proto, $scope = self.$$scope;
return nil;
})($scope.get('Gamefic'), (($scope.get('Gamefic')).$$scope.get('Clothing')));
(function($base, $super) {
function $Hat(){};
var self = $Hat = $klass($base, $super, 'Hat', $Hat);
var def = self.$$proto, $scope = self.$$scope;
return nil;
})($scope.get('Gamefic'), (($scope.get('Gamefic')).$$scope.get('Clothing')));
(function($base, $super) {
function $Pants(){};
var self = $Pants = $klass($base, $super, 'Pants', $Pants);
var def = self.$$proto, $scope = self.$$scope;
return nil;
})($scope.get('Gamefic'), (($scope.get('Gamefic')).$$scope.get('Clothing')));
(function($base, $super) {
function $Shirt(){};
var self = $Shirt = $klass($base, $super, 'Shirt', $Shirt);
var def = self.$$proto, $scope = self.$$scope;
return nil;
})($scope.get('Gamefic'), (($scope.get('Gamefic')).$$scope.get('Clothing')));
(function($base, $super) {
function $Shoes(){};
var self = $Shoes = $klass($base, $super, 'Shoes', $Shoes);
var def = self.$$proto, $scope = self.$$scope;
return nil;
})($scope.get('Gamefic'), (($scope.get('Gamefic')).$$scope.get('Clothing')));
($a = ($df = self).$respond, $a.$$p = (TMP_138 = function(actor, clothing){var self = TMP_138.$$s || this, $a, $b;
if (actor == null) actor = nil;if (clothing == null) clothing = nil;
if ((($a = clothing['$attached?']()['$!']()) !== nil && (!$a.$$is_boolean || $a == true))) {
return actor.$tell("You're not wearing " + (self.$the(clothing)) + ".")
} else {
(($a = [false]), $b = clothing, $b['$attached='].apply($b, $a), $a[$a.length-1]);
return actor.$tell("You take off " + (self.$the(clothing)) + ".");
}}, TMP_138.$$s = self, TMP_138), $a).call($df, "doff", (($scope.get('Query')).$$scope.get('Children')).$new($scope.get('Clothing')));
self.$xlate("remove :clothing", "doff :clothing");
self.$xlate("take off :clothing", "doff :clothing");
self.$xlate("take :clothing off", "doff :clothing");
($a = ($dg = self).$respond, $a.$$p = (TMP_139 = function(actor, clothing){var self = TMP_139.$$s || this, $a;
if (actor == null) actor = nil;if (clothing == null) clothing = nil;
if ((($a = clothing['$attached?']()) !== nil && (!$a.$$is_boolean || $a == true))) {
actor.$perform("doff", clothing)};
if ((($a = clothing['$attached?']()['$!']()) !== nil && (!$a.$$is_boolean || $a == true))) {
return actor.$proceed()
} else {
return nil
};}, TMP_139.$$s = self, TMP_139), $a).call($dg, "drop", (($scope.get('Query')).$$scope.get('Children')).$new($scope.get('Clothing')));
($a = ($dh = self).$respond, $a.$$p = (TMP_140 = function(actor){var self = TMP_140.$$s || this, carried = nil, worn = nil;
if (actor == null) actor = nil;
if ($rb_gt(actor.$children().$length(), 0)) {
carried = actor.$children().$that_are_not("attached?");
worn = actor.$children().$that_are("attached?");
if ($rb_gt(carried.$length(), 0)) {
actor.$tell("You are carrying " + (carried.$join_and()) + ".")};
if ($rb_gt(worn.$length(), 0)) {
return actor.$tell("You are wearing " + (worn.$join_and()) + ".")
} else {
return nil
};
} else {
return actor.$tell("You aren't carrying anything.")
}}, TMP_140.$$s = self, TMP_140), $a).call($dh, "inventory");
($a = ($di = self).$respond, $a.$$p = (TMP_141 = function(actor, clothing){var self = TMP_141.$$s || this, $a, $b, already = nil;
if (actor == null) actor = nil;if (clothing == null) clothing = nil;
if ((($a = clothing.$parent()['$=='](actor)['$!']()) !== nil && (!$a.$$is_boolean || $a == true))) {
actor.$perform("take " + (clothing))};
if (clothing.$parent()['$=='](actor)) {
if ((($a = clothing['$attached?']()) !== nil && (!$a.$$is_boolean || $a == true))) {
return actor.$tell("You're already wearing " + (self.$the(clothing)) + ".")
} else {
already = actor.$children().$that_are(clothing.$class()).$that_are("attached?");
if (already.$length()['$=='](0)) {
(($a = [true]), $b = clothing, $b['$attached='].apply($b, $a), $a[$a.length-1]);
return actor.$tell("You put on " + (self.$the(clothing)) + ".");
} else {
return actor.$tell("You're already wearing " + (self.$an(already['$[]'](0))) + ".")
};
}
} else {
return nil
};}, TMP_141.$$s = self, TMP_141), $a).call($di, "wear", (($scope.get('Query')).$$scope.get('Reachable')).$new($scope.get('Clothing')));
self.$xlate("put on :clothing", "wear :clothing");
self.$xlate("put :clothing on", "wear :clothing");
self.$xlate("don :clothing", "wear :clothing");
(function($base, $super) {
function $Pathfinder(){};
var self = $Pathfinder = $klass($base, $super, 'Pathfinder', $Pathfinder);
var def = self.$$proto, $scope = self.$$scope;
def.origin = def.destination = def.path = def.paths = nil;
self.$attr_reader("origin", "destination", "path");
def.$initialize = function(origin, destination) {
var $a, $b, $c, self = this;
self.origin = origin;
self.destination = destination;
self.path = nil;
self.paths = [[self.origin]];
self.visited = [];
if (self.origin['$=='](self.destination)) {
return self.path = []
} else {
while ((($b = ($c = self.path['$nil?'](), $c !== false && $c !== nil ?$rb_gt(self.paths.$length(), 0) : $c)) !== nil && (!$b.$$is_boolean || $b == true))) {
self.$embark()}
};
};
self.$private();
return (def.$embark = function() {
var $a, $b, TMP_142, $c, TMP_144, self = this, new_paths = nil;
new_paths = [];
($a = ($b = self.paths).$each, $a.$$p = (TMP_142 = function(path){var self = TMP_142.$$s || this, $a, $b, TMP_143, last = nil, portals = nil;
if (path == null) path = nil;
last = path.$last();
portals = last.$children().$that_are($scope.get('Portal'));
($a = ($b = portals).$each, $a.$$p = (TMP_143 = function(portal){var self = TMP_143.$$s || this, $a, new_path = nil;
if (self.visited == null) self.visited = nil;
if (self.destination == null) self.destination = nil;
if (self.path == null) self.path = nil;
if (portal == null) portal = nil;
new_path = path.$clone();
if ((($a = self.visited['$include?'](portal.$destination())['$!']()) !== nil && (!$a.$$is_boolean || $a == true))) {
new_path.$push(portal.$destination());
self.visited.$push(portal.$destination());
if (portal.$destination()['$=='](self.destination)) {
self.path = new_path;
self.path.$shift();
return ($breaker.$v = nil, $breaker);};
return new_paths.$push(new_path);
} else {
return nil
};}, TMP_143.$$s = self, TMP_143), $a).call($b);
return path.$push(nil);}, TMP_142.$$s = self, TMP_142), $a).call($b);
self.paths = $rb_plus(self.paths, new_paths);
return ($a = ($c = self.paths).$delete_if, $a.$$p = (TMP_144 = function(path){var self = TMP_144.$$s || this;
if (path == null) path = nil;
return path.$last()['$nil?']()}, TMP_144.$$s = self, TMP_144), $a).call($c);
}, nil) && 'embark';
})($scope.get('Gamefic'), null);
(function($base, $super) {
function $ClubDoor(){};
var self = $ClubDoor = $klass($base, $super, 'ClubDoor', $ClubDoor);
var def = self.$$proto, $scope = self.$$scope;
return nil;
})($scope.get('Gamefic'), $scope.get('Fixture'));
($a = ($dj = self).$respond, $a.$$p = (TMP_145 = function(actor, door){var self = TMP_145.$$s || this;
if (actor == null) actor = nil;if (door == null) door = nil;
return actor.$tell("It's just an empty conference room. You close the door and turn back to the hallway.")}, TMP_145.$$s = self, TMP_145), $a).call($dj, "open", (($scope.get('Query')).$$scope.get('Reachable')).$new((($scope.get('Gamefic')).$$scope.get('ClubDoor'))));
($a = ($dk = self).$respond, $a.$$p = (TMP_146 = function(actor, door){var self = TMP_146.$$s || this;
if (actor == null) actor = nil;if (door == null) door = nil;
return actor.$perform("open", door)}, TMP_146.$$s = self, TMP_146), $a).call($dk, "go", (($scope.get('Query')).$$scope.get('Reachable')).$new((($scope.get('Gamefic')).$$scope.get('ClubDoor'))));
(function($base, $super) {
function $TischPhone(){};
var self = $TischPhone = $klass($base, $super, 'TischPhone', $TischPhone);
var def = self.$$proto, $scope = self.$$scope;
return self.$attr_accessor("extension")
})($scope.get('Gamefic'), (($scope.get('Gamefic')).$$scope.get('Fixture')));
($a = ($dl = self).$respond, $a.$$p = (TMP_147 = function(actor, phone){var self = TMP_147.$$s || this;
if (actor == null) actor = nil;if (phone == null) phone = nil;
actor['$[]=']("using_phone", phone);
return self.$cue(actor, "call_extension");}, TMP_147.$$s = self, TMP_147), $a).call($dl, "use", $scope.get('Use').$reachable($scope.get('TischPhone')));
($a = ($dm = self).$prompt, $a.$$p = (TMP_148 = function(actor, data){var self = TMP_148.$$s || this, ext = nil, phone = nil;
if (actor == null) actor = nil;if (data == null) data = nil;
self.$cue(actor, "active");
ext = data.$input();
phone = actor['$[]']("using_phone");
actor['$[]=']("using_phone", nil);
if (ext['$==']("")) {
actor.$tell("You hang up the phone.");
return nil;;};
return actor.$perform("use", phone, ext);}, TMP_148.$$s = self, TMP_148), $a).call($dm, "call_extension", "Enter the extension you want to call (example: 1234):");
($a = ($dn = self).$respond, $a.$$p = (TMP_149 = function(actor, ext){var self = TMP_149.$$s || this, phones = nil;
if (actor == null) actor = nil;if (ext == null) ext = nil;
phones = actor.$parent().$flatten().$that_are($scope.get('TischPhone'));
if (phones.$length()['$=='](0)) {
return actor.$proceed()
} else {
return actor.$perform("use", phones['$[]'](0), ext)
};}, TMP_149.$$s = self, TMP_149), $a).call($dn, "call", $scope.get('Use').$text());
($a = ($do = self).$respond, $a.$$p = (TMP_150 = function(actor, phone, ext){var self = TMP_150.$$s || this, $a, $b, TMP_151, matches = nil, called = nil;
if (actor == null) actor = nil;if (phone == null) phone = nil;if (ext == null) ext = nil;
if ((($a = ext.$match(/[0-9]{4}/)['$nil?']()) !== nil && (!$a.$$is_boolean || $a == true))) {
return actor.$tell("'" + (ext.$cap_first()) + "' is not a valid extension.")
} else {
actor.$tell("Dialing extension " + (ext) + "...");
matches = ($a = ($b = self.$entities().$that_are($scope.get('TischPhone'))).$delete_if, $a.$$p = (TMP_151 = function(p){var self = TMP_151.$$s || this;
if (p == null) p = nil;
return p.$extension()['$=='](ext.$to_i())['$!']()}, TMP_151.$$s = self, TMP_151), $a).call($b);
called = matches['$[]'](0);
if ((($a = called['$nil?']()) !== nil && (!$a.$$is_boolean || $a == true))) {
actor.$tell("No answer.");
return nil;;};
if (called['$=='](phone)) {
actor.$tell("Busy signal. You check the phone's extension and roll your eyes.");
return nil;;};
actor['$[]=']("called", called);
return self.$cue(actor, "calling");
}}, TMP_150.$$s = self, TMP_150), $a).call($do, "use", $scope.get('Use').$reachable($scope.get('TischPhone')), $scope.get('Use').$text());
self.$interpret("dial :extension", "call :extension");
($a = ($dp = self).$respond, $a.$$p = (TMP_152 = function(actor){var self = TMP_152.$$s || this;
if (actor == null) actor = nil;
return actor.$tell("If you want to be a good thief, you'll need to be a little more creative and a lot more specific.")}, TMP_152.$$s = self, TMP_152), $a).call($dp, "steal");
($a = ($dq = self).$respond, $a.$$p = (TMP_153 = function(actor, text){var self = TMP_153.$$s || this;
if (actor == null) actor = nil;if (text == null) text = nil;
return actor.$tell("If you want to be a good thief, you'll need to be a little more creative.")}, TMP_153.$$s = self, TMP_153), $a).call($dq, "steal", $scope.get('Use').$text());
($a = ($dr = self).$respond, $a.$$p = (TMP_154 = function(actor, item){var self = TMP_154.$$s || this;
if (actor == null) actor = nil;if (item == null) item = nil;
actor.$proceed();
return actor.$tell("Alternatively, " + (self.$the(item)) + " happens to be within reach, so you can just try to " + ($scope.get('Hypertext').$link("take " + (self.$the(item)), "take it")) + ".");}, TMP_154.$$s = self, TMP_154), $a).call($dr, "steal", $scope.get('Use').$reachable());
($a = ($ds = self).$respond, $a.$$p = (TMP_155 = function(actor, thing){var self = TMP_155.$$s || this;
if (actor == null) actor = nil;if (thing == null) thing = nil;
return actor.$tell("Violence isn't your forte.")}, TMP_155.$$s = self, TMP_155), $a).call($ds, "attack", $scope.get('Use').$reachable());
self.$interpret("punch :thing", "attack :thing");
self.$interpret("kick :thing", "attack :thing");
self.$interpret("assault :thing", "attack :thing");
self.$interpret("kill :thing", "attack :thing");
($a = ($dt = self).$respond, $a.$$p = (TMP_156 = function(actor, thing){var self = TMP_156.$$s || this;
if (actor == null) actor = nil;if (thing == null) thing = nil;
return actor.$tell("Moving " + (self.$the(thing)) + " won't do any good.")}, TMP_156.$$s = self, TMP_156), $a).call($dt, "move", $scope.get('Use').$reachable());
self.$interpret("push :thing", "move :thing");
self.$interpret("pull :thing", "move :thing");
($a = ($du = self).$respond, $a.$$p = (TMP_157 = function(actor, thing){var self = TMP_157.$$s || this;
if (actor == null) actor = nil;if (thing == null) thing = nil;
return actor.$tell("" + (self.$The(thing)) + " is not something you can collapse.")}, TMP_157.$$s = self, TMP_157), $a).call($du, "collapse", $scope.get('Use').$reachable($scope.get('Entity')));
($a = ($dv = self).$respond, $a.$$p = (TMP_158 = function(actor){var self = TMP_158.$$s || this;
if (actor == null) actor = nil;
return actor.$tell("This is no time for sleep.")}, TMP_158.$$s = self, TMP_158), $a).call($dv, "sleep");
($a = ($dw = self).$meta, $a.$$p = (TMP_159 = function(actor){var self = TMP_159.$$s || this;
if (actor == null) actor = nil;
actor.$stream("
Second Story
");
actor.$tell("Written by Fred Snyder");
actor.$tell("Developed with Gamefic");
actor.$tell("Beta testers: Joseph Geipel, Arthur O'Dwyer, and Brian Rushton");
actor.$tell("Stock photos courtesy of freeimages.com");
return actor.$tell("IFID: 47d6f0b9-941d-483b-acec-e6cb9366d556");}, TMP_159.$$s = self, TMP_159), $a).call($dw, "credits");
(function($base) {
var self = $module($base, 'Personal');
var def = self.$$proto, $scope = self.$$scope;
self.$attr_writer("personal");
Opal.defn(self, '$personal?', function() {
var $a, self = this;
if (self.personal == null) self.personal = nil;
return ((($a = self.personal) !== false && $a !== nil) ? $a : self.personal = false);
});
})(self);
(function($base, $super) {
function $Entity(){};
var self = $Entity = $klass($base, $super, 'Entity', $Entity);
var def = self.$$proto, $scope = self.$$scope;
return self.$include($scope.get('Personal'))
})($scope.get('Gamefic'), null);
($a = ($dx = self).$respond, $a.$$p = (TMP_160 = function(actor, item){var self = TMP_160.$$s || this, $a;
if (actor == null) actor = nil;if (item == null) item = nil;
if ((($a = actor.$room()['$personal?']()['$!']()) !== nil && (!$a.$$is_boolean || $a == true))) {
return actor.$tell("You don't feel comfortable leaving " + (self.$the(item)) + " lying around here.")
} else {
return actor.$proceed()
}}, TMP_160.$$s = self, TMP_160), $a).call($dx, "drop", $scope.get('Use').$children("personal?"));
($a = ($dy = self).$meta, $a.$$p = (TMP_161 = function(actor){var self = TMP_161.$$s || this, $a, $b;
if (self.macguffin == null) self.macguffin = nil;
if (actor == null) actor = nil;
if ((($a = actor['$[]']("made_arrangement")) !== nil && (!$a.$$is_boolean || $a == true))) {
return actor.$tell("You're ready to trade the film for your brother, but remember that Goldletter can't be trusted.")
} else if ((($a = ($b = actor['$[]']("leery_of_riviera"), $b !== false && $b !== nil ?self.macguffin.$parent()['$=='](actor) : $b)) !== nil && (!$a.$$is_boolean || $a == true))) {
return actor.$tell("Stash the film somewhere before you go to the Riviera.")
} else if ((($a = actor['$[]']("escaped_cops")) !== nil && (!$a.$$is_boolean || $a == true))) {
return actor.$tell("You found the film. Now you need to contact Goldletter at the Riviera to set up the exchange for your brother.")
} else if ((($a = actor['$[]']("seen_card")) !== nil && (!$a.$$is_boolean || $a == true))) {
return actor.$tell("You have a hunch that Cesar Media is where the professor's lackey Frank took the film to digitize it.")
} else if ((($a = actor['$[]']("thought_of_tisch")) !== nil && (!$a.$$is_boolean || $a == true))) {
return actor.$tell("You might be able to learn more about Professor Howell and his assistant at Tisch School of the Arts.")
} else if ((($a = actor['$[]']("eavesdropped")) !== nil && (!$a.$$is_boolean || $a == true))) {
return actor.$tell("You learned an important clue from Zero's conversation with Professor Howell. Time to ditch the club and take a moment to regroup.")
} else if ((($a = actor['$[]']("been_inside_club")) !== nil && (!$a.$$is_boolean || $a == true))) {
return actor.$tell("Now that you've found a way to get into the club, you need to look for Benny Zero.")
} else {
return actor.$tell("You need to find Benny Zero and see if he's behind the MacGuffin theft. Back when you did business with him, he used to hang out at the Anchor Club.")
}}, TMP_161.$$s = self, TMP_161), $a).call($dy, "help");
self.$interpret("hint", "help");
self.martys_apartment = self.$make($scope.get('Room'), $hash2(["name", "synonyms", "proper_named", "description"], {"name": "Marty's apartment", "synonyms": "living space", "proper_named": true, "description": "Hector didn't find the film here, but not for lack of trying. The couch is ripped to pieces. Every shelf is empty, their books and knickknacks scattered across the floor. \n\nThe living space stretches north into the bedroom. The door to Lenox Road is south."}));
self.$make($scope.get('Scenery'), $hash2(["name", "indefinite_article", "synonyms", "description", "parent"], {"name": "shelves", "indefinite_article": "", "synonyms": "shelf", "description": "The shelves are empty.", "parent": self.martys_apartment}));
self.$make($scope.get('Rubble'), $hash2(["name", "indefinite_article", "description", "parent"], {"name": "books", "indefinite_article": "", "description": "Marty's usual diet of science fiction and true crime.", "parent": self.martys_apartment}));
self.$make($scope.get('Rubble'), $hash2(["name", "indefinite_article", "parent", "description"], {"name": "knickknacks", "indefinite_article": "", "parent": self.martys_apartment, "description": "A broken clock, a dirty ashtray... nothing interesting."}));
self.$make($scope.get('Rubble'), $hash2(["name", "parent"], {"name": "a broken clock", "parent": self.martys_apartment}));
self.$make($scope.get('Rubble'), $hash2(["name", "indefinite_article", "parent"], {"name": "a dirty ashtray", "indefinite_article": "", "parent": self.martys_apartment}));
couch = self.$make($scope.get('Supporter'), $hash2(["name", "synonyms", "description", "parent", "enterable", "itemized"], {"name": "a couch", "synonyms": "sofa", "description": "What a mess. Hector tore the cushions open and dug through the foam.", "parent": self.martys_apartment, "enterable": true, "itemized": false}));
self.$make($scope.get('Rubble'), $hash2(["name", "indefinite_article", "synonyms", "parent", "description"], {"name": "cushions", "indefinite_article": "", "synonyms": "slashes", "parent": self.martys_apartment, "description": "Foam spills out of the slashes."}));
foam = self.$make($scope.get('Rubble'), $hash2(["name", "indefinite_article", "parent", "description"], {"name": "foam", "indefinite_article": "", "parent": self.martys_apartment, "description": "On closer inspection, you notice a few drops of blood on it."}));
blood = self.$make($scope.get('Scenery'), $hash2(["name", "synonyms", "parent", "description"], {"name": "blood", "synonyms": "drops", "parent": nil, "description": "Your stomach turns. You assume it's Marty's blood."}));
($a = ($dz = self).$respond, $a.$$p = (TMP_162 = function(actor, foam){var self = TMP_162.$$s || this, $a, $b;
if (self.martys_apartment == null) self.martys_apartment = nil;
if (actor == null) actor = nil;if (foam == null) foam = nil;
actor.$proceed();
return (($a = [self.martys_apartment]), $b = blood, $b['$parent='].apply($b, $a), $a[$a.length-1]);}, TMP_162.$$s = self, TMP_162), $a).call($dz, "look", $scope.get('Use').$reachable(foam));
self.martys_bedroom = self.$make($scope.get('Room'), $hash2(["name", "proper_named", "description"], {"name": "Marty's bedroom", "proper_named": true, "description": "Not much here but a bare mattress. The main living space is back south."}));
mattress = self.$make($scope.get('Supporter'), $hash2(["name", "synonyms", "parent", "description", "itemized"], {"name": "a mattress", "synonyms": "bare bed", "parent": self.martys_bedroom, "description": "No frame or bedsheets. Just a lumpy old mattress. Hector tore it open, same as the couch. Marty finally has another reason to buy a proper bed, as if a decade's worth of stains weren't enough.", "itemized": false}));
self.$make($scope.get('Scenery'), $hash2(["name", "indefinite_article", "parent"], {"name": "stains", "indefinite_article": "", "parent": self.martys_bedroom}));
($a = ($ea = self).$respond, $a.$$p = (TMP_163 = function(actor, mattress){var self = TMP_163.$$s || this;
if (actor == null) actor = nil;if (mattress == null) mattress = nil;
return actor.$tell("You don't find anything. You doubt Hector did, either.")}, TMP_163.$$s = self, TMP_163), $a).call($ea, "search", $scope.get('Use').$reachable(mattress));
($a = ($eb = self).$respond, $a.$$p = (TMP_164 = function(actor, mattress){var self = TMP_164.$$s || this;
if (actor == null) actor = nil;if (mattress == null) mattress = nil;
return actor.$tell("You'd rather not.")}, TMP_164.$$s = self, TMP_164), $a).call($eb, "enter", $scope.get('Use').$reachable(mattress));
self.martys_bedroom.$connect(self.martys_apartment, $scope.get('SOUTH'));
self.martys_street = self.$make($scope.get('Room'), $hash2(["name", "proper_named", "synonyms", "description"], {"name": "Lenox Road", "proper_named": true, "synonyms": "neighborhood brooklyn railroad apartments", "description": "A modest but respectable neighborhood in Brooklyn. Marty lives in one of the railroad apartments on the north side of the street."}));
self.martys_street.$connect(self.martys_apartment, $scope.get('NORTH'));
self.bedford_avenue = self.$make($scope.get('Room'), $hash2(["name", "synonyms", "proper_named", "description"], {"name": "Bedford Avenue", "synonyms": "crown heights", "proper_named": true, "description": "Mid-century town houses are the common theme in the Crown Heights neighborhood you call home. Your apartment is in one of the brownstones on the east side of the street."}));
townhouses = self.$make($scope.get('Scenery'), $hash2(["name", "synonyms", "description", "parent"], {"name": "town houses", "synonyms": "houses townhouses row houses rowhouses brownstones", "description": "On this part of Bedford, most of the townhouses have been further subdivided into tinier one-bedroom apartments.", "parent": self.bedford_avenue}));
($a = ($ec = self).$respond, $a.$$p = (TMP_165 = function(actor, place){var self = TMP_165.$$s || this;
if (actor == null) actor = nil;if (place == null) place = nil;
return actor.$perform("go east")}, TMP_165.$$s = self, TMP_165), $a).call($ec, "go", $scope.get('Use').$reachable(townhouses));
self.your_apartment = self.$make($scope.get('Room'), $hash2(["name", "proper_named", "synonyms", "description", "personal"], {"name": "your apartment", "proper_named": true, "synonyms": "walk-up walkup studio home my house", "description": "You've been living in this second-floor walk-up for nearly six years, having moved here shortly after you told Marty you were done being a thief. It's practically a studio apartment, with a combination living/sleeping space and a small kitchenette occupying most of its 450 square feet. Go west to return to Bedford Avenue.", "personal": true}));
self.your_apartment.$connect(self.bedford_avenue, $scope.get('WEST'));
self.$make($scope.get('Scenery'), $hash2(["name", "proper_named", "parent", "description"], {"name": "your kitchenette", "proper_named": true, "parent": self.your_apartment, "description": "Small and sparsely equipped. No surprise most of your meals come from street vendors."}));
self.bed = self.$make($scope.get('Supporter'), $hash2(["name", "description", "parent"], {"name": "a bed", "description": "A plain but comfortable twin bed.", "parent": self.your_apartment}));
($a = ($ed = self).$respond, $a.$$p = (TMP_166 = function(actor, bed){var self = TMP_166.$$s || this;
if (actor == null) actor = nil;if (bed == null) bed = nil;
return actor.$tell("You're too keyed up to lie down right now.")}, TMP_166.$$s = self, TMP_166), $a).call($ed, "enter", $scope.get('Use').$reachable(self.bed));
self.dresser = self.$make($scope.get('Supporter'), $hash2(["name", "description", "parent"], {"name": "a dresser", "description": "A plain wooden dresser with a single drawer.", "parent": self.your_apartment}));
drawer = self.$make($scope.get('Container'), $hash2(["name", "parent", "attached", "itemized"], {"name": "a drawer", "parent": self.dresser, "attached": true, "itemized": false}));
($a = ($ee = self).$respond, $a.$$p = (TMP_167 = function(actor, dresser){var self = TMP_167.$$s || this;
if (actor == null) actor = nil;if (dresser == null) dresser = nil;
return actor.$perform("open", drawer)}, TMP_167.$$s = self, TMP_167), $a).call($ee, "open", $scope.get('Use').$reachable(self.dresser));
($a = ($ef = self).$respond, $a.$$p = (TMP_168 = function(actor, dresser){var self = TMP_168.$$s || this;
if (actor == null) actor = nil;if (dresser == null) dresser = nil;
return actor.$perform("close", drawer)}, TMP_168.$$s = self, TMP_168), $a).call($ef, "close", $scope.get('Use').$reachable(self.dresser));
self.lockpicks = self.$make($scope.get('Item'), $hash2(["name", "description", "synonyms", "parent", "personal"], {"name": "a set of lockpicks", "description": "One of your few keepsakes from your criminal past. You always told yourself that lockpicking might someday prove to be a valuable skill again. Today you've been proven right, although you're not at all happy with the reason.", "synonyms": "picks", "parent": drawer, "personal": true}));
($a = ($eg = self).$respond, $a.$$p = (TMP_169 = function(actor, thing){var self = TMP_169.$$s || this;
if (self.lockpicks == null) self.lockpicks = nil;
if (actor == null) actor = nil;if (thing == null) thing = nil;
if (self.lockpicks.$parent()['$=='](actor)) {
return actor.$perform("unlock", thing)
} else {
return actor.$proceed()
}}, TMP_169.$$s = self, TMP_169), $a).call($eg, "pick", $scope.get('Use').$reachable($scope.get('Lockable')));
($a = ($eh = self).$respond, $a.$$p = (TMP_170 = function(actor, text){var self = TMP_170.$$s || this, $a, $b, TMP_171, pickable = nil, done = nil;
if (self.lockpicks == null) self.lockpicks = nil;
if (actor == null) actor = nil;if (text == null) text = nil;
if (self.lockpicks.$parent()['$=='](actor)) {
pickable = actor.$parent().$children().$that_are($scope.get('Lockable'));
done = false;
($a = ($b = pickable).$each, $a.$$p = (TMP_171 = function(p){var self = TMP_171.$$s || this;
if (self.lockpicks == null) self.lockpicks = nil;
if (p == null) p = nil;
if (p.$lock_key()['$=='](self.lockpicks)) {
actor.$perform("unlock", p);
done = true;
return ($breaker.$v = nil, $breaker);
} else {
return nil
}}, TMP_171.$$s = self, TMP_171), $a).call($b);
if ((($a = done['$!']()) !== nil && (!$a.$$is_boolean || $a == true))) {
return actor.$perform("You don't see any locks to pick here.")
} else {
return nil
};
} else {
return actor.$tell("You don't have your lockpicks.")
}}, TMP_170.$$s = self, TMP_170), $a).call($eh, "pick", $scope.get('Use').$text("lock"));
photo = self.$make($scope.get('Item'), $hash2(["name", "description", "parent", "personal"], {"name": "a photograph", "description": "A picture of you and Marty in Vegas, blowing the loot from a heist you pulled in Brownsville together. You appreciated the sun after a long New York winter, but Marty spent most of his time in the casino. He was always the bigger gambler.", "parent": self.dresser, "personal": true}));
paystub = self.$make($scope.get('Item'), $hash2(["name", "synonyms", "description", "parent", "personal"], {"name": "a paystub", "synonyms": "stub", "description": "Your last paystub from Zip Couriers, the bike messenger service where you've been working for the past few years.", "parent": self.dresser, "personal": true}));
($a = ($ei = self).$respond, $a.$$p = (TMP_172 = function(actor, paystub){var self = TMP_172.$$s || this;
if (actor == null) actor = nil;if (paystub == null) paystub = nil;
return actor.$tell("The pay is nothing to write home about, but it's an honest living, and you love to ride.")}, TMP_172.$$s = self, TMP_172), $a).call($ei, "read", $scope.get('Use').$reachable(paystub));
self.east_15th_street = self.$make($scope.get('Room'), $hash2(["name", "proper_named", "description"], {"name": "East 15th Street", "proper_named": true, "description": "A narrow one-way street west of Union Square. The white stone facade of the Anchor Club looms over you on the south side of the street."}));
self.$make($scope.get('Scenery'), $hash2(["name", "parent", "synonyms"], {"name": "facade", "parent": self.east_15th_street, "synonyms": "white stone"}));
laundry_truck = self.$make($scope.get('Container'), $hash2(["name", "description", "locale_description", "parent", "lock_key", "locked"], {"name": "a delivery truck", "description": "The side panel says \"Green's Laundry Service.\"", "locale_description": "A delivery truck is parked on the corner.", "parent": self.east_15th_street, "lock_key": self.lockpicks, "locked": true}));
($a = ($ej = self).$respond, $a.$$p = (TMP_173 = function(actor, truck){var self = TMP_173.$$s || this;
if (actor == null) actor = nil;if (truck == null) truck = nil;
return actor.$tell("That won't accomplish anything but attracting a lot of attention.")}, TMP_173.$$s = self, TMP_173), $a).call($ej, "climb", $scope.get('Use').$reachable(laundry_truck));
uniform = self.$make($scope.get('Coat'), $hash2(["name", "synonyms", "description", "parent"], {"name": "a uniform", "synonyms": "Anchor Club staff coat", "description": "One of the coats typically worn by the Anchor Club staff.", "parent": laundry_truck}));
($a = ($ek = self).$respond, $a.$$p = (TMP_174 = function(actor, truck){var self = TMP_174.$$s || this;
if (actor == null) actor = nil;if (truck == null) truck = nil;
actor.$tell("Hotwiring is not one of your strong suits. Even if it were, you're not sure you'd know how to drive a truck that big.");
if (uniform.$parent()['$=='](truck)) {
return actor.$tell("On the other hand, it might not hurt to open it up and look inside.")
} else {
return nil
};}, TMP_174.$$s = self, TMP_174), $a).call($ek, "take", $scope.get('Use').$reachable(laundry_truck));
($a = ($el = self).$respond, $a.$$p = (TMP_175 = function(actor, portal){var self = TMP_175.$$s || this, $a, $b, $c;
if (self.east_15th_street == null) self.east_15th_street = nil;
if (actor == null) actor = nil;if (portal == null) portal = nil;
if ((($a = ($b = (($c = portal.$destination()['$=='](self.east_15th_street)) ? actor['$[]']("eavesdropped")['$=='](true) : $c), $b !== false && $b !== nil ?actor['$[]']("thought_of_tisch")['$=='](false) : $b)) !== nil && (!$a.$$is_boolean || $a == true))) {
(($a = [portal.$destination()]), $b = actor, $b['$parent='].apply($b, $a), $a[$a.length-1]);
return self.$cue(actor, "think_about_tisch");
} else {
return actor.$proceed()
}}, TMP_175.$$s = self, TMP_175), $a).call($el, "go", $scope.get('Use').$reachable($scope.get('Portal')));
($a = ($em = self).$respond, $a.$$p = (TMP_176 = function(actor, truck){var self = TMP_176.$$s || this;
if (actor == null) actor = nil;if (truck == null) truck = nil;
return actor.$perform("take", truck)}, TMP_176.$$s = self, TMP_176), $a).call($em, "drive", $scope.get('Use').$reachable(laundry_truck));
($a = ($en = self).$respond, $a.$$p = (TMP_177 = function(actor, truck){var self = TMP_177.$$s || this;
if (actor == null) actor = nil;if (truck == null) truck = nil;
return actor.$perform("take", truck)}, TMP_177.$$s = self, TMP_177), $a).call($en, "start", $scope.get('Use').$reachable(laundry_truck));
($a = ($eo = self).$respond, $a.$$p = (TMP_178 = function(actor, truck){var self = TMP_178.$$s || this, $a;
if (actor == null) actor = nil;if (truck == null) truck = nil;
actor.$tell("Better not. If the driver comes back to the truck while you're inside it, you'd be a sitting duck.");
if (uniform.$parent()['$=='](truck)) {
return actor.$tell("On the other hand, it might not hurt to " + ((function() {if ((($a = truck['$open?']()) !== nil && (!$a.$$is_boolean || $a == true))) {
return ""
} else {
return "open it up and "
}; return nil; })()) + "look inside.")
} else {
return nil
};}, TMP_178.$$s = self, TMP_178), $a).call($eo, "enter", $scope.get('Use').$reachable(laundry_truck));
($a = ($ep = self).$respond, $a.$$p = (TMP_179 = function(actor, truck){var self = TMP_179.$$s || this;
if (actor == null) actor = nil;if (truck == null) truck = nil;
return actor.$perform("enter", truck)}, TMP_179.$$s = self, TMP_179), $a).call($ep, "ride", $scope.get('Use').$reachable(laundry_truck));
club_lobby = self.$make($scope.get('Room'), $hash2(["name", "description"], {"name": "the club lobby", "description": "A vestibule leads south to the interior of the club. The exit to the street is back north."}));
club_lobby.$connect(self.east_15th_street, $scope.get('NORTH'));
self.$make($scope.get('Scenery'), $hash2(["name", "parent"], {"name": "a vestibule", "parent": club_lobby}));
self.$make($scope.get('Scenery'), $hash2(["name", "parent", "description"], {"name": "a podium", "parent": club_lobby, "description": "A narrow mahogany stand where the hostess stands watch over the lounge."}));
club_lounge = self.$make($scope.get('Room'), $hash2(["name", "description"], {"name": "the main lounge", "description": "This part of the club is elegantly decorated with expensive-looking oil paintings and overstuffed leather chairs. A hallway to the east leads to smaller rooms for private meetings."}));
club_lounge.$connect(club_lobby, $scope.get('NORTH'));
self.$make($scope.get('Scenery'), $hash2(["name", "synonyms", "indefinite_article", "parent", "description"], {"name": "oil paintings", "synonyms": "expensive european landscapes tones", "indefinite_article": "", "parent": club_lounge, "description": "The paintings feature lots of European landscapes and rich earthy tones."}));
chairs = self.$make($scope.get('Scenery'), $hash2(["name", "synonyms", "indefinite_article", "parent"], {"name": "leather chairs", "synonyms": "overstuffed", "indefinite_article": "", "parent": club_lounge}));
($a = ($eq = self).$respond, $a.$$p = (TMP_180 = function(actor, chairs){var self = TMP_180.$$s || this;
if (actor == null) actor = nil;if (chairs == null) chairs = nil;
return actor.$tell("If a staff member wandered in here and caught you lounging, your disguise might not stand under scrutiny.")}, TMP_180.$$s = self, TMP_180), $a).call($eq, "enter", $scope.get('Use').$reachable(chairs));
hostess = self.$make($scope.get('Character'), $hash2(["name", "parent", "locale_description", "description"], {"name": "the hostess", "parent": club_lobby, "locale_description": "A hostess stands behind a podium, reserving her smiles for when she needs to greet a member.", "description": "She's about as aloof as she can get without being rude."}));
($a = ($er = self).$respond, $a.$$p = (TMP_181 = function(actor, portal){var self = TMP_181.$$s || this, $a, $b;
if (actor == null) actor = nil;if (portal == null) portal = nil;
if ((($a = (($b = uniform.$parent()['$=='](actor)) ? uniform['$worn?']() : $b)) !== nil && (!$a.$$is_boolean || $a == true))) {
actor.$tell("You stride purposefully past the hostess with your head lowered. She glances at the uniform and disregards you.");
actor['$[]=']("been_inside_club", true);
(($a = [club_lounge]), $b = actor, $b['$parent='].apply($b, $a), $a[$a.length-1]);
return actor.$perform("look");
} else {
return actor.$tell("" + (self.$The(hostess)) + " stops you. \"Sorry, miss. Members only.\"")
}}, TMP_181.$$s = self, TMP_181), $a).call($er, "go", (($scope.get('Query')).$$scope.get('Reachable')).$new(club_lobby.$find("south")));
club_hallway = self.$make($scope.get('Room'), $hash2(["name", "synonyms", "description"], {"name": "the private rooms", "synonyms": "alcove hallway", "description": "This alcove leads to rooms where members can hold private meetings. The main lounge is west."}));
club_hallway.$connect(club_lounge, $scope.get('WEST'));
($a = ($es = self).$respond, $a.$$p = (TMP_182 = function(actor, clothing){var self = TMP_182.$$s || this, $a, $b, $c;
if (actor == null) actor = nil;if (clothing == null) clothing = nil;
if ((($a = ((($b = ((($c = actor.$parent()['$=='](club_lounge)) !== false && $c !== nil) ? $c : actor.$parent()['$=='](club_hallway))) !== false && $b !== nil) ? $b : ((($c = actor.$parent()['$=='](club_lobby)) ? actor['$[]']("been_inside_club") : $c)))) !== nil && (!$a.$$is_boolean || $a == true))) {
return actor.$tell("Better not blow your cover while you're inside in the club.")
} else {
return actor.$proceed()
}}, TMP_182.$$s = self, TMP_182), $a).call($es, "doff", (($scope.get('Query')).$$scope.get('Children')).$new(uniform));
south_door = self.$make($scope.get('ClubDoor'), $hash2(["name", "parent"], {"name": "the southern door", "parent": club_hallway}));
east_door = self.$make($scope.get('ClubDoor'), $hash2(["name", "parent"], {"name": "the eastern door", "parent": club_hallway}));
($a = ($et = self).$respond, $a.$$p = (TMP_183 = function(actor, door){var self = TMP_183.$$s || this, $a;
if (actor == null) actor = nil;if (door == null) door = nil;
if ((($a = actor['$[]']("eavesdropped")['$!']()) !== nil && (!$a.$$is_boolean || $a == true))) {
return self.$cue(actor, "hear_benny")
} else {
return actor.$proceed()
}}, TMP_183.$$s = self, TMP_183), $a).call($et, "open", (($scope.get('Query')).$$scope.get('Reachable')).$new(east_door));
($a = ($eu = self).$pause, $a.$$p = (TMP_184 = function(actor, data){var self = TMP_184.$$s || this, $a, $b;
if (actor == null) actor = nil;if (data == null) data = nil;
actor.$tell("Mike gives you an eager smile. \"What can I do for you?\"");
actor.$tell("\"I'm looking for one of the TAs, but I can't remember his name,\" you say. \"He's supposed to be working on a project for Professor Howell.\"");
actor.$tell("\"Oh, you must mean Frank. He came in here a couple hours ago to transfer some old cans to digital, but we don't have the right equipment. He had to go to some private studio to use their facilities instead.\"");
actor.$tell("\"Do you remember which one?\"");
actor.$tell("\"He didn't say, but I think he had to get into Howell's office to get the address.\"");
actor.$tell("\"Do you think I could take a look? It's really important that I talk to him tonight.\"");
actor.$tell("Mike looks crushed. \"I wish I could help you, but the professor's out and all the offices are locked. You might have to wait until tomorrow.\"");
actor.$tell("\"Maybe I could knock on his door? Just to make sure?\"");
actor.$tell("\"If you want. It's 1203, one floor up.\"");
actor['$[]=']("talked_to_staff", true);
return (($a = ["look"]), $b = data, $b['$next_cue='].apply($b, $a), $a[$a.length-1]);}, TMP_184.$$s = self, TMP_184), $a).call($eu, "talk_to_staff");
self.broadway = self.$make($scope.get('Room'), $hash2(["name", "synonyms", "description", "proper_named"], {"name": "Broadway", "synonyms": "new york university tisch school arts", "description": "On the west side of the street, the violet flag of New York University flutters gently over the entrance to Tisch School of the Arts.", "proper_named": true}));
self.$make($scope.get('Scenery'), $hash2(["name", "synonyms", "parent"], {"name": "a flag", "synonyms": "violet", "parent": self.broadway}));
tisch_lobby = self.$make($scope.get('Room'), $hash2(["name", "synonyms", "description"], {"name": "the Tisch lobby", "synonyms": "school arts", "description": "A steady stream of students flows through the Tisch's lobby. The lower concourse offers a lounge and tables. A directory is affixed to the wall near the elevators. The exit to Broadway is east."}));
entrance = tisch_lobby.$connect(self.broadway, $scope.get('EAST'));
(($a = ["entrance"]), $ev = entrance, $ev['$synonyms='].apply($ev, $a), $a[$a.length-1]);
self.$make($scope.get('Scenery'), $hash2(["name", "description", "synonyms", "indefinite_article", "parent"], {"name": "students", "description": "The usual affluent crowd of NYU kids.", "synonyms": "stream crowd kids", "indefinite_article": "the", "parent": tisch_lobby}));
self.$make($scope.get('Scenery'), $hash2(["name", "parent"], {"name": "lounge", "parent": tisch_lobby}));
self.$make($scope.get('Scenery'), $hash2(["name", "indefinite_article", "parent"], {"name": "tables", "indefinite_article": "", "parent": tisch_lobby}));
directory = self.$make($scope.get('Scenery'), $hash2(["name", "description", "parent"], {"name": "the directory", "description": "You scan the names and find a listing for Professor Howell in 1203.", "parent": tisch_lobby}));
($a = ($ev = self).$respond, $a.$$p = (TMP_185 = function(actor, directory){var self = TMP_185.$$s || this, $a, $b;
if (actor == null) actor = nil;if (directory == null) directory = nil;
actor.$proceed();
(($a = ["Professor Howell's office is 1203."]), $b = directory, $b['$description='].apply($b, $a), $a[$a.length-1]);
return actor['$[]=']("found_center", true);}, TMP_185.$$s = self, TMP_185), $a).call($ev, "look", (($scope.get('Query')).$$scope.get('Visible')).$new(directory));
study_hall = self.$make($scope.get('Room'), $hash2(["name", "description"], {"name": "a study hall", "description": "This looks to be a common work area for students and faculty. A large table occupies the center of the room. There are two exits leading north and west."}));
self.$make($scope.get('Supporter'), $hash2(["name", "synonyms", "parent"], {"name": "a table", "synonyms": "large", "parent": study_hall}));
courtesy_phone = self.$make($scope.get('TischPhone'), $hash2(["name", "parent", "locale_description", "description", "extension"], {"name": "a courtesy phone", "parent": study_hall, "locale_description": "A courtesy phone is fixed to the wall next to the elevators.", "description": "This phone lets you dial other extensions in the building. A label identifies its extension as 1200.", "extension": 1200}));
office_hallway = self.$make($scope.get('Room'), $hash2(["name", "description"], {"name": "the office hallway", "description": "This hallway spans from the western edge of the building to the study hall back east. The door to Howell's office, room 1203, is north."}));
office_hallway.$connect(study_hall, $scope.get('EAST'));
cafeteria = self.$make($scope.get('Room'), $hash2(["name", "description"], {"name": "the cafeteria", "description": "A small faculty cafeteria with a vendor's booth, which is currently closed. Hallways lead north and south."}));
cafeteria.$connect(study_hall, $scope.get('SOUTH'));
self.$make($scope.get('Scenery'), $hash2(["name", "synonyms", "parent", "description"], {"name": "a booth", "synonyms": "vendor vendor's vendors", "parent": cafeteria, "description": "It's closed."}));
northeastern_corner = self.$make($scope.get('Room'), $hash2(["name", "description"], {"name": "north of cafeteria", "description": "This corner branches south and west."}));
northeastern_corner.$connect(cafeteria, $scope.get('SOUTH'));
back_hallway = self.$make($scope.get('Room'), $hash2(["name", "description"], {"name": "the northern hallway", "description": "A hallway spanning east and west."}));
back_hallway.$connect(northeastern_corner, $scope.get('EAST'));
custodian_office = self.$make($scope.get('Room'), $hash2(["name", "description"], {"name": "the custodian's office", "description": "A nondescript workspace. The nameplate on the desk simply says \"Custodian.\" A phone is fixed to the wall behind the desk."}));
self.$make($scope.get('Scenery'), $hash2(["name"], {"name": "a desk"}));
plaque = self.$make($scope.get('Rubble'), $hash2(["name", "synonyms", "description", "parent"], {"name": "a plaque", "synonyms": "nameplate", "description": "It says \"Custodian.\"", "parent": custodian_office}));
($a = ($ew = self).$respond, $a.$$p = (TMP_186 = function(actor, plaque){var self = TMP_186.$$s || this;
if (actor == null) actor = nil;if (plaque == null) plaque = nil;
return actor.$tell("You don't have any use for the plaque.")}, TMP_186.$$s = self, TMP_186), $a).call($ew, "take", $scope.get('Use').$reachable(plaque));
custodian_office.$connect(back_hallway, $scope.get('EAST'));
office_phone = self.$make($scope.get('TischPhone'), $hash2(["name", "parent", "description", "extension", "itemized"], {"name": "an office phone", "parent": custodian_office, "description": "The custodian's extension is 1215.", "extension": 1215, "itemized": false}));
southwestern_corner = self.$make($scope.get('Room'), $hash2(["name", "description"], {"name": "the southwestern corner", "description": "This corner branches north and east."}));
southwestern_corner.$connect(office_hallway, $scope.get('EAST'));
western_hallway = self.$make($scope.get('Room'), $hash2(["name", "description"], {"name": "the western hallway", "description": "This hallway facing the back side of the building leads north and south."}));
western_hallway.$connect(southwestern_corner, $scope.get('SOUTH'));
western_hallway.$connect(custodian_office, $scope.get('NORTH'));
guard = self.$make($scope.get('Character'), $hash2(["name", "parent"], {"name": "a security guard", "parent": office_hallway}));
guard['$[]=']("answering_phone", false);
guard['$[]=']("path", []);
howell_office = self.$make($scope.get('Room'), $hash2(["name", "proper_named", "synonyms", "description"], {"name": "Professor Howell's office", "proper_named": true, "synonyms": "1203", "description": "A windowless room with a desk. Suitable for student conferences and not much else."}));
office_door = howell_office.$connect(office_hallway, $scope.get('SOUTH'), $scope.get('Door'));
(($a = [false]), $ex = office_door, $ex['$open='].apply($ex, $a), $a[$a.length-1]);
(($a = [true]), $ex = office_door, $ex['$locked='].apply($ex, $a), $a[$a.length-1]);
(($a = [self.lockpicks]), $ex = office_door, $ex['$lock_key='].apply($ex, $a), $a[$a.length-1]);
desk = self.$make($scope.get('Supporter'), $hash2(["name", "parent", "itemized", "description"], {"name": "a desk", "parent": howell_office, "itemized": false, "description": "A small but sturdy oak writing desk."}));
drawer = self.$make($scope.get('Container'), $hash2(["name", "parent", "attached"], {"name": "a drawer", "parent": desk, "attached": true}));
card = self.$make($scope.get('Item'), $hash2(["name", "parent", "description"], {"name": "a business card", "parent": drawer, "description": "The card's from Carla Cesar, owner, Cesar Media on Mulberry Street. It says they offer production, editing, transfer, and restoration services."}));
office_rooms = [study_hall, office_hallway, cafeteria, northeastern_corner, back_hallway, southwestern_corner, custodian_office, western_hallway, howell_office];
($a = ($ex = self).$respond, $a.$$p = (TMP_187 = function(actor, portal){var self = TMP_187.$$s || this, $a;
if (actor == null) actor = nil;if (portal == null) portal = nil;
if (guard.$parent()['$=='](portal.$destination())) {
if ($rb_gt(guard['$[]']("path").$length(), 0)) {
return actor.$tell("Too risky. You can hear the guard wandering around that way.")
} else if ((($a = actor['$[]']("seen_guard")) !== nil && (!$a.$$is_boolean || $a == true))) {
return actor.$tell("You see the guard in " + (self.$the(guard.$parent())) + " and duck back out of sight.")
} else {
return self.$cue(actor, "guard_stop")
}
} else {
return actor.$proceed()
}}, TMP_187.$$s = self, TMP_187), $a).call($ex, "go", $scope.get('Use').$reachable($scope.get('Portal')));
($a = ($ey = self).$pause, $a.$$p = (TMP_188 = function(actor, data){var self = TMP_188.$$s || this, $a, $b;
if (actor == null) actor = nil;if (data == null) data = nil;
actor.$tell("You walk into " + (self.$the(guard.$parent())) + " and bump into a security guard. He eyes you suspiciously. \"What are you doing here?\"");
actor.$tell("\"Uh... using the study hall,\" you say. \"I have a big exam tomorrow.\"");
actor.$tell("\"Make sure you stay there. All the offices are closed for the night.\"");
actor.$tell("You apologize and go back the way you came.");
actor['$[]=']("seen_guard", true);
return (($a = ["look"]), $b = data, $b['$next_cue='].apply($b, $a), $a[$a.length-1]);}, TMP_188.$$s = self, TMP_188), $a).call($ey, "guard_stop");
($a = ($ez = self).$respond, $a.$$p = (TMP_189 = function(actor, card){var self = TMP_189.$$s || this, $a;
if (actor == null) actor = nil;if (card == null) card = nil;
actor.$proceed();
if ((($a = actor['$[]']("seen_card")['$!']()) !== nil && (!$a.$$is_boolean || $a == true))) {
actor.$tell("Bingo. This must be the studio where Howell's assistant took the film.");
return actor['$[]=']("seen_card", true);
} else {
return nil
};}, TMP_189.$$s = self, TMP_189), $a).call($ez, "look", $scope.get('Use').$reachable(card));
($a = ($fa = self).$respond, $a.$$p = (TMP_190 = function(actor, portal){var self = TMP_190.$$s || this, $a, $b;
if (actor == null) actor = nil;if (portal == null) portal = nil;
actor.$proceed();
if ((($a = ((($b = portal['$=='](self.$pick("north from office hallway"))) !== false && $b !== nil) ? $b : portal['$=='](self.$pick("south from howell")))) !== nil && (!$a.$$is_boolean || $a == true))) {
(($a = [false]), $b = portal, $b['$open='].apply($b, $a), $a[$a.length-1]);
return actor.$tell("You carefully shut the door behind you.");
} else {
return nil
};}, TMP_190.$$s = self, TMP_190), $a).call($fa, "go", $scope.get('Use').$reachable($scope.get('Portal')));
desk_phone = self.$make($scope.get('TischPhone'), $hash2(["name", "parent", "description", "extension"], {"name": "an office phone", "parent": desk, "description": "Just like the other phones on this floor, you can use this one to dial other extensions in the buildings. Its extension is 1203, same as the room number.", "extension": 1203}));
elevators = self.$make($scope.get('Transporter'), $hash2(["name", "proper_named", "parent", "unavailable_message", "mobile"], {"name": "the elevators", "proper_named": true, "parent": tisch_lobby, "unavailable_message": "It's a big building. You have no idea where to go.", "mobile": true}));
($a = ($fb = elevators).$make_destination_hash, $a.$$p = (TMP_191 = function(actor){var self = TMP_191.$$s || this, $a, destinations = nil;
if (actor == null) actor = nil;
destinations = $hash2([], {});
if ((($a = actor['$[]']("found_center")) !== nil && (!$a.$$is_boolean || $a == true))) {
destinations['$[]=']("the lobby", tisch_lobby);
destinations['$[]=']("the 12th floor", study_hall);
destinations['$[]=']("Stay here", nil);};
return destinations;}, TMP_191.$$s = self, TMP_191), $a).call($fb);
($a = ($fc = self).$respond, $a.$$p = (TMP_192 = function(actor, phone){var self = TMP_192.$$s || this, $a;
if (actor == null) actor = nil;if (phone == null) phone = nil;
if ((($a = guard['$[]']("answering_phone")) !== nil && (!$a.$$is_boolean || $a == true))) {
return actor.$tell("No need to play more games with the phone right now. You've already sent the guard on a wild goose chase.")
} else {
return actor.$proceed()
}}, TMP_192.$$s = self, TMP_192), $a).call($fc, "use", $scope.get('Use').$reachable($scope.get('TischPhone')));
($a = ($fd = self).$scene, $a.$$p = (TMP_193 = function(actor, data){var self = TMP_193.$$s || this, $a, $b, $case = nil, finder = nil;
if (actor == null) actor = nil;if (data == null) data = nil;
$case = actor['$[]']("called").$extension();if ((1203)['$===']($case)) {actor.$tell("You can hear a phone ringing in one of the offices, but no one answers.");
return nil;;}else if ((1200)['$===']($case)) {actor.$tell("You hear the phone ring in the study hall. The guard mutters under his breath and leaves his post to answer it. You set the phone to speaker and mute so it keeps ringing when you hang it up.")}else if ((1215)['$===']($case)) {actor.$tell("You hear the phone ring in the custodian's office. The guard mutters under his breath and leaves his post to answer it. You set the phone to speaker and mute so it keeps ringing when you hang it up.")};
actor['$[]=']("seen_guard", true);
finder = $scope.get('Pathfinder').$new(guard.$room(), actor['$[]']("called").$room());
guard['$[]=']("answering_phone", true);
guard['$[]=']("path", finder.$path());
(($a = [guard['$[]']("path").$shift()]), $b = guard, $b['$parent='].apply($b, $a), $a[$a.length-1]);
return (($a = ["active"]), $b = data, $b['$next_cue='].apply($b, $a), $a[$a.length-1]);}, TMP_193.$$s = self, TMP_193), $a).call($fd, "calling");
($a = ($fe = self).$on_player_update, $a.$$p = (TMP_194 = function(actor){var self = TMP_194.$$s || this, $a, $b, $c, TMP_195, finder = nil, distance = nil, options = nil, choice = nil;
if (actor == null) actor = nil;
($a = "path", $b = guard, ((($c = $b['$[]']($a)) !== false && $c !== nil) ? $c : $b['$[]=']($a, [])));
if ($rb_gt(guard['$[]']("path").$length(), 0)) {
if (guard['$[]']("path").$first()['$=='](guard.$parent())) {
if ((($a = office_rooms['$include?'](actor.$parent())) !== nil && (!$a.$$is_boolean || $a == true))) {
finder = $scope.get('Pathfinder').$new(guard.$room(), actor.$room());
distance = "Elsewhere in the building, you hear";
if (finder.$path().$length()['$=='](1)) {
distance = "From " + (self.$the(guard.$room())) + ", you hear"};
actor.$tell("" + (distance) + " the guard slam down the phone and mutter something about punk kids these days.");}};
if ((($a = ((($b = guard['$[]']("path").$first()['$=='](actor.$parent())) !== false && $b !== nil) ? $b : guard.$parent()['$=='](actor.$parent()))) !== nil && (!$a.$$is_boolean || $a == true))) {
actor.$tell("Uh-oh. You hear the guard approaching and scurry in the other direction.");
(($a = [false]), $b = office_door, $b['$open='].apply($b, $a), $a[$a.length-1]);
options = ($a = ($b = actor.$parent().$children().$that_are($scope.get('Portal'))).$delete_if, $a.$$p = (TMP_195 = function(p){var self = TMP_195.$$s || this, $a;
if (p == null) p = nil;
return ((($a = p.$destination()['$=='](guard.$parent())) !== false && $a !== nil) ? $a : p.$destination()['$=='](howell_office))}, TMP_195.$$s = self, TMP_195), $a).call($b);
choice = options['$[]'](0);
(($a = [choice.$destination()]), $c = actor, $c['$parent='].apply($c, $a), $a[$a.length-1]);
actor.$perform("look");};
return (($a = [guard['$[]']("path").$shift()]), $c = guard, $c['$parent='].apply($c, $a), $a[$a.length-1]);
} else if ((($a = guard['$[]']("answering_phone")) !== nil && (!$a.$$is_boolean || $a == true))) {
if ((($a = office_rooms['$include?'](actor.$parent())) !== nil && (!$a.$$is_boolean || $a == true))) {
finder = $scope.get('Pathfinder').$new(guard.$room(), actor.$room());
distance = "Elsewhere in the building, you hear";
if (finder.$path().$length()['$=='](1)) {
distance = "From " + (self.$the(guard.$room())) + ", you hear"};
actor.$tell("" + (distance) + " the guard answer the phone. \"Hello? Hello? Oh, ferchrissake.\"");};
guard['$[]=']("answering_phone", false);
finder = $scope.get('Pathfinder').$new(guard.$room(), office_hallway);
guard['$[]=']("path", finder.$path());
return guard['$[]']("path").$unshift(guard.$parent());
} else {
return nil
};}, TMP_194.$$s = self, TMP_194), $a).call($fe);
($a = ($ff = self).$pause, $a.$$p = (TMP_196 = function(actor, data){var self = TMP_196.$$s || this, $a, $b;
if (self.hostage == null) self.hostage = nil;
if (actor == null) actor = nil;if (data == null) data = nil;
(($a = [nil]), $b = self.hostage, $b['$parent='].apply($b, $a), $a[$a.length-1]);
actor.$tell("First you remove the tape from the woman's mouth. \"Are you okay?\"");
actor.$tell("\"Do I look okay? Who the hell are you?\"");
actor.$tell("\"My name's Jane. You must be Carla Cesar.\"");
actor.$tell("\"Yeah. What are you doing here?\"");
actor.$tell("\"I need to get something back from the guy who's using your studio.\"");
actor.$tell("\"Let me guess. Bride of MacGuffin?\"");
return (($a = ["free_hostage_2"]), $b = data, $b['$next_cue='].apply($b, $a), $a[$a.length-1]);}, TMP_196.$$s = self, TMP_196), $a).call($ff, "free_hostage");
($a = ($fg = self).$pause, $a.$$p = (TMP_197 = function(actor, data){var self = TMP_197.$$s || this, $a, $b;
if (actor == null) actor = nil;if (data == null) data = nil;
actor.$tell("\"How'd you know?\"");
actor.$tell("\"Frank asked me if he could use the studio this afternoon. He's always been a good kid, done some freelance for me before, so I figured I'd do him a favor. That was before I found out he was doing a job for that slimeball Benny Zero, and it had to do with a movie that's been lost for over fifty years. It sounded shady, so I told him I didn't want anything to do with it. When I told him to leave, that goon he brought with him put his hands on me.\"");
actor.$tell("You help her untie the ropes. \"You're lucky he didn't kill you.\"");
actor.$tell("\"I think he wanted to, except Frank was worried he'd need my help with the equipment.\"");
actor.$tell("\"How many of them are out there?\"");
actor.$tell("\"As far as I know, just Frank and the punk who tied me up. Forget about them.\" She stands up and heads for the trap door. \"Let's take the roof to the street and call the cops.\"");
actor.$tell("You put a hand on her shoulder. \"Wait. I can't leave without that film.\"");
return (($a = ["free_hostage_3"]), $b = data, $b['$next_cue='].apply($b, $a), $a[$a.length-1]);}, TMP_197.$$s = self, TMP_197), $a).call($fg, "free_hostage_2");
($a = ($fh = self).$pause, $a.$$p = (TMP_198 = function(actor, data){var self = TMP_198.$$s || this, $a, $b;
if (actor == null) actor = nil;if (data == null) data = nil;
actor.$tell("\"If you're the rightful owner, I'm sure the cops will sort it out.\"");
actor.$tell("\"You don't understand. Benny stole it from a guy named Goldletter. He's just as rotten as Benny. Today he kidnapped my brother. If I don't get him that film back, my brother will die.\"");
actor.$tell("Carla stares at you thoughtfully. \"Maybe I can help you. I guess I owe you one. And besides, I owe that bastard Frank something else.\" She glances at the door. \"I'm going into the studio. Wait thirty seconds and follow me.\"");
actor.$tell("She slips through the door and closes it behind her. You start counting.");
actor.$tell("...8...9...10...11...");
actor.$tell("Muffled noises, barely audible beneath the sound of the movie. A grunt and a thud.");
actor.$tell("...18...19...20...21...");
actor.$tell("The movie abruptly stops. Nothing from the office but silence.");
actor.$tell("...27...28...29...30.");
return (($a = ["look"]), $b = data, $b['$next_cue='].apply($b, $a), $a[$a.length-1]);}, TMP_198.$$s = self, TMP_198), $a).call($fh, "free_hostage_3");
($a = ($fi = self).$pause, $a.$$p = (TMP_199 = function(actor, data){var self = TMP_199.$$s || this, $a, $b;
if (actor == null) actor = nil;if (data == null) data = nil;
actor.$tell("You find Carla standing over a man lying prone on the floor.");
actor.$tell("\"Lucky for us they didn't search my desk,\" Carla says. \"I used this to take Frank down quiet.\" She shows you the taser in her left hand. \"And I had this in case it didn't work.\" She shows you the pistol in her right.");
return (($a = ["followed_carla_2"]), $b = data, $b['$next_cue='].apply($b, $a), $a[$a.length-1]);}, TMP_199.$$s = self, TMP_199), $a).call($fi, "followed_carla");
($a = ($fj = self).$pause, $a.$$p = (TMP_200 = function(actor, data){var self = TMP_200.$$s || this, $a, $b;
if (actor == null) actor = nil;if (data == null) data = nil;
actor.$tell("\"The goon is still out in the hallway, but if he gets suspicious, that chair won't keep the door shut forever.\" Carla nods at the workbench. \"Take the film and get out of here. I'll wait until you're gone to call the cops.\"");
actor.$tell("You breathe a sigh of relief. \"Thanks, Carla.\"");
actor.$tell("\"Right back at you. Good luck with your brother.\"");
return (($a = ["look"]), $b = data, $b['$next_cue='].apply($b, $a), $a[$a.length-1]);}, TMP_200.$$s = self, TMP_200), $a).call($fj, "followed_carla_2");
self.mulberry_street = self.$make($scope.get('Room'), $hash2(["name", "synonyms", "description"], {"name": "Mulberry Street", "synonyms": "little italy dingy gray office building 300 block", "description": "This thoroughfare at the heart of Little Italy is among the oldest streets in the city. A dingy gray office building resides on the west side of the 300 block. \"Cesar Media\" is emblazoned across one of the second-floor windows. A narrow alley separates the building from its neighbor to the southwest."}));
self.$make($scope.get('Scenery'), $hash2(["name", "parent"], {"name": "neighbor", "parent": self.mulberry_street}));
self.$make($scope.get('Scenery'), $hash2(["name", "synonyms", "parent", "description"], {"name": "alley", "synonyms": "opening", "parent": self.mulberry_street, "description": "The alley's opening is southwest of here."}));
cesar_wall = self.$make($scope.get('Scenery'), $hash2(["name", "synonyms", "parent"], {"name": "the building's wall", "synonyms": "cesar office building", "parent": self.mulberry_street}));
self.cesar_lobby = self.$make($scope.get('Room'), $hash2(["name", "synonyms", "description"], {"name": "the lobby", "synonyms": "cesar building first floor 1st floor", "description": "A short entranceway opens into the building proper. The window in the door leading west is dark. A spiral staircase leads up to the second floor."}));
self.cesar_lobby.$connect(self.mulberry_street, $scope.get('EAST'));
self.super_office = self.$make($scope.get('Room'), $hash2(["name", "description"], {"name": "the superintendent's office", "description": "Not much here but a small desk with a few random scraps of paper scattered around it."}));
desk = self.$make($scope.get('Scenery'), $hash2(["name", "parent"], {"name": "a desk", "parent": self.super_office}));
paper = self.$make($scope.get('Rubble'), $hash2(["name", "synonyms", "indefinite_article", "description", "parent"], {"name": "scraps of paper", "synonyms": "papers receipts to-do lists", "indefinite_article": "", "description": "Old receipts, to-do lists, hardware store flyers... nothing interesting.", "parent": self.super_office}));
($a = ($fk = self).$respond, $a.$$p = (TMP_201 = function(actor, paper){var self = TMP_201.$$s || this;
if (actor == null) actor = nil;if (paper == null) paper = nil;
return actor.$tell("You don't have any use for " + (self.$the(paper)) + ".")}, TMP_201.$$s = self, TMP_201), $a).call($fk, "take", $scope.get('Use').$reachable(paper));
super_door = self.super_office.$connect(self.cesar_lobby, $scope.get('EAST'), $scope.get('Door'));
(($a = [true]), $fl = super_door, $fl['$locked='].apply($fl, $a), $a[$a.length-1]);
(($a = [self.lockpicks]), $fl = super_door, $fl['$lock_key='].apply($fl, $a), $a[$a.length-1]);
self.ladder = self.$make($scope.get('Item'), $hash2(["name", "description", "parent"], {"name": "a ladder", "description": "A foldable aluminum ladder.", "parent": self.super_office}));
self.ladder['$[]=']("open", false);
($a = ($fl = self).$respond, $a.$$p = (TMP_202 = function(actor, ladder){var self = TMP_202.$$s || this, $a;
if (self.ladder == null) self.ladder = nil;
if (actor == null) actor = nil;if (ladder == null) ladder = nil;
actor.$proceed();
if ((($a = self.ladder['$[]']("open")) !== nil && (!$a.$$is_boolean || $a == true))) {
return actor.$tell("The ladder is currently expanded to its full ten-foot height.")
} else {
return actor.$tell("The ladder is currently collapsed for easy portability.")
};}, TMP_202.$$s = self, TMP_202), $a).call($fl, "look", $scope.get('Use').$reachable(self.ladder));
($a = ($fm = self).$respond, $a.$$p = (TMP_203 = function(actor, portal){var self = TMP_203.$$s || this, $a, $b;
if (self.ladder == null) self.ladder = nil;
if (actor == null) actor = nil;if (portal == null) portal = nil;
if ((($a = (($b = self.ladder.$parent()['$=='](actor)) ? self.ladder['$[]']("open") : $b)) !== nil && (!$a.$$is_boolean || $a == true))) {
return actor.$tell("The ladder is a little cumbersome to carry around in its current state.")
} else {
return actor.$proceed()
}}, TMP_203.$$s = self, TMP_203), $a).call($fm, "go", $scope.get('Use').$reachable($scope.get('Portal')));
($a = ($fn = self).$respond, $a.$$p = (TMP_204 = function(actor, transporter){var self = TMP_204.$$s || this, $a;
if (self.ladder == null) self.ladder = nil;
if (actor == null) actor = nil;if (transporter == null) transporter = nil;
if (self.ladder.$parent()['$=='](actor)) {
return actor.$tell("The ladder is a little cumbersome to take on the bike" + ((function() {if ((($a = self.ladder['$[]']("open")['$!']()) !== nil && (!$a.$$is_boolean || $a == true))) {
return ", even when it's closed"
} else {
return ""
}; return nil; })()) + ".")
} else {
return actor.$proceed()
}}, TMP_204.$$s = self, TMP_204), $a).call($fn, "enter", $scope.get('Use').$reachable($scope.get('Transporter')));
($a = ($fo = self).$respond, $a.$$p = (TMP_205 = function(actor, ladder){var self = TMP_205.$$s || this, $a;
if (actor == null) actor = nil;if (ladder == null) ladder = nil;
if ((($a = ladder['$[]']("open")) !== nil && (!$a.$$is_boolean || $a == true))) {
return actor.$tell("It's already open.")
} else {
actor.$tell("You open the ladder.");
return ladder['$[]=']("open", true);
}}, TMP_205.$$s = self, TMP_205), $a).call($fo, "open", $scope.get('Use').$reachable(self.ladder));
($a = ($fp = self).$respond, $a.$$p = (TMP_206 = function(actor, ladder){var self = TMP_206.$$s || this, $a, $b;
if (self.fire_escape_bottom == null) self.fire_escape_bottom = nil;
if (actor == null) actor = nil;if (ladder == null) ladder = nil;
if ((($a = ladder['$[]']("open")['$!']()) !== nil && (!$a.$$is_boolean || $a == true))) {
return actor.$tell("It's already closed.")
} else if ((($a = ((($b = ladder.$parent()['$=='](actor)) !== false && $b !== nil) ? $b : ladder.$parent()['$=='](actor.$parent()))) !== nil && (!$a.$$is_boolean || $a == true))) {
actor.$tell("You close the ladder.");
return ladder['$[]=']("open", false);
} else {
return actor.$tell("You can't close it while it's on " + (self.$the(self.fire_escape_bottom)))
}}, TMP_206.$$s = self, TMP_206), $a).call($fp, "close", $scope.get('Use').$reachable(self.ladder));
($a = ($fq = self).$respond, $a.$$p = (TMP_207 = function(actor, ladder){var self = TMP_207.$$s || this;
if (actor == null) actor = nil;if (ladder == null) ladder = nil;
return actor.$perform("open", ladder)}, TMP_207.$$s = self, TMP_207), $a).call($fq, "expand", $scope.get('Use').$reachable(self.ladder));
self.$interpret("unfold :thing", "expand :thing");
($a = ($fr = self).$respond, $a.$$p = (TMP_208 = function(actor, ladder){var self = TMP_208.$$s || this;
if (actor == null) actor = nil;if (ladder == null) ladder = nil;
return actor.$perform("close", ladder)}, TMP_208.$$s = self, TMP_208), $a).call($fr, "collapse", $scope.get('Use').$reachable(self.ladder));
($a = ($fs = self).$respond, $a.$$p = (TMP_209 = function(actor, ladder, wall){var self = TMP_209.$$s || this, $a;
if (actor == null) actor = nil;if (ladder == null) ladder = nil;if (wall == null) wall = nil;
if ((($a = ladder['$[]']("open")) !== nil && (!$a.$$is_boolean || $a == true))) {
return actor.$tell("You feel a little conspicuous preparing to scale the building from the sidewalk. A nosy neighbor might call the cops.")
} else {
return actor.$tell("The ladder doesn't do you much good when it's collapsed.")
}}, TMP_209.$$s = self, TMP_209), $a).call($fs, "place", $scope.get('Use').$children(self.ladder), $scope.get('Use').$reachable(cesar_wall));
self.$interpret("place :thing on :supporter", "place :thing :supporter");
self.$interpret("set :thing on :supporter", "place :thing :supporter");
self.$interpret("position :thing on :supporter", "place :thing :supporter");
self.$interpret("lean :thing on :supporter", "place :thing :supporter");
self.$interpret("lean :thing against :supporter", "place :thing :supporter");
self.cesar_hallway = self.$make($scope.get('Room'), $hash2(["name", "synonyms", "description"], {"name": "the second-floor hallway", "synonyms": "cesar second floor 2nd floor", "description": ""}));
self.cesar_hallway.$connect(self.cesar_lobby, $scope.get('DOWN'));
blocked = self.$make($scope.get('Portal'), $hash2(["name", "parent"], {"name": "north", "parent": self.cesar_hallway}));
($a = ($ft = self).$respond, $a.$$p = (TMP_210 = function(actor, portal){var self = TMP_210.$$s || this;
if (actor == null) actor = nil;if (portal == null) portal = nil;
return actor.$tell("You don't want to get any closer to that guy than you already are.")}, TMP_210.$$s = self, TMP_210), $a).call($ft, "go", $scope.get('Use').$reachable(blocked));
self.thug = self.$make($scope.get('Character'), $hash2(["name", "locale_description", "description", "parent"], {"name": "a thug", "locale_description": "One of Benny Zero's thugs lounges on a chair outside of the door to Cesar Media.", "description": "The bulge of a gun beneath his jacket cements your suspicion that you don't want to mess with him.", "parent": self.cesar_hallway}));
chair = self.$make($scope.get('Scenery'), $hash2(["name", "parent"], {"name": "a chair", "parent": self.cesar_hallway}));
gun = self.$make($scope.get('Scenery'), $hash2(["name", "synonyms", "description", "parent"], {"name": "a gun", "synonyms": "jacket bulge", "description": "Yep... that ominous bulge in the thug's jacket couldn't be anything but a gun.", "parent": self.cesar_hallway}));
($a = ($fu = self).$respond, $a.$$p = (TMP_211 = function(actor, thug){var self = TMP_211.$$s || this;
if (actor == null) actor = nil;if (thug == null) thug = nil;
return actor.$tell("You don't have enough of a death wish to attract his attention on purpose.")}, TMP_211.$$s = self, TMP_211), $a).call($fu, "talk", $scope.get('Use').$reachable(self.thug));
($a = ($fv = self).$respond, $a.$$p = (TMP_212 = function(actor, thug){var self = TMP_212.$$s || this;
if (actor == null) actor = nil;if (thug == null) thug = nil;
return actor.$tell("You don't want to get any closer to that guy than you already are.")}, TMP_212.$$s = self, TMP_212), $a).call($fv, "give", (($scope.get('Query')).$$scope.get('Reachable')).$new(self.thug));
($a = ($fw = self).$respond, $a.$$p = (TMP_213 = function(actor, chair){var self = TMP_213.$$s || this;
if (actor == null) actor = nil;if (chair == null) chair = nil;
return actor.$tell("You don't want to get any closer to that guy than you already are.")}, TMP_213.$$s = self, TMP_213), $a).call($fw, "enter", $scope.get('Use').$reachable(chair));
($a = ($fx = self).$respond, $a.$$p = (TMP_214 = function(actor, portal){var self = TMP_214.$$s || this, $a;
if (actor == null) actor = nil;if (portal == null) portal = nil;
if ((($a = actor['$[]']("seen_thug")) !== nil && (!$a.$$is_boolean || $a == true))) {
return actor.$proceed()
} else {
return self.$cue(actor, "thug_at_cesar")
}}, TMP_214.$$s = self, TMP_214), $a).call($fx, "go", $scope.get('Use').$reachable(self.$pick("up from cesar lobby")));
($a = ($fy = self).$pause, $a.$$p = (TMP_215 = function(actor, data){var self = TMP_215.$$s || this, $a, $b;
if (self.cesar_hallway == null) self.cesar_hallway = nil;
if (actor == null) actor = nil;if (data == null) data = nil;
(($a = [self.cesar_hallway]), $b = actor, $b['$parent='].apply($b, $a), $a[$a.length-1]);
actor.$tell("You freeze at the top of the stairs. At the end of the hall, a lone man is sprawled in a chair outside of the door to Cesar Media. Your blood turns cold when you recognize him as one of Benny Zero's thugs. Not somebody you want to tangle with.");
actor['$[]=']("seen_thug", true);
return (($a = ["look"]), $b = data, $b['$next_cue='].apply($b, $a), $a[$a.length-1]);}, TMP_215.$$s = self, TMP_215), $a).call($fy, "thug_at_cesar");
self.alley = self.$make($scope.get('Room'), $hash2(["name", "description"], {"name": "an alley", "description": "You're in the narrow alley beside Cesar's office building. A fire escape hangs overhead. The alley opens onto Mulberry Street to the northeast."}));
self.fire_escape_bottom = self.$make($scope.get('Supporter'), $hash2(["name", "proper_named", "synonyms", "description", "parent", "itemized"], {"name": "the bottom of the fire escape", "proper_named": true, "synonyms": "rung", "description": "It's too high to reach from here, and much to the super's discredit, it appears be rusted in place.", "parent": self.alley, "itemized": false}));
self.alley.$connect(self.mulberry_street, $scope.get('NORTHEAST'));
self.fire_escape = self.$make($scope.get('Room'), $hash2(["name", "description"], {"name": "the fire escape", "description": "You're standing on a creaky steel structure leading up to the building's roof and down to an alley."}));
up_from_alley = self.alley.$connect(self.fire_escape, $scope.get('UP'));
($a = ($fz = self).$respond, $a.$$p = (TMP_216 = function(actor, up){var self = TMP_216.$$s || this, $a;
if (self.ladder == null) self.ladder = nil;
if (self.fire_escape_bottom == null) self.fire_escape_bottom = nil;
if (actor == null) actor = nil;if (up == null) up = nil;
if ((($a = self.ladder.$parent()['$=='](self.fire_escape_bottom)['$!']()) !== nil && (!$a.$$is_boolean || $a == true))) {
return actor.$tell("You can't reach the fire escape.")
} else {
return actor.$proceed()
}}, TMP_216.$$s = self, TMP_216), $a).call($fz, "go", $scope.get('Use').$reachable(up_from_alley));
($a = ($ga = self).$respond, $a.$$p = (TMP_217 = function(actor, ladder, wall){var self = TMP_217.$$s || this, $a, $b;
if (actor == null) actor = nil;if (ladder == null) ladder = nil;if (wall == null) wall = nil;
if ((($a = ladder['$[]']("open")) !== nil && (!$a.$$is_boolean || $a == true))) {
actor.$tell("You lean the ladder against the bottom rung of the fire escape.");
return (($a = [wall]), $b = ladder, $b['$parent='].apply($b, $a), $a[$a.length-1]);
} else {
return actor.$tell("The ladder doesn't do you much good when it's collapsed.")
}}, TMP_217.$$s = self, TMP_217), $a).call($ga, "place", $scope.get('Use').$children(self.ladder), $scope.get('Use').$reachable(self.fire_escape_bottom));
($a = ($gb = self).$respond, $a.$$p = (TMP_218 = function(actor, ladder, text){var self = TMP_218.$$s || this;
if (self.alley == null) self.alley = nil;
if (actor == null) actor = nil;if (ladder == null) ladder = nil;if (text == null) text = nil;
if (actor.$parent()['$=='](self.alley)) {
return actor.$tell("I'm not sure where you're trying to go when you say '" + (text) + ".'")
} else {
return actor.$tell("There's nowhere convenient to position the ladder here.")
}}, TMP_218.$$s = self, TMP_218), $a).call($gb, "place", $scope.get('Use').$children(self.ladder), $scope.get('Use').$text());
($a = ($gc = self).$respond, $a.$$p = (TMP_219 = function(actor, ladder){var self = TMP_219.$$s || this, $a;
if (self.ladder == null) self.ladder = nil;
if (self.fire_escape_bottom == null) self.fire_escape_bottom = nil;
if (actor == null) actor = nil;if (ladder == null) ladder = nil;
if ((($a = ladder['$[]']("open")) !== nil && (!$a.$$is_boolean || $a == true))) {
if (self.ladder.$parent()['$=='](self.fire_escape_bottom)) {
return actor.$perform("go up")
} else {
return actor.$tell("The ladder isn't in a position where you can climb it.")
}
} else {
return actor.$tell("You can't climb the ladder when it's closed.")
}}, TMP_219.$$s = self, TMP_219), $a).call($gc, "climb", $scope.get('Use').$reachable(self.ladder));
($a = ($gd = self).$respond, $a.$$p = (TMP_220 = function(actor, ladder){var self = TMP_220.$$s || this;
if (actor == null) actor = nil;if (ladder == null) ladder = nil;
return actor.$tell("There are a few different ways to use the ladder: open it, close it, climb it...")}, TMP_220.$$s = self, TMP_220), $a).call($gd, "use", $scope.get('Use').$reachable(self.ladder));
self.$interpret("put :thing against :supporter", "drop :thing :supporter");
self.$interpret("attach :thing :supporter", "drop :thing :supporter");
self.$interpret("attach :thing to :supporter", "drop :thing :supporter");
self.$interpret("position :thing on :supporter", "drop :thing :supporter");
self.$interpret("position :thing against :supporter", "drop :thing :supporter");
self.$interpret("lean :thing on :supporter", "drop :thing :supporter");
self.$interpret("lean :thing against :supporter", "drop :thing :supporter");
($a = ($ge = self).$respond, $a.$$p = (TMP_221 = function(actor, room){var self = TMP_221.$$s || this;
if (self.ladder == null) self.ladder = nil;
if (self.fire_escape_bottom == null) self.fire_escape_bottom = nil;
if (actor == null) actor = nil;if (room == null) room = nil;
actor.$proceed();
if (self.ladder.$parent()['$=='](self.fire_escape_bottom)) {
return actor.$tell("A ladder leans against the bottom rung of the fire escape.")
} else {
return nil
};}, TMP_221.$$s = self, TMP_221), $a).call($ge, "look", $scope.get('Use').$parent(self.alley));
self.south_roof = self.$make($scope.get('Room'), $hash2(["name", "description", "proper_named"], {"name": "southern side of the roof", "description": "You're on the southern side of the roof above Cesar Media. A fire escape leads back down the side of the building. The roof extends about twenty yards north.", "proper_named": true}));
self.south_roof.$connect(self.fire_escape, $scope.get('DOWN'));
self.north_roof = self.$make($scope.get('Room'), $hash2(["name", "description", "proper_named"], {"name": "northern side of the roof", "description": "The northern side of the roof above Cesar Media, overlooking Mulberry Street. You see a trap door leading down into the building.", "proper_named": true}));
self.north_roof.$connect(self.south_roof, $scope.get('SOUTH'));
self.storage_room = self.$make($scope.get('Room'), $hash2(["name", "description"], {"name": "a storage room", "description": "A beam of moonlight from a grimy window softens the shadows. You peer through the dust curling lazily in the musty air. Stacks of cardboard boxes line the wall. There's a trap door to the roof in the ceiling. Brighter light from the office proper outlines a door to the south."}));
self.$make($scope.get('Scenery'), $hash2(["name", "indefinite_article", "parent"], {"name": "moonlight", "indefinite_article": "", "parent": self.storage_room}));
self.$make($scope.get('Scenery'), $hash2(["name", "indefinite_article", "parent"], {"name": "dust", "indefinite_article": "", "parent": self.storage_room}));
self.$make($scope.get('Scenery'), $hash2(["name", "description", "parent"], {"name": "the ceiling", "description": "You see a trap door.", "parent": self.storage_room}));
self.$make($scope.get('Scenery'), $hash2(["name", "parent"], {"name": "the window", "parent": self.storage_room}));
boxes = self.$make($scope.get('Scenery'), $hash2(["name", "synonyms", "indefinite_article", "parent", "description"], {"name": "cardboard boxes", "synonyms": "old paperwork office supplies", "indefinite_article": "", "parent": self.storage_room, "description": "Just a lot of old paperwork and office supplies."}));
($a = ($gf = self).$respond, $a.$$p = (TMP_222 = function(actor, boxes){var self = TMP_222.$$s || this;
if (actor == null) actor = nil;if (boxes == null) boxes = nil;
return actor.$tell("You don't have any use for that stuff.")}, TMP_222.$$s = self, TMP_222), $a).call($gf, "take", $scope.get('Use').$reachable(boxes));
door = self.north_roof.$connect(self.storage_room, $scope.get('DOWN'), $scope.get('Door'));
(($a = ["trap door"]), $gg = door, $gg['$name='].apply($gg, $a), $a[$a.length-1]);
(($a = ["trap door"]), $gg = door.$find_reverse(), $gg['$name='].apply($gg, $a), $a[$a.length-1]);
(($a = ["trapdoor"]), $gg = door, $gg['$synonyms='].apply($gg, $a), $a[$a.length-1]);
(($a = ["trapdoor"]), $gg = door.$find_reverse(), $gg['$synonyms='].apply($gg, $a), $a[$a.length-1]);
self.hostage = self.$make($scope.get('Character'), $hash2(["name", "synonyms", "description", "locale_description", "parent"], {"name": "a bound and gagged woman", "synonyms": "hostage", "description": "A slender olive-skinned woman, smartly dressed, gagged with duct tape and bound with rope at the wrists and ankles.", "locale_description": "The muffled noise of a movie soundtrack emanates from somewhere in the office.\n\nA terrified woman lies bound and gagged in a corner.", "parent": self.storage_room}));
rope = self.$make($scope.get('Scenery'), $hash2(["name", "indefinite_article", "parent", "attached"], {"name": "ropes", "indefinite_article": "", "parent": self.hostage, "attached": true}));
tape = self.$make($scope.get('Scenery'), $hash2(["name", "indefinite_article", "parent", "attached"], {"name": "the duct tape", "indefinite_article": "", "parent": self.hostage, "attached": true}));
($a = ($gg = self).$on_player_update, $a.$$p = (TMP_223 = function(actor){var self = TMP_223.$$s || this, $a, responses = nil;
if (self.hostage == null) self.hostage = nil;
if (actor == null) actor = nil;
if (actor.$room()['$=='](self.hostage.$room())) {
if ((($a = actor['$[]']("seen_hostage")['$!']()) !== nil && (!$a.$$is_boolean || $a == true))) {
return actor['$[]=']("seen_hostage", true)
} else if ((($a = actor.$last_order().$action()['$kind_of?']($scope.get('Meta'))['$!']()) !== nil && (!$a.$$is_boolean || $a == true))) {
responses = ["The bound woman squirms and mumbles through the tape on her mouth.", "The bound woman watches you with wide, frightened eyes.", "The woman in the corner struggles against the ropes around her wrists and ankles."];
return actor.$tell(responses.$random());
} else {
return nil
}
} else {
return nil
}}, TMP_223.$$s = self, TMP_223), $a).call($gg);
self.cesar_office = self.$make($scope.get('Room'), $hash2(["name", "description", "proper_named"], {"name": "Cesar Media's office", "description": "A small office space, mostly occupied by a single desk. A door leads south to the studio.", "proper_named": true}));
cesar_desk = self.$make($scope.get('Supporter'), $hash2(["name", "parent", "description", "itemized"], {"name": "a desk", "parent": self.cesar_office, "description": "Just a plain wooden desk.", "itemized": false}));
drawer = self.$make($scope.get('Container'), $hash2(["name", "parent", "attached", "open"], {"name": "a drawer", "parent": cesar_desk, "attached": true, "open": true}));
office_door = self.storage_room.$connect(self.cesar_office, $scope.get('SOUTH'), $scope.get('Door'));
($a = ($gh = self).$respond, $a.$$p = (TMP_224 = function(actor, door){var self = TMP_224.$$s || this, $a;
if (self.hostage == null) self.hostage = nil;
if (actor == null) actor = nil;if (door == null) door = nil;
if ((($a = self.hostage.$parent()['$=='](nil)['$!']()) !== nil && (!$a.$$is_boolean || $a == true))) {
return actor.$tell("You can hear activity on the other side of the door. Knowing that Benny's thugs are watching the place, you're apprehensive about opening it.")
} else {
return actor.$proceed()
}}, TMP_224.$$s = self, TMP_224), $a).call($gh, "go", $scope.get('Use').$reachable(office_door));
($a = ($gi = self).$respond, $a.$$p = (TMP_225 = function(actor, hostage){var self = TMP_225.$$s || this;
if (actor == null) actor = nil;if (hostage == null) hostage = nil;
return self.$cue(actor, "free_hostage")}, TMP_225.$$s = self, TMP_225), $a).call($gi, "free", $scope.get('Use').$reachable(self.hostage));
($a = ($gj = self).$respond, $a.$$p = (TMP_226 = function(actor, hostage){var self = TMP_226.$$s || this;
if (actor == null) actor = nil;if (hostage == null) hostage = nil;
return actor.$perform("free", hostage)}, TMP_226.$$s = self, TMP_226), $a).call($gj, "untie", $scope.get('Use').$reachable(self.hostage));
($a = ($gk = self).$respond, $a.$$p = (TMP_227 = function(actor, rope){var self = TMP_227.$$s || this;
if (actor == null) actor = nil;if (rope == null) rope = nil;
return actor.$perform("free hostage")}, TMP_227.$$s = self, TMP_227), $a).call($gk, "untie", $scope.get('Use').$reachable(rope));
($a = ($gl = self).$respond, $a.$$p = (TMP_228 = function(actor, tape){var self = TMP_228.$$s || this;
if (actor == null) actor = nil;if (tape == null) tape = nil;
return actor.$perform("free hostage")}, TMP_228.$$s = self, TMP_228), $a).call($gl, "untie", $scope.get('Use').$reachable(tape));
($a = ($gm = self).$respond, $a.$$p = (TMP_229 = function(actor, rope){var self = TMP_229.$$s || this;
if (actor == null) actor = nil;if (rope == null) rope = nil;
return actor.$perform("free hostage")}, TMP_229.$$s = self, TMP_229), $a).call($gm, "take", $scope.get('Use').$reachable(rope));
($a = ($gn = self).$respond, $a.$$p = (TMP_230 = function(actor, rope){var self = TMP_230.$$s || this;
if (actor == null) actor = nil;if (rope == null) rope = nil;
return actor.$perform("free hostage")}, TMP_230.$$s = self, TMP_230), $a).call($gn, "take", $scope.get('Use').$reachable(tape));
($a = ($go = self).$respond, $a.$$p = (TMP_231 = function(actor, rope){var self = TMP_231.$$s || this;
if (actor == null) actor = nil;if (rope == null) rope = nil;
return actor.$perform("free hostage")}, TMP_231.$$s = self, TMP_231), $a).call($go, "remove", $scope.get('Use').$reachable(rope));
($a = ($gp = self).$respond, $a.$$p = (TMP_232 = function(actor, rope){var self = TMP_232.$$s || this;
if (actor == null) actor = nil;if (rope == null) rope = nil;
return actor.$perform("free hostage")}, TMP_232.$$s = self, TMP_232), $a).call($gp, "remove", $scope.get('Use').$reachable(tape));
self.$interpret("unbind :thing", "untie :thing");
self.cesar_studio = self.$make($scope.get('Room'), $hash2(["name", "proper_named", "description"], {"name": "Cesar Media's studio", "proper_named": true, "description": "This is where Carla and her staff do their post-production work."}));
door_to_studio = self.cesar_office.$connect(self.cesar_studio, $scope.get('SOUTH'), $scope.get('Door'));
eastern_door = self.$make($scope.get('Door'), $hash2(["name", "direction", "parent", "description"], {"name": "eastern door", "direction": $scope.get('EAST'), "parent": self.cesar_office, "description": "A chair is jammed beneath the knob, preventing anyone from opening the door from the outside."}));
blocking_chair = self.$make($scope.get('Fixture'), $hash2(["name", "description", "parent", "locale_description"], {"name": "chair", "description": "It's firmly wedged beneath the knob of the eastern door.", "parent": self.cesar_office, "locale_description": "The eastern door is jammed shut with a chair."}));
($a = ($gq = self).$respond, $a.$$p = (TMP_233 = function(actor, door){var self = TMP_233.$$s || this;
if (actor == null) actor = nil;if (door == null) door = nil;
return actor.$perform("open", door)}, TMP_233.$$s = self, TMP_233), $a).call($gq, "go", $scope.get('Use').$reachable(eastern_door));
($a = ($gr = self).$respond, $a.$$p = (TMP_234 = function(actor, door){var self = TMP_234.$$s || this;
if (actor == null) actor = nil;if (door == null) door = nil;
return actor.$tell("You decide not to mess with that door. Carla must have jammed it shut for a good reason.")}, TMP_234.$$s = self, TMP_234), $a).call($gr, "open", $scope.get('Use').$reachable(eastern_door));
frank = self.$make($scope.get('Fixture'), $hash2(["name", "synonyms", "description", "locale_description", "parent"], {"name": "an unconscious man", "synonyms": "Frank", "description": "Frank, you presume. A guy in his early twenties. Presently unconscious.", "locale_description": "An unconscious man lies prone on the floor.", "parent": self.cesar_studio}));
carla = self.$make($scope.get('Character'), $hash2(["name", "synonyms", "proper_named", "parent", "description"], {"name": "Carla", "synonyms": "woman", "proper_named": true, "parent": self.cesar_studio, "description": "A slender, olive-skinned woman holding a taser in one hand and a pistol in the other. Seeing what she did to Frank, you're glad she's on your side."}));
self.$make($scope.get('Scenery'), $hash2(["name", "description", "parent"], {"name": "a taser", "description": "You don't know much about tasers, but that one looks like a police issue.", "parent": self.cesar_studio}));
self.$make($scope.get('Scenery'), $hash2(["name", "synonyms", "description", "parent"], {"name": "a pistol", "synonyms": "gun 32 semi-automatic", "description": "A compact .32 semi-automatic.", "parent": self.cesar_studio}));
workbench = self.$make($scope.get('Supporter'), $hash2(["name", "description", "parent"], {"name": "a workbench", "description": "A long, flat surface cluttered with video equipment.", "parent": self.cesar_studio}));
self.$make($scope.get('Scenery'), $hash2(["name", "synonyms", "proper_named", "description", "parent"], {"name": "the video equipment", "synonyms": "complicated gadgets", "proper_named": true, "description": "Lots of complicated gadgets you don't recognize.", "parent": self.cesar_studio}));
self.macguffin = self.$make($scope.get('Item'), $hash2(["name", "synonyms", "description", "parent", "personal"], {"name": "a film can", "synonyms": "disc bride macguffin", "description": "An old-fashioned metal disc with the words \"Bride of MacGuffin\" printed across the top in faded ink.", "parent": workbench, "personal": true}));
($a = ($gs = self).$respond, $a.$$p = (TMP_235 = function(actor, can){var self = TMP_235.$$s || this;
if (actor == null) actor = nil;if (can == null) can = nil;
return actor.$tell("You open the can. Inside is a thick reel of 35mm film. You don't want to risk damaging it, so you close the can again.")}, TMP_235.$$s = self, TMP_235), $a).call($gs, "open", $scope.get('Use').$reachable(self.macguffin));
($a = ($gt = self).$on_player_update, $a.$$p = (TMP_236 = function(actor){var self = TMP_236.$$s || this, $a, $b, $c;
if (self.macguffin == null) self.macguffin = nil;
if (self.mulberry_street == null) self.mulberry_street = nil;
if (actor == null) actor = nil;
if ((($a = ($b = (($c = self.macguffin.$parent()['$=='](actor)) ? actor.$room()['$=='](self.mulberry_street) : $c), $b !== false && $b !== nil ?actor['$[]']("escaped_cops")['$=='](false) : $b)) !== nil && (!$a.$$is_boolean || $a == true))) {
actor['$[]=']("escaped_cops", true);
return self.$cue(actor, "cops_are_coming");
} else {
return nil
}}, TMP_236.$$s = self, TMP_236), $a).call($gt);
($a = ($gu = self).$pause, $a.$$p = (TMP_237 = function(actor, data){var self = TMP_237.$$s || this, $a, $b;
if (self.ladder == null) self.ladder = nil;
if (actor == null) actor = nil;if (data == null) data = nil;
if (self.ladder.$parent()['$=='](actor)) {
(($a = [actor.$parent()]), $b = self.ladder, $b['$parent='].apply($b, $a), $a[$a.length-1])};
actor.$tell("You hear a police siren in the distance. Carla must have called the law... it's time to bounce.");
(($a = [self.$pick("bike")]), $b = actor, $b['$parent='].apply($b, $a), $a[$a.length-1]);
return (($a = ["enter_transporter"]), $b = data, $b['$next_cue='].apply($b, $a), $a[$a.length-1]);}, TMP_237.$$s = self, TMP_237), $a).call($gu, "cops_are_coming");
($a = ($gv = self).$respond, $a.$$p = (TMP_238 = function(actor, door){var self = TMP_238.$$s || this, $a, $b;
if (self.cesar_studio == null) self.cesar_studio = nil;
if (actor == null) actor = nil;if (door == null) door = nil;
if ((($a = actor['$[]']("followed_carla")['$!']()) !== nil && (!$a.$$is_boolean || $a == true))) {
actor['$[]=']("followed_carla", true);
(($a = [self.cesar_studio]), $b = actor, $b['$parent='].apply($b, $a), $a[$a.length-1]);
return self.$cue(actor, "followed_carla");
} else {
return actor.$proceed()
}}, TMP_238.$$s = self, TMP_238), $a).call($gv, "go", $scope.get('Use').$reachable(door_to_studio));
($a = ($gw = self).$respond, $a.$$p = (TMP_239 = function(actor, carla){var self = TMP_239.$$s || this;
if (actor == null) actor = nil;if (carla == null) carla = nil;
return actor.$tell("\"No time to waste,\" she says. \"Just take the film and get going.\"")}, TMP_239.$$s = self, TMP_239), $a).call($gw, "talk", $scope.get('Use').$reachable(carla));
($a = ($gx = self).$pause, $a.$$p = (TMP_240 = function(actor, data){var self = TMP_240.$$s || this, $a, $b;
if (actor == null) actor = nil;if (data == null) data = nil;
actor.$tell("Hector meets you at the entrance. It's damn creepy how you never notice this guy until he's right next to you.");
actor.$tell("He gives you a short nod. \"You got the film?\"");
actor.$tell("\"I stashed it,\" you say.");
actor.$tell("\"You were supposed to bring it with you.\"");
actor.$tell("\"I thought we should make the exchange on neutral territory. You know, for both our protection.\"");
actor.$tell("\"What did you have in mind?\"");
actor.$tell("\"Penn Station. Tonight. Meet me in the Long Island terminal on the bottom level.\"");
actor.$tell("\"I'll let Goldletter know. Bring the film.\"");
actor.$tell("Hector fades back into the club's interior. You turn on your heels and go back to the street.");
actor['$[]=']("made_arrangement", true);
return (($a = ["look"]), $b = data, $b['$next_cue='].apply($b, $a), $a[$a.length-1]);}, TMP_240.$$s = self, TMP_240), $a).call($gx, "make_arrangement");
self.west_37th_street = self.$make($scope.get('Room'), $hash2(["name", "proper_named", "description"], {"name": "West 37th Street", "proper_named": true, "description": "The Riviera Cabaret is north."}));
self.$make($scope.get('Scenery'), $hash2(["name", "description", "parent"], {"name": "The Riviera Cabaret", "description": "It looks like the same neon nightmare you remember. You imagine it's full of the same guys who think a twenty-dollar tuck tip is a sign of class.", "parent": self.west_37th_street}));
self.$make($scope.get('Scenery'), $hash2(["name", "proper_named", "parent"], {"name": "the neon", "proper_named": true, "parent": self.west_37th_street}));
self.riviera_cabaret = self.$make($scope.get('Room'), $hash2(["name"], {"name": "Riviera Cabaret"}));
self.riviera_cabaret.$connect(self.west_37th_street, $scope.get('SOUTH'));
($a = ($gy = self).$respond, $a.$$p = (TMP_241 = function(actor, portal){var self = TMP_241.$$s || this, $a;
if (self.riviera_cabaret == null) self.riviera_cabaret = nil;
if (self.macguffin == null) self.macguffin = nil;
if (actor == null) actor = nil;if (portal == null) portal = nil;
if (portal.$destination()['$=='](self.riviera_cabaret)) {
if (self.macguffin.$parent()['$=='](actor)) {
actor.$tell("You start for the entrance to the Riviera, but think better of it. The film is your only leverage; it would be suicide to carry it into a place Goldletter controls.");
return actor['$[]=']("leery_of_riviera", true);
} else if ((($a = actor['$[]']("made_arrangement")) !== nil && (!$a.$$is_boolean || $a == true))) {
return actor.$tell("You don't have any reason to go to the Cabaret. Frankly, just standing outside of it makes you feel like you need a shower.")
} else {
return self.$cue(actor, "make_arrangement")
}
} else {
return actor.$proceed()
}}, TMP_241.$$s = self, TMP_241), $a).call($gy, "go", $scope.get('Use').$reachable($scope.get('Portal')));
self.thirty_fourth_street = self.$make($scope.get('Room'), $hash2(["name", "description"], {"name": "34th Street", "description": "Though the usual throng of traffic is thinner at this hour, pedestrians still trickle in and out of the Penn Station entrance to the south."}));
self.$make($scope.get('Scenery'), $hash2(["name", "indefinite_article", "synonyms", "parent"], {"name": "pedestrians", "indefinite_article": "the", "synonyms": "throng traffic", "parent": self.thirty_fourth_street}));
self.$make($scope.get('Scenery'), $hash2(["name", "description", "parent"], {"name": "Penn Station", "description": "The unassuming entrance to Penn Station is on the south side of the street.", "parent": self.thirty_fourth_street}));
self.nj_transit = self.$make($scope.get('Room'), $hash2(["name", "synonyms", "description"], {"name": "NJ Transit Area", "synonyms": "Penn Station", "description": "This station is largely vacant, with the ticket booths closed for the night and the departures down to one an hour. A walkway leads west to the Main Concourse and Amtrak. The Long Island station, where you arranged the rendezvous with Goldletter, is down the stairs."}));
self.$make($scope.get('Scenery'), $hash2(["name", "indefinite_article", "parent", "description"], {"name": "ticket booths", "indefinite_article": "the", "parent": self.nj_transit, "description": "Closed for the night."}));
self.nj_transit.$connect(self.thirty_fourth_street, $scope.get('NORTH'));
self.amtrak = self.$make($scope.get('Room'), $hash2(["name", "proper_named", "synonyms", "description"], {"name": "The Main Concourse", "proper_named": true, "synonyms": "Amtrak", "description": "The Amtrak terminal is as sparsely trafficked as NJ transit. Most of the stores and restaurants around the concourse are shuttered for the night, but it looks like someone is still working in the Lost & Found office to the south."}));
self.amtrak.$connect(self.nj_transit, $scope.get('EAST'));
self.$make($scope.get('Scenery'), $hash2(["name", "synonyms", "proper_named", "parent"], {"name": "the stores", "synonyms": "restaurants", "proper_named": true, "parent": self.amtrak}));
self.lost_found = self.$make($scope.get('Room'), $hash2(["name", "description"], {"name": "Amtrak Lost & Found", "description": "Lost & Found is closed for the night, but a clerk is still loitering outside the office. The Amtrak terminal is back north."}));
self.lost_found.$connect(self.amtrak, $scope.get('NORTH'));
self.clerk = self.$make($scope.get('Character'), $hash2(["name", "parent", "description", "itemized"], {"name": "a clerk", "parent": self.lost_found, "description": "He has the baggy eyes and rumpled uniform of a man reaching the end of a long shift, but he still manages to smile for passing travelers.", "itemized": false}));
self.$make($scope.get('Clothing'), $hash2(["name", "parent", "attached"], {"name": "Amtrak uniform", "parent": self.clerk, "attached": true}));
self.lirr = self.$make($scope.get('Room'), $hash2(["name"], {"name": "Long Island Rail Road"}));
stairs = self.lirr.$connect(self.nj_transit, $scope.get('UP'));
(($a = ["stairs"]), $gz = stairs, $gz['$synonyms='].apply($gz, $a), $a[$a.length-1]);
(($a = ["stairs"]), $gz = stairs.$find_reverse(), $gz['$synonyms='].apply($gz, $a), $a[$a.length-1]);
($a = ($gz = self).$respond, $a.$$p = (TMP_242 = function(actor, clerk){var self = TMP_242.$$s || this, $a;
if (actor == null) actor = nil;if (clerk == null) clerk = nil;
if ((($a = actor['$[]']("talked_to_clerk")) !== nil && (!$a.$$is_boolean || $a == true))) {
return actor.$tell("\"Like I said, whatever it is you need to get to a passenger, pass it along and I'll take care of it.\"")
} else {
self.$cue(actor, "clerk_can_help");
return actor['$[]=']("talked_to_clerk", true);
}}, TMP_242.$$s = self, TMP_242), $a).call($gz, "talk", $scope.get('Use').$reachable(self.clerk));
($a = ($ha = self).$respond, $a.$$p = (TMP_243 = function(actor, clerk, macguffin){var self = TMP_243.$$s || this, $a, $b;
if (self.macguffin == null) self.macguffin = nil;
if (self.clerk == null) self.clerk = nil;
if (self.lost_found == null) self.lost_found = nil;
if (self.amtrak == null) self.amtrak = nil;
if (actor == null) actor = nil;if (clerk == null) clerk = nil;if (macguffin == null) macguffin = nil;
if ((($a = actor['$[]']("talked_to_clerk")['$!']()) !== nil && (!$a.$$is_boolean || $a == true))) {
return actor.$tell("Maybe you should check him out before you just hand him the film.")
} else {
(($a = [nil]), $b = self.macguffin, $b['$parent='].apply($b, $a), $a[$a.length-1]);
(($a = [nil]), $b = self.clerk, $b['$parent='].apply($b, $a), $a[$a.length-1]);
(($a = ["Lost & Found is closed for the night. The Amtrak terminal is back north."]), $b = self.lost_found, $b['$description='].apply($b, $a), $a[$a.length-1]);
(($a = ["The Amtrak terminal is as sparsely trafficked as NJ transit. The stores and restaurants around the concourse are shuttered for the night."]), $b = self.amtrak, $b['$description='].apply($b, $a), $a[$a.length-1]);
return self.$cue(actor, "clerk_stashed_macguffin");
}}, TMP_243.$$s = self, TMP_243), $a).call($ha, "give", $scope.get('Use').$reachable(self.clerk), $scope.get('Use').$children(self.macguffin));
self.$interpret("pass :character :thing", "give :character :thing");
self.$interpret("pass :thing to :character", "give :character :thing");
self.receipt = self.$make($scope.get('Item'), $hash2(["name", "description", "personal"], {"name": "a receipt", "description": "A copy of Amtrak's record that you delivered something to Goldletter at Penn Station tonight.", "personal": true}));
($a = ($hb = self).$respond, $a.$$p = (TMP_244 = function(actor, portal){var self = TMP_244.$$s || this, $a, $b;
if (self.nj_transit == null) self.nj_transit = nil;
if (self.lirr == null) self.lirr = nil;
if (self.macguffin == null) self.macguffin = nil;
if (actor == null) actor = nil;if (portal == null) portal = nil;
if ((($a = (($b = actor.$room()['$=='](self.nj_transit)) ? portal.$destination()['$=='](self.lirr) : $b)) !== nil && (!$a.$$is_boolean || $a == true))) {
if ((($a = ($b = self.macguffin.$parent()['$=='](actor)['$!'](), $b !== false && $b !== nil ?self.macguffin.$parent()['$nil?']()['$!']() : $b)) !== nil && (!$a.$$is_boolean || $a == true))) {
actor.$tell("There's a good chance Goldletter is already waiting. You need to be ready to trade before you meet him. You sure as hell don't want to bring him back to your apartment.")
} else if (self.macguffin.$parent()['$=='](actor)) {
actor.$tell("Before you go to the meeting, you need a strategy. Is there something you can do to protect your leverage?")
} else {
self.$cue(actor, "exchange")
};
return nil;;};
return actor.$proceed();}, TMP_244.$$s = self, TMP_244), $a).call($hb, "go", $scope.get('Use').$reachable($scope.get('Portal')));
($a = ($hc = self).$introduction, $a.$$p = (TMP_245 = function(actor){var self = TMP_245.$$s || this, $a, $b;
if (self.martys_apartment == null) self.martys_apartment = nil;
if (actor == null) actor = nil;
(($a = [self.martys_apartment]), $b = actor, $b['$parent='].apply($b, $a), $a[$a.length-1]);
actor['$[]=']("been_inside_club", false);
actor['$[]=']("eavesdropped", false);
actor['$[]=']("thought_of_tisch", false);
actor['$[]=']("goldletter_countdown", 3);
actor['$[]=']("found_center", false);
actor['$[]=']("seen_guard", false);
actor['$[]=']("seen_card", false);
actor['$[]=']("seen_thug", false);
actor['$[]=']("seen_hostage", false);
actor['$[]=']("followed_carla", false);
actor['$[]=']("escaped_cops", false);
actor['$[]=']("leery_of_riviera", false);
actor['$[]=']("made_arrangement", false);
actor['$[]=']("talked_to_clerk", false);
(($a = ["The name's Jane Swift. At thirty years old, you've been retired from The Game for six years. Working as a bike messenger has kept you in decent shape, but you're not sure you're ready to start scaling rooftops again."]), $b = actor, $b['$description='].apply($b, $a), $a[$a.length-1]);
return self.$cue(actor, "introduction_1");}, TMP_245.$$s = self, TMP_245), $a).call($hc);
($a = ($hd = self).$pause, $a.$$p = (TMP_246 = function(actor, data){var self = TMP_246.$$s || this, $a, $b;
if (actor == null) actor = nil;if (data == null) data = nil;
actor.$tell("Holy jeez, that hurt.");
actor.$tell("You came straight to your brother's apartment after you got his urgent-sounding text. You haven't talked to him in a week, which exacerbated your concern. When Marty's left to his own devices, he has a habit of getting into trouble. Considering the scene at his apartment, it looks like you were right to worry.");
actor.$tell("Your brother's not here. The place is torn to pieces. The guy who cold-cocked you is standing in front of you with a gun in his hand.");
actor.$tell("\"Hey, Jane. Been a while.\"");
actor.$tell("You don't recognize the voice. You squint through the pain and try to get a good look at him. He must have thrown you on the couch after he clocked you. He stands a few feet away with a bland expression on his face. He's not trying real hard to scare you. For guys like him, it doesn't take much effort. It comes as easily as his next breath. You stare at him and wait for him to say something.");
actor.$tell("\"You don't remember me,\" he says.");
actor.$tell("As a matter of fact, you don't.");
return (($a = ["introduction_2"]), $b = data, $b['$next_cue='].apply($b, $a), $a[$a.length-1]);}, TMP_246.$$s = self, TMP_246), $a).call($hd, "introduction_1");
($a = ($he = self).$pause, $a.$$p = (TMP_247 = function(actor, data){var self = TMP_247.$$s || this, $a, $b;
if (actor == null) actor = nil;if (data == null) data = nil;
actor.$tell("\"Hector,\" he says. \"A few years back, you and Marty came to a sit-down at The Riviera. That job for my boss.\"");
actor.$tell("You remember the sit-down. His boss must be Sam Goldletter. The collector. \"Is this about another job? We don't do that kinda thing anymore.\"");
actor.$tell("\"Not you, maybe. Marty's been keeping his gloves warm. Some sleazeball hired him to hit Goldletter.\"");
actor.$tell("\"For what?\"");
actor.$tell("\"The Bride of MacGuffin.\"");
return (($a = ["introduction_3"]), $b = data, $b['$next_cue='].apply($b, $a), $a[$a.length-1]);}, TMP_247.$$s = self, TMP_247), $a).call($he, "introduction_2");
($a = ($hf = self).$pause, $a.$$p = (TMP_248 = function(actor, data){var self = TMP_248.$$s || this, $a, $b;
if (actor == null) actor = nil;if (data == null) data = nil;
actor.$tell("\"Who?\"");
actor.$tell("\"It's a Hitchcock movie,\" he says.");
actor.$tell("\"Never heard of it.\"");
actor.$tell("\"They didn't put it out. Nobody ever saw it but a handful of studio guys at a private screening sixty years ago. Goldletter ... uh ... stumbled across a workprint. He brought it here to get it appraised by some film geek at NYU. Two days ago it got swiped out his hotel room.\"");
actor.$tell("\"What's it got to do with my brother?\"");
actor.$tell("\"Goldletter bribed the desk clerk for the security video. Sure enough, Marty was snooping around the lobby the afternoon before the burglary.\"");
actor.$tell("\"Could be a coincidence.\"");
actor.$tell("Hector shakes his head. \"We had a long talk with him this morning. He came clean. Eventually.\"");
actor.$tell("You fight an urge to clench your fists. \"I don't see how I'm supposed to help you.\"");
return (($a = ["introduction_4"]), $b = data, $b['$next_cue='].apply($b, $a), $a[$a.length-1]);}, TMP_248.$$s = self, TMP_248), $a).call($hf, "introduction_3");
($a = ($hg = self).$pause, $a.$$p = (TMP_249 = function(actor, data){var self = TMP_249.$$s || this, $a, $b;
if (actor == null) actor = nil;if (data == null) data = nil;
actor.$tell("Hector smirks. \"I seem to remember you were an okay second-story man.\"");
actor.$tell("\"I was never a man.\"");
actor.$tell("\"You know what I mean, lady. You wanna see your brother again, you got a job to do. The workprint for your brother. What do you say?\"");
actor.$tell("You grimace. \"How do you expect me to find it?\"");
actor.$tell("\"Marty didn't know the buyer's name, but the job got brokered through an old friend of yours. Benny Zero.\"");
actor.$tell("You haven't talked to Benny in years. He used to fence high-end merchandise through a private club in Manhattan. You wouldn't call him a friend, but you let it pass. \"And?\"");
actor.$tell("\"If me or Goldletter go snooping around, he'll know we're on to him. We need you to do the legwork.\"");
actor.$tell("\"Sounds like a long shot.\"");
actor.$tell("\"If you ever want to see your brother again, you better hope it works. We'll be in touch.\" He holsters his gun and leaves you alone in the apartment.");
return (($a = ["introduction_5"]), $b = data, $b['$next_cue='].apply($b, $a), $a[$a.length-1]);}, TMP_249.$$s = self, TMP_249), $a).call($hg, "introduction_4");
($a = ($hh = self).$pause, $a.$$p = (TMP_250 = function(actor, data){var self = TMP_250.$$s || this, $a, $b;
if (actor == null) actor = nil;if (data == null) data = nil;
actor.$tell("You take your first deep breath since you walked through the door. Goddammit, Marty. Six years of living straight time, down the drain...");
actor.$stream("Second Story
");
actor.$tell("A Gamefic adventure by Fred Snyder");
return (($a = ["look"]), $b = data, $b['$next_cue='].apply($b, $a), $a[$a.length-1]);}, TMP_250.$$s = self, TMP_250), $a).call($hh, "introduction_5");
($a = ($hi = self).$pause, $a.$$p = (TMP_251 = function(actor, data){var self = TMP_251.$$s || this, $a, $b;
if (actor == null) actor = nil;if (data == null) data = nil;
actor.$tell("As you reach for the doorknob, you hear two voices in heated discussion. You recognize one of the voices as Benny Zero. You put your ear to the jamb and listen.");
return (($a = ["eavesdrop_on_benny"]), $b = data, $b['$next_cue='].apply($b, $a), $a[$a.length-1]);}, TMP_251.$$s = self, TMP_251), $a).call($hi, "hear_benny");
($a = ($hj = self).$pause, $a.$$p = (TMP_252 = function(actor, data){var self = TMP_252.$$s || this, $a, $b;
if (actor == null) actor = nil;if (data == null) data = nil;
(($a = [nil]), $b = self.$pick("truck"), $b['$parent='].apply($b, $a), $a[$a.length-1]);
actor.$tell("Benny's talking to someone named Howell. After a minute you gather that Howell is a film professor at NYU. He must be the expert that Goldletter hired to appraise Bride of MacGuffin.");
actor.$tell("Howell: Frank can have the copy done by morning. He's a top-notch film tech.");
actor.$tell("Benny: Vouch for him all you want. I don't know him, so he ain't getting left alone with the reels.");
actor.$tell("Howell: But I'm supposed to get a digital copy for my own use. That was the deal.");
actor.$tell("Benny: You can have your copy, but I want a guy at the studio to keep an eye on him while he makes it.");
actor.$tell("Howell: Fine with me.");
return (($a = ["eavesdrop_on_benny_2"]), $b = data, $b['$next_cue='].apply($b, $a), $a[$a.length-1]);}, TMP_252.$$s = self, TMP_252), $a).call($hj, "eavesdrop_on_benny");
($a = ($hk = self).$pause, $a.$$p = (TMP_253 = function(actor, data){var self = TMP_253.$$s || this, $a, $b;
if (actor == null) actor = nil;if (data == null) data = nil;
actor.$tell("Benny: What's Frank's piece of the action, anyway? You must be giving him something if you think he won't double-cross you.");
actor.$tell("Howell: He's my TA. I promised him a recommendation for a faculty position.");
actor.$tell("Benny: Whatever. My guy'll be there if he tries to get cute.");
actor.$tell("Howell: Bring an army if it makes you feel better. Let's get started.");
actor.$tell("You hear the scrape of chairs and footsteps. You slip into the southern conference room and peek through a crack in the door. Benny and Howell walk back to the main lounge. Once the coast is clear, you go back to the hallway.");
actor['$[]=']("eavesdropped", true);
return (($a = ["look"]), $b = data, $b['$next_cue='].apply($b, $a), $a[$a.length-1]);}, TMP_253.$$s = self, TMP_253), $a).call($hk, "eavesdrop_on_benny_2");
($a = ($hl = self).$pause, $a.$$p = (TMP_254 = function(actor, data){var self = TMP_254.$$s || this, $a, $b;
if (actor == null) actor = nil;if (data == null) data = nil;
actor.$tell("Now you know how Benny Zero got wind of Goldletter's film. Professor Howell double-crossed him.");
actor.$tell("The film's on its way to someone who's going to make a digital copy for Howell. You don't know who he is, but you have an idea where to start looking. You remember from your six months in college that NYU's film department is in the Tisch building on Broadway.");
actor['$[]=']("thought_of_tisch", true);
return (($a = ["look"]), $b = data, $b['$next_cue='].apply($b, $a), $a[$a.length-1]);}, TMP_254.$$s = self, TMP_254), $a).call($hl, "think_about_tisch");
($a = ($hm = self).$on_player_update, $a.$$p = (TMP_255 = function(actor){var self = TMP_255.$$s || this, $a, $b, $c;
if (actor == null) actor = nil;
if ((($a = ($b = ($c = actor['$[]']("thought_of_tisch"), $c !== false && $c !== nil ?$rb_gt(actor['$[]']("goldletter_countdown"), 0) : $c), $b !== false && $b !== nil ?self.$pick("bike").$parent()['$=='](actor.$parent()) : $b)) !== nil && (!$a.$$is_boolean || $a == true))) {
($a = "goldletter_countdown", $b = actor, $b['$[]=']($a, $rb_minus($b['$[]']($a), 1)));
if ((($a = (($b = actor['$[]']("goldletter_countdown")['$=='](0)) ? actor.$scene().$key()['$==']("active") : $b)) !== nil && (!$a.$$is_boolean || $a == true))) {
return self.$cue(actor, "goldletter_1")
} else {
return nil
};
} else {
return nil
}}, TMP_255.$$s = self, TMP_255), $a).call($hm);
($a = ($hn = self).$pause, $a.$$p = (TMP_256 = function(actor, data){var self = TMP_256.$$s || this, $a, $b;
if (actor == null) actor = nil;if (data == null) data = nil;
actor.$tell("Hector suddenly invades your personal space. You didn't even see him coming.");
actor.$tell("He motions toward a black Cadillac pulling to the curb. \"Get in. The man wants to talk to you.\"");
return (($a = ["goldletter_2"]), $b = data, $b['$next_cue='].apply($b, $a), $a[$a.length-1]);}, TMP_256.$$s = self, TMP_256), $a).call($hn, "goldletter_1");
($a = ($ho = self).$pause, $a.$$p = (TMP_257 = function(actor, data){var self = TMP_257.$$s || this, $a, $b;
if (actor == null) actor = nil;if (data == null) data = nil;
actor.$tell("You join Sam Goldletter in the back seat of the Cadillac. He looks about the same as you remember. His paunch is a little bigger and his hair is a little thinner. He still dresses mighty upscale for a scumbag.");
actor.$tell("\"Nice job getting into the Anchor,\" he says. \"I remember you were always fast on your feet.\"");
actor.$tell("\"You got someone tailing me?\"");
actor.$tell("\"Just making sure you stay focused. What did you learn?\"");
actor.$tell("\"Not so fast. I don't make another move until I get some proof my brother is still alive.\"");
actor.$tell("Goldletter sighs and pulls out his cell phone. \"I'm negotiating with the wildcard. Put her brother on.\" He passes the phone to you.");
actor.$tell("Marty's voice has a tremor. \"J-Jane?\"");
return (($a = ["goldletter_3"]), $b = data, $b['$next_cue='].apply($b, $a), $a[$a.length-1]);}, TMP_257.$$s = self, TMP_257), $a).call($ho, "goldletter_2");
($a = ($hp = self).$pause, $a.$$p = (TMP_258 = function(actor, data){var self = TMP_258.$$s || this, $a, $b;
if (actor == null) actor = nil;if (data == null) data = nil;
actor.$tell("\"You okay, Marty?\"");
actor.$tell("\"They roughed me up pretty good. I'm okay for now.\"");
actor.$tell("\"I'm doing what I can, but I need more information. You know anything about Benny's partners? Howell? The other guy?\"");
actor.$tell("\"I never saw any partners. I just talked to Benny at the Anchor Club.\"");
actor.$tell("\"It's okay. I got a couple leads. We'll get out of this somehow.\"");
actor.$tell("\"That's enough,\" Goldletter says. He snatches the phone and puts it back in his pocket. \"You got a couple leads, huh?\"");
return (($a = ["goldletter_4"]), $b = data, $b['$next_cue='].apply($b, $a), $a[$a.length-1]);}, TMP_258.$$s = self, TMP_258), $a).call($hp, "goldletter_3");
($a = ($hq = self).$pause, $a.$$p = (TMP_259 = function(actor, data){var self = TMP_259.$$s || this, $a, $b;
if (actor == null) actor = nil;if (data == null) data = nil;
actor.$tell("\"I'm working on it,\" you say. \"Still need to do some digging.\"");
actor.$tell("\"What do you know?\"");
actor.$tell("\"Back off, Goldletter. No more of these meetings until we're ready to make the trade. And no more tails. The last thing I need is one of your meatheads drawing attention to me. Okay?\"");
actor.$tell("Goldletter stares at you for a moment and shrugs. \"Fair enough. Next time we talk, I'll have your brother with me. Just make sure you have my MacGuffin.\"");
actor.$tell("\"How do I reach you?\"");
actor.$tell("\"Come down to the Riviera and ask for Hector.\"");
actor.$tell("\"I'll be in touch.\"");
actor.$tell("You step back onto the sidewalk. The Cadillac merges into traffic and disappears around a corner.");
actor.$tell("The Riviera Cabaret. You roll your eyes in disgust. Of course Goldletter would still have his fingers in that sleazehole.");
return (($a = ["look"]), $b = data, $b['$next_cue='].apply($b, $a), $a[$a.length-1]);}, TMP_259.$$s = self, TMP_259), $a).call($hq, "goldletter_4");
($a = ($hr = self).$pause, $a.$$p = (TMP_260 = function(actor, data){var self = TMP_260.$$s || this, $a, $b;
if (actor == null) actor = nil;if (data == null) data = nil;
actor.$tell("Goldletter and Hector are here with Marty crowded between them. Your chest tightens when you see Marty's face. They did a number on him, but mostly you're relieved that he's still alive.");
actor.$tell("\"Where's the film?\" Goldletter says.");
actor.$tell("\"Nearby.\"");
actor.$tell("\"You better hope so.\"");
actor.$tell("\"Just a precaution. Let's head closer to the stairs. It'll be here soon.\"");
actor.$tell("Just as you reach the stairs, the PA speakers come to life. \"Paging Mr. Goldletter. Mr. Sam Goldletter. Please come to the Amtrak Lost & Found in the Main Concourse. Mr. Sam Goldletter...\"");
return (($a = ["exchange_2"]), $b = data, $b['$next_cue='].apply($b, $a), $a[$a.length-1]);}, TMP_260.$$s = self, TMP_260), $a).call($hr, "exchange");
($a = ($hs = self).$pause, $a.$$p = (TMP_261 = function(actor, data){var self = TMP_261.$$s || this, $a, $b;
if (actor == null) actor = nil;if (data == null) data = nil;
actor.$tell("Goldletter gives you a startled look.");
actor.$tell("\"The film's all yours,\" you say. \"I just wanted a record of the exchange, is all.\"");
actor.$tell("\"Are you crazy?\"");
actor.$tell("\"Hector can wait with me and Marty while you make sure it's there. By tomorrow morning, no one will care about another schlub who lost a package. But if anything happens to me in Penn Station tonight, it won't take long for the police to learn that I had just dropped off a film for you.\"");
actor.$tell("\"If this is a trick...\"");
actor.$tell("\"You counted on the fact that I'd want to avoid the cops. Now I'm counting on the same thing from you.\"");
actor.$tell("Goldletter takes a few seconds to think about it. Then he nods to Hector. \"Walk them to the street and wait for my call.\" He starts up the stairs toward the Main Concourse.");
return (($a = ["exchange_3"]), $b = data, $b['$next_cue='].apply($b, $a), $a[$a.length-1]);}, TMP_261.$$s = self, TMP_261), $a).call($hs, "exchange_2");
($a = ($ht = self).$pause, $a.$$p = (TMP_262 = function(actor, data){var self = TMP_262.$$s || this, $a, $b;
if (actor == null) actor = nil;if (data == null) data = nil;
actor.$tell("The three of you reach the entrance. \"Hold it,\" Hector says. He loosens a button on his jacket. His phone rings a minute later.");
actor.$tell("\"Yeah.\" He listens for a few seconds and hangs up. He looks at you with his empty eyes.");
actor.$tell("\"Well?\" you say.");
actor.$tell("Hector turns on his heels and leaves the station.");
actor.$tell("Marty looks like he's ready to faint. You grab him by the elbow. \"Let's get the hell out of here.\"");
return (($a = ["epilogue"]), $b = data, $b['$next_cue='].apply($b, $a), $a[$a.length-1]);}, TMP_262.$$s = self, TMP_262), $a).call($ht, "exchange_3");
($a = ($hu = self).$conclusion, $a.$$p = (TMP_263 = function(actor){var self = TMP_263.$$s || this;
if (actor == null) actor = nil;
actor.$stream("Epilogue
");
actor.$tell("One week later you meet Marty for lunch at Salvation Taco. \"Your bruises look like they're healing okay.\"");
actor.$tell("Marty touches the dark spot beneath his left eye. \"No more headaches either.\"");
actor.$tell("\"You heard anything from Goldletter?\"");
actor.$tell("\"Nah. You read him right. Coming after us now would be more trouble than it's worth.\"");
actor.$tell("\"He might not feel that way if you cross him again.\"");
actor.$tell("\"I been thinking about that. Maybe it's about time I found a new career, too.\"");
actor.$tell("\"Yeah?\"");
return actor.$tell("Marty raises an eyebrow. \"How much does one of them bicycles cost?\"");}, TMP_263.$$s = self, TMP_263), $a).call($hu, "epilogue");
($a = ($hv = self).$pause, $a.$$p = (TMP_264 = function(actor, data){var self = TMP_264.$$s || this, $a, $b;
if (actor == null) actor = nil;if (data == null) data = nil;
actor.$tell("You approach the clerk with a hopeful smile. \"Do you work for Lost and Found? Maybe you can help me. I have something I'm trying to return...\"");
actor.$tell("The clerk gives you a doubtful look. \"Well, technically the office is already closed...\"");
actor.$tell("\"Oh, please? I'm supposed to give it to my boss, but I just found out my brother's in the hospital. I need to get there as soon as possible, but if I don't deliver this film, I'll lose my job.\"");
actor.$tell("\"Where's your boss now?\"");
actor.$tell("\"He's coming on the next train from New Jersey.\"");
actor.$tell("The clerk looks at his watch. \"Oh, what the heck. Never let 'em say I wouldn't help a pretty girl. We better make it official, though. I'll need to fill out a report and give you a receipt.\"");
actor.$tell("You had been counting on the paperwork. If Goldletter tries anything funny, it won't hurt to have a record that both of you were here.");
return (($a = ["look"]), $b = data, $b['$next_cue='].apply($b, $a), $a[$a.length-1]);}, TMP_264.$$s = self, TMP_264), $a).call($hv, "clerk_can_help");
($a = ($hw = self).$pause, $a.$$p = (TMP_265 = function(actor, data){var self = TMP_265.$$s || this, $a, $b;
if (self.receipt == null) self.receipt = nil;
if (actor == null) actor = nil;if (data == null) data = nil;
actor.$tell("You tell the clerk your name and say the film is for Sam Goldletter. He fills out a couple of forms and hands you a receipt. \"Good luck, ma'am. Hope your brother's okay.\" He gives you a friendly wave and leaves the terminal.");
(($a = [actor]), $b = self.receipt, $b['$parent='].apply($b, $a), $a[$a.length-1]);
return (($a = ["look"]), $b = data, $b['$next_cue='].apply($b, $a), $a[$a.length-1]);}, TMP_265.$$s = self, TMP_265), $a).call($hw, "clerk_stashed_macguffin");
bike = self.$make($scope.get('Transporter'), $hash2(["name", "synonyms", "parent", "description", "mobile"], {"name": "bike", "synonyms": "bicycle ride steel frame", "parent": self.martys_street, "description": "It's a beautiful Tribe Frisco with a light steel frame, pursuit handles, and a flip-flop hub to switch between fixed and free gears.", "mobile": true}));
(($a = ["Your bike is parked at the curb."]), $hx = bike, $hx['$locale_description='].apply($hx, $a), $a[$a.length-1]);
self.$make($scope.get('Scenery'), $hash2(["name", "synonyms", "description", "parent", "attached"], {"name": "pursuit handles", "synonyms": "bullhorn handlebars", "description": "Sometimes called bullhorn handles, they have a stylish curve that accommodate a variety of hand positions.", "parent": bike, "attached": true}));
flip = self.$make($scope.get('Scenery'), $hash2(["name", "description", "parent", "attached"], {"name": "flip-flop hub", "description": "A switch for changing gear styles.", "parent": bike, "attached": true}));
($a = ($hx = bike).$make_destination_hash, $a.$$p = (TMP_266 = function(actor){var self = TMP_266.$$s || this, $a, $b, destinations = nil;
if (self.bedford_avenue == null) self.bedford_avenue = nil;
if (self.east_15th_street == null) self.east_15th_street = nil;
if (self.broadway == null) self.broadway = nil;
if (self.mulberry_street == null) self.mulberry_street = nil;
if (self.west_37th_street == null) self.west_37th_street = nil;
if (self.thirty_fourth_street == null) self.thirty_fourth_street = nil;
if (self.macguffin == null) self.macguffin = nil;
if (actor == null) actor = nil;
destinations = $hash2([], {});
destinations['$[]=']("Marty's apartment", self.$pick("Lenox Road"));
destinations['$[]=']("Your apartment", self.bedford_avenue);
destinations['$[]=']("The Anchor Club", self.east_15th_street);
if (actor['$[]']("thought_of_tisch")['$=='](true)) {
destinations['$[]=']("Tisch School of the Arts", self.broadway)};
if ((($a = (($b = actor['$[]']("seen_card")['$=='](true)) ? actor['$[]']("escaped_cops")['$=='](false) : $b)) !== nil && (!$a.$$is_boolean || $a == true))) {
destinations['$[]=']("Cesar Media", self.mulberry_street)};
if ((($a = actor['$[]']("escaped_cops")) !== nil && (!$a.$$is_boolean || $a == true))) {
destinations['$[]=']("Riviera Cabaret", self.west_37th_street)};
if ((($a = actor['$[]']("made_arrangement")) !== nil && (!$a.$$is_boolean || $a == true))) {
destinations['$[]=']("Penn Station", self.thirty_fourth_street)};
if ((($a = ((($b = actor.$room()['$=='](self.mulberry_street)['$!']()) !== false && $b !== nil) ? $b : self.macguffin.$parent()['$=='](actor)['$!']())) !== nil && (!$a.$$is_boolean || $a == true))) {
destinations['$[]=']("Stay here", nil)};
return destinations;}, TMP_266.$$s = self, TMP_266), $a).call($hx);
return ($a = ($hy = self).$scene, $a.$$p = (TMP_267 = function(actor){var self = TMP_267.$$s || this;
if (actor == null) actor = nil;
return actor.$perform("look")}, TMP_267.$$s = self, TMP_267), $a).call($hy, "look");}, TMP_1.$$s = self, TMP_1), $a).call($b)
})(Opal);