kiki/levels/invisimaze.coffee
monsterkodi 142091f36f levels
2016-08-08 13:27:33 +02:00

129 lines
5.4 KiB
CoffeeScript

# level design by Owen Hay
module.exports =
name: "invisimaze"
scheme: "yellow_scheme"
size: [9,5,5]
intro: "invisimaze"
help: """
blindly fumbling through the maze
the switches move every time you play
there is only one way out!
"""
player: position: [0,1,0]
exits: [
name: "exit1"
active: 0
position: [-4,0,0]
,
name: "exit2"
active: 0
position: [4,0,0]
world: () -> outro()
]
create: ->
s = world.getSize()
def switched(switch):
world.switch_counter += switch.isActive() and 1 or -1
exit = kikiObjectToGate(world.getObjectWithName("exit"))
exit.setActive(world.switch_counter == 5)
def switchBoth():
world.toggle("exit1")
world.toggle("exit2")
#randomly assign the switches to different locations
tup_array = [(0,0,0),( 2, 1, -2),( -2, -2, 0),( -1, 2, 1),( -2, -2, -1),( 1, -1,2),]
random.shuffle(tup_array)
i0 = tup_array[0]
i1 = tup_array[1]
i2 = tup_array[2]
i3 = tup_array[3]
i4 = tup_array[4]
i5 = tup_array[5]
exit_switch = KikiSwitch()
exit_switch.getEventWithName("switched").addAction(continuous(()-> : switchBoth()))
world.addObjectAtPos(exit_switch, world.decenter(i0) )
exit2_switch = KikiSwitch()
exit2_switch.getEventWithName("switched").addAction(continuous(()-> : world.toggle("exit2")))
world.addObjectAtPos(exit2_switch, world.decenter(i1))
exit3_switch = KikiSwitch()
exit3_switch.getEventWithName("switched").addAction(continuous(()-> : world.toggle("exit1")))
world.addObjectAtPos(exit3_switch, world.decenter(i2))
exit4_switch = KikiSwitch()
exit4_switch.getEventWithName("switched").addAction(continuous(()-> : world.toggle("exit1")))
world.addObjectAtPos(exit4_switch, world.decenter(i3))
exit5_switch = KikiSwitch()
exit5_switch.getEventWithName("switched").addAction(continuous(()-> : world.toggle("exit1")))
world.addObjectAtPos(exit5_switch, world.decenter(i4))
# Invisimaze
for y in [0, 1, ]:
world.addObjectLine(KikiStone, KikiPos(4, y, 2), KikiPos(4, y, 5))
world.addObjectLine(KikiStone, KikiPos(5, y, 2), KikiPos(7, y, 2))
for y in [0,]:
for x in [2]:
world.addObjectPoly(KikiStone, [world.decenter(-2, 0, -2), world.decenter(-2, 0, 2), \
world.decenter(2, 0, 2), world.decenter(2, 0, -2)])
world.addObjectPoly(KikiStone, [KikiPos(2, 4, 2), KikiPos(2, 4, 4), \
KikiPos(4, 4, 4), KikiPos(4, 4, 2)])
world.addObjectAtPos(KikiStone(), KikiPos(2, 3, 2))
world.addObjectAtPos(KikiStone(), KikiPos(6, 3, 1))
world.addObjectAtPos(KikiStone(), KikiPos(6, 3, 3))
world.addObjectAtPos(KikiStone(), KikiPos(2, 1, 1))
world.addObjectAtPos(KikiStone(), KikiPos(3, 0, 1))
world.addObjectAtPos(KikiStone(), KikiPos(2, 1, 2))
world.addObjectAtPos(KikiStone(), KikiPos(2, 0, 2))
world.addObjectAtPos(KikiStone(), KikiPos(4, 2, 3))
world.addObjectAtPos(KikiStone(), KikiPos(5, 2, 2))
world.addObjectAtPos(KikiStone(), KikiPos(5, 2, 1))
world.addObjectAtPos(KikiStone(), KikiPos(4, 2, 1))
world.addObjectAtPos(KikiStone(), KikiPos(3, 2, 2))
world.addObjectAtPos(KikiStone(), KikiPos(3, 2, 3))
world.addObjectAtPos(KikiStone(), KikiPos(5, 3, 0))
world.addObjectAtPos(KikiStone(), KikiPos(6, 4, 0))
#the bombLock
world.addObjectAtPos(KikiStone(), KikiPos(7, 1, 2))
world.addObjectAtPos(KikiStone(), KikiPos(7, 1, 3))
world.addObjectAtPos(KikiStone(), KikiPos(7, 3, 2))
world.addObjectAtPos(KikiStone(), KikiPos(7, 2, 1))
world.addObjectAtPos(KikiStone(), KikiPos(7, 2, 2))
world.addObjectAtPos(KikiBomb(), KikiPos(7, 2, 2))
# Exit 1 is blocked!!!
world.addObjectAtPos(KikiMotorCylinder(), KikiPos(1, 2, 2))
# Walls
for y in [-4,]:
for x in [1, -1]:
world.addObjectPoly(KikiWall, [world.decenter(y, -x, -x), world.decenter(y, -x, x), \
world.decenter(y, x, x), world.decenter(y, x, -x)])
for y in [-3]:
for x in [2, -2]:
world.addObjectPoly(KikiWall, [world.decenter(y, -x, -x), world.decenter(y, -x, x), \
world.decenter(y, x, x), world.decenter(y, x, -x)])
for y in [4,]:
for x in [1, -1]:
world.addObjectPoly(KikiWall, [world.decenter(y, -x, -x), world.decenter(y, -x, x), \
world.decenter(y, x, x), world.decenter(y, x, -x)])
for y in [3]:
for x in [2, -2]:
world.addObjectPoly(KikiWall, [world.decenter(y, -x, -x), world.decenter(y, -x, x), \
world.decenter(y, x, x), world.decenter(y, x, -x)])