def dronesound(storage, obj, m): storage._go() if storage._getData('rightwing_powershortage'): remove_from_map(storage.s, SCRIPT, m.properties['key_name'], 'dronesound') ad = GlobalServices.getAudioDevice() ad.play(SOUND, 'drone', VOLUME_SOUND_AMBIENT, 0, 1500) black = OverlayFactory.create_by_color((0,0,0), 0, 255) storage._wait(3000) m.addOverlay(black) ad.play(SOUND, '27_spark3', VOLUME_SOUND) storage._wait(50) m.removeOverlay(black) ad.play(SOUND, '27_spark1', VOLUME_SOUND) storage._wait(100) m.addOverlay(black) ad.play(SOUND, '27_spark4', VOLUME_SOUND) storage._wait(50) m.removeOverlay(black) ad.play(SOUND, '27_spark2', VOLUME_SOUND) storage._wait(1750) m.addOverlay(black) ad.play(SOUND, '27_spark1', VOLUME_SOUND) storage._wait(100) m.removeOverlay(black) ad.play(SOUND, '27_spark3', VOLUME_SOUND) storage._halt()
def librarykey(storage, obj, m): storage._go() if storage._playerInDistance(m.getPlayer().position, obj.rect): tr = GlobalServices.getTextRenderer() ad = GlobalServices.getAudioDevice() ad.play(SOUND, 'pick_key', VOLUME_SOUND) tr.write("Got 'Library Key'", 3, COLOR_GOT_ITEM) m.getPlayer().inventory.add(ItemFactory.create(INVENTORY_ITEM_LIBRARY_KEY, 1)) remove_from_map(get_savegame(), OBJECT, 'mirrorhall', 'librarykey') storage._setData('librarykey_obtained', True) storage._halt()
def ladder(storage, obj, m): storage._go() if storage._playerInDistance(m.getPlayer().position, obj.rect): tr = GlobalServices.getTextRenderer() ad = GlobalServices.getAudioDevice() if storage._getData('masterroom_ladder_needed'): storage._toggleCutscene(True) tr.write("This ladder should get me up through that loft hatch.", 3) storage._wait(3000) inv = m.getPlayer().inventory inv.add(ItemFactory.create(INVENTORY_ITEM_LADDER, 1)) remove_from_map(get_savegame(), OBJECT, 'rightwing', 'ladder') ad.play(SOUND, 'pick_item', VOLUME_SOUND) tr.write("Got 'Ladder'", 3, COLOR_GOT_ITEM) storage._toggleCutscene(False) GlobalServices.getEventManager().post(ObjectHighlightedEvent(None)) else: tr.write("There is a ladder on the ground. I have no purpose for that right now.", 3) storage._halt()
def leftroomopening(storage, obj, m): storage._go() tr = GlobalServices.getTextRenderer() ad = GlobalServices.getAudioDevice() if storage._getData('flashlight_obtained'): m.getPlayer().stopMoving() storage._toggleCutscene(True) ad.play(SOUND, 'doorclose', VOLUME_SOUND_AMBIENT) storage._wait(1000) tr.write("That noise came from across the hallway. Was it a door opening?", 3) storage._wait(1500) remove_from_map(get_savegame(), SCRIPT, 'righthallway', 'righthallway_leftroomopening') storage._toggleCutscene(False) storage._halt()
def flashlight(storage, obj, m): storage._go() tr = GlobalServices.getTextRenderer() ad = GlobalServices.getAudioDevice() storage._faceObject(m.getPlayer(), obj) if not storage._playerInDistance(m.getPlayer().position, obj.rect): tr.write("I can't reach that from here.", 3) else: # Bed scare sequence done if storage._getData('bedroom_bedscare_done'): # Add the flashlight to the inventory m.getPlayer().inventory.add(\ ItemFactory.create(INVENTORY_ITEM_FLASHLIGHT, 1)) ad.play(SOUND, 'pick_item', VOLUME_SOUND) tr.write("Got 'Flashlight'", 3, COLOR_GOT_ITEM) # Delete the note from the map m.removeObject(obj) remove_from_map(get_savegame(), OBJECT, 'bedroom', 'bedroom_flashlight') # Set a flag that this script was executed storage._setData('flashlight_obtained', True) # Add the global flashlight overlay, deleting the others flashlight = OverlayFactory.create_flashlight() set_global_overlays([flashlight]) # Add the overlay to this map, too m.clearOverlays() m.addOverlay(flashlight) ad.play(SOUND, 'flashlight_toggle', VOLUME_SOUND) ad.stop(SOUND, 1500, 'insanity_bug3') else: storage._toggleCutscene(True) tr.write("Sometimes I need my flashlight when the power tends to get all freaky.", 3) storage._wait(3000) tr.write("I don't know if that's because the mansion is just old or haunted, though.", 3) storage._toggleCutscene(False) storage._halt()
def ceilingdoor(storage, obj, m): storage._go() if storage._playerInDistance(m.getPlayer().position, obj.rect, 180): GlobalServices.getEventManager().post(ObjectHighlightedEvent(None)) inv = m.getPlayer().inventory tr = GlobalServices.getTextRenderer() ad = GlobalServices.getAudioDevice() storage._toggleCutscene(True) if inv.containsName(INVENTORY_ITEM_LADDER): m.getPlayer().setPosition(conv_tile_pixel((9,15), m)) # Add ladder to this map ad.play(SOUND, '05_attach_ladder', VOLUME_SOUND) from src.model.Clickable import TeleportClickable ladderpath = os.path.join(PATH_GRAPHICS_TILES, 'ladder_vertical.png') laddersurf = pygame.image.load(ladderpath).convert_alpha() ladder = TeleportClickable('tpattic',\ pygame.Rect(conv_tile_pixel((9, 7), m),\ conv_tile_pixel( (2, 7), m)),\ m, None, 'ladder_climb',\ 'attic', 8*16, 17*16, laddersurf,\ ladderpath, True) add_object_to_map_properties(get_savegame(), 'masterroom',\ TELEPORTOBJECT, ladder) remove_from_map(get_savegame(), OBJECT, 'masterroom', 'ceilingdoor') # Reset player blah inv.remove(inv.get(INVENTORY_ITEM_LADDER)) else: tr.write("There is a loft hatch on the ceiling.", 3) storage._wait(3000) tr.write("I need something to get up there.", 3) if not storage._getData('masterroom_ladder_needed'): storage._wait(3000) ad.play(MUSIC, 'bgm_3', VOLUME_MUSIC, -1) storage._setData('masterroom_ladder_needed', True) storage._toggleCutscene(False) storage._halt()
def ending(storage, m): storage._go() GlobalServices.getEventManager().post(ObjectHighlightedEvent(None)) storage._toggleCutscene(True) storage._wait(3000) white = OverlayFactory.create("noise.png", pygame.BLEND_MULT) def static(ms): m.addOverlay(white) ad.play(SOUND, 'noise', VOLUME_SOUND + 0.1, -1) storage._wait(ms) m.removeOverlay(white) ad.stop(SOUND, 0, 'noise') tr = GlobalServices.getTextRenderer() ad = GlobalServices.getAudioDevice() tr.write("W-w-what am I supposed to do now?", 3) storage._wait(1400) static(340) storage._wait(1600) tr.write("I lose track of the sharp edges around me...", 3) storage._wait(2000) towhite = OverlayFactory.create_animated_color((255,255,255),\ 1000, 0, True, 0, 255) m.addOverlay(towhite) storage._wait(1500) player = m.getPlayer() player.setPosition(conv_tile_pixel((8,9), m)) player.setAnimation("kneel") storage._wait(400) fadeout = OverlayFactory.create_animated_color((255,255,255),\ 1000, 0, True, 255, 0) m.addOverlay(fadeout) m.removeOverlay(towhite) storage._wait(3000) tr.write("Did I...", 3) player.setAnimation("walk") storage._wait(800) static(200) storage._wait(600) static(40) storage._wait(600) static(1000) storage._wait(2500) player.setDirection([0,-1]) storage._wait(500) tr.write("It was... me..?", 3) storage._wait(1000) static(500) storage._wait(3000) static(100) storage._wait(1000) ad.play(SOUND, 'pick_item', VOLUME_SOUND) remove_from_map(get_savegame(), OBJECT, 'attic', 'gun') tr.write("I should...", 3) storage._wait(3000) toblack = OverlayFactory.create_animated_color((0,0,0), 2500, 0, True, 0, 255) m.addOverlay(toblack) ad.stop(SOUND, 2750, 'insanity_ear_ring') ad.stop(MUSIC, 2750) storage._wait(3500) ad.play(SOUND, 'gun_cock', VOLUME_SOUND) storage._wait(3500) storage._halt() rollCredits(storage, m)
def powercutshort(storage, obj, m): storage._go() ad = GlobalServices.getAudioDevice() tr = GlobalServices.getTextRenderer() if storage._getData('entrancenote_obtained')\ and not storage._getData('rightwing_powershortage'): storage._toggleCutscene(True) p = m.getPlayer() p.stopMoving() storage._setData('rightwing_powershortage', True) ad.play(SOUND, 'drone', VOLUME_SOUND) ad.play(SOUND, 'elec', VOLUME_SOUND) black = OverlayFactory.create_by_color((0,0,0), 0, 255) m.addOverlay(black) storage._wait(1000) m.removeOverlay(black) ad.play(SOUND, '27_spark1', VOLUME_SOUND) storage._wait(100) m.addOverlay(black) storage._wait(1500) m.removeOverlay(black) ad.play(SOUND, '27_spark2', VOLUME_SOUND) storage._wait(50) m.addOverlay(black) storage._wait(20) m.removeOverlay(black) ad.play(SOUND, '27_spark4', VOLUME_SOUND) storage._wait(30) m.addOverlay(black) storage._wait(50) ad.play(SOUND, '27_spark3', VOLUME_SOUND) m.removeOverlay(black) storage._wait(400) m.addOverlay(black) storage._wait(20) m.removeOverlay(black) ad.play(SOUND, '27_spark4', VOLUME_SOUND) storage._wait(30) m.addOverlay(black) ad.play(SOUND, '27_spark3', VOLUME_SOUND) storage._wait(50) fadein = OverlayFactory.create_animated_color((0,0,0), 3000, 0, True, 255, 155) storage._wait(600) m.removeOverlay(black) m.addOverlay(fadein) storage._wait(3000) tr.write("What was that? A... power shortage?", 3) storage._wait(500) p.setDirection([1,0]) storage._wait(500) p.setDirection([1,1]) storage._wait(500) p.setDirection([-1,0]) storage._wait(500) p.setDirection([1,0]) storage._wait(500) p.setDirection([0,-1]) storage._wait(500) tr.write("Keep going, Clyde... it's nothing.", 3) remove_from_map(get_savegame(), SCRIPT, 'rightwing', 'rightwing_powercutshort') add_global_overlay(OverlayFactory.create_by_color((0,0,0), 0, 155)) storage._toggleCutscene(False) storage._halt()
def scare(storage, obj, m): storage._go() ad = GlobalServices.getAudioDevice() tr = GlobalServices.getTextRenderer() storage._toggleCutscene(True) # Force the flashlight to point to the right player = m.getPlayer() player.stopMoving() fl = m.getOverlay("_flashlight") # Helper function for looking in a direction def face(direction): fl.point(direction) player.setDirection(string_to_direction(direction)) face("right") # Overlay creation red = OverlayFactory.create_by_color((170, 0, 0), 0, 50) black = OverlayFactory.create_by_color((0, 0, 0), 0, 210) # Show the figure ad.play(SOUND, 'scare_wood_creak_walk2', VOLUME_SOUND) ad.play(SOUND, '24_amb_noise', VOLUME_SOUND_AMBIENT, -1) shadow = m.getShadow() shadow.setPosition(conv_tile_pixel((43, 8), m)) m.addOverlay(red) shadow.setVisible(True) shadow.moveBy((0, 100), 5000) storage._wait(1000) ad.stop(SOUND, 0, '24_amb_noise') ad.play(SOUND, '27_spark3', VOLUME_SOUND) ad.play(SOUND, 'scare_tingeling', VOLUME_SOUND, 0, 1000) m.addOverlay(black) m.removeOverlay(red) shadow.setVisible(False) shadow.setPosition(conv_tile_pixel((43, 14), m)) storage._wait(2000) ad.play(SOUND, 'scare_wood_creak_walk3', VOLUME_SOUND) ad.play(SOUND, 'insanity_baby_cry2', VOLUME_SOUND) ad.play(SOUND, '27_orb_implode', VOLUME_SOUND) ad.play(SOUND, '24_amb_noise', VOLUME_SOUND_AMBIENT, -1) m.addOverlay(red) m.removeOverlay(black) shadow.setVisible(True) shadow.moveBy((-75, 0), 7500) storage._wait(2500) ad.stop(SOUND, 1750, '24_amb_noise') ad.play(SOUND, '27_spark4', VOLUME_SOUND) ad.play(SOUND, 'scare_male_terrified5', VOLUME_SOUND) m.addOverlay(black) m.removeOverlay(red) shadow.setVisible(False) add_to_map(get_savegame(), OBJECT, 'atrium', 'message',\ pygame.Rect(conv_tile_pixel((29,7), m), conv_tile_pixel((8,4), m)),\ 'atrium_message', 'message_1.png', True) storage._wait(1000) m.removeOverlay(black) tr.write("What in the world was that thing?!", 2) face("left") storage._wait(250) face("up-right") storage._wait(250) face("right") storage._wait(100) face("right-down") storage._wait(250) face("right") storage._wait(1150) tr.write("Where did it go?", 2) storage._wait(2000) face("up") tr.write("Did it write... this?", 3) storage._wait(3000) face("right") m.removeObject(obj) storage._toggleCutscene(False) remove_from_map(get_savegame(), OBJECT, 'atrium', 'blockingshelf') storage._setData('atrium_scaredone', True) add_to_map(get_savegame(), OBJECT, 'atrium', 'blockingshelf',\ pygame.Rect(conv_tile_pixel((11,25), m), conv_tile_pixel((2,8), m)),\ 'atrium_blockingshelf', 'bigshelf_right.png', True) storage._halt()