diff options
author | tom-overton <tom.overton@outlook.com> | 2022-09-22 23:57:01 -0700 |
---|---|---|
committer | rafa_99 <raroma09@gmail.com> | 2022-09-24 01:02:39 +0100 |
commit | 4226887959f7e48d2fa1b24943384abe2b16447a (patch) | |
tree | 1957d573b565d257afbe82ae1988b32dbd4891ad /src/com/sneed/pkrandom/romhandlers | |
parent | 88f5b7bc0fc6ac127cbc662448bdd592827ea02a (diff) |
Add support for randomizing starter held items in DPPt
Diffstat (limited to 'src/com/sneed/pkrandom/romhandlers')
8 files changed, 47 insertions, 3 deletions
diff --git a/src/com/sneed/pkrandom/romhandlers/Gen1RomHandler.java b/src/com/sneed/pkrandom/romhandlers/Gen1RomHandler.java index 3ba0183..470d7c7 100755 --- a/src/com/sneed/pkrandom/romhandlers/Gen1RomHandler.java +++ b/src/com/sneed/pkrandom/romhandlers/Gen1RomHandler.java @@ -991,6 +991,12 @@ public class Gen1RomHandler extends AbstractGBCRomHandler { }
@Override
+ public boolean supportsStarterHeldItems() {
+ // No held items in Gen 1
+ return false;
+ }
+
+ @Override
public List<Integer> getStarterHeldItems() {
// do nothing
return new ArrayList<>();
diff --git a/src/com/sneed/pkrandom/romhandlers/Gen2RomHandler.java b/src/com/sneed/pkrandom/romhandlers/Gen2RomHandler.java index 388bdbc..ef2c6ac 100755 --- a/src/com/sneed/pkrandom/romhandlers/Gen2RomHandler.java +++ b/src/com/sneed/pkrandom/romhandlers/Gen2RomHandler.java @@ -835,6 +835,11 @@ public class Gen2RomHandler extends AbstractGBCRomHandler { }
@Override
+ public boolean supportsStarterHeldItems() {
+ return true;
+ }
+
+ @Override
public List<Integer> getStarterHeldItems() {
List<Integer> sHeldItems = new ArrayList<>();
int[] shiOffsets = romEntry.arrayEntries.get("StarterHeldItems");
diff --git a/src/com/sneed/pkrandom/romhandlers/Gen3RomHandler.java b/src/com/sneed/pkrandom/romhandlers/Gen3RomHandler.java index 14a0987..a9dff29 100755 --- a/src/com/sneed/pkrandom/romhandlers/Gen3RomHandler.java +++ b/src/com/sneed/pkrandom/romhandlers/Gen3RomHandler.java @@ -1576,6 +1576,11 @@ public class Gen3RomHandler extends AbstractGBRomHandler { } @Override + public boolean supportsStarterHeldItems() { + return true; + } + + @Override public List<Integer> getStarterHeldItems() { List<Integer> sHeldItems = new ArrayList<>(); if (romEntry.romType == Gen3Constants.RomType_FRLG) { diff --git a/src/com/sneed/pkrandom/romhandlers/Gen4RomHandler.java b/src/com/sneed/pkrandom/romhandlers/Gen4RomHandler.java index 76e867a..19dcf80 100755 --- a/src/com/sneed/pkrandom/romhandlers/Gen4RomHandler.java +++ b/src/com/sneed/pkrandom/romhandlers/Gen4RomHandler.java @@ -1567,14 +1567,25 @@ public class Gen4RomHandler extends AbstractDSRomHandler { }
@Override
+ public boolean supportsStarterHeldItems() {
+ return romEntry.romType == Gen4Constants.Type_DP || romEntry.romType == Gen4Constants.Type_Plat;
+ }
+
+ @Override
public List<Integer> getStarterHeldItems() {
- // do nothing
- return new ArrayList<>();
+ int starterScriptNumber = romEntry.getInt("StarterPokemonScriptOffset");
+ int starterHeldItemOffset = romEntry.getInt("StarterPokemonHeldItemOffset");
+ byte[] file = scriptNarc.files.get(starterScriptNumber);
+ int item = FileFunctions.read2ByteInt(file, starterHeldItemOffset);
+ return Arrays.asList(item);
}
@Override
public void setStarterHeldItems(List<Integer> items) {
- // do nothing
+ int starterScriptNumber = romEntry.getInt("StarterPokemonScriptOffset");
+ int starterHeldItemOffset = romEntry.getInt("StarterPokemonHeldItemOffset");
+ byte[] file = scriptNarc.files.get(starterScriptNumber);
+ FileFunctions.write2ByteInt(file, starterHeldItemOffset, items.get(0));
}
@Override
diff --git a/src/com/sneed/pkrandom/romhandlers/Gen5RomHandler.java b/src/com/sneed/pkrandom/romhandlers/Gen5RomHandler.java index 0243132..538c8da 100755 --- a/src/com/sneed/pkrandom/romhandlers/Gen5RomHandler.java +++ b/src/com/sneed/pkrandom/romhandlers/Gen5RomHandler.java @@ -1006,6 +1006,11 @@ public class Gen5RomHandler extends AbstractDSRomHandler { }
@Override
+ public boolean supportsStarterHeldItems() {
+ return false;
+ }
+
+ @Override
public List<Integer> getStarterHeldItems() {
// do nothing
return new ArrayList<>();
diff --git a/src/com/sneed/pkrandom/romhandlers/Gen6RomHandler.java b/src/com/sneed/pkrandom/romhandlers/Gen6RomHandler.java index 03ab7cc..86bfec7 100644 --- a/src/com/sneed/pkrandom/romhandlers/Gen6RomHandler.java +++ b/src/com/sneed/pkrandom/romhandlers/Gen6RomHandler.java @@ -1160,6 +1160,11 @@ public class Gen6RomHandler extends Abstract3DSRomHandler { } @Override + public boolean supportsStarterHeldItems() { + return true; + } + + @Override public List<Integer> getStarterHeldItems() { List<Integer> starterHeldItems = new ArrayList<>(); try { diff --git a/src/com/sneed/pkrandom/romhandlers/Gen7RomHandler.java b/src/com/sneed/pkrandom/romhandlers/Gen7RomHandler.java index 737eedc..07296f7 100644 --- a/src/com/sneed/pkrandom/romhandlers/Gen7RomHandler.java +++ b/src/com/sneed/pkrandom/romhandlers/Gen7RomHandler.java @@ -1262,6 +1262,11 @@ public class Gen7RomHandler extends Abstract3DSRomHandler { } @Override + public boolean supportsStarterHeldItems() { + return true; + } + + @Override public List<Integer> getStarterHeldItems() { List<Integer> starterHeldItems = new ArrayList<>(); try { diff --git a/src/com/sneed/pkrandom/romhandlers/RomHandler.java b/src/com/sneed/pkrandom/romhandlers/RomHandler.java index aa067e7..4078ead 100755 --- a/src/com/sneed/pkrandom/romhandlers/RomHandler.java +++ b/src/com/sneed/pkrandom/romhandlers/RomHandler.java @@ -128,6 +128,8 @@ public interface RomHandler { List<Pokemon> getPickedStarters();
+ boolean supportsStarterHeldItems();
+
List<Integer> getStarterHeldItems();
void setStarterHeldItems(List<Integer> items);
|