• The Eevee Expo Game Jam #10 has concluded, congratulations to all participants! Now it's time for the judges to play through the games, and you can play along to vote who deserves the community choice spotlight.
    You can check out the submitted games here!
    Play through the games and provide some feedback to the devs while you're at it!
  • Hi, Guest!
    Some images might be missing as we move away from using embedded images, sorry for the mess!
    From now on, you'll be required to use a third party to host images. You can learn how to add images here, and if your thread is missing images you can request them here.
    Do not use Discord to host any images you post, these links expire quickly!

Database for Move, Ability, and Item Ideas

zarexraze

Novice
Member
Joined
Apr 15, 2017
Posts
22
This thread is simply meant to be a public directory of sorts for the discussion/sharing of Moves, Abilities, and Items ideas.
One can draw inspiration from these public ideas, and can also discuss the development, theme, competitive balancing, and even the coding of the idea as in how it would work.
One can also discuss the state of current moves, abilities, etc. in the vein of discussing their use, distribution, and if you feel they need a buff/nerf.
All ideas posted here are in the public domain of use, meaning anyone can use an idea, credit to the Relic Castle being appreciated.

Getting all that out of the way, I'll start this discussion off with a few ideas:
- You know how when a move hits multiple targets, the damage for each Pokemon is reduced? Well, what if the power was increased when hitting multiple targets? That thought process led me to this:
Food Trail
Bug-type
Power: 55, Special
Accuracy: 100
PP: 20
"The user sends out a trail of pheromones towards the target, thus causing a swarm of insects to attack them. Does more damage to multiple targets."

- I'm honestly thinking of nerfing the move Knock Off. Just removing the item is crippling enough, the bonus damage is just unnecessary. Therefore, what if the move no longer had bonus damage, but tweaked to a power of 70 and an accuracy of 95. Then I figured that some strategies could hinge on the bonus damage, so I decided to add a new item with this change:
Barbed Hook
Price: 48 BP
Sell: 5500
"An item to be held by a Pokémon. This pointed, barbed hook doubles the damage of any move that manages to knock off an item."

- This idea is honestly because I'm so sick of getting Togepi with Hustle. Yes, the ability makes sense in Japanese, but it didn't translate well and it's really bad on the Togekiss, so here's a new ability to replace their Hustle:
Enthusiasm
"The user's enthusiasm raises the Speed stat, but any additional effects are negated."
The Speed stat is raised by 50%. The effects of Life Orb on this Pokemon are unaffected.

EDIT: I have created a new spreadsheet to keep track of all the ideas: https://docs.google.com/spreadsheets/d/1QBViwOh1WwA0Ey8sc-PGoku1YCZnMShjtNbQHAQLC6E/edit#gid=0
 
Last edited:

MGriffin

Trainer
Member
Joined
May 8, 2017
Posts
90
I love the idea of something like Smogon's move dex for fan ideas, I remember reading through hundreds of these sorts of threads to find inspiration.

Anyway here's a few of mine (sorry, these things don't have names!):

Items
"The holder's attack stat and defense stats are swapped."
Like Power Trick, makes Pokémon like Shuckle and Umbreon more useful in-game where having a bulky team is less relevant.

Abilities
"All the user's moves are special."
For example Nasty Plot Infernape can use Close Combat instead of Focus Blast; and Alakazam can use the elemental punches again.

"The user can unleash the attack of its held item."
Probably a Mew/Smeargle-only ability, lets the user hold any TM and use it in battle (i.e. similar to the Mega Evolve / Z-Move button).

"The users' weak moves go first."
Like Technician, but +1 priority instead of +50% damage. Makes early-game moves like Ember relevant later.
 

zarexraze

Novice
Member
Joined
Apr 15, 2017
Posts
22
I love the idea of something like Smogon's move dex for fan ideas, I remember reading through hundreds of these sorts of threads to find inspiration.

Anyway here's a few of mine (sorry, these things don't have names!):

Items
"The holder's attack stat and defense stats are swapped."
Like Power Trick, makes Pokémon like Shuckle and Umbreon more useful in-game where having a bulky team is less relevant.

Abilities
"All the user's moves are special."
For example Nasty Plot Infernape can use Close Combat instead of Focus Blast; and Alakazam can use the elemental punches again.

"The user can unleash the attack of its held item."
Probably a Mew/Smeargle-only ability, lets the user hold any TM and use it in battle (i.e. similar to the Mega Evolve / Z-Move button).

"The users' weak moves go first."
Like Technician, but +1 priority instead of +50% damage. Makes early-game moves like Ember relevant later.
Hey, thank you for the ideas! Sorry for not replying earlier, but was working on something.

