Finished Stevens event. Added Fast walking

This commit is contained in:
Suppai_Neko committed 2023-04-09 18:51:33 -07:00
commit 552fe79762
28 files changed
+489 -67

No files matched your search

+16
View File
@@ -732,6 +732,12 @@
.elseif \type == TRAINER_BATTLE_HILL
.4byte \pointer1 @ text
.4byte \pointer2 @ text
.elseif \type == TRAINER_BATTLE_NO_WHITEOUT_CONTINUE_SCRIPT
.4byte \pointer1 @ text
.4byte \pointer2 @ text
.4byte \pointer3 @ event script
.elseif \type == TRAINER_BATTLE_NO_INTRO_NO_WHITEOUT
.4byte \pointer1 @ text
.endif
.endm
@@ -776,6 +782,16 @@
trainerbattle TRAINER_BATTLE_SINGLE_NO_INTRO_TEXT, \trainer, 0, \lose_text
.endm
@ Starts a single trainer battle. Takes a trainer, intro text, loss text, and an event script which continues after the battle,regardless of the result.
@ When used with an event script, you can also pass in an optional flag to disable music
.macro trainerbattle_no_whiteout_continue_script trainer:req, intro_text:req, lose_text:req, event_script:req
trainerbattle TRAINER_BATTLE_NO_WHITEOUT_CONTINUE_SCRIPT, \trainer, 0, \intro_text, \lose_text, \event_script
.endm
@ Starts a trainer battle, skipping intro text. Takes a trainer and loss text. Does not warp the player to last heal location if they lose.
.macro trainerbattle_no_intro_no_whiteout trainer:req, lose_text:req
trainerbattle TRAINER_BATTLE_NO_INTRO_NO_WHITEOUT, \trainer, 0, \lose_text
.endm
@ Starts a trainer battle using the battle information stored in RAM (usually by the scripts in trainer_battle.inc, which
@ are run by trainerbattle), and blocks script execution until the battle finishes.
+8
View File
@@ -6,6 +6,7 @@
#include "constants/battle_arena.h"
#include "constants/battle_script_commands.h"
#include "constants/battle_anim.h"
#include "constants/battle_setup.h"
#include "constants/battle_string_ids.h"
#include "constants/abilities.h"
#include "constants/hold_effects.h"
@@ -6554,12 +6555,19 @@ BattleScript_LocalBattleLostEnd::
.else
printstring STRINGID_PLAYERWHITEOUT
waitmessage B_WAIT_TIME_LONG
jumpifhalfword CMP_EQUAL, gTrainerBattleMode, TRAINER_BATTLE_NO_WHITEOUT_CONTINUE_SCRIPT, BattleScript_LocalBattleLostPrintNoWhiteout
jumpifhalfword CMP_EQUAL, gTrainerBattleMode, TRAINER_BATTLE_NO_INTRO_NO_WHITEOUT, BattleScript_LocalBattleLostPrintNoWhiteout
printstring STRINGID_PLAYERWHITEOUT2
waitmessage B_WAIT_TIME_LONG
BattleScript_LocalBattleLostEnd::
end2
.endif
BattleScript_LocalBattleLostPrintNoWhiteout::
printstring STRINGID_PLAYERWHITEOUT3
waitmessage B_WAIT_TIME_LONG
end2
BattleScript_CheckDomeDrew::
jumpifbyte CMP_EQUAL, gBattleOutcome, B_OUTCOME_DREW, BattleScript_LocalBattleLostEnd_
BattleScript_LocalBattleLostPrintTrainersWinText::
+2
View File
@@ -1084,3 +1084,5 @@ Common_EventScript_LegendaryFlewAway::
.include "data/maps/GraniteCave_B3F/scripts.inc"
.include "data/maps/GraniteCave_B4F/scripts.inc"
.include "data/maps/GraniteCave_B4FNorth/scripts.inc"
+4 -4
View File
@@ -1,5 +1,5 @@
222222222BBBBBBBBBBBB222BBBB22222BBB22BBBBB2222222'22222BBB222BBB22222222222222BBB22BBB22222!B!B!B!B!B!B!B!B!B!BBBB222BBB222222!!
BBBBBLRR222BBB22222RROBBBBB222BBB222222BBBBBBBB22B22222BB222BBB!B
222222BB2222VW2B?BBB2!B!B!B
2BB2222VW2BBBBBBB2B?BB2BB2222VW2BBBBBB2BB22222BB222222BB2222222B2222222222222222222B2222222222222222222!!!22!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B"22!!!222B>BBBBBBBBBBB22222BBBBBBBBBBBB'2222222222222222"22222222"""""""""""""222222222""""""""""""22222222"""""""""""22222222"'"""""""""""2!2!2
RRRRRRRR?RBBBBBBBBBBBBRRRBBBB22222BBBRRBBBBB2222222'22222BBBRRRBBB22222222222222BBBRRBBB22222!B!B!B!B!B!B!B!B!B!BBBBRRRBBB222222!!
BBBBBLRRRRRBBB22222RROBBBBBRRRBBB222222BBBBBBBBRRB22222BBRRRBBB!B
222222BB2222VW2B?BBB2!B!B!B
2BB2222VW2BBBBBBB2B?BB2BB2222VW2BBBBBB2BB22222BB222222BB2222222B2222222222222222222B2222222222222222222!!!22!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B"22!!!222B>BBBBBBBBBBB22222BBBBBBBBBBBB'22222222222222"2'222222"""""""""""""222222222""""""""""""22222222"""""""""""22222222"'"""""""""""2!2!2
2222"""""""""""222222"""""""Y""!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+1 -1
View File
@@ -1 +1 @@
�����2<2�����<222�����2P<22�����2<22>2�����<22<2<2�����2>22�����222<2�����22<2�B�B�B�B�Bf2<�B�B�B�B�B<2                                       
�����22�����222�����2P22�����222>2�����2222�����2>22�����2222�����222�B�B�B�B�Bf2�B�B�B�B�B2                                       
@@ -0,0 +1 @@

