!Scott Tluczek !CIS 487 !Inform Game Project Constant Story "MAGIC STAR"; Constant Headline "^An Interactive Fiction^by Scott Tluczek^"; Constant DEBUG; Constant MAX_SCORE = 39; Include "parser"; Include "verblib"; Include "grammar"; global havesteak = false; global doghungry = true; global knowfire = false; global casebroken = false; global suitcut = false; global manhaswhistle = false; global manhastorch = false; global redon = false; global blueon = false; global choice = false; global finalsecond = false; global finalthird = false; !Star location and intro story [ Initialise; location = Outside_Tower; print "^^^You are nothing more than a poor farmer. When you were younger, your parents died from a plague. Now, the only thing that is important in your life is your younger sister. One night, a mage that lives near-by came and kidnapped her. You dashed out into the night, determined to rescue her before the mage does something awful to her...^^"; ]; !First room, starting room Object Outside_Tower "Outside Tower" with name 'lightning' 'storm', description "A heavy rain beats down while lighting flashes across the sky. To the north, there is the mage's tower, with its large front door standing open, beckoning you inside.", n_to Main_Hall, in_to Main_Hall, has light; !Player can look at tower and 'go tower' Object -> mage_tower "mage tower" with name "tower" 'mage' 'mage^s' 'front' 'door' 'front door', description "It is a tall, forbidding-looking tower.", door_to Main_Hall, door_dir n_to, !Because it is concealed, it does not act like a normal door has static door concealed; !'Crossroad room, nothing in this room but is used to reach other rooms Object Main_Hall "Main Hall" with name 'hall' 'entry hall', description [; if(Main_Hall hasnt visited) print "As you enter the tower, the door swings shut behind you and you hear it lock. You are now trapped inside the mage's tower. Not like you would want to leave until you found your sister, anyway.^^"; print "You are standing in a large hall covered in large pieces of art and armor. There is an exit to the west and the the east. A large staircase leads up to the north.^"; ], w_to Kitchen, e_to Laboratory, n_to Landing, u_to Landing, has light; !some scenery Object -> art "art" with name 'art' 'armor' 'pieces of art' 'large pieces of art', description "It's just background. You really need to focus here.", before[; take: "they're way too heavy for you to lift."; ], has static scenery; !A small room with a steak inside Object Kitchen "Kitchen" with name 'kitchen', description "You enter a small kitchen with a refrigerator and cuboards. The only exit is back to the east.", e_to Main_Hall, has light; !An empty container for the player to search Object -> cuboards "cuboards" with name 'cuboards' 'cuboard' 'cabinet' 'cabinets', description "They look like well-built cuboards.", has static pluralname concealed openable container; !A container where the steak is Object -> refrigerator "refrigerator" with name 'refrigerator' 'frige', description "It's a refrigerator. There's no ice-maker on it, and that's about it.", before[; open: if(steak notin player && havesteak == false){ move steak to refrigerator; havesteak = true; } ], has static concealed openable container; !A puzzle object, to be given to the dog Object steak "steak" with name 'steak' 'meat' 't-bone', description "What a tasty looking slab of meat!", before[; Eat: "It's too bloody and raw for your taste. Besides, you're not hungry right now."; ], has edible; !A room that has an un-openable box that needs to be opened Object Laboratory "laboratory" with name 'lab', description[; print "As you walk into this room, you see many beakers and equipment all over this room. Since you never had any college level science classes, you decide to leave them alone. "; !description of the room changes depending if the box is broken if(casebroken == false) print "You do spot a large glass case in one corner. "; else print "Instead of the large glass case, there is a cloud of purple gas. "; print "The only exit is the the west.^"; if(Laboratory hasnt visited){ move purple_gas to glass_case; move key to glass_case; } ], w_to Main_Hall, has light; !some more scenery Object -> test_tubes "test tubes" with name 'test' 'tubes' 'test tubes' 'beakers' 'beaker' 'equipment', description "They are made out of plastic and must be very hard to break.", before[; take: "What did I just say about leaving them alone?!"; burn: if(knowfire == false) "How do you plan on doing that?"; else "The strange liquids boil for a few seconds, then cool.^ I now pronounce you 'Junior Scientist'."; ], has static scenery; !A puzzle: how can the player open the box Object -> glass_case "glass case" with name 'glass' 'case' 'box' 'glass case', description "It is a large glass case that is bolted to the floor.^ Inside you see purple gas.^ You also see a key inside.", before[; open: print "You can not find any way to open the glass case.^"; ], has concealed transparent container; !A puzzle object to open large door, found in glass box Object key "key" with name 'key', description "It looks like nothing more than a normal key. Mabye it opens a treasure chest filled with treasure! No, wait, it more probably opens a door.", before[; !Player can not get key if not wearing the gas mask take: if(casebroken == true && gas_mask hasnt worn) "You really don't want to try entering that purple gas, seeing how you can't hold your breath for very long."; ], has scored; !An object that gives clues on what is needed to get the key Object purple_gas "purple gas" with name 'gas' 'purple gas' 'purple', description "What deadly looking gas!", before[; take: if(casebroken == true) "You must know something I don't, because that sounds impossible."; burn: "Yes, let's catch an unkown and possibly explosive gas on fire while in the same room. There are better ways to get a Darwin Award."; ], !This time is used at the end of the game, I did not what to make two gas objects !So I combined them into one time_left, time_out[; !check to see if the Player is wearing the gas mask after time ends if(gas_mask hasnt worn){ deadflag = 1; "^You drop to the ground, gasping for breath. ~Here is where your pitiful adventure ends!~ shouts the mage.^ GAME OVER"; } if(gas_mask has worn){ remove purple_gas; finalthird = true; StartTimer(mage, 3); !Starts the final attack of the mage, Player has 3 turns "The purple gas dissipates, leaving you unharmed.^ ~You think you're so clever, don't you?~ the mage sneers at you, ~Well, try this!~^ A look of great concentration spreads across his face as he raises his arms above his head. A great ball of darkness slowly forms in his hands, you can feel the power coming from this new spell. How will you stop this attack?"; } ], has pluralname static; !A puzzle object that is used to cut the suit and kill the mage Object glass_shards "glass shards" with name 'glass' 'shards' 'glass shards', description "These used to be a glass box. Now, they are very sharp pieces of glass.", before[; take: !Player must be wearing gloves to pick up glass (safety first) if(gloves hasnt worn) "You might cut yourself."; ], has pluralname; !Another crossroad room Object Landing "Landing" with name 'top of the stairs', description "After a few minutes, you reach the top of the stairs. There is nothing up here except a large door to the north, exits to the west and to the east, and the stairs down to the south.", w_to Library, s_to Main_Hall, d_to Main_Hall, e_to Dog_Kennel, n_to large_door, has light; !The door object that must be unlocked Object large_door "large door" with name 'door' 'large' 'large door', description "It is a very large door, so large in fact, that it almost seems to be compensating for something.", when_closed "The door is closed.", when_open "The door stands open, waiting for you to enter it.", !The door is a two-way door found_in Landing Lobby, before[; unlock: if(key in Player){ give large_door ~locked; remove key; "The door is now unlocked."; } ], door_to[; if(self in Landing) return Lobby; return Landing; ], door_dir[; if(self in Landing) return n_to; return s_to; ], has static door openable lockable locked; !A room that has a container book in it Object Library "Library" with name 'place with books', description[; print "As you enter this room, you are overwelmed by the sheer number of books in this room. In the middle of the room, "; if(green_book notin Player) print "there is a table with a green book on it. "; else print "there is a table. "; print "There are two exits to this room: one behind you to the east, and one to the west leading down.^"; if(Library hasnt visited && green_book notin Player){ move green_book to wood_table; move scroll to green_book; } ], e_to Landing, w_to Spiral_Staircase, d_to Spiral_Staircase, has light; !What the book is on, scenery Object -> wood_table "table" with name 'table' 'wood table' 'wood', description "It is a table made out of fine oak. Anyone with a drink should use a coaster.", before[; burn: if(knowfire == false) "You have no way to start a fire."; else "What did that table ever do to you?"; ], has static concealed supporter; !A container that the scroll is in Object green_book "book" with name 'book' 'green book' 'green', description "A musty smell enters your nostrils, and the leather cover is peeling at the edges. It must be hundreds of years old.", before[; burn: if(knowfire == false) "You do not have any matches."; else{ !moves any items out of green book if(steak in green_book){ move steak to Player; print "you were able to save the steak.^"; } if(gold_whistle in green_book){ move gold_whistle to Player; print "you were able to save the gold whistle.^"; } if(torch in green_book){ move torch to Player; print "you were able to save the torch.^"; } if(gas_mask in green_book){ move gas_mask to Player; print "you were able to save the gas mask.^"; } if(key in green_book){ move key to Player; print "you were able to save the key.^"; } if(glass_shards in green_book){ move glass_shards to Player; print "you were able to save the glass shards.^"; } if(gloves in green_book){ move gloves to Player; print "you were able to save the gloves.^"; } if(tuxedo in green_book){ move tuxedo to Player; print "you were able to save the tuxedo.^"; } if(red_crystal in green_book){ move red_crystal to Player; print "you were able to save the red crystal.^"; } if(blue_crystal in green_book){ move blue_crystal to Player; print "you were able to save the blue crystal.^"; } remove green_book; "The green book burns very nicely. All of the knowledge inside that book is now lost. Take that ancient society!"; } ], has openable container; !A puzzle item, allows Player to burn things Object scroll "scroll" with name 'scroll' 'fire', description[; if(scroll in Player){ !Remove the scroll to free up inventory remove scroll; knowfire = true; "As you read the scroll, you feel a large amount of power flowing into your body. The strange writing on the scroll moves about and forms actual words. You now have the magic spell FIRE. Now you can burn things, and the scroll turns to ash in your hands."; } else "You might want to pick it up first."; ], has scored; !Room that has a dog and a gold whistle in it Object Dog_Kennel "Dog Kennel" with name 'Kennel', description[; !Change description after puzzle is solved print "This room is filled with many empty cages of all sizes. At the far end of the room, there is a big dog that is chained to the wall."; if(doghungry == true) print " When you enter, it the dog stands up and growls angrily at you."; if(doghungry == false) print "The dog is sleeping peacefully."; print " There is one exit to the west.^"; ], w_to Landing, has light; !A big dog that Player must give steak to Object -> dog "dog" with name 'dog' 'big' 'big dog' 'angry big dog' 'angry dog' 'angry big' 'angry', description[; !Change description after puzzle if(doghungry == true) !Give Player a clue print "It is a very big and mean-looking dog. It growles at you when you get too close. It looks like it hasn't been fed in a long time.^"; if(doghungry == false) print "The large dog is sleeping there peacefully. Such a nice dog.^"; ], life[; give: if(noun == steak){ remove steak; doghungry = false; "The dog eats the steak in a matter of seconds. It then licks your hand and falls asleep."; } !Give Player a clue "The dog is not interested in that. It does look really hungry, though..."; attack: "I've called the humane society."; ], has concealed animate; !A puzzle item, used to open glass case and given to old man in Right_Booth Object -> gold_whistle "gold whistle" with name 'whistle' 'gold whistle' 'gold', description "It is a small golden whistle. It looks like it's very valuable.", before[; take: if(doghungry == true){ "As you try to get close, the big dog growls at you."; } blow: !Give Player a clue if(gold_whistle in Player && Player notin Laboratory) "You blow on the gold whistle as hard as you can, but you hear nothing. It must be too high pitched."; !Test many things too avoid box breaking while Player is in another room if(gold_whistle in Player && Player in Laboratory && casebroken == false){ !remove box and move all item inside box to Laboratory casebroken = true; remove glass_case; move purple_gas to Laboratory; move key to Laboratory; move glass_shards to Laboratory; "The glass case quivers for a second, then breaks into hundreds of pieces. The key drops to the floor and the purple gas slowly spreads across that side of the room."; } ], has scored; !A simple room that has a torch in it Object Spiral_Staircase "Spiral Staircase" with name 'Spiral' 'Staircase', description "This is a twisty staircase. There are two exits: one up and one down.", u_to Library, d_to Dungeon, has light; !Puzzle item, makes light and is given to fat man Object -> torch "torch" with name 'torch' 'light', description[; if(torch hasnt light) "It is an old torch. It is no longer lit."; if(torch has light) "It is an old torch. It is now lit and giving off light. Don't you wish you had some marshmallows?"; ], before[; burn: !Player must know burn before they can light torch if(knowfire == true){ give torch light; StartTimer(torch, 3); "The torch catchs on fire."; } else !Give Player a clue "You don't have any way to catch it on fire."; ], !torch burns out after 3 turns time_left, time_out[; give torch ~light; if(torch in Player) "The torch burns itself out."; ]; !Simple room that has no light and puzzle item gas mask and easter egg scott Object Dungeon "Dungeon" with name 'pain room', description "You are filled with dread as you look around this room. It is filled with countless tools used for torture. You must find your sister before she is subjected to one of these devices. There is one exit to the west leading up.", w_to Spiral_Staircase, u_to Spiral_Staircase; !an easter egg, does nothing Object -> Scott "Scott" with name 'Scott' 'scott' 'programmer' 'designer', description "Yes, I'm an easter egg. No, I don't do anything else.", before[; take: "What? I'm not going anywhere. You're going have to solve the puzzles by yourself."; burn: "What did I ever do to you?"; ], life[; attack: "ow!"; ], has concealed animate; !puzzle item, needs to be worn to get key Object -> gas_mask "gas mask" with name 'gas mask' 'mask' 'gas', description "It appears to be a working gas mask that covers your whole face. It might not be pretty, but the alternative is much worse.", has clothing scored; !room that connects to dance hall, puzzle to get past bouncer Object Lobby "Lobby" with name 'greeting room', description "You are greeted by soft elevator music in this room. This room has chairs and a sofa covered in soft velvet and spread around the room. To the north, you can see a curtained exit guarded by a bouncer. There is also exits to the south and to the east.", s_to Landing, e_to Coat_Room, n_to[; !test if Player can go north, must be wearing suit and not gas mask !This is red herring that might convince Player that gas mask is not needed anymore !It is need later on if(tuxedo has worn && gas_mask hasnt worn) Playerto(Dance_Hall); else "The bouncer stops you. ~You can't enter looking like that!~"; ], has scored light; !Make bouncer into an object so Players can look at him Object -> bouncer "bouncer" with name 'bouncer' 'guard' 'guy' 'big' 'big guy', description "He is a very strong-looking man wearing a nice suit. You better not mess with him.", life[; attack: "Um, no."; ], has animate; !scenery Object -> chairs "chairs" with name 'chairs' 'chair', description "They look very comfortable, but you don't feel like sitting right now.", before[; enter: "You don't feel like sitting down right now."; ], has scenery; !scenery Object -> sofa "sofa" with name 'sofa', description "They look very comfortable, but you don't feel like sitting right now.", before[; enter: "You don't feel like sitting down right now."; ], has scenery; !A small room that has a suit and some gloves Object Coat_Room "Coat Room" with name 'closet', description "This room is very cramped. You are beginning to feel slightly claustrophobic. There is one exit to the west.", w_to Lobby, has light; !puzzle item, used to cut suit Object -> gloves "gloves" with name 'glove' 'gloves', description "These are some very nice, thick, leather gloves.", has pluralname clothing; !suit is need to pass bouncer Object -> tuxedo "tuxedo" with name 'suit' 'tuxedo' 'tux', description "It looks very snazzy. You'll look very good wearing this.", before[; wear: !It needs to be cut first if(suitcut == false) "It doesn't fit you."; cut: if(glass_shards in Player){ suitcut = true; "You cut it down to your size"; } ], has clothing; !crossroad room Object Dance_Hall "Dance Hall" with name 'dancing place', description[; !Some story first if(Dance_Hall hasnt visited){ print "This room is filled with people, all looking up at the north end of the room, where you see the mage standing at the top of some stairs.^ ~Welcome friends!~ says the mage in a loud voice, ~I am glad you could make it to my ball. Tonight is the night when he arrives! So dance, dance long into the night!~^ And with that, he turns around and disappears as everyone begins to dance.^^"; } print "This room is filled with dancing people. There is a staircase leading up to the north, a booth to the west and to the east, and an exit to the south.^"; ], s_to Lobby, n_to Grand_arch, u_to Grand_arch, e_to Right_Booth, w_to Left_Booth, has scored light; !A small room that an old man and the red crystal Object Right_Booth "Booth" with name 'east booth', description "The booth is in a small alcove. An old man sits there all alone. There is one exit to the west.", w_to Dance_Hall, has light; !Puzzle, need to give gold whistle to old man to get red crystal Object -> old_man "old man" with name 'old' 'man' 'old man', description[; if(manhaswhistle == false){ !give Player a clue "What as sad-looking old man. You hear him whispering^ ~What makes sound that can't be heard?~"; } if(manhaswhistle == true) !change description "The old man looks very happy now."; ], life[; give: if(noun == gold_whistle){ move red_crystal to Player; remove gold_whistle; manhaswhistle = true; "The old man takes the gold whistle. ~Of course! Thank you so much!~^^ The old man gives you the red crystal."; } ], has concealed animate; !item needed to activate gate Object -> red_crystal "red crystal" with name 'red' 'crystal' 'red crystal', description "A soft red glow comes from the red crystal as you look into it.", before[; take: if(manhaswhistle == false){ !stops player from getting crystal before old man has gold whistle "As you reach for the red crystal, the old man grabs it and says, ~No, that's mine!~"; } ], has scored; !small room with fat man and blue crystal Object Left_Booth "Booth" with name 'west booth', description "The booth is in a small alcove. Taking up one entire side is one man who is very fat. There is one exit to the east.", e_to Dance_Hall, has light; !fat man needs torch that has light Object -> fat_man "fat man" with name 'fat' 'man' 'fat man', description[; if(manhastorch == false) !give Player clue (torch with light mentions a marshmallow) "He is wedged into the booth, looking at a marshmallow with a sad look his eyes."; if(manhastorch == true) !change description "He is wedged into the booth, happily eating a s'more. And who wouldn't be?"; ], life[; give: if(noun == torch && torch has light){ move blue_crystal to Player; remove torch; manhastorch = true; "The fat man takes the lit torch. ~At last! Now I can have s'mores!~^^ The fat man gives you the blue crystal."; } ], before[; take: "You tell me how to get him unstuck from that booth, I'd really like to know."; ], has concealed animate; !item needed to activate gate Object -> blue_crystal "blue crystal" with name 'blue' 'crystal' 'blue crystal', description "A soft blue glow comes from the blue crystal as you look into it.", before[; take: if(manhastorch == false){ "As you reach for the blue crystal, the fat man grabs it and says, ~No, that's mine!~"; !stops player from getting crystal before fat man has torch with light } ], has scored; !Puzzle room, player must activate arch Object Grand_Arch "Grand Arch" with name 'secondtolast', description[; !Change description if puzzle is solved print "At the top of the stairs, there is a huge arch against the north end of the room. The arch is covered with mystical runes that you can not read. Standing next to left of the arch is a red statue and standing to the right is a blue statue. "; if(redon == false || blueon == false){ print "Past the arch is a blank wall.^"; } if(redon == true && blueon == true){ print "There is a now a strange purple portal inside the arch.^"; } ], n_to[; !Stop player from moving to next room until arch is activated if(redon == true && blueon == true){ Playerto(Top_of_Tower); } if(redon == false || blueon == false) "The arch leads to no where."; ], s_to Dance_Hall, d_to Dance_Hall, has light; !What the Player gives red crystal to Object -> red_statue "red statue" with name 'red' 'statue' 'red statue', description[; if(redon == false){ !give player a clue "It is a tall statue of a robed man. It seems to be giving off a soft, red light. As you get closer to it, the statue moves its hands closer to you, as if expecting something."; } "The statue is now grasping the red crystal very tightly. You couldn't get the crystal back even if you tried."; ], life[; give: if(noun == red_crystal){ remove red_crystal; redon = true; "The statue slowly nods, and grasps the red crystal closely. The staue begins to glow brightly, and a red beam of light shoots out to the arch."; } ], !uses animate so player can give red crystal has concealed animate; !What the Player gives blue crystal to Object -> blue_statue "blue statue" with name 'blue' 'statue' 'blue statue', description[; if(blueon == false){ !give player a clue "It is a tall statue of a robed man. It seems to be giving off a soft, blue light. As you get closer to it, the statue moves its hands closer to you, as if expecting something."; } "The statue is now grasping the blue crystal very tightly. You couldn't get the crystal back even if you tried."; ], life[; give: if(noun == blue_crystal){ remove blue_crystal; blueon = true; "The statue slowly nods, and grasps the blue crystal closely. The staue begins to glow brightly, and a blue beam of light shoots out to the arch."; } ], !uses animate so player can give red crystal has concealed animate; !Object so players can look at arch or go arch Object -> arch "arch" with name 'arch' 'grand' 'grand arch' 'purple portal' 'purple' 'portal' 'strange' 'strange purple' 'strange portal' 'strange purple portal', description[; if(redon == false || blueon == false){ print "It is a strange, built very well-built arch that is covered with mystical runes taht you can not read.^"; } if(redon == true && blueon == true){ print "It is a strange, built very well-built arch that is covered with mystical runes taht you can not read. There is a now a strange purple portal inside the arch.^"; } ], door_to Top_Of_Tower, door_dir n_to, has static door concealed; !Final room Object Top_Of_Tower "Top of Tower" with name 'top', description[; print "You stand at the very top of the tower. Dark clouds surround the tower, and lighting bolts arc through the sky. Hovering at the opposite end of the tower, you can see your sister held in a crystal.^"; if(Top_Of_Tower hasnt visited){ !Story print "As you run forward, you hear an evil cackle and turn around.^ Standing there is the mage that kidnapped your sister.^ ~Greeting young one!~ he says to you, ~I have been waiting for you to come!~^ ~What?~ you shout, ~Why?~^ He laughs and says ~So, you don't know, they never told you. Ah, well. I guess I will. The truth is, that is not your sister! The people that died years ago were not your parents! You were left there on their doorstep when you were a child! Look at how you got through my tower so easily, you are very powerful, powerful enough to claim the magicstar!~^ ~Magicstar?~ You ask, ~What's that?~^ ~Join with me~ He says, ~And I will tell you everything.~^^"; } if(choice == false) print "Will you join with him?^"; ], before[; !Puzzle, must answer no yes: if(choice == false){ deadflag = 2; "~Perfect!~ the mage says, and he takes a few steps toward you.^ ~Now, I shall teach everything you need to know. There is much power inside you. You must learn how to use it properly.!~^ With a wave of his hand, the crystal lowers itself to the ground and disappears, leaving you sister standing there un-harmed.^ ~I had to kidnap this girl to make you come here, you must understand that.~^ ~So, what is magicstar?~ you ask.^ ~All in time,~ the mage replies, ~All in good time.~"; } no: choice = true; !starts first attack move icicles to Top_of_Tower; StartTimer(icicles, 1); !Player has one chance to melt ice "~So,~ the mage says, ~You leave me no choice! I will take your power from your corpse!~^ The mage rises into the air and spreads his arms wide, and dozens of icicles form around him, all pointing at you.^ ~Now, DIE!~ he yells, and the icicles dive toward you."; ], has scored light; !Player can look at sister Object -> sister "sister" with name 'sister' 'crystal', description "She looks alright, but you have no idea if she is still...", before[; take: "She is beyond your reach."; ], has static concealed; !player can look at mage Object -> mage "mage" with name 'mage', description "Here he is, the man who kiddnapped your sister! But what is he up too?", !Final attack time_left, time_out[; deadflag = 1; "The mage laughs as he throws the ball of darkness down at you, and fear grips your body.^ The ball envelopes you, and you know no more.^ GAME OVER"; ], before[; thrownat: if(noun == glass_shards && finalthird == true){ !Player wins the game deadflag = 2; "The glass shards stick into the mage, and he loses his concentration. The ball of darkness slips from his hands and falls onto him. You hear his screams echo as he is destroyed by his own spell. You turn around to see the crystal lower to the ground. You run forward, and it dissapears as you get closer to it. You pick up your sister in your arms, and she looks up at you.^ ~Oh brother, thank you so much,~ she says, ~But what do we do now?~^ ~I don't know,~ you say, ~But I do know that we need to find out what magicstar is.~"; } attack: if(choice == true) !Give Player a clue "You can not reach him, perhaps you could throw something..."; else "The mage raises his hand and you feel an invisible wall stopping you from getting any closer."; burn: "The mage deflects your attack easily. ~I can not be harmed by such a simple spell.~ he says."; ], has animate; !ice is an object for the timer Object icicles "icicles" with name 'icicles' 'icicle' 'ice', !Just if the player looks at ice description "They look very sharp. Wait what are you doing?! I hope you saved your game.", time_left, time_out[; if(icicles in Top_Of_Tower){ !Kill Player deadflag = 1; "^The icicles slice through your body, spraying blood across the tower. As you fall to the ground, you hear the mocking laughter of the mage.^ GAME OVER"; } ], before[; take: "You can not grab dozens of icicles diving at you."; burn: !Player must know burn reach this point, so don't have to check if(finalsecond == false){ !Start second attack finalsecond = true; remove icicles; move purple_gas to Top_of_Tower; StartTimer(purple_gas, 2); "You summon a wall of fire that melts all of the icicles before they stab into you.^ ~What power!~ the mage whispers, ~No matter, it will be mine!~^ Around your feet, a cloud of purple gas spreads."; } ], has pluralname;