1 ! Copyright (C) 2021 Jason Self <j@jxself.org>
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.
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.
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 Constant DEATH_MENTION_UNDO;
16 Constant Story "Snowed In";
18 "^A work of interactive fiction.
19 ^If you get stuck try typing HELP.
20 ^Ongoing development: https://jxself.org/git/?p=snowed-in.git
21 ^Send bugs and feedback by email to j@@64jxself.org.
22 ^IFID DE9FA2E5-4EC7-4166-9218-E56EFA1DF40F
23 ^Copyright (C) 2021 Jason Self
24 ^You can change and share this game under the terms of the GNU
25 Affero General Public License as published by the Free Software
26 Foundation (FSF), either version 3 of the License, or (at your
27 option) any later version published by the FSF. See the GNU Affero
28 General Public License for more details.^^You should have received
29 a copy of this game's source code along with a copy of the GNU
30 Affero General Public License so that you can know your rights.
31 If not, contact the place you got it from.^^";
37 Object mainroom "Main Room"
39 "This room is a total wreck - it looks like a major fight
40 happened in here. There's a ripped up sofa and a broken
41 old coffee table in the middle of the room. A flat-screen
42 TV is mounted against the wall, with the screen dangling
43 out. Tis cabin has three other rooms. There's an office
44 area with a desk and computer to the east. There's a
45 bedroom to the north and a kitchenette to the west.
46 There's a doorway in the south wall leading outside.",
50 Object sofa "sofa" mainroom
51 with name 'sofa' 'couch',
53 "The sofa is in poor shape. The upholstery is ripped and
54 there are several holes in it.",
56 Take, Pull, Push, PushDir, Turn:
57 print_ret (The) self, " is too heavy for that.";
59 has scenery supporter enterable;
61 Object coffeetable "coffee table" mainroom
62 with name 'coffee' 'table',
64 "The old coffee table looks as if it's had quite a bit
65 of use. There are burn marks covering it and the paint is
66 worn off in most places.",
68 Take, Pull, Push, PushDir, Turn:
69 print_ret (The) self, " is too heavy for that.";
71 has scenery supporter enterable;
73 Object television "flat-screen TV" mainroom
74 with name 'TV' 'television' 'flat' 'screen' 'flat-screen',
76 "The flat-screen TV looks fairly modern but it's
77 been broken in a fight and the screen is dangling out.",
79 Take, Pull, Push, PushDir, Turn:
80 print_ret (The) self, " is firmly mounted to the wall.";
82 if (television hasnt visited) {
84 "Despite the significant damage, the television
85 comes to life in one last valiant attempt to be
86 useful. Your favorite news program is on: U.S.
87 News And Grue Report. The news anchor is giving a
88 warning of Grue sightings in the area of the
89 forest before the television finally dies.^";
90 give television visited;
94 "The flat-screen TV is broken and can't be
99 has scenery switchable;
101 Object lightsocket "light socket" mainroom
102 with name 'light' 'socket' 'lightsocket',
104 Take, Pull, Push, PushDir, Turn:
106 "You don't have the tools to remove a light
109 if (noun ~= lightbulb) {
113 " into the light socket? Maybe you should come with a
114 warning label because you contain more than a trace
117 if (noun == lightbulb) {
122 has scenery container transparent open;
124 Object lightbulb "light bulb" lightsocket
125 with name 'light' 'bulb' 'lightbulb',
127 Take, Pull, Push, PushDir, Turn:
128 give mainroom ~light;
132 Object office "Office"
134 "There seems to have been quite a fight in here. The room
135 is a wreck. Holes are in the walls and the windows are
136 broken, letting in the cold air from outside. Chunks of
137 drywall and insulation cover the floor. The desk has a
138 bullet hole through the middle.",
142 Object desk "solid oak desk" office
143 with name 'solid' 'oak' 'desk',
145 "The desk is old and made of solid oak. The right side of
146 it has been smashed and all of the drawers have been
147 removed. A bullet hole goes straight through the middle of
150 Take, Pull, Push, PushDir, Turn:
151 print_ret (The) self, " is too heavy for that.";
153 has scenery supporter enterable;
155 Object businesscard "business card" desk
156 with name 'business' 'card',
158 "The business card is white and has blacked edges. It
159 bears the name ~Lasting Solutions~, a local data recovery
160 company, in bold letters on the top. The company's
161 website URL is printed in blue at the bottom.";
163 Object salesreceipt "sales receipt" desk
164 with name 'sales' 'receipt',
166 "The sales receipt is for $200, dated three years ago.
167 It's printed on old tractor feed printer paper and bears
168 the name ~Lasting Solutions~, a local data recovery
169 company. A handwritten note is scrawled on the bottom:
170 ~Start working on these hard drives soon.~";
172 Object computer "computer" desk
173 with name 'computer' 'PC',
175 "It's a heavy older model that appears to have been
176 seriously damaged in a fight. It's clearly on its last
177 legs but is perhaps still useful.",
179 Take, Pull, Push, PushDir, Turn:
180 print_ret (The) self, " is too heavy for that.";
182 if (computer hasnt visited) {
184 "The computer makes some concerning noises while
185 lights on the front also illuminate. The last
186 file is quickly displayed. ~If anyone else reads
187 this, you're in serious danger. I've been fighting
188 a ferocious grue for the last three days. I'm
189 almost out of supplies and can't last much
190 longer. I'm going to take the last of the supplies
191 and escape through the office window in a
192 last-ditch effort to get away and get back into
193 town. I hope I can make it.~ The computer then
194 makes a sickly sound and finally dies as some
195 smoke comes out of it.^";
196 give computer visited;
200 "The display briefly flickers but nothing
209 thedark.description =
210 "It is pitch black. You are likely to be eaten
213 "You're trapped in a snowstorm while visiting the forest
214 during your vacation to a small rural town. This is the worst
215 snowstorm in more than 40 years. If only you has listened to
216 the news. Well, it's too late for that. The snow has been
217 falling for the past seven hours and shows no signs of
218 stopping anytime soon. You need to get back to your hotel in
219 the town. You finally manage to find an old cabin in the
220 woods and get inside but have no idea where you are. You're
221 not dressed for this weather.^";
225 if (location == thedark && real_location == mainroom) {
226 PlaceInScope(lightsocket);
231 Object grue "grue" thedark
233 name 'grue' 'monster',
239 if (location ~= thedark) {
240 self.turns_active = 0;
244 switch (++(self.turns_active)) {
246 "^You hear horrible gurgling sounds in the dark.";
248 "^You hear the clink of razor-sharp claws nearby.";
251 "^Your last memory is of the slavering fangs of the
252 horrible Grue as it claims you for a meal.";
259 "Oh, no! You have walked into the slavering fangs of a lurking
265 "^If you need help try some of the commands from:
266 ^http://pr-if.org/doc/play-if-card/^";
270 print "Nothing obvious happens.^";