@@ -0,0 +1,4 @@
2222222222222222222222222222222222 B B
2222 B
22BB2222B B
2BB2222BB2BB2222B B B BBB2222BBBBBB'2222222=222222222222222222222222222222222             2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
+10
View File
@@ -4530,6 +4530,16 @@
"secondary_tileset": "gTileset_Cave",
"border_filepath": "data/layouts/GraniteCave_B4F/border.bin",
"blockdata_filepath": "data/layouts/GraniteCave_B4F/map.bin"
},
{
"id": "LAYOUT_GRANITE_CAVE_B4FNORTH",
"name": "GraniteCave_B4FNorth_Layout",
"width": 15,
"height": 15,
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_Cave",
"border_filepath": "data/layouts/GraniteCave_B4FNorth/border.bin",
"blockdata_filepath": "data/layouts/GraniteCave_B4FNorth/map.bin"
}
]
}
+49 -2
View File
@@ -64,7 +64,7 @@
"trainer_type": "TRAINER_TYPE_NONE",
"trainer_sight_or_berry_tree_id": "0",
"script": "NULL",
"flag": "0"
"flag": "FLAG_STEVENS_CAVE_AGRON"
},
{
"graphics_id": "OBJ_EVENT_GFX_LAIRON",
@@ -77,7 +77,7 @@
"trainer_type": "TRAINER_TYPE_NONE",
"trainer_sight_or_berry_tree_id": "0",
"script": "NULL",
"flag": "0"
"flag": "FLAG_STEVENS_CAVE_AGRON"
},
{
"graphics_id": "OBJ_EVENT_GFX_ARON",
@@ -104,6 +104,19 @@
"trainer_sight_or_berry_tree_id": "0",
"script": "EventScript_StrengthBoulder",
"flag": "FLAG_TEMP_11"
},
{
"graphics_id": "OBJ_EVENT_GFX_PUSHABLE_BOULDER",
"x": 2,
"y": 11,
"elevation": 0,
"movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
"movement_range_x": 0,
"movement_range_y": 0,
"trainer_type": "TRAINER_TYPE_NONE",
"trainer_sight_or_berry_tree_id": "0",
"script": "EventScript_StrengthBoulder",
"flag": "FLAG_TEMP_12"
}
],
"warp_events": [
@@ -134,6 +147,13 @@
"elevation": 0,
"dest_map": "MAP_GRANITE_CAVE_B3F",
"dest_warp_id": "0"
},
{
"x": 5,
"y": 2,
"elevation": 0,
"dest_map": "MAP_GRANITE_CAVE_B3F",
"dest_warp_id": "0"
}
],
"coord_events": [
@@ -145,6 +165,33 @@
"var": "VAR_GRANITECAVE_AGGRON",
"var_value": "1",
"script": "GraniteCave_B3F_EventScript_Agron"
},
{
"type": "trigger",
"x": 5,
"y": 22,
"elevation": 0,
"var": "VAR_GRANITECAVE_AGGRON",
"var_value": "0",
"script": "GraniteCave_B3F_EventScript_CheckOnSteven"
},
{
"type": "trigger",
"x": 16,
"y": 23,
"elevation": 0,
"var": "VAR_GRANITECAVE_AGGRON",
"var_value": "0",
"script": "GraniteCave_B3F_EventScript_WhatDidHeFind"
},
{
"type": "trigger",
"x": 15,
"y": 20,
"elevation": 0,
"var": "VAR_GRANITECAVE_AGGRON",
"var_value": "3",
"script": "GraniteCave_B3F_EventScript_CompletedScript"
}
],
"bg_events": [
+145 -13
View File
@@ -3,15 +3,48 @@ GraniteCave_B3F_MapScripts::
//map_script MAP_SCRIPT_ON_TRANSITION, GraniteCave_B3F_OnTransition
.byte 0
GraniteCave_B3F_EventScript_CheckOnSteven::
msgbox GraniteCave_B3F_Text_CheckOnSteven, MSGBOX_NPC
applymovement OBJ_EVENT_ID_PLAYER, GraniteCave_B3F_Movement_WalkDown
end
GraniteCave_B3F_EventScript_WhatDidHeFind::
msgbox GraniteCave_B3F_Text_WhatDidHeFind, MSGBOX_NPC
applymovement OBJ_EVENT_ID_PLAYER, GraniteCave_B3F_Movement_WalkDown
end
GraniteCave_B3F_Text_WhatDidHeFind:
.string "I should see what STEVEN found$"
GraniteCave_B3F_Text_CheckOnSteven:
.string "STEVEN: Just a second, we should come up\n"
.string "with a plan.$"
GraniteCave_B3F_Movement_WalkDown:
walk_down
step_end
GraniteCave_B3F_Fell::
goto_if_unset FLAG_STEVENS_CAVE_DUGDEEPER, GraniteCave_B3F_EventScript_DugDeeper
goto_if_eq VAR_GRANITECAVE_AGGRON, 0, GraniteCave_B3F_EventScript_StayAndStudy
goto_if_eq VAR_GRANITECAVE_AGGRON, 9, GraniteCave_B3F_EventScript_StayAndStudy
goto_if_eq VAR_GRANITECAVE_AGGRON, 3, GraniteCave_B3F_Exit
msgbox GraniteCave_B3F_Text_FindAnything, MSGBOX_NPC
end
GraniteCave_B3F_Exit::
msgbox GraniteCave_B3F_Text_ExitThatWay, MSGBOX_NPC
end
GraniteCave_B3F_Movement_LookUp:
face_up
step_end
GraniteCave_B3F_Movement_LookRight:
face_right
step_end
GraniteCave_B3F_Text_FindAnything:
.string "I haven't found anything yet...\n"
.string "If I do, I will find you.$"
@@ -24,7 +57,9 @@ GraniteCave_B3F_Text_DugDeeper:
.string "Well this is unexpected. We've seen to\n"
.string "gone even deeper into this cave.\p"
.string "At least there seems to be a path to\n"
.string "continue moving on.\p"
.string "continue moving forward.\p"
.string "I wonder what could have caused that\n"
.string "earthquake.\p"
.string "I am going to explore this section with\n"
.string "Baltoy and see if we can find any other\l"
.string "path back up.\p"
@@ -41,8 +76,6 @@ GraniteCave_B3F_EventScript_DugDeeper::
waitse
msgbox GraniteCave_B3F_Text_DugDeeper, MSGBOX_NPC
setvar VAR_GRANITECAVE_AGGRON, 1
givemon SPECIES_MUDKIP, 25, ITEM_NONE
animateflash 1
end
GraniteCave_B3F_Trigger_Agron::
@@ -99,7 +132,9 @@ GraniteCave_B3F_Movement_StevenRun:
face_left
delay_16
lock_facing_direction
delay_16
walk_right
unlock_facing_direction
step_end
GraniteCave_B3F_Movement_FaceDown:
@@ -115,7 +150,7 @@ GraniteCave_B3F_Text_AggronAttack:
.string "STEVEN: I'll deal with this one!$"
GraniteCave_B3F_Text_LaironAttack:
.string "LARION charges$"
.string "LARION charges!$"
GraniteCave_B3F_EventScript_Agron::
lock
@@ -172,22 +207,119 @@ GraniteCave_B3F_EventScript_Agron::
waitmovement 0
//applymovement 4, GraniteCave_B3F_Movement_WalkRight
//waitmovement 0
msgbox GraniteCave_B3F_Text_AggronAttack, MSGBOX_NPC
applymovement OBJ_EVENT_ID_PLAYER, GraniteCave_B3F_Movement_FaceDown
waitmovement 0
msgbox GraniteCave_B3F_Text_AggronAttack, MSGBOX_DEFAULT
//Start Battle
msgbox GraniteCave_B3F_Text_LaironAttack, MSGBOX_NPC
delay 32
msgbox GraniteCave_B3F_Text_LaironAttack, MSGBOX_DEFAULT
special LaironBattle
waitstate
//setwildbattle SPECIES_LAIRON, 18
//dowildbattle
//specialvar VAR_RESULT, GetBattleOutcome
//goto_if_eq VAR_RESULT, B_OUTCOME_WON, SkyPillar_Top_EventScript_DefeatedRayquaza
//goto_if_eq VAR_RESULT, B_OUTCOME_RAN, SkyPillar_Top_EventScript_RanFromRayquaza
//goto_if_eq VAR_RESULT, B_OUTCOME_PLAYER_TELEPORTED, SkyPillar_Top_EventScript_RanFromRayquaza
release
showfollower
//remove the pokemon
removeobject 4
removeobject 5
setvar VAR_GRANITECAVE_AGGRON, 0
setflag FLAG_STEVENS_CAVE_AGRON
specialvar VAR_RESULT, GetBattleOutcome
playbgm MUS_PETALBURG_WOODS, TRUE
applymovement 1, GraniteCave_B3F_Movement_LookRight
goto_if_eq VAR_RESULT, B_OUTCOME_WON, GraniteCave_B3F_EventScript_AgronDefeated
goto_if_eq VAR_RESULT, B_OUTCOME_LOST, GraniteCave_B3F_EventScript_PlayerDefeated
//goto_if_eq VAR_RESULT, B_OUTCOME_PLAYER_TELEPORTED, SkyPillar_Top_EventScript_RanFromRayquaza.
release
end
GraniteCave_B3F_Text_AgronDefeated:
.string "STEVEN: That was a close one, but that\n"
.string "LARION was no match for you.\l"
.string "Here, let me heal your POKéMON.$"
GraniteCave_B3F_EventScript_AgronDefeated::
msgbox GraniteCave_B3F_Text_AgronDefeated, MSGBOX_NPC
goto GraniteCave_B3F_EventScript_ShinyRock
end
GraniteCave_B3F_Text_PlayerDefeated:
.string "STEVEN: That was a close one. The LARION\n"
.string "ran off after the AGGRON did.\p"
.string "Here, let me heal your POKéMON$"
GraniteCave_B3F_EventScript_PlayerDefeated::
msgbox GraniteCave_B3F_Text_PlayerDefeated, MSGBOX_NPC
goto GraniteCave_B3F_EventScript_ShinyRock
end
GraniteCave_B3F_Text_MetangFlash:
.string "STEVEN: METANG, use Flash!$"
GraniteCave_B3F_Text_ShinyRock:
.string "STEVEN: What's that over there?$"
GraniteCave_B3F_Movement_GoToStone:
walk_left
walk_down
walk_down
walk_down
walk_down
step_end
GraniteCave_B3F_EventScript_ShinyRock::
lock
special HealPlayerParty
playse SE_USE_ITEM
waitse
applymovement 1, GraniteCave_B3F_Movement_FaceDown
waitmovement 0
msgbox GraniteCave_B3F_Text_MetangFlash, MSGBOX_DEFAULT
delay 32
animateflash 1
delay 32
playse SE_PIN
applymovement 1, Common_Movement_ExclamationMark
waitmovement 0
msgbox GraniteCave_B3F_Text_ShinyRock, MSGBOX_DEFAULT
applymovement 1, GraniteCave_B3F_Movement_GoToStone
waitmovement 0
release
releaseall
end
GraniteCave_B3F_Text_StayAndStudy:
.string "STEVEN: Look at that brilliant shimmer.\n"
.string "I wonder if this could be...\p"
.string "Thank you for you help {PLAYER}.\n"
.string "I will stay here and investiage this\l"
.string "odd stone.\p"
.string "Oh! You had a letter for me?$"
GraniteCave_B3F_Text_ExitThatWay:
.string "I feel a faint breeze coming from over\n"
.string "there. I think the exit is that way.$"
GraniteCave_B3F_EventScript_StayAndStudy::
msgbox GraniteCave_B3F_Text_StayAndStudy, MSGBOX_NPC
setvar VAR_0x8004, ITEM_LETTER
call Common_EventScript_PlayerHandedOverTheItem
setflag FLAG_DELIVERED_STEVEN_LETTER
msgbox GraniteCave_StevensRoom_Text_ThankYouTakeThis, MSGBOX_DEFAULT
giveitem ITEM_TM47
call_if_eq VAR_RESULT, FALSE, GraniteCave_StevensRoom_EventScript_BagFull
msgbox GraniteCave_StevensRoom_Text_CouldBecomeChampionLetsRegister, MSGBOX_DEFAULT
closemessage
delay 30
playfanfare MUS_REGISTER_MATCH_CALL
msgbox GraniteCave_StevensRoom_Text_RegisteredSteven, MSGBOX_DEFAULT
waitfanfare
closemessage
delay 30
setflag FLAG_REGISTERED_STEVEN_POKENAV
msgbox GraniteCave_B3F_Text_ExitThatWay, MSGBOX_NPC
setvar VAR_GRANITECAVE_AGGRON, 3
end
GraniteCave_B3F_EventScript_CompletedScript::
setvar VAR_GRANITECAVE_AGGRON, 9
end
+40
View File
@@ -0,0 +1,40 @@
{
"id": "MAP_GRANITE_CAVE_B4FNORTH",
"name": "GraniteCave_B4FNorth",
"layout": "LAYOUT_GRANITE_CAVE_B4FNORTH",
"music": "MUS_PETALBURG_WOODS",
"region_map_section": "MAPSEC_GRANITE_CAVE",
"requires_flash": false,
"weather": "WEATHER_NONE",
"map_type": "MAP_TYPE_UNDERGROUND",
"allow_cycling": true,
"allow_escaping": false,
"allow_running": true,
"show_map_name": false,
"battle_scene": "MAP_BATTLE_SCENE_NORMAL",
"connections": 0,
"object_events": [
{
"graphics_id": "OBJ_EVENT_GFX_ITEM_BALL",
"x": 9,
"y": 4,
"elevation": 0,
"movement_type": "MOVEMENT_TYPE_NONE",
"movement_range_x": 0,
"movement_range_y": 0,
"trainer_type": "TRAINER_TYPE_NONE",
"trainer_sight_or_berry_tree_id": "0",
"script": "GraniteCave_B4FNorth_EventScript_ItemMasterBall",
"flag": "FLAG_ITEM_GRANITE_CAVE_4FNORTH_MASTERBALL"
}
],
"warp_events": [
],
"coord_events": [
],
"bg_events": [
]
}
@@ -0,0 +1,2 @@
GraniteCave_B4FNorth_MapScripts::
.byte 0
+18 -18
View File
@@ -10,20 +10,20 @@ GraniteCave_StevensRoom_EventScript_Steven::
//setvar VAR_0x8004, ITEM_LETTER
//call Common_EventScript_PlayerHandedOverTheItem
//setflag FLAG_DELIVERED_STEVEN_LETTER
msgbox GraniteCave_StevensRoom_Text_ThankYouTakeThis, MSGBOX_DEFAULT
giveitem ITEM_TM47
call_if_eq VAR_RESULT, FALSE, GraniteCave_StevensRoom_EventScript_BagFull
msgbox GraniteCave_StevensRoom_Text_CouldBecomeChampionLetsRegister, MSGBOX_DEFAULT
closemessage
delay 30
playfanfare MUS_REGISTER_MATCH_CALL
msgbox GraniteCave_StevensRoom_Text_RegisteredSteven, MSGBOX_DEFAULT
waitfanfare
closemessage
delay 30
setflag FLAG_REGISTERED_STEVEN_POKENAV
//msgbox GraniteCave_StevensRoom_Text_ThankYouTakeThis, MSGBOX_DEFAULT
//giveitem ITEM_TM47
//call_if_eq VAR_RESULT, FALSE, GraniteCave_StevensRoom_EventScript_BagFull
//msgbox GraniteCave_StevensRoom_Text_CouldBecomeChampionLetsRegister, MSGBOX_DEFAULT
//closemessage
//delay 30
//playfanfare MUS_REGISTER_MATCH_CALL
//msgbox GraniteCave_StevensRoom_Text_RegisteredSteven, MSGBOX_DEFAULT
//waitfanfare
//closemessage
//delay 30
//setflag FLAG_REGISTERED_STEVEN_POKENAV
//insert own script here
goto GraniteCave_StevensRoom_EventScript_Steven_AskForHelp
goto GraniteCave_StevensRoom_EventScript_Colapse
msgbox GraniteCave_StevensRoom_Text_IveGotToHurryAlong, MSGBOX_DEFAULT
closemessage
call_if_eq VAR_FACING, DIR_NORTH, GraniteCave_StevensRoom_EventScript_StevenExitNorth
@@ -91,7 +91,7 @@ GraniteCave_StevensRoom_Text_ImStevenLetterForMe:
.string "A LETTER for me?$"
GraniteCave_StevensRoom_Text_ThankYouTakeThis:
.string "STEVEN: Okay, thank you.\p"
.string "STEVEN: Thank you.\p"
.string "You went through all this trouble to\n"
.string "deliver that. I need to thank you.\p"
.string "Let me see…\n"
@@ -150,9 +150,8 @@ GraniteCave_StevensRoom_Movement_StevenLookAround:
step_end
GraniteCave_StevensRoom_Text_AfterFall:
.string "That was... interesting.\p"
.string "Looks like you will be helping me\n"
.string "afterall.\p"
.string "That was unexpected...\l"
.string "Looks like that letter will need to wait.\p"
.string "....................$"
GraniteCave_StevensRoom_Text_UseDig:
@@ -191,7 +190,7 @@ GraniteCave_StevensRoom_EventScript_Colapse::
faceplayer
msgbox GraniteCave_StevensRoom_Text_AfterFall, MSGBOX_NPC
delay 64
msgbox GraniteCave_StevensRoom_Text_UseDig
msgbox GraniteCave_StevensRoom_Text_UseDig, MSGBOX_NPC
delay 32
fadescreen 3
//applymovement OBJ_EVENT_ID_PLAYER, GraniteCave_StevensRoom_Movement_ReleaseBaltoy
@@ -206,6 +205,7 @@ GraniteCave_StevensRoom_EventScript_Colapse::
setvar VAR_0x8007, 2 @ shake delay
special ShakeCamera
waitstate
setvar VAR_GRANITECAVE_AGGRON, 0
releaseall
warp MAP_GRANITE_CAVE_B3F, 3, 0, 0
delay 32
+4 -2
View File
@@ -12,7 +12,7 @@
"allow_running": true,
"show_map_name": true,
"battle_scene": "MAP_BATTLE_SCENE_NORMAL",
"connections": null,
"connections": 0,
"object_events": [
{
"graphics_id": "OBJ_EVENT_GFX_MAN_3",
@@ -84,7 +84,9 @@
"dest_warp_id": "2"
}
],
"coord_events": [],
"coord_events": [
],
"bg_events": [
{
"type": "sign",
+7 -3
View File
@@ -12,7 +12,7 @@
"allow_running": true,
"show_map_name": true,
"battle_scene": "MAP_BATTLE_SCENE_NORMAL",
"connections": null,
"connections": 0,
"object_events": [
{
"graphics_id": "OBJ_EVENT_GFX_ITEM_BALL",
@@ -37,6 +37,10 @@
"dest_warp_id": "3"
}
],
"coord_events": [],
"bg_events": []
"coord_events": [
],
"bg_events": [
]
}
+2 -1
View File
@@ -441,7 +441,8 @@
"PetalburgWoodsExt",
"PetalburgWoodsext2",
"GraniteCave_B3F",
"GraniteCave_B4F"
"GraniteCave_B4F",
"GraniteCave_B4FNorth"
],
"gMapGroup_IndoorDynamic": [
"SecretBase_RedCave1",
+4
View File
@@ -394,6 +394,10 @@ GraniteCave_B4F_EventScript_ItemRareCandy::
finditem ITEM_RARE_CANDY
end
GraniteCave_B4FNorth_EventScript_ItemMasterBall::
finditem ITEM_MASTER_BALL
end
JaggedPass_EventScript_ItemBurnHeal::
finditem ITEM_BURN_HEAL
end
+1 -1
View File
@@ -74,6 +74,6 @@
#define GEN_LATEST GEN_8
// General settings
#define EXPANSION_INTRO TRUE // If TRUE, a custom RHH intro will play after the vanilla copyright screen.
#define EXPANSION_INTRO FALSE // If TRUE, a custom RHH intro will play after the vanilla copyright screen.
#endif // GUARD_CONFIG_H
+2
View File
@@ -14,5 +14,7 @@
#define TRAINER_BATTLE_SET_TRAINER_A 10
#define TRAINER_BATTLE_SET_TRAINER_B 11
#define TRAINER_BATTLE_HILL 12
#define TRAINER_BATTLE_NO_WHITEOUT_CONTINUE_SCRIPT 13
#define TRAINER_BATTLE_NO_INTRO_NO_WHITEOUT 14
#endif // GUARD_CONSTANTS_BATTLE_SETUP_H
+3 -1
View File
@@ -647,8 +647,10 @@
#define STRINGID_STEALTHROCKDISAPPEAREDFROMTEAM 645
#define STRINGID_COULDNTFULLYPROTECT 646
#define STRINGID_STOCKPILEDEFFECTWOREOFF 647
#define STRINGID_PLAYERWHITEOUT3 648
#define BATTLESTRINGS_COUNT 649
#define BATTLESTRINGS_COUNT 648
// This is the string id that gBattleStringsTable starts with.
// String ids before this (e.g. STRINGID_INTROMSG) are not in the table,
+1 -1
View File
@@ -1231,7 +1231,7 @@
#define FLAG_ITEM_GRANITE_CAVE_4F_RARECANDY 0x49D // Unused Flag
#define FLAG_STEVENS_CAVE_AGRON 0x49E // Unused Flag
#define FLAG_STEVENS_CAVE_DUGDEEPER 0x49F // Unused Flag
#define FLAG_UNUSED_0x4A0 0x4A0 // Unused Flag
#define FLAG_ITEM_GRANITE_CAVE_4FNORTH_MASTERBALL 0x4A0 // Unused Flag
#define FLAG_UNUSED_0x4A1 0x4A1 // Unused Flag
#define FLAG_UNUSED_0x4A2 0x4A2 // Unused Flag
#define FLAG_UNUSED_0x4A3 0x4A3 // Unused Flag
+1
View File
@@ -458,5 +458,6 @@
#define LAYOUT_RUSTBORO_CITY_LEAFS_HOUSE_2F 451
#define LAYOUT_GRANITE_CAVE_B3F 452
#define LAYOUT_GRANITE_CAVE_B4F 453
#define LAYOUT_GRANITE_CAVE_B4FNORTH 454
#endif // GUARD_CONSTANTS_LAYOUTS_H
+1
View File
@@ -412,6 +412,7 @@
#define MAP_PETALBURG_WOODSEXT2 (109 | (24 << 8))
#define MAP_GRANITE_CAVE_B3F (110 | (24 << 8))
#define MAP_GRANITE_CAVE_B4F (111 | (24 << 8))
#define MAP_GRANITE_CAVE_B4FNORTH (112 | (24 << 8))
// gMapGroup_IndoorDynamic
#define MAP_SECRET_BASE_RED_CAVE1 (0 | (25 << 8))
+2
View File
@@ -85,6 +85,7 @@ static const u8 sText_PlayerWhiteout2[] = _("{B_PLAYER_NAME} panicked and lost
#else
static const u8 sText_PlayerWhiteout2[] = _("{B_PLAYER_NAME} whited out!{PAUSE_UNTIL_PRESS}");
#endif
static const u8 sText_PlayerWhiteout3[] = _("{B_PLAYER_NAME} lost the battle!{PAUSE_UNTIL_PRESS}");
static const u8 sText_PreventsEscape[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} prevents\nescape with {B_SCR_ACTIVE_ABILITY}!\p");
static const u8 sText_CantEscape2[] = _("Can't escape!\p");
static const u8 sText_AttackerCantEscape[] = _("{B_ATK_NAME_WITH_PREFIX} can't escape!");
@@ -911,6 +912,7 @@ const u8 *const gBattleStringsTable[BATTLESTRINGS_COUNT] =
[STRINGID_PLAYERGOTMONEY - BATTLESTRINGS_TABLE_START] = sText_PlayerGotMoney,
[STRINGID_PLAYERWHITEOUT - BATTLESTRINGS_TABLE_START] = sText_PlayerWhiteout,
[STRINGID_PLAYERWHITEOUT2 - BATTLESTRINGS_TABLE_START] = sText_PlayerWhiteout2,
[STRINGID_PLAYERWHITEOUT3 - BATTLESTRINGS_TABLE_START] = sText_PlayerWhiteout3,
[STRINGID_PREVENTSESCAPE - BATTLESTRINGS_TABLE_START] = sText_PreventsEscape,
[STRINGID_HITXTIMES - BATTLESTRINGS_TABLE_START] = sText_HitXTimes,
[STRINGID_PKMNFELLASLEEP - BATTLESTRINGS_TABLE_START] = sText_PkmnFellAsleep,
+28 -17
View File
@@ -81,6 +81,7 @@ static void TryUpdateGymLeaderRematchFromTrainer(void);
static void CB2_GiveStarter(void);
static void CB2_StartFirstBattle(void);
static void CB2_EndFirstBattle(void);
static bool8 BattleHasNoWhiteout(void);
static void CB2_EndTrainerBattle(void);
static bool32 IsPlayerDefeated(u32 battleOutcome);
static u16 GetRematchTrainerId(u16 trainerId);
@@ -89,7 +90,7 @@ static void HandleRematchVarsOnBattleEnd(void);
static const u8 *GetIntroSpeechOfApproachingTrainer(void);
static const u8 *GetTrainerCantBattleSpeech(void);
EWRAM_DATA static u16 sTrainerBattleMode = 0;
EWRAM_DATA u16 gTrainerBattleMode = 0;
EWRAM_DATA u16 gTrainerBattleOpponent_A = 0;
EWRAM_DATA u16 gTrainerBattleOpponent_B = 0;
EWRAM_DATA u16 gPartnerTrainerId = 0;
@@ -158,7 +159,7 @@ static const u8 sBattleTransitionTable_BattleDome[] =
static const struct TrainerBattleParameter sOrdinaryBattleParams[] =
{
{&sTrainerBattleMode, TRAINER_PARAM_LOAD_VAL_8BIT},
{&gTrainerBattleMode, TRAINER_PARAM_LOAD_VAL_8BIT},
{&gTrainerBattleOpponent_A, TRAINER_PARAM_LOAD_VAL_16BIT},
{&sTrainerObjectEventLocalId, TRAINER_PARAM_LOAD_VAL_16BIT},
{&sTrainerAIntroSpeech, TRAINER_PARAM_LOAD_VAL_32BIT},
@@ -171,7 +172,7 @@ static const struct TrainerBattleParameter sOrdinaryBattleParams[] =
static const struct TrainerBattleParameter sContinueScriptBattleParams[] =
{
{&sTrainerBattleMode, TRAINER_PARAM_LOAD_VAL_8BIT},
{&gTrainerBattleMode, TRAINER_PARAM_LOAD_VAL_8BIT},
{&gTrainerBattleOpponent_A, TRAINER_PARAM_LOAD_VAL_16BIT},
{&sTrainerObjectEventLocalId, TRAINER_PARAM_LOAD_VAL_16BIT},
{&sTrainerAIntroSpeech, TRAINER_PARAM_LOAD_VAL_32BIT},
@@ -184,7 +185,7 @@ static const struct TrainerBattleParameter sContinueScriptBattleParams[] =
static const struct TrainerBattleParameter sDoubleBattleParams[] =
{
{&sTrainerBattleMode, TRAINER_PARAM_LOAD_VAL_8BIT},
{&gTrainerBattleMode, TRAINER_PARAM_LOAD_VAL_8BIT},
{&gTrainerBattleOpponent_A, TRAINER_PARAM_LOAD_VAL_16BIT},
{&sTrainerObjectEventLocalId, TRAINER_PARAM_LOAD_VAL_16BIT},
{&sTrainerAIntroSpeech, TRAINER_PARAM_LOAD_VAL_32BIT},
@@ -197,7 +198,7 @@ static const struct TrainerBattleParameter sDoubleBattleParams[] =
static const struct TrainerBattleParameter sOrdinaryNoIntroBattleParams[] =
{
{&sTrainerBattleMode, TRAINER_PARAM_LOAD_VAL_8BIT},
{&gTrainerBattleMode, TRAINER_PARAM_LOAD_VAL_8BIT},
{&gTrainerBattleOpponent_A, TRAINER_PARAM_LOAD_VAL_16BIT},
{&sTrainerObjectEventLocalId, TRAINER_PARAM_LOAD_VAL_16BIT},
{&sTrainerAIntroSpeech, TRAINER_PARAM_CLEAR_VAL_32BIT},
@@ -210,7 +211,7 @@ static const struct TrainerBattleParameter sOrdinaryNoIntroBattleParams[] =
static const struct TrainerBattleParameter sContinueScriptDoubleBattleParams[] =
{
{&sTrainerBattleMode, TRAINER_PARAM_LOAD_VAL_8BIT},
{&gTrainerBattleMode, TRAINER_PARAM_LOAD_VAL_8BIT},
{&gTrainerBattleOpponent_A, TRAINER_PARAM_LOAD_VAL_16BIT},
{&sTrainerObjectEventLocalId, TRAINER_PARAM_LOAD_VAL_16BIT},
{&sTrainerAIntroSpeech, TRAINER_PARAM_LOAD_VAL_32BIT},
@@ -223,7 +224,7 @@ static const struct TrainerBattleParameter sContinueScriptDoubleBattleParams[] =
static const struct TrainerBattleParameter sTrainerBOrdinaryBattleParams[] =
{
{&sTrainerBattleMode, TRAINER_PARAM_LOAD_VAL_8BIT},
{&gTrainerBattleMode, TRAINER_PARAM_LOAD_VAL_8BIT},
{&gTrainerBattleOpponent_B, TRAINER_PARAM_LOAD_VAL_16BIT},
{&sTrainerObjectEventLocalId, TRAINER_PARAM_LOAD_VAL_16BIT},
{&sTrainerBIntroSpeech, TRAINER_PARAM_LOAD_VAL_32BIT},
@@ -236,7 +237,7 @@ static const struct TrainerBattleParameter sTrainerBOrdinaryBattleParams[] =
static const struct TrainerBattleParameter sTrainerBContinueScriptBattleParams[] =
{
{&sTrainerBattleMode, TRAINER_PARAM_LOAD_VAL_8BIT},
{&gTrainerBattleMode, TRAINER_PARAM_LOAD_VAL_8BIT},
{&gTrainerBattleOpponent_B, TRAINER_PARAM_LOAD_VAL_16BIT},
{&sTrainerObjectEventLocalId, TRAINER_PARAM_LOAD_VAL_16BIT},
{&sTrainerBIntroSpeech, TRAINER_PARAM_LOAD_VAL_32BIT},
@@ -492,7 +493,7 @@ void StartWallyTutorialBattle(void)
void LaironBattle(void){
u16 monData;
CreateMaleMon(&gEnemyParty[0], SPECIES_LAIRON, 22);
CreateMaleMon(&gEnemyParty[0], SPECIES_LAIRON, 23);
monData = MOVE_METAL_CLAW;
SetMonData(&gEnemyParty[0], MON_DATA_MOVE1, &monData);
monData = MOVE_MUD_SLAP;
@@ -503,7 +504,7 @@ void LaironBattle(void){
SetMonData(&gEnemyParty[0], MON_DATA_MOVE4, &monData);
gMain.savedCallback = CB2_ReturnToFieldContinueScriptPlayMapMusic;
CreateBattleStartTask(B_TRANSITION_SLICE, 0);
CreateBattleStartTask(B_TRANSITION_SLICE, MUS_HELP);
}
void BattleSetup_StartScriptedWildBattle(void)
@@ -1059,7 +1060,7 @@ void ResetTrainerOpponentIds(void)
static void InitTrainerBattleVariables(void)
{
sTrainerBattleMode = 0;
gTrainerBattleMode = 0;
if (gApproachingTrainerId == 0)
{
sTrainerAIntroSpeech = NULL;
@@ -1146,11 +1147,12 @@ const u8 *BattleSetup_ConfigureTrainerBattle(const u8 *data)
{
if (TrainerBattleLoadArg8(data) != TRAINER_BATTLE_SET_TRAINER_B)
InitTrainerBattleVariables();
sTrainerBattleMode = TrainerBattleLoadArg8(data);
gTrainerBattleMode = TrainerBattleLoadArg8(data);
switch (sTrainerBattleMode)
switch (gTrainerBattleMode)
{
case TRAINER_BATTLE_SINGLE_NO_INTRO_TEXT:
case TRAINER_BATTLE_NO_INTRO_NO_WHITEOUT:
TrainerBattleLoadArgs(sOrdinaryNoIntroBattleParams, data);
return EventScript_DoNoIntroTrainerBattle;
case TRAINER_BATTLE_DOUBLE:
@@ -1158,6 +1160,7 @@ const u8 *BattleSetup_ConfigureTrainerBattle(const u8 *data)
SetMapVarsToTrainer();
return EventScript_TryDoDoubleTrainerBattle;
case TRAINER_BATTLE_CONTINUE_SCRIPT:
case TRAINER_BATTLE_NO_WHITEOUT_CONTINUE_SCRIPT:
if (gApproachingTrainerId == 0)
{
TrainerBattleLoadArgs(sContinueScriptBattleParams, data);
@@ -1272,7 +1275,7 @@ void SetTrainerFacingDirection(void)
u8 GetTrainerBattleMode(void)
{
return sTrainerBattleMode;
return gTrainerBattleMode;
}
bool8 GetTrainerFlag(void)
@@ -1367,6 +1370,14 @@ void BattleSetup_StartTrainerBattle(void)
ScriptContext_Stop();
}
static bool8 BattleHasNoWhiteout()
{
if (gTrainerBattleMode == TRAINER_BATTLE_NO_WHITEOUT_CONTINUE_SCRIPT || gTrainerBattleMode == TRAINER_BATTLE_NO_INTRO_NO_WHITEOUT)
return TRUE;
else
return FALSE;
}
static void CB2_EndTrainerBattle(void)
{
if (gTrainerBattleOpponent_A == TRAINER_SECRET_BASE)
@@ -1375,7 +1386,7 @@ static void CB2_EndTrainerBattle(void)
}
else if (IsPlayerDefeated(gBattleOutcome) == TRUE)
{
if (InBattlePyramid() || InTrainerHillChallenge())
if (InBattlePyramid() || InTrainerHillChallenge() || BattleHasNoWhiteout())
SetMainCallback2(CB2_ReturnToFieldContinueScriptPlayMapMusic);
else
SetMainCallback2(CB2_WhiteOut);
@@ -1492,8 +1503,8 @@ void PlayTrainerEncounterMusic(void)
else
trainerId = gTrainerBattleOpponent_B;
if (sTrainerBattleMode != TRAINER_BATTLE_CONTINUE_SCRIPT_NO_MUSIC
&& sTrainerBattleMode != TRAINER_BATTLE_CONTINUE_SCRIPT_DOUBLE_NO_MUSIC)
if (gTrainerBattleMode != TRAINER_BATTLE_CONTINUE_SCRIPT_NO_MUSIC
&& gTrainerBattleMode != TRAINER_BATTLE_CONTINUE_SCRIPT_DOUBLE_NO_MUSIC)
{
switch (GetTrainerEncounterMusicId(trainerId))
{
+1 -1
View File
@@ -1 +1 @@
static const u8 MAP_GROUP_COUNT[] = {63, 5, 5, 6, 7, 8, 9, 7, 7, 14, 8, 19, 10, 23, 13, 15, 15, 2, 2, 2, 3, 1, 1, 1, 112, 61, 89, 2, 1, 13, 1, 1, 3, 1, 0};
static const u8 MAP_GROUP_COUNT[] = {63, 5, 5, 6, 7, 8, 9, 7, 7, 14, 8, 19, 10, 23, 13, 15, 15, 2, 2, 2, 3, 1, 1, 1, 113, 61, 89, 2, 1, 13, 1, 1, 3, 1, 0};
+69
View File
@@ -12160,6 +12160,75 @@
}
]
}
},
{
"map": "MAP_GRANITE_CAVE_B4FNORTH",
"base_label": "gGraniteCave_B4FNorth0",
"land_mons": {
"encounter_rate": 10,
"mons": [
{
"min_level": 10,
"max_level": 10,
"species": "SPECIES_ZUBAT"
},
{
"min_level": 11,
"max_level": 11,
"species": "SPECIES_ARON"
},
{
"min_level": 10,
"max_level": 10,
"species": "SPECIES_ARON"
},
{
"min_level": 11,
"max_level": 11,
"species": "SPECIES_ZUBAT"
},
{
"min_level": 12,
"max_level": 12,
"species": "SPECIES_ARON"
},
{
"min_level": 10,
"max_level": 10,
"species": "SPECIES_ABRA"
},
{
"min_level": 10,
"max_level": 10,
"species": "SPECIES_BELDUM"
},
{
"min_level": 11,
"max_level": 11,
"species": "SPECIES_BELDUM"
},
{
"min_level": 12,
"max_level": 12,
"species": "SPECIES_ONIX"
},
{
"min_level": 10,
"max_level": 10,
"species": "SPECIES_ONIX"
},
{
"min_level": 12,
"max_level": 12,
"species": "SPECIES_SABLEYE"
},
{
"min_level": 14,
"max_level": 16,
"species": "SPECIES_GOLBAT"
}
]
}
}
]
},
+63 -2
View File
@@ -39,9 +39,16 @@
static EWRAM_DATA u8 sWildEncounterImmunitySteps = 0;
static EWRAM_DATA u16 sPrevMetatileBehavior = 0;
static EWRAM_DATA u8 sCurrentDirection = 0;
static EWRAM_DATA u8 sPreviousDirection = 0;
u8 gSelectedObjectEvent;
static void SetDirectionFromHeldKeys(u16 heldKeys);
static u8 GetDirectionFromBitfield(u8 bitfield);
static void GetPlayerPosition(struct MapPosition *);
static void GetInFrontOfPlayerPosition(struct MapPosition *);
static void GetPlayerPosition(struct MapPosition *);
static void GetInFrontOfPlayerPosition(struct MapPosition *);
static u16 GetPlayerCurMetatileBehavior(int);
@@ -123,14 +130,16 @@ void FieldGetPlayerInput(struct FieldInput *input, u16 newKeys, u16 heldKeys)
input->checkStandardWildEncounter = TRUE;
}
if (heldKeys & DPAD_UP)
/* if (heldKeys & DPAD_UP)
input->dpadDirection = DIR_NORTH;
else if (heldKeys & DPAD_DOWN)
input->dpadDirection = DIR_SOUTH;
else if (heldKeys & DPAD_LEFT)
input->dpadDirection = DIR_WEST;
else if (heldKeys & DPAD_RIGHT)
input->dpadDirection = DIR_EAST;
input->dpadDirection = DIR_EAST; */
SetDirectionFromHeldKeys(heldKeys);
input->dpadDirection = sCurrentDirection;
#if DEBUG_OVERWORLD_MENU == TRUE && DEBUG_OVERWORLD_IN_MENU == FALSE
if ((heldKeys & DEBUG_OVERWORLD_HELD_KEYS) && input->DEBUG_OVERWORLD_TRIGGER_EVENT)
@@ -1044,3 +1053,55 @@ int SetCableClubWarp(void)
SetupWarp(&gMapHeader, GetWarpEventAtMapPosition(&gMapHeader, &position), &position);
return 0;
}
//Smooth Movment
static u8 GetDirectionFromBitfield(u8 bitfield)
{
u8 direction = 0;
while (bitfield >>= 1) direction++;
return direction;
}
static void SetDirectionFromHeldKeys(u16 heldKeys)
{
u8 dpadDirections = 0;
if (heldKeys & DPAD_UP)
dpadDirections |= (1 << DIR_NORTH);
if (heldKeys & DPAD_DOWN)
dpadDirections |= (1 << DIR_SOUTH);
if (heldKeys & DPAD_LEFT)
dpadDirections |= (1 << DIR_WEST);
if (heldKeys & DPAD_RIGHT)
dpadDirections |= (1 << DIR_EAST);
if (dpadDirections == 0) // no dir is pushed
{
sCurrentDirection = DIR_NONE;
sPreviousDirection = DIR_NONE;
return;
}
if ((dpadDirections & (dpadDirections - 1)) == 0) // only 1 dir is pushed
{
// simply set currDir to that dir
sCurrentDirection = GetDirectionFromBitfield(dpadDirections);
sPreviousDirection = DIR_NONE;
return;
}
if (((dpadDirections >> sCurrentDirection) & 1) == 0) // none of the multiple dirs pushed is currDir
{
sCurrentDirection = DIR_NONE;
sPreviousDirection = DIR_NONE;
}
else if ((sPreviousDirection == DIR_NONE) || (((dpadDirections >> sPreviousDirection) & 1) == 0))
{
// turn
sCurrentDirection = GetDirectionFromBitfield(dpadDirections & ~(1 << sCurrentDirection));
sPreviousDirection = sCurrentDirection;
}
// else, currDir and prevDir are the dirs pushed
// do nothing (keep the same currDir and prevDir)
}