-- The swapping of Attack and Defense is a really neato idea, my first thoughts were: "Give that to a Tailwind-boosted Cloyster with Skill Link and oomph, buddy." (which isn't a bad thing, I'd love to try that out). I guess a good name for it would be the Resistance Band, coming from Resist Wing which raises Defense, and Choice Band which boosts Attack. And maybe a reverse of that could be the Clever Specs, swapping Sp.Defense for Sp.Attack.
-- Your second idea actually is a really good idea, as it allows for some Pokemon's mixed movepool to immediately be 100% available in competitive sense. Another name idea could be either Intellectual or Mentality, either one could work.
-- That sounds like a very complex ability, and I'd think it wouldn't just be TMs either. Maybe some items could also transform into a one-time move, like maybe the Wings could be converted into a status raising move of that stat (ex: the Genius Wing could convert into a Nasty Plot or something). As for the name, it could be named Craftsman or Artisan.
-- I actually really struggled coming up with a name for your last one, but I came to a few things. It could either be Zippy, Nimble, or Nippy. Again, any one of these could work. And as for the ability itself, I'm assuming the cutoff base power is 60 or less, right? If that's the case, then Incinerate could suddenly become more useful.

As for the thing I was working on, since the thread for Theories Behind Pokemon Weaknesses did this, it would be absolutely essential for me to do this as well:
https://docs.google.com/spreadsheets/d/1QBViwOh1WwA0Ey8sc-PGoku1YCZnMShjtNbQHAQLC6E/edit#gid=0
This is very simply a spreadsheet to keep track of all the suggestions that people have posted here. There's a tab each for new moves, abilities, and items, and also any ideas for alteration of existing moves, abilities, and items, because as previously stated, people can also suggest changes to current things found in game.
I'll be editing the original post to include this.

Also, some more move ideas of mine:
-- Honestly I just want something for Ledian, and Ledian alone. The poor thing, it needs something really good. So here it is:
Starback Strike
Bug-type
Power: 10, Physical
Accuracy: 100
PP: 25
A punching multi-hit move that increases in damage (by 15%) for each successful hit. Increased chance of more hits if the user is Ledian. Can have extra effects depending on the time of day. Chance to lower Def in online battles.

-- This came from utilizing a connotation awarded to the Bug-type, that being of automobiles. Thanks to the move U-turn, which in Japanese means Dragonfly Round-trip, one could make a case for car-like moves to be Bug-type. Thus, I have here:
Stop Light
Bug-type, Status
Accuracy -
PP 10
"The user flashes a series of directory lights all across the user's side. For this turn, all-super-effective hits are negated at their respective target."
This only applies to the user and allies, like Wide Guard and Mat Block. It can also fail with repeated use, like the Protect clones.

-- My first attempt at making a move similar to Freeze Dry. I'd imagine that Midnight Lycanroc would get this move:
Vital Crush
Dark-type
Power: 65, Physical
Accuracy: 95
PP: 15
"The user breaks the targets inner vitals with a brutal intent. Super-effective to Fighting-types."
 
Last edited:

MGriffin

Trainer
Member
Joined
May 8, 2017
Posts
90
-- I actually really struggled coming up with a name for your last one, but I came to a few things. It could either be Zippy, Nimble, or Nippy. Again, any one of these could work. And as for the ability itself, I'm assuming the cutoff base power is 60 or less, right? If that's the case, then Incinerate could suddenly become more useful.
Thanks for the kind words! You guessed correctly, it's just a rip-off of Technician :blush:

As for the thing I was working on, since the thread for Theories Behind Pokemon Weaknesses did this, it would be absolutely essential for me to do this as well:
https://docs.google.com/spreadsheets/d/1QBViwOh1WwA0Ey8sc-PGoku1YCZnMShjtNbQHAQLC6E/edit#gid=0
This is very simply a spreadsheet to keep track of all the suggestions that people have posted here. There's a tab each for new moves, abilities, and items, and also any ideas for alteration of existing moves, abilities, and items, because as previously stated, people can also suggest changes to current things found in game.
I'll be editing the original post to include this.
Very cool! I'll make sure to add anything else I think of!

Don't hold me to it, but I might try to get Essentials (or rather RPG Maker XP) running in Linux so that we can link to patches that add the effects.

Also I really like Stop Light's effect and the name is neat too, Charjabug definitely looks like it could get it.
 

zarexraze

Novice
Member
Joined
Apr 15, 2017
Posts
22
After I had finished my Experience formula, I decided to peak my interest into another mechanic that deals with math: Hidden Power.
That's right, I went ahead and refigured Hidden Power and have figured out the values and their outputs for people to use. As this concerns an official move and it's mechanics, it would be best to post it here.

First, I will not be taking into account the base power formula found in earlier official games. That will not change no matter how many types you add to the type formula, and as such it can simply be used as verbatim.
Second, the Hidden Power type formula is this:

HPcalc1.png

Where, in alphabetical order:
  • a is equal to 1 if the HP IV is odd, is 0 if otherwise.
  • b is equal to 1 if the Attack IV is odd, is 0 if otherwise.
  • c is equal to 1 if the Defense IV is odd, is 0 if otherwise.
  • d is equal to 1 if the Speed IV is odd, is 0 if otherwise.
  • e is equal to 1 if the Sp.Attack IV is odd, is 0 if otherwise.
  • f is equal to 1 if the Sp.Defense IV is odd, is 0 if otherwise.
