Having designed your Crimbot, you will be presented with a series of encounters. Depending on the capabilities of the Crimbot you designed, you will be able to select different choices to avoid or minimize damage suffered, or to obtain additional rewards.
Floor 2 obstacles are more difficult than on Floor 1, but provide better schematics and more valuable recovered elf items. In addition, elf items recovered from the factory floor (down the ladder) choice tend to be more valuable than those in the corporate offices (up the ladder).
Because a Hard Passageway or Office Hazard will always damage your Crimbot, there are only a limited number of encounters per adventure before your Crimbot is destroyed, sending you back to design a new one. In addition, at any time you may command your Crimbot to self-destruct.
The Crimbot's camera feed shows what used to be the lobby of the Crimbo Town Toy Factory, now shot through with random wires and tubes and stuff. It looks like you can send the robot past the receptionist's desk to the first floor fairly easily, but the door leading to the stairwell is latched and the elevator down to the basement has some kind of access panel wired up to it.
door.open(floor_1)
<Crimbot name> goes through the door.
mount / stairs
<Crimbot name> turns the doorknob and heads upstairs.
wait(elevator);
<Crimbot name> makes short work of the elevator's security system.
Floor 1
Floor 1 Crimbot Guards
Bulkybot
The camera reveals an oversized but simple robot standing between your Crimbot and the way forward.
for ($i=1;$i<10;$i++) punch();
Your Crimbot topples the Bulkybot. It's as easy as knocking over a vending machine!
break;
<Crimbot name> manages to squeeze past the Bulkybot, but some of its electronic internal organs get squished in the process.
Your Crimbot takes 1 damage.
Doorbot
The door you're trying to steer your Crimbot through turns out to be a robot.
set door_protocol _PUNCH
Your Crimbot easily punches the Doorbot open. Turns out it wasn't even latched!
set door_protocol _SHOCK
Your Crimbot shocks the door, causing it to open violently with a shower of sparks and a metallic gasp.
set door_protocol _GO_AROUND
<Crimbot name> goes around the door, which involves plowing headfirst through a wall.
Your Crimbot takes 1 damage.
Mookbot
The camera reveals a confrontation between your Crimbot and a small but thuggish-looking robot.
gun.shoot()
Don't bring a robo-fist to a robo-gunfight. That's what somebody should have told that Mookbot. Your Crimbot makes short work of it and proceeds.
blam_pow_socko
You press the button and <Crimbot name> punches the Mookbot. The speaker relays a satisfying crunching sound.
sleep()
Your Crimbot's attempt to wait until the Mookbot left would have worked better if it hadn't already been detected when you issued the command.
Your Crimbot takes 1 damage.
Security Drone
The camera reveals that your Crimbot has been detained by a low-level hovering security robot.
shoot[0]
The speaker crackles with gunfire as <Crimbot name> dispatches the security drone.
SHORTCIRCUIT.BAT
The speaker relays a warbling "GUHGUHGUHGUHGUH" sound as your Crimbot scrambles the security drone's tiny metal mind.
for x = 1 to 1000 : position = position +1 : next x
<Crimbot name> gets shot in the back as it moseys past the security drone. That behavior was not even a little bit sportsmanlike.
Your Crimbot takes 1 damage.
Turretbot
The camera reveals a ceiling-mounted turret between your Crimbot and the door to the next room.
RUN BLAST.BAS
With a single well-aimed shot (don't get cocky, it was computer-assisted,) your Crimbot disables the turret and moves into the next area.
sleep(1000)
The turret gets one good shot in as your Crimbot slowly scoots underneath it into the next room.
Your Crimbot takes 1 damage.
Zippybot
The camera reveals a fast-moving wheeled robot darting around on the floor in front of your Crimbot.
floor = monkey; monkey.shock();
<Crimbot name> electrifies the floor. The Zippybot stops moving and starts comically emitting black smoke.
wait(200);
Your Crimbot tries to wait until the obnoxious little robot leaves, but ends up tripping over it anyway.
Your Crimbot takes 1 damage.
Floor 1 Easy Passageways
Conveyor, Convey Thyself
The floor of the room your Crimbot is in is a maze of rapid conveyor belts, and the panel that controls their speed is on the opposite side of the room!
maze.solve(fast)
<Crimbot name> aims its guns at the control panel and shoots/shuts down the conveyor belts.
maze.solve(slow)
You watch in horror as <Crimbot name> clumsily navigates the moving walkways, falling all over itself.
Your Crimbot takes 1 damage.
Crate Expectations
The camera reveals a big stack of metal bins between your Crimbot and its goal.
/bin/bash
You direct <Crimbot name> to knock over the pile of crates.
/dev/climb
<Crimbot name> climbs to the top of the heap of crates. Once it's at the top, it tumbles down the other side and lands in a heap.
Your Crimbot takes 2 damage.
Some People Call It A Giant Slingblade
The camera reveals that your Crimbot is in a room dominated by a single giant fast-moving circular sawblade. Why does this room even exist?
pathfind(HIGH_EVASION)
You watch <Crimbot name> skillfully pilot itself past the fast-moving sawblade.
do while 1 walkforward
<Crimbot Name> moves as fast as it can, but it turns out to not be fast enough to avoid having some parts of it sawed off.
Your Crimbot takes 1 damage.
Tin Door. Rusted.
Your Crimbot's camera reveals a big metal door that has been corroded by caustic chemicals to the point where it can no longer be opened normally.
while (1) shoot();
<Crimbot name> shoots a Crimbot-sized hole in the door, through which it then proceeds.
repeat (10){ grease.apply() }}
<Crimbot name> lubricates the latch on the door and easily opens it. As the camera pans across the floor on the other side, you notice some discarded elf goodies!
You sigh as you watch <Crimbot name> repeatedly smash itself against the wall next to the door until it finally breaks through.
Your Crimbot takes 2 damage.
The Monster Masher!
The camera reveals that your Crimbot is in a room whose walls are slowly grinding closer together -- you must have accidentally directed it into some sort of trash compactor!
masher->hack()
You shout "Shut down the garbage mashers on the detention level! Shut down the garbage mashers on the detention level!" and nothing happens. Then you press the button and your Crimbot shuts down the garbage masher.
return null;
You watch as <Crimbot name> is rendered slightly narrower.
Your Crimbot takes 1 damage.
War of Gears
The camera reveals a room that clearly wasn't intended to be walked through -- the floor is a writhing and creaking mass of interlocked gears and cogs and stuff.
break; break; break;
You press the button and watch with glee as <Crimbot name> pounds the crap out of the gears until they stop turning.
ceil(float(self))
<Crimbot name> hovers up to the ceiling, safely avoiding the gears and finding a loose schematic stuck against an air intake vent. Score!
You wince as the speaker relays the sounds of little bits of <Crimbot name> getting gnawed off as it walks across the gears..
Your Crimbot takes 2 damage.
Floor 1 Reward Rooms
Inadequate Copy Room Security
The camera reveals what was apparently once a copy room. Further investigation reveals a Crimbot schematic carelessly left in the tray of a photocopier.
perl eyes.pl
<Crimbot name> focuses on the document long enough for you to print a copy.
The camera reveals a whirlwind of sheets of paper -- maybe some kind of climate control malfunction combined with some kind of filing cabinet accident?
sheet_get(random)
<Crimbot name> grabs one of the sheets and holds it in front of its camera long enough for you to make a printout.
The camera, by showing you both a desk and a restroom door, presents your Crimbot with the classic workplace choice: Pretend to work, or don't even bother.
paper.shuffle()
<Crimbot name> pretends to work for a while. Even pretending to work yields a usable document, though.
The camera shows the interior of an elf dormitory room. You're about to leave and resume exploring when you catch a glimpse of an unlocked footlocker near the tiny bed.
/bin/raid/locker
<Crimbot name> flips over the foot locker, dumping its contents into a pneumatic recovery tube.
The camera reveals a long hallway, and a distant door slowly but surely grinding itself closed.
set speed = mosey;
<Crimbot name> doesn't quite make it through the door in time, and ends up leaving a little bit of itself behind.
Your Crimbot takes 2 damage.
set speed = gallop;
<Crimbot name> darts through the door before it closes, but stubs its toe on something on the other side.
Your Crimbot takes 1 damage.
Down In Flames
The camera reveals a hallway whose walls are lined with flame-spewing pipes. What could the point of this place be? What possible Crimbo purpose could this serve?
repeat 10 [ fd 50 ]
<Crimbot name> takes on a decidedly more post-apocalyptic appearance as it slowly gets more and more burned.
Your Crimbot takes 2 damage.
gunup fd 500 gundown
<Crimbot name> manages to bend most of the pipes shut by shooting them.
Your Crimbot takes 1 damage.
Getting Your Bearings
The camera reveals that your Crimbot's only way forward is through a room that appears to be designated for loose ball bearing storage.
vlc comedy.avi
You groan as <Crimbot name> repeatedly falls down on the ball bearings. The speaker blares an obnoxious laugh track.
Your Crimbot takes 2 damage.
vlc drama.mp4
<Crimbot name> manages to traverse the entire floor, only falling down once. Through the speaker, the audience oohs and ahhs.
Your Crimbot takes 1 damage.
Gone With The Wind
The slight wobble of the camera reveals that your Crimbot must traverse a wind tunnel to proceed.
gfortran forward.f
You watch as <Crimbot name> wobbles slowly forward against the wind, repeatedly getting hit in the face with flying debris.
Your Crimbot takes 2 damage.
fan.speed=0
<Crimbot name> punches the fan until it stops blowing. It only hurts a little.
Your Crimbot takes 1 damage.
Floor 2
Floor 2 Crimbot Guards
Compugilist
The screen shows an imminent fight between your Crimbot and a robot that seems to have been optimized for fistfighting.
em.rock(); em.sock();
<Crimbot Name> wins a protracted boxing match against its opponent. You should charge people to watch this stuff!
friendly_chat();
<Crimbot Name> is a talker, not a fighter. Unfortunately, this doesn't make its opponent not a fighter.
Your Crimbot takes 2 damage.
Festively Armed
The camera reveals that your Crimbot's progress has been blocked by a robot... let's say... festooned with guns. Festooned is a good word for it.
RUN TRIPSLIP.BAS
<Crimbot Name> cleverly greases up the floor under the gun-bedecked robot, which falls on its back, leaving its dozens of guns pointed harmlessly at the ceiling.
sleep 1000
<Crimbot Name> politely waits while the gun-bedecked robot shoots a big hole in it.
Your Crimbot takes 1 damage.
Bot Your Shield
The camera reveals an... outhouse door? Oh, no, it's just a security robot hiding behind a massive metal plate with a single hole in it.
shoothole.sh
<Crimbot Name> levels an extremely precise shot through the hole in the Shieldbot's shield. A tinny voice shouts "Heatshot!" through the speaker.
elm
<Crimbot Name> makes like a tree and stands still until the Shieldbot gets tired of pummeling it and leaves.
Your Crimbot takes 2 damage.
Whatcha Thinkin'?
A massive dome dominates (dome-inates, ha ha) the view of the camera. It pans down and reveals the dome to be the brain-covering of an angry robot!
treat(ECT)
<Crimbot Name> puts the clamps to the robot's brain, scrambling its eggs. The... eggs of its thoughts.
./fairfight.pl
<Crimbot Name> puts up a good fight, and eventually wins, but at what cost. AT WHAT COST.
Your Crimbot takes 2 damage.
I See You
The camera reveals a security robot with the biggest eyes you've ever seen on a machine. And also the most eyes you've ever seen on a machine.
with(light) blind
<Crimbot Name> turns on its floodlights, blinding the security robot so thoroughly that it explodes.
like(deuce) shake_up
<Crimbot Name> runs some kind of ridiculous nonsense protocol for a while. The security robot shoots it a few times and then wanders off.
Your Crimbot takes 1 damage.
Floor 2 Choice
The Corporate Ladder
The camera reveals that your Crimbot has made its way into a maintenance shaft. You could direct it upwards to the corporate offices, or down toward the far more dangerous factory floor.
doscript(bcc_automated_ascension)
<Crimbot Name> slowly ascends the ladder.
DESCENT.EXE
Loud factory noises get louder in the speaker as <Crimbot name> descends the ladder.
Floor 2 - Corporate Office Reward
This Gym Is Much Nicer
The camera slowly pans across the locker room of the factory's former Executive Gym.
search(priority_jock);
<Crimbot Name> grabs some goodies out of a jock elf's locker and drops them into a pneumatic recovery tube.
The camera displays the interior of a closet. There are some technical manuals within reach, and what looks like a backpack hanging from a hook near the ceiling.
schematic_grab();
<Crimbot Name> carefully grabs the schematic and holds it in front of the camera so you can print it out.
The camera reveals a narrow railing above a treacherous fall. Another impractical room, to be sure.
rails grind -h
The camera wobbles thrillingly as <Crimbot Name> grinds the rail. The speaker emits a shrill "ONE THOUSAND POINT COMBO!"
Your Crimbot takes 2 damage.
drop table self;
<Crimbot Name> teeters on the edge of the abyss, then plunges in.
Your Crimbot takes 3-4 damage.
A Vent Horizon
The camera shows that in order to proceed, your Crimbot is going to have to move past a vent spewing corrosive gas.
update vent set frozen=1
<Crimbot Name> manages to frost over the vent, but not before getting some corrosive gas into some of its more sensitive spots.
Your Crimbot takes 2 damage.
updat event set frozen=1
The speaker blares "INVALID QUERY SYNTAX" as <Crimbot Name> just sits there, slowly being eaten away by the corrosive gas.
Your Crimbot takes 3-4 damage.
A Pressing Concern
The camera reveals that your Crimbot has gotten itself into a little bit of a pickle. It's standing on the crushing surface of some kind of giant industrial press.
run(fast*6)
<Crimbot Name> manages to move fast enough to mostly escape a mangling. Mostly.
Your Crimbot takes 2 damage.
step(normal*6)
<Crimbot Name> gets savaged by the press. There must be a problem with its optics.
Your Crimbot takes 3-4 damage.
The Floor Is Like Lava
The camera reveals that your Crimbot has somehow landed in a foundry bucket filled with molten metal.
float
<Crimbot Name> floats just high enough over the molten metal that only the very bottom part of it gets melted.
Your Crimbot takes 2 damage.
int
<Crimbot Name> gives a thumbs-up as it sinks into the molten metal. Kowabunga, baby.
Your Crimbot takes 3-4 damage.
Floor 2 - Factory Floor Reward/Hazard
Pants in High Places
The camera reveals a pair of workman's (workelf's?) pants dangling from a catwalk, far above your Crimbot.
php ./pantsblast.php
<Crimbot Name> shoots down the pants (don't ever shoot down your pants, kids) and dislodges a Crimbot schematic. You print it out.
<Crimbot Name> tries to open the cage manually, but ends up getting fried by the juice. Speaking of which, you're hungry and thirsty. You should go get some fries and juice.
Your Crimbot takes 2-3 damage.
Birdbot is the Wordbot
The camera pans upward to show a bird-like robot flying near the ceiling of the factory floor, holding a shiny object.
GgsOSUB 1000 : REM bird hunting
<Crimbot Name> blasts the birdbot out of the sky. As it falls, it drops the thing it was carrying into a pneumatic recovery tube.
<Crimbot Name> ignores the birdbot. Offended, it dumps a load of corrosive goo on <Crimbot Name>'s head.
Your Crimbot takes 2 damage.
Humpster Dumpster
The camera feed shows a rusted-shut dumpster. Happy Crimbo!
xDumpster.lube()
<Crimbot Name> greases open the dumpster, then presses the interior button that flushes its contents into a pneumatic recovery tube. Why is that button on the inside of the dumpster?
Armed with no lube, <Crimbot Name> is unable to open the dumpster and instead hits itself in the head with a crowbar. Seems weird that those were the only two options.
Your Crimbot takes 3 damage.
Basement
Basement Crimbot Guards
Gunception
The camera displays a ceiling mounted gun turret made of smaller guns. Underneath it is a coffee machine, which is presumably less of an immediate threat.
blam.blam.blam('Take that!')
<Crimbot name> carefully fires a single bullet into each of the guns in the turret, neatly plugging them.
blam.blam('Booyah!')
<Crimbot name> shoots down the turret in a hail of gunfire. Unfortunately, the hail went both ways.
Your Crimbot takes 1 damage.
output.exclaim('Ooh -- coffee!');
<Crimbot name> focuses its attention on the coffee machine instead of the many bullets piercing its metal skin.
Your Crimbot takes 2-3 damage.
Unfinished Business
The camera reveals a robot in the process of assembling itself. An open panel on the front of it exposes a mass of wires and pistons and gears and whatnot.
protocol::flames->target(wires)
D-56 Amount Renting Unit burns all of the wiring inside the unfinished robot, rendering its unfinished state permanent.
protocol::lubricate->target(pistons)
<Crimbot name> squirts a bunch of extra lubricant onto the unfinished robot's bits, making it move awkwardly and deliver a somewhat less savage beating.
Your Crimbot takes 1 damage.
procol::harum->target(70s_playlist.txt)
Tinny 70s music plays through the speaker as the unfinished robot beats the tar out of <Crimbot Name>. Why is there tar in these things, anyway?
Your Crimbot takes 2-3 damage.
Et tu, Brutebot?
The camera reveals a hulking brute of a robot between your Crimbot and its objective. The kind of robot who won't take zero for an answer.
punch_object(3)
<Crimbot Name> manages to throw enough punches to knock the Brutebot out in the first round.
punch_object(2)
<Crimbot Name> wins the fight in the second round, but takes some damage in the first.
Your Crimbot takes 1 damage.
lunch(1)
<Crimbot name> takes a lunch break while the Brutebot breaks several of its parts.
Your Crimbot takes 2-3 damage.
I See What You Saw
The camera reveals a robot seemingly designed to take detailed photographs of things and then destroy those things with a massive mouth-mounted chainsaw. Maybe it's going for a crude form of teleportation, and it's going to vomit up a reconstituted model later in a different place.
ir_remote->see.overload()
<Crimbot Name> flashes its lights in a confusing pattern, frying the Sawbot's recognition circuits.
ir_remote->saw.overdrive()
<Crimbot Name> twiddles some of the Sawbot's knobs, causing the chainsaw-mouth to overheat, and unfortunatley also causing <Crimbot Name> to get severely burned.
Your Crimbot takes 2? damage.
RUN HANDSHAKE.QB
<Crimbot name> reaches out to shake the Sawbot's hand, but the Sawbot just bites <Crimbot name>'s hand off instead of shaking it.
Your Crimbot takes 2-3 damage.
Dorkbot 4000
The camera displays a dweeby-looking robot poring over what used to be a fire escape map and is now probably a map that would lead you directly into a makeshift furnace.
telljoke(paradox)
<Crimbot Name> tells an extremely confusing joke (which I can't repeat here because it was in binary) and the dweeby robot's electric brain melts with a puff of smoke.
playtrick(joybuzzer)
<Crimbot Name> tricks the dweeby robot into shaking its hand, then electrocutes them both. Hilarious!
Your Crimbot takes 1-2 damage.
showfriendship(hug)
<Crimbot name> hugs the dweeby robot, which explodes as a result of the unexpected kindness.
Your Crimbot takes 2-3 damage.
Basement Choice
Risk vs. Reward
The camera reveals a pair of doors, one labeled "Low-security mostly unlocked storage" and one labeled "Important stuff worth seriously protecting." Hmm. Crimbo elves were pretty literal in their door-labeling.
const char diff = 'hard';
<Crimbot Name> scoots through the scarier of the two doors.
const char diff = 'easy';
<Crimbot Name> scoots through the less scary of the two doors.
Basement Easy Rewards
Clear Cut Decision
The camera feed shows two boxes, one marked "Lost and Found" and the other marked "Unused Crimbot Schematics." What an unambiguous choice you've been presented with!
534348454d4154494321
<Crimbot Name> transmits an image of the top schematic in the stack. You print a copy.
The camera reveals the scene of a robot having gone haywire in a kitchen. A schematic sits inside an oven turned up to 6,000 degrees, and a Crimbo elf's fanny-pack has been shoved into a microwave.
proc.initiate('hotpocket.script')
<Crimbot Name> presses the button on the microwave, pulls out the (stunningly undamaged) elf keepsake, and drops it into a pneumatic recovery tube.
The camera reveals that the factory's fire-suppression system has been activated, and your Crimbot is being hosed down with liquid nitrogen!
set velocity = MAXSPEED;
<Crimbot Name> manages to mostly escape the frigid liquid, and only suffers a minor case of electronic brain freeze.
Your Crimbot takes 2 damage.
set temperature = MAXTEMP;
Z-61 Group Entertaining Unit turns its heaters up full blast, but the biting cold still bites.
Your Crimbot takes 3 damage.
set favoritecharacter = MAXHEADROOM;
<Crimbot Name> turns its electronic brain to the purpose of 1980s nostalgia as the freezing liquid turns it into something resembling Jack Nicholson at the end of The Shining.
Your Crimbot takes 4-5 damage.
Fire! Fire! Fire!
The camera reveals that your Crimbot has wandered into an incinerator. Or maybe gotten violently thrown into one. A lot of frames are getting dropped, so it's hard to tell.
pathfind->prioritize(!fire)
<Crimbot Name> darts out of the incinerator after getting only partially reduced to molten slag.
Your Crimbot takes 2 damage.
internal_thermostat->crank(widdershins)
<Crimbot Name> cranks its internal temperature down as far as it will go, but it's not far enough.
Your Crimbot takes 3-4 damage.
engage(sauna_enjoyment_protocol
<Crimbot Name> relaxes and allows most of its body to be consumed in flame. A metallic "Ahhhhhhh." comes from the speaker.
Your Crimbot takes 4-5 damage.
What a Grind
The camera's field of view slowly descends as you realize that your Crimbot is being fed into a massive industrial shredder. Quick!
apply_motion_deltaY(-10)
<Crimbot Name> rises out of the shredder, minimizing the shreddage as if it were the opposite of a heavy metal guitarist.
Your Crimbot takes 1-3 damage.
spray_lubricant(rand())
<Crimbot Name> spews lubricant in every direction, which makes the damage done by the shredder slightly more tolerable.
Your Crimbot takes 3-4 damage.
panic(crazymode)
<Crimbot Name> panics and dives even deeper into the teeth of the shredder.
Your Crimbot takes 4-5 damage.
Basement Hard Guards
Ultrasecurity Megabot
The camera reveals a menacing security robot attempting to shackle your Crimbot and presumably toss it into the robo-brig.
exploit(rng_crypto_flaw);
<Crimbot Name> hacks the security robot's self-destruct protocols, resulting in an only somewhat-painful explosion. For <Crimbot Name>. It was presumably far more painful for the security bot.
Your Crimbot takes 1-2 damage.
perl bruteforce.pl
<Crimbot Name> dispatches the security robot the old-fashioned way -- a mutually destructive fistfight. This is why you don't see many old-fashioned robots around these days.
Your Crimbot takes 3-4? damage.
action=submit
<Crimbot Name> submits to the savage beating the security robot is programmed to deliver.
Your Crimbot takes 5-6 damage.
Flameybot
The camera reveals a robot whose left arm is a flamethrower, whose right arm is a flamethrower, and whose face is another flamethrower. They are as serious about security as they aren't about fire safety.
exploit(rng_crypto_flaw);
<Crimbot Name> fights fire with ice, which, while somewhat effective, still results in it getting burned.
Your Crimbot takes 2? damage.
foreach($nozzle as $n) weld($n);
<Crimbot Name> manages to arc-weld most of the flamethrowers shut, but takes a lot of damage in the process.
Your Crimbot takes 3-4 damage.
setbehavior(rand())
<Crimbot Name> flails around in circles while the Flameybot douses it in fire.
Your Crimbot takes 5-6 damage.
The Big Guns
The camera reveals a huge bazooka-turret slowly sweeping back and forth across the room your Crimbot must now traverse.
turnon light.*
<Crimbot Name> turns on all of its lights at once, making it harder for the bazooka to hit it. Not impossible, mind you, just harder.
Your Crimbot takes 1 damage.
flip turret.switch
<Crimbot Name> manages to turn down the bazooka turret's rate of fire by 40%, still getting shot several times in the process.
Your Crimbot takes 3 damage.
10 PRINT "HELLO TURRET!"
<Crimbot Name> waves at the turret while being repeatedly shot in the face.
Your Crimbot takes 5 damage.
Basement Reward
Phony
The camera reveals that your Crimbot has discovered an elf smartphone, which is currently in the process of decrypting a complicated Crimbot schematic.
phone.photograph()
<Crimbot Name> takes a screenshot of the phone's display and texts it to you. You then throw your phone in a scanner and print out a copy of the screenshot.