Merge branch 'pr/43' into refactor

This commit is contained in:
Maruno17
2020-10-17 14:40:52 +01:00
18 changed files with 201 additions and 106 deletions

View File

@@ -77,10 +77,6 @@ class Pokemon
attr_accessor :pokerus
# @return [Integer] this Pokémon's personal ID
attr_accessor :personalID
# The 32-bit ID of this Pokémon's trainer. The secret ID is in the
# upper 16 bits.
# @return [Integer] the ID of this Pokémon's trainer
attr_accessor :trainerID
# @return [Integer] the manner this Pokémon was obtained:
# 0 (met), 1 (as egg), 2 (traded), 4 (fateful encounter)
attr_accessor :obtainMode
@@ -96,15 +92,6 @@ class Pokemon
# Otherwise returns 0.
# @return [Integer] the map ID where egg was hatched (0 by default)
attr_accessor :hatchedMap
# @param value [Integer] new language
attr_writer :language
# @return [String] the name of the original trainer
attr_accessor :ot
# Changes the gender of the original trainer. This is for information only,
# and is not used to verify ownership of the Pokémon.
# @param value [Integer] new value for the original trainer's gender:
# 0 - male, 1 - female, 2 - mixed, 3 - unknown
attr_writer :otgender
# @param value [Integer] new contest stat
attr_writer :cool,:beauty,:cute,:smart,:tough,:sheen
@@ -121,23 +108,25 @@ class Pokemon
# Ownership, obtained information
#=============================================================================
# @return [Integer] the public portion of the original trainer's ID
def publicID
return @trainerID & 0xFFFF
# @return [Owner] this Pokémon's owner
def owner
return @owner
end
# Changes this Pokémon's owner.
# @param new_owner [Owner] the owner to change to
def owner=(new_owner)
validate new_owner => Owner
@owner = new_owner
end
# @param trainer [PokeBattle_Trainer] the trainer to compare to the OT
# @return [Boolean] whether the given trainer and this Pokémon's original trainer don't match
def foreign?(trainer)
return @trainerID != trainer.id || @ot != trainer.name
return @owner.id != trainer.id || @owner.name != trainer.name
end
alias isForeign? foreign?
# @return [0, 1, 2] the gender of this Pokémon original trainer (0 = male, 1 = female, 2 = unknown)
def otgender
return @otgender || 2
end
# @return [Integer] this Pokémon's level when it was obtained
def obtainLevel
return @obtainLevel || 0
@@ -873,11 +862,6 @@ class Pokemon
return @name != self.speciesName
end
# @return [Integer] this Pokémon's language
def language
return @language || 0
end
# @return [Integer] the markings this Pokémon has
def markings
return @markings || 0
@@ -1051,6 +1035,7 @@ class Pokemon
ret.ivMaxed = @ivMaxed.clone
ret.ev = @ev.clone
ret.moves = []
ret.owner = @owner.clone
@moves.each_with_index { |m, i| ret.moves[i] = m.clone }
ret.ribbons = @ribbons.clone if @ribbons
return ret
@@ -1059,9 +1044,9 @@ class Pokemon
# Creates a new Pokémon object.
# @param species [Integer, Symbol, String] Pokémon species
# @param level [Integer] Pokémon level
# @param owner [PokeBattle_Trainer] object for the original trainer
# @param owner [Owner, PokeBattle_Trainer] Pokémon owner (the player by default)
# @param withMoves [Boolean] whether the Pokémon should have moves
def initialize(species, level, owner = nil, withMoves = true)
def initialize(species, level, owner = $Trainer, withMoves = true)
ospecies = species.to_s
species = getID(PBSpecies, species)
cname = getConstantName(PBSpecies, species) rescue nil
@@ -1090,15 +1075,12 @@ class Pokemon
@ribbons = []
@ballused = 0
@eggsteps = 0
if owner
@trainerID = owner.id
@ot = owner.name
@otgender = owner.gender
@language = owner.language
if owner.is_a?(Owner)
@owner = owner
elsif owner.is_a?(PokeBattle_Trainer)
@owner = Owner.new_from_trainer(owner)
else
@trainerID = 0
@ot = ""
@otgender = 2
@owner = Owner.new(0, '', 2, 2)
end
@obtainMap = ($game_map) ? $game_map.map_id : 0
@obtainText = nil

View File