Now to implement the changes, you do not need to change anything in regards to the variables. All you need to change is the number after that, a.k.a. the 15.
What the 15 does is give the final result a variation of 0 to 15, or 16 different values in total. Each value correlates to a type, and since the "side brackets" basically tell the final result to be rounded down, it allows for multiple sets of odd and even IVs to produce the same type (with a specific maximum of 64 possibilities).
In order to add a new type to the roster of possibilities, you need to increase the amount that the final result can vary. Since Hidden Power's list of applicable types do not include the Normal-typing, you simply need to increase the 15 into 16, giving the equation a total of 17 different values, and then edit the conversion table (which is literally just a list) to make the higher possible value of 16 to equate to the Fairy-typing.

Now, this is where people may think, "well if it was that simple, then why didn't they change it already?" Well I can assure you, it wasn't due to forgetfulness. It was due to variance.
What do I mean by this? Well, by the way the numbers work, as stated previously, multiple sets of odd and even IVs can produce the same type. As a result of this, one can create a percentage of numbers that produce a certain number, and thus a percentage of how much of all possible sets can equate to a typing. Now remember, that due to the fact that all possible outputs are rounded down, this means that some numbers are slightly higher in percentages, which means that more IV sets tend to slightly favor a specific result.
Say for example, that all values of 5 equate to the Bug-type. Under the 0-15 variance, there are enough possible sets to equate to a 7.8125% percentile out of all sets, with one possible set having only two odd IVs in Speed and Sp.Attack. But if the variance is 0-16, that IV set suddenly equates to a value of 6, due to the percentiles being altered thanks to the new highest possible value.
In layman's terms, if the 15 value was altered to include a 16 value, then it was absolutely possible for a Pokemon transferring over from a game with 0-15 variance to suddenly have a type of Hidden Power that was different from the previous game, and almost 99.9% of that equated to the move being ill-fit for competitive use. Hence why Game Freak played the safe card in regards to Hidden Power's type formula.

But fan games have no need to take into account transferring Pokemon, as just about every fan game is made to stand on their own footing. As such, I have calculated a total of Four new values to replace 15 for game creator's use. I won't post a type conversion table with each value for two reasons, one being that it's entirely subjective to the sort of game you're going for, that and as previously stated, since some outputs of the formula are more common, it can be a unique take for creators to give the more common values to the types with weaker offensive capabilities, for example.
As for the four variables, each one has a specific use:
6.25% for outputs of 0 through 14.
4.69% for outputs of 15.
1.56% for outputs of 16.
6.25% for outputs of 0, 1, 2, 4, 5, 7, 8, 9, 11, 12, 14, 15, and 16.
4.69% for outputs of 3, 6, 10, and 13.
6.25% for outputs of 0, 1, 2, 4, 5, 7, 8, 9, 11, 12, 14, and 15.
4.69% for outputs of 3, 6, 10, 13, and 16.
1.56% for outputs of 17.
6.25% for outputs of 0, 1, 3, 5, 7, 9, 11, 13, 15, and 17.
4.69% for outputs of 2, 4, 6, 8, 10, 12, 14, and 16.


Soooo, that's it really. I hope this can help anyone who's interested in the matter, and this was rather fun to start up and figure out.
P.S. Almost forgot to mention any actual outside changes to Hidden Power. Considering that over time, as more and more moves are added to the game, all Pokemon should theoretically be able to have access to all types of moves in the future, therefore making the gimmick that is Hidden Power not future-proof. To give it a bit more finesse, I suggest making the base power of the move 65, and also adding a 10% chance to raise all the users stats, akin to moves such as Silver Wind and Ancient Power. That, and a physical Hidden Power would be really nice. In consideration that we have a physical, type-varying move already in the form of Natural Gift, perhaps an appropriate name for a physical Hidden Power could be Hidden Gift.
 
Last edited:

MGriffin

Trainer
Member
Joined
May 8, 2017
Posts
90
I tried implementing Resistance Band and Intellectual. It's pretty straightforward, but making a diff was pretty tricky because it doesn't look like the scripts are stored in plain text and so I ended up doing it by hand.

Code:
Expand Collapse Copy
PBS/items.txt
+526,RESISTANCEBAND,Resistance Band,Resistance Bands,1,200,"An item to be held by a Pokémon. It swaps the holder's attack and defense.",0,0,0,
 
scripts/PokeBattle_Battler
class PokeBattle_Battler
-  attr_accessor :attack
+  attr_writer :attack
 
 ###
 # Complex Accessors
 ###
-  def defense
-	return @battle.field.effects[PBEffects::WonderRoom]>0 ? @spdef : @defense
-  end
+  def attack
+	return self.hasWorkingItem(:RESISTANCEBAND) ? @defense : @attack
+  end
+
+  def defense
+	return self.hasWorkingItem(:RESISTANCEBAND) ? @attack : @battle.field.effects[PBEffects::WonderRoom]>0 ? @spdef : @defense
+  end

IIUC this doesn't break Psyshock.
Code:
Expand Collapse Copy
PBS/abilities.txt
+165,INTELLECTUAL,Intellectual,"Moves do special damage."
 
scripts/PokeBattle_Move
-	if type>=0 && pbIsSpecial?(type)
+	if (type>=0 && pbIsSpecial?(type)) || attacker.hasWorkingAbility(:INTELLECTUAL)

I'm still trying to get Artisan working, it's a pretty invasive change and honestly I don't have any idea how everything is supposed to work so I'm just poking around and seeing what sticks.
 

