• Just a reminder that providing specifics on, sharing links to, or naming websites where ROMs can be accessed is against the rules. If your post has any of this information it will be removed.
  • Ever thought it'd be cool to have your art, writing, or challenge runs featured on PokéCommunity? Click here for info - we'd love to spotlight your work!
  • Dawn, Gloria, Juliana, or Summer - which Pokémon protagonist is your favorite? Let us know by voting in our poll!
  • Welcome to PokéCommunity! Register now and join one of the best fan communities on the 'net to talk Pokémon and more! We are not affiliated with The Pokémon Company or Nintendo.

[Scripting Question] Shedinja Evolution changes

  • 38
    Posts
    9
    Years
    So, Shedinja, one of the most interesting gimmick pokemon is really cool, imo. But I've always thought it was weird that it gets the same moves as Ninjask or Nincada (depending on the generation) when it evolves. Do any of you have any ideas on how I might get Shedinja to be created upon evolution already knowing it's first 3 or 4 level up moves? Like, could i alter the "Shedinja" evolution method to have Shedinja be created already knowing Spite, Confuse Ray, and Shadow Sneak?
     
    I think so. Just try to add the level and move's name in pokemon.txt to SHEDINJA.
     
    I tried that, and nope, doesn't work. I think it has something to do with how Shedinja just appears in your party and doesn't technically evolve. I have the "Evolution Moves" script by Crystal Noel installed, and put those 3 moves for Shedinja with that script, but still no dice. Through testing, I noticed that when Shedinja grows to level 21, though, it DOES try learning those 3 moves, which I guess is a quirk of the "Shedinja" evolution type, but what I want to do is have Shedinja know those moves upon creation if possible. I'm sure it can be done with scripts, but scripting is definitely not my strong suit.
     
    If you're using v17.2 you don't need Evolution Move script. Just put 0,MOVENAME, like for Decidueye:
    Code:
    Move:0,SPIRITSHACKLE,1,SPIRITSHACKLE,2,LEAFBLADE,3,FURYATTACK,5,PLUCK
    Lvl 0 for AFTER Dartrix evolves to Decidueye;
    Lvl 1 if you catch some Decidueye lvl 1 until lvl 5.

    About you force SHEDINJA has 3 moves, you can put the code 'p.pbLearnMove(:MIMIMI)' but you need to change 'p' for the variation inside Evolution script (is @pokemon or pokemon or pkmm, IIRC. Anyway, check there).
     
    Ok, so I did what you suggested, and put "@pokemon.pbLearnMove(:______)" at the end of the Shedinja evolution method, and at first I thought it worked perfectly, since Shedinja knew all the moves I wanted, but Ninjask ALSO knows those moves (Shadow Sneak etc.). Also, I noticed that whenever Ninjask learns a new move, Shedinja learns the same move as well, or if Shedinja learns a move, the Ninjask does as well. I think this has to do with the fact that the evolution script seems to clone Ninjask and make a Shedinja out of the clone? I guess that even after they're created, they're considered clones still, and keep the same moves? Pretty sure that's not how Shedinja/Ninjask are supposed to work, so I guess it's an oversight in Essentials. Any idea on how to fix that? I'm not sure I understand the script, so I don't know what to change...
     
    Oh this is because of a bug in the copy process of the pokemon. See, the two are technically different objects, but internally, some of their variables, the arrays, still point at the same object, so changing one (eg new move) changes the other because they are both looking at the same place.

    Don't worry if that doesn't make any sense. You don't need to know that to do the fix.
    This goes in class PokeBattle_Pokemon in script section PokeBattle_Pokemon
    Code:
      def clone
        ret = super
        ret.ev      = self.ev.clone
        ret.iv      = self.iv.clone
        ret.moves   = []
        for i in 0...self.moves.length
          ret.moves[i] = self.moves[i].clone
        end
        ret.ribbons = self.ribbons.clone
        return ret
      end

    This goes in class PokeBattle_Pokemon in script section Pokemon_ShadowPokemon
    Code:
      alias :__shadow_clone :clone
    
      def clone
        ret = __shadow_clone
        ret.savedev     = self.savedev.clone if self.savedev
        ret.shadowmoves = self.shadowmoves.clone if self.shadowmoves
        return ret
      end

    Maruno made the fix, so don't credit me or anything like that.
     
    Back
    Top