Update to serial 200524
[homeland.git] / src / objects / intro / neighborlivingroom.inf
1 ! Copyright (C) 2019, 2020 Jason Self <j@jxself.org>
2 !
3 ! This file is free software: you may copy, redistribute and/or
4 ! modify it under the terms of the GNU Affero General Public License
5 ! as published by the Free Software Foundation, either version 3 of
6 ! the License, or (at your option) any later version.
7 !
8 ! This file is distributed in the hope that it will be useful, but
9 ! WITHOUT ANY WARRANTY; without even the implied warranty of
10 ! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
11 ! Affero General Public License for more details.
12 !
13 ! You should have received a copy of the GNU Affero General Public
14 ! License along with this file. If not, see https://gnu.org/licenses/
15
16 Object  neighborlivingroom "Neighbor's Livingroom"
17   with  description 
18             "You are in your neighbor's livingroom. It seems that no 
19             one has lived here in a long time, even though you saw 
20             your neighbor here last week. All of the furniture has 
21             been removed and the air smells stale. A large bay window 
22             enclosed by sheer cobalt blue curtains allowing light to 
23             come through. A door is to the east.^^A machine as tall as 
24             you sits in the center of their livingroom. It consists 
25             of three transparent spheres joined together containing 
26             machinery. A barrel with a small aperture comes out of the 
27             farthest sphere, pointing down and to the wall. The 
28             entire thing rests on a shiny metal platform allowing it 
29             to rotate and tilt with ease.",
30         w_to neighborkitchen,
31         e_to neighbordoor,
32         before [;
33           Go:
34             if (bluebutton has on && poker notin machine) {
35                 machine.shoot();
36                 rtrue;
37             }
38         ],
39   has   light;
40
41 Object  neighborwindow "window" neighborlivingroom
42   with  name 'large' 'bay' 'window' 'windows',
43         description "A large bay window enclosed by sheer cobalt blue 
44                     curtains allowing light to come through.",
45         before [;
46           Go:
47             print_ret "The window is not something you can go through.";
48           Open, Close:
49             print_ret "This isn't the type of window that can be 
50                       opened or closed.";
51         ],
52   has   scenery;
53
54 Object  neighborcurtains "curtains" neighborlivingroom
55   with  name 'cobalt' 'blue' 'curtain' 'curtains',
56         description 
57             "Cobalt blue in color, the curtains have been decorated with 
58             intricate embroidery.",
59         before [;
60           Take, Pull, Push, PushDir:
61             print_ret "Don't you think they look nice where they are?";
62         ],
63   has   scenery openable pluralname;
64
65 Object  embroidery "embroidery" neighborlivingroom
66   with  name 'embroidery' 'pattern' 'patterns',
67   has   scenery;
68
69 Object  redbutton "red button" neighborlivingroom
70   with  name 'red' 'red button' 'button' 'buttons',
71         before [;
72           Push:
73             if (bluebutton has on && poker notin machine) {
74                 print 
75                     "You reach for the red button, but not in 
76                     time...^ ";
77                 machine.shoot();
78                 rtrue;
79             }
80             if (poker in machine)
81                 print_ret 
82                     "You press the red button but it's futile because 
83                     the machine's shorted out.";
84             else {
85                 print 
86                     "You push the red button. The machine makes clunky 
87                     noises as machinery moves inside. A loud humming 
88                     begins to emanate from it. It comes to life, spins 
89                     around on its base, aims, and quickly fires a 
90                     series of three bright blue sparks at you. You 
91                     hear a small explosive sound as they impact your 
92                     chest. You feel a little disoriented as it 
93                     teleports you away.^";
94                 PlayerTo(campsite);
95                 rtrue;
96             }
97         ],
98   has   scenery;
99
100 Object  bluebutton "blue button" neighborlivingroom
101   with  name 'blue' 'blue button' 'button' 'buttons',
102         before [;
103           Push:
104             if (bluebutton has on) {
105                 if (poker notin machine) {
106                     print 
107                         "You reach for the blue button, but not 
108                         in time...^ ";
109                     machine.shoot();
110                     rtrue;
111                 }
112                 else {
113                     give bluebutton ~on;
114                     print_ret "You push the blue button. The machine 
115                     sounds like it powers down.";
116                 }
117             }
118             else {
119                 give bluebutton on;
120                 if (poker notin machine) {
121                     machine.shoot();
122                     rtrue;
123                 }
124                 print_ret "You push the blue button.";
125             }
126         ],
127   has   scenery on;
128
129 Object  machine "machine" neighborlivingroom
130   with  name 'machine' 'machinery' 'sphere' 'spheres' 'platform' 'barrel'
131         'aperture' 'metal platform' 'shiny metal platform' 'shiny platform'
132         'shiny' 'metal',
133         description 
134             "It consists of three transparent spheres joined together 
135             containing machinery. A barrel with a small aperture comes 
136             out of the farthest sphere, pointing down and to the wall. 
137             The entire thing rests on a shiny metal platform allowing 
138             it to rotate and tilt with ease. There is a blue button 
139             and a red button.",
140         time_left,
141         before [ weapon;
142           Attack:
143             if (noun == self)
144                 weapon = second;
145             else
146                 weapon = noun;
147             if (weapon ~= poker) {
148                 print "That wasn't helpful.^";
149                 if (bluebutton has on)
150                     self.shoot();
151                 rtrue;
152             }
153             self.shortout();
154             return true;
155           Receive:
156             if (noun == poker) {
157                 self.shortout();
158                 return true;
159             }
160             if (bluebutton has on)
161                 self.shoot();
162             rtrue;
163         ],
164         time_out [;
165             if (poker in self)
166                 StopTimer(machine);
167             else
168                 if (bluebutton has on)
169                     self.shoot();
170         ],
171         daemon [;
172             if (poker in player)
173                 rfalse;
174             if (player in parent(self) && poker notin machine)
175                 self.shoot();
176         ],
177         shoot [ destination;
178             destination = random(3);
179             print 
180                 "^A loud humming begins to emanate from the machine. 
181                 It comes to life, spins around on its base, aims, and 
182                 quickly fires a series of three bright blue sparks at 
183                 you. You hear a small explosive sound as they impact 
184                 your chest. You feel a little disoriented as it 
185                 teleports you away.^";
186             if (destination == 1)
187                 PlayerTo(kitchen);
188             if (destination == 2)
189                 PlayerTo(livingroom);
190             if (destination == 3)
191                 PlayerTo(bedroom);
192         ],
193         shortout [;
194             if (machine hasnt visited) {
195                 score = score + 1;
196                 give machine visited;
197             }
198             move poker to self;
199             print "You put the poker into ", (the) self, 
200                 ". Sparks 
201                 fly wildly in every direction as it shorts out.^";
202         ],
203   has   scenery container open;