Streetie

Novice
Member
Joined
Aug 20, 2017
Posts
10
Some of these ideas are really creative, I really like them!
I'll throw some of my abilities in the mix as well!

Bad Berries(Turtwig line)
This is basically effect spore on steroids, so it procs 10% more often and there are more effects like stat drops or direct HP loss. The idea behind the ability is that the Pokémon that makes contact eats a bad berry from this Pokémon's back and gets negatively affected.

Monkey Business(Chimchar line)
This is a form of Moxie, but this raises the Speed and Evasion of the Pokémon instead to create a possibility for a full sweep.

Penguin Power(Piplup line)
The Pokémon's Ice and Flying moves are boosted by 50% in damage. I feel this will help Empoleon later on in the game if his moveset will be changed to contain moves that can utilize this damage boost.

Fear Feeder
The Pokémon's Attack and Sp. Attack are raised by one stage when another Pokémon on the field flinches. This could work well with Banette if you give it Fake Out for example, but without a guarenteed flinch it can be quite situational. Design wise it fits with the Litwick line(if you have played Pokémon Super Mystery Dungeon).

Soul Eater(Dusknoir)
If this Pokémon uses a damaging attack on a Pokémon below 40% HP it will guarentee to faint the target. This is a strong abilty for sure, especially for a Pokémon that likes to stall, since it can deal a lot of damage at the end. I guess it may work amazing with multi-hit moves.

Frost Field(Froslass)
The Pokémon creates a field that freezes non-ice type Pokémon over 3 turns. In hail this only takes 2 turns. A guarenteed freeze effect can be devastating on every Pokémon, especially a fast hard-hitter like Froslass. Only thing is, she needs to be on the field for 3 turns for it to happen and she is quite squishy. The hail will help her, so running this in a hail team might work out amazingly. There will also be an ice-type attack that will deal double damage to frozen targets and thaw them, so the freeze can be utilized by Froslass.

Rewind(Dialga)
If the Pokémon's HP drops below 25%, revert his HP back to the start of the turn. Can only proc once in the whole battle. I always felt that legendaries had some lackluster abilities in game, like Pressure. They're legendary, so why not make them that way? I think the description explains it quite well and I feel it fits the theme of time quite well.

Realm Warp(Palkia)
If the Pokémon HP drops below 25%, swap the opposing Pokémon out and lower it's Defense and Sp. Defense stats by 1. Can only proc once per battle. Again I feel like Palkia deserved a better ability to fit his theme and I feel like this does the job pretty well.

These are all for now I have. Please let me know what you think of them!
 
Those are some really cool ideas! (I especially love that you gave Dialga and Palkia something better than Pressure!) I think a couple of them just might border on OP, though.

Monkey Business, in my opinion, should boost just the Speed stat. Abilities like Moxie are tricky to balance, because someone who's already winning has just received another boost, making it even harder for the player behind them to come back. Evasion is a stat that can already make battles extremely frustrating-Smogon even outright bans it-so to include where the person receiving it is already winning could get pretty bad. (Of course, this depends on the game you have planned-if Monkey Business can only be used by the player, it's not quite so much an issue)

Penguin is a bit too strong-Empoleon would be given four STAB types, giving it unresisted STAB against every type, including super effective damage on two of its three weaknesses. (And the Flying type technically doesn't suit a penguin-they're flightless birds!) As an alternative, what about an ability that relates to penguin's belly-sliding abilities? It could boost Empoleon's speed when it used a contact move, for example, though that might be too similar to Monkey Business.
 

Streetie

Novice
Member
Joined
Aug 20, 2017
Posts
10
Thanks for the feedback. I know some of them are a bit strong, but I want every Pokémon to have it's own kind of niche in the game.
Regarding Empoleon, I have another ability idea for him based on your belly slide idea, but that requires him to be restructured into a physical attacker.

Slippery Slide(or Sliding Momentum)
If it's raining, raise speed by 50% and power up moves that make contact with 50%.

This will make him good for rain teams. I also planned to make a damaging move that also summons rain for Empoleon, but this will be a special move with not to much damage, so it won't fit the best with the physical attacker idea, but it will help to make its ability useful in game I guess.

For Infernape, the original idea was to just increase speed, but we thought it would just be a more mediocre version of Speed Boost, so we wanted to give it something of itself in evasion. We know that evasion is a tricky stat to balance, so we might still remove that part, especially if you think about the fact that most Speed Boost Pokémons are mediocre at best(except Blaziken and maybe Scolipede).
 

MGriffin

Trainer
Member
Joined
May 8, 2017
Posts
90
Penguin is a bit too strong-Empoleon would be given four STAB types, giving it unresisted STAB against every type, including super effective damage on two of its three weaknesses. (And the Flying type technically doesn't suit a penguin-they're flightless birds!)

This ability is definitely very powerful, but it's no worse than Greninja getting Protean, and Empoleon is a lot slower so it's probably not as broken (Greninja got banned by Smogon last gen!)
 

zarexraze

Novice
Member
Joined
Apr 15, 2017
Posts
22
Hey, sorry for the strange absence, school crept on me suddenly, and had to take care of that.

