Winner's Path modifications

- Added a Strength Switch puzzle to floor 2, which took an unhealthy amount of time to do. This is possible in GSC but requires a lot of extremely hacky solutions. There is a glitch that causes the boulder not to move once on the switch if you reload the map but I have been doing this for 3-4 hours, shush.
- Added a depressed switch tile to accomodate the new functionality.
- New switch collision type for boulder puzzles.
- Removed a lot of unused/unreferenced stuff that isn't necessary in Crystal to save space.
This commit is contained in:
Llinos Evans 2024-07-19 11:48:04 +01:00
parent 980b8dc47a
commit 13a253073b
16 changed files with 108 additions and 48 deletions

View file

@ -1,9 +1,71 @@
object_const_def
const WINNERS_PATH_COOLTRAINERM1
const WINNERS_PATH_COOLTRAINERM2
const WINNERS_PATH_BEAUTY
const WINNERS_PATH_BOULDER1
const WINNERS_PATH_NPCITEM1
const WINNERS_PATH_NPCITEM2
const WINNERS_PATH_ROCK
WinnersPath_MapScripts:
def_scene_scripts
def_callbacks
callback MAPCALLBACK_TILES, WinnersPathSwitchClickCallback
callback MAPCALLBACK_CMDQUEUE, WinnersPathSwitchCallback
; This replicates the boulder switch functionality of RBY.
; Not sure why they removed this to be honest, it's quite nice.
; This is extremely hacky and the boulder won't move if you reload the map and put it back on the switch, but given there's no function for switches and I can't be bothered to make one, this will do.
WinnersPathSwitchCallback:
checkevent EVENT_WINNERS_PATH_SWITCH_PRESSED
iftrue .noBoulderNeeded
writecmdqueue .CommandQueue
.noBoulderNeeded
endcallback
.CommandQueue:
cmdqueue CMDQUEUE_STONETABLE, .StoneTable ; check if any stones are sitting on a warp (or in our case, the switch)
.StoneTable:
stonetable 7, WINNERS_PATH_BOULDER1, .Boulder1
db -1 ; end
.Boulder1:
checkevent EVENT_WINNERS_PATH_SWITCH_PRESSED
iftrue .skip
pause 30
scall .switchClicked
setevent EVENT_WINNERS_PATH_SWITCH_PRESSED
opentext
writetext WinnersPathDoorOpenedText
waitbutton
closetext
changeblock 2, 22, $1C ; boulder gate
changeblock 4, 24, $59 ; switch
reloadmappart
delcmdqueue CMDQUEUE_STONETABLE, .StoneTable
; fallthrough
.skip
end
.switchClicked:
playsound SFX_STRENGTH
earthquake 80
end
WinnersPathSwitchClickCallback:
checkevent EVENT_WINNERS_PATH_SWITCH_PRESSED
iffalse .keepBlock
changeblock 2, 22, $1C ; boulder gate
changeblock 4, 24, $59 ; switch
.keepBlock
endcallback
WinnersPathDoorOpenedText:
text "The switch was"
line "pressed!"
done
WinnersPathSign1Script:
jumptext WinnersPathSign1Text
@ -119,16 +181,29 @@ BeautyJaclynAfterBattleText:
line "CHAMPIONs! Eek!"
done
WinnersPathBoulder:
jumpstd StrengthBoulderScript
WinnersPathRock:
jumpstd SmashRockScript
WinnersPathItem1:
itemball TM_CURSE
WinnersPathItem2:
itemball TM_ROLLOUT
WinnersPath_MapEvents:
db 0, 0 ; filler
def_warp_events
warp_event 3, 49, WINNERS_PATH_OUTSIDE, 3
warp_event 17, 39, WINNERS_PATH, 3
warp_event 17, 29, WINNERS_PATH, 2
warp_event 15, 29, WINNERS_PATH, 2
warp_event 3, 21, WINNERS_PATH, 5
warp_event 3, 11, WINNERS_PATH, 4
warp_event 17, 5, WINNERS_PATH_OUTSIDE, 4 ; Some Route...
warp_event 5, 24, WINNERS_PATH_OUTSIDE, 4 ; Dummy warp for the switch. Hope this works!
def_coord_events
@ -138,5 +213,9 @@ WinnersPath_MapEvents:
def_object_events
object_event 9, 43, SPRITE_COOLTRAINER_M, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, 0, OBJECTTYPE_TRAINER, 2, TrainerCoolTrainerErick, -1
object_event 5, 22, SPRITE_COOLTRAINER_M, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, OBJECTTYPE_TRAINER, 2, TrainerCoolTrainerAndy, -1
object_event 8, 22, SPRITE_COOLTRAINER_M, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, OBJECTTYPE_TRAINER, 2, TrainerCoolTrainerAndy, -1
object_event 7, 8, SPRITE_BEAUTY, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, 0, OBJECTTYPE_TRAINER, 2, TrainerBeautyJaclyn, -1
object_event 14, 23, SPRITE_BOULDER, SPRITEMOVEDATA_STRENGTH_BOULDER, 0, 0, -1, -1, 0, OBJECTTYPE_SCRIPT, 0, WinnersPathBoulder, -1
object_event 10, 6, SPRITE_POKE_BALL, SPRITEMOVEDATA_STILL, 0, 0, -1, -1, 0, OBJECTTYPE_ITEMBALL, 0, WinnersPathItem1, EVENT_WINNERS_PATH_ITEM1
object_event 2, 29, SPRITE_POKE_BALL, SPRITEMOVEDATA_STILL, 0, 0, -1, -1, 0, OBJECTTYPE_ITEMBALL, 0, WinnersPathItem2, EVENT_WINNERS_PATH_ITEM2
object_event 3, 28, SPRITE_ROCK, SPRITEMOVEDATA_SMASHABLE_ROCK, 0, 0, -1, -1, 0, OBJECTTYPE_SCRIPT, 0, WinnersPathRock, -1