@@ -0,0 +1,71 @@
class Pokemon
# Stores information about a Pokémon's owner.
class Owner
# @return [Integer] the ID of the owner
attr_reader :id
# @return [String] the name of the owner
attr_reader :name
# @return [Integer] the gender of the owner (0 = male, 1 = female, 2 = unknown)
attr_reader :gender
# @return [Integer] the language of the owner (see {pbGetLanguage} for language IDs)
attr_reader :language
# @param id [Integer] the ID of the owner
# @param name [String] the name of the owner
# @param gender [Integer] the gender of the owner (0 = male, 1 = female, 2 = unknown)
# @param language [Integer] the language of the owner (see {pbGetLanguage} for language IDs)
def initialize(id, name, gender, language)
validate id => Integer, name => String, gender => Integer, language => Integer
@id = id
@name = name
@gender = gender
@language = language
end
# Returns a new Owner object populated with values taken from +trainer+.
# @param trainer [PokeBattle_Trainer] trainer object to read data from
# @return [Owner] new Owner object
def self.new_from_trainer(trainer)
validate trainer => PokeBattle_Trainer
return new(trainer.id, trainer.name, trainer.gender, trainer.language)
end
# Returns an Owner object with a foreign ID.
# @param name [String] owner name
# @param gender [Integer] owner gender
# @param language [Integer] owner language
# @return [Owner] foreign Owner object
def self.new_foreign(name = '', gender = 2, language = 2)
return new($Trainer.getForeignID, name, gender, language)
end
# @param new_id [Integer] new owner ID
def id=(new_id)
validate new_id => Integer
@id = new_id
end
# @param new_name [String] new owner name
def name=(new_name)
validate new_name => String
@name = new_name
end
# @param new_gender [Integer] new owner gender
def gender=(new_gender)
validate new_gender => Integer
@gender = new_gender
end
# @param new_language [Integer] new owner language
def language=(new_language)
validate new_language => Integer
@language = new_language
end
# @return [Integer] the public portion of the owner's ID
def public_id
return @id & 0xFFFF
end
end
end

View File

@@ -1,25 +0,0 @@
#===============================================================================
# Deprecated classes, methods and constants for Pokémon.
# These will be removed in a future Essentials version.
#===============================================================================
# @deprecated Use {Pokemon} instead. PokeBattle_Pokemon has been turned into an alias
# and is slated to be removed in vXX.
class PokeBattle_Pokemon; end
PokeBattle_Pokemon = Pokemon
class Pokemon
# @deprecated Use {MAX_NAME_SIZE} instead. This alias is slated to be removed in vXX.
MAX_POKEMON_NAME_SIZE = MAX_NAME_SIZE
end
# (see Pokemon#initialize)
# @deprecated Use +Pokemon.new+ instead. This method and its aliases are
# slated to be removed in vXX.
def pbNewPkmn(species, level, owner = $Trainer, withMoves = true)
Deprecation.warn_method('pbNewPkmn', 'vXX', 'Pokemon.new')
return Pokemon.new(species, level, owner, withMoves)
end
alias pbGenPkmn pbNewPkmn
alias pbGenPoke pbNewPkmn

View File

@@ -0,0 +1,79 @@
#===============================================================================
# Deprecated classes, methods and constants for Pokémon.
# These will be removed in a future Essentials version.
#===============================================================================
# @deprecated Use {Pokemon} instead. PokeBattle_Pokemon has been turned into an alias
# and is slated to be removed in vXX.
class PokeBattle_Pokemon; end
PokeBattle_Pokemon = Pokemon
class Pokemon
# @deprecated Use {MAX_NAME_SIZE} instead. This alias is slated to be removed in vXX.
MAX_POKEMON_NAME_SIZE = MAX_NAME_SIZE
# @deprecated Use {Owner#public_id} instead. This alias is slated to be removed in vXX.
def publicID
Deprecation.warn_method('Pokemon#publicID', 'vXX', 'Pokemon::Owner#public_id')
return @owner.public_id
end
# @deprecated Use {Owner#id} instead. This alias is slated to be removed in vXX.
def trainerID
Deprecation.warn_method('Pokemon#trainerID', 'vXX', 'Pokemon::Owner#id')
return @owner.id
end
# @deprecated Use {Owner#id=} instead. This alias is slated to be removed in vXX.
def trainerID=(value)
Deprecation.warn_method('Pokemon#trainerID=', 'vXX', 'Pokemon::Owner#id=')
@owner.id = value
end
# @deprecated Use {Owner#name} instead. This alias is slated to be removed in vXX.
def ot
Deprecation.warn_method('Pokemon#ot', 'vXX', 'Pokemon::Owner#name')
return @owner.name
end
# @deprecated Use {Owner#name=} instead. This alias is slated to be removed in vXX.
def ot=(value)
Deprecation.warn_method('Pokemon#ot=', 'vXX', 'Pokemon::Owner#name=')
@owner.name = value
end
# @deprecated Use {Owner#gender} instead. This alias is slated to be removed in vXX.
def otgender
Deprecation.warn_method('Pokemon#otgender', 'vXX', 'Pokemon::Owner#gender')
return @owner.gender
end
# @deprecated Use {Owner#gender=} instead. This alias is slated to be removed in vXX.
def otgender=(value)
Deprecation.warn_method('Pokemon#otgender=', 'vXX', 'Pokemon::Owner#gender=')
@owner.gender = value
end
# @deprecated Use {Owner#language} instead. This alias is slated to be removed in vXX.
def language
Deprecation.warn_method('Pokemon#language', 'vXX', 'Pokemon::Owner#language')
return @owner.language
end
# @deprecated Use {Owner#language=} instead. This alias is slated to be removed in vXX.
def language=(value)
Deprecation.warn_method('Pokemon#language=', 'vXX', 'Pokemon::Owner#language=')
@owner.language = value
end
end
# (see Pokemon#initialize)
# @deprecated Use +Pokemon.new+ instead. This method and its aliases are
# slated to be removed in vXX.
def pbNewPkmn(species, level, owner = $Trainer, withMoves = true)
Deprecation.warn_method('pbNewPkmn', 'vXX', 'Pokemon.new')
return Pokemon.new(species, level, owner, withMoves)
end
alias pbGenPkmn pbNewPkmn
alias pbGenPoke pbNewPkmn