Firstly, @MGriffin, the code you submitted is phenomenal, just absolutely phenomenal. If you could assist me in providing links or showing me how to add that to the Database spreadsheet, that would be sweet.

Speaking of that, @Streetie, those are really neato ideas, the Bad Berries one especially. They've all been added to the spreadsheet for others to see.
And as for the whole Monkey Business ability, maybe make it so that upon knocking out a Pokemon, the users Speed increases sharply, and once that's up to maximum, it raises Attack, but lowers Defense and Sp.Defense sharply. I know that's a little broken at first, but Speed is simply turn order, and a tank can easily wall the two hits and dish something back before Attack is raised to ridiculous levels, plus it is an exclusive ability, so Infernape can use something a little worthwhile.


And as for me, I've gone through and made my own list of ideas for moves dealing with the Bug-type. A good half of these are from other sources (and as such, they need to be treated with the permissions from the original source) and the other half is ones of my creation.
I've already gone and done the liberty of adding them to the spreadsheet, so take a gander, they should start with Berry Drain and end with Bug Pulse.
I've also added a suggestion to alter Leech Life in there.
 
Last edited:

MGriffin

Trainer
Member
Joined
May 8, 2017
Posts
90
Welcome back, and wow, that's a lot of bug moves! When I read the name Scale Shed I thought it would also act like Shed Skin and heal any status. I really like the idea of bug moves inflicting poison and confusion, it feels very on-theme, it's strange that only Twineedle does anything like that.

I'd not heard of Pokémon Factory, but I'm glad you've introduced me to it! I'll have to find some time to go over all the other links too.

---

I'd love to assist you with getting the code into the spreadsheet, maybe there's some way that I can edit my post so that you can link directly to the code blocks? I'm not sure how people usually go about releasing their code changes for others to use, so I'm 100% open to better suggestions.

