mirror of
https://github.com/infinitefusion/infinitefusion-e18.git
synced 2025-12-06 06:01:46 +00:00
release beta 1
This commit is contained in:
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -192,6 +192,11 @@ class Game_Character
|
|||||||
return self.map.terrain_tag(@x, @y)
|
return self.map.terrain_tag(@x, @y)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def cancelMoveRoute()
|
||||||
|
@move_route=nil
|
||||||
|
@move_route_forcing = false
|
||||||
|
end
|
||||||
|
|
||||||
def bush_depth
|
def bush_depth
|
||||||
return @bush_depth || 0
|
return @bush_depth || 0
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -36,6 +36,7 @@ module GameData
|
|||||||
end
|
end
|
||||||
|
|
||||||
def self.load; end
|
def self.load; end
|
||||||
|
|
||||||
def self.save; end
|
def self.save; end
|
||||||
|
|
||||||
def initialize(hash)
|
def initialize(hash)
|
||||||
@@ -55,7 +56,7 @@ module GameData
|
|||||||
@ledge = hash[:ledge] || false
|
@ledge = hash[:ledge] || false
|
||||||
@ice = hash[:ice] || false
|
@ice = hash[:ice] || false
|
||||||
@bridge = hash[:bridge] || false
|
@bridge = hash[:bridge] || false
|
||||||
@shows_reflections = hash[:shows_reflections] || false
|
@shows_reflections = false #= hash[:shows_reflections] || false
|
||||||
@must_walk = hash[:must_walk] || false
|
@must_walk = hash[:must_walk] || false
|
||||||
@ignore_passability = hash[:ignore_passability] || false
|
@ignore_passability = hash[:ignore_passability] || false
|
||||||
end
|
end
|
||||||
@@ -71,13 +72,13 @@ end
|
|||||||
GameData::TerrainTag.register({
|
GameData::TerrainTag.register({
|
||||||
:id => :None,
|
:id => :None,
|
||||||
:id_number => 0
|
:id_number => 0
|
||||||
})
|
})
|
||||||
|
|
||||||
GameData::TerrainTag.register({
|
GameData::TerrainTag.register({
|
||||||
:id => :Ledge,
|
:id => :Ledge,
|
||||||
:id_number => 1,
|
:id_number => 1,
|
||||||
:ledge => true
|
:ledge => true
|
||||||
})
|
})
|
||||||
|
|
||||||
GameData::TerrainTag.register({
|
GameData::TerrainTag.register({
|
||||||
:id => :Grass,
|
:id => :Grass,
|
||||||
@@ -85,19 +86,19 @@ GameData::TerrainTag.register({
|
|||||||
:shows_grass_rustle => true,
|
:shows_grass_rustle => true,
|
||||||
:land_wild_encounters => true,
|
:land_wild_encounters => true,
|
||||||
:battle_environment => :Grass
|
:battle_environment => :Grass
|
||||||
})
|
})
|
||||||
|
|
||||||
GameData::TerrainTag.register({
|
GameData::TerrainTag.register({
|
||||||
:id => :Sand,
|
:id => :Sand,
|
||||||
:id_number => 3,
|
:id_number => 3,
|
||||||
:battle_environment => :Sand
|
:battle_environment => :Sand
|
||||||
})
|
})
|
||||||
|
|
||||||
GameData::TerrainTag.register({
|
GameData::TerrainTag.register({
|
||||||
:id => :Rock,
|
:id => :Rock,
|
||||||
:id_number => 15,
|
:id_number => 15,
|
||||||
:battle_environment => :Rock
|
:battle_environment => :Rock
|
||||||
})
|
})
|
||||||
|
|
||||||
GameData::TerrainTag.register({
|
GameData::TerrainTag.register({
|
||||||
:id => :DeepWater,
|
:id => :DeepWater,
|
||||||
@@ -106,7 +107,7 @@ GameData::TerrainTag.register({
|
|||||||
:can_fish => true,
|
:can_fish => true,
|
||||||
:can_dive => true,
|
:can_dive => true,
|
||||||
:battle_environment => :MovingWater
|
:battle_environment => :MovingWater
|
||||||
})
|
})
|
||||||
|
|
||||||
GameData::TerrainTag.register({
|
GameData::TerrainTag.register({
|
||||||
:id => :WaterCurrent,
|
:id => :WaterCurrent,
|
||||||
@@ -114,7 +115,7 @@ GameData::TerrainTag.register({
|
|||||||
:can_surf => true,
|
:can_surf => true,
|
||||||
:can_fish => true,
|
:can_fish => true,
|
||||||
:battle_environment => :MovingWater
|
:battle_environment => :MovingWater
|
||||||
})
|
})
|
||||||
|
|
||||||
GameData::TerrainTag.register({
|
GameData::TerrainTag.register({
|
||||||
:id => :StillWater,
|
:id => :StillWater,
|
||||||
@@ -123,7 +124,7 @@ GameData::TerrainTag.register({
|
|||||||
:can_fish => true,
|
:can_fish => true,
|
||||||
:battle_environment => :StillWater
|
:battle_environment => :StillWater
|
||||||
#:shows_reflections => true
|
#:shows_reflections => true
|
||||||
})
|
})
|
||||||
|
|
||||||
GameData::TerrainTag.register({
|
GameData::TerrainTag.register({
|
||||||
:id => :Water,
|
:id => :Water,
|
||||||
@@ -131,14 +132,14 @@ GameData::TerrainTag.register({
|
|||||||
:can_surf => true,
|
:can_surf => true,
|
||||||
:can_fish => true,
|
:can_fish => true,
|
||||||
:battle_environment => :MovingWater
|
:battle_environment => :MovingWater
|
||||||
})
|
})
|
||||||
|
|
||||||
GameData::TerrainTag.register({
|
GameData::TerrainTag.register({
|
||||||
:id => :Waterfall,
|
:id => :Waterfall,
|
||||||
:id_number => 8,
|
:id_number => 8,
|
||||||
:can_surf => true,
|
:can_surf => true,
|
||||||
:waterfall => true
|
:waterfall => true
|
||||||
})
|
})
|
||||||
|
|
||||||
GameData::TerrainTag.register({
|
GameData::TerrainTag.register({
|
||||||
:id => :WaterfallCrest,
|
:id => :WaterfallCrest,
|
||||||
@@ -146,7 +147,7 @@ GameData::TerrainTag.register({
|
|||||||
:can_surf => true,
|
:can_surf => true,
|
||||||
:can_fish => true,
|
:can_fish => true,
|
||||||
:waterfall_crest => true
|
:waterfall_crest => true
|
||||||
})
|
})
|
||||||
|
|
||||||
GameData::TerrainTag.register({
|
GameData::TerrainTag.register({
|
||||||
:id => :TallGrass,
|
:id => :TallGrass,
|
||||||
@@ -156,13 +157,13 @@ GameData::TerrainTag.register({
|
|||||||
:double_wild_encounters => true,
|
:double_wild_encounters => true,
|
||||||
:battle_environment => :TallGrass,
|
:battle_environment => :TallGrass,
|
||||||
:must_walk => true
|
:must_walk => true
|
||||||
})
|
})
|
||||||
|
|
||||||
GameData::TerrainTag.register({
|
GameData::TerrainTag.register({
|
||||||
:id => :UnderwaterGrass,
|
:id => :UnderwaterGrass,
|
||||||
:id_number => 11,
|
:id_number => 11,
|
||||||
:land_wild_encounters => true
|
:land_wild_encounters => true
|
||||||
})
|
})
|
||||||
|
|
||||||
GameData::TerrainTag.register({
|
GameData::TerrainTag.register({
|
||||||
:id => :Ice,
|
:id => :Ice,
|
||||||
@@ -170,13 +171,13 @@ GameData::TerrainTag.register({
|
|||||||
:battle_environment => :Ice,
|
:battle_environment => :Ice,
|
||||||
:ice => true,
|
:ice => true,
|
||||||
:must_walk => true
|
:must_walk => true
|
||||||
})
|
})
|
||||||
|
|
||||||
GameData::TerrainTag.register({
|
GameData::TerrainTag.register({
|
||||||
:id => :Neutral,
|
:id => :Neutral,
|
||||||
:id_number => 13,
|
:id_number => 13,
|
||||||
:ignore_passability => true
|
:ignore_passability => true
|
||||||
})
|
})
|
||||||
|
|
||||||
# NOTE: This is referenced by ID in an Events.onStepTakenFieldMovement proc that
|
# NOTE: This is referenced by ID in an Events.onStepTakenFieldMovement proc that
|
||||||
# adds soot to the Soot Sack if the player walks over one of these tiles.
|
# adds soot to the Soot Sack if the player walks over one of these tiles.
|
||||||
@@ -186,17 +187,17 @@ GameData::TerrainTag.register({
|
|||||||
:shows_grass_rustle => true,
|
:shows_grass_rustle => true,
|
||||||
:land_wild_encounters => true,
|
:land_wild_encounters => true,
|
||||||
:battle_environment => :Grass
|
:battle_environment => :Grass
|
||||||
})
|
})
|
||||||
|
|
||||||
GameData::TerrainTag.register({
|
GameData::TerrainTag.register({
|
||||||
:id => :Bridge,
|
:id => :Bridge,
|
||||||
:id_number => 4,
|
:id_number => 4,
|
||||||
:bridge => true
|
:bridge => true
|
||||||
})
|
})
|
||||||
|
|
||||||
GameData::TerrainTag.register({
|
GameData::TerrainTag.register({
|
||||||
:id => :Puddle,
|
:id => :Puddle,
|
||||||
:id_number => 16,
|
:id_number => 16,
|
||||||
:battle_environment => :Puddle,
|
:battle_environment => :Puddle,
|
||||||
:shows_reflections => false
|
:shows_reflections => false
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -177,6 +177,7 @@ class PokeBattle_Battle
|
|||||||
# For "1v2" names, the first number is for the player's side and the second
|
# For "1v2" names, the first number is for the player's side and the second
|
||||||
# number is for the opposing side.
|
# number is for the opposing side.
|
||||||
def setBattleMode(mode)
|
def setBattleMode(mode)
|
||||||
|
default = $game_variables[242].is_a?(Array) ? $game_variables[242] : [1,1]
|
||||||
@sideSizes =
|
@sideSizes =
|
||||||
case mode
|
case mode
|
||||||
when "triple", "3v3" then [3, 3]
|
when "triple", "3v3" then [3, 3]
|
||||||
@@ -187,7 +188,7 @@ class PokeBattle_Battle
|
|||||||
when "2v1" then [2, 1]
|
when "2v1" then [2, 1]
|
||||||
when "1v3" then [1, 3]
|
when "1v3" then [1, 3]
|
||||||
when "1v2" then [1, 2]
|
when "1v2" then [1, 2]
|
||||||
else [1, 1] # Single, 1v1 (default)
|
else default # Single, 1v1 (default)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|||||||
@@ -136,7 +136,9 @@ class PokeBattle_Scene
|
|||||||
playerBase = "Graphics/Battlebacks/playerbase/"+baseFilename
|
playerBase = "Graphics/Battlebacks/playerbase/"+baseFilename
|
||||||
enemyBase = "Graphics/Battlebacks/enemybase/"+baseFilename
|
enemyBase = "Graphics/Battlebacks/enemybase/"+baseFilename
|
||||||
messageBG = "Graphics/Battlebacks/"+messageFilename+"_message"
|
messageBG = "Graphics/Battlebacks/"+messageFilename+"_message"
|
||||||
|
if !pbResolveBitmap(messageBG)
|
||||||
|
messageBG = "Graphics/Battlebacks/default_message"
|
||||||
|
end
|
||||||
# Apply graphics
|
# Apply graphics
|
||||||
bg = pbAddSprite("battle_bg",0,0,battleBG,@viewport)
|
bg = pbAddSprite("battle_bg",0,0,battleBG,@viewport)
|
||||||
bg.z = 0
|
bg.z = 0
|
||||||
|
|||||||
@@ -120,7 +120,7 @@ end
|
|||||||
def pbPrepareBattle(battle)
|
def pbPrepareBattle(battle)
|
||||||
battleRules = $PokemonTemp.battleRules
|
battleRules = $PokemonTemp.battleRules
|
||||||
# The size of the battle, i.e. how many Pokémon on each side (default: "single")
|
# The size of the battle, i.e. how many Pokémon on each side (default: "single")
|
||||||
battle.setBattleMode(battleRules["size"]) if !battleRules["size"].nil?
|
battle.setBattleMode(battleRules["size"]) if !battleRules["size"].nil? || $game_switches[NEW_GAME_PLUS]
|
||||||
# Whether the game won't black out even if the player loses (default: false)
|
# Whether the game won't black out even if the player loses (default: false)
|
||||||
battle.canLose = battleRules["canLose"] if !battleRules["canLose"].nil?
|
battle.canLose = battleRules["canLose"] if !battleRules["canLose"].nil?
|
||||||
# Whether the player can choose to run from the battle (default: true)
|
# Whether the player can choose to run from the battle (default: true)
|
||||||
|
|||||||
@@ -168,6 +168,7 @@ class PokemonIconSprite < SpriteWrapper
|
|||||||
bodyPoke_number = getBodyID(pokemon.species)
|
bodyPoke_number = getBodyID(pokemon.species)
|
||||||
headPoke_number = getHeadID(pokemon.species, bodyPoke_number)
|
headPoke_number = getHeadID(pokemon.species, bodyPoke_number)
|
||||||
|
|
||||||
|
|
||||||
bodyPoke = GameData::Species.get(bodyPoke_number).species
|
bodyPoke = GameData::Species.get(bodyPoke_number).species
|
||||||
headPoke = GameData::Species.get(headPoke_number).species
|
headPoke = GameData::Species.get(headPoke_number).species
|
||||||
|
|
||||||
|
|||||||
@@ -50,7 +50,7 @@ class EnumOption
|
|||||||
attr_reader :values
|
attr_reader :values
|
||||||
attr_reader :name
|
attr_reader :name
|
||||||
|
|
||||||
def initialize(name,options,getProc,setProc)
|
def initialize(name, options, getProc, setProc)
|
||||||
@name = name
|
@name = name
|
||||||
@values = options
|
@values = options
|
||||||
@getProc = getProc
|
@getProc = getProc
|
||||||
@@ -58,14 +58,14 @@ class EnumOption
|
|||||||
end
|
end
|
||||||
|
|
||||||
def next(current)
|
def next(current)
|
||||||
index = current+1
|
index = current + 1
|
||||||
index = @values.length-1 if index>@values.length-1
|
index = @values.length - 1 if index > @values.length - 1
|
||||||
return index
|
return index
|
||||||
end
|
end
|
||||||
|
|
||||||
def prev(current)
|
def prev(current)
|
||||||
index = current-1
|
index = current - 1
|
||||||
index = 0 if index<0
|
index = 0 if index < 0
|
||||||
return index
|
return index
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@@ -78,7 +78,7 @@ class EnumOption2
|
|||||||
attr_reader :values
|
attr_reader :values
|
||||||
attr_reader :name
|
attr_reader :name
|
||||||
|
|
||||||
def initialize(name,options,getProc,setProc)
|
def initialize(name, options, getProc, setProc)
|
||||||
@name = name
|
@name = name
|
||||||
@values = options
|
@values = options
|
||||||
@getProc = getProc
|
@getProc = getProc
|
||||||
@@ -86,14 +86,14 @@ class EnumOption2
|
|||||||
end
|
end
|
||||||
|
|
||||||
def next(current)
|
def next(current)
|
||||||
index = current+1
|
index = current + 1
|
||||||
index = @values.length-1 if index>@values.length-1
|
index = @values.length - 1 if index > @values.length - 1
|
||||||
return index
|
return index
|
||||||
end
|
end
|
||||||
|
|
||||||
def prev(current)
|
def prev(current)
|
||||||
index = current-1
|
index = current - 1
|
||||||
index = 0 if index<0
|
index = 0 if index < 0
|
||||||
return index
|
return index
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@@ -107,7 +107,7 @@ class NumberOption
|
|||||||
attr_reader :optstart
|
attr_reader :optstart
|
||||||
attr_reader :optend
|
attr_reader :optend
|
||||||
|
|
||||||
def initialize(name,optstart,optend,getProc,setProc)
|
def initialize(name, optstart, optend, getProc, setProc)
|
||||||
@name = name
|
@name = name
|
||||||
@optstart = optstart
|
@optstart = optstart
|
||||||
@optend = optend
|
@optend = optend
|
||||||
@@ -116,17 +116,17 @@ class NumberOption
|
|||||||
end
|
end
|
||||||
|
|
||||||
def next(current)
|
def next(current)
|
||||||
index = current+@optstart
|
index = current + @optstart
|
||||||
index += 1
|
index += 1
|
||||||
index = @optstart if index>@optend
|
index = @optstart if index > @optend
|
||||||
return index-@optstart
|
return index - @optstart
|
||||||
end
|
end
|
||||||
|
|
||||||
def prev(current)
|
def prev(current)
|
||||||
index = current+@optstart
|
index = current + @optstart
|
||||||
index -= 1
|
index -= 1
|
||||||
index = @optend if index<@optstart
|
index = @optend if index < @optstart
|
||||||
return index-@optstart
|
return index - @optstart
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -139,7 +139,7 @@ class SliderOption
|
|||||||
attr_reader :optstart
|
attr_reader :optstart
|
||||||
attr_reader :optend
|
attr_reader :optend
|
||||||
|
|
||||||
def initialize(name,optstart,optend,optinterval,getProc,setProc)
|
def initialize(name, optstart, optend, optinterval, getProc, setProc)
|
||||||
@name = name
|
@name = name
|
||||||
@optstart = optstart
|
@optstart = optstart
|
||||||
@optend = optend
|
@optend = optend
|
||||||
@@ -149,17 +149,17 @@ class SliderOption
|
|||||||
end
|
end
|
||||||
|
|
||||||
def next(current)
|
def next(current)
|
||||||
index = current+@optstart
|
index = current + @optstart
|
||||||
index += @optinterval
|
index += @optinterval
|
||||||
index = @optend if index>@optend
|
index = @optend if index > @optend
|
||||||
return index-@optstart
|
return index - @optstart
|
||||||
end
|
end
|
||||||
|
|
||||||
def prev(current)
|
def prev(current)
|
||||||
index = current+@optstart
|
index = current + @optstart
|
||||||
index -= @optinterval
|
index -= @optinterval
|
||||||
index = @optstart if index<@optstart
|
index = @optstart if index < @optstart
|
||||||
return index-@optstart
|
return index - @optstart
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -169,92 +169,92 @@ end
|
|||||||
class Window_PokemonOption < Window_DrawableCommand
|
class Window_PokemonOption < Window_DrawableCommand
|
||||||
attr_reader :mustUpdateOptions
|
attr_reader :mustUpdateOptions
|
||||||
|
|
||||||
def initialize(options,x,y,width,height)
|
def initialize(options, x, y, width, height)
|
||||||
@options = options
|
@options = options
|
||||||
@nameBaseColor = Color.new(24*8,15*8,0)
|
@nameBaseColor = Color.new(24 * 8, 15 * 8, 0)
|
||||||
@nameShadowColor = Color.new(31*8,22*8,10*8)
|
@nameShadowColor = Color.new(31 * 8, 22 * 8, 10 * 8)
|
||||||
@selBaseColor = Color.new(31*8,6*8,3*8)
|
@selBaseColor = Color.new(31 * 8, 6 * 8, 3 * 8)
|
||||||
@selShadowColor = Color.new(31*8,17*8,16*8)
|
@selShadowColor = Color.new(31 * 8, 17 * 8, 16 * 8)
|
||||||
@optvalues = []
|
@optvalues = []
|
||||||
@mustUpdateOptions = false
|
@mustUpdateOptions = false
|
||||||
for i in 0...@options.length
|
for i in 0...@options.length
|
||||||
@optvalues[i] = 0
|
@optvalues[i] = 0
|
||||||
end
|
end
|
||||||
super(x,y,width,height)
|
super(x, y, width, height)
|
||||||
end
|
end
|
||||||
|
|
||||||
def [](i)
|
def [](i)
|
||||||
return @optvalues[i]
|
return @optvalues[i]
|
||||||
end
|
end
|
||||||
|
|
||||||
def []=(i,value)
|
def []=(i, value)
|
||||||
@optvalues[i] = value
|
@optvalues[i] = value
|
||||||
refresh
|
refresh
|
||||||
end
|
end
|
||||||
|
|
||||||
def setValueNoRefresh(i,value)
|
def setValueNoRefresh(i, value)
|
||||||
@optvalues[i] = value
|
@optvalues[i] = value
|
||||||
end
|
end
|
||||||
|
|
||||||
def itemCount
|
def itemCount
|
||||||
return @options.length+1
|
return @options.length + 1
|
||||||
end
|
end
|
||||||
|
|
||||||
def drawItem(index,_count,rect)
|
def drawItem(index, _count, rect)
|
||||||
rect = drawCursor(index,rect)
|
rect = drawCursor(index, rect)
|
||||||
optionname = (index==@options.length) ? _INTL("Cancel") : @options[index].name
|
optionname = (index == @options.length) ? _INTL("Cancel") : @options[index].name
|
||||||
optionwidth = rect.width*9/20
|
optionwidth = rect.width * 9 / 20
|
||||||
pbDrawShadowText(self.contents,rect.x,rect.y,optionwidth,rect.height,optionname,
|
pbDrawShadowText(self.contents, rect.x, rect.y, optionwidth, rect.height, optionname,
|
||||||
@nameBaseColor,@nameShadowColor)
|
@nameBaseColor, @nameShadowColor)
|
||||||
return if index==@options.length
|
return if index == @options.length
|
||||||
if @options[index].is_a?(EnumOption)
|
if @options[index].is_a?(EnumOption)
|
||||||
if @options[index].values.length>1
|
if @options[index].values.length > 1
|
||||||
totalwidth = 0
|
totalwidth = 0
|
||||||
for value in @options[index].values
|
for value in @options[index].values
|
||||||
totalwidth += self.contents.text_size(value).width
|
totalwidth += self.contents.text_size(value).width
|
||||||
end
|
end
|
||||||
spacing = (optionwidth-totalwidth)/(@options[index].values.length-1)
|
spacing = (optionwidth - totalwidth) / (@options[index].values.length - 1)
|
||||||
spacing = 0 if spacing<0
|
spacing = 0 if spacing < 0
|
||||||
xpos = optionwidth+rect.x
|
xpos = optionwidth + rect.x
|
||||||
ivalue = 0
|
ivalue = 0
|
||||||
for value in @options[index].values
|
for value in @options[index].values
|
||||||
pbDrawShadowText(self.contents,xpos,rect.y,optionwidth,rect.height,value,
|
pbDrawShadowText(self.contents, xpos, rect.y, optionwidth, rect.height, value,
|
||||||
(ivalue==self[index]) ? @selBaseColor : self.baseColor,
|
(ivalue == self[index]) ? @selBaseColor : self.baseColor,
|
||||||
(ivalue==self[index]) ? @selShadowColor : self.shadowColor
|
(ivalue == self[index]) ? @selShadowColor : self.shadowColor
|
||||||
)
|
)
|
||||||
xpos += self.contents.text_size(value).width
|
xpos += self.contents.text_size(value).width
|
||||||
xpos += spacing
|
xpos += spacing
|
||||||
ivalue += 1
|
ivalue += 1
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
pbDrawShadowText(self.contents,rect.x+optionwidth,rect.y,optionwidth,rect.height,
|
pbDrawShadowText(self.contents, rect.x + optionwidth, rect.y, optionwidth, rect.height,
|
||||||
optionname,self.baseColor,self.shadowColor)
|
optionname, self.baseColor, self.shadowColor)
|
||||||
end
|
end
|
||||||
elsif @options[index].is_a?(NumberOption)
|
elsif @options[index].is_a?(NumberOption)
|
||||||
value = _INTL("Type {1}/{2}",@options[index].optstart+self[index],
|
value = _INTL("Type {1}/{2}", @options[index].optstart + self[index],
|
||||||
@options[index].optend-@options[index].optstart+1)
|
@options[index].optend - @options[index].optstart + 1)
|
||||||
xpos = optionwidth+rect.x
|
xpos = optionwidth + rect.x
|
||||||
pbDrawShadowText(self.contents,xpos,rect.y,optionwidth,rect.height,value,
|
pbDrawShadowText(self.contents, xpos, rect.y, optionwidth, rect.height, value,
|
||||||
@selBaseColor,@selShadowColor)
|
@selBaseColor, @selShadowColor)
|
||||||
elsif @options[index].is_a?(SliderOption)
|
elsif @options[index].is_a?(SliderOption)
|
||||||
value = sprintf(" %d",@options[index].optend)
|
value = sprintf(" %d", @options[index].optend)
|
||||||
sliderlength = optionwidth-self.contents.text_size(value).width
|
sliderlength = optionwidth - self.contents.text_size(value).width
|
||||||
xpos = optionwidth+rect.x
|
xpos = optionwidth + rect.x
|
||||||
self.contents.fill_rect(xpos,rect.y-2+rect.height/2,
|
self.contents.fill_rect(xpos, rect.y - 2 + rect.height / 2,
|
||||||
optionwidth-self.contents.text_size(value).width,4,self.baseColor)
|
optionwidth - self.contents.text_size(value).width, 4, self.baseColor)
|
||||||
self.contents.fill_rect(
|
self.contents.fill_rect(
|
||||||
xpos+(sliderlength-8)*(@options[index].optstart+self[index])/@options[index].optend,
|
xpos + (sliderlength - 8) * (@options[index].optstart + self[index]) / @options[index].optend,
|
||||||
rect.y-8+rect.height/2,
|
rect.y - 8 + rect.height / 2,
|
||||||
8,16,@selBaseColor)
|
8, 16, @selBaseColor)
|
||||||
value = sprintf("%d",@options[index].optstart+self[index])
|
value = sprintf("%d", @options[index].optstart + self[index])
|
||||||
xpos += optionwidth-self.contents.text_size(value).width
|
xpos += optionwidth - self.contents.text_size(value).width
|
||||||
pbDrawShadowText(self.contents,xpos,rect.y,optionwidth,rect.height,value,
|
pbDrawShadowText(self.contents, xpos, rect.y, optionwidth, rect.height, value,
|
||||||
@selBaseColor,@selShadowColor)
|
@selBaseColor, @selShadowColor)
|
||||||
else
|
else
|
||||||
value = @options[index].values[self[index]]
|
value = @options[index].values[self[index]]
|
||||||
xpos = optionwidth+rect.x
|
xpos = optionwidth + rect.x
|
||||||
pbDrawShadowText(self.contents,xpos,rect.y,optionwidth,rect.height,value,
|
pbDrawShadowText(self.contents, xpos, rect.y, optionwidth, rect.height, value,
|
||||||
@selBaseColor,@selShadowColor)
|
@selBaseColor, @selShadowColor)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -262,8 +262,8 @@ class Window_PokemonOption < Window_DrawableCommand
|
|||||||
oldindex = self.index
|
oldindex = self.index
|
||||||
@mustUpdateOptions = false
|
@mustUpdateOptions = false
|
||||||
super
|
super
|
||||||
dorefresh = (self.index!=oldindex)
|
dorefresh = (self.index != oldindex)
|
||||||
if self.active && self.index<@options.length
|
if self.active && self.index < @options.length
|
||||||
if Input.repeat?(Input::LEFT)
|
if Input.repeat?(Input::LEFT)
|
||||||
self[self.index] = @options[self.index].prev(self[self.index])
|
self[self.index] = @options[self.index].prev(self[self.index])
|
||||||
dorefresh = true
|
dorefresh = true
|
||||||
@@ -286,26 +286,26 @@ class PokemonOption_Scene
|
|||||||
pbUpdateSpriteHash(@sprites)
|
pbUpdateSpriteHash(@sprites)
|
||||||
end
|
end
|
||||||
|
|
||||||
def pbStartScene(inloadscreen=false)
|
def pbStartScene(inloadscreen = false)
|
||||||
@sprites = {}
|
@sprites = {}
|
||||||
@viewport = Viewport.new(0,0,Graphics.width,Graphics.height)
|
@viewport = Viewport.new(0, 0, Graphics.width, Graphics.height)
|
||||||
@viewport.z = 99999
|
@viewport.z = 99999
|
||||||
@sprites["title"] = Window_UnformattedTextPokemon.newWithSize(
|
@sprites["title"] = Window_UnformattedTextPokemon.newWithSize(
|
||||||
_INTL("Options"),0,0,Graphics.width,64,@viewport)
|
_INTL("Options"), 0, 0, Graphics.width, 64, @viewport)
|
||||||
@sprites["textbox"] = pbCreateMessageWindow
|
@sprites["textbox"] = pbCreateMessageWindow
|
||||||
@sprites["textbox"].text = _INTL("Speech frame {1}.",1+$PokemonSystem.textskin)
|
@sprites["textbox"].text = _INTL("Speech frame {1}.", 1 + $PokemonSystem.textskin)
|
||||||
@sprites["textbox"].letterbyletter = false
|
@sprites["textbox"].letterbyletter = false
|
||||||
pbSetSystemFont(@sprites["textbox"].contents)
|
pbSetSystemFont(@sprites["textbox"].contents)
|
||||||
# These are the different options in the game. To add an option, define a
|
# These are the different options in the game. To add an option, define a
|
||||||
# setter and a getter for that option. To delete an option, comment it out
|
# setter and a getter for that option. To delete an option, comment it out
|
||||||
# or delete it. The game's options may be placed in any order.
|
# or delete it. The game's options may be placed in any order.
|
||||||
@PokemonOptions = [
|
@PokemonOptions = [
|
||||||
SliderOption.new(_INTL("Music Volume"),0,100,5,
|
SliderOption.new(_INTL("Music Volume"), 0, 100, 5,
|
||||||
proc { $PokemonSystem.bgmvolume },
|
proc { $PokemonSystem.bgmvolume },
|
||||||
proc { |value|
|
proc { |value|
|
||||||
if $PokemonSystem.bgmvolume!=value
|
if $PokemonSystem.bgmvolume != value
|
||||||
$PokemonSystem.bgmvolume = value
|
$PokemonSystem.bgmvolume = value
|
||||||
if $game_system.playing_bgm!=nil && !inloadscreen
|
if $game_system.playing_bgm != nil && !inloadscreen
|
||||||
playingBGM = $game_system.getPlayingBGM
|
playingBGM = $game_system.getPlayingBGM
|
||||||
$game_system.bgm_pause
|
$game_system.bgm_pause
|
||||||
$game_system.bgm_resume(playingBGM)
|
$game_system.bgm_resume(playingBGM)
|
||||||
@@ -313,12 +313,12 @@ class PokemonOption_Scene
|
|||||||
end
|
end
|
||||||
}
|
}
|
||||||
),
|
),
|
||||||
SliderOption.new(_INTL("SE Volume"),0,100,5,
|
SliderOption.new(_INTL("SE Volume"), 0, 100, 5,
|
||||||
proc { $PokemonSystem.sevolume },
|
proc { $PokemonSystem.sevolume },
|
||||||
proc { |value|
|
proc { |value|
|
||||||
if $PokemonSystem.sevolume!=value
|
if $PokemonSystem.sevolume != value
|
||||||
$PokemonSystem.sevolume = value
|
$PokemonSystem.sevolume = value
|
||||||
if $game_system.playing_bgs!=nil
|
if $game_system.playing_bgs != nil
|
||||||
$game_system.playing_bgs.volume = value
|
$game_system.playing_bgs.volume = value
|
||||||
playingBGS = $game_system.getPlayingBGS
|
playingBGS = $game_system.getPlayingBGS
|
||||||
$game_system.bgs_pause
|
$game_system.bgs_pause
|
||||||
@@ -328,26 +328,26 @@ class PokemonOption_Scene
|
|||||||
end
|
end
|
||||||
}
|
}
|
||||||
),
|
),
|
||||||
EnumOption.new(_INTL("Text Speed"),[_INTL("Normal"),_INTL("Fast"),_INTL("Instant")],
|
EnumOption.new(_INTL("Text Speed"), [_INTL("Normal"), _INTL("Fast"), _INTL("Instant")],
|
||||||
proc { $PokemonSystem.textspeed },
|
proc { $PokemonSystem.textspeed },
|
||||||
proc { |value|
|
proc { |value|
|
||||||
$PokemonSystem.textspeed = value
|
$PokemonSystem.textspeed = value
|
||||||
MessageConfig.pbSetTextSpeed(MessageConfig.pbSettingToTextSpeed(value))
|
MessageConfig.pbSetTextSpeed(MessageConfig.pbSettingToTextSpeed(value))
|
||||||
}
|
}
|
||||||
),
|
),
|
||||||
EnumOption.new(_INTL("Battle Effects"),[_INTL("On"),_INTL("Off")],
|
EnumOption.new(_INTL("Battle Effects"), [_INTL("On"), _INTL("Off")],
|
||||||
proc { $PokemonSystem.battlescene },
|
proc { $PokemonSystem.battlescene },
|
||||||
proc { |value| $PokemonSystem.battlescene = value }
|
proc { |value| $PokemonSystem.battlescene = value }
|
||||||
),
|
),
|
||||||
EnumOption.new(_INTL("Battle Style"),[_INTL("Switch"),_INTL("Set")],
|
EnumOption.new(_INTL("Battle Style"), [_INTL("Switch"), _INTL("Set")],
|
||||||
proc { $PokemonSystem.battlestyle },
|
proc { $PokemonSystem.battlestyle },
|
||||||
proc { |value| $PokemonSystem.battlestyle = value }
|
proc { |value| $PokemonSystem.battlestyle = value }
|
||||||
),
|
),
|
||||||
EnumOption.new(_INTL("Default Movement"),[_INTL("Walking"),_INTL("Running")],
|
EnumOption.new(_INTL("Default Movement"), [_INTL("Walking"), _INTL("Running")],
|
||||||
proc { $PokemonSystem.runstyle },
|
proc { $PokemonSystem.runstyle },
|
||||||
proc { |value| $PokemonSystem.runstyle = value }
|
proc { |value| $PokemonSystem.runstyle = value }
|
||||||
),
|
),
|
||||||
NumberOption.new(_INTL("Speech Frame"),1,Settings::SPEECH_WINDOWSKINS.length,
|
NumberOption.new(_INTL("Speech Frame"), 1, Settings::SPEECH_WINDOWSKINS.length,
|
||||||
proc { $PokemonSystem.textskin },
|
proc { $PokemonSystem.textskin },
|
||||||
proc { |value|
|
proc { |value|
|
||||||
$PokemonSystem.textskin = value
|
$PokemonSystem.textskin = value
|
||||||
@@ -361,11 +361,11 @@ class PokemonOption_Scene
|
|||||||
# MessageConfig.pbSetSystemFrame("Graphics/Windowskins/" + Settings::MENU_WINDOWSKINS[value])
|
# MessageConfig.pbSetSystemFrame("Graphics/Windowskins/" + Settings::MENU_WINDOWSKINS[value])
|
||||||
# }
|
# }
|
||||||
# ),
|
# ),
|
||||||
EnumOption.new(_INTL("Text Entry"),[_INTL("Cursor"),_INTL("Keyboard")],
|
EnumOption.new(_INTL("Text Entry"), [_INTL("Cursor"), _INTL("Keyboard")],
|
||||||
proc { $PokemonSystem.textinput },
|
proc { $PokemonSystem.textinput },
|
||||||
proc { |value| $PokemonSystem.textinput = value }
|
proc { |value| $PokemonSystem.textinput = value }
|
||||||
),
|
),
|
||||||
EnumOption.new(_INTL("Screen Size"),[_INTL("S"),_INTL("M"),_INTL("L"),_INTL("XL"),_INTL("Full")],
|
EnumOption.new(_INTL("Screen Size"), [_INTL("S"), _INTL("M"), _INTL("L"), _INTL("XL"), _INTL("Full")],
|
||||||
proc { [$PokemonSystem.screensize, 4].min },
|
proc { [$PokemonSystem.screensize, 4].min },
|
||||||
proc { |value|
|
proc { |value|
|
||||||
if $PokemonSystem.screensize != value
|
if $PokemonSystem.screensize != value
|
||||||
@@ -375,15 +375,36 @@ class PokemonOption_Scene
|
|||||||
}
|
}
|
||||||
)
|
)
|
||||||
]
|
]
|
||||||
|
if $game_switches && $game_switches[NEW_GAME_PLUS] #beat the league
|
||||||
|
@PokemonOptions <<
|
||||||
|
EnumOption.new(_INTL("Battle type"), [_INTL("Single"), _INTL("Double"), _INTL("Triple")],
|
||||||
|
proc { $PokemonSystem.textspeed },
|
||||||
|
proc { |value|
|
||||||
|
if value == 0
|
||||||
|
$game_variables[DEFAULT_BATTLE_TYPE] = [1, 1]
|
||||||
|
elsif value == 1
|
||||||
|
$game_variables[DEFAULT_BATTLE_TYPE] = [2, 2]
|
||||||
|
elsif value == 2
|
||||||
|
$game_variables[DEFAULT_BATTLE_TYPE] = [3, 3]
|
||||||
|
else
|
||||||
|
$game_variables[DEFAULT_BATTLE_TYPE] = [1, 1]
|
||||||
|
end
|
||||||
|
$PokemonSystem.textspeed = value
|
||||||
|
MessageConfig.pbSetTextSpeed(MessageConfig.pbSettingToTextSpeed(value))
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
@PokemonOptions = pbAddOnOptions(@PokemonOptions)
|
@PokemonOptions = pbAddOnOptions(@PokemonOptions)
|
||||||
@sprites["option"] = Window_PokemonOption.new(@PokemonOptions,0,
|
@sprites["option"] = Window_PokemonOption.new(@PokemonOptions, 0,
|
||||||
@sprites["title"].height,Graphics.width,
|
@sprites["title"].height, Graphics.width,
|
||||||
Graphics.height-@sprites["title"].height-@sprites["textbox"].height)
|
Graphics.height - @sprites["title"].height - @sprites["textbox"].height)
|
||||||
@sprites["option"].viewport = @viewport
|
@sprites["option"].viewport = @viewport
|
||||||
@sprites["option"].visible = true
|
@sprites["option"].visible = true
|
||||||
# Get the values of each option
|
# Get the values of each option
|
||||||
for i in 0...@PokemonOptions.length
|
for i in 0...@PokemonOptions.length
|
||||||
@sprites["option"].setValueNoRefresh(i,(@PokemonOptions[i].get || 0))
|
@sprites["option"].setValueNoRefresh(i, (@PokemonOptions[i].get || 0))
|
||||||
end
|
end
|
||||||
@sprites["option"].refresh
|
@sprites["option"].refresh
|
||||||
pbDeactivateWindows(@sprites)
|
pbDeactivateWindows(@sprites)
|
||||||
@@ -397,7 +418,7 @@ class PokemonOption_Scene
|
|||||||
def pbOptions
|
def pbOptions
|
||||||
oldSystemSkin = $PokemonSystem.frame # Menu
|
oldSystemSkin = $PokemonSystem.frame # Menu
|
||||||
oldTextSkin = $PokemonSystem.textskin # Speech
|
oldTextSkin = $PokemonSystem.textskin # Speech
|
||||||
pbActivateWindow(@sprites,"option") {
|
pbActivateWindow(@sprites, "option") {
|
||||||
loop do
|
loop do
|
||||||
Graphics.update
|
Graphics.update
|
||||||
Input.update
|
Input.update
|
||||||
@@ -407,12 +428,12 @@ class PokemonOption_Scene
|
|||||||
for i in 0...@PokemonOptions.length
|
for i in 0...@PokemonOptions.length
|
||||||
@PokemonOptions[i].set(@sprites["option"][i])
|
@PokemonOptions[i].set(@sprites["option"][i])
|
||||||
end
|
end
|
||||||
if $PokemonSystem.textskin!=oldTextSkin
|
if $PokemonSystem.textskin != oldTextSkin
|
||||||
@sprites["textbox"].setSkin(MessageConfig.pbGetSpeechFrame())
|
@sprites["textbox"].setSkin(MessageConfig.pbGetSpeechFrame())
|
||||||
@sprites["textbox"].text = _INTL("Speech frame {1}.",1+$PokemonSystem.textskin)
|
@sprites["textbox"].text = _INTL("Speech frame {1}.", 1 + $PokemonSystem.textskin)
|
||||||
oldTextSkin = $PokemonSystem.textskin
|
oldTextSkin = $PokemonSystem.textskin
|
||||||
end
|
end
|
||||||
if $PokemonSystem.frame!=oldSystemSkin
|
if $PokemonSystem.frame != oldSystemSkin
|
||||||
@sprites["title"].setSkin(MessageConfig.pbGetSystemFrame())
|
@sprites["title"].setSkin(MessageConfig.pbGetSystemFrame())
|
||||||
@sprites["option"].setSkin(MessageConfig.pbGetSystemFrame())
|
@sprites["option"].setSkin(MessageConfig.pbGetSystemFrame())
|
||||||
oldSystemSkin = $PokemonSystem.frame
|
oldSystemSkin = $PokemonSystem.frame
|
||||||
@@ -421,7 +442,7 @@ class PokemonOption_Scene
|
|||||||
if Input.trigger?(Input::BACK)
|
if Input.trigger?(Input::BACK)
|
||||||
break
|
break
|
||||||
elsif Input.trigger?(Input::USE)
|
elsif Input.trigger?(Input::USE)
|
||||||
break if @sprites["option"].index==@PokemonOptions.length
|
break if @sprites["option"].index == @PokemonOptions.length
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
}
|
}
|
||||||
@@ -449,7 +470,7 @@ class PokemonOptionScreen
|
|||||||
@scene = scene
|
@scene = scene
|
||||||
end
|
end
|
||||||
|
|
||||||
def pbStartScreen(inloadscreen=false)
|
def pbStartScreen(inloadscreen = false)
|
||||||
@scene.pbStartScene(inloadscreen)
|
@scene.pbStartScene(inloadscreen)
|
||||||
@scene.pbOptions
|
@scene.pbOptions
|
||||||
@scene.pbEndScene
|
@scene.pbEndScene
|
||||||
|
|||||||
8
Data/Scripts/049_Compatibility/Constants.rb
Normal file
8
Data/Scripts/049_Compatibility/Constants.rb
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
#Switches
|
||||||
|
NEW_GAME_PLUS = 972
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#Variables
|
||||||
|
DEFAULT_BATTLE_TYPE = 242
|
||||||
2
Data/Scripts/049_Compatibility/DeprecatedClasses.rb
Normal file
2
Data/Scripts/049_Compatibility/DeprecatedClasses.rb
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
class ControlConfig
|
||||||
|
end
|
||||||
@@ -94,8 +94,8 @@ class BetterRegionMap
|
|||||||
# end
|
# end
|
||||||
@window["player"] = Sprite.new(@mapoverlayvp)
|
@window["player"] = Sprite.new(@mapoverlayvp)
|
||||||
if @show_player
|
if @show_player
|
||||||
player = nil
|
if map_metadata
|
||||||
player = GameData::MapMetadata.get($game_map.map_id).town_map_position #pbGetMetadata($game_map.map_id, MetadataMapPosition) if $game_map
|
player = map_metadata.town_map_position
|
||||||
if player && player[0] == @region
|
if player && player[0] == @region
|
||||||
$PokemonGlobal.regionMapSel[0] = player[1]
|
$PokemonGlobal.regionMapSel[0] = player[1]
|
||||||
$PokemonGlobal.regionMapSel[1] = player[2]
|
$PokemonGlobal.regionMapSel[1] = player[2]
|
||||||
@@ -105,6 +105,10 @@ class BetterRegionMap
|
|||||||
@window["player"].y = TileHeight * player[2] + (TileHeight / 2.0)
|
@window["player"].y = TileHeight * player[2] + (TileHeight / 2.0)
|
||||||
@window["player"].center_origins
|
@window["player"].center_origins
|
||||||
end
|
end
|
||||||
|
else
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
@window["areahighlight"] = BitmapSprite.new(@window["map"].bitmap.width,@window["map"].bitmap.height,@mapoverlayvp)
|
@window["areahighlight"] = BitmapSprite.new(@window["map"].bitmap.width,@window["map"].bitmap.height,@mapoverlayvp)
|
||||||
@window["areahighlight"].y = -8
|
@window["areahighlight"].y = -8
|
||||||
|
|||||||
@@ -165,7 +165,8 @@ end
|
|||||||
def getHeadID(species, bodyId)
|
def getHeadID(species, bodyId)
|
||||||
head_dexNum = convertSpeciesSymbolToDexNumber(species)
|
head_dexNum = convertSpeciesSymbolToDexNumber(species)
|
||||||
body_dexNum = convertSpeciesSymbolToDexNumber(bodyId)
|
body_dexNum = convertSpeciesSymbolToDexNumber(bodyId)
|
||||||
return (head_dexNum - (body_dexNum * NB_POKEMON)).round
|
calculated_number = (head_dexNum - (body_dexNum * NB_POKEMON)).round
|
||||||
|
return calculated_number == 0 ? 420 : calculated_number
|
||||||
end
|
end
|
||||||
|
|
||||||
def getAllNonLegendaryPokemon()
|
def getAllNonLegendaryPokemon()
|
||||||
@@ -291,3 +292,13 @@ def pbBitmap(path)
|
|||||||
end
|
end
|
||||||
return bmp
|
return bmp
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def Kernel.setRocketPassword(variableNum)
|
||||||
|
abilityIndex = rand(233)
|
||||||
|
speciesIndex =rand(PBSpecies.maxValue-1)
|
||||||
|
|
||||||
|
word1 = PBSpecies.getName(speciesIndex)
|
||||||
|
word2 = GameData::Ability.get(abilityIndex).name
|
||||||
|
password = _INTL("{1}'s {2}",word1,word2)
|
||||||
|
pbSet(variableNum,password)
|
||||||
|
end
|
||||||
|
|||||||
@@ -378,6 +378,31 @@ ItemHandlers::UseOnPokemon.add(:MISTSTONE, proc { |item, pokemon, scene|
|
|||||||
end
|
end
|
||||||
})
|
})
|
||||||
|
|
||||||
|
ItemHandlers::UseFromBag.add(:DEBUGGER,proc{|item|
|
||||||
|
Kernel.pbMessage(_INTL("[{1}]The debugger should ONLY be used if you are stuck somewhere because of a glitch.",Settings::GAME_VERSION_NUMBER))
|
||||||
|
if Kernel.pbConfirmMessageSerious(_INTL("Innapropriate use of this item can lead to unwanted effects and make the game unplayable. Do you want to continue?"))
|
||||||
|
$game_player.cancelMoveRoute()
|
||||||
|
Kernel.pbStartOver(false)
|
||||||
|
Kernel.pbMessage(_INTL("Please report the glitch on the Pokecommunity thread, on the game's subreddit or in the game's Discord channel."))
|
||||||
|
end
|
||||||
|
})
|
||||||
|
|
||||||
|
ItemHandlers::UseFromBag.add(:MAGICBOOTS,proc{|item|
|
||||||
|
if $DEBUG
|
||||||
|
if Kernel.pbConfirmMessageSerious(_INTL("Take off the Magic Boots?"))
|
||||||
|
$DEBUG = false
|
||||||
|
end
|
||||||
|
else
|
||||||
|
if Kernel.pbConfirmMessageSerious(_INTL("Put on the Magic Boots?"))
|
||||||
|
Kernel.pbMessage(_INTL("Debug mode is now active."))
|
||||||
|
$game_switches[842] = true #got debug mode (for compatibility)
|
||||||
|
$DEBUG = true
|
||||||
|
end
|
||||||
|
end
|
||||||
|
next 1
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
def pbForceEvo(pokemon)
|
def pbForceEvo(pokemon)
|
||||||
newspecies = getEvolvedSpecies(pokemon)
|
newspecies = getEvolvedSpecies(pokemon)
|
||||||
return false if newspecies == -1
|
return false if newspecies == -1
|
||||||
|
|||||||
@@ -694,7 +694,7 @@ class PokemonFusionScene
|
|||||||
$Trainer.pokedex.set_owned(newSpecies)
|
$Trainer.pokedex.set_owned(newSpecies)
|
||||||
Kernel.pbMessageDisplay(@sprites["msgwindow"],
|
Kernel.pbMessageDisplay(@sprites["msgwindow"],
|
||||||
_INTL("{1}'s data was added to the Pokédex", newspeciesname))
|
_INTL("{1}'s data was added to the Pokédex", newspeciesname))
|
||||||
#@scene.pbShowPokedex(@newspecies)
|
@scene.pbShowPokedex(@newspecies)
|
||||||
end
|
end
|
||||||
#first check if hidden ability
|
#first check if hidden ability
|
||||||
hiddenAbility1 = @pokemon1.ability == @pokemon1.getAbilityList[0][-1]
|
hiddenAbility1 = @pokemon1.ability == @pokemon1.getAbilityList[0][-1]
|
||||||
|
|||||||
Binary file not shown.
BIN
Data/items.dat
BIN
Data/items.dat
Binary file not shown.
Binary file not shown.
Binary file not shown.
26811
PBS/Gen 7/pokemon.txt
26811
PBS/Gen 7/pokemon.txt
File diff suppressed because it is too large
Load Diff
@@ -522,7 +522,7 @@
|
|||||||
515,DEVONSCOPE,Quest Journal,Quest Journals,8,0,A journal that logs all of the quests that you have in progress,2,0,6,
|
515,DEVONSCOPE,Quest Journal,Quest Journals,8,0,A journal that logs all of the quests that you have in progress,2,0,6,
|
||||||
516,SQUIRTBOTTLE,Squirtbottle,Squirtbottles,8,0,A bottle used for watering plants.,0,0,6,
|
516,SQUIRTBOTTLE,Squirtbottle,Squirtbottles,8,0,A bottle used for watering plants.,0,0,6,
|
||||||
517,SPRAYDUCK,Mareanie Doll,Mareanie Dolls,8,0,A doll shaped like the Alolan Pokémon Mareanie. It can be used to scare away Corsola.,0,0,6,
|
517,SPRAYDUCK,Mareanie Doll,Mareanie Dolls,8,0,A doll shaped like the Alolan Pokémon Mareanie. It can be used to scare away Corsola.,0,0,6,
|
||||||
518,WAILMERPAIL,Spring Boots,Spring Boots,8,0,Boots mounted with a spring. They can be used to jump over small gaps.,0,0,6,
|
518,WAILMERPAIL,Golbat Boots,Golbat Boots,8,0,Boots mounted with a spring. They can be used to jump over small gaps.,0,0,6,
|
||||||
519,GRACIDEA,Spaceship Part,Spaceship Parts,8,0,"Debris from a mysterious alien spaceship.",5,0,6,
|
519,GRACIDEA,Spaceship Part,Spaceship Parts,8,0,"Debris from a mysterious alien spaceship.",5,0,6,
|
||||||
520,AURORATICKET,Navel Ticket,Navel Tickets,8,0,A ticket required to board a ship to a faraway island. It glows beautifully.,0,0,6,
|
520,AURORATICKET,Navel Ticket,Navel Tickets,8,0,A ticket required to board a ship to a faraway island. It glows beautifully.,0,0,6,
|
||||||
521,OLDSEAMAP,Old Sea Map,Old Sea Maps,8,0,A faded sea chart that shows the way to a certain island.,0,0,6,
|
521,OLDSEAMAP,Old Sea Map,Old Sea Maps,8,0,A faded sea chart that shows the way to a certain island.,0,0,6,
|
||||||
@@ -651,5 +651,16 @@
|
|||||||
643,JETPACK,Jetpack,Jetpacks,8,0,"A water propelled device that allows you to climb up waterfalls without the use of a Pokémon ",2,0,6
|
643,JETPACK,Jetpack,Jetpacks,8,0,"A water propelled device that allows you to climb up waterfalls without the use of a Pokémon ",2,0,6
|
||||||
644,INFINITEREVERSERS,Infinite Reversers,Infinite Reversers,8,0,"Inverts a fusion. Can be reused as many times as you like.",5,0,6,
|
644,INFINITEREVERSERS,Infinite Reversers,Infinite Reversers,8,0,"Inverts a fusion. Can be reused as many times as you like.",5,0,6,
|
||||||
645,INFINITESPLICERS2,Infinite Splicers,Infinite Splicers,8,0,"An improved version of the Infinite Splicers. Can be reused as many times as you like.",5,0,6,
|
645,INFINITESPLICERS2,Infinite Splicers,Infinite Splicers,8,0,"An improved version of the Infinite Splicers. Can be reused as many times as you like.",5,0,6,
|
||||||
|
646,TM109,TM109,TM109s,4,30000,"The user swings its body around violently to inflict damage on everything in its vicinity.",3,0,0,BRUTALSWING
|
||||||
|
647,TM110,TM110,TM110s,4,30000,"This move reduces damage from attacks for five turns. This can be used only in a hailstorm.",3,0,0,AURORAVEIL
|
||||||
|
648,TM111,TM111,TM111s,4,30000,"The user damages opposing Pokémon by emitting a powerful flash.",3,0,0,DAZZLINGGLEAM
|
||||||
|
649,TM112,TM112,TM112s,4,30000,"The user focuses its mind before launching a punch. It will fail if the user is hit before it is used.",3,0,0,FOCUSPUNCH
|
||||||
|
650,TM113,TM113,TM113s,4,30000,"The target is infested and unable to flee for four to five turns.",3,0,0,INFESTATION
|
||||||
|
651,TM114,TM114,TM114s,4,30000,"The user drains the target's blood. The user's HP is restored by half the damage taken by the target.",3,0,0,LEECHLIFE
|
||||||
|
652,TM115,TM115,TM115s,4,30000,"Striking opponents repeatedly makes the user's fists harder, raising the user's Attack stat.",3,0,0,POWERUPPUNCH
|
||||||
|
653,TM116,TM116,TM116s,4,30000,"The user strikes the target with a quick jolt of electricity. This attack cannot be evaded.",3,0,0,SHOCKWAVE
|
||||||
|
654,TM117,TM117,TM117s,4,30000,"The user stabs the target with a sharp horn. This attack never misses.",3,0,0,SMARTSTRIKE
|
||||||
|
655,TM118,TM118,TM118s,4,30000,"The target is hit with wings of steel. It may also raise the user's Defense stat.",3,0,0,STEELWING
|
||||||
|
656,TM119,TM119,TM119s,4,30000,"The user attacks driven by frustration. Power increases if the user's previous move failed.",3,0,0,STOMPINGTANTRUM
|
||||||
|
657,TM120,TM120,TM120s,4,30000,"The user attacks the target's throat. The target cannot use sound-based moves for two turns.",3,0,0,THROATCHOP
|
||||||
|
|
||||||
|
|||||||
1668
PBS/pokemon_420.txt
1668
PBS/pokemon_420.txt
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -52,46 +52,46 @@ Pokemon = B64H92,32 #Gasbra,
|
|||||||
#########################
|
#########################
|
||||||
|
|
||||||
[CHANNELER,Carrietta]
|
[CHANNELER,Carrietta]
|
||||||
Pokemon = B92H61,32 #Politly,
|
Pokemon = B52H92,32 #meowly,
|
||||||
#########################
|
#########################
|
||||||
|
|
||||||
[CHANNELER,Morgan]
|
[CHANNELER,Morgan]
|
||||||
Pokemon = B92H140,34 #kabutly,
|
Pokemon = B20H92,34 #ratatly,
|
||||||
############F5############
|
############F5############
|
||||||
#########################
|
#########################
|
||||||
|
|
||||||
[CHANNELER,Ruth]
|
[CHANNELER,Ruth]
|
||||||
Pokemon = B40H92,33 #Gastuf,
|
Pokemon = B93H96,33 #Gastuf,
|
||||||
#########################
|
#########################
|
||||||
|
|
||||||
[HAUNTEDGIRL_YOUNG,Regan]
|
[HAUNTEDGIRL_YOUNG,Regan]
|
||||||
Pokemon = B93H26,33 #Raiter,
|
Pokemon = B102H92,33 #exeggly,
|
||||||
#########################
|
#########################
|
||||||
|
|
||||||
[CHANNELER,Karina]
|
[CHANNELER,Karina]
|
||||||
Pokemon = B92H73,32 #Tentatly,
|
Pokemon = B93H42,32 #haunbat,
|
||||||
#########################
|
#########################
|
||||||
|
|
||||||
[HAUNTEDGIRL,Carol Anne]
|
[HAUNTEDGIRL,Carol Anne]
|
||||||
Pokemon = B28H93,34 #Hauntslash,
|
Pokemon = B42H93,34 #golter,
|
||||||
#########################
|
#########################
|
||||||
###### f6##############
|
###### f6##############
|
||||||
|
|
||||||
[CHANNELER,Angelica]
|
[CHANNELER,Angelica]
|
||||||
Pokemon = GASTLY,32 #Pertly,
|
Pokemon = GASTLY,32 #Pertly,
|
||||||
Pokemon = GASTLY,33 #Genkarp,
|
Pokemon = GASTLY,33 #Genkarp,
|
||||||
Pokemon = B13H94,33 #Gendle,
|
Pokemon = B200H92,33 #misdreatly,
|
||||||
#########################
|
#########################
|
||||||
|
|
||||||
[HAUNTEDGIRL_YOUNG,Jennifer]
|
[HAUNTEDGIRL_YOUNG,Jennifer]
|
||||||
Pokemon = B101H93,34 #Hauntode,
|
Pokemon = B94H36,31 #Hauntfable,
|
||||||
#########################
|
#######################1##
|
||||||
|
|
||||||
[CHANNELER,Emilia]
|
[CHANNELER,Emilia]
|
||||||
Pokemon = B128H93,34 #Hauntros,
|
Pokemon = B51H93,34 #Hauntrio,
|
||||||
#########################
|
#########################
|
||||||
|
|
||||||
[HAUNTEDGIRL,Samara]
|
[HAUNTEDGIRL,???]
|
||||||
Pokemon = B105H93,40 #Hauntwak,
|
Pokemon = B105H93,40 #Hauntwak,
|
||||||
|
|
||||||
############################
|
############################
|
||||||
@@ -2086,8 +2086,8 @@ Pokemon = B109H88,37 #koffmer
|
|||||||
Moves = SELFDESTRUCT,SLUDGEBOMB,DESTINYBOND,FLING
|
Moves = SELFDESTRUCT,SLUDGEBOMB,DESTINYBOND,FLING
|
||||||
AbilityIndex = 0
|
AbilityIndex = 0
|
||||||
Item = POISONBARB
|
Item = POISONBARB
|
||||||
Pokemon = B197H169,37 #umbfing,
|
Pokemon = B42H113,35 #chanbat,
|
||||||
Moves = POWERGEM,FAINTATTACK,TOXIC,SLUDGEBOMB
|
Moves = EGGBOMB,LIGHTSCREEN,TOXIC,POISONFANG
|
||||||
AbilityIndex = 0
|
AbilityIndex = 0
|
||||||
Item = BLACKGLASSES
|
Item = BLACKGLASSES
|
||||||
Pokemon = B119H110,39 # Weeking,
|
Pokemon = B119H110,39 # Weeking,
|
||||||
@@ -3613,7 +3613,7 @@ Pokemon = B137H81,36 #MAGNEGON
|
|||||||
#######################
|
#######################
|
||||||
|
|
||||||
[TEAMROCKET_M,Donald]
|
[TEAMROCKET_M,Donald]
|
||||||
Pokemon = SANDSLASH,34 #NIDOSLASH
|
Pokemon = RATICATE,34 #NIDOSLASH
|
||||||
Pokemon = B34H27,34 #SANDKING
|
Pokemon = B34H27,34 #SANDKING
|
||||||
######################
|
######################
|
||||||
#####
|
#####
|
||||||
|
|||||||
41
README.md
41
README.md
@@ -1,41 +0,0 @@
|
|||||||
# Pokémon Essentials
|
|
||||||
|
|
||||||
Based on Essentials v19.
|
|
||||||
|
|
||||||
You can build your fangame on top of a fork of this repository. Doing so will let you update your fangame with improvements made to this repo as soon as they are made.
|
|
||||||
|
|
||||||
## Usage
|
|
||||||
|
|
||||||
1. Fork this repo.
|
|
||||||
2. Get a copy of Essentials v19 (a download link cannot be provided here).
|
|
||||||
3. Clone your forked repo into the Essentials v19 folder, replacing the existing files with the ones from the repo.
|
|
||||||
|
|
||||||
From here, you can edit this project to turn it into your fangame/develop mods. When this repo is updated, you can pull the changes to update your fork and get the updates into your fangame/modding environment.
|
|
||||||
|
|
||||||
## Scripts
|
|
||||||
|
|
||||||
The scripts no longer live in the Scripts.rxdata file. They have been extracted into separate files and placed in the Data/Scripts/ folder (and subfolders within). This makes it easier to work with other people and keep track of changes.
|
|
||||||
|
|
||||||
The scripts are loaded into the game alphanumerically, starting from the top folder (Data/Scripts/) and going depth-first. That is, all scripts in a given folder are loaded, and then each of its subfolder is checked in turn (again in alphanumerical order) for files/folders to load/check.
|
|
||||||
|
|
||||||
### Extracting and reintegrating scripts
|
|
||||||
|
|
||||||
This repo contains two script files in the main folder:
|
|
||||||
|
|
||||||
* scripts_extract.rb - Run this to extract all scripts from Scripts.rxdata into individual .rb files (any existing individual .rb files are deleted).
|
|
||||||
* Scripts.rxdata is backed up to ScriptsBackup.rxdata, and is then replaced with a version that reads the individual .rb files and does nothing else.
|
|
||||||
* scripts_combine.rb - Run this to reintegrate all the individual .rb files back into Scripts.rxdata.
|
|
||||||
* The individual .rb files are left where they are, but they no longer do anything.
|
|
||||||
|
|
||||||
You will need Ruby installed to run these scripts. The intention is to replace these with something more user-friendly.
|
|
||||||
|
|
||||||
## Files not in the repo
|
|
||||||
|
|
||||||
The .gitignore file lists the files that will not be included in this repo. These are:
|
|
||||||
|
|
||||||
* The Audio/, Graphics/ and Plugins/ folders and everything in them.
|
|
||||||
* Everything in the Data/ folder, except for:
|
|
||||||
* The Data/Scripts/ folder and everything in there.
|
|
||||||
* Scripts.rxdata (a special version that just loads the individual script files).
|
|
||||||
* A few files in the main project folder (two of the Game.xxx files, and the RGSS dll file).
|
|
||||||
* Temporary files.
|
|
||||||
@@ -15,45 +15,66 @@ New features added by upgrading to Pokemon essentials 19 / MKXP
|
|||||||
MKXP: https://github.com/Ancurio/mkxp
|
MKXP: https://github.com/Ancurio/mkxp
|
||||||
Full Essentials changelog: https://essentialsdocs.fandom.com/wiki/Change_log
|
Full Essentials changelog: https://essentialsdocs.fandom.com/wiki/Change_log
|
||||||
|
|
||||||
## Technical ###
|
## Technical###
|
||||||
|
- MKXP player is now used to run the game instead of RGSS player
|
||||||
- Fullscreen & resizable screen
|
- Fullscreen & resizable screen
|
||||||
- Linux and Mac support
|
|
||||||
- Performance improvements
|
- Performance improvements
|
||||||
- Native controller support
|
- Built-in controls binding (F1)
|
||||||
|
-- Includes native controller support
|
||||||
- The game now continues running when it's in the background
|
- The game now continues running when it's in the background
|
||||||
- Savefiles are now located in the appdata folder (Windows)
|
- Savefiles have been moved to the appdata folder (Windows)
|
||||||
- New debug options:
|
|
||||||
|
|
||||||
|
## UI and menus ##
|
||||||
|
- New options in in-game menu:
|
||||||
- Default movement
|
- Default movement
|
||||||
- Text entry type
|
- Text entry type
|
||||||
-
|
- Battle type
|
||||||
- New options in in-game menu:
|
- Menus and controls should be more responsive
|
||||||
- Fixes random memory crashes (unconfirmed, but I haven't encountered one so far)
|
- Added Instant text speed option
|
||||||
|
- Added visual indicator for selecting fusion order on the title screen
|
||||||
|
- Changed the battle UI's appearance
|
||||||
|
|
||||||
## Gameplay ##
|
## Gameplay ##
|
||||||
- Fixes several moves and abilities which were previously broken (Crafty Shield, Fairy Lock, Purify,
|
|
||||||
Gale Wings, Moxie, Innards Out, Magician, Pickpocket, Protean, Disguise)
|
|
||||||
- Fixes double battles
|
|
||||||
- Exp. gain when catching Pokémon
|
- Exp. gain when catching Pokémon
|
||||||
- Now possible to register multiple items at once
|
- Now possible to register multiple items at once
|
||||||
|
- Adds several new moves from generations 5 to 7
|
||||||
|
- Added back double battles
|
||||||
|
- Added triple battles lounge in Knot Island
|
||||||
Other changes
|
- Added Battle Factory
|
||||||
‾‾‾‾‾
|
|
||||||
- Added Instant text speed option
|
|
||||||
- Changed how levels are calculated when unfusing:
|
- Changed how levels are calculated when unfusing:
|
||||||
- Level when originally fused + experience obtained while fused
|
- Level when originally fused + experience obtained while fused
|
||||||
- Levels gained via Rare Candies are NOT taken into account
|
- Levels gained via Rare Candies are NOT taken into account
|
||||||
-NB: Pokemon that were fused in previous versions still use the old method
|
-NB: Pokemon that were fused in previous versions still use the old method
|
||||||
- Reduced DNA Splicers price to $300
|
- Updated all movesets to gen 7
|
||||||
- Resort Gorgeous now prioritizes Pokemon with custom sprites
|
- Added 12 new TMs and 5 new Move tutors
|
||||||
- Added back double battles
|
- Removed the Mt. Silver requirement for making triple fusions
|
||||||
- Added triple battles lounge in Knot Island
|
- Added an option to set the default battle type (single, double, triple) - Only available if beat the game at least once
|
||||||
- Added Battle Factory
|
|
||||||
- Added visual indicator for selecting fusion order on the title screen
|
|
||||||
|
## Maps ##
|
||||||
- Changed some tiles in Vermillion City
|
- Changed some tiles in Vermillion City
|
||||||
- Added Dive section to Kindle Road
|
- Added Dive section to Kindle Road
|
||||||
- Made Giovanni boss battle in Saffron 2vs1
|
|
||||||
|
## Tweaks / Balance ##
|
||||||
|
- Reduced DNA Splicers price to $300
|
||||||
|
- Tweaked Sprout Tower to make it a bit easier
|
||||||
|
- Moon Stones, Sun Stones, Dawn Stones, Dusk Stones and Shiny Stones are now sold at the Goldenrod Dept. Store instead of Celadon
|
||||||
|
- Changed some trainer teams in Lavender tower
|
||||||
|
|
||||||
|
## Miscellaneous ##
|
||||||
|
- Resort Gorgeous now prioritizes Pokemon with custom sprites
|
||||||
|
- Renamed Spring boots to Golbat Boots
|
||||||
|
- New debug options
|
||||||
|
- Item stack limit increased to 999
|
||||||
|
|
||||||
|
#################
|
||||||
|
# Bug fixes #
|
||||||
|
#################
|
||||||
|
- Fixed random memory crashes (unconfirmed, but I haven't encountered one so far)
|
||||||
|
- Fixed random crash when catching Pokémon
|
||||||
|
- Fixed several moves and abilities which were previously broken (Crafty Shield, Fairy Lock, Purify, Gale Wings, Moxie, Innards Out, Magician, Pickpocket, Protean, Disguise)
|
||||||
|
- Fixed double battles
|
||||||
|
|
||||||
#################
|
#################
|
||||||
Removed Features
|
Removed Features
|
||||||
@@ -67,7 +88,7 @@ Removed features that will be coming back eventually
|
|||||||
- Wild fusions //TODO: pas oublier de init exp_gained_since_fused=0 && exp_when_fused = self.exp
|
- Wild fusions //TODO: pas oublier de init exp_gained_since_fused=0 && exp_when_fused = self.exp
|
||||||
- Autosave (except in Pokemon centers)
|
- Autosave (except in Pokemon centers)
|
||||||
- Fusing from PC
|
- Fusing from PC
|
||||||
- Nicknaming from the party screen
|
- Nicknaming from the party screen - Added temporary name rater in Vermillion City's Pokemon center
|
||||||
- Modern Mode compatibility
|
- Modern Mode compatibility
|
||||||
- Quest log
|
- Quest log
|
||||||
- Hidden abilities routes
|
- Hidden abilities routes
|
||||||
@@ -90,4 +111,10 @@ Removed features that probably won't be coming back
|
|||||||
############ KNOWN ISSUES ##############
|
############ KNOWN ISSUES ##############
|
||||||
- Some areas might have abnormal lag (please tell me in the discord if you find one that's unreasonably laggy)
|
- Some areas might have abnormal lag (please tell me in the discord if you find one that's unreasonably laggy)
|
||||||
- Some side-stairs might act strange
|
- Some side-stairs might act strange
|
||||||
|
- The Pokedex is currently all sorts of messed up
|
||||||
|
- Long loading time when starting up the game
|
||||||
|
- Some of the music and sound effects might not load correctly
|
||||||
|
- Some Pokémon appear higher than they should in battles on the player's side
|
||||||
|
- Significant stutter in the overworld when playing the game on an AMD CPU
|
||||||
|
- Several custom items have not yet been reimplemented
|
||||||
|
- Some battle backgrounds might be missing
|
||||||
|
|||||||
Reference in New Issue
Block a user