about summary refs log tree commit diff stats
path: root/data/maps/the_unyielding/rooms/Missing 2.txtpb
diff options
context:
space:
mode:
authorStar Rauchenberger <fefferburbia@gmail.com>2025-09-11 20:47:06 -0400
committerStar Rauchenberger <fefferburbia@gmail.com>2025-09-11 20:47:06 -0400
commit35d356c5ba9975a36d93d81c9d322d5089187b45 (patch)
tree51a451f9c77e5c4e40f0e6622bd54c7059c3ea9e /data/maps/the_unyielding/rooms/Missing 2.txtpb
parentfcfefe57d9d0b9d8eb3e149e68605103a9e6b490 (diff)
downloadlingo2-archipelago-35d356c5ba9975a36d93d81c9d322d5089187b45.tar.gz
lingo2-archipelago-35d356c5ba9975a36d93d81c9d322d5089187b45.tar.bz2
lingo2-archipelago-35d356c5ba9975a36d93d81c9d322d5089187b45.zip
[Data] Allow WALL solution to the_entry!OPEN
Diffstat (limited to 'data/maps/the_unyielding/rooms/Missing 2.txtpb')
0 files changed, 0 insertions, 0 deletions
d=1c995f2e6c589df9da28c5534c7128e1da64bb89'>^
eda9b23 ^
8227f9f ^

dd052d6 ^
8227f9f ^

dd052d6 ^
8227f9f ^

dd052d6 ^
8227f9f ^



dd052d6 ^
8227f9f ^


eda9b23 ^

8227f9f ^

eda9b23 ^




dbc28c8 ^






































































8b41e0c ^







dbc28c8 ^










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
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138




                                                



                                                    


                                                                                                                              
                            
                                        
   
 
                                           



                                            
                 

                                             
                                

                                                                    
                                

                                                                          
                                



                                                                                        
                                


                                                                                                                       

                       

                                                                     




                                       






































































                                                                                                          







                                                                                                                                              










                                                                                
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.talk_to_nana()
  if not gamestate.talked_to_nana_times then
    gamestate.talked_to_nana_times = 0
  end

  StartCutscene()

  if gamestate.talked_to_nana_times == 0 then
    SetAnimation("nana", "talk")
    DisplayMessage("* Don't talk to me.", "Nana", SpeakerType.WOMAN)
  elseif gamestate.talked_to_nana_times == 1 then
    SetAnimation("nana", "talk")
    DisplayMessage("* Go bother someone else.", "Nana", SpeakerType.WOMAN)
  elseif gamestate.talked_to_nana_times == 2 then
    SetAnimation("nana", "talk")
    DisplayMessage("* I only talked to you out of pity.", "Nana", SpeakerType.WOMAN)
  elseif gamestate.talked_to_nana_times >= 3 and gamestate.talked_to_nana_times < 6 then
    DisplayMessage("* ...", "Nana", SpeakerType.WOMAN)
  elseif gamestate.talked_to_nana_times >= 6 then
    SetAnimation("nana", "talk")
    DisplayMessage("* Shut up shut up shut up!\n\f* Can't you take a hint, you stupid boy?", "Nana", SpeakerType.WOMAN)
  end

  WaitForEndOfMessage()

  gamestate.talked_to_nana_times = gamestate.talked_to_nana_times + 1

  SetAnimation("nana", "still")
  SetDirection("nana", Direction.RIGHT)
  HideCutsceneBars()
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
  Delay(1000)

  DisplayMessage("* Lucas, you shouldn't have let me fall!\n\f* It's your fault I got hurt!\n\f* I can't get up...", "Claus", SpeakerType.MAN)
  WaitForEndOfMessage()

  DisplayMessage("* Help him up?", "", SpeakerType.NONE)
  ShowChoice("Yes", "No")
  WaitForEndOfMessage()

  -- 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