summary refs log tree commit diff stats
path: root/res
diff options
context:
space:
mode:
Diffstat (limited to 'res')
-rw-r--r--res/maps/hallucination_interior.tmx33
-rw-r--r--res/scripts/common.lua42
-rw-r--r--res/scripts/hallucination_interior.lua44
3 files changed, 117 insertions, 2 deletions
diff --git a/res/maps/hallucination_interior.tmx b/res/maps/hallucination_interior.tmx index d42cadc..7e012eb 100644 --- a/res/maps/hallucination_interior.tmx +++ b/res/maps/hallucination_interior.tmx
@@ -1,5 +1,5 @@
1<?xml version="1.0" encoding="UTF-8"?> 1<?xml version="1.0" encoding="UTF-8"?>
2<map version="1.4" tiledversion="1.4.3" orientation="orthogonal" renderorder="right-down" width="64" height="64" tilewidth="16" tileheight="16" infinite="0" nextlayerid="3" nextobjectid="7"> 2<map version="1.4" tiledversion="1.4.3" orientation="orthogonal" renderorder="right-down" width="64" height="64" tilewidth="16" tileheight="16" infinite="0" nextlayerid="3" nextobjectid="14">
3 <properties> 3 <properties>
4 <property name="music" value="red_green_yellow_yellow"/> 4 <property name="music" value="red_green_yellow_yellow"/>
5 </properties> 5 </properties>
@@ -156,6 +156,37 @@
156 <object id="6" name="fromRight" type="warp" x="1007.9" y="445.781"> 156 <object id="6" name="fromRight" type="warp" x="1007.9" y="445.781">
157 <point/> 157 <point/>
158 </object> 158 </object>
159 <object id="7" name="switch_claus" type="sprite" x="864" y="784">
160 <properties>
161 <property name="animation" value="claus"/>
162 <property name="enclosureZone" value="switch_claus_enclosure"/>
163 <property name="interactionScript" value="lets_switch_places"/>
164 <property name="movementSpeed" type="int" value="1"/>
165 <property name="shadow" type="bool" value="true"/>
166 <property name="wander" type="bool" value="true"/>
167 </properties>
168 <point/>
169 </object>
170 <object id="8" name="switch_claus_enclosure" type="zone" x="768" y="656" width="144" height="160"/>
171 <object id="9" name="switch_claus_attention" type="trigger" x="752" y="640" width="176" height="176">
172 <properties>
173 <property name="script" value="switch_claus_attention"/>
174 </properties>
175 </object>
176 <object id="10" name="switch_claus_lose_interest_left" type="trigger" x="720" y="608" width="16" height="112">
177 <properties>
178 <property name="script" value="switch_claus_lose_interest"/>
179 </properties>
180 </object>
181 <object id="11" name="switch_claus_lose_interest_up" type="trigger" x="736" y="608" width="144" height="16">
182 <properties>
183 <property name="script" value="switch_claus_lose_interest"/>
184 </properties>
185 </object>
186 <object id="12" name="switch_claus_hidden" type="zone" x="800" y="704" width="112" height="112"/>
187 <object id="13" name="switch_claus_rsvp" type="warp" x="816" y="688">
188 <point/>
189 </object>
159 </objectgroup> 190 </objectgroup>
160 <layer id="1" name="Upper" width="64" height="64"> 191 <layer id="1" name="Upper" width="64" height="64">
161 <properties> 192 <properties>
diff --git a/res/scripts/common.lua b/res/scripts/common.lua index d0ea6b5..f984667 100644 --- a/res/scripts/common.lua +++ b/res/scripts/common.lua
@@ -34,7 +34,8 @@ SpriteLayer = {
34BehaviourType = { 34BehaviourType = {
35 NONE = 0, 35 NONE = 0,
36 WANDER = 1, 36 WANDER = 1,
37 PATH = 2 37 PATH = 2,
38 FOLLOW = 3
38} 39}
39 40
40CutsceneOptions = { 41CutsceneOptions = {
@@ -440,6 +441,13 @@ function WaitForSpritePath(spriteName)
440 end 441 end
441end 442end
442 443
444--- Sets a sprite to wander.
445function StartWandering(spriteName)
446 local spriteId = getSpriteByAlias(spriteName)
447 local sprite = getSprite(spriteId)
448 sprite.behaviourType = BehaviourType.WANDER
449end
450
443--- Turns off the sprite's behaviour. 451--- Turns off the sprite's behaviour.
444function DisableBehaviour(spriteName) 452function DisableBehaviour(spriteName)
445 local spriteId = getSpriteByAlias(spriteName) 453 local spriteId = getSpriteByAlias(spriteName)
@@ -447,6 +455,23 @@ function DisableBehaviour(spriteName)
447 sprite.behaviourType = BehaviourType.NONE 455 sprite.behaviourType = BehaviourType.NONE
448end 456end
449 457
458--- Directs a sprite to start following a target sprite.
459function FollowSprite(spriteName, targetName)
460 local spriteId = getSpriteByAlias(spriteName)
461 local targetId = getSpriteByAlias(targetName)
462 local sprite = getSprite(spriteId)
463 sprite.followSpriteId = targetId
464 sprite.behaviourType = BehaviourType.FOLLOW
465end
466
467--- Makes a sprite stop following whatever sprite it was following.
468function StopFollowingSprite(spriteName)
469 local spriteId = getSpriteByAlias(spriteName)
470 local sprite = getSprite(spriteId)
471 sprite.followSpriteId = -1
472 sprite.behaviourType = BehaviourType.NONE
473end
474
450--- Fades out the currently playing music. 475--- Fades out the currently playing music.
451-- This does not block. If you want it to block, call Delay for the same amount 476-- This does not block. If you want it to block, call Delay for the same amount
452-- of time. 477-- of time.
@@ -479,6 +504,21 @@ function EnablePlayerControl()
479end 504end
480 505
481--- Makes the specified sprite face toward the †arget sprite. 506--- Makes the specified sprite face toward the †arget sprite.
507-- This version of the function uses any of the eight directions.
508-- @param spriteName the name of the sprite to change the direction of
509-- @param targetName the name of the sprite to face toward
510function FaceTowardSprite(spriteName, targetName)
511 local spriteId = getSpriteByAlias(spriteName)
512 local targetId = getSpriteByAlias(targetName)
513 local sprite = getSprite(spriteId)
514 local target = getSprite(targetId)
515 local diff = vec2i.new(target.loc:x() - sprite.loc:x(), target.loc:y() - sprite.loc:y())
516 local dir = directionFacingPoint(diff)
517
518 SetDirection(spriteName, dir)
519end
520
521--- Makes the specified sprite face toward the †arget sprite.
482-- This version of the function uses the closest cardinal direction. 522-- This version of the function uses the closest cardinal direction.
483-- @param spriteName the name of the sprite to change the direction of 523-- @param spriteName the name of the sprite to change the direction of
484-- @param targetName the name of the sprite to face toward 524-- @param targetName the name of the sprite to face toward
diff --git a/res/scripts/hallucination_interior.lua b/res/scripts/hallucination_interior.lua index f009196..0622453 100644 --- a/res/scripts/hallucination_interior.lua +++ b/res/scripts/hallucination_interior.lua
@@ -226,3 +226,47 @@ function hallucination_interior.mailbox_time_passage()
226 226
227 EnablePlayerControl() 227 EnablePlayerControl()
228end 228end
229
230function hallucination_interior.switch_claus_attention()
231 gamestate.switch_claus_lost_interest = false
232
233 Halt("switch_claus")
234 DisableBehaviour("switch_claus")
235 ShowExpression("switch_claus", "surprise")
236 FaceTowardSprite("switch_claus", "lucas")
237 Delay(1000)
238
239 RemoveExpression("switch_claus")
240
241 if gamestate.switch_claus_lost_interest then
242 SetMovementSpeed("switch_claus", 1)
243 StartWandering("switch_claus")
244 else
245 SetMovementSpeed("switch_claus", 2)
246
247 if IsSpriteInZone("switch_claus", "switch_claus_hidden") then
248 MakeSpriteNotSolid("lucas")
249 DirectSpriteToLocation("switch_claus", "switch_claus_rsvp")
250 MakeSpriteSolid("lucas")
251 WaitForSpritePath("switch_claus")
252 end
253
254 if gamestate.switch_claus_lost_interest then
255 SetMovementSpeed("switch_claus", 1)
256 StartWandering("switch_claus")
257 else
258 FollowSprite("switch_claus", "lucas")
259 end
260 end
261end
262
263function hallucination_interior.switch_claus_lose_interest()
264 gamestate.switch_claus_lost_interest = true
265
266 SetMovementSpeed("switch_claus", 1)
267 StartWandering("switch_claus")
268end
269
270function hallucination_interior.lets_switch_places()
271 -- TODO: let's switch places
272end