Improved Repel / Lure Menu (#3594)

* First draft of repel lure

* Updated all lure and repel scripts

* Optimized inc file

* Updated y coord

* optimized sprays.c

* Removed spray.inc

* Updated cosnt use

* Removed dead repel and lure code

* Updated debug for testing

* testing new inc file

* turn on debug and options

* playground generated inc file without ifs

* pory generated inc with ifdef complete

* Updated spray.c with new inc

* reverted item config

* Reverted event scripts

* Reverted event scripts

* Revert config

* Added testing scripts for debug

* Added back specials

* reverted debug scripts

* Updated use of constants

* Addressed tabs > spaces feedback
https://github.com/rh-hideout/pokeemerald-expansion/pull/3594\#discussion_r1402917676

* Updated constant names to avoid confusion
Made inc file changes
https://github.com/rh-hideout/pokeemerald-expansion/pull/3594\#pullrequestreview-1746418044

* Updated constant name of NUM_SPRAY_TYPES to NUM_SPRAY_STRENGTH to be more accurate
This commit is contained in:
psf
2023-11-23 12:31:33 -08:00
committed by GitHub
parent d6ded280a3
commit 8d6cb9692a
6 changed files with 257 additions and 175 deletions

View File

@@ -1,117 +1,152 @@
EventScript_RepelWoreOff::
.set LOCAL_VAR_SPRAY, VAR_0x8004
.set LOCAL_VAR_NUM_SPRAY_STRENGTH, VAR_0x8005
.set LOCAL_VAR_SPRAY_TYPE, VAR_0x8009
.set LOCAL_VAR_NEW_SPRAY, VAR_0x8007
EventScript_BufferSprayName::
.if VAR_LAST_REPEL_LURE_USED != 0
bufferitemname STR_VAR_1, VAR_LAST_REPEL_LURE_USED
return
.endif
specialvar LOCAL_VAR_SPRAY_TYPE, GetLastUsedSprayType
compare LOCAL_VAR_SPRAY_TYPE, ITEM_REPEL
goto_if_eq EventScript_BufferSprayName_2
bufferitemname STR_VAR_1, ITEM_LURE
EventScript_BufferSprayName_1:
return
EventScript_BufferSprayName_2:
bufferitemname STR_VAR_1, ITEM_REPEL
goto EventScript_BufferSprayName_1
EventScript_SprayWoreOff::
lock
call EventScript_BufferSprayName
specialvar LOCAL_VAR_NUM_SPRAY_STRENGTH, GetNumberSprayStrength
switch LOCAL_VAR_NUM_SPRAY_STRENGTH
case 0, EventScript_SprayWoreOffMessage
case 1, EventScript_UseSingleSpray
goto EventScript_HandleMultipleSprays
return
EventScript_HandleMultipleSprays::
.if I_REPEL_LURE_MENU == TRUE
checkitem ITEM_REPEL, 1
goto_if_eq VAR_RESULT, TRUE, EventScript_RepelUseAnother
checkitem ITEM_SUPER_REPEL, 1
goto_if_eq VAR_RESULT, TRUE, EventScript_RepelUseAnother
checkitem ITEM_MAX_REPEL, 1
goto_if_eq VAR_RESULT, TRUE, EventScript_RepelUseAnother
goto EventScript_ChooseWhichSpray
.else
goto EventScript_UseSingleSpray
.endif
return
EventScript_SprayWoreOffMessage::
msgbox Text_SprayWoreOff, MSGBOX_SIGN
releaseall
end
EventScript_UseSingleSpray::
.if VAR_LAST_REPEL_LURE_USED == 0
call EventScript_UseDifferentSpray
.else
checkitem VAR_LAST_REPEL_LURE_USED, 1
goto_if_eq VAR_RESULT, TRUE, EventScript_RepelUseAnother
compare VAR_RESULT, TRUE
goto_if_eq EventScript_UseSingleSpray_2
call EventScript_UseDifferentSpray
.endif
lock
msgbox Text_RepelWoreOff, MSGBOX_SIGN
release
EventScript_UseSingleSpray_1:
closemessage
releaseall
end
EventScript_RepelUseAnother:
lock
msgbox Text_UseAnotherRepel, MSGBOX_YESNO
.if VAR_LAST_REPEL_LURE_USED != 0
EventScript_UseSingleSpray_2:
call EventScript_UseLastUsedSpray
goto EventScript_UseSingleSpray_1
.endif
EventScript_SetSingleSprayAndUse::
setvar VAR_RESULT, 0
call EventScript_UseSpray
return
EventScript_UseDifferentSpray::
specialvar LOCAL_VAR_NEW_SPRAY, GetSprayId
bufferitemname STR_VAR_2, LOCAL_VAR_NEW_SPRAY
msgbox Text_SprayWoreOffAskUseX, MSGBOX_YESNO
compare VAR_RESULT, YES
goto_if_eq EventScript_UseDifferentSpray_2
EventScript_UseDifferentSpray_1:
return
EventScript_UseDifferentSpray_2:
copyvar LOCAL_VAR_SPRAY, LOCAL_VAR_NEW_SPRAY
call EventScript_SetSingleSprayAndUse
goto EventScript_UseDifferentSpray_1
.if VAR_LAST_REPEL_LURE_USED != 0
EventScript_UseLastUsedSpray::
msgbox Text_SprayWoreOffAskUseAnother, MSGBOX_YESNO
compare VAR_RESULT, YES
goto_if_eq EventScript_UseLastUsedSpray_2
EventScript_UseLastUsedSpray_1:
return
EventScript_UseLastUsedSpray_2:
copyvar LOCAL_VAR_SPRAY, VAR_LAST_REPEL_LURE_USED
call EventScript_SetSingleSprayAndUse
goto EventScript_UseLastUsedSpray_1
.endif
.if I_REPEL_LURE_MENU == TRUE
goto_if_eq VAR_RESULT, NO, EventScript_RepelWoreOff_End
callnative TryDrawRepelMenu
goto_if_eq VAR_RESULT, FALSE, EventScript_RepelWoreOff_Chose
EventScript_ChooseWhichSpray::
message Text_SprayWoreOffAskUseAnother
waitmessage
callnative DrawSprayMenu
waitstate
goto_if_eq VAR_RESULT, 127, EventScript_RepelWoreOff_End
EventScript_RepelWoreOff_Chose:
callnative HandleRepelMenuChoice
bufferitemname 1, VAR_0x8004
removeitem VAR_0x8004, 1
playse SE_REPEL
msgbox Text_UsedNewRepelLure, MSGBOX_SIGN
.else
goto_if_eq VAR_RESULT, YES, EventScript_UsedRepel
.endif
EventScript_RepelWoreOff_End:
release
compare VAR_RESULT, MULTI_B_PRESSED
goto_if_ne EventScript_ChooseWhichSpray_3
EventScript_ChooseWhichSpray_1:
closemessage
releaseall
end
EventScript_UsedRepel:
bufferitemname 1, VAR_LAST_REPEL_LURE_USED
EventScript_ChooseWhichSpray_2:
call EventScript_UseSpray
goto EventScript_ChooseWhichSpray_1
EventScript_ChooseWhichSpray_3:
compare VAR_RESULT, VAR_0x8003
goto_if_ne EventScript_ChooseWhichSpray_2
goto EventScript_ChooseWhichSpray_1
.endif
EventScript_UseSpray::
playse SE_REPEL
lock
msgbox Text_UsedNewRepelLure, MSGBOX_SIGN
removeitem VAR_LAST_REPEL_LURE_USED, 1
waitse
callnative HandleUseExpiredRepel
release
end
callnative HandleSprayMenuChoice
removeitem LOCAL_VAR_SPRAY, 1
bufferitemname STR_VAR_2, LOCAL_VAR_SPRAY
msgbox Text_SprayWoreOffUseX, MSGBOX_SIGN
return
EventScript_LureWoreOff::
.if I_REPEL_LURE_MENU == TRUE
checkitem ITEM_LURE, 1
goto_if_eq VAR_RESULT, TRUE, EventScript_LureUseAnother
checkitem ITEM_SUPER_LURE, 1
goto_if_eq VAR_RESULT, TRUE, EventScript_LureUseAnother
checkitem ITEM_MAX_LURE, 1
goto_if_eq VAR_RESULT, TRUE, EventScript_LureUseAnother
.else
checkitem VAR_LAST_REPEL_LURE_USED, 1
goto_if_eq VAR_RESULT, TRUE, EventScript_LureUseAnother
.endif
lock
msgbox Text_LureWoreOff, MSGBOX_SIGN
release
end
EventScript_LureUseAnother:
lock
msgbox Text_UseAnotherLure, MSGBOX_YESNO
.if I_REPEL_LURE_MENU == TRUE
goto_if_eq VAR_RESULT, NO, EventScript_LureWoreOff_End
callnative TryDrawLureMenu
goto_if_eq VAR_RESULT, FALSE, EventScript_LureWoreOff_Chose
waitstate
goto_if_eq VAR_RESULT, 127, EventScript_LureWoreOff_End
EventScript_LureWoreOff_Chose:
callnative HandleLureMenuChoice
bufferitemname 1, VAR_0x8004
removeitem VAR_0x8004, 1
playse SE_REPEL
msgbox Text_UsedNewRepelLure, MSGBOX_SIGN
.else
goto_if_eq VAR_RESULT, YES, EventScript_UsedLure
.endif
EventScript_LureWoreOff_End:
release
end
Text_SprayWoreOff::
.string "{STR_VAR_1}'s effect wore off…$"
EventScript_UsedLure:
bufferitemname 1, VAR_LAST_REPEL_LURE_USED
playse SE_REPEL
lock
msgbox Text_UsedNewRepelLure, MSGBOX_SIGN
removeitem VAR_LAST_REPEL_LURE_USED, 1
waitse
callnative HandleUseExpiredLure
release
end
Text_RepelWoreOff:
.string "REPEL's effect wore off…$"
Text_UseAnotherRepel::
.string "REPEL's effect wore off!\n"
Text_SprayWoreOffAskUseAnother::
.string "{STR_VAR_1}'s effect wore off!\n"
.string "Use another?$"
Text_LureWoreOff:
.string "Lure's effect wore off…$"
Text_SprayWoreOffAskUseX::
.string "{STR_VAR_1}'s effect wore off…\n"
.string "Use a {STR_VAR_2}?$"
Text_UseAnotherLure::
.string "Lure's effect wore off!\n"
.string "Use another?$"
Text_UsedNewRepelLure::
Text_SprayWoreOffUseX::
.string "{PLAYER} used the\n"
.string "{STR_VAR_2}.$"