1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
|
hallucination_cliff = {}
function hallucination_cliff.off_bottom()
ChangeMap("hallucination_interior", "fromTop")
end
function hallucination_cliff.off_left()
ChangeMap("hallucination_hot_spring", "fromRight")
end
function hallucination_cliff.enter_door()
CreateAnimatedSpriteAtWarpPoint("entryway", "entryway", "entryway_appear", "pink_shell", Direction.DOWN, SpriteLayer.NORMAL)
PlaySound("door_open.wav")
ChangeMap("pink_shell", "fromOutside")
end
function hallucination_cliff.claus_fall_event()
-- do not trigger if we don't have claus
if not gamestate.still_has_claus then
return
end
-- do not trigger a second time
if gamestate.claus_fall_scene then
return
end
gamestate.claus_fall_scene = true
-- have the player automatically climb most of the ladder. this is to ensure
-- that Claus is off screen when the event triggers.
DisablePlayerControl()
Halt("lucas")
DirectSpriteToLocation("lucas", "near_top_first_ladder", PathfindingOptions.CARDINAL_DIRECTIONS_ONLY)
WaitForSpritePath("lucas")
DisableBehaviour("lucas")
StartCutscene(CutsceneOptions.DO_NOT_CHANGE_ANIMATION)
DisplayMessage("* Aiee!", "Claus", SpeakerType.MAN)
PlaySound("wobble_and_fall.wav")
WaitForEndOfMessage()
Delay(1000)
PlaySound("thud.wav")
ShakeCamera(100)
Delay(50)
ShowExpression("lucas", "surprise")
Delay(50)
ShowExpression("kuma", "surprise")
ShowExpression("duster", "surprise")
Delay(100)
StopShakingCamera()
Delay(1000)
MoveSpriteToWarp("join_claus", "claus_fall_location")
SetDirection("join_claus", Direction.LEFT)
SetAnimation("join_claus", "collapsed")
PanToSprite("join_claus", 4000)
Delay(1000)
RemoveExpression("lucas")
RemoveExpression("kuma")
RemoveExpression("duster")
WaitForPan()
Delay(1000)
-- we need to break up the party to detach Claus anyway, and while we're there
-- we should turn down the movement speed because the pathfinding algorithm
-- doesn't take media into consideration, and if we don't change the speed
-- before adding the other characters back, they'll bunch up as they move down
BreakUpParty("lucas")
SetMovementSpeed("lucas", 1)
character():addSpriteToParty(getPlayerSprite(), getSpriteByAlias("kuma"))
character():addSpriteToParty(getPlayerSprite(), getSpriteByAlias("duster"))
character():addSpriteToParty(getPlayerSprite(), getSpriteByAlias("boney"))
UnpauseSprite("lucas")
DirectSpriteToLocation("lucas", "near_bottom_first_ladder", PathfindingOptions.CARDINAL_DIRECTIONS_ONLY)
WaitForSpritePath("lucas")
DisableBehaviour("lucas")
PauseSprite("lucas")
SetAnimation("lucas", "frozen") -- so he doesn't blink
-- TODO: rest of scene
-- same as before but less justifiable because the only reason we're doing
-- this is to fix the movement trails
-- BreakUpParty("lucas")
-- SetMovementSpeed("lucas", 2)
-- character():addSpriteToParty(getPlayerSprite(), getSpriteByAlias("kuma"))
-- character():addSpriteToParty(getPlayerSprite(), getSpriteByAlias("duster"))
-- character():addSpriteToParty(getPlayerSprite(), getSpriteByAlias("boney"))
end
|