Graphics -
- Orange/brownish cave battleback and bases
- Sprites for player character Alice, an older fisherwoman. Contains trainer sprite, trainer back sprite walk sprite, run sprite, and down-facing fishing sprite.
- Sprites for unnamed Ghost-type Gym Leader. Contains trainer sprite and overworld sprite.
- Sprites for unnamed professor. (Unused) Contains overworld sprite.
- A character sheet with the gems from the default Cave tileset, to make it easier to use in events.
- Item icon for Fission Stone
- Sprites for six Fakemon, fissions of Gyarados, Aegislash, and Parasect. Front and back, shiny and regular. (No icons) Partial overworld sheet for the Parasect fission.
- Fishing license-style trainer card UI and tackle box-style bag UI. This post will be updated with the scripts used with these!
- Splash graphic for "This game should only be downloaded from Relic Castle" (+ a version without the "made for Jam 9" note)
- Load panels for the changed load UI
- Title graphics and game icon in case you wanted to steal the name from us I guess
- The PBS for the Fission forms (will update here with the Fission script and explanation on how to use!)
- The PBS for the PhoenixDex moves used (though, really, you should just check out my PhoenixDex pack)
Chapter/Alt Load UI Script
Just paste in a new script section above Main!
Ruby:
class Player < Trainer
attr_accessor :chapter
attr_accessor :chapter_number
attr_accessor :chapter_name
end
def pbSetChapter(number,name)
$player.chapter_number = number
$player.chapter_name = name
end
class PokemonLoadPanel < Sprite
def refresh
return if @refreshing
return if disposed?
@refreshing = true
if !self.bitmap || self.bitmap.disposed?
self.bitmap = Bitmap.new(@bgbitmap.width, 160)
pbSetSystemFont(self.bitmap)
end
if @refreshBitmap
@refreshBitmap = false
self.bitmap&.clear
if @isContinue
self.bitmap.blt(0, 0, @bgbitmap.bitmap, Rect.new(0, (@selected) ? 160 : 0, @bgbitmap.width, 160))
else
self.bitmap.blt(0, 0, @bgbitmap.bitmap, Rect.new(0, 320 + ((@selected) ? 46 : 0), @bgbitmap.width, 46))
end
textpos = []
if @isContinue
textpos.push([@title, 32, 16, :left, TEXT_COLOR, TEXT_SHADOW_COLOR])
textpos.push([_INTL("Time:"), 32, 182, :left, TEXT_COLOR, TEXT_SHADOW_COLOR])
hour = @totalsec / 60 / 60
min = @totalsec / 60 % 60
if hour > 0
textpos.push([_INTL("{1}h {2}m", hour, min), 206, 182, :right, TEXT_COLOR, TEXT_SHADOW_COLOR])
else
textpos.push([_INTL("{1}m", min), 206, 182, :right, TEXT_COLOR, TEXT_SHADOW_COLOR])
end
if @trainer.male?
textpos.push([@trainer.name, 92, 70, :left, MALE_TEXT_COLOR, MALE_TEXT_SHADOW_COLOR])
elsif @trainer.female?
textpos.push([@trainer.name, 92, 70, :left, FEMALE_TEXT_COLOR, FEMALE_TEXT_SHADOW_COLOR])
else
textpos.push([@trainer.name, 92, 70, :left, TEXT_COLOR, TEXT_SHADOW_COLOR])
end
if @trainer.chapter_number
textpos.push([_INTL("Chapter ") + @trainer.chapter_number + ": " + @trainer.chapter_name, 388, 70, :right, TEXT_COLOR, TEXT_SHADOW_COLOR])
end
mapname = pbGetMapNameFromId(@mapid)
mapname.gsub!(/\\PN/, @trainer.name)
textpos.push([mapname, 386, 16, :right, TEXT_COLOR, TEXT_SHADOW_COLOR])
else
textpos.push([@title, 32, 14, :left, TEXT_COLOR, TEXT_SHADOW_COLOR])
end
pbDrawTextPositions(self.bitmap, textpos)
end
@refreshing = false
end
end
class PokemonLoad_Scene
def pbSetParty(trainer)
return if !trainer || !trainer.party
meta = GameData::PlayerMetadata.get(trainer.character_ID)
if meta
filename = pbGetPlayerCharset(meta.walk_charset, trainer, true)
@sprites["player"] = TrainerWalkingCharSprite.new(filename, @viewport)
if !@sprites["player"].bitmap
raise _INTL("Player character {1}'s walking charset was not found (filename: \"{2}\").", trainer.character_ID, filename)
end
charwidth = @sprites["player"].bitmap.width
charheight = @sprites["player"].bitmap.height
@sprites["player"].x = 112 - (charwidth / 8)
@sprites["player"].y = 112 - (charheight / 8)
@sprites["player"].z = 99999
end
trainer.party.each_with_index do |pkmn, i|
@sprites["party#{i}"] = PokemonIconSprite.new(pkmn, @viewport)
@sprites["party#{i}"].setOffset(PictureOrigin::CENTER)
@sprites["party#{i}"].x = 112 + (60 * i)
@sprites["party#{i}"].y = 162
@sprites["party#{i}"].z = 99999
end
end
end
class PokemonSave_Scene
def pbStartScreen
@viewport = Viewport.new(0, 0, Graphics.width, Graphics.height)
@viewport.z = 99999
@sprites = {}
totalsec = $stats.play_time.to_i
hour = totalsec / 60 / 60
min = totalsec / 60 % 60
mapname = $game_map.name
if $player.male?
text_tag = shadowc3tag(MALE_TEXT_BASE, MALE_TEXT_SHADOW)
elsif $player.female?
text_tag = shadowc3tag(FEMALE_TEXT_BASE, FEMALE_TEXT_SHADOW)
else
text_tag = shadowc3tag(OTHER_TEXT_BASE, OTHER_TEXT_SHADOW)
end
location_tag = shadowc3tag(LOCATION_TEXT_BASE, LOCATION_TEXT_SHADOW)
loctext = location_tag + "<ac>" + mapname + "</ac></c3>"
loctext += _INTL("Player") + "<r>" + text_tag + $player.name + "</c3><br>"
if hour > 0
loctext += _INTL("Time") + "<r>" + text_tag + _INTL("{1}h {2}m", hour, min) + "</c3><br>"
else
loctext += _INTL("Time") + "<r>" + text_tag + _INTL("{1}m", min) + "</c3><br>"
end
if $player.chapter_number
loctext += "<ac> Ch " + $player.chapter_number + ": " + $player.chapter_name + "</ac></c3>"
end
@sprites["locwindow"] = Window_AdvancedTextPokemon.new(loctext)
@sprites["locwindow"].viewport = @viewport
@sprites["locwindow"].x = 0
@sprites["locwindow"].y = 0
@sprites["locwindow"].width = 228 if @sprites["locwindow"].width < 228
@sprites["locwindow"].visible = true
end
end
Then just replace loadpanels.png in Graphics/UI/Load with the file included in this resource pack! This will make the load panel and save prompt look like this!
This is aimed for less traditional fangames - stuff where you're not keeping track of badges, dex count, etc., and just progressing through a story.
Right now, there's only one utility script -
pbSetChapter(number,name)
. Both are strings - for example, in this demo, I used pbSetChapter("1","Sea/Sky")
. Chapter numbers are strings instead of integers so you could set something like "Ch ?", but this means that they can't be easily checked/compared, I might update this with a utility script in the future. (There's also nothing for displaying the chapter change - I just did a black screen + Show Text command - but you may be interested in Somersault's Chapters plugin)Fishing License UI
In UI_TrainerCard, find this line -
Ruby:
@sprites["trainer"] = IconSprite.new(336, 112, @viewport)
Ruby:
@sprites["trainer"] = IconSprite.new(336, 162, @viewport)
Further down, find this section -
Ruby:
def pbDrawTrainerCardFront
overlay = @sprites["overlay"].bitmap
overlay.clear
baseColor = Color.new(72, 72, 72)
shadowColor = Color.new(160, 160, 160)
totalsec = $stats.play_time.to_i
hour = totalsec / 60 / 60
min = totalsec / 60 % 60
time = (hour > 0) ? _INTL("{1}h {2}m", hour, min) : _INTL("{1}m", min)
$PokemonGlobal.startTime = Time.now if !$PokemonGlobal.startTime
starttime = _INTL("{1} {2}, {3}",
pbGetAbbrevMonthName($PokemonGlobal.startTime.mon),
$PokemonGlobal.startTime.day,
$PokemonGlobal.startTime.year)
textPositions = [
[_INTL("Name"), 34, 70, :left, baseColor, shadowColor],
[$player.name, 302, 70, :right, baseColor, shadowColor],
[_INTL("ID No."), 332, 70, :left, baseColor, shadowColor],
[sprintf("%05d", $player.public_ID), 468, 70, :right, baseColor, shadowColor],
[_INTL("Money"), 34, 118, :left, baseColor, shadowColor],
[_INTL("${1}", $player.money.to_s_formatted), 302, 118, :right, baseColor, shadowColor],
[_INTL("Pokédex"), 34, 166, :left, baseColor, shadowColor],
[sprintf("%d/%d", $player.pokedex.owned_count, $player.pokedex.seen_count), 302, 166, :right, baseColor, shadowColor],
[_INTL("Time"), 34, 214, :left, baseColor, shadowColor],
[time, 302, 214, :right, baseColor, shadowColor],
[_INTL("Started"), 34, 262, :left, baseColor, shadowColor],
[starttime, 302, 262, :right, baseColor, shadowColor]
]
pbDrawTextPositions(overlay, textPositions)
x = 72
region = pbGetCurrentRegion(0) # Get the current region
imagePositions = []
8.times do |i|
if $player.badges[i + (region * 8)]
imagePositions.push(["Graphics/UI/Trainer Card/icon_badges", x, 310, i * 32, region * 32, 32, 32])
end
x += 48
end
pbDrawImagePositions(overlay, imagePositions)
end
Ruby:
def pbDrawTrainerCardFront
overlay = @sprites["overlay"].bitmap
overlay.clear
baseColor = Color.new(72, 72, 72)
shadowColor = Color.new(160, 160, 160)
totalsec = $stats.play_time.to_i
hour = totalsec / 60 / 60
min = totalsec / 60 % 60
time = (hour > 0) ? _INTL("{1}h {2}m", hour, min) : _INTL("{1}m", min)
$PokemonGlobal.startTime = Time.now if !$PokemonGlobal.startTime
starttime = _INTL("{1} {2}, 20XX",
pbGetAbbrevMonthName($PokemonGlobal.startTime.mon),
$PokemonGlobal.startTime.day)
textPositions = [
[_INTL("Name"), 46, 168, :left, baseColor, shadowColor],
[$player.name, 286, 168, :right, baseColor, shadowColor],
[_INTL("ID No."), 46, 218, :left, baseColor, shadowColor],
[sprintf("%05d", $player.public_ID), 286, 218, :right, baseColor, shadowColor],
[_INTL("Money"), 46, 268, :left, baseColor, shadowColor],
[_INTL("${1}", $player.money.to_s_formatted), 286, 268, :right, baseColor, shadowColor],
[_INTL("Expires"), 46, 316, :left, baseColor, shadowColor],
[starttime, 286, 316, :right, baseColor, shadowColor]
]
pbDrawTextPositions(overlay, textPositions)
end
And there you have it!
For Gone Fission, I hard-coded the last name as part of the UI by adding it to the trainer name here -
Ruby:
[$player.name + " Mae-Annfield", 286, 168, :right, baseColor, shadowColor],
- Credits
- Unnamed professor, overworld Parasect fission, and cave battleback/bases are by TechSkylander1518. (and the gems and bubbles too, but I don't care if you credit me, you could make those edits easily)
All other assets were created by Cinnature/TheGirlWhoSitsNextToYouInChurch