Is anyone in this thread developing a game at the moment? If I code up any more things I could try and prioritize the ideas that people want to include that are a little tricky to write (e.g. don't have a similar thing you could base your work off).

I have one other ability to suggest that feels like it belongs to Porygon and/or Kecleon.
"The user's type depends on its moves"
The user's type(s) is changed to be the same as its first two moves (similar to Z-conversion), if both moves have the same type then the user has only one type (obviously!)
 

zarexraze

Novice
Member
Joined
Apr 15, 2017
Posts
22
Concerning Scale Shed, having the ability Shed Skin would actually be one of a few criteria to gain 50% health, and I did this to also warrant some abilities hurting the effectiveness of this attack, like if the user has Marvel Scale (cough-Milotic-cough), they wouldn't have access to this Recover clone's full potential. Plus it makes sense, as if you don't have scales then what exactly are you shedding?
And yeah, PokeFactory is a somewhat relic of DPPt-ages, and it technically is what we are doing here, only in their case their moves/abilities/items were made to compliment their prime catalog of new species ideas, hence why many of their move/ability/item ideas are meant for one specific Pokemon.

What we could do for now is find out the weblink that will take a user directly to the specific post in a thread (much like what I did with your post about Resistance Band and Intellectual, I've updated that), though I've no idea how to do that formally, what I did was go through my history just to figure out that it's post-5240. If anyone is aware on how to do that for any post on Relic Castle, that would help us tons in the future.

About your Porygon/Kecleon ability, there's not much to say about it, but it is an interesting idea, and I've updated the spreadsheet with the name of Compliancy (the act of conforming, acquiescing, or yielding, according to Dictionary.com). I think it's a rather fitting name for the ability, so I hope it's okay.
 

MGriffin

Trainer
Member
Joined
May 8, 2017
Posts
90
Concerning Scale Shed, having the ability Shed Skin would actually be one of a few criteria to gain 50% health, and I did this to also warrant some abilities hurting the effectiveness of this attack, like if the user has Marvel Scale (cough-Milotic-cough), they wouldn't have access to this Recover clone's full potential. Plus it makes sense, as if you don't have scales then what exactly are you shedding?
Ooo, I like that a lot!

What we could do for now is find out the weblink that will take a user directly to the specific post in a thread (much like what I did with your post about Resistance Band and Intellectual, I've updated that), though I've no idea how to do that formally, what I did was go through my history just to figure out that it's post-5240. If anyone is aware on how to do that for any post on Relic Castle, that would help us tons in the future.
I think the little number in the bottom-right of each post is a link to that post. For example your most recent reply in this thread is #13.
 

MGriffin

Trainer
Member
Joined
May 8, 2017
Posts
90
Here's Artisan! The basic idea is to add a fifth hidden move for the held TM and make the Z-move button choose it.

This implementation has a side-effect of duplicating TMs when you give them to your Pokémon (with INFINITE_TMS enabled), but I think it's harmless.



Code:
Expand Collapse Copy
PBS/abilities.txt
 
+166,ARTISAN,Artisan,"Use held TM in battle."
 
 
scripts/PokeBattle_Scene
 
	cw.megaButton=0
-	cw.megaButton=1 if @battle.pbCanMegaEvolve?(index)
+	cw.megaButton=1 if @battle.pbCanMegaEvolve?(index) || @battle.pbCanUseArtisan?(index)
	pbSelectBattler(index)
 
 
	   elsif Input.trigger?(Input::A) # Use Mega Evolution
-		if @battle.pbCanMegaEvolve?(index)
+		if @battle.pbCanUseArtisan?(index)
+		  pbPlayDecisionSE
+		  return 4
+		elsif @battle.pbCanMegaEvolve?(index)
		  @battle.pbRegisterMegaEvolution(index)
 
 
scripts/PokeBattle_Battle
 
+	def pbCanUseArtisan?(index)
+	  return @battlers[index].hasWorkingAbility(:ARTISAN) && pbIsMachine?(@battlers[index].item)
+	end
 
 
scripts/PokeBattle_Battler
 
	   PokeBattle_Move.pbFromPBMove(@battle,pkmn.moves[3])
	]
+	if pbIsMachine?(pkmn.item)
+	  moves.push(PokeBattle_Move.pbFromPBMove(@battle,PBMove.new(pbGetMachine(pkmn.item))))
+	end
	@iv		   = []
 
 
scripts/PItem_Items
 
 def pbCanHoldItem?(item)
-   return !pbIsImportantItem?(item)
+   return !pbIsImportantItem?(item) || pbIsMachine?(item)
 end
 
 
scripts/PScreen_Bag
 
		  @scene.pbDisplay(_INTL("There is no Pokémon."))
-		elsif pbIsImportantItem?(item)
+		elsif !pbCanHoldItem?(item)
		  @scene.pbDisplay(_INTL("The {1} can't be held.",itemname))
 
 
scripts/PItem_Bag
 
 def self.pbDeleteItem(items,maxsize,item,qty)
	raise "Invalid value for qty: #{qty}" if qty<0
	return true if qty==0
+	return false if pbIsImportantItem?(item)
	ret = false

Compliancy. Reordering moves in-battle is slightly abusable—the type is recalculated whenever the Pokémon switches in.

You could fix this by moving the logic to the place where party Pokémon are turned into battle Pokémon. Alternatively you could do something with remembering the order of the moves at the start of the battle—this is a better approach if you want things like Insomnia to remove the types added by Compliancy (I don't think removing the ability works right now…)

Code:
Expand Collapse Copy
abilities.txt
 
+167,COMPLIANCY,Compliancy,"The Pokémon's type matches its moves."
 
 
scripts/PokeBattle_Battler
 
	@type1		= pkmn.type1
	@type2		= pkmn.type2
+	if self.hasWorkingAbility(:COMPLIANCY)
+	  @type1 = pkmn.moves[0].type
+	  if pkmn.moves[1].type != pkmn.moves[0].type
+		@type2 = pkmn.moves[1].type
+	  else
+		@type2 = nil
+	  end
+	end

Nimble. Only gives +1 priority to damaging moves (otherwise it would be a strictly better Prankster!)

Code:
Expand Collapse Copy
abilities.txt
 
+168,NIMBLE,Nimble,"Gives priority to the Pokémon's weaker moves."
 
 
scripts/PokeBattle_Battle
 
		pri+=1 if @battlers[i].hasWorkingAbility(:GALEWINGS) &&
				  isConst?(@choices[i][2].type,PBTypes,:FLYING)
+		pri+=1 if @battlers[i].hasWorkingAbility(:NIMBLE) &&
+				  @choices[i][2].pbIsDamaging? &&
+				  @choices[i][2].basedamage <= 60

---

@zarexraze

Food Trail. The description sounds like it should use the animation for Attack Order, but I don't think that can be described as a diff (i.e. in text using "+" and "-" to show what to do).

Code:
Expand Collapse Copy
moves.txt
 
+560,FOODTRAIL,Food Trail,159,55,BUG,Special,100,20,0,04,0,bef,"The user attracts insects with pheromones. Does more damage to multiple targets."
 
 
scripts/PokeBattle_Move
 
+  def pbModifyDamageTargetsMultiple(damage)
+	return (damage*0.75).round
+  end
 
@  def pbPriority(attacker)
 
 
@	# Multi-targeting attacks
@	if pbTargetsMultiple?(attacker)
-	  damage=(damage*0.75).round
+	  damage=pbModifyDamageTargetsMultiple(damage)
@	end
 
 
scripts/PokeBattle_MoveEffects
 
+class PokeBattle_Move_159 < PokeBattle_Move
+  def pbModifyDamageTargetsMultiple(damage)
+	return (damage*1.5).round
+  end
+end

Knock Off and Barbed Hook.

Code:
Expand Collapse Copy
moves.txt
-35,KNOCKOFF,Knock Off,0F0,20,DARK,Physical,100,20,0,00,0,abef,"The user slaps down the target's held item, preventing that item from being used in the battle."
+35,KNOCKOFF,Knock Off,0F0,70,DARK,Physical,95,20,0,00,0,abef,"The user slaps down the target's held item, preventing that item from being used in the battle."
 
 
items.txt
+527,BARBEDHOOK,Barbed Hook,Barbed Hooks,1,11000,"An item to be held by a Pokémon. A pointed hook that ups the power of moves that knock off items.",0,0,0,
 
 
scripts/Settings
-USENEWBATTLEMECHANICS = false
+USENEWBATTLEMECHANICS = true
 
 
scripts/PokeBattle_MoveEffects
@class PokeBattle_Move_0F0 < PokeBattle_Move
 
@	if USENEWBATTLEMECHANICS &&
-	   !@battle.pbIsUnlosableItem(opponent,opponent.item)
+	   !@battle.pbIsUnlosableItem(opponent,opponent.item) &&
+	   attacker.hasWorkingItem(:BARBEDHOOK)
@	   # Still boosts damage even if opponent has Sticky Hold
@	  return (damagemult*2.0).round
@	end

Enthusiasm. I figured you wanted this to be like Sheer Force from the description of Life Orb being negated.

Code:
Expand Collapse Copy
abilities.txt
 
+169,ENTHUSIASM,Enthusiasm,"Removes added effects to increase speed."
 
 
scripts/PokeBattle_Battler
 
@	end
+	if self.hasWorkingAbility(:ENTHUSIASM)
+	  speedmult=(speedmult*1.5).round
+	end
@	if self.hasWorkingItem(:CHOICESCARF)
 
@  def pbEffectsAfterHit(user,target,thismove,turneffects)
@	return if turneffects[PBEffects::TotalDamage]==0
-	if !(user.hasWorkingAbility(:SHEERFORCE) && thismove.addlEffect>0)
+	if !((user.hasWorkingAbility(:SHEERFORCE) || user.hasWorkingAbility(:ENTHUSIASM)) && thismove.addlEffect>0)
 
@	  # Additional effect
@	  if target.damagestate.calcdamage>0 &&
-		 !user.hasWorkingAbility(:SHEERFORCE) &&
+		 !(user.hasWorkingAbility(:SHEERFORCE) || user.hasWorkingAbility(:ENTHUSIASM)) &&

@Streetie

Bad Berries. I added negative versions of Sitrus, Leppa, and the status and stat berries.

I try the effects in a random order until we find one that can be applied. If you want some effects to be more likely than others you could add them to the list multiple times.

Code:
Expand Collapse Copy
abilities.txt
 
+170,BADBERRIES,Bad Berries,"Contact with the Pokémon may cause status effects."
 
 
scripts/PokeBattle_Battler
 
@		end
+		if target.hasWorkingAbility(:BADBERRIES,true) && @battle.pbRandom(10)<66
+		  PBDebug.log("[Ability triggered] #{target.pbThis}'s Bad Berries")
+		  [:CHERI, :CHESTO, :PECHA, :RAWST, :ASPEAR, :PERSIM,
+		   :LEICHI, :GANLON, :SALAC, :PETAYA, :APICOT, :MICLE,
+		   :LEPPA, :SITRUS].shuffle.each do |berry|
+			case berry
+			  when :CHERI
+				if user.pbCanParalyze?(nil,false)
+				  user.pbParalyze(target,_INTL("{1}'s {2} paralyzed {3}! It may be unable to move!",
+					 "rotten Cheri Berry",user.pbThis(true)))
+				  break
+				end
+			  when :CHESTO
+				if user.pbCanSleep?(nil,false)
+				  user.pbSleep(_INTL("{1}'s {2} made {3} fall asleep!",target.pbThis,
+					 "rotten Chesto Berry",user.pbThis(true)))
+				  break
+				end
+			  when :PECHA
+				if user.pbCanPoison?(nil,false)
+				  user.pbPoison(target,_INTL("{1}'s {2} poisoned {3}!",target.pbThis,
+					 "rotten Pecha Berry",user.pbThis(true)))
+				  break
+				end
+			  when :RAWST
+				if user.pbCanBurn?(nil,false)
+				  user.pbBurn(target,_INTL("{1}'s {2} burned {3}!",target.pbThis,
+					 "rotten Rawst Berry",user.pbThis(true)))
+				  break
+				end
+			  when :ASPEAR
+				if user.pbCanFreeze?(nil,false)
+				  user.pbFreeze(_INTL("{1}'s {2} froze {3}!",target.pbThis,
+					 "rotten Aspear Berry",user.pbThis(true)))
+				  break
+				end
+			  when :PERSIM
+				if user.pbCanConfuse?(nil,false)
+				  user.pbConfuse(_INTL("{1}'s {2} confused {3}!",target.pbThis,
+					 "rotten Persim Berry",user.pbThis(true)))
+				  break
+				end
+			  when :LEICHI
+				if user.pbCanReduceStatStage?(PBStats::ATTACK)
+				  user.pbReduceStatWithCause(PBStats::ATTACK,1,target,"rotten Leichi Berry")
+				  break
+				end
+			  when :GANLON
+				if user.pbCanReduceStatStage?(PBStats::DEFENSE)
+				  user.pbReduceStatWithCause(PBStats::DEFENSE,1,target,"rotten Ganlon Berry")
+				  break
+				end
+			  when :SALAC
+				if user.pbCanReduceStatStage?(PBStats::SPEED)
+				  user.pbReduceStatWithCause(PBStats::SPEED,1,target,"rotten Salac Berry")
+				  break
+				end
+			  when :PETAYA
+				if user.pbCanReduceStatStage?(PBStats::SPATK)
+				  user.pbReduceStatWithCause(PBStats::SPATK,1,target,"rotten Petaya Berry")
+				  break
+				end
+			  when :APICOT
+				if user.pbCanReduceStatStage?(PBStats::SPDEF)
+				  user.pbReduceStatWithCause(PBStats::SPDEF,1,target,"rotten Apicot Berry")
+				  break
+				end
+			  when :MICLE
+				if user.pbCanReduceStatStage?(PBStats::ACCURACY)
+				  user.pbReduceStatWithCause(PBStats::ACCURACY,1,target,"rotten Micle Berry")
+				  break
+				end
+			  when :LEPPA
+				found=false
+				for i in user.moves
+				  if i.id==user.lastMoveUsed && i.id>0 && i.pp>0
+					reduction=[10,i.pp].min
+					pbSetPP(i,i.pp-reduction)
+					@battle.pbDisplay(_INTL("{1}'s {2} reduced the PP of {3}'s {4} by {5}!",
+					   target.pbThis,"rotten Leppa Berry",user.pbThis(true),i.name,reduction))
+					found=true
+				  end
+				end
+				break if found
+			  when :SITRUS
+				if !user.hasWorkingAbility(:MAGICGUARD)
+				  @battle.scene.pbDamageAnimation(user,0)
+				  user.pbReduceHP((user.totalhp/4).floor)
+				  @battle.pbDisplay(_INTL("{1}'s {2} hurt {3}!",target.pbThis,
+					 "rotten Sitrus Berry",user.pbThis(true)))
+				  break
+				end
+			end
+		  end
+		end
@		if target.hasWorkingAbility(:EFFECTSPORE,true) && @battle.pbRandom(10)<3
 
Last edited:
Stargazer-Works similarly to Pickup. After each battle, the Pokemon has a chance to pick up a Comet Shard, Star Piece, or Stardust. The percentage chance is based on the Pokemon's level-a level 10 Pokemon has a 10% chance, a level 50 has a 50% chance, and so on.

I thought I had a good enough grasp on the code of Pickup to implement it, but it's not going too well. Here's what I've got so far (underPField_Field):
Code:
Expand Collapse Copy
def Kernel.pbStargazer(pokemon)
return if !isConst?(pokemon.ability,PBAbilities,:STARGAZER) || pokemon.isEgg?
return if pokemon.item!=0
 
stargazerList=pbDynamicItemList(
:COMETSHARD,
:STARPIECE,
:STARDUST
)
return if stargazerList.length!=3
randlist=[33,33,34]
items=[]
plevel=[100,pokemon.level].min
itemstart=(plevel)/10
itemstart=0 if itemstart<0
items.push(stargazerList[itemstart])
rnd=rand(100)
cumnumber=0
for i in 0...11
cumnumber+=randlist[i]
if rnd<cumnumber
pokemon.setItem(items[i])
		  break
	   end
	end
end
 

Streetie

Novice
Member
Joined
Aug 20, 2017
Posts
10
Stargazer-Works similarly to Pickup. After each battle, the Pokemon has a chance to pick up a Comet Shard, Star Piece, or Stardust. The percentage chance is based on the Pokemon's level-a level 10 Pokemon has a 10% chance, a level 50 has a 50% chance, and so on.

I thought I had a good enough grasp on the code of Pickup to implement it, but it's not going too well. Here's what I've got so far (underPField_Field):
Some code

There are some issues I see that might be the problems you're having. First of all, the itemstart = plevel/10. This will result in a double(or float) and those will not be accepted as array indexes when getting an item out of the stargarzerlist. Also, itemstart will be a number between 0 and 10 while stargazerlist has only 3 entries, so it will go out of bounds if the Pokémon is higher than level 30.
You're also looping 11 times in the end. For pickup, this was because there were 11 possible items to get, however, now you just have 3 possible items to get, so you'd just have to loop 3 times.
These are issues I'm almost sure of that should not be this way. I don't exactly know how pickup works, so I don't know how it is checked here whether the Pokémon finds an item or not, but I hope this helps you!
 

Streetie

Novice
Member
Joined
Aug 20, 2017
Posts
10
It definitely helps a lot! Thank you so much!

I also see that you're only pushing 1 item onto items[]. You'll want to have all 3 on that list(or just remove the list altogether and only use stargazerList). I think I'll try to make it work myself too, I'll contact you if I've got something working!
 
@Streetie is amazing and put together a working code for Stargazer!
Code:
Expand Collapse Copy
def Kernel.pbStargazer(pokemon)
  return if !isConst?(pokemon.ability,PBAbilities,:STARGAZER) || pokemon.isEgg?
  return if pokemon.item!=0
  return if pokemon.level < 100 - rand(100)
  stargazerList=pbDynamicItemList(
	:COMETSHARD,
	:STARPIECE,
	:STARDUST
	)
  return if stargazerList.length!=3
  randlist=[33,33,34]
  rnd=rand(100)
  cumnumber=0
  for i in 0...3
	cumnumber+=randlist
	if rnd<cumnumber
	  pokemon.setItem(stargazerList)
	  break
	end
  end
end
 
Back
Top