summary refs log tree commit diff stats
path: root/res/scripts
diff options
context:
space:
mode:
Diffstat (limited to 'res/scripts')
-rw-r--r--res/scripts/common.lua10
-rw-r--r--res/scripts/hallucination_mirror.lua22
2 files changed, 32 insertions, 0 deletions
diff --git a/res/scripts/common.lua b/res/scripts/common.lua index 2a2ce35..d0ea6b5 100644 --- a/res/scripts/common.lua +++ b/res/scripts/common.lua
@@ -542,3 +542,13 @@ function ExitAreaTransition()
542 effect():circleTransition(1, 0.0) 542 effect():circleTransition(1, 0.0)
543 Delay(1000) 543 Delay(1000)
544end 544end
545
546--- Checks whether a sprite is in a zone.
547-- @param spriteName the name of the sprite to locate
548-- @param zoneName the name of the zone on the current map to use as a boundary
549function IsSpriteInZone(spriteName, zoneName)
550 local pos = GetPosition(spriteName)
551 local zone = getMap():getZone(zoneName)
552
553 return (pos:x() >= zone.ul:x()) and (pos:x() <= zone.dr:x()) and (pos:y() >= zone.ul:y()) and (pos:y() <= zone.dr:y())
554end
diff --git a/res/scripts/hallucination_mirror.lua b/res/scripts/hallucination_mirror.lua index 6e2ef55..bf1faba 100644 --- a/res/scripts/hallucination_mirror.lua +++ b/res/scripts/hallucination_mirror.lua
@@ -1,5 +1,27 @@
1hallucination_mirror = {} 1hallucination_mirror = {}
2 2
3function hallucination_mirror.init()
4 coroutine.yield()
5 -- This routine makes the player's party face the mirror if they are standing
6 -- in front of it for a few (5) seconds. The fact that this has to run
7 -- continuously makes it a bit complicated, and is why we keep checking that
8 -- we're on the same map.
9 while getMap():getName() == "hallucination_mirror" do
10 if IsSpriteInZone("lucas", "mirror_sight") and IsSpriteInZone("kuma", "mirror_sight") and IsSpriteInZone("duster", "mirror_sight") and IsSpriteInZone("boney", "mirror_sight") then
11 timer = 5000 -- milliseconds
12 while timer > 0 and getSprite(getPlayerSprite()).characterState == CharacterState.STILL and getMap():getName() == "hallucination_mirror" do
13 timer = timer - coroutine.yield()
14 end
15
16 if timer <= 0 and getSprite(getPlayerSprite()).characterState == CharacterState.STILL and getMap():getName() == "hallucination_mirror" then
17 SetPartyDirection(getPlayerSprite(), Direction.UP)
18 end
19 end
20
21 coroutine.yield()
22 end
23end
24
3function hallucination_mirror.mailbox() 25function hallucination_mirror.mailbox()
4 StartCutscene() 26 StartCutscene()
5 DisplayMessage("* The mailbox lid is open...\n* Peek inside?", "", SpeakerType.NONE) 27 DisplayMessage("* The mailbox lid is open...\n* Peek inside?", "", SpeakerType.NONE)