#=============================================================================== # Mega Evolution # NOTE: These are treated as form changes in Essentials. #=============================================================================== class Pokemon def getMegaForm(checkItemOnly = false) ret = 0 GameData::Species.each do |data| next if data.species != @species if data.mega_stone && hasItem?(data.mega_stone) ret = data.form break elsif !checkItemOnly && data.mega_move && hasMove?(data.mega_move) ret = data.form break end end return ret # form number, or 0 if no accessible Mega form end def getUnmegaForm return (mega?) ? species_data.unmega_form : -1 end def hasMegaForm? megaForm = self.getMegaForm return megaForm > 0 && megaForm != self.formSimple end def mega? megaForm = self.getMegaForm return megaForm > 0 && megaForm == self.formSimple end alias isMega? mega? def makeMega megaForm = self.getMegaForm self.form = megaForm if megaForm > 0 end def makeUnmega unmegaForm = self.getUnmegaForm self.form = unmegaForm if unmegaForm >= 0 end def megaName formName = species_data.form_name return (formName && !formName.empty?) ? formName : _INTL("Mega {1}", species_data.name) end def megaMessage # 0=default message, 1=Rayquaza message return species_data.mega_message end end #=============================================================================== # Primal Reversion # NOTE: These are treated as form changes in Essentials. #=============================================================================== class Pokemon def hasPrimalForm? v = MultipleForms.call("getPrimalForm",self) return v!=nil end def primal? v = MultipleForms.call("getPrimalForm",self) return v!=nil && v==@form end alias isPrimal? primal? def makePrimal v = MultipleForms.call("getPrimalForm",self) self.form = v if v!=nil end def makeUnprimal v = MultipleForms.call("getUnprimalForm",self) if v!=nil; self.form = v elsif primal?; self.form = 0 end end end MultipleForms.register(:GROUDON,{ "getPrimalForm" => proc { |pkmn| next 1 if pkmn.hasItem?(:REDORB) next } }) MultipleForms.register(:KYOGRE,{ "getPrimalForm" => proc { |pkmn| next 1 if pkmn.hasItem?(:BLUEORB) next } })