!============================================================================ ! The room decorations Decor mountain "mountain" with name 'mountain' 'rock' 'rocks' 'ice' 'snow' 'slabs' 'boulders' 'wall' 'cliff' 'ridge' 'overhang' 'crag' 'crags', found_in base icefall camp_low snow_hill boulders middle_wall camp_mid exposed_ridge ice_chimney traverse camp_high high_wall final_approach summit, description "The Highest Mountain resembles a mountain, but bigger. Every type of high-altitude hazard is found on the long climb from its base to the summit."; Decor instructions "instructions" master_chamber with name 'card' 'instruction' 'instructions', description "PLAY to start game, then LAUNCH. Control with targeted commands, such as SHOOT LEFT RAMP, SHOOT RIGHT RAMP, SHOOT BUMPERS. TARGETS prints a list of what you can currently shoot. You can EXAMINE a target to see your percent chance of hitting it or losing your ball. You can NUDGE to increase your luck, and CATCH to attempt to trap the ball on the flipper to greatly the accuracy of your next shot. You can also try FLIP to play a full ball automatically. SKILL will list current skill levels."; Target lramp "left ramp" master_chamber with name 'left' 'ramp', hit [; self.hitcount++; em.points = em.points + self.value; print "Left ramp hit ", self.hitcount, " +", self.value, " points. "; switch(self.hitcount){ 1: "~People say its impossible to reach infinity, but what if you're already there?~"; 2: "~Paradoxes happen when self-reference becomes pathological, infinities happen when it is consturctive.~"; 3: "~So yeah, I admit it - I'm the one who shaved the barber.~"; default: "~Whoosh!~"; }; ], triggers [; if((choicelock.lockready == 0) && (rramp.hitcount > 0)){ choicelock.lockready = 1; "^~Good job, the Infinity ramp has activated Axiom of Choice lock. That's a hard shot though.~"; } ]; Target rramp "right ramp" master_chamber with name 'right' 'ramp', hit [; self.hitcount++; em.points = em.points + self.value; print "Right ramp hit ", self.hitcount, " +", self.value, " points. "; switch(self.hitcount){ 1: "~The beginning of the journey is just as satisfying as the end.~"; 2: "~Like the art? I learned to juggle back in my days on the road.~"; 3: "~Someday we will share a nice cup of infini-tea.~"; default: "~ZOOM!~"; }; ], triggers [; if((choicelock.lockready == 0) && (lramp.hitcount > 0)){ choicelock.lockready = 1; "^~Nicely played, the Infinity ramp has activated Axiom of Choice lock. That one's tricky so be careful.~"; } ]; Target magnet "forcing magnet" master_chamber with name 'forcing' 'magnet', value 50, risk 65, difficulty 125, level 0, newgame [; self.level = 0; ], triggers [; switch(self.level) { 0: if(entropyegg.broken == 1 && bumpers.hitcount >= bumpers.goal) { em.points = em.points + 500; self.level++; "~Wow! You got Induction on N and broke the entropy egg, that's a five hundred point bonus for you.~"; } "~Before I can reward you, complete the successor bumpers and break open the entropy egg before shooting the magnet again for your first bonus.~"; 1: if(choicelock.multicount > 0 && fountain.hitcount >= 5) { em.points = em.points + 500; self.level++; "~Great work, you got Axiom of Choice multiball and visited a fiction through the fountain, that's another 500 extra points!~"; } "~Lock two balls in the Axiom of Choice (shoot both sides of the ramp to activate it), get five hits on the fountain and shoot the magnet again for your next reward.~"; 2: if(staircase.hitcount >= 3 && fork.hitcount >= 3) { em.points = em.points + 500; self.level++; "~You are really working the table now! You've climbed the staircase and taken the fork.~"; } "~Keep the flow going, get 3 hits each on the staircase and fork to setup the next magnet bonus.~"; 3: if(lramp.hitcount >= 3 && rramp.hitcount >= 3) { em.points = em.points + 500; self.level++; "~Amazing! You've completed every table goal...are you ready for the endgame? I'm quivering with anticipation to see how you do.~"; } "~You're almost there. 3 hits each on the left and right ramp is your final table goal.~"; default: return true; } ]; Target bumpers "bumpers" master_chamber with name 'bumper' 'bumpers' 'successor', value 2, risk 40, difficulty 75, bounces 0, goal 30, newgame [; self.value = 2; self.goal = 30; ], hit [; self.bounces = random(15); self.hitcount = self.hitcount + self.bounces; em.points = em.points + (self.bounces * self.value); print "The ball gets ", self.bounces, " hits in the successor bumpers for ", self.bounces * self.value, " points.^"; if(self.hitcount < self.goal) print self.goal - self.hitcount, " more hits to reach Induction on N.^"; switch(self.bounces){ 1: "^~Counting from 0 to 1. Maybe the first step is the biggest of all.~"; 2: "^~OK, I admit it: I think 'successor' is a very suggestive sounding term.~"; 3: "^~Rhythm is created by the count, each +1 is a new beat.~"; 4: "^~Four bounces is about where it starts to tickle a bit.~"; 5: "^~Learn to enjoy that which is repetitive and typical.~"; 6: "^~If you can't climb a mountain to play an Enlightened pinball machine, just watch the surface of a lake a little before sunset.~"; 7: "^~That's my favorite number of bumper hits. Something about 7 just does it for me.~"; 8: "^~With 8, I see the vertexes of a cube. It's ok if its just a stop sign for you.~"; 9: "^~My friend Glenda says the space of names is richer than numbers, but I think it's equivalent.~"; 10: "^~I felt all ten of those.~"; 11: "^~I don't need to sleep, but I still count eleven flying sheep.~"; 12: "^~If you succeed in life at all things like you shoot successor bumpers you are lucky indeed.~"; 13: "^~That's good luck for all of us here in this cave.~"; 14: "^~Looks like you're going to have everything finished off lickety-split.~"; 15: "^~That's an optimum result when it comes to bumpin' the successors.~"; }; ], triggers [; if(self.value == 2 && self.hitcount > 15){ self.value = 4; "^~Since you like those bumpers so much, I'm doubling their value for you.~"; } if(self.value == 4 && self.hitcount >= self.goal){ self.value = 9; give staircase shootable; "^Successor function reaches Induction on N. New target available: Diagonalization Staircase."; } ]; Target entropyegg "entropy egg" master_chamber with name 'entropy' 'egg', broken 0, newgame [; give self shootable; ], triggers [; switch(self.hitcount) { 1: "The egg vibrates but does not crack. ~Entropy does mean random, but that's not the same as meaninglessness.~"; 2: "A tiny crack appears at the point of impact. ~In fact entropy means new information entering the system.~"; 3: "The crack in the shell grows. ~If information is truly new, that means it is unpredictable, hence it increases entropy.~"; 4: "The crack widens and the egg quivers. ~So meaningfulness depends on entropy, stories are about how new information causes change over time.~"; 5: em.points = em.points + 100; self.broken = 1; give self ~shootable; give fork shootable; "The egg breaks open, and a very agitated chicken pops out. It scampers frantically around the playing field, plants the Free Will Fork where the egg had been, and then it squuezes itself through the launch tube and vanishes inside the machine. ~That's Flustercluck. She'll probably be back.~"; } ]; Target fork "free will fork" master_chamber with name 'free' 'will' 'fork', newgame [; give self ~shootable; ], triggers [; switch(self.hitcount) { 1: "~From your perspective, the way the ball bounces is just random.~"; 2: "~From the ball's perspective, the way you time the flippers is random, and it is choosing how to bounce.~"; 3: "~From the inside, it doesn't feel random, because you are the origin of the new information.~"; } ], has ~shootable; Target choicelock "choice lock" master_chamber with name 'axiom' 'choice' 'lock' 'aoc', value 75, risk 75, difficulty 150, lockready 0, hasball 0, multicount 0, newgame [; self.lockready = 0; self.hasball = 0; give self shootable; ], triggers [; if(self.lockready == 0) "You need to activate both sides of the Infinity ramp to prime the Axiom lock."; if(self.hasball == 1) { self.hasball = 0; self.multicount++; em.points = em.points + 500; give self ~shootable; "MULTIBALL! 500 point bonus. The Choice lock rotates under the table and vanishes. ~Excellent! Do you see these Golden Apples I'm juggling? Want to bet if I can take one apart and make two whole apples from it?"; } self.hasball++; "The ball hits the Axiom of Choice lock dead-on and the mechanism grabs it with a satisfying thunk. ~We need the Axiom of Choice to prove a lot of things that we want to be true. It lets you talk about things by describing them, even if you don't know how to build them.~^"; ]; Target staircase "diagonalization staircase" master_chamber with name 'staircase' 'stairs' 'diagonal' 'diagonalization', triggers [; switch(self.hitcount) { 1: "~Climbing the Diagonal Staircase is one of the first steps past the smallest infinity.~"; 2: "~In any one-to-one mapping between the counting numbers and the reals, you can construct an unlisted real by making each digit N differ from the Nth digit of the Nth real.~"; 3: "~Diagonalization is a special case of Cantor's proof showing that it is always impossible to construct a one-to-one mapping between the individual elements of a set and all possible multiple element subsets.~"; } ], has ~shootable; Target fountain "fiction fountain" master_chamber with name 'fiction' 'fountain', value 35, risk 60, difficulty 110, triggers [; switch(self.hitcount) { 1: "~Shoot into the fountain for one of my reality-warping minigames.~"; 2: print "~Whee, get ready!~ The dot-matrix display begins to show an animation of you playing a pinball game. The scene zooms in on the dot-matrix display, and an infinite tunnel results. You feel yourself falling into it, and you accelerate toward a familiar shape: '>'^"; em.didthing = 0; startdaemon(orchard); playerto(orchard); 3: print "~Real vs. Imaginary is one of the most abused and misleading dichotomies, don'cha know.~ Once again you find yourself drawn into the video display toward the '>'^"; em.didthing = 0; startdaemon(highway); playerto(highway); 4: "~Usually its a sneaky way of justifying a value judgment, with the hidden premise that imaginary things aren't important.~"; 5: "~I mean, maybe I'm imaginary in some senses, but the words I'm speaking are real, right? An imaginary machine that speaks real sentences, cool trick!~"; } ]; Target carousel "communication carousel" master_chamber with name 'communication' 'comm' 'carousel', value 20, risk 45, difficulty 90, triggers [; switch(self.hitcount) { 1: "~How you communicate and interact with others is where enlightenment is most valuable, and meets its hardest tests.~"; 2: "~I admit I'm maybe not in a position to talk much about normal human interaction, but still.~"; 3: "~It's pretty easy to feel calm oneness with the transfinite moment meditating in the forest, what about when you're sleepless, rushing to stay on time, and someone is rude to you?~"; 4: "~Can you feel the natural and authentic emotion without being controlled by it, without reacting from a place of anger and keeping the wheel of karma spinning?~"; 5: "~Preserving your freedom of action, protecting it even from your own emotions. Who is enlightened? One who can choose to wait to speak or act until calm within.~"; } ]; Target electro "electro accelerator" master_chamber with name 'electro' 'accelerator' 'accel', value 50, difficulty 120, risk 65, triggers [; switch(self.hitcount) { 1: "~I actually think all the non-attachment and calmness stuff gets overplayed.~"; 2: "~I guess it's because to get started, you have to get the incorrect harmful overreactions under control first.~"; 3: "~But intensity and passion aren't bad, they aren't to be avoided. Sometimes they are exactly what is appropriate.~"; 4: "~Letting go of attachment doesn't mean not feeling love, not caring about things. Rather, it means that we can love better if we are not controlled by the fear that makes us try to control others.~"; 5: "~Similarly with creative work. The songbird sings because that is its nature, not to create a better song than any bird has ever sung before.~"; } ]; Target spring "time spring" master_chamber with name 'time' 'spring', value 60, difficulty 130, risk 70, triggers [; switch(self.hitcount) { 1: "~Time will do a lot of the work for you. You are a stone in a flowing river, give it time and your surface is smoothed out.~"; 2: "~The Big Spring is gradually releasing its energy, and we have to line up our smaller springs to be wound by the energy of the larger springs unwinding.~"; 3: "~We are just a little bit of chaotic turbulence generated as a side-effect of the sun trying to reach thermal equilibrium with the rest of space.~"; 4: "~We are rolling down a hill, a snowball of complexity bouncing along the curve of the entropy differential between past and future.~"; 5: "~Space itself is generated by the asymmetry between past and future.~"; } ]; Target cardinal "large cardinal" master_chamber with name 'large' 'cardinal', value 65, difficulty 140, risk 70, triggers [; switch(self.hitcount) { 1: "~Inaccessible cardinals are near the base of the large cardinal hierarchy. They stand in relation to the ordinary infinities as the first infinity stands in relation to finite numbers.~"; 2: "~Measurable cardinals are the critical point of an embedding of full universe of sets to a transitive class. If a measurable cardinal exists, the universe of sets is larger than the constructible universe.~"; 3: "~Extendible cardinals can be the critical point of embeddings of an initial segment of the universe of the sets. No matter how large an initial segment we choose, the embedding generated will have the extendible critical point above the chosen ordinal of the initial segment.~"; 4: "~Rank-into-rank cardinals are near the top of the hierarchy, relying on the strongest axioms we have not found to be inconsistent. A rank-into-rank is the critical point of an embedding of a transfinite initial segment of the universe of sets into itself.~"; 5: "~The Kunen Inconsistency is the boundary of paradox. There can be no embedding of the full universe of sets to itself. At some point, our axioms become too strong, and lead to inconsistency.~"; } ]; Target popups "principle popups" master_chamber with name 'principle' 'popups' 'pop', value 5, risk 55, difficulty 85, bounces 0, goal 30, newgame [; self.goal = 30; ], hit [; self.bounces = random(10); self.hitcount = self.hitcount + self.bounces; em.points = em.points + (self.bounces * self.value); print "The ball gets ", self.bounces, " hits on the principle popups for ", self.bounces * self.value, " points.^"; ! if(self.hitcount < self.goal) ! print self.goal - self.hitcount, " more hits to reach Induction on N.^"; switch(self.bounces){ 1: "^~Keeping your awareness centered in the moment.~"; 2: "^~It is natural to experience and act upon desires, but avoid attachment to them.~"; 3: "^~Compassion for all experiencing beings.~"; 4: "^~There are physical, mathematical, and imaginative multiverses.~"; 5: "^~Information replicates ubiquitously.~"; 6: "^~The transfinite is manifest in the nature of our conscious experience.~"; 7: "^~Enlightenment is the freedom to diagonalize out of your own symbol-system.~"; 8: "^~Free will is the transfinite aspect of the self.~"; 9: "^~New information entering the universe inherently appears as randomness to external observers.~"; 10: "^~Naming allows a set of symbol binds to select a universe.~"; }; ], triggers [; ]; !============================================================================ ! The immobile prop objects Prop em "Enlightened Master" master_chamber with article "the", name 'enlightened' 'master' 'pinball' 'machine' 'game' 'table' 'pin', points 0, hiscore 0, ingame 0, balllaunched 0, balls 0, gamenumber 0, gameturns 0, didthing 0, description [; print_ret "The Enlightened Master is a pinball machine with a purple cabinet and gold metal. The standard flipper buttons are bright pink. A card in the corner of the machine is labelled 'INSTRUCTIONS' and is filled with small print. The backglass is a detailed artist's impression of the mountain peak at sunset, casting an impossibly long shadow across the clouds toward the horizon. The playfield has an open central section with an illustration of a woman juggling golden apples at the center. Two ramps rise from the playfield and cross paths in a figure 8. A set of bumpers labeled '+1' are in the upper right. In the upper left, a curved metallic shape hovers over the words 'Forcing Magnet'. Along the far left edge is a narrow gap next to the words 'AoC Lock'. Other toys and mechanisms are hidden while inactive. Above the playfield is a silvery dot-matrix display showing the current high score: ", self.hiscore; ], before [; play: if(self.ingame == 1) "You are already in the middle of a game!"; self.ingame = 1; self.balls = 3; self.points = 0; skill.nudgecount = 0; objectloop(x has gametarget) x.hitcount = 0; objectloop(x has gametarget) x.newgame(); self.gamenumber++; startdaemon(self); switch(self.gamenumber) { 1: "You hit the start button and a melodious female voice greets you. ~Thank you for coming to see me, and welcome, learner! LAUNCH, then just SHOOT whatever target you like. TARGETS shows what you can shoot currently. Examine a target to see percentages. NUDGE and CATCH can increase your accuracy. SHOOT BUMPERS is a good place to start practicing, each action increases your SKILL.~"; 2: "~I'm glad you're trying again. Don't get discouraged, your skill is increasing with every shot. What's hard now will be easy later. Of course, I'll have some new challenges for you then!~"; 3: "~We're starting to get to know each other well now, aren't we? I'd introduce myself, but I really have too many different names to try to share them all.~"; default: "~Sure, I'm ready to go again!~"; }; ], daemon [; if (em.didthing == 0) return; em.didthing = 0; self.gameturns++; emchat(); ]; object gear "set of climbing gear" with name 'set' 'climbing' 'gear' 'tools' 'rope' 'ropes' 'protection' 'bolts' 'cams' 'equipment' 'harness' 'screws', description "A standard assortment of climbing equipment: harness, ropes, bolts, screws."; Decor apple "golden apple" orchard with name 'golden' 'apple' 'apples' 'tree' 'trees', description "Each apple has a 'K' symbol embossed into the gold.", before [; take: stopdaemon(orchard); print "~Yes, please take a souvenir of your visit. And I guess it's time to get back to your pinball game in progress!~^"; playerto(master_chamber); move apple to player; return true; drop: "You want to hold onto it."; ]; object skill "player skills" with catch 10, shoot 20, nudge 4, launch 25, luck 0, nudgeflag 0, nudgecount 0;