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:
@@ -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]
|
||||
|
||||
Reference in New Issue
Block a user