pokeemerald/data/scripts/apprentice.inc

250 lines
8.0 KiB
PHP

.set LOCALID_APPRENTICE, 6
BattleFrontier_BattleTowerLobby_EventScript_Apprentice::
lock
faceplayer
apprentice_gavelvlmode
goto_if_eq VAR_RESULT, FALSE, Apprentice_EventScript_FirstMeeting
apprentice_shouldcheckgone
goto_if_eq VAR_0x8004, FALSE, Apprentice_EventScript_AskQuestion @ VAR_0x8004 always TRUE here
goto_if_set FLAG_DAILY_APPRENTICE_LEAVES, Apprentice_EventScript_Gone
Apprentice_EventScript_AskQuestion:
apprentice_getquestion
goto_if_eq VAR_RESULT, APPRENTICE_QUESTION_WHICH_MON, Apprentice_EventScript_UseWhichMon
goto_if_eq VAR_RESULT, APPRENTICE_QUESTION_WHAT_ITEM, Apprentice_EventScript_UseWhatHeldItem
goto_if_eq VAR_RESULT, APPRENTICE_QUESTION_WHICH_MOVE, Apprentice_EventScript_UseWhichMove
goto_if_eq VAR_RESULT, APPRENTICE_QUESTION_WHICH_FIRST, Apprentice_EventScript_PutWhichMonFirst
goto_if_eq VAR_RESULT, APPRENTICE_QUESTION_WIN_SPEECH, Apprentice_EventScript_PickWinSpeech
release
releaseall
end
Apprentice_EventScript_FirstMeeting:
apprentice_buff STR_VAR_1, APPRENTICE_BUFF_NAME
apprentice_msg FALSE, APPRENTICE_MSG_PLEASE_TEACH
Apprentice_EventScript_WhichLvlMode:
apprentice_menu APPRENTICE_ASK_YES_NO
goto_if_eq VAR_RESULT, 1, Apprentice_EventScript_RejectTeach
apprentice_msg FALSE, APPRENTICE_MSG_WHICH_LVL_MODE
apprentice_menu APPRENTICE_ASK_WHICH_LEVEL
apprentice_setlvlmode VAR_RESULT
apprentice_shufflespecies
apprentice_buff STR_VAR_1, APPRENTICE_BUFF_LEVEL
apprentice_msg TRUE, APPRENTICE_MSG_THANKS_LVL_MODE
call Apprentice_EventScript_SetHideFlags
release
releaseall
switch VAR_FACING
case DIR_NORTH, Apprentice_EventScript_LeaveNorth
goto Apprentice_EventScript_Leave
end
@ Its impossible to fully reject an Apprentice, they just keep asking for you to teach them
Apprentice_EventScript_RejectTeach:
apprentice_msg FALSE, APPRENTICE_MSG_REJECT
goto Apprentice_EventScript_WhichLvlMode
Apprentice_EventScript_UseWhichMon:
apprentice_initquestion APPRENTICE_QUESTION_WHICH_MON
apprentice_buff STR_VAR_1, APPRENTICE_BUFF_SPECIES1
apprentice_buff STR_VAR_2, APPRENTICE_BUFF_SPECIES2
apprentice_msg FALSE, APPRENTICE_MSG_WHICH_MON
apprentice_menu APPRENTICE_ASK_2SPECIES
copyvar VAR_0x8005, VAR_RESULT
call_if_eq VAR_0x8005, 0, Apprentice_EventScript_ChoseFirstMon
call_if_eq VAR_0x8005, 1, Apprentice_EventScript_ChoseSecondMon
apprentice_getnumpartymons
apprentice_setpartymon VAR_RESULT
apprentice_answeredquestion
apprentice_getnumpartymons
call_if_eq VAR_RESULT, MULTI_PARTY_SIZE, Apprentice_EventScript_LastMonSelected
apprentice_buff STR_VAR_1, VAR_0x8007
apprentice_freequestion
apprentice_msg TRUE, APPRENTICE_MSG_THANKS_MON
call Apprentice_EventScript_SetHideFlags
release
releaseall
switch VAR_FACING
case DIR_NORTH, Apprentice_EventScript_LeaveNorth
goto Apprentice_EventScript_Leave
end
Apprentice_EventScript_ChoseFirstMon:
setvar VAR_0x8007, APPRENTICE_BUFF_SPECIES1
return
Apprentice_EventScript_ChoseSecondMon:
setvar VAR_0x8007, APPRENTICE_BUFF_SPECIES2
return
Apprentice_EventScript_LastMonSelected:
apprentice_randomizequestions
return
Apprentice_EventScript_UseWhatHeldItem:
apprentice_initquestion APPRENTICE_QUESTION_WHAT_ITEM
apprentice_buff STR_VAR_1, APPRENTICE_BUFF_SPECIES3
apprentice_msg TRUE, APPRENTICE_MSG_WHAT_HELD_ITEM
apprentice_freequestion
Apprentice_EventScript_ChooseHoldItem:
fadescreen FADE_TO_BLACK
setvar VAR_RESULT, 0
apprentice_openbag
goto_if_eq VAR_RESULT, FALSE, Apprentice_EventScript_ConfirmHoldNothing
apprentice_trysetitem
goto_if_eq VAR_RESULT, FALSE, Apprentice_EventScript_AlreadySuggestedItem
apprentice_buff STR_VAR_1, APPRENTICE_BUFF_ITEM
apprentice_msg TRUE, APPRENTICE_MSG_THANKS_HELD_ITEM
apprentice_answeredquestion
call Apprentice_EventScript_SetHideFlags
release
releaseall
switch VAR_FACING
case DIR_NORTH, Apprentice_EventScript_LeaveNorth
goto Apprentice_EventScript_Leave
end
Apprentice_EventScript_ConfirmHoldNothing:
apprentice_initquestion APPRENTICE_QUESTION_WHAT_ITEM
apprentice_buff STR_VAR_1, APPRENTICE_BUFF_SPECIES3
apprentice_msg FALSE, APPRENTICE_MSG_HOLD_NOTHING
apprentice_menu APPRENTICE_ASK_GIVE
apprentice_freequestion
goto_if_eq VAR_RESULT, 0, Apprentice_EventScript_ChooseHoldItem
Apprentice_EventScript_HoldNothing:
apprentice_msg TRUE, APPRENTICE_MSG_THANKS_NO_HELD_ITEM
apprentice_answeredquestion
call Apprentice_EventScript_SetHideFlags
release
releaseall
switch VAR_FACING
case DIR_NORTH, Apprentice_EventScript_LeaveNorth
goto Apprentice_EventScript_Leave
end
@ Because Battle Tower mons may not hold the same item, the player must suggest a
@ different item if theyve already told the Apprentice to use it for another mon
Apprentice_EventScript_AlreadySuggestedItem:
apprentice_initquestion APPRENTICE_QUESTION_WHAT_ITEM
apprentice_buff STR_VAR_1, APPRENTICE_BUFF_ITEM
apprentice_buff STR_VAR_2, APPRENTICE_BUFF_SPECIES3
apprentice_msg FALSE, APPRENTICE_MSG_ITEM_ALREADY_SUGGESTED
apprentice_menu APPRENTICE_ASK_GIVE
apprentice_freequestion
goto_if_eq VAR_RESULT, 0, Apprentice_EventScript_ChooseHoldItem
goto Apprentice_EventScript_HoldNothing
end
Apprentice_EventScript_UseWhichMove:
apprentice_initquestion APPRENTICE_QUESTION_WHICH_MOVE
apprentice_buff STR_VAR_1, APPRENTICE_BUFF_SPECIES3
apprentice_buff STR_VAR_2, APPRENTICE_BUFF_MOVE1
apprentice_buff STR_VAR_3, APPRENTICE_BUFF_MOVE2
apprentice_msg FALSE, APPRENTICE_MSG_WHICH_MOVE
apprentice_menu APPRENTICE_ASK_MOVES
copyvar VAR_0x8005, VAR_RESULT
call_if_eq VAR_0x8005, 0, Apprentice_EventScript_ChoseMove1
call_if_eq VAR_0x8005, 1, Apprentice_EventScript_ChoseMove2
apprentice_setmove
apprentice_answeredquestion
apprentice_buff STR_VAR_1, VAR_0x8007
apprentice_freequestion
apprentice_msg TRUE, APPRENTICE_MSG_THANKS_MOVE
call Apprentice_EventScript_SetHideFlags
release
releaseall
switch VAR_FACING
case DIR_NORTH, Apprentice_EventScript_LeaveNorth
goto Apprentice_EventScript_Leave
end
Apprentice_EventScript_ChoseMove1:
setvar VAR_0x8007, APPRENTICE_BUFF_MOVE1
return
Apprentice_EventScript_ChoseMove2:
setvar VAR_0x8007, APPRENTICE_BUFF_MOVE2
return
Apprentice_EventScript_PutWhichMonFirst:
apprentice_msg FALSE, APPRENTICE_MSG_WHICH_MON_FIRST
apprentice_menu APPRENTICE_ASK_3SPECIES
apprentice_setleadmon VAR_RESULT
apprentice_answeredquestion
apprentice_buff STR_VAR_1, APPRENTICE_BUFF_LEAD_MON_SPECIES
apprentice_msg TRUE, APPRENTICE_MSG_THANKS_MON_FIRST
call Apprentice_EventScript_SetHideFlags
release
releaseall
switch VAR_FACING
case DIR_NORTH, Apprentice_EventScript_LeaveNorth
goto Apprentice_EventScript_Leave
end
@ Last question, after which the Apprentice leaves (and is saved) to be replaced by another
Apprentice_EventScript_PickWinSpeech:
apprentice_msg TRUE, APPRENTICE_MSG_PICK_WIN_SPEECH
apprentice_shiftsaved
setvar VAR_0x8004, EASY_CHAT_TYPE_APPRENTICE
call Common_ShowEasyChatScreen
lock
faceplayer
apprentice_save
apprentice_buff STR_VAR_1, APPRENTICE_BUFF_WIN_SPEECH
apprentice_msg TRUE, APPRENTICE_MSG_THANKS_WIN_SPEECH
apprentice_reset
call Apprentice_EventScript_SetHideFlags
release
releaseall
switch VAR_FACING
case DIR_NORTH, Apprentice_EventScript_LeaveNorth
goto Apprentice_EventScript_Leave
end
Apprentice_EventScript_SetHideFlags:
setflag FLAG_HIDE_APPRENTICE
setflag FLAG_DAILY_APPRENTICE_LEAVES
return
Apprentice_EventScript_LeaveNorth:
apprentice_shouldleave
goto_if_eq VAR_0x8004, FALSE, Apprentice_EventScript_DontMove @ VAR_0x8004 always TRUE here
applymovement LOCALID_APPRENTICE, Apprentice_Movement_LeaveNorth
waitmovement 0
end
Apprentice_EventScript_Leave:
apprentice_shouldleave
goto_if_eq VAR_0x8004, FALSE, Apprentice_EventScript_DontMove @ VAR_0x8004 always TRUE here
applymovement LOCALID_APPRENTICE, Apprentice_Movement_Leave
waitmovement 0
end
Apprentice_EventScript_Gone:
release
releaseall
end
Apprentice_EventScript_DontMove:
end
Apprentice_Movement_LeaveNorth:
walk_fast_right
Apprentice_Movement_Leave:
walk_fast_down
walk_fast_down
walk_fast_right
walk_fast_right
walk_fast_right
walk_fast_right
walk_fast_right
walk_fast_right
walk_fast_right
walk_fast_right
walk_fast_right
set_invisible
slide_down
slide_down
slide_down
step_end