• Hi, Guest!
    Some images might be missing as we move away from using embedded images, sorry for the mess!
    From now on, you'll be required to use a third party to host images. You can learn how to add images here, and if your thread is missing images you can request them here.
    Do not use Discord to host any images you post, these links expire quickly!
Gone Fission Resource Pack

Gone Fission Resource Pack 2023-08-11


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
PBS -
  • 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
(Note that this does rewrite some methods in the Load and Save UIs, you may need to check for incompatibilities with other plugins)

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!

1692089877326.png
1692090855388.png

(load BG not included, I'll make a separate guide for looping BGs)

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)
and change it to
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
and replace it with
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!
1692063340028.png

Expiration date is based on the start date of the save file.

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],
This way, I could still name the player just "Alice".
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
Author
TechSkylander1518
Downloads
444
Views
1,572
First release
Last update
Rating
0.00 star(s) 0 ratings

More resources from TechSkylander1518

Back
Top