digipokeemeraldmoddevdiary
digipokeemeraldmoddevdiary
digi pokeemerald-expansion mod dev diary
7 posts
Last active 60 minutes ago
Don't wanna be here? Send us removal request.
Text
Tumblr media Tumblr media
its really simple when you know how to do it lol. initially wanted to change the map, but couldn't make it look good. and I like this explanation more. It changes once you beat team magma.
Route112_MapScripts:: map_script MAP_SCRIPT_ON_TRANSITION, Route112_OnTransition map_script MAP_SCRIPT_ON_LOAD, Route112_OnLoad .byte 0 Route112_OnTransition: clearflag FLAG_FORCE_MIRAGE_TOWER_VISIBLE setvar VAR_JAGGED_PASS_ASH_WEATHER, 0 end Route112_OnLoad: goto_if_set FLAG_HIDE_MT_CHIMNEY_TEAM_MAGMA, Route112_bulldoze_ridges end Route112_bulldoze_ridges: setmetatile 17, 48, METATILE_General_Grass, FALSE setmetatile 17, 49, METATILE_General_Grass, FALSE setmetatile 17, 50, METATILE_General_Grass, FALSE setmetatile 17, 51, METATILE_General_Grass, FALSE setmetatile 15, 48, METATILE_General_Grass, FALSE setmetatile 15, 49, METATILE_General_Grass, FALSE setmetatile 15, 50, METATILE_General_Grass, FALSE setmetatile 15, 51, METATILE_General_Grass, FALSE setmetatile 13, 48, METATILE_General_Grass, FALSE setmetatile 13, 49, METATILE_General_Grass, FALSE setmetatile 13, 50, METATILE_General_Grass, FALSE setmetatile 13, 51, METATILE_General_Grass, FALSE setmetatile 10, 51, METATILE_General_Grass, FALSE setmetatile 10, 50, METATILE_General_Grass, FALSE end Route112_EventScript_Hiker:: // msgbox Route112_Text_NotEasyToGetBackToLavaridge, MSGBOX_NPC goto_if_unset FLAG_HIDE_MT_CHIMNEY_TEAM_MAGMA, Route112_hiker_RideNotDestoryed msgbox Route112_Text_IhaveDestroyedThisRidge, MSGBOX_NPC end //before defeating team magma Route112_hiker_RideNotDestoryed: faceplayer lockall msgbox Route112_Text_IWillDestroyThisRidge, MSGBOX_NPC releaseall end Route112_Text_IWillDestroyThisRidge: .string "I'm sick of dealing with these damn\n" .string "ridges! Just wait, I'll take care of em!$" //after defeating team magma Route112_Text_IhaveDestroyedThisRidge: .string "(Huff… Huff…)\p" .string "There. We did it. Much better.$"
0 notes
Text
Tumblr media
Now that i've gotten a system with converting the dim card sprites into gen 3 sprites, i bit the bullet and came up with an initial pokedex of in-training, rookie, and armor forms that I want in my mod, and then got chat-gpt to coach me through making python codes for generating folders and file entries for all 188 of them. Was annoying but adding pokemon is much faster now.
At the moment the goal is to have a set roster of digimon that you'll encounter during the story, like a dex of 500 mon or something, and then I can just keep adding extras that'll be available for the player, but just wont appear in enemy teams. So you can do another playthrough with a different starter. so my current list is 33 in-training (skipping stage 1), 90 rookies, and all(?) 65 armor forms. that sounds kinda intimidating but considering that all in-trainings currently have 2-5 evolution options and you can devolve rookies, it should be pretty easy to jump around the evolution tree.
2 notes · View notes
Text
Consent matters (single battle against one npc, infinitely rematchable)
Tumblr media
finally perfected my regular NPC code. previously it'd break if they were moving. So you need to reassign their movement type before starting the single battle. So the exclamation is actually 100% necessary (you could do different emotes, but just turning their movement to NONE didn't work) so yeah, now regular trainers rebattle you infinitely, recognizing you after you've talked to them first. They can move, and resume moving after they've left the screen. The only bad part is that their teams dont get harder, but I've never cared about this, and this frees up their rematch teams for being reassigned to new trainer battles. (it strikes me now that this may or may not permit them to have sight, and walk over to you. next task, i gues. tho it may just work out of the box still? Who knows.)
to make movement work, set their localid, and then set their movement to something that means theyre not moving, because if they're moving (or if they're between tiles) the trainerbattle wont start. common_movement_exclamationmark works. others would work too, prob. waitmovement 0 is there to make sure the animation finishes before moving onto the battle code. If you implement this, I'd copy/paste the code in, then do a find/replace for MARIA (in caps) for your trainer name (because TRAINER_NAMEs are in caps) and then for Maria (in sentence case) to replace other instances. I use TrainerBattleName as the events because then they're all easy to find, and you never clash events. //Maria battle code -------------------------------------------------------------------- .set LOCALID_TRAINERMARIA, 17 TrainerBattleMaria:: applymovement LOCALID_TRAINERMARIA, Common_Movement_ExclamationMark waitmovement 0 faceplayer goto_if_not_defeated TRAINER_MARIA Maria_AskforInitialBattle //if you haven't beaten them, jump to that code msgbox MariaReBattle_Text_Ask, MSGBOX_YESNO //if you've beaten them before, ask to battle compare VAR_RESULT, TRUE goto_if_eq MariaBattleStart goto_if_ne MariaDecline end //if you haven't battled them before Maria_AskforInitialBattle: msgbox MariaInitialBattle_Text_ask, MSGBOX_YESNO compare VAR_RESULT, TRUE goto_if_eq MariaBattleStart goto_if_ne MariaDecline releaseall end //regardless, this is the start of the battle. MariaBattleStart: cleartrainerflag TRAINER_MARIA //you need this or rebattling wont work trainerbattle_single TRAINER_MARIA, MariaBattle_Text_BattleBegin, MariaBattle_Text_BattleEnd releaseall end //if you decline the battle MariaDecline: msgbox Maria_Text_Decline, MSGBOX_DEFAULT settrainerflag(TRAINER_MARIA)//this means they'll remember you releaseall end //what they say if they HAVEN"T battled before MariaInitialBattle_Text_ask: .string "I do my triathlon training with POKéMON,\n" .string "so I'm pretty confident about my speed.$" //what you say if you HAVE battled before MariaReBattle_Text_Ask: .string "Are you keeping up with your training?\n" .string "I sure am!\l" .string "Let me show you the evidence!$" //what they say once you've agreed to battle MariaBattle_Text_BattleBegin: .string "Training is meaningful only if you\n" .string "keep it up regularly!$" //what they say after you beat them MariaBattle_Text_BattleEnd: .string "I need to get more practices in,\n" .string "I guess.$" //what they say if you decline to battle Maria_Text_Decline: .string "I'll resume training tomorrow.\n" .string "Let's battle sometime!$"
0 notes
Text
first sprite I've made that I think I actually did ok on, yay!
Tumblr media
I reckon he really fits in among the other in-training dim card sprites. he doesn't have as many colours, because he needs to fit in with the limit of 15 for putting into emerald. The dim card sprites all have like, 100 slightly different shades
Tumblr media
"your welcome to talk to me and my son whenever you please"
Tumblr media
1 note · View note
Text
I'm learning how to use the pret, and am too shy to post on pokeecomunity.
These are just notes to my forgetful future self on how to do things. Tags I'm using
Code - Trainer Battle
Art - sprites
0 notes
Text
2-v-1 battles (you and a friend vs an NPC)
Tumblr media Tumblr media Tumblr media Tumblr media
pretty proud of my wally tag battle I coded, although its not actually very complicated. i worked it out though! There's still a couple movements and things that could be finessed a little, but on the whole its pretty good! If you decline the tag battle, wattson is clearly disappointed and calls you a bad friend.
Code for a 2v1 (most of it. not including speech cause eh
pre-setup (files that need to exist to pull off a 2-v-1)
define the partner you'll fight with
include\constants\battle_partner.h
Define your new partner to the end of the list, and update the partner count accordingly
ifndef GUARD_CONSTANTS_BATTLE_PARTNERS_H define GUARD_CONSTANTS_BATTLE_PARTNERS_H define PARTNER_NONE 0 define PARTNER_STEVEN 1 define PARTNER_WALLYWATSON 2 define PARTNER_COUNT 3 endif  // GUARD_CONSTANTS_BATTLE_PARTNERS_H
give them a backsprite
because I re-used Wally, i THINK you just need to put them into graphics/trainers/back_pics, but no idea. for re-using wally, mine just worked
give the partner some pokemon
src\data\battle_partners.party
it has the same smogon format as the normal parties, with a slightly reduced format for the name and class and pic. just copy what's there for Steven and adjust accordingly.
=== PARTNER_WALLYWATSON === Name: WALLY Class: Rival Pic: Wally Gender: Male Music: Male Delcatty (F) @ Sitrus Berry Ability: Wonder Skin Level: 30 EVs: 144 HP / 132 Def / 132 SpD Assist Fake Out Light Screen Hyper Voice Roselia @ Eviolite Ability: Poison Point Level: 30 EVs: 240 HP / 148 Def / 120 SpD IVs: 0 Atk Sunny Day Toxic Spikes Magical Leaf Sludge Kirlia (M) @ Eviolite Ability: Trace Level: 30 EVs: 160 HP / 156 Def / 172 SpD IVs: 0 Atk Dazzling Gleam Light Screen Reflect Psybeam
actual battle code (after pre-setup has been done)
this is all defined in the script for your map, just like how you would for a normal battle.
TrainerBattleWattsonMultiWithWally_MultiBattleStart:: //if you want them to say something before picking your pokemon, place it here //battle starts //saves the current player party to memory special SavePlayerParty //asks the player to pick three of their pokemon. there's an instruction for pick six, but it doesn't work for this purpose fadescreen FADE_TO_BLACK special ChooseHalfPartyForBattle waitstate //if you want them to say something after picking your digimon, but before you fight, place it here. //initiates the battle. structure is (command) (opponent, from normal trainer list) (what they say when defeated) (the partner, from the partner trainer list) multi_2_vs_1 TRAINER_WATTSON_1, MauvilleCity_Gym_Text_WattsonDefeat, PARTNER_WALLYWATSON //checks if you win switch VAR_RESULT //if you won the battle, go to a new event. case 1, TrainerBattleWattsonMultiWithWallyVICTORY //if you lost the battle fadescreen FADE_TO_BLACK special SetCB2WhiteOut waitstate TrainerBattleWattsonMultiWithWallyVICTORY: //whatever you need to happen after the battle goes here. You prob dont need this, but because i was writing a gym battle script, there was a ton of flags to put here release end //Text MauvilleCity_Gym_Text_WattsonDefeat: string: "Oh no you won.$"
0 notes
Text
Double Battles (2npc's in the overworld)
Tumblr media
worked on updating my tag battle code. it's working better now (removed the check for having at least two pokemon. if you only have one then you can just get fucked). It works the same as my single trainer battle code, only with separate comments depending on which trainer you talk to.
//Anna and Meg trainer fight TrainerBattleAnnaMegDouble_Anna:: lockall faceplayer goto_if_not_defeated TRAINER_ANNA_AND_MEG_1 AnnaMeg_AskforInitialBattle_Anna goto_if_eq AnnaMeg_AskforRematch_Anna end TrainerBattleAnnaMegDouble_Meg:: lockall faceplayer goto_if_not_defeated TRAINER_ANNA_AND_MEG_1 AnnaMeg_AskforInitialBattle_Meg goto_if_eq AnnaMeg_AskforRematch_Meg end //if you have battled them before AnnaMeg_AskforRematch_Anna: msgbox AnnaMegReBattle_Text_Ask_Anna, MSGBOX_YESNO compare VAR_RESULT, TRUE goto_if_eq AnnaMegBattleStart_Anna goto_if_ne AnnaMegDecline_Anna releaseall end AnnaMeg_AskforRematch_Meg: msgbox AnnaMegReBattle_Text_Ask_Meg, MSGBOX_YESNO compare VAR_RESULT, TRUE goto_if_eq AnnaMegBattleStart_Meg goto_if_ne AnnaMegDecline_Meg releaseall end AnnaMegReBattle_Text_Ask_Anna: .string "ANNA: I can't keep losing in front of\n" .string "my junior partner, right?$" AnnaMegReBattle_Text_Ask_Meg: .string "MEG: I'm going to tag up with my\n" .string "senior partner and win this time!$" //if you haven't battled them before AnnaMeg_AskforInitialBattle_Anna: msgbox AnnaMegInitialBattle_Text_ask_Anna, MSGBOX_YESNO compare VAR_RESULT, TRUE goto_if_eq AnnaMegBattleStart_Anna goto_if_ne AnnaMegDecline_Anna releaseall end AnnaMeg_AskforInitialBattle_Meg: msgbox AnnaMegInitialBattle_Text_ask_Meg, MSGBOX_YESNO compare VAR_RESULT, TRUE goto_if_eq AnnaMegBattleStart_Meg goto_if_ne AnnaMegDecline_Meg releaseall end AnnaMegInitialBattle_Text_ask_Anna: .string "ANNA: I'm with my pretty junior student\n" .string "partner. I have to do good!$" AnnaMegInitialBattle_Text_ask_Meg: .string "MEG: I'm going to tag up with my super\n" .string "senior student partner and beat you!$" //regardless, this is the start of the battle. AnnaMegBattleStart_Anna: cleartrainerflag TRAINER_ANNA_AND_MEG_1 trainerbattle_single TRAINER_ANNA_AND_MEG_1, AnnaMegBattle_Text_BattleBeginAnna, AnnaMegBattle_Text_BattleEndAnna releaseall end AnnaMegBattleStart_Meg: cleartrainerflag TRAINER_ANNA_AND_MEG_1 trainerbattle_single TRAINER_ANNA_AND_MEG_1, AnnaMegBattle_Text_BattleBeginMeg, AnnaMegBattle_Text_BattleEndMeg releaseall end AnnaMegBattle_Text_BattleBeginAnna: .string "You HAVE to let me win!$" AnnaMegBattle_Text_BattleEndAnna: .string "ANNA: I'm with my pretty junior student\n" .string "partner! Let me win!$" AnnaMegBattle_Text_BattleBeginMeg: .string "MEG: I hope I look good in front\n" .string "of ANNA.$" AnnaMegBattle_Text_BattleEndMeg: .string "MEG: Oh, no!\n" .string "I'm sorry, ANNA! I let you down…$" //if you decline the battle AnnaMegDecline_Anna: msgbox AnnaMeg_Text_DeclineAnna, MSGBOX_DEFAULT releaseall end AnnaMegDecline_Meg: msgbox AnnaMeg_Text_DeclineMeg, MSGBOX_DEFAULT releaseall end AnnaMeg_Text_DeclineAnna: .string "ANNA: We can't take this lying down!\n" .string "You will come back, won't you?$" AnnaMeg_Text_DeclineMeg: .string "That's so discouraging…$"
0 notes