Okay, so I already did my reading on this thread: http://pokemon-online.eu/threads/changes-to-pokemon-database-guide.11059/ So it's not like I didn't do my research buuuuuuuuut... I'm still pretty stumped right now. So, I want to make an RPG server, but before I get to that, I want to make my RPG server feel unique so I'm trying to make a lot of Pokemon edits so it can feel like it's own game. I want to playtest all the Pokes before actually deciding the RPG stuff. But as for the Pokes, moves/abilities are where I'm stumped right now. The first thing I want to do for the first Poke I'm playtesting is make it so Hydro Pump and Aeroblast are Pulse moves so they get the 50% buff from Mega Launcher. But I don't want them to be Ball moves because that'd make Bulletproof block them. So according to that thread, Pulsing moves have 2048 in their flags buuuut, literally no Pokemon has 2048 in their flags, so what I tried to do was copy/paste Water Pulse's flags (Dark Pulse also has the same exact flags) onto Hydro Pump for testing, but after playtesting, Hydro Pump does the same amount of damage before and after the test. =/ If anyone could help me that'd be appreciated soooooooo much! The change I listed above is priority, but other changes I don't know how to do are creating some abilities I'll list below. Quick Volt: Electric version of Gale Wings Quick Flare: Fire version of Gale Wings Momentum: Basically Moxie but instead of increasing Attack after getting a KO, increases Speed instead Molten Wings: Removes Stealth Rock (not all hazards, just Stealth Rock) from your side of the field when the Pokemon is sent out, the Pokemon also doesn't take the rocks damage either (using this ability for Moltres). Oh! And while it isn't an ability or move, how can I make it so Light Ball works on more Pokes than just Pikachu? I want Pichu to get buffed by Light Ball too. I'm considering adding new Megas too, but I heard that's glitchy. I haven't attempted it yet though, is there anything I need to know? So yeah, that's everything I think I have to ask about for now. If anyone can help, THANKS A BUNCH! :D
Quick Volt and Quick Flare would require changing the actual code for Gale wings to accept an argument rather than always work on Flying. Momentum would require changing the code to accept arguments as well. I could probably adjust the actual code to allow it and have no problems. Then you would be able to just change a simple database file rather than fumbling around with the code. In my opinion, it should have been coded that way in the first place to help future proof for the next gen. Molten Wings would require coding a brand new ability. Something along the lines of (but I know this won't work fully. You're essentially taking Defog's hazard removing part and putting it into an ability that on switch out it does the same effects. Spoiler ps: this forum has bad spacing Code (text): struct AMMoltenWings : publicAM{ AMMoltenWings(){ functions["UponSetup"]=&us; } static void us(int s,int,BS &b){ foreach (int p,players){ BS::context&c = team(b,p); if(c.remove("Spikes")+c.remove("ToxicSpikes")+c.remove("StealthRock")+c.remove("MistCount")+c.remove("SafeGuardCount")+c.remove("StickyWeb")){ clear = true; } } if (clear){ b.sendAbMessage(x,0,s); } } }; As far as light ball goes, this one is actually easy to change in bin/db/items/6G/item_effects.txt Code (text): 92 8-25_20_1_3#Light Ball change that to Code (text): 92 8-25/172_20_1_3#Light Ball If you want to make Light ball work on other Pokemon you just add "/x" after the 25 where "x" is their dex number. In this case, we added 172 which is Pichu. If you added like "/417" then Pachirisu would also get a Lightball boost as well.
Nice! I'll get to testing these tonight! :D Can you tell me how to make Aeroblast and Hydro Pump Pulse moves (so they're affected by Mega Launcher, but not ball moves, so Bulletproof doesn't block them)? Those are the changes I want to playtest most, but didn't see anything about that in your post. As for the Molten Wings script you posted, what file do I edit to put that in? I'm only familiar with basic editing of learnsets, stats and basic abilities (since the "ate" ability seems to use the same script for Pixilate/Aerilate/Etc and just as the type for the variable, I know how to make custom abilities like "Electricate", Electric Pixilate, but that's the only type of custom ability I know how to make). Also for the Molten Wings script, wouldn't using Rapid Spin's script work better? I don't wanna get rid of all Stealth Rocks, just mine, I want them to stay on my opponent's side of the field.
Sorry for double post, but I also just remembered another thing I want to do! How to I make a form of a Not Fully Evolved Pokemon that isn't affected by Eviolite, like how Eternal Flower Floette can't actually evolve so it isn't affected, but is a form of a Pokemon that can evolved? Basically I wanna make a Squirtle form (Squirtle-D, to be specific) with a 600 BST however the catch is Eviolite doesn't work on Squirtle-D. Thanks to whoever can help with that! :D
Oh right, Rapid Spin would be better. And you'd have to write the code in src/BattleServer/abilities.cpp, then you'll need to edit bin/db/abilities/ability_effects_6G.txt As far as moves being affected by Mega Launcher, bin/db/moves/6G/flags.txt Everything is sorted so it's move index number then flag. So like "1 73" means move 1 has the flag value of 73. To determine what that actually means, you use the following chart and subtract the largest number possible (in this case 64). So Move 1 has the Memorable flag... and 9 more points. Continue to do this until you reach 0. Move 1 will be Contact, Blocked by Protect, and copyable with Mirror Move. Which makes sense as Move 1 = Pound. Spoiler: flags ContactFlag = 1, // Is the move a contact move ChargeFlag = 2, // Is the move a charging move? not used by PO yet RechargeFlag = 4, // Is the move a recharging move? not used by PO yet ProtectableFlag = 8, //Can the move be protected against MagicCoatableFlag = 16, //Can the move be magic coated SnatchableFlag = 32, //Can the move be snatched MemorableFlag = 64, //Can the move be mirror moves PunchFlag = 128, //Is the move boosted with Iron Fist SoundFlag = 256, //Is the move blocked with SoundProof FlyingFlag = 512, //Is the move an invulnerable move (shadow force/...)? not used by PO yet UnthawingFlag = 1024, // Does the user of this move unthaw when frozen? FarReachFlag = 2048, // Can this move reach targets far across in triples? HealingFlag = 4096, //Can this move be blocked with Heal Block MischievousFlag = 8192, // Can this move bypass substitute? BiteFlag = 16384,//Strong jaw moves PowderFlag = 32768, //Powder moves BallFlag = 65536, //Ball moves for Bulletproof LaunchFlag = 131072 //Moves that get boosted by Mega Launcher So to make something boosted by Mega Launcher you'd just add 131072 to the value in that file. If you need help decoding the values, bin/db/moves/moves.txt has the "key". Alternatively, for moves introduced in Gens 1-5, you can use http://bulbapedia.bulbagarden.net/wiki/List_of_moves (but note this will NOT work for anything added in 6th gen). Finally for Eviolite, you would change the file in src/BattleServer/items.cpp, currently line 590 it says Code (text): if (PokemonInfo::HasEvolutions(b.poke(s).num().pokenum) && b.poke(s).num() != Pokemon::Floette_EF ) { You'll add Code (text): && b.poke(s).num() != Pokemon::Squirtle_D right after Floette_EF. Then if you open src/libraries/PokemonInfo/enums.h, around line 910 or so, you'll see things like Code (text): Gourgeist_L=Gourgeist+(2<<16), At the end of the list, just add Code (text): Squirtle_D = Squirtle + (1 << 16) Make sure to watch the commas on the end of the line. tl;dr: Flags are easy, your ability and new form require more advanced edits considered outside of the scope of a database mod. In addition, whenever a new version is released, you'll have to re-add everything if you were to update.
Where is the folder src/BattleServer/? I can't find it anywhere in my PO folder. I see a battleserverplugins folder which I don't think has anything to do with this and there's a BattleServer.exe file and I have no idea what that does. I'm sure I have the files cause they're where the scripts/abilities are stored buuuuuut... I have no idea where to find them, I searched my entire hard drive for "battleserver" and no folder is popping up. Just battleserverplugins folders and BattleServer.exe files ;_; Any help? ^^; The flags got the Mega Launcher boost to work on Hydro Pump and Aeroblast which is great! I just hope I didn't mess with Aeroblast's crit ratio since I know that's its secondary effect, fortunately Hydro Pump is just an attack with no additional effect. XD
any of the more advanced changes can't be done in the database, you have to change the source code and recompile it yourself: https://github.com/po-devs/pokemon-online this includes some of the stuff that fuzzy mentioned, like making changes to src/BattleServer/items.cpp. to do more changes, you'd probably have to know some C++, and like fuzzy mentioned, your changes would have to be done for each new release, but you can pretty much change any mechanic from the source
Well this is pretty cool, an aspect I knew nothing about! Knowledge is power! :D Just curious though, where do I put my src folder for my custom server though? Do I just put it in the main server folder? Or I put it in my actual PO folder? Thanks for letting me know this though, kinda felt like I couldn't do all these edits via the db folder and this confirms it. XD
unfortunately, its trickier than just putting the src folder in your PO folder: When making changes to the source code, you actually have to make a whole new version of PO. after compiling the code, you get a separate set of PO folders and stuff. i've never worked with PO on windows, so i'm not sure if this is up to date, but this is a link for compiling from source. http://pokemon-online.eu/threads/running-from-the-source-on-windows.24233/ you should probably run through this one time without editing any files, and get a working copy of the server running, then try to make changes afterwards
For the most part, that link Duster provided will work. There's a lot easier method now to do it, but I need to find some time to be able to rewrite the guide. If you download Github for Windows you can skip any step related to Git bash. Cloning the source is much easier too with it. Then you don't need to know a bunch of Git markup to be able to change stuff easily. https://windows.github.com/ Setting up Qt Creator is pretty much the same process though.