mirror of
https://github.com/infinitefusion/infinitefusion-e18.git
synced 2025-12-06 06:01:46 +00:00
102 lines
2.4 KiB
Ruby
102 lines
2.4 KiB
Ruby
#===============================================================================
|
|
# 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
|
|
}
|
|
})
|