mirror of
https://github.com/infinitefusion/infinitefusion-e18.git
synced 2025-12-09 14:14:59 +00:00
update 6.7
This commit is contained in:
@@ -44,6 +44,8 @@ HAT_SILPHSCOPE = "silphscope"
|
||||
HAT_BRENDAN = "brendanRSE"
|
||||
HAT_MAY = "mayRSE"
|
||||
HAT_ORAN = "orange"
|
||||
HAT_FLOWERS = "grassexpert"
|
||||
HAT_LUCHA = "hawluchamask"
|
||||
|
||||
|
||||
HAT_PARASHROOM = "parashroom"
|
||||
@@ -156,6 +158,7 @@ HAIR_LATIAS="SpecialLatias"
|
||||
HAIR_GARDEVOIR="gardevoir"
|
||||
HAIR_EEVEE="eeveetail"
|
||||
HAIR_LEAFEON="leafeonbob"
|
||||
HAIR_ORICORIO="oricoriopuffs"
|
||||
|
||||
HAIR_BRENDAN = "buzzcut"
|
||||
HAIR_MAY = "may"
|
||||
@@ -85,7 +85,7 @@ class CharacterSelectMenuPresenter
|
||||
update_cursor(@current_index)
|
||||
@name = getDefaultName if @name == ""
|
||||
updateDisplayedName(getOptionIndex(OPTION_NAME))
|
||||
cmd = pbMessage("Is this information correct?", [_INTL("Yes"), _INTL("No")])
|
||||
cmd = pbMessage(_INTL("Is this information correct?"), [_INTL("Yes"), _INTL("No")])
|
||||
if cmd == 0
|
||||
pbSEPlay("GUI naming confirm", 80, 100)
|
||||
#pbMessage("You will be able to customize your appearance further while playing")
|
||||
|
||||
@@ -9,11 +9,19 @@ class PokemonHatPresenter
|
||||
|
||||
@x_pos = pokemon.hat_x ? pokemon.hat_x : 0
|
||||
@y_pos = pokemon.hat_y ? pokemon.hat_y : 0
|
||||
@hat_mirrored_horizontal = pokemon.hat_mirrored_horizontal ? pokemon.hat_mirrored_horizontal : false
|
||||
@hat_mirrored_vertical = pokemon.hat_mirrored_vertical ? pokemon.hat_mirrored_vertical : false
|
||||
@hat_id = pokemon.hat ? pokemon.hat : 1
|
||||
@viewport = nil
|
||||
@previewwindow = nil
|
||||
|
||||
@original_pokemon_bitmap = nil
|
||||
|
||||
@min_x, @max_x = -64, 88
|
||||
@min_y, @max_y = -120, 120 # Safe symmetric range
|
||||
|
||||
@hatBitmapWrapper = AnimatedBitmap.new(@hatFilename, 0) if pbResolveBitmap(@hatFilename)
|
||||
|
||||
end
|
||||
|
||||
def pbStartScreen
|
||||
@@ -31,6 +39,8 @@ class PokemonHatPresenter
|
||||
|
||||
def updatePokemonHatPosition()
|
||||
@pokemon.hat = @hat_id
|
||||
@pokemon.hat_mirrored_horizontal=@hat_mirrored_horizontal
|
||||
@pokemon.hat_mirrored_vertical=@hat_mirrored_vertical
|
||||
@pokemon.hat_x = @x_pos
|
||||
@pokemon.hat_y = @y_pos
|
||||
end
|
||||
@@ -49,6 +59,9 @@ class PokemonHatPresenter
|
||||
Input.update
|
||||
@hat_id = selector.selectNextOutfit(@hat_id, 1, selector.hats_list, [], false, "hat",$Trainer.unlocked_hats,false) if Input.trigger?(Input::RIGHT)
|
||||
@hat_id = selector.selectNextOutfit(@hat_id, -1, selector.hats_list, [], false, "hat",$Trainer.unlocked_hats,false) if Input.trigger?(Input::LEFT)
|
||||
flipHatVertically if Input.trigger?(Input::JUMPUP)
|
||||
flipHatHorizontally if Input.trigger?(Input::JUMPDOWN)
|
||||
resetHatPosition if Input.trigger?(Input::SPECIAL)
|
||||
break if Input.trigger?(Input::USE)
|
||||
return false if Input.trigger?(Input::BACK)
|
||||
@view.update()
|
||||
@@ -60,15 +73,18 @@ class PokemonHatPresenter
|
||||
|
||||
def position_hat
|
||||
@view.display_move_arrows
|
||||
min_x, max_x = -64, 88
|
||||
min_y, max_y = -20, 140
|
||||
|
||||
loop do
|
||||
Graphics.update
|
||||
Input.update
|
||||
@x_pos += PIXELS_PER_MOVEMENT if Input.repeat?(Input::RIGHT) && @x_pos < max_x
|
||||
@x_pos -= PIXELS_PER_MOVEMENT if Input.repeat?(Input::LEFT) && @x_pos > min_x
|
||||
@y_pos += PIXELS_PER_MOVEMENT if Input.repeat?(Input::DOWN) && @y_pos < max_y
|
||||
@y_pos -= PIXELS_PER_MOVEMENT if Input.repeat?(Input::UP) && @y_pos > min_y
|
||||
@x_pos += PIXELS_PER_MOVEMENT if Input.repeat?(Input::RIGHT) && @x_pos < @max_x
|
||||
@x_pos -= PIXELS_PER_MOVEMENT if Input.repeat?(Input::LEFT) && @x_pos > @min_x
|
||||
@y_pos += PIXELS_PER_MOVEMENT if Input.repeat?(Input::DOWN) && @y_pos < @max_y
|
||||
@y_pos -= PIXELS_PER_MOVEMENT if Input.repeat?(Input::UP) && @y_pos > @min_y
|
||||
flipHatHorizontally if Input.trigger?(Input::JUMPDOWN)
|
||||
flipHatVertically if Input.trigger?(Input::JUMPUP)
|
||||
resetHatPosition if Input.trigger?(Input::SPECIAL)
|
||||
|
||||
break if Input.trigger?(Input::USE)
|
||||
return false if Input.trigger?(Input::BACK)
|
||||
@view.update()
|
||||
@@ -77,6 +93,46 @@ class PokemonHatPresenter
|
||||
return true
|
||||
end
|
||||
|
||||
|
||||
|
||||
def flipHatHorizontally()
|
||||
@hat_mirrored_horizontal = !@hat_mirrored_horizontal
|
||||
pbSEPlay("GUI storage pick up")
|
||||
@hatBitmapWrapper.mirror_horizontally
|
||||
pbWait(8)
|
||||
end
|
||||
|
||||
|
||||
def flipHatVertically()
|
||||
pbSEPlay("GUI storage pick up")
|
||||
@hat_mirrored_vertical = !@hat_mirrored_vertical
|
||||
@hatBitmapWrapper.mirror_vertically
|
||||
|
||||
# Compensate for visual shift after vertical flip
|
||||
hat_height = @hatBitmapWrapper.bitmap.height
|
||||
offset = hat_height - 40
|
||||
|
||||
if @hat_mirrored_vertical
|
||||
@y_pos -= offset
|
||||
else
|
||||
@y_pos += offset
|
||||
end
|
||||
@y_pos = [[@y_pos, @min_y].max, @max_y].min
|
||||
pbWait(8)
|
||||
end
|
||||
|
||||
def resetHatPosition
|
||||
if pbConfirmMessage(_INTL("Reset hat position?"))
|
||||
pbSEPlay("GUI naming tab swap end")
|
||||
@x_pos=0
|
||||
@y_pos=0
|
||||
@hatBitmapWrapper.mirror_horizontally if @hat_mirrored_horizontal
|
||||
@hatBitmapWrapper.mirror_vertically if @hat_mirrored_vertical
|
||||
@hat_mirrored_horizontal = false
|
||||
@hat_mirrored_vertical = false
|
||||
end
|
||||
end
|
||||
|
||||
def initialize_bitmap()
|
||||
spriteLoader = BattleSpriteLoader.new
|
||||
|
||||
@@ -94,9 +150,9 @@ class PokemonHatPresenter
|
||||
|
||||
def getPokemonHatBitmap()
|
||||
@hatFilename = getTrainerSpriteHatFilename(@hat_id)
|
||||
hatBitmapWrapper = AnimatedBitmap.new(@hatFilename, 0) if pbResolveBitmap(@hatFilename)
|
||||
@hatBitmapWrapper = AnimatedBitmap.new(@hatFilename, 0) if pbResolveBitmap(@hatFilename)
|
||||
pokemon_bitmap = @original_pokemon_bitmap.bitmap.clone
|
||||
pokemon_bitmap.blt(@x_pos, @y_pos, hatBitmapWrapper.bitmap, hatBitmapWrapper.bitmap.rect) if hatBitmapWrapper
|
||||
pokemon_bitmap.blt(@x_pos, @y_pos, @hatBitmapWrapper.bitmap, @hatBitmapWrapper.bitmap.rect) if @hatBitmapWrapper
|
||||
return pokemon_bitmap
|
||||
end
|
||||
|
||||
|
||||
@@ -16,7 +16,7 @@ class ClothesShopPresenter < PokemonMartScreen
|
||||
|
||||
def dyeClothes()
|
||||
original_color = $Trainer.clothes_color
|
||||
options = ["Shift up", "Shift down", "Reset", "Confirm", "Never Mind"]
|
||||
options = [_INTL("Shift up"), _INTL("Shift down"), _INTL("Reset"), _INTL("Confirm"), _INTL("Never Mind")]
|
||||
previous_input = 0
|
||||
ret = false
|
||||
while (true)
|
||||
@@ -50,13 +50,13 @@ class ClothesShopPresenter < PokemonMartScreen
|
||||
|
||||
# returns true if should stay in the menu
|
||||
def playerClothesActionsMenu(item)
|
||||
cmd_wear = "Wear"
|
||||
cmd_dye = "Dye Kit"
|
||||
cmd_wear = _INTL("Wear")
|
||||
cmd_dye = _INTL("Dye Kit")
|
||||
options = []
|
||||
options << cmd_wear
|
||||
options << cmd_dye if $PokemonBag.pbHasItem?(:CLOTHESDYEKIT)
|
||||
options << "Cancel"
|
||||
choice = pbMessage("What would you like to do?", options, -1)
|
||||
options << _INTL("Cancel")
|
||||
choice = pbMessage(_INTL("What would you like to do?"), options, -1)
|
||||
|
||||
if options[choice] == cmd_wear
|
||||
putOnClothes(item,false)
|
||||
@@ -77,11 +77,11 @@ class ClothesShopPresenter < PokemonMartScreen
|
||||
boolean_changes_detected = @adapter.player_changed_clothes?
|
||||
return true if !boolean_changes_detected
|
||||
pbPlayCancelSE
|
||||
cmd_confirm = "Set outfit"
|
||||
cmd_discard = "Discard changes"
|
||||
cmd_cancel = "Cancel"
|
||||
cmd_confirm = _INTL("Set outfit")
|
||||
cmd_discard = _INTL("Discard changes")
|
||||
cmd_cancel = _INTL("Cancel")
|
||||
options = [cmd_discard,cmd_confirm,cmd_cancel]
|
||||
choice = pbMessage("You have unsaved changes!",options,3)
|
||||
choice = pbMessage(_INTL("You have unsaved changes!"),options,3)
|
||||
case options[choice]
|
||||
when cmd_confirm
|
||||
@adapter.putOnSelectedOutfit
|
||||
|
||||
@@ -81,7 +81,7 @@ class ClothesShopPresenter < PokemonMartScreen
|
||||
|
||||
def dyeOptions(secondary_hat=false,item)
|
||||
original_color = secondary_hat ? $Trainer.hat2_color : $Trainer.hat_color
|
||||
options = ["Shift up", "Shift down", "Reset", "Confirm", "Never Mind"]
|
||||
options = [_INTL("Shift up"), _INTL("Shift down"), _INTL("Reset"), _INTL("Confirm"), _INTL("Never Mind")]
|
||||
previous_input = 0
|
||||
while (true)
|
||||
choice = pbShowCommands(nil, options, options.length, previous_input,200)
|
||||
@@ -125,14 +125,14 @@ class ClothesShopPresenter < PokemonMartScreen
|
||||
end
|
||||
|
||||
def playerHatActionsMenu(item)
|
||||
cmd_confirm = "Confirm"
|
||||
cmd_remove = "Remove hat"
|
||||
cmd_cancel = "Cancel"
|
||||
cmd_dye = "Dye Kit"
|
||||
cmd_swap = "Swap hat positions"
|
||||
cmd_confirm = _INTL("Confirm")
|
||||
cmd_remove = _INTL("Remove hat")
|
||||
cmd_cancel = _INTL("Cancel")
|
||||
cmd_dye = _INTL("Dye Kit")
|
||||
cmd_swap = _INTL("Swap hat positions")
|
||||
|
||||
options = build_options_menu(item,cmd_confirm,cmd_remove,cmd_dye,cmd_swap,cmd_cancel)
|
||||
choice = pbMessage("What would you like to do?", options, -1,nil,0)
|
||||
choice = pbMessage(_INTL("What would you like to do?"), options, -1,nil,0)
|
||||
if options[choice] == cmd_remove
|
||||
removeHat(item)
|
||||
return true
|
||||
|
||||
@@ -5,7 +5,7 @@ BASE_TRAINER_FOLDER = "trainer"
|
||||
|
||||
def getBaseOverworldSpriteFilename(action = "walk", skinTone = "default")
|
||||
base_path = Settings::PLAYER_GRAPHICS_FOLDER + BASE_FOLDER + "/" + BASE_OVERWORLD_FOLDER
|
||||
dynamic_path = _INTL("/{1}/{2}_{1}", skinTone, action)
|
||||
dynamic_path = "/#{skinTone}/#{action}_#{skinTone}"
|
||||
full_path = base_path + dynamic_path
|
||||
return full_path if pbResolveBitmap(full_path)
|
||||
return getBaseOverworldSpriteFilename(action) if skinTone != "default" #try again with default skintone
|
||||
@@ -14,7 +14,7 @@ end
|
||||
|
||||
def getBaseTrainerSpriteFilename(skinTone = "default")
|
||||
base_path = Settings::PLAYER_GRAPHICS_FOLDER + BASE_FOLDER + "/" + BASE_TRAINER_FOLDER
|
||||
dynamic_path = _INTL("/{1}_{2}", BASE_TRAINER_FOLDER, skinTone)
|
||||
dynamic_path = "/#{BASE_TRAINER_FOLDER}_#{skinTone}"
|
||||
full_path = base_path + dynamic_path
|
||||
return full_path if pbResolveBitmap(full_path)
|
||||
return getBaseTrainerSpriteFilename() #default skintone
|
||||
@@ -28,8 +28,8 @@ end
|
||||
|
||||
def getOverworldOutfitFilename(outfit_id, action="walk")
|
||||
base_path = Settings::PLAYER_GRAPHICS_FOLDER + Settings::PLAYER_CLOTHES_FOLDER
|
||||
dynamic_path = _INTL("/{1}/", outfit_id)
|
||||
filename = _INTL(Settings::PLAYER_CLOTHES_FOLDER + "_{1}_{2}", action, outfit_id)
|
||||
dynamic_path = "/#{outfit_id}/"
|
||||
filename = Settings::PLAYER_CLOTHES_FOLDER + "_#{action}_#{outfit_id}"
|
||||
full_path = base_path + dynamic_path + filename
|
||||
#echoln full_path
|
||||
return full_path
|
||||
@@ -66,7 +66,7 @@ def getSplitHairFilenameAndVersionFromID(hairstyle_id)
|
||||
end
|
||||
|
||||
def getFullHairId(hairstyle,version)
|
||||
return _INTL("{1}_{2}",version,hairstyle)
|
||||
return "#{version}_#{hairstyle}"
|
||||
|
||||
end
|
||||
|
||||
@@ -76,8 +76,8 @@ def getOverworldHairFilename(hairstyle_id)
|
||||
version= hairstyle_split[-2]
|
||||
|
||||
base_path = Settings::PLAYER_GRAPHICS_FOLDER + Settings::PLAYER_HAIR_FOLDER
|
||||
dynamic_path = _INTL("/{1}/", name)
|
||||
filename = _INTL(Settings::PLAYER_HAIR_FOLDER + "_{1}_{2}",version, name)
|
||||
dynamic_path = "/#{name}/"
|
||||
filename = Settings::PLAYER_HAIR_FOLDER + "_#{version}_#{name}"
|
||||
full_path = base_path + dynamic_path + filename
|
||||
return full_path
|
||||
end
|
||||
@@ -91,8 +91,8 @@ def getTrainerSpriteHairFilename(hairstyle_id)
|
||||
|
||||
|
||||
base_path = Settings::PLAYER_GRAPHICS_FOLDER + Settings::PLAYER_HAIR_FOLDER
|
||||
dynamic_path = _INTL("/{1}/", name)
|
||||
filename = _INTL(Settings::PLAYER_HAIR_FOLDER + "_trainer_{1}_{2}",version, name)
|
||||
dynamic_path = "/#{name}/"
|
||||
filename = Settings::PLAYER_HAIR_FOLDER + "_trainer_#{version}_#{name}"
|
||||
full_path = base_path + dynamic_path + filename
|
||||
return full_path
|
||||
end
|
||||
@@ -105,16 +105,16 @@ end
|
||||
|
||||
def getOverworldHatFilename(hat_id)
|
||||
base_path = Settings::PLAYER_GRAPHICS_FOLDER + Settings::PLAYER_HAT_FOLDER
|
||||
dynamic_path = _INTL("/{1}/", hat_id)
|
||||
filename = _INTL(Settings::PLAYER_HAT_FOLDER + "_{1}", hat_id)
|
||||
dynamic_path = "/#{hat_id}/"
|
||||
filename = Settings::PLAYER_HAT_FOLDER + "_#{hat_id}"
|
||||
full_path = base_path + dynamic_path + filename
|
||||
return full_path
|
||||
end
|
||||
|
||||
def getTrainerSpriteHatFilename(hat_id)
|
||||
base_path = Settings::PLAYER_GRAPHICS_FOLDER + Settings::PLAYER_HAT_FOLDER
|
||||
dynamic_path = _INTL("/{1}/", hat_id)
|
||||
filename = _INTL(Settings::PLAYER_HAT_FOLDER + "_trainer_{1}", hat_id)
|
||||
dynamic_path = "/#{hat_id}/"
|
||||
filename = Settings::PLAYER_HAT_FOLDER + "_trainer_#{hat_id}"
|
||||
full_path = base_path + dynamic_path + filename
|
||||
return full_path
|
||||
end
|
||||
|
||||
@@ -10,12 +10,12 @@ def obtainHat(outfit_id,secondary=false)
|
||||
echoln "obtained new hat: " + outfit_id
|
||||
outfit = get_hat_by_id(outfit_id)
|
||||
if !outfit
|
||||
pbMessage(_INTL("The hat #{outfit_id} is invalid."))
|
||||
pbMessage(_INTL("The hat {1} is invalid.", outfit_id))
|
||||
return
|
||||
end
|
||||
$Trainer.unlocked_hats << outfit_id if !$Trainer.unlocked_hats.include?(outfit_id)
|
||||
obtainOutfitMessage(outfit)
|
||||
if pbConfirmMessage("Would you like to put it on right now?")
|
||||
if pbConfirmMessage(_INTL("Would you like to put it on right now?"))
|
||||
putOnHat(outfit_id, false, false) if !secondary
|
||||
putOnHat(outfit_id, false, true) if secondary
|
||||
return true
|
||||
@@ -28,7 +28,7 @@ def unlockHat(outfit_id)
|
||||
echoln "obtained new hat: " + outfit_id
|
||||
outfit = get_hat_by_id(outfit_id)
|
||||
if !outfit
|
||||
pbMessage(_INTL("The hat #{outfit_id} is invalid."))
|
||||
pbMessage(_INTL("The hat {1} is invalid.", outfit_id))
|
||||
return
|
||||
end
|
||||
$Trainer.unlocked_hats << outfit_id if !$Trainer.unlocked_hats.include?(outfit_id)
|
||||
@@ -39,13 +39,13 @@ def obtainClothes(outfit_id)
|
||||
echoln "obtained new clothes: " + outfit_id
|
||||
outfit = get_clothes_by_id(outfit_id)
|
||||
if !outfit
|
||||
pbMessage(_INTL("The clothes #{outfit_id} are invalid."))
|
||||
pbMessage(_INTL("The clothes {1} are invalid.", outfit_id))
|
||||
return
|
||||
end
|
||||
return if !outfit
|
||||
$Trainer.unlocked_clothes << outfit_id if !$Trainer.unlocked_clothes.include?(outfit_id)
|
||||
obtainOutfitMessage(outfit)
|
||||
if pbConfirmMessage("Would you like to put it on right now?")
|
||||
if pbConfirmMessage(_INTL("Would you like to put it on right now?"))
|
||||
putOnClothes(outfit_id)
|
||||
return true
|
||||
end
|
||||
@@ -56,7 +56,7 @@ def obtainNewHairstyle(full_outfit_id)
|
||||
split_outfit_id = getSplitHairFilenameAndVersionFromID(full_outfit_id)
|
||||
hairstyle_id = split_outfit_id[1]
|
||||
hairstyle = get_hair_by_id(hairstyle_id)
|
||||
musical_effect = "Key item get"
|
||||
musical_effect = _INTL("Key item get")
|
||||
pbMessage(_INTL("\\me[{1}]Your hairstyle was changed to \\c[1]{2}\\c[0] hairstyle!\\wtnp[30]", musical_effect, hairstyle.name))
|
||||
return true
|
||||
end
|
||||
@@ -152,7 +152,7 @@ end
|
||||
|
||||
def obtainOutfitMessage(outfit)
|
||||
pictureViewport = showOutfitPicture(outfit)
|
||||
musical_effect = "Key item get"
|
||||
musical_effect = _INTL("Key item get")
|
||||
pbMessage(_INTL("\\me[{1}]You obtained a \\c[1]{2}\\c[0]!\\wtnp[30]", musical_effect, outfit.name))
|
||||
pictureViewport.dispose if pictureViewport
|
||||
end
|
||||
@@ -274,6 +274,22 @@ def export_current_outfit()
|
||||
Input.clipboard = exportedString
|
||||
end
|
||||
|
||||
def export_current_outfit_to_json
|
||||
appearance = {
|
||||
skin_color: $Trainer.skin_tone || 0,
|
||||
hat: $Trainer.hat || nil,
|
||||
hat2: $Trainer.hat2 || nil,
|
||||
clothes: $Trainer.clothes,
|
||||
hair: $Trainer.hair,
|
||||
hair_color: $Trainer.hair_color || 0,
|
||||
clothes_color: $Trainer.clothes_color || 0,
|
||||
hat_color: $Trainer.hat_color || 0,
|
||||
hat2_color: $Trainer.hat2_color || 0
|
||||
}
|
||||
return appearance
|
||||
end
|
||||
|
||||
|
||||
def clearEventCustomAppearance(event_id)
|
||||
return if !$scene.is_a?(Scene_Map)
|
||||
event_sprite = $scene.spriteset.character_sprites[@event_id]
|
||||
@@ -288,7 +304,7 @@ end
|
||||
|
||||
def setEventAppearance(event_id, trainerAppearance)
|
||||
return if !$scene.is_a?(Scene_Map)
|
||||
event_sprite = $scene.spriteset.character_sprites[@event_id]
|
||||
event_sprite = $scene.spriteset.character_sprites[event_id]
|
||||
for sprite in $scene.spriteset.character_sprites
|
||||
if sprite.character.id == event_id
|
||||
event_sprite = sprite
|
||||
|
||||
Reference in New Issue
Block a user