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)
|
||||
end
|
||||
|
||||
def cancelMoveRoute()
|
||||
@move_route=nil
|
||||
@move_route_forcing = false
|
||||
end
|
||||
|
||||
def bush_depth
|
||||
return @bush_depth || 0
|
||||
end
|
||||
|
||||
@@ -4,7 +4,7 @@ module GameData
|
||||
attr_reader :id_number
|
||||
attr_reader :real_name
|
||||
attr_reader :can_surf
|
||||
attr_reader :waterfall # The main part only, not the crest
|
||||
attr_reader :waterfall # The main part only, not the crest
|
||||
attr_reader :waterfall_crest
|
||||
attr_reader :can_fish
|
||||
attr_reader :can_dive
|
||||
@@ -36,28 +36,29 @@ module GameData
|
||||
end
|
||||
|
||||
def self.load; end
|
||||
|
||||
def self.save; end
|
||||
|
||||
def initialize(hash)
|
||||
@id = hash[:id]
|
||||
@id_number = hash[:id_number]
|
||||
@real_name = hash[:id].to_s || "Unnamed"
|
||||
@can_surf = hash[:can_surf] || false
|
||||
@waterfall = hash[:waterfall] || false
|
||||
@waterfall_crest = hash[:waterfall_crest] || false
|
||||
@can_fish = hash[:can_fish] || false
|
||||
@can_dive = hash[:can_dive] || false
|
||||
@deep_bush = hash[:deep_bush] || false
|
||||
@shows_grass_rustle = hash[:shows_grass_rustle] || false
|
||||
@land_wild_encounters = hash[:land_wild_encounters] || false
|
||||
@id = hash[:id]
|
||||
@id_number = hash[:id_number]
|
||||
@real_name = hash[:id].to_s || "Unnamed"
|
||||
@can_surf = hash[:can_surf] || false
|
||||
@waterfall = hash[:waterfall] || false
|
||||
@waterfall_crest = hash[:waterfall_crest] || false
|
||||
@can_fish = hash[:can_fish] || false
|
||||
@can_dive = hash[:can_dive] || false
|
||||
@deep_bush = hash[:deep_bush] || false
|
||||
@shows_grass_rustle = hash[:shows_grass_rustle] || false
|
||||
@land_wild_encounters = hash[:land_wild_encounters] || false
|
||||
@double_wild_encounters = hash[:double_wild_encounters] || false
|
||||
@battle_environment = hash[:battle_environment]
|
||||
@ledge = hash[:ledge] || false
|
||||
@ice = hash[:ice] || false
|
||||
@bridge = hash[:bridge] || false
|
||||
@shows_reflections = hash[:shows_reflections] || false
|
||||
@must_walk = hash[:must_walk] || false
|
||||
@ignore_passability = hash[:ignore_passability] || false
|
||||
@battle_environment = hash[:battle_environment]
|
||||
@ledge = hash[:ledge] || false
|
||||
@ice = hash[:ice] || false
|
||||
@bridge = hash[:bridge] || false
|
||||
@shows_reflections = false #= hash[:shows_reflections] || false
|
||||
@must_walk = hash[:must_walk] || false
|
||||
@ignore_passability = hash[:ignore_passability] || false
|
||||
end
|
||||
|
||||
def can_surf_freely
|
||||
@@ -69,134 +70,134 @@ end
|
||||
#===============================================================================
|
||||
|
||||
GameData::TerrainTag.register({
|
||||
:id => :None,
|
||||
:id_number => 0
|
||||
})
|
||||
:id => :None,
|
||||
:id_number => 0
|
||||
})
|
||||
|
||||
GameData::TerrainTag.register({
|
||||
:id => :Ledge,
|
||||
:id_number => 1,
|
||||
:ledge => true
|
||||
})
|
||||
:id => :Ledge,
|
||||
:id_number => 1,
|
||||
:ledge => true
|
||||
})
|
||||
|
||||
GameData::TerrainTag.register({
|
||||
:id => :Grass,
|
||||
:id_number => 2,
|
||||
:shows_grass_rustle => true,
|
||||
:land_wild_encounters => true,
|
||||
:battle_environment => :Grass
|
||||
})
|
||||
:id => :Grass,
|
||||
:id_number => 2,
|
||||
:shows_grass_rustle => true,
|
||||
:land_wild_encounters => true,
|
||||
:battle_environment => :Grass
|
||||
})
|
||||
|
||||
GameData::TerrainTag.register({
|
||||
:id => :Sand,
|
||||
:id_number => 3,
|
||||
:battle_environment => :Sand
|
||||
})
|
||||
:id => :Sand,
|
||||
:id_number => 3,
|
||||
:battle_environment => :Sand
|
||||
})
|
||||
|
||||
GameData::TerrainTag.register({
|
||||
:id => :Rock,
|
||||
:id_number => 15,
|
||||
:battle_environment => :Rock
|
||||
})
|
||||
:id => :Rock,
|
||||
:id_number => 15,
|
||||
:battle_environment => :Rock
|
||||
})
|
||||
|
||||
GameData::TerrainTag.register({
|
||||
:id => :DeepWater,
|
||||
:id_number => 5,
|
||||
:can_surf => true,
|
||||
:can_fish => true,
|
||||
:can_dive => true,
|
||||
:battle_environment => :MovingWater
|
||||
})
|
||||
:id => :DeepWater,
|
||||
:id_number => 5,
|
||||
:can_surf => true,
|
||||
:can_fish => true,
|
||||
:can_dive => true,
|
||||
:battle_environment => :MovingWater
|
||||
})
|
||||
|
||||
GameData::TerrainTag.register({
|
||||
:id => :WaterCurrent,
|
||||
:id_number => 6,
|
||||
:can_surf => true,
|
||||
:can_fish => true,
|
||||
:battle_environment => :MovingWater
|
||||
})
|
||||
:id => :WaterCurrent,
|
||||
:id_number => 6,
|
||||
:can_surf => true,
|
||||
:can_fish => true,
|
||||
:battle_environment => :MovingWater
|
||||
})
|
||||
|
||||
GameData::TerrainTag.register({
|
||||
:id => :StillWater,
|
||||
:id_number => 17,
|
||||
:can_surf => true,
|
||||
:can_fish => true,
|
||||
:battle_environment => :StillWater
|
||||
#:shows_reflections => true
|
||||
})
|
||||
:id => :StillWater,
|
||||
:id_number => 17,
|
||||
:can_surf => true,
|
||||
:can_fish => true,
|
||||
:battle_environment => :StillWater
|
||||
#:shows_reflections => true
|
||||
})
|
||||
|
||||
GameData::TerrainTag.register({
|
||||
:id => :Water,
|
||||
:id_number => 7,
|
||||
:can_surf => true,
|
||||
:can_fish => true,
|
||||
:battle_environment => :MovingWater
|
||||
})
|
||||
:id => :Water,
|
||||
:id_number => 7,
|
||||
:can_surf => true,
|
||||
:can_fish => true,
|
||||
:battle_environment => :MovingWater
|
||||
})
|
||||
|
||||
GameData::TerrainTag.register({
|
||||
:id => :Waterfall,
|
||||
:id_number => 8,
|
||||
:can_surf => true,
|
||||
:waterfall => true
|
||||
})
|
||||
:id => :Waterfall,
|
||||
:id_number => 8,
|
||||
:can_surf => true,
|
||||
:waterfall => true
|
||||
})
|
||||
|
||||
GameData::TerrainTag.register({
|
||||
:id => :WaterfallCrest,
|
||||
:id_number => 9,
|
||||
:can_surf => true,
|
||||
:can_fish => true,
|
||||
:waterfall_crest => true
|
||||
})
|
||||
:id => :WaterfallCrest,
|
||||
:id_number => 9,
|
||||
:can_surf => true,
|
||||
:can_fish => true,
|
||||
:waterfall_crest => true
|
||||
})
|
||||
|
||||
GameData::TerrainTag.register({
|
||||
:id => :TallGrass,
|
||||
:id_number => 10,
|
||||
:deep_bush => true,
|
||||
:land_wild_encounters => true,
|
||||
:double_wild_encounters => true,
|
||||
:battle_environment => :TallGrass,
|
||||
:must_walk => true
|
||||
})
|
||||
:id => :TallGrass,
|
||||
:id_number => 10,
|
||||
:deep_bush => true,
|
||||
:land_wild_encounters => true,
|
||||
:double_wild_encounters => true,
|
||||
:battle_environment => :TallGrass,
|
||||
:must_walk => true
|
||||
})
|
||||
|
||||
GameData::TerrainTag.register({
|
||||
:id => :UnderwaterGrass,
|
||||
:id_number => 11,
|
||||
:land_wild_encounters => true
|
||||
})
|
||||
:id => :UnderwaterGrass,
|
||||
:id_number => 11,
|
||||
:land_wild_encounters => true
|
||||
})
|
||||
|
||||
GameData::TerrainTag.register({
|
||||
:id => :Ice,
|
||||
:id_number => 12,
|
||||
:battle_environment => :Ice,
|
||||
:ice => true,
|
||||
:must_walk => true
|
||||
})
|
||||
:id => :Ice,
|
||||
:id_number => 12,
|
||||
:battle_environment => :Ice,
|
||||
:ice => true,
|
||||
:must_walk => true
|
||||
})
|
||||
|
||||
GameData::TerrainTag.register({
|
||||
:id => :Neutral,
|
||||
:id_number => 13,
|
||||
:ignore_passability => true
|
||||
})
|
||||
:id => :Neutral,
|
||||
:id_number => 13,
|
||||
:ignore_passability => true
|
||||
})
|
||||
|
||||
# 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.
|
||||
GameData::TerrainTag.register({
|
||||
:id => :SootGrass,
|
||||
:id_number => 14,
|
||||
:shows_grass_rustle => true,
|
||||
:land_wild_encounters => true,
|
||||
:battle_environment => :Grass
|
||||
})
|
||||
:id => :SootGrass,
|
||||
:id_number => 14,
|
||||
:shows_grass_rustle => true,
|
||||
:land_wild_encounters => true,
|
||||
:battle_environment => :Grass
|
||||
})
|
||||
|
||||
GameData::TerrainTag.register({
|
||||
:id => :Bridge,
|
||||
:id_number => 4,
|
||||
:bridge => true
|
||||
})
|
||||
:id => :Bridge,
|
||||
:id_number => 4,
|
||||
:bridge => true
|
||||
})
|
||||
|
||||
GameData::TerrainTag.register({
|
||||
:id => :Puddle,
|
||||
:id_number => 16,
|
||||
:battle_environment => :Puddle,
|
||||
:shows_reflections => false
|
||||
})
|
||||
:id => :Puddle,
|
||||
:id_number => 16,
|
||||
:battle_environment => :Puddle,
|
||||
: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
|
||||
# number is for the opposing side.
|
||||
def setBattleMode(mode)
|
||||
default = $game_variables[242].is_a?(Array) ? $game_variables[242] : [1,1]
|
||||
@sideSizes =
|
||||
case mode
|
||||
when "triple", "3v3" then [3, 3]
|
||||
@@ -187,7 +188,7 @@ class PokeBattle_Battle
|
||||
when "2v1" then [2, 1]
|
||||
when "1v3" then [1, 3]
|
||||
when "1v2" then [1, 2]
|
||||
else [1, 1] # Single, 1v1 (default)
|
||||
else default # Single, 1v1 (default)
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
@@ -136,7 +136,9 @@ class PokeBattle_Scene
|
||||
playerBase = "Graphics/Battlebacks/playerbase/"+baseFilename
|
||||
enemyBase = "Graphics/Battlebacks/enemybase/"+baseFilename
|
||||
messageBG = "Graphics/Battlebacks/"+messageFilename+"_message"
|
||||
|
||||
if !pbResolveBitmap(messageBG)
|
||||
messageBG = "Graphics/Battlebacks/default_message"
|
||||
end
|
||||
# Apply graphics
|
||||
bg = pbAddSprite("battle_bg",0,0,battleBG,@viewport)
|
||||
bg.z = 0
|
||||
|
||||
@@ -120,7 +120,7 @@ end
|
||||
def pbPrepareBattle(battle)
|
||||
battleRules = $PokemonTemp.battleRules
|
||||
# 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)
|
||||
battle.canLose = battleRules["canLose"] if !battleRules["canLose"].nil?
|
||||
# Whether the player can choose to run from the battle (default: true)
|
||||
|
||||
@@ -168,6 +168,7 @@ class PokemonIconSprite < SpriteWrapper
|
||||
bodyPoke_number = getBodyID(pokemon.species)
|
||||
headPoke_number = getHeadID(pokemon.species, bodyPoke_number)
|
||||
|
||||
|
||||
bodyPoke = GameData::Species.get(bodyPoke_number).species
|
||||
headPoke = GameData::Species.get(headPoke_number).species
|
||||
|
||||
|
||||
@@ -15,17 +15,17 @@ class PokemonSystem
|
||||
attr_accessor :textinput
|
||||
|
||||
def initialize
|
||||
@textspeed = 1 # Text speed (0=slow, 1=normal, 2=fast)
|
||||
@battlescene = 0 # Battle effects (animations) (0=on, 1=off)
|
||||
@battlestyle = 0 # Battle style (0=switch, 1=set)
|
||||
@frame = 0 # Default window frame (see also Settings::MENU_WINDOWSKINS)
|
||||
@textskin = 0 # Speech frame
|
||||
@screensize = (Settings::SCREEN_SCALE * 2).floor - 1 # 0=half size, 1=full size, 2=full-and-a-half size, 3=double size
|
||||
@language = 0 # Language (see also Settings::LANGUAGES in script PokemonSystem)
|
||||
@runstyle = 0 # Default movement speed (0=walk, 1=run)
|
||||
@bgmvolume = 100 # Volume of background music and ME
|
||||
@sevolume = 100 # Volume of sound effects
|
||||
@textinput = 1 # Text input mode (0=cursor, 1=keyboard)
|
||||
@textspeed = 1 # Text speed (0=slow, 1=normal, 2=fast)
|
||||
@battlescene = 0 # Battle effects (animations) (0=on, 1=off)
|
||||
@battlestyle = 0 # Battle style (0=switch, 1=set)
|
||||
@frame = 0 # Default window frame (see also Settings::MENU_WINDOWSKINS)
|
||||
@textskin = 0 # Speech frame
|
||||
@screensize = (Settings::SCREEN_SCALE * 2).floor - 1 # 0=half size, 1=full size, 2=full-and-a-half size, 3=double size
|
||||
@language = 0 # Language (see also Settings::LANGUAGES in script PokemonSystem)
|
||||
@runstyle = 0 # Default movement speed (0=walk, 1=run)
|
||||
@bgmvolume = 100 # Volume of background music and ME
|
||||
@sevolume = 100 # Volume of sound effects
|
||||
@textinput = 1 # Text input mode (0=cursor, 1=keyboard)
|
||||
end
|
||||
end
|
||||
|
||||
@@ -50,22 +50,22 @@ class EnumOption
|
||||
attr_reader :values
|
||||
attr_reader :name
|
||||
|
||||
def initialize(name,options,getProc,setProc)
|
||||
@name = name
|
||||
@values = options
|
||||
def initialize(name, options, getProc, setProc)
|
||||
@name = name
|
||||
@values = options
|
||||
@getProc = getProc
|
||||
@setProc = setProc
|
||||
end
|
||||
|
||||
def next(current)
|
||||
index = current+1
|
||||
index = @values.length-1 if index>@values.length-1
|
||||
index = current + 1
|
||||
index = @values.length - 1 if index > @values.length - 1
|
||||
return index
|
||||
end
|
||||
|
||||
def prev(current)
|
||||
index = current-1
|
||||
index = 0 if index<0
|
||||
index = current - 1
|
||||
index = 0 if index < 0
|
||||
return index
|
||||
end
|
||||
end
|
||||
@@ -78,22 +78,22 @@ class EnumOption2
|
||||
attr_reader :values
|
||||
attr_reader :name
|
||||
|
||||
def initialize(name,options,getProc,setProc)
|
||||
@name = name
|
||||
@values = options
|
||||
def initialize(name, options, getProc, setProc)
|
||||
@name = name
|
||||
@values = options
|
||||
@getProc = getProc
|
||||
@setProc = setProc
|
||||
end
|
||||
|
||||
def next(current)
|
||||
index = current+1
|
||||
index = @values.length-1 if index>@values.length-1
|
||||
index = current + 1
|
||||
index = @values.length - 1 if index > @values.length - 1
|
||||
return index
|
||||
end
|
||||
|
||||
def prev(current)
|
||||
index = current-1
|
||||
index = 0 if index<0
|
||||
index = current - 1
|
||||
index = 0 if index < 0
|
||||
return index
|
||||
end
|
||||
end
|
||||
@@ -107,26 +107,26 @@ class NumberOption
|
||||
attr_reader :optstart
|
||||
attr_reader :optend
|
||||
|
||||
def initialize(name,optstart,optend,getProc,setProc)
|
||||
@name = name
|
||||
def initialize(name, optstart, optend, getProc, setProc)
|
||||
@name = name
|
||||
@optstart = optstart
|
||||
@optend = optend
|
||||
@getProc = getProc
|
||||
@setProc = setProc
|
||||
@optend = optend
|
||||
@getProc = getProc
|
||||
@setProc = setProc
|
||||
end
|
||||
|
||||
def next(current)
|
||||
index = current+@optstart
|
||||
index = current + @optstart
|
||||
index += 1
|
||||
index = @optstart if index>@optend
|
||||
return index-@optstart
|
||||
index = @optstart if index > @optend
|
||||
return index - @optstart
|
||||
end
|
||||
|
||||
def prev(current)
|
||||
index = current+@optstart
|
||||
index = current + @optstart
|
||||
index -= 1
|
||||
index = @optend if index<@optstart
|
||||
return index-@optstart
|
||||
index = @optend if index < @optstart
|
||||
return index - @optstart
|
||||
end
|
||||
end
|
||||
|
||||
@@ -139,27 +139,27 @@ class SliderOption
|
||||
attr_reader :optstart
|
||||
attr_reader :optend
|
||||
|
||||
def initialize(name,optstart,optend,optinterval,getProc,setProc)
|
||||
@name = name
|
||||
@optstart = optstart
|
||||
@optend = optend
|
||||
def initialize(name, optstart, optend, optinterval, getProc, setProc)
|
||||
@name = name
|
||||
@optstart = optstart
|
||||
@optend = optend
|
||||
@optinterval = optinterval
|
||||
@getProc = getProc
|
||||
@setProc = setProc
|
||||
@getProc = getProc
|
||||
@setProc = setProc
|
||||
end
|
||||
|
||||
def next(current)
|
||||
index = current+@optstart
|
||||
index = current + @optstart
|
||||
index += @optinterval
|
||||
index = @optend if index>@optend
|
||||
return index-@optstart
|
||||
index = @optend if index > @optend
|
||||
return index - @optstart
|
||||
end
|
||||
|
||||
def prev(current)
|
||||
index = current+@optstart
|
||||
index = current + @optstart
|
||||
index -= @optinterval
|
||||
index = @optstart if index<@optstart
|
||||
return index-@optstart
|
||||
index = @optstart if index < @optstart
|
||||
return index - @optstart
|
||||
end
|
||||
end
|
||||
|
||||
@@ -169,92 +169,92 @@ end
|
||||
class Window_PokemonOption < Window_DrawableCommand
|
||||
attr_reader :mustUpdateOptions
|
||||
|
||||
def initialize(options,x,y,width,height)
|
||||
def initialize(options, x, y, width, height)
|
||||
@options = options
|
||||
@nameBaseColor = Color.new(24*8,15*8,0)
|
||||
@nameShadowColor = Color.new(31*8,22*8,10*8)
|
||||
@selBaseColor = Color.new(31*8,6*8,3*8)
|
||||
@selShadowColor = Color.new(31*8,17*8,16*8)
|
||||
@nameBaseColor = Color.new(24 * 8, 15 * 8, 0)
|
||||
@nameShadowColor = Color.new(31 * 8, 22 * 8, 10 * 8)
|
||||
@selBaseColor = Color.new(31 * 8, 6 * 8, 3 * 8)
|
||||
@selShadowColor = Color.new(31 * 8, 17 * 8, 16 * 8)
|
||||
@optvalues = []
|
||||
@mustUpdateOptions = false
|
||||
for i in 0...@options.length
|
||||
@optvalues[i] = 0
|
||||
end
|
||||
super(x,y,width,height)
|
||||
super(x, y, width, height)
|
||||
end
|
||||
|
||||
def [](i)
|
||||
return @optvalues[i]
|
||||
end
|
||||
|
||||
def []=(i,value)
|
||||
def []=(i, value)
|
||||
@optvalues[i] = value
|
||||
refresh
|
||||
end
|
||||
|
||||
def setValueNoRefresh(i,value)
|
||||
def setValueNoRefresh(i, value)
|
||||
@optvalues[i] = value
|
||||
end
|
||||
|
||||
def itemCount
|
||||
return @options.length+1
|
||||
return @options.length + 1
|
||||
end
|
||||
|
||||
def drawItem(index,_count,rect)
|
||||
rect = drawCursor(index,rect)
|
||||
optionname = (index==@options.length) ? _INTL("Cancel") : @options[index].name
|
||||
optionwidth = rect.width*9/20
|
||||
pbDrawShadowText(self.contents,rect.x,rect.y,optionwidth,rect.height,optionname,
|
||||
@nameBaseColor,@nameShadowColor)
|
||||
return if index==@options.length
|
||||
def drawItem(index, _count, rect)
|
||||
rect = drawCursor(index, rect)
|
||||
optionname = (index == @options.length) ? _INTL("Cancel") : @options[index].name
|
||||
optionwidth = rect.width * 9 / 20
|
||||
pbDrawShadowText(self.contents, rect.x, rect.y, optionwidth, rect.height, optionname,
|
||||
@nameBaseColor, @nameShadowColor)
|
||||
return if index == @options.length
|
||||
if @options[index].is_a?(EnumOption)
|
||||
if @options[index].values.length>1
|
||||
if @options[index].values.length > 1
|
||||
totalwidth = 0
|
||||
for value in @options[index].values
|
||||
totalwidth += self.contents.text_size(value).width
|
||||
end
|
||||
spacing = (optionwidth-totalwidth)/(@options[index].values.length-1)
|
||||
spacing = 0 if spacing<0
|
||||
xpos = optionwidth+rect.x
|
||||
spacing = (optionwidth - totalwidth) / (@options[index].values.length - 1)
|
||||
spacing = 0 if spacing < 0
|
||||
xpos = optionwidth + rect.x
|
||||
ivalue = 0
|
||||
for value in @options[index].values
|
||||
pbDrawShadowText(self.contents,xpos,rect.y,optionwidth,rect.height,value,
|
||||
(ivalue==self[index]) ? @selBaseColor : self.baseColor,
|
||||
(ivalue==self[index]) ? @selShadowColor : self.shadowColor
|
||||
pbDrawShadowText(self.contents, xpos, rect.y, optionwidth, rect.height, value,
|
||||
(ivalue == self[index]) ? @selBaseColor : self.baseColor,
|
||||
(ivalue == self[index]) ? @selShadowColor : self.shadowColor
|
||||
)
|
||||
xpos += self.contents.text_size(value).width
|
||||
xpos += spacing
|
||||
ivalue += 1
|
||||
end
|
||||
else
|
||||
pbDrawShadowText(self.contents,rect.x+optionwidth,rect.y,optionwidth,rect.height,
|
||||
optionname,self.baseColor,self.shadowColor)
|
||||
pbDrawShadowText(self.contents, rect.x + optionwidth, rect.y, optionwidth, rect.height,
|
||||
optionname, self.baseColor, self.shadowColor)
|
||||
end
|
||||
elsif @options[index].is_a?(NumberOption)
|
||||
value = _INTL("Type {1}/{2}",@options[index].optstart+self[index],
|
||||
@options[index].optend-@options[index].optstart+1)
|
||||
xpos = optionwidth+rect.x
|
||||
pbDrawShadowText(self.contents,xpos,rect.y,optionwidth,rect.height,value,
|
||||
@selBaseColor,@selShadowColor)
|
||||
value = _INTL("Type {1}/{2}", @options[index].optstart + self[index],
|
||||
@options[index].optend - @options[index].optstart + 1)
|
||||
xpos = optionwidth + rect.x
|
||||
pbDrawShadowText(self.contents, xpos, rect.y, optionwidth, rect.height, value,
|
||||
@selBaseColor, @selShadowColor)
|
||||
elsif @options[index].is_a?(SliderOption)
|
||||
value = sprintf(" %d",@options[index].optend)
|
||||
sliderlength = optionwidth-self.contents.text_size(value).width
|
||||
xpos = optionwidth+rect.x
|
||||
self.contents.fill_rect(xpos,rect.y-2+rect.height/2,
|
||||
optionwidth-self.contents.text_size(value).width,4,self.baseColor)
|
||||
value = sprintf(" %d", @options[index].optend)
|
||||
sliderlength = optionwidth - self.contents.text_size(value).width
|
||||
xpos = optionwidth + rect.x
|
||||
self.contents.fill_rect(xpos, rect.y - 2 + rect.height / 2,
|
||||
optionwidth - self.contents.text_size(value).width, 4, self.baseColor)
|
||||
self.contents.fill_rect(
|
||||
xpos+(sliderlength-8)*(@options[index].optstart+self[index])/@options[index].optend,
|
||||
rect.y-8+rect.height/2,
|
||||
8,16,@selBaseColor)
|
||||
value = sprintf("%d",@options[index].optstart+self[index])
|
||||
xpos += optionwidth-self.contents.text_size(value).width
|
||||
pbDrawShadowText(self.contents,xpos,rect.y,optionwidth,rect.height,value,
|
||||
@selBaseColor,@selShadowColor)
|
||||
xpos + (sliderlength - 8) * (@options[index].optstart + self[index]) / @options[index].optend,
|
||||
rect.y - 8 + rect.height / 2,
|
||||
8, 16, @selBaseColor)
|
||||
value = sprintf("%d", @options[index].optstart + self[index])
|
||||
xpos += optionwidth - self.contents.text_size(value).width
|
||||
pbDrawShadowText(self.contents, xpos, rect.y, optionwidth, rect.height, value,
|
||||
@selBaseColor, @selShadowColor)
|
||||
else
|
||||
value = @options[index].values[self[index]]
|
||||
xpos = optionwidth+rect.x
|
||||
pbDrawShadowText(self.contents,xpos,rect.y,optionwidth,rect.height,value,
|
||||
@selBaseColor,@selShadowColor)
|
||||
xpos = optionwidth + rect.x
|
||||
pbDrawShadowText(self.contents, xpos, rect.y, optionwidth, rect.height, value,
|
||||
@selBaseColor, @selShadowColor)
|
||||
end
|
||||
end
|
||||
|
||||
@@ -262,8 +262,8 @@ class Window_PokemonOption < Window_DrawableCommand
|
||||
oldindex = self.index
|
||||
@mustUpdateOptions = false
|
||||
super
|
||||
dorefresh = (self.index!=oldindex)
|
||||
if self.active && self.index<@options.length
|
||||
dorefresh = (self.index != oldindex)
|
||||
if self.active && self.index < @options.length
|
||||
if Input.repeat?(Input::LEFT)
|
||||
self[self.index] = @options[self.index].prev(self[self.index])
|
||||
dorefresh = true
|
||||
@@ -286,104 +286,125 @@ class PokemonOption_Scene
|
||||
pbUpdateSpriteHash(@sprites)
|
||||
end
|
||||
|
||||
def pbStartScene(inloadscreen=false)
|
||||
def pbStartScene(inloadscreen = false)
|
||||
@sprites = {}
|
||||
@viewport = Viewport.new(0,0,Graphics.width,Graphics.height)
|
||||
@viewport = Viewport.new(0, 0, Graphics.width, Graphics.height)
|
||||
@viewport.z = 99999
|
||||
@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"].text = _INTL("Speech frame {1}.",1+$PokemonSystem.textskin)
|
||||
@sprites["textbox"].text = _INTL("Speech frame {1}.", 1 + $PokemonSystem.textskin)
|
||||
@sprites["textbox"].letterbyletter = false
|
||||
pbSetSystemFont(@sprites["textbox"].contents)
|
||||
# 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
|
||||
# or delete it. The game's options may be placed in any order.
|
||||
@PokemonOptions = [
|
||||
SliderOption.new(_INTL("Music Volume"),0,100,5,
|
||||
proc { $PokemonSystem.bgmvolume },
|
||||
proc { |value|
|
||||
if $PokemonSystem.bgmvolume!=value
|
||||
$PokemonSystem.bgmvolume = value
|
||||
if $game_system.playing_bgm!=nil && !inloadscreen
|
||||
playingBGM = $game_system.getPlayingBGM
|
||||
$game_system.bgm_pause
|
||||
$game_system.bgm_resume(playingBGM)
|
||||
end
|
||||
end
|
||||
}
|
||||
),
|
||||
SliderOption.new(_INTL("SE Volume"),0,100,5,
|
||||
proc { $PokemonSystem.sevolume },
|
||||
proc { |value|
|
||||
if $PokemonSystem.sevolume!=value
|
||||
$PokemonSystem.sevolume = value
|
||||
if $game_system.playing_bgs!=nil
|
||||
$game_system.playing_bgs.volume = value
|
||||
playingBGS = $game_system.getPlayingBGS
|
||||
$game_system.bgs_pause
|
||||
$game_system.bgs_resume(playingBGS)
|
||||
end
|
||||
pbPlayCursorSE
|
||||
end
|
||||
}
|
||||
),
|
||||
EnumOption.new(_INTL("Text Speed"),[_INTL("Normal"),_INTL("Fast"),_INTL("Instant")],
|
||||
proc { $PokemonSystem.textspeed },
|
||||
proc { |value|
|
||||
$PokemonSystem.textspeed = value
|
||||
MessageConfig.pbSetTextSpeed(MessageConfig.pbSettingToTextSpeed(value))
|
||||
}
|
||||
),
|
||||
EnumOption.new(_INTL("Battle Effects"),[_INTL("On"),_INTL("Off")],
|
||||
proc { $PokemonSystem.battlescene },
|
||||
proc { |value| $PokemonSystem.battlescene = value }
|
||||
),
|
||||
EnumOption.new(_INTL("Battle Style"),[_INTL("Switch"),_INTL("Set")],
|
||||
proc { $PokemonSystem.battlestyle },
|
||||
proc { |value| $PokemonSystem.battlestyle = value }
|
||||
),
|
||||
EnumOption.new(_INTL("Default Movement"),[_INTL("Walking"),_INTL("Running")],
|
||||
proc { $PokemonSystem.runstyle },
|
||||
proc { |value| $PokemonSystem.runstyle = value }
|
||||
),
|
||||
NumberOption.new(_INTL("Speech Frame"),1,Settings::SPEECH_WINDOWSKINS.length,
|
||||
proc { $PokemonSystem.textskin },
|
||||
proc { |value|
|
||||
$PokemonSystem.textskin = value
|
||||
MessageConfig.pbSetSpeechFrame("Graphics/Windowskins/" + Settings::SPEECH_WINDOWSKINS[value])
|
||||
}
|
||||
),
|
||||
# NumberOption.new(_INTL("Menu Frame"),1,Settings::MENU_WINDOWSKINS.length,
|
||||
# proc { $PokemonSystem.frame },
|
||||
# proc { |value|
|
||||
# $PokemonSystem.frame = value
|
||||
# MessageConfig.pbSetSystemFrame("Graphics/Windowskins/" + Settings::MENU_WINDOWSKINS[value])
|
||||
# }
|
||||
# ),
|
||||
EnumOption.new(_INTL("Text Entry"),[_INTL("Cursor"),_INTL("Keyboard")],
|
||||
proc { $PokemonSystem.textinput },
|
||||
proc { |value| $PokemonSystem.textinput = value }
|
||||
),
|
||||
EnumOption.new(_INTL("Screen Size"),[_INTL("S"),_INTL("M"),_INTL("L"),_INTL("XL"),_INTL("Full")],
|
||||
proc { [$PokemonSystem.screensize, 4].min },
|
||||
proc { |value|
|
||||
if $PokemonSystem.screensize != value
|
||||
$PokemonSystem.screensize = value
|
||||
pbSetResizeFactor($PokemonSystem.screensize)
|
||||
end
|
||||
}
|
||||
)
|
||||
SliderOption.new(_INTL("Music Volume"), 0, 100, 5,
|
||||
proc { $PokemonSystem.bgmvolume },
|
||||
proc { |value|
|
||||
if $PokemonSystem.bgmvolume != value
|
||||
$PokemonSystem.bgmvolume = value
|
||||
if $game_system.playing_bgm != nil && !inloadscreen
|
||||
playingBGM = $game_system.getPlayingBGM
|
||||
$game_system.bgm_pause
|
||||
$game_system.bgm_resume(playingBGM)
|
||||
end
|
||||
end
|
||||
}
|
||||
),
|
||||
SliderOption.new(_INTL("SE Volume"), 0, 100, 5,
|
||||
proc { $PokemonSystem.sevolume },
|
||||
proc { |value|
|
||||
if $PokemonSystem.sevolume != value
|
||||
$PokemonSystem.sevolume = value
|
||||
if $game_system.playing_bgs != nil
|
||||
$game_system.playing_bgs.volume = value
|
||||
playingBGS = $game_system.getPlayingBGS
|
||||
$game_system.bgs_pause
|
||||
$game_system.bgs_resume(playingBGS)
|
||||
end
|
||||
pbPlayCursorSE
|
||||
end
|
||||
}
|
||||
),
|
||||
EnumOption.new(_INTL("Text Speed"), [_INTL("Normal"), _INTL("Fast"), _INTL("Instant")],
|
||||
proc { $PokemonSystem.textspeed },
|
||||
proc { |value|
|
||||
$PokemonSystem.textspeed = value
|
||||
MessageConfig.pbSetTextSpeed(MessageConfig.pbSettingToTextSpeed(value))
|
||||
}
|
||||
),
|
||||
EnumOption.new(_INTL("Battle Effects"), [_INTL("On"), _INTL("Off")],
|
||||
proc { $PokemonSystem.battlescene },
|
||||
proc { |value| $PokemonSystem.battlescene = value }
|
||||
),
|
||||
EnumOption.new(_INTL("Battle Style"), [_INTL("Switch"), _INTL("Set")],
|
||||
proc { $PokemonSystem.battlestyle },
|
||||
proc { |value| $PokemonSystem.battlestyle = value }
|
||||
),
|
||||
EnumOption.new(_INTL("Default Movement"), [_INTL("Walking"), _INTL("Running")],
|
||||
proc { $PokemonSystem.runstyle },
|
||||
proc { |value| $PokemonSystem.runstyle = value }
|
||||
),
|
||||
NumberOption.new(_INTL("Speech Frame"), 1, Settings::SPEECH_WINDOWSKINS.length,
|
||||
proc { $PokemonSystem.textskin },
|
||||
proc { |value|
|
||||
$PokemonSystem.textskin = value
|
||||
MessageConfig.pbSetSpeechFrame("Graphics/Windowskins/" + Settings::SPEECH_WINDOWSKINS[value])
|
||||
}
|
||||
),
|
||||
# NumberOption.new(_INTL("Menu Frame"),1,Settings::MENU_WINDOWSKINS.length,
|
||||
# proc { $PokemonSystem.frame },
|
||||
# proc { |value|
|
||||
# $PokemonSystem.frame = value
|
||||
# MessageConfig.pbSetSystemFrame("Graphics/Windowskins/" + Settings::MENU_WINDOWSKINS[value])
|
||||
# }
|
||||
# ),
|
||||
EnumOption.new(_INTL("Text Entry"), [_INTL("Cursor"), _INTL("Keyboard")],
|
||||
proc { $PokemonSystem.textinput },
|
||||
proc { |value| $PokemonSystem.textinput = value }
|
||||
),
|
||||
EnumOption.new(_INTL("Screen Size"), [_INTL("S"), _INTL("M"), _INTL("L"), _INTL("XL"), _INTL("Full")],
|
||||
proc { [$PokemonSystem.screensize, 4].min },
|
||||
proc { |value|
|
||||
if $PokemonSystem.screensize != value
|
||||
$PokemonSystem.screensize = value
|
||||
pbSetResizeFactor($PokemonSystem.screensize)
|
||||
end
|
||||
}
|
||||
)
|
||||
]
|
||||
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)
|
||||
@sprites["option"] = Window_PokemonOption.new(@PokemonOptions,0,
|
||||
@sprites["title"].height,Graphics.width,
|
||||
Graphics.height-@sprites["title"].height-@sprites["textbox"].height)
|
||||
@sprites["option"] = Window_PokemonOption.new(@PokemonOptions, 0,
|
||||
@sprites["title"].height, Graphics.width,
|
||||
Graphics.height - @sprites["title"].height - @sprites["textbox"].height)
|
||||
@sprites["option"].viewport = @viewport
|
||||
@sprites["option"].visible = true
|
||||
@sprites["option"].visible = true
|
||||
# Get the values of each option
|
||||
for i in 0...@PokemonOptions.length
|
||||
@sprites["option"].setValueNoRefresh(i,(@PokemonOptions[i].get || 0))
|
||||
@sprites["option"].setValueNoRefresh(i, (@PokemonOptions[i].get || 0))
|
||||
end
|
||||
@sprites["option"].refresh
|
||||
pbDeactivateWindows(@sprites)
|
||||
@@ -395,9 +416,9 @@ class PokemonOption_Scene
|
||||
end
|
||||
|
||||
def pbOptions
|
||||
oldSystemSkin = $PokemonSystem.frame # Menu
|
||||
oldTextSkin = $PokemonSystem.textskin # Speech
|
||||
pbActivateWindow(@sprites,"option") {
|
||||
oldSystemSkin = $PokemonSystem.frame # Menu
|
||||
oldTextSkin = $PokemonSystem.textskin # Speech
|
||||
pbActivateWindow(@sprites, "option") {
|
||||
loop do
|
||||
Graphics.update
|
||||
Input.update
|
||||
@@ -407,12 +428,12 @@ class PokemonOption_Scene
|
||||
for i in 0...@PokemonOptions.length
|
||||
@PokemonOptions[i].set(@sprites["option"][i])
|
||||
end
|
||||
if $PokemonSystem.textskin!=oldTextSkin
|
||||
if $PokemonSystem.textskin != oldTextSkin
|
||||
@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
|
||||
end
|
||||
if $PokemonSystem.frame!=oldSystemSkin
|
||||
if $PokemonSystem.frame != oldSystemSkin
|
||||
@sprites["title"].setSkin(MessageConfig.pbGetSystemFrame())
|
||||
@sprites["option"].setSkin(MessageConfig.pbGetSystemFrame())
|
||||
oldSystemSkin = $PokemonSystem.frame
|
||||
@@ -421,7 +442,7 @@ class PokemonOption_Scene
|
||||
if Input.trigger?(Input::BACK)
|
||||
break
|
||||
elsif Input.trigger?(Input::USE)
|
||||
break if @sprites["option"].index==@PokemonOptions.length
|
||||
break if @sprites["option"].index == @PokemonOptions.length
|
||||
end
|
||||
end
|
||||
}
|
||||
@@ -449,7 +470,7 @@ class PokemonOptionScreen
|
||||
@scene = scene
|
||||
end
|
||||
|
||||
def pbStartScreen(inloadscreen=false)
|
||||
def pbStartScreen(inloadscreen = false)
|
||||
@scene.pbStartScene(inloadscreen)
|
||||
@scene.pbOptions
|
||||
@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,17 +94,21 @@ class BetterRegionMap
|
||||
# end
|
||||
@window["player"] = Sprite.new(@mapoverlayvp)
|
||||
if @show_player
|
||||
player = nil
|
||||
player = GameData::MapMetadata.get($game_map.map_id).town_map_position #pbGetMetadata($game_map.map_id, MetadataMapPosition) if $game_map
|
||||
if player && player[0] == @region
|
||||
$PokemonGlobal.regionMapSel[0] = player[1]
|
||||
$PokemonGlobal.regionMapSel[1] = player[2]
|
||||
gender = $Trainer.gender.to_digits(3)
|
||||
@window["player"].bmp("Graphics/Pictures/mapPlayer#{gender}")
|
||||
@window["player"].x = TileWidth * player[1] + (TileWidth / 2.0)
|
||||
@window["player"].y = TileHeight * player[2] + (TileHeight / 2.0)
|
||||
@window["player"].center_origins
|
||||
if map_metadata
|
||||
player = map_metadata.town_map_position
|
||||
if player && player[0] == @region
|
||||
$PokemonGlobal.regionMapSel[0] = player[1]
|
||||
$PokemonGlobal.regionMapSel[1] = player[2]
|
||||
gender = $Trainer.gender.to_digits(3)
|
||||
@window["player"].bmp("Graphics/Pictures/mapPlayer#{gender}")
|
||||
@window["player"].x = TileWidth * player[1] + (TileWidth / 2.0)
|
||||
@window["player"].y = TileHeight * player[2] + (TileHeight / 2.0)
|
||||
@window["player"].center_origins
|
||||
end
|
||||
else
|
||||
|
||||
end
|
||||
|
||||
end
|
||||
@window["areahighlight"] = BitmapSprite.new(@window["map"].bitmap.width,@window["map"].bitmap.height,@mapoverlayvp)
|
||||
@window["areahighlight"].y = -8
|
||||
|
||||
@@ -165,7 +165,8 @@ end
|
||||
def getHeadID(species, bodyId)
|
||||
head_dexNum = convertSpeciesSymbolToDexNumber(species)
|
||||
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
|
||||
|
||||
def getAllNonLegendaryPokemon()
|
||||
@@ -290,4 +291,14 @@ def pbBitmap(path)
|
||||
bmp = Bitmap.new(1, 1)
|
||||
end
|
||||
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
|
||||
})
|
||||
|
||||
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)
|
||||
newspecies = getEvolvedSpecies(pokemon)
|
||||
return false if newspecies == -1
|
||||
|
||||
@@ -694,7 +694,7 @@ class PokemonFusionScene
|
||||
$Trainer.pokedex.set_owned(newSpecies)
|
||||
Kernel.pbMessageDisplay(@sprites["msgwindow"],
|
||||
_INTL("{1}'s data was added to the Pokédex", newspeciesname))
|
||||
#@scene.pbShowPokedex(@newspecies)
|
||||
@scene.pbShowPokedex(@newspecies)
|
||||
end
|
||||
#first check if hidden ability
|
||||
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.
Reference in New Issue
Block a user