Skip to content
surskitty edited this page Jun 27, 2021 · 23 revisions

Hey, this is where you'd find surskitty's feature branches.

Please file an issue if you have any issues; I'm not very thorough about bug-testing.

git remote add surskitty https://github.com/surskitty/pokeemerald

Make NPCs that are able to fly you around, similar to the SwSh Corviknight cabbies.

Help wanted for the animations; look in src/field_effect.c and please PR if you work something out that's nicer.

How to use: In the script for a cabbie NPC, call Common_EventScript_FlyingTaxi.

This is an updated version of Slawter666's custom surfing pokemon branch. The PokeCommunity thread has more information.

Sprites needed:

  • Dratini, Krabby, Pichu, Pikachu, Raichu, Smeargle
  • Aggron, Barboach, Carvanha, Clamperl, Corphish, Crawdaunt, Feebas, Gorebyss, Huntail, Latias, Latios, Luvdisc, Milotic, Rayquaza, Relicanth, Sharpedo, Wailmer, Wailord, Whiscash
  • All gens 4-8, except Primal Kyogre

Provides control over most aspects of NPC trainers and homogenizes party types.

How to use: edit src/data/trainer_parties.h, make sure all relevant structs are simply TrainerMon, and add each qualifier you desire.

  • .nickname = _("Nickname")
  • .ivs[NUM_STATS] OR .iv Use .iv to assign all IVs to the same number. .ivs needs an array of six stats, in order of HP ATK DEF SPEED SPATK SPDEF; many optimal IV spreads are pre-defined in include/constants/pokemon.h
  • .heldItem and .moves[MAX_MON_MOVES] are as in vanilla.
  • .ability should be set to ABILITY_SLOT_1, ABILITY_SLOT_2, or ABILITY_HIDDEN for future-proofing.
  • evs[NUM_STATS] again uses the stat order. The constants provided are not player-legal.
  • .ball will still allow trainer-class balls to function when unset.
  • .shiny = TRUE if you want shinies :)
  • .friendship should be set to TRAINER_MON_FRIENDLY or TRAINER_MON_UNFRIENDLY to adjust Return/Frustration.

As above, but with certain changes. This version does not permit setting IVs and EVs manually. Instead, you set .build, .hiddenPower, and .difficulty to get an effort and IV setup that does roughly what you want.

  • .build can be TRAINER_MON_DEFENSES, TRAINER_MON_SPEED_PHYS, TRAINER_MON_SPEED_SPEC, TRAINER_MON_HP_DEF, TRAINER_MON_HP_SPDEF, TRAINER_MON_PHYS, TRAINER_MON_SPEC, and determines EV allocation. Both of the speed options raise the corresponding attack stat. A default build at high difficulty allocates effort points evenly.
  • .difficulty TRAINER_EASIEST, TRAINER_EASY, TRAINER_MEDIUM only decide amount of IVs; TRAINER_MEDIUM is maxed. TRAINER_HARD, TRAINER_HARDER, and TRAINER_HARDEST allocate EVs and have maxed IVs. TRAINER_MAX is not player legal and assigns 255 EVs to each stat.
  • .hiddenPower takes TYPE_ constants. TYPE_NORMAL is default and gives either worst, best, or average IVs, depending on difficulty. The IV spreads used can be found in include/pokemon_iv_spreads.h

At the beginning of an NPC's script, set VAR_MOVE_MANAGER to MOVE_REMINDER, MOVE_REMINDER_LEARN_ALL_MOVES, MOVE_TUTOR_EGG_MOVES, or MOVE_DELETER, then call Common_EventScript_MoveManager for a genericised NPC with the appropriate functionality. By default, the egg move tutor wants a Tiny Mushroom and the gen 7 style move reminder wants a Heart Scale. The logic handling for the NPC is in data/scripts/move_manager.pory, helpfully already compiled into data/scripts/move_manager.inc in case you don't have poryscript. The poryscript version is much easier to read and edit, though.

Clone this wiki locally