Envision, Create, Share

Welcome to HBGames, a leading amateur game development forum and Discord server. All are welcome, and amongst our ranks you will find experts in their field from all aspects of video game design and development.

The Conversion Station (XP <-> VX / SDK)

The Conversion Station


Information
Much like The Lost Scripts, this topic is for cutting down on "Can you convert script X to work with RMVX?" This topic is for converting XP scripts to VX, VX scripts to XP, non-SDK scripts to SDK and SDK to non-SDK.

Adding a request for conversion
Post in this thread using the template from below. I will be merging your post into the main thread to keep this thread as organized as possible.

Template when requesting a conversion
[rgss]Script: <Name> <Post either a topic link, demo url or script>
Conversion: <XP/VX/SDK/Non-SDK> to <XP/VX/SDK/Non-SDK>
[/rgss]

Taking a request
If you decide you would like a request, please post in this thread. Once a completed request is posted, I will upload the script/demo (to ensure they aren't lost) and add them to the main post.

All post will remain in this thread for seven days. On the seventh day, post will be removed/merged into the main post.

Current Request
Script: SephirothSpawn's Encounter Control
Conversion: XP to VX
Taken by: None

Completed Request
Script: Name
Conversion: <> to <>
Completed by: NA
 
As a First Requester, this I mean, is quite Simple :)

1. Script: SelfVariables by DrakoShade Link

2. Conversion: <Non-SDK> to <SDK 2.4>

That, And thanks..

Code:
for i in 1...10000000

  p 'thanks again'

end
 
Script: VX picture gallery by Dargor http://www.rmxp.org/forums/viewtopic.php?f=12&t=53704
Conversion: VX to XP
Code:
#==============================================================================

# ** Picture Gallery

#------------------------------------------------------------------------------

#  © Dargor, 2008

#  16/10/08

#  Version 1.0

#  Requested by iceblue

#------------------------------------------------------------------------------

#  VERSION HISTORY:

#   - 1.0 (16/10/08), Initial release

#------------------------------------------------------------------------------

#  INSTRUCTIONS:

#   - Paste this above main

#   - Edit the constants in the Picture Gallery module

#   - To lock/unlock a picture, use the following lines of code:

#         $game_system.lock_picture(picture_id)

#         $game_system.unlock_picture(picture_id)

#==============================================================================

 

# Vocabulary

Vocab::CommandPictureGallery = 'Gallery'

 

#==============================================================================

# ** Picture Gallery Configuration Module

#==============================================================================

 

module Picture_Gallery

  # Galleries

  # SYNTAX: {'Gallery Name' => [picture_id, picture_id]}

  Galleries = {'Name 1' => [1,2], 'Name 2' => [3,4]}

  # Picture Names

  # SYNTAX: {picture_id => 'name'}

  Pictures = {1 => 'Cave', 2 => 'Mountain', 3 => 'Sky', 4 => 'Ocean'}

  # Name of locked pictures

  Pictures.default = '- Empty -'

  # Files

  # SYNTAX: {picture_id => 'filename'}

  Files = {1 =>'Cave', 2 =>'Mountain', 3 =>'Sea of clouds', 4 =>'Ocean'}

  # Filename of locked pictures

  Files.default = 'Empty'

  # Window XY cpprdinates

  Window_X = 16

  Window_Y = 16

  # Add Picture Gallery to the main menu? (Requires the Custom Commands script)

  Main_Menu = false

end

 

#==============================================================================

# ** Game_System

#------------------------------------------------------------------------------

#  This class handles system-related data. Also manages vehicles and BGM, etc.

# The instance of this class is referenced by $game_system.

#==============================================================================

 

class Game_System

  #--------------------------------------------------------------------------

  # * Public Instance Variables

  #--------------------------------------------------------------------------

  attr_accessor :unlocked_pictures

  #--------------------------------------------------------------------------

  # * Alias Listing

  #--------------------------------------------------------------------------

  alias game_system_picture_gallery_system_initialize initialize

  #--------------------------------------------------------------------------

  # * Object Initialization

  #--------------------------------------------------------------------------

  def initialize

    game_system_picture_gallery_system_initialize

    @unlocked_pictures = []

  end

  #--------------------------------------------------------------------------

  # * Unlock Picture

  #--------------------------------------------------------------------------

  def unlock_picture(id)

    @unlocked_pictures << id

  end

  #--------------------------------------------------------------------------

  # * Lock Picture

  #--------------------------------------------------------------------------

  def lock_picture(id)

    @unlocked_pictures.delete!(id)

  end

end

 

#==============================================================================

# ** Window_Command

#------------------------------------------------------------------------------

#  This window deals with general command choices.

#==============================================================================

 

class Window_Command < Window_Selectable

  #--------------------------------------------------------------------------

  # * Set Commands

  #--------------------------------------------------------------------------

  def commands=(commands)

    row_max = (commands.size + column_max - 1) / column_max

    remake_contents(width, row_max * WLH + 32)

    @commands = commands

    @item_max = commands.size

    refresh

  end

end

 

#==============================================================================

# ** Scene_PictureGallery

#------------------------------------------------------------------------------

#  This class performs the picture gallery screen processing.

#==============================================================================

 

class Scene_PictureGallery < Scene_Base

  #--------------------------------------------------------------------------

  # * Object Initialization

  #--------------------------------------------------------------------------

  def initialize(from_menu = false)

    @from_menu = from_menu

  end

  #--------------------------------------------------------------------------

  # * Start Processing

  #--------------------------------------------------------------------------

  def start

    @picture_sprite = Sprite.new

    @gallery_window = Window_Command.new(160,Picture_Gallery::Galleries.keys)

    @gallery_window.x = Picture_Gallery::Window_X

    @gallery_window.y = Picture_Gallery::Window_Y

    @gallery_window.height = 56

    @gallery_window.active = false

    @picture_window = Window_Command.new(160, ['','','',''])

    @picture_window.x = Picture_Gallery::Window_X

    @picture_window.y = Picture_Gallery::Window_Y + 56

    @picture_window.height = (4 * 24) + 32

    update_picture_window_contents

    update_picture_window

  end

  #--------------------------------------------------------------------------

  # * Terminate Processing

  #--------------------------------------------------------------------------

  def terminate

    @picture_sprite.dispose

    @gallery_window.dispose

    @picture_window.dispose

  end

  #--------------------------------------------------------------------------

  # * Frame Update

  #--------------------------------------------------------------------------

  def update

    @gallery_window.update

    @picture_window.update

    if @gallery_window.active

      update_gallery_window

      return

    end

    if @picture_window.active

      update_picture_window

      return

    end

  end

  #--------------------------------------------------------------------------

  # * Update Gallery Window

  #--------------------------------------------------------------------------

  def update_gallery_window

    if Input.trigger?(Input::B)

      Sound.play_cancel

      if @from_menu

        index = $game_system.menu_commands.index(Vocab::CommandPictureGallery)

        $scene = Scene_Menu.new(index)

      else

        $scene = Scene_Map.new

      end

      return

      return

    end

    update_picture_window_contents

    if Input.trigger?(Input::C)

      @gallery_window.active = false

      @picture_window.active = true

    end

  end

  #--------------------------------------------------------------------------

  # * Update Picture Window

  #--------------------------------------------------------------------------

  def update_picture_window

    if Input.trigger?(Input::B)

      @gallery_window.active = true

      @picture_window.active = false

      return

    end

    gallery = Picture_Gallery::Galleries[@gallery_window.selection]

    picture_id = gallery[@picture_window.index]

    if $game_system.unlocked_pictures.include?(picture_id)

      file = Picture_Gallery::Files[picture_id]

    else

      file = Picture_Gallery::Files.default

    end

    @picture_sprite.bitmap = Cache.picture(file)

  end

  #--------------------------------------------------------------------------

  # * Update Picture Window Contents

  #--------------------------------------------------------------------------

  def update_picture_window_contents

    pictures = []

    picture_ids = []

    for picture_id in Picture_Gallery::Galleries[@gallery_window.selection]

      picture_ids << picture_id

      if $game_system.unlocked_pictures.include?(picture_id)

        pictures << Picture_Gallery::Pictures[picture_id]

      else

        pictures << Picture_Gallery::Pictures.default

      end

    end

    return if @picture_window.commands == pictures

    @picture_window.commands = pictures

    @picture_window.height = (4 * 24) + 32

    for i in 0...picture_ids.size

      unless $game_system.unlocked_pictures.include?(picture_ids[i])

        @picture_window.draw_item(i, false)

      end

    end

  end

end

 

#==============================================================================

# ** Scene_Menu

#------------------------------------------------------------------------------

#  This class performs the menu screen processing.

#==============================================================================

 

class Scene_Menu < Scene_Base

  #--------------------------------------------------------------------------

  # * Alias Listing

  #--------------------------------------------------------------------------

  alias dargor_vx_cmcpicgal_menu_create_command_window create_command_window

  alias dargor_vx_cmcpicgal_menu_update_command_selection update_command_selection

  #--------------------------------------------------------------------------

  # * Create Command Window

  #--------------------------------------------------------------------------

  def create_command_window

    if Picture_Gallery::Main_Menu

      commands = $game_system.menu_commands

      index = commands.index(Vocab::save)

      $game_system.add_menu_command(index, Vocab::CommandPictureGallery)

    end

    dargor_vx_cmcpicgal_menu_create_command_window

  end

  #--------------------------------------------------------------------------

  # * Update Command Selection

  #--------------------------------------------------------------------------

  def update_command_selection

    dargor_vx_cmcpicgal_menu_update_command_selection

    if Picture_Gallery::Main_Menu

      command = @command_window.selection

      if Input.trigger?(Input::C)

        case @command_window.selection

        when Vocab::CommandPictureGallery

          $scene = Scene_PictureGallery.new(true)

        end

      end

    end

  end

end

 

thanks b4
 
Script: RPG Advocate's Debugger
Conversion: XP to VX
Code:
 

# Custom Debugger 

# by RPG Advocate

 

 

#==============================================================================

# ** Game_Temp

#------------------------------------------------------------------------------

#  This class handles temporary data that is not included with save data.

#  Refer to "$game_temp" for the instance of this class.

#==============================================================================

 

class Game_Temp

  #--------------------------------------------------------------------------

  # * Public Instance Variables

  #--------------------------------------------------------------------------

  attr_accessor :god_mode                 # god mode

  #--------------------------------------------------------------------------

  # * Object Initialization

  #--------------------------------------------------------------------------

  alias cdebug_init initialize

  def initialize

    cdebug_init

    @god_mode = false

  end

end

 

 

 

#==============================================================================

# ** Game_Actor

#------------------------------------------------------------------------------

#  This class handles the actor. It's used within the Game_Actors class

#  ($game_actors) and refers to the Game_Party class ($game_party).

#==============================================================================

 

class Game_Actor < Game_Battler

  alias cdebug_base_maxhp base_maxhp

  alias cdebug_base_maxsp base_maxsp

  alias cdebug_base_str base_str

  alias cdebug_base_dex base_dex

  alias cdebug_base_agi base_agi

  alias cdebug_base_int base_int

  alias cdebug_base_atk base_atk

  alias cdebug_base_pdef base_pdef

  alias cdebug_base_mdef base_mdef

  #--------------------------------------------------------------------------

  # * Get Basic Maximum HP

  #--------------------------------------------------------------------------  

  def base_maxhp

    if $game_temp.god_mode

      return 9999

    end

    cdebug_base_maxhp

  end

  #--------------------------------------------------------------------------

  # * Get Basic Maximum SP

  #--------------------------------------------------------------------------

  def base_maxsp

    if $game_temp.god_mode

      return 9999

    end

    cdebug_base_maxsp

  end

  #--------------------------------------------------------------------------

  # * Get Basic Strength

  #--------------------------------------------------------------------------

  def base_str

    if $game_temp.god_mode

      return 999

    end

    cdebug_base_str

  end

  #--------------------------------------------------------------------------

  # * Get Basic Dexterity

  #--------------------------------------------------------------------------

  def base_dex

    if $game_temp.god_mode

      return 999

    end

    cdebug_base_dex

  end

  #--------------------------------------------------------------------------

  # * Get Basic Agility

  #--------------------------------------------------------------------------

  def base_agi

    if $game_temp.god_mode

      return 999

    end

    cdebug_base_agi

  end

  #--------------------------------------------------------------------------

  # * Get Basic Intelligence

  #--------------------------------------------------------------------------

  def base_int

    if $game_temp.god_mode

      return 999

    end

    cdebug_base_int

  end

  #--------------------------------------------------------------------------

  # * Get Basic Attack Power

  #--------------------------------------------------------------------------

  def base_atk

    if $game_temp.god_mode

      return 9999999

    end

    cdebug_base_atk

  end

  #--------------------------------------------------------------------------

  # * Get Basic Physical Defense

  #--------------------------------------------------------------------------

  def base_pdef

    if $game_temp.god_mode

      return 999999

    end

    cdebug_base_pdef 

  end

  #--------------------------------------------------------------------------

  # * Get Basic Magical Defense

  #--------------------------------------------------------------------------

  def base_mdef

    if $game_temp.god_mode

      return 999999

    end

    cdebug_base_mdef

  end

end

 

 

 

#==============================================================================

# ** Game_Character 

#------------------------------------------------------------------------------

#  This class deals with characters. It's used as a superclass for the

#  Game_Player and Game_Event classes.

#==============================================================================

 

class Game_Character

  #--------------------------------------------------------------------------

  # * Public Instance Variables

  #--------------------------------------------------------------------------

  attr_accessor :move_speed               # Move Speed

end

 

 

 

#==============================================================================

# ** Window_Dataset

#------------------------------------------------------------------------------

#  This window displays changable information in the debug system.

#==============================================================================

 

class Window_Dataset < Window_Selectable

  #--------------------------------------------------------------------------

  # * Object Initialization

  #     type : type

  #--------------------------------------------------------------------------   

  def initialize(type)

    super(0, 0, 300, 480)

    self.contents = Bitmap.new(width - 32, height - 32)

    self.back_opacity = 160

    self.contents.font.name = "Arial"

    self.contents.font.size = 24

    @type = type

    if @type == 1

      @item_max = $data_items.size - 1

    end

    if @type == 2

      @item_max = $data_weapons.size - 1

    end

    if @type == 3

      @item_max = $data_armors.size - 1

    end

    refresh

  end

  #--------------------------------------------------------------------------

  # * Refresh

  #--------------------------------------------------------------------------

  def refresh

     if self.contents != nil

      self.contents.dispose

      self.contents = nil

    end

    y = 0

    self.contents = Bitmap.new(width - 32, 32 * @item_max)

    self.contents.clear

    self.contents.font.name = "Arial"

    self.contents.font.size = 24

    self.opacity = 255

    self.back_opacity = 255

    if @type == 1

      for i in 1..$data_items.size - 1

      draw_item_name($data_items[i], 4, i*32 - 32)

      number = $game_party.item_number(i).to_s

      self.contents.draw_text(4, i*32 - 32, 262, 32, number, 2)

      end

    end

     if @type == 2

      for i in 1..$data_weapons.size - 1

      draw_item_name($data_weapons[i], 4, i*32 - 32)

      number = $game_party.weapon_number(i).to_s

      self.contents.draw_text(4, i*32 - 32, 262, 32, number, 2)

    end

    end

    if @type == 3

      for i in 1..$data_armors.size - 1

      draw_item_name($data_armors[i], 4, i*32 - 32)

      number = $game_party.armor_number(i).to_s

      self.contents.draw_text(4, i*32 - 32, 262, 32, number, 2)

    end

    end

  end

  #--------------------------------------------------------------------------

  # * Frame Update

  #--------------------------------------------------------------------------

  def update

    super

  end

end

 

 

 

#==============================================================================

# ** Scene_Debug

#------------------------------------------------------------------------------

#  This class performs debug screen processing.

#==============================================================================

 

class Scene_Debug

  #--------------------------------------------------------------------------

  # * Main Processing

  #--------------------------------------------------------------------------

  def main

    @left_window = Window_DebugLeft.new

    @right_window = Window_DebugRight.new

    c1 = "Heal Character"

    c2 = "God Mode"

    c3 = "Money"

    c4 = "Encounters"

    c5 = "Items"

    c6 = "Weapons"

    c7 = "Armor"

    c8 = "Teleport"

    c9 = "Walk Speed"

    c10 = "Save"

    x1 = "On"

    x2 = "Off"

    w1 = "Slowest"

    w2 = "Slower"

    w3 = "Slow"

    w4 = "Fast"

    w5 = "Faster"

    w6 = "Fastest"

    d1 = "Destination 1"

    main_commands = [c1, c2, c3, c4, c5, c6, c7, c8, c9, c10]

    speed_commands = [w1, w2, w3, w4, w5, w6]

    toggle_commands = [x1, x2]

    warp_commands = [d1]

    @other_window = Window_Command.new(240, main_commands)

    @speed_window = Window_Command.new(120, speed_commands)

    @enc_window = Window_Command.new(80, toggle_commands)

    @god_window = Window_Command.new(80, toggle_commands)

    @warp_window = Window_Command.new(240, warp_commands)

    @target_window = Window_Target.new

    @money_window = Window_Gold.new

    @number_window = Window_InputNumber.new(7)

    @var_window = Window_InputNumber.new(8)

    @help_window = Window_Base.new(192, 352, 448, 128)

    @help_window.contents = Bitmap.new(406, 96)

    @help_window.contents.font.name = "Arial"

    @help_window.contents.font.size = 24

    @left_window.top_row = $game_temp.debug_top_row

    @left_window.index = $game_temp.debug_index

    @right_window.mode = @left_window.mode

    @right_window.top_id = @left_window.top_id

    @other_window.visible = false

    @other_window.active = false

    @target_window.visible = false

    @target_window.active = false

    @enc_window.visible = false

    @enc_window.active = false

    @god_window.visible = false

    @god_window.active = false

    @speed_window.visible = false

    @speed_window.active = false

    @warp_window.visible = false

    @warp_window.active = false

    @money_window.visible = false

    @money_window.active = false

    @number_window.visible = false

    @number_window.active = false

    @var_window.visible = false

    @var_window.active = false

    @itemset_window = Window_Dataset.new(1)

    @itemset_window.visible = false

    @itemset_window.active = false

    @weaponset_window = Window_Dataset.new(2)

    @weaponset_window.visible = false

    @weaponset_window.active = false

    @armorset_window = Window_Dataset.new(3)

    @armorset_window.visible = false

    @armorset_window.active = false

    @other_window.opacity = 255

    @other_window.x = 100

    @other_window.y = 48

    @other_window.z = 200

    @target_window.x = 304

    @target_window.y = 0

    @target_window.z = 300

    @target_window.opacity = 255

    @enc_window.x = 225

    @enc_window.y = 180

    @enc_window.z = 210

    @enc_window.opacity = 255

    @god_window.x = 225

    @god_window.y = 180

    @god_window.z = 210

    @god_window.opacity = 255

    @speed_window.x = 270

    @speed_window.y = 100

    @speed_window.z = 220

    @speed_window.opacity = 255

    @warp_window.x = 270

    @warp_window.y = 100

    @warp_window.z = 220

    @warp_window.opacity = 255

    @itemset_window.x = 0

    @itemset_window.y = 0

    @itemset_window.z = 1000

    @itemset_window.opacity = 255

    @weaponset_window.x = 0

    @weaponset_window.y = 0

    @weaponset_window.z = 1000

    @weaponset_window.opacity = 255

    @armorset_window.x = 0

    @armorset_window.y = 0

    @armorset_window.z = 1000

    @armorset_window.opacity = 255

    @money_window.x = 270

    @money_window.y = 100

    @money_window.z = 700

    @money_window.opacity = 255

    @number_window.x = 270

    @number_window.y = 164

    @number_window.z = 710

    @number_window.opacity = 255

    @var_window.x = 270

    @var_window.y = 164

    @var_window.z = 710

    @var_window.opacity = 255

    @variable_edit = 0

    Graphics.transition

    loop do

      Graphics.update

      Input.update

      update

      if $scene != self

        break

      end

    end

    $game_map.refresh

    Graphics.freeze

    @left_window.dispose

    @right_window.dispose

    @help_window.dispose

    @other_window.dispose

    @god_window.dispose

    @speed_window.dispose

    @enc_window.dispose

    @target_window.dispose

    @warp_window.dispose

    @itemset_window.dispose

    @weaponset_window.dispose

    @armorset_window.dispose

    @money_window.dispose

    @var_window.dispose

  end

  #--------------------------------------------------------------------------

  # * Frame Update

  #--------------------------------------------------------------------------

  def update

    @right_window.mode = @left_window.mode

    @right_window.top_id = @left_window.top_id

    @left_window.update

    @right_window.update

    @other_window.update

    @enc_window.update

    @itemset_window.update

    @weaponset_window.update

    @armorset_window.update

    @target_window.update

    @god_window.update

    @speed_window.update

    @warp_window.update

    @money_window.update

    @number_window.update

    @var_window.update

    $game_temp.debug_top_row = @left_window.top_row

    $game_temp.debug_index = @left_window.index

    if @left_window.active

      update_left

      return

    end

    if @right_window.active

      update_right

      return

    end

    if @other_window.active

      update_command

      return

    end

    if @target_window.active

      update_target

      return

    end

    if @enc_window.active

      update_enc

      return

    end

     if @itemset_window.active

      update_itemset

      return

    end

      if @weaponset_window.active

      update_weaponset

      return

    end

    if @armorset_window.active

      update_armorset

      return

    end

     if @god_window.active

      update_god

      return

    end

     if @speed_window.active

      update_speed

      return

    end

     if @warp_window.active

      update_warp

      return

    end

      if @number_window.active

      update_money

      return

    end

      if @var_window.active

      update_var

      return

    end

  end

  #--------------------------------------------------------------------------

  # * Frame Update (when left window is active)

  #--------------------------------------------------------------------------

  def update_left

    if Input.trigger?(Input::B)

      $game_system.se_play($data_system.cancel_se)

      $scene = Scene_Map.new

      return

    end

    if Input.trigger?(Input::C)

      $game_system.se_play($data_system.decision_se)

      if @left_window.mode == 0

        text1 = "C (Enter) : ON / OFF"

        @help_window.contents.draw_text(4, 0, 406, 32, text1)

      else

        text1 = "Left : -1   Right : +1"

        text2 = "L : -10"

        text3 = "R : +10"

        text4 = "C: Enter Value"

        text5 = "X: Change Sign"

        @help_window.contents.draw_text(4, 0, 200, 32, text1)

        @help_window.contents.draw_text(4, 32, 200, 32, text2)

        @help_window.contents.draw_text(4, 64, 200, 32, text3)

        @help_window.contents.draw_text(240, 0, 180, 32, text4)

        @help_window.contents.draw_text(240, 32, 180, 32, text5)

      end

      @left_window.active = false

      @right_window.active = true

      @right_window.index = 0

      return

    end

    if Input.trigger?(Input::X)

      $game_system.se_play($data_system.decision_se)

      @other_window.visible = true

      @left_window.active = false

      @other_window.active = true

    end

  end

  #--------------------------------------------------------------------------

  # * Frame Update (when command window is active)

  #--------------------------------------------------------------------------

  def update_command

    if Input.trigger?(Input::B)

      $game_system.se_play($data_system.cancel_se)

      @other_window.active = false

      @left_window.active = true

      @other_window.visible = false

      return

    end

    if Input.trigger?(Input::C)

      $game_system.se_play($data_system.decision_se)

      case @other_window.index

      when 0

        @other_window.active = false

        @target_window.active = true

        @target_window.visible = true

        @target_window.index = 0

      when 1

        @god_window.index = 1

        if $game_temp.god_mode

          @god_window.index = 0

        end

        @god_window.active = true

        @god_window.visible = true

        @other_window.active = false

      when 2

        @number_window.number = 0

        @money_window.visible = true

        @number_window.active = true

        @number_window.visible = true

        @other_window.active = false

      when 3

        @enc_window.index = 0

        if $game_system.encounter_disabled

          @enc_window.index = 1

        end

        @enc_window.active = true

        @enc_window.visible = true

        @other_window.active = false

      when 4

        @itemset_window.index = 0

        @itemset_window.active = true

        @itemset_window.visible = true

        @other_window.active = false

      when 5

        @weaponset_window.index = 0

        @weaponset_window.active = true

        @weaponset_window.visible = true

        @other_window.active = false

      when 6

        @armorset_window.index = 0

        @armorset_window.active = true

        @armorset_window.visible = true

        @other_window.active = false

      when 7

        @warp_window.active = true

        @warp_window.visible = true

        @other_window.active = false

      when 8

        @speed_window.index = $game_player.move_speed - 1

        @speed_window.active = true

        @speed_window.visible = true

        @other_window.active = false

      when 9

        $scene = Scene_Save.new

        return

      end

    end

  end

  #--------------------------------------------------------------------------

  # * Frame Update (when money window is active)

  #--------------------------------------------------------------------------

  def update_money

   if Input.trigger?(Input::B)

      $game_system.se_play($data_system.cancel_se)

      @number_window.active = false

      @other_window.active = true

      @money_window.visible = false

      @number_window.visible = false

      return

    end

    if Input.trigger?(Input::C)

      $game_system.se_play($data_system.decision_se)

      $game_party.lose_gold(9999999)

      $game_party.gain_gold(@number_window.number)

      @money_window.refresh

    end

    if Input.repeat?(Input::X)

      $game_system.se_play($data_system.cursor_se)

      $game_party.gain_gold(9999999)

      @money_window.refresh

    end

     if Input.repeat?(Input::Y)

      $game_system.se_play($data_system.cursor_se)

      $game_party.lose_gold(9999999)

      @money_window.refresh

    end

  end

  #--------------------------------------------------------------------------

  # * Frame Update (when item window is active)

  #--------------------------------------------------------------------------

  def update_itemset

   if Input.trigger?(Input::B)

      $game_system.se_play($data_system.cancel_se)

      @itemset_window.active = false

      @other_window.active = true

      @itemset_window.visible = false

      return

    end

    if Input.repeat?(Input::RIGHT)

      $game_system.se_play($data_system.cursor_se)

      $game_party.gain_item(@itemset_window.index + 1, 1)

      @itemset_window.refresh

    end

    if Input.repeat?(Input::LEFT)

      $game_system.se_play($data_system.cursor_se)

      $game_party.lose_item(@itemset_window.index + 1, 1)

      @itemset_window.refresh

    end

    if Input.repeat?(Input::X)

      $game_system.se_play($data_system.cursor_se)

      $game_party.lose_item(@itemset_window.index + 1, 10)

      @itemset_window.refresh

    end

    if Input.repeat?(Input::Y)

      $game_system.se_play($data_system.cursor_se)

      $game_party.gain_item(@itemset_window.index + 1, 10)

      @itemset_window.refresh

    end

  end

  #--------------------------------------------------------------------------

  # * Frame Update (when weapon window is active)

  #--------------------------------------------------------------------------

  def update_weaponset

   if Input.trigger?(Input::B)

      $game_system.se_play($data_system.cancel_se)

      @weaponset_window.active = false

      @other_window.active = true

      @weaponset_window.visible = false

      return

    end

    if Input.repeat?(Input::RIGHT)

      $game_system.se_play($data_system.cursor_se)

      $game_party.gain_weapon(@weaponset_window.index + 1, 1)

      @weaponset_window.refresh

    end

    if Input.repeat?(Input::LEFT)

      $game_system.se_play($data_system.cursor_se)

      $game_party.lose_weapon(@weaponset_window.index + 1, 1)

      @weaponset_window.refresh

    end

    if Input.repeat?(Input::X)

      $game_system.se_play($data_system.cursor_se)

      $game_party.lose_weapon(@weaponset_window.index + 1, 10)

      @weaponset_window.refresh

    end

    if Input.repeat?(Input::Y)

      $game_system.se_play($data_system.cursor_se)

      $game_party.gain_weapon(@weaponset_window.index + 1, 10)

      @weaponset_window.refresh

    end

  end

  #--------------------------------------------------------------------------

  # * Frame Update (when armor window is active)

  #--------------------------------------------------------------------------

  def update_armorset

    if Input.trigger?(Input::B)

      $game_system.se_play($data_system.cancel_se)

      @armorset_window.active = false

      @other_window.active = true

      @armorset_window.visible = false

      return

    end

    if Input.repeat?(Input::RIGHT)

      $game_system.se_play($data_system.cursor_se)

      $game_party.gain_armor(@armorset_window.index + 1, 1)

      @armorset_window.refresh

    end

    if Input.repeat?(Input::LEFT)

      $game_system.se_play($data_system.cursor_se)

      $game_party.lose_armor(@armorset_window.index + 1, 1)

      @armorset_window.refresh

    end

    if Input.repeat?(Input::X)

      $game_system.se_play($data_system.cursor_se)

      $game_party.lose_armor(@armorset_window.index + 1, 10)

      @armorset_window.refresh

    end

    if Input.repeat?(Input::Y)

      $game_system.se_play($data_system.cursor_se)

      $game_party.gain_armor(@armorset_window.index + 1, 10)

      @armorset_window.refresh

    end

  end

  #--------------------------------------------------------------------------

  # * Frame Update (when encounter window is active)

  #--------------------------------------------------------------------------

  def update_enc

    if Input.trigger?(Input::B)

      $game_system.se_play($data_system.cancel_se)

      @enc_window.active = false

      @other_window.active = true

      @enc_window.visible = false

      return

    end

    if Input.trigger?(Input::C)

      case @enc_window.index

      when 0

        $game_system.se_play($data_system.decision_se)

        $game_system.encounter_disabled = false

        @enc_window.active = false

        @other_window.active = true

        @enc_window.visible = false

      when 1

        $game_system.se_play($data_system.decision_se)

        $game_system.encounter_disabled = true

        @enc_window.active = false

        @other_window.active = true

        @enc_window.visible = false

      end

    end

  end

  #--------------------------------------------------------------------------

  # * Frame Update (when godmode window is active)

  #--------------------------------------------------------------------------

  def update_god

    if Input.trigger?(Input::B)

      $game_system.se_play($data_system.cancel_se)

      @god_window.active = false

      @other_window.active = true

      @god_window.visible = false

      return

    end

    if Input.trigger?(Input::C)

      case @god_window.index

      when 0

        $game_system.se_play($data_system.decision_se)

        $game_temp.god_mode = true

        @god_window.active = false

        @other_window.active = true

        @god_window.visible = false

      when 1

        $game_system.se_play($data_system.decision_se)

        $game_temp.god_mode = false

        @god_window.active = false

        @other_window.active = true

        @god_window.visible = false

      end

    end

  end

  #--------------------------------------------------------------------------

  # * Frame Update (when speed window is active)

  #--------------------------------------------------------------------------

  def update_speed

    if Input.trigger?(Input::B)

      $game_system.se_play($data_system.cancel_se)

      @speed_window.active = false

      @other_window.active = true

      @speed_window.visible = false

      return

    end

    if Input.trigger?(Input::C)

      $game_system.se_play($data_system.decision_se)

      $game_player.move_speed = @speed_window.index + 1

      @speed_window.active = false

      @other_window.active = true

      @speed_window.visible = false

    end

  end

  #--------------------------------------------------------------------------

  # * Frame Update (when warp window is active)

  #--------------------------------------------------------------------------

  def update_warp

    if Input.trigger?(Input::B)

      $game_system.se_play($data_system.cancel_se)

      @warp_window.active = false

      @other_window.active = true

      @warp_window.visible = false

      return

    end

    if Input.trigger?(Input::C)

      $game_system.se_play($data_system.decision_se)

      $game_temp.player_transferring = true

      case @warp_window.index

      when 0

        $game_temp.player_new_map_id = 1

        $game_temp.player_new_x = 1

        $game_temp.player_new_y = 1

        @warp_window.active = false

        @other_window.active = true

        @warp_window.visible = false

      end

    end

  end

  #--------------------------------------------------------------------------

  # * Frame Update (when target window is active)

  #--------------------------------------------------------------------------

  def update_target

    if Input.trigger?(Input::B)

      $game_system.se_play($data_system.cancel_se)

      @target_window.active = false

      @other_window.active = true

      @target_window.visible = false

      return

    end

    if Input.trigger?(Input::C)

      $game_system.se_play($data_system.save_se)

      for i in 1..$data_states.size

        $game_party.actors[@target_window.index].remove_state(i)

      end

      $game_party.actors[@target_window.index].hp += 9999

      $game_party.actors[@target_window.index].sp += 9999

      @target_window.refresh

    end

    if Input.trigger?(Input::X)

      $game_system.se_play($data_system.save_se)

      $game_party.actors[@target_window.index].hp += 9999

      @target_window.refresh

    end

    if Input.trigger?(Input::Y)

      $game_system.se_play($data_system.save_se)

      $game_party.actors[@target_window.index].sp += 9999

      @target_window.refresh

    end

    if Input.trigger?(Input::A)

      $game_system.se_play($data_system.save_se)

      for i in 1..$data_states.size

        $game_party.actors[@target_window.index].remove_state(i)

      end

      @target_window.refresh

    end

  end

  #--------------------------------------------------------------------------

  # * Frame Update (when var window is active)

  #--------------------------------------------------------------------------

  def update_var

   if Input.trigger?(Input::B)

      $game_system.se_play($data_system.cancel_se)

      @var_window.active = false

      @var_window.visible = false

      @right_window.active = true

      return

    end

    if Input.trigger?(Input::C)

      $game_system.se_play($data_system.decision_se)

      $game_variables[@variable_edit] = @var_window.number

      @right_window.refresh

      @var_window.active = false

      @var_window.visible = false

      @right_window.active = true

    end

  end

  #--------------------------------------------------------------------------

  # * Frame Update (when right window is active)

  #--------------------------------------------------------------------------

  def update_right

    if Input.trigger?(Input::B)

      $game_system.se_play($data_system.cancel_se)

      @left_window.active = true

      @right_window.active = false

      @right_window.index = -1

      @help_window.contents.clear

      return

    end

    current_id = @right_window.top_id + @right_window.index

    if @right_window.mode == 0

      if Input.trigger?(Input::C)

        $game_system.se_play($data_system.decision_se)

        $game_switches[current_id] = (not $game_switches[current_id])

        @right_window.refresh

        return

      end

    end

    if @right_window.mode == 1

      if Input.repeat?(Input::RIGHT)

        $game_system.se_play($data_system.cursor_se)

        $game_variables[current_id] += 1

        if $game_variables[current_id] > 99999999

          $game_variables[current_id] = 99999999

        end

        @right_window.refresh

        return

      end

      if Input.repeat?(Input::LEFT)

        $game_system.se_play($data_system.cursor_se)

        $game_variables[current_id] -= 1

        if $game_variables[current_id] < -99999999

          $game_variables[current_id] = -99999999

        end

        @right_window.refresh

        return

      end

      if Input.repeat?(Input::C)

        $game_system.se_play($data_system.decision_se)

        current_id = @right_window.top_id + @right_window.index

        @variable_edit = current_id

        @var_window.number = $game_variables[current_id].abs

        @var_window.visible = true

        @var_window.active = true

        @right_window.active = false

      end

       if Input.repeat?(Input::X)

        $game_system.se_play($data_system.decision_se)

        current_id = @right_window.top_id + @right_window.index

        $game_variables[current_id] *= -1

        @right_window.refresh

      end

      if Input.repeat?(Input::R)

        $game_system.se_play($data_system.cursor_se)

        $game_variables[current_id] += 10

        if $game_variables[current_id] > 99999999

          $game_variables[current_id] = 99999999

        end

        @right_window.refresh

        return

      end

      if Input.repeat?(Input::L)

        $game_system.se_play($data_system.cursor_se)

        $game_variables[current_id] -= 10

        if $game_variables[current_id] < -99999999

          $game_variables[current_id] = -99999999

        end

        @right_window.refresh

        return

      end

    end

  end

end

 
 

Yin

Member

Script: Sound Interaction System by SephirothSpawn
Code:
#==============================================================================

# ** Sound Interaction System

#------------------------------------------------------------------------------

# SephirothSpawn

# Version 1

# 2007-03-21

# SDK : Version 2.0+, Parts I & II

#------------------------------------------------------------------------------

# * Version History :

#

#   Version 1 ---------------------------------------------------- (2007-03-21)

#------------------------------------------------------------------------------

# * Description

#

#   This script was designed to : 

#    - play sound effects for moving characters and events on the map

#    - play background sound effects (bgs) when within range of events

#

#   When your player approaches an event with a walking sound effect, you will

#   here footsteps or other sound effects equal to the distance the player is

#   from the event. When the player gets within a range of an object with a 

#   bgs, the bgs is played as the footsteps are played, just constantly.

#------------------------------------------------------------------------------

# * Instructions

#

#   Place The Script Below the SDK and Above Main.

#

#   Setting Events with Sound Interaction

#    - Comment : Sound Interaction|type|filename|max_volume|max_distance

#

#   Replace :

#    - type : MVT (for movement) or 

#             RNG (for bgs)

#    - filename : filename of se or bgs

#    - max_volume : max volume

#    - max_distance : max distance

#------------------------------------------------------------------------------

# * Customization

#

#   Default player movement sound effect settings

#    - Player_Movement_SE_Name   = 'se_filename'

#    - Player_Movement_SE_Volume = max_volume

#    - Player_Movement_SE_Frames = [frame_id, ...]

#

#   Default events frames to play se

#    - Movement_SE_Frames = [frame_id, ...]

#------------------------------------------------------------------------------

# * Syntax :

#

#   Setting Sound Interaction Settings

#    <game_character>.sis_movement_se_name = 'filename' or nil

#    <game_character>.sis_movement_se_max_volume = n

#    <game_character>.sis_movement_se_max_distance = n

#    <game_character>.sis_movement_se_frames = [frame_id, ...]

#    <game_character>.sis_range_bgs_name = 'filename' or nil

#    <game_character>.sis_range_bgs_max_volume = n

#    <game_character>.sis_range_bgs_max_distance = n

#

#    NOTE : For events, when the event refreshes, these are all refreshed

#           by the page comments.

#

#  Setting Player Sound Interaction Settings

#    $game-player.sis_enabled = true or false

#==============================================================================

 

#------------------------------------------------------------------------------

# * SDK Log Script

#------------------------------------------------------------------------------

SDK.log('Sound Interaction System', 'SephirothSpawn', 1, '2007-03-21')

SDK.check_requirements(2.0, [2]) 

 

#------------------------------------------------------------------------------

# * Begin SDK Enable Test

#------------------------------------------------------------------------------

if SDK.enabled?('Sound Interaction System')

  

#==============================================================================

# ** Sound Interaction System

#==============================================================================

  

module Sound_Interaction

  #--------------------------------------------------------------------------

  # * Player Movement SE

  #--------------------------------------------------------------------------

  Player_Movement_SE_Name   = nil

  Player_Movement_SE_Volume = 60

  Player_Movement_SE_Frames = [0]

  #--------------------------------------------------------------------------

  # * Non-Defined Frames To Play Movement SE

  #--------------------------------------------------------------------------

  Movement_SE_Frames = [0]

end

  

#==============================================================================

# ** Game_Character

#==============================================================================

 

class Game_Character

  #--------------------------------------------------------------------------

  # * Public Instance Variables

  #--------------------------------------------------------------------------

  attr_accessor :sis_movement_se_name

  attr_accessor :sis_movement_se_max_volume

  attr_accessor :sis_movement_se_max_distance

  attr_accessor :sis_movement_se_frames

  attr_accessor :sis_range_bgs_name

  attr_accessor :sis_range_bgs_max_volume

  attr_accessor :sis_range_bgs_max_distance

  #--------------------------------------------------------------------------

  # * Alias Listings

  #--------------------------------------------------------------------------

  alias_method :seph_soundintsys_gmchr_ua, :update_animation

  #--------------------------------------------------------------------------

  # * Frame Update : Animation Counters

  #--------------------------------------------------------------------------

  def update_animation

    # Gets Old Pattern

    old_pattern = @pattern

    # Original Update Animation Counters

    seph_soundintsys_gmchr_ua

    # If Play Movement SE

    unless @sis_movement_se_name.nil?

      # If Pattern is Different

      if old_pattern != @pattern && 

         # If Movement SE Frame

         @sis_movement_se_frames.include?(old_pattern)

        # Gets Distance From Player

        px, py = $game_player.x, $game_player.y

        distance = self == $game_player ? 0 : Math.hypot(@x - px, @y - py)

        # Calculates Volume

        md = @sis_movement_se_max_distance 

        mv = @sis_movement_se_max_volume

        volume = distance == 0 ? mv : distance > md ? 0 : 

            mv * ((md - (distance - 1)) / md)

        # If Volume Greater Than 0

        if volume > 0 && ![nil, ''].include?(@sis_movement_se_name)

          # Play Movement SE

          Audio.se_play('Audio/SE/' + @sis_movement_se_name, volume) 

        end

      end

    end

  end

end  

  

#==============================================================================

# ** Game_Event

#==============================================================================

 

class Game_Event

  #--------------------------------------------------------------------------

  # * Alias Listings

  #--------------------------------------------------------------------------

  alias_method :seph_soundintsys_gmevt_refrsh, :refresh

  #--------------------------------------------------------------------------

  # * Refresh

  #--------------------------------------------------------------------------

  def refresh

    # Original Refresh

    seph_soundintsys_gmevt_refrsh

    # Set LD Variables

    @sis_movement_se_name         = nil

    @sis_movement_se_max_volume   = 100

    @sis_movement_se_max_distance = 10

    @sis_range_bgs_name           = nil

    @sis_range_bgs_max_volume     = 100

    @sis_range_bgs_max_distance   = 10

    # Return if Nil Page or Erased

    return if @list.nil? || @erased

    # Pass Through All Event Commands

    for ec in @list

      # If Comment Command

      if ec.code == 108 &&

         # And Comments Include "SOUND INTERACTION"

         ec.parameters[0].upcase.include?('SOUND INTERACTION')

        # Split Comment Line

        parameters = ec.parameters[0].split('|')

        # Branch By Type

        case parameters[1].upcase

        when 'MVT'

          # Set Filename, Volume & Distance

          @sis_movement_se_name         = parameters[2]

          @sis_movement_se_max_volume   = parameters[3].to_i

          @sis_movement_se_max_distance = parameters[4].to_i

          if parameters[5].nil?

            @sis_movement_se_frames = Sound_Interaction::Movement_SE_Frames

          else

            @sis_movement_se_frames     = eval "[#{parameters[5]}]"

          end

        when 'RNG'

          # Set Filename, Volume & Distance

          @sis_range_bgs_name           = parameters[2]

          @sis_range_bgs_max_volume     = parameters[3].to_i

          @sis_range_bgs_max_distance   = parameters[4].to_i

        end

      end

    end

  end

end

 

#==============================================================================

# ** Game_Player

#==============================================================================

 

class Game_Player

  #--------------------------------------------------------------------------

  # * Public Instance Variables

  #--------------------------------------------------------------------------

  attr_accessor :sis_range_bgs

  attr_accessor :sis_enabled

  #--------------------------------------------------------------------------

  # * Alias Listings

  #--------------------------------------------------------------------------

  alias_method :seph_soundintsys_gmplyr_init,   :initialize

  alias_method :seph_soundintsys_gmplyr_update, :update

  #--------------------------------------------------------------------------

  # * Object Initialization

  #--------------------------------------------------------------------------

  def initialize

    # Original Initialization

    seph_soundintsys_gmplyr_init

    # Enable Sound Interaction

    @sis_enabled = true

    # Set Movement Distances

    @sis_movement_se_name       = Sound_Interaction::Player_Movement_SE_Name

    @sis_movement_se_max_volume = Sound_Interaction::Player_Movement_SE_Volume

    @sis_movement_se_frames     = Sound_Interaction::Player_Movement_SE_Frames

    # Set Distances

    @sis_event_distances = {}

    @sis_event_distances.default = nil

  end

  #--------------------------------------------------------------------------

  # * Frame Update

  #--------------------------------------------------------------------------

  def update

    # Original Update

    seph_soundintsys_gmplyr_update

    # Update Sound Interaction

    update_sound_interaction

  end

  #--------------------------------------------------------------------------

  # * Event Distances

  #--------------------------------------------------------------------------

  def sis_event_ranges

    # ditance => [event_id]

    ranges = {}

    for event_id in $game_map.events.keys.sort

      event = $game_map.events[event_id]

      next if event.sis_range_bgs_name.nil?

      distance = Math.hypot(@x - event.x, @y - event.y)

      ranges[distance] = [] unless ranges.has_key?(distance)

      ranges[distance] << event_id

    end

    return ranges

  end

  #--------------------------------------------------------------------------

  # * Frame Update : Sound Interaction Range

  #--------------------------------------------------------------------------

  def update_sound_interaction

    # If Not Enabled

    unless @sis_enabled

      # If BGS Playing

      if @sis_range_bgs != nil

        # Set Range BGS to Nil

        @sis_range_bgs = nil

        # Stop BGS

        $game_system.bgs_play(nil)

      end

      return

    end

    # Gets Event Ranges

    event_ranges = sis_event_ranges

    # Set Main Break Flag to False

    main_break = false

    # Pass Through Shortest to Farthest Range

    for distance in event_ranges.keys.sort

      # Pass Through Events

      for event_id in event_ranges[distance].sort

        # If Last Event Played & Distance Hasn't Changed

        if @sis_range_last_event_id == event_id &&

           @sis_event_distances[event_id] == distance

          # Break Main Loop

          main_break = true

          # Break Loop

          break

        end

        # Gets Event Data

        event = $game_map.events[event_id]

        # If Distance Has Changed

        if @sis_event_distances[event_id] != distance

          # Record Distance Change

          @sis_event_distances[event_id] = distance

          # Calculates Volume

          md = event.sis_range_bgs_max_distance

          mv = event.sis_range_bgs_max_volume

          volume = distance == 0 ? mv : distance > md ? 0 : 

            mv * ((md - (distance - 1)) / md)

          # If Volume is Less Than 1

          if volume < 1

            # If Volume was Playing Before

            if @sis_range_bgs == event.sis_range_bgs_name

              # Set Previoius BGS to Nil

              @sis_range_bgs = nil

              # Clear SIS Last Event Range Flag

              @sis_range_last_event_id = nil

              # Stop BGS

              $game_system.bgs_play(nil)

            end

            next

          end

          # Record Playing BGS

          @sis_range_bgs = event.sis_range_bgs_name

          # Record SIS Last Event Range Flag

          @sis_range_last_event_id = event_id

          # Play BGS

          $game_system.bgs_play(RPG::AudioFile.new(@sis_range_bgs, volume))

          # Break Main Loop

          main_break = true

          # Break Loop

          break

        end

      end

      # Break if Break Main is True

      break if main_break

    end

  end

end

 

#==============================================================================

# ** Scene_Map

#==============================================================================

 

class Scene_Map

  #--------------------------------------------------------------------------

  # * Alias Listings

  #--------------------------------------------------------------------------

  alias_method :seph_soundintsys_scnmap_cb,   :call_battle

  #--------------------------------------------------------------------------

  # * Frame Update : Call Battle

  #--------------------------------------------------------------------------

  def call_battle

    # If Player Playing Sound Interaction BGS

    if $game_player.sis_enabled && $game_player.sis_range_bgs != nil

      # Clear BGS

      $game_player.sis_range_bgs = nil

      # Stop BGS

      $game_system.bgs_play(nil)

    end

    # Original Call Battle

    seph_soundintsys_scnmap_cb

  end

end

  

#--------------------------------------------------------------------------

# * End SDK Enable Test

#--------------------------------------------------------------------------

end
Conversion: <SDK> to <Non-SDK>
Thanks to anyone who is able to complete this task!
 
Script: Advanced Analyze System by Blizzard

1.
2. #:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=
3. # Advanced Analyze System by Blizzard
4. # Version: 2.2b
5. # Type: Enemy Scan Window and Skill
6. # Date: 5.7.2006
7. # Date v1.1b: 31.8.2006
8. # Date v1.2b: 23.2.2007
9. # Date v1.3b: 7.7.2007
10. # Date v2.0b: 12.7.2007
11. # Date v2.1b: 6.8.2007
12. # Date v2.2b: 24.9.2007
13. #:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=
14. #
15. # Compatibility:
16. #
17. # 96% compatible with SDK v1.x. 70% compatible with SDK v2.x. May cause
18. # incompatibility issues with exotic CBS-es. WILL corrupt your old savegames.
19. #
20. #
21. # Features:
22. #
23. # - make one or more skills to be able to analyze enemies
24. # - display of full data of enemies
25. # - option to disable different information
26. # - integrated support for my "Bestiary" script and option to override it and
27. # only add analyzed enemies
28. # - press SHIFT/ENTER to change the appearance of the analyze window
29. # - use LEFT/RIGHT/UP/DOWN to navigate through the information database
30. #
31. # new in v1.1b:
32. # - shorter, better and more simple code
33. # - fixed the bug where trying to use a skill in the menu caused loss of SP,
34. # no matter if the skill was used or could not be used
35. # - updates now the spriteset while the Analyze window is visible
36. #
37. # new in v1.2b:
38. # - improved coding (uses less RAM now and processes faster)
39. #
40. # new in v1.3b:
41. # - increased compatibility
42. #
43. # new in v2.0b:
44. # - completely overworked and fixed compatibility issues
45. #
46. # new in v2.1b:
47. # - added custom info possibility
48. #
49. # new in v2.2b:
50. # - rewritten conditions using classic syntax to avoid RGSS conditioning bug
51. # - improved coding
52. #
53. #
54. # Instructions:
55. #
56. # - Explanation:
57. #
58. # This script will allow your characters to retrieve information about
59. # enemies during battle and show them in a window. It also has built-in
60. # compatibility for my "Bestiary" script and allows adding enemies to it only
61. # if enemies were analyzed at least once. This script can easily be used for
62. # Pokémon typed games.
63. #
64. # - Configuration:
65. #
66. # Configure the part below and make one or more skills, that can analyze
67. # enemies. Add the IDs into the array called ANALYZE_IDS and separate them
68. # with commas. If you have one or more scripts using dummy elements (e.g. my
69. # EQUAP Skills, SephirothSpawn's Limit Break, etc.) be sure to include every
70. # dummy element ID in the array called ELM_DUMMIES, also separated by commas.
71. # With advanced configuration it is possible to disable different information
72. # display, even during the game. Also it can be set up, that an enemy is
73. # being rendered unanalyzeable or only partially unanalyzeable (e.g. disable
74. # display of extreme element weaknesses for an enemy, etc.). Put this script
75. # UNDER my "Bestiary" script if you use it.
76. #
77. # - For scripters:
78. #
79. # The variable $game_system.analyzed includes an array of enemy IDs from
80. # enemies, that were analyzed at least once during a fight. You can use this
81. # array to make your own bestiary script working together with this script
82. # and let only analyzed enemies be added into the bestiary. You can refer to
83. # the global variable $advanced_analyze to check if this script is there.
84. #
85. #
86. # Important notes:
87. #
88. # You MUST configure the part below if you have scripts that use dummy
89. # elements! Do NOT give your enemies MORE than 12 elements/status effects of
90. # one resistance type (e.g. 13 or more elements, that are absorbed), because
91. # they won't be displayed. If you target anyone else than enemies, the skill
92. # will analyze all enemies anyway.
93. #
94. #
95. # If you find any bugs, please report them here:
96. # http://forum.chaos-project.com
97. #:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=
98.
99. #::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
100. # START Configuration
101. #::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
102.
103. # basic configuration
104.
105. ANALYZE_IDS = [81] # IDs of analyzing skills
106. ELM_DUMMIES = [] # include EVERY dummy element ID that is used by other scripts
107. STA_DUMMIES = [] # include EVERY dummy status effect ID, that you use
108. EVASION = 'EVA' # word displayed for Evasion
109.
110. # set the value below to true to only ADD information of analyzed enemies into
111. # the bestiary if you use my Bestiary script
112.
113. $override_bestiary = true
114.
115. # set this value to true if you want the custom Analyze window information to
116. # be used in the bestiary as well, this way you use only one information for
117. # both systems
118.
119. $override_bestiary_info = false
120.
121. # enemy IDs from enemies, that can't be analyzed (e.g. bosses)
122.
123. CANT_ANALYZE = [] # overrides the IDs below and renders an enemy unanalyzeable
124.
125. CANT_ANALYZE_BASIC = [] # HP, SP, EXP, Gold, Item drop + chance
126. CANT_ANALYZE_STATS = [] # STR, DEX, INT, AGI
127. CANT_ANALYZE_EXTSTATS = [] # ATK, PDEF, MDEF
128. CANT_ANALYZE_XTRWEAK = [] # extreme element weakness
129. CANT_ANALYZE_WEAK = [] # element weakness
130. CANT_ANALYZE_RESIST = [] # element resistance
131. CANT_ANALYZE_NULLIFY = [] # element nullification
132. CANT_ANALYZE_ABSORB = [] # element absorbtion
133. CANT_ANALYZE_XTRWEAK_S = [] # extreme status effect weakness
134. CANT_ANALYZE_WEAK_S = [] # status effect weakness
135. CANT_ANALYZE_RESIST_S = [] # status effect resistance
136. CANT_ANALYZE_NULLIFY_S = [] # status effect nullification
137. CANT_ANALYZE_ABSORB_S = [] # status effect absorbtion
138. CANT_ANALYZE_CUSTOM = [] # custom info
139.
140. # If a display below is disabled, the appropriate part above will be overriden.
141. # The values below can also be changed during gameplay by just calling the
142. # "Call script" event command and changing the values like below
143. # DO NOT SET EVERYTHING TO true! THIS WILL BUG YOUR ANALYZE SKILL!
144.
145. # set to true to disable display of basic info
146. DISABLE_BASIC = false
147. # set to true to disable display of basic stats
148. DISABLE_STATS = true
149. # set to true to disable display of extended stats
150. DISABLE_EXTSTATS = true
151. # set to true to disable display of extreme elemental weakness
152. DISABLE_XTRWEAK = false
153. # set to true to disable display of elemental weakness
154. DISABLE_WEAK = false
155. # set to true to disable display of elemental resistance
156. DISABLE_RESIST = false
157. # set to true to disable display of elemental nullification
158. DISABLE_NULLIFY = false
159. # set to true to disable display of elemental absorbtion
160. DISABLE_ABSORB = true
161. # set to true to disable display of extremeal status effect weakness
162. DISABLE_XTRWEAK_S = false
163. # set to true to disable display of status effect weakness
164. DISABLE_WEAK_S = false
165. # set to true to disable display of status effect resistance
166. DISABLE_RESIST_S = false
167. # set to true to disable display of status effect nullification
168. DISABLE_NULLIFY_S = false
169. # set to true to disable display of status effect absorbtion
170. DISABLE_ABSORB_S = false
171. # set to false to enable custom display
172. DISABLE_CUSTOM_ANALYZE = false
173.
174. #::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
175. # END Configuration
176. #::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
177.
178. if $DUMMY_ELEMENTS == nil
179. $DUMMY_ELEMENTS = ELM_DUMMIES.clone
180. else
181. $DUMMY_ELEMENTS |= ELM_DUMMIES
182. end
183. ELM_DUMMIES = nil
184. if $DUMMY_STATES == nil
185. $DUMMY_STATES = STA_DUMMIES.clone
186. else
187. $DUMMY_STATES |= STA_DUMMIES
188. end
189. STA_DUMMIES = nil
190.
191. $advanced_analyze = true
192.
193. #==============================================================================
194. # Game_System
195. #==============================================================================
196.
197. class Game_System
198.
199. attr_accessor :analyze_mode
200. attr_accessor :analyzed
201.
202. def get_analyze_info(id)
203. case id
204. #::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
205. # START Custom Analyze Info Database
206. #
207. # Use following template to add custom information about monsters:
208. #
209. # when ID then return "STRING"
210. #
211. # ID is the enemy ID and STRING is a string with the information that should be
212. # displayed. Type all the information into one string, the script will slice
213. # the text by itself. Note that special characters like a " (double quote)
214. # need the use of the escape character \ (backslash). If you get and error
215. # with your string or the character doesn't appear right on the screen, try to
216. # use the escape character (i.e. for a " it would be \" instead of just ").
217. # The backslash itself needs an escape character (i.e. \\).
218. #::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
219. when 1 then return "Looks like heavy armor. It will be hard to penetrate through his defenses."
220. when 2 then return "He is agile and balanced. His strikes are quick, but he has no range."
221. when 3 then return "This demon ridder appears to know the art of the elements. She will most likely use spells that control or distort the elements to her liking."
222. when 4 then return "A clerical demon ridder, this would be the one to heal allies and cast passive supporting spells."
223. #::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
224. # END Custom Analyze Info Database
225. #::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
226. end
227. return 'Unknown'
228. end
229.
230. alias init_aas_later initialize
231. def initialize
232. init_aas_later
233. @analyze_mode = 0
234. # bestiary support
235. @analyzed = []
236. end
237.
238. end
239.
240. #==============================================================================
241. # Game_Battler
242. #==============================================================================
243.
244. class Game_Battler
245.
246. alias skill_effect_aas_later skill_effect
247. def skill_effect(user, skill)
248. last_sr = self.sr if $crls && self.is_a?(Game_Actor)
249. last_hp = self.hp
250. result = skill_effect_aas_later(user, skill)
251. if ANALYZE_IDS.include?(skill.id)
252. self.damage = nil
253. self.sr = last_sr if $crls && self.is_a?(Game_Actor)
254. self.hp = last_hp
255. end
256. return result
257. end
258.
259. end
260.
261. #==============================================================================
262. # Window_Base
263. #==============================================================================
264.
265. class Window_Base
266.
267. def slice_text(text, width)
268. result, last_word, current_text = [], 0, ''
269. (0..text.size).each {|i|
270. if text[i, 1] == ' ' || i == text.size
271. word = text[last_word, i-last_word]
272. if self.contents.text_size("#{current_text} #{word}").width > width
273. result.push(current_text)
274. current_text = word
275. else
276. current_text += (current_text == '' ? word : " #{word}")
277. end
278. last_word = i+1
279. end}
280. result.push("#{current_text} #{text[last_word, text.size-last_word]}")
281. return result
282. end
283.
284. end
285.
286. #==============================================================================
287. # Window_Analyze
288. #==============================================================================
289.
290. class Window_Analyze < Window_Base
291.
292. attr_accessor :mode
293.
294. def initialize
295. super(0, 0, 576, 224)
296. @index_enemy = @index_page = 0
297. @d = [DISABLE_BASIC, DISABLE_STATS, DISABLE_EXTSTATS, DISABLE_XTRWEAK,
298. DISABLE_WEAK, DISABLE_RESIST, DISABLE_NULLIFY, DISABLE_ABSORB,
299. DISABLE_XTRWEAK_S, DISABLE_WEAK_S, DISABLE_RESIST_S,
300. DISABLE_NULLIFY_S, DISABLE_ABSORB_S, DISABLE_CUSTOM_ANALYZE]
301. @pages = 14 - ((0..13).find_all {|i| @d}).size
302. @mode = $game_system.analyze_mode
303. self.contents = Bitmap.new(width - 32, height - 32)
304. if $fontface != nil
305. self.contents.font.name = $fontface
306. self.contents.font.size = $fontsize
307. elsif $defaultfonttype != nil
308. self.contents.font.name = $defaultfonttype
309. self.contents.font.size = $defaultfontsize
310. end
311. self.x, self.y = 320 - self.width / 2, 160 - self.height / 2
312. self.visible = self.active = false
313. refresh
314. end
315.
316. def update
317. if Input.trigger?(Input::RIGHT)
318. $game_system.se_play($data_system.cursor_se)
319. @index_enemy = (@index_enemy + 1) % @enemies.size
320. refresh
321. elsif Input.trigger?(Input::LEFT)
322. $game_system.se_play($data_system.cursor_se)
323. @index_enemy = (@index_enemy + @enemies.size - 1) % @enemies.size
324. refresh
325. elsif Input.trigger?(Input::DOWN)
326. $game_system.se_play($data_system.cursor_se)
327. @index_page = (@index_page + 1) % @pages
328. refresh
329. elsif Input.trigger?(Input::UP)
330. $game_system.se_play($data_system.cursor_se)
331. @index_page = (@index_page + @pages - 1) % @pages
332. refresh
333. end
334. end
335.
336. def refresh
337. case @mode
338. when 0 then self.opacity = self.back_opacity = 255
339. when 1 then self.back_opacity = 128
340. when 2 then self.opacity = 0
341. end
342. self.contents.clear
343. x = 4
344. ox = x + 128
345. ax = 100
346. bx = ax + 144
347. @enemies = []
348. $game_troop.enemies.each {|enemy| @enemies.push(enemy) if enemy.exist?}
349. @enemies.each {|enemy|
350. unless $game_system.analyzed.include?(enemy.id)
351. $game_system.analyzed.push(enemy.id)
352. $game_system.enable(enemy.id) if $bestiary_enabled
353. end}
354. $game_system.analyzed.sort!
355. enemy = @enemies[@index_enemy]
356. w = self.width - self.contents.text_size(enemy.name).width
357. name = "#{enemy.name} #{make_battler_state_text(enemy, w, false)}"
358. name = "#{@index_enemy+1}. #{name}" if @enemies.size > 1
359. self.contents.draw_text(0, 0, 544, 32, name, 1)
360. unless CANT_ANALYZE.include?(enemy.id)
361. case @index_page
362. when (0 - ((0..0).find_all {|i| @d}).size)
363. if enemy.item_id > 0
364. drop = $data_items[enemy.item_id]
365. t = "#{drop.name} (#{enemy.treasure_prob}% chance)"
366. elsif enemy.weapon_id > 0
367. drop = $data_weapons[enemy.weapon_id]
368. t = "#{drop.name} (#{enemy.treasure_prob}% chance)"
369. elsif enemy.armor_id > 0
370. drop = $data_armors[enemy.armor_id]
371. t = "#{drop.name} (#{enemy.treasure_prob}% chance)"
372. end
373. self.contents.draw_text(ax, 32, 128, 32, $data_system.words.hp, 2)
374. self.contents.draw_text(ax, 64, 128, 32, $data_system.words.sp, 2)
375. self.contents.draw_text(ax, 128, 128, 32, $data_system.words.gold, 2)
376. self.contents.draw_text(ax, 160, 128, 32, 'Drops', 2)
377. unless CANT_ANALYZE_BASIC.include?(enemy.id)
378. self.contents.draw_text(bx, 32, 256, 32, "#{enemy.hp} / #{enemy.maxhp}")
379. self.contents.draw_text(bx, 64, 256, 32, "#{enemy.sp} / #{enemy.maxsp}")
380. self.contents.draw_text(bx, 128, 256, 32, enemy.gold.to_s)
381. self.contents.draw_text(bx, 160, 256, 32, (drop != nil ? t : 'nothing'))
382. else
383. (0...5).each {|i|
384. self.contents.draw_text(bx, 32 + i*32, 544, 32, 'Cannot analyze this')}
385. end
386. when (1 - ((0..1).find_all {|i| @d}).size)
387. self.contents.draw_text(ax, 32, 128, 32, $data_system.words.str, 2)
388. self.contents.draw_text(ax, 64, 128, 32, $data_system.words.dex, 2)
389. self.contents.draw_text(ax, 96, 128, 32, $data_system.words.agi, 2)
390. self.contents.draw_text(ax, 128, 128, 32, $data_system.words.int, 2)
391. unless CANT_ANALYZE_STATS.include?(enemy.id)
392. self.contents.draw_text(bx, 32, 256, 32, enemy.str.to_s)
393. self.contents.draw_text(bx, 64, 256, 32, enemy.dex.to_s)
394. self.contents.draw_text(bx, 96, 256, 32, enemy.agi.to_s)
395. self.contents.draw_text(bx, 128, 256, 32, enemy.int.to_s)
396. else
397. (0...4).each {|i|
398. self.contents.draw_text(bx, 32 + i*32, 544, 32, 'Cannot analyze this')}
399. end
400. when (2 - ((0..2).find_all {|i| @d}).size)
401. self.contents.draw_text(ax, 32, 128, 32, $data_system.words.atk, 2)
402. self.contents.draw_text(ax, 64, 128, 32, $data_system.words.pdef, 2)
403. self.contents.draw_text(ax, 96, 128, 32, $data_system.words.mdef, 2)
404. self.contents.draw_text(ax, 128, 128, 32, EVASION, 2)
405. unless CANT_ANALYZE_EXTSTATS.include?(enemy.id)
406. self.contents.draw_text(bx, 32, 256, 32, enemy.atk.to_s)
407. self.contents.draw_text(bx, 64, 256, 32, enemy.pdef.to_s)
408. self.contents.draw_text(bx, 96, 256, 32, enemy.mdef.to_s)
409. self.contents.draw_text(bx, 128, 256, 32, enemy.eva.to_s)
410. else
411. (0...4).each {|i|
412. self.contents.draw_text(bx, 32 + i*32, 544, 32, 'Cannot analyze this')}
413. end
414. when (3 - ((0..3).find_all {|i| @d}).size)
415. self.contents.draw_text(x, 32, 544, 32, 'Extremely efficient elements:')
416. draw_elements(enemy, x, 1, CANT_ANALYZE_XTRWEAK.include?(enemy.id))
417. when (4 - ((0..4).find_all {|i| @d}).size)
418. self.contents.draw_text(x, 32, 544, 32, 'Efficient elements:')
419. draw_elements(enemy, x, 2, CANT_ANALYZE_WEAK.include?(enemy.id))
420. when (5 - ((0..5).find_all {|i| @d}).size)
421. self.contents.draw_text(x, 32, 544, 32, 'Elemental resistances:')
422. draw_elements(enemy, x, 4, CANT_ANALYZE_RESIST.include?(enemy.id))
423. when (6 - ((0..6).find_all {|i| @d}).size)
424. self.contents.draw_text(x, 32, 544, 32, 'Elemental nullifications:')
425. draw_elements(enemy, x, 5, CANT_ANALYZE_NULLIFY.include?(enemy.id))
426. when (7 - ((0..7).find_all {|i| @d}).size)
427. self.contents.draw_text(x, 32, 544, 32, 'Elemental absorbtions:')
428. draw_elements(enemy, x, 6, CANT_ANALYZE_ABSORB.include?(enemy.id))
429. when (8 - ((0..8).find_all {|i| @d}).size)
430. self.contents.draw_text(x, 32, 544, 32, 'Extremely efficient status effects:')
431. draw_states(enemy, x, 1, CANT_ANALYZE_XTRWEAK_S.include?(enemy.id))
432. when (9 - ((0..9).find_all {|i| @d}).size)
433. self.contents.draw_text(x, 32, 544, 32, 'Efficient status effects:')
434. draw_states(enemy, x, 2, CANT_ANALYZE_WEAK_S.include?(enemy.id))
435. when (10 - ((0..10).find_all {|i| @d}).size)
436. self.contents.draw_text(x, 32, 544, 32, 'Status effect resistances:')
437. draw_states(enemy, x, 4, CANT_ANALYZE_RESIST_S.include?(enemy.id))
438. when (11 - ((0..11).find_all {|i| @d}).size)
439. self.contents.draw_text(x, 32, 544, 32, 'Strong status effect resistances:')
440. draw_states(enemy, x, 5, CANT_ANALYZE_NULLIFY_S.include?(enemy.id))
441. when (12 - ((0..12).find_all {|i| @d}).size)
442. self.contents.draw_text(x, 32, 544, 32, 'Status effect immunities:')
443. draw_states(enemy, x, 6, CANT_ANALYZE_ABSORB_S.include?(enemy.id))
444. when (13 - ((0..13).find_all {|i| @d}).size)
445. self.contents.draw_text(x, 32, 544, 32, 'Information:')
446. draw_info(enemy, x, CANT_ANALYZE_CUSTOM.include?(enemy.id))
447. end
448. else
449. self.contents.draw_text(0, 64, 544, 32, 'Cannot analyze this enemy', 1)
450. end
451. end
452.
453. def draw_elements(enemy, x, index, check)
454. unless check
455. elements = []
456. (1...$data_system.elements.size).each {|id|
457. if !$DUMMY_ELEMENTS.include?(id) &&
458. index == $data_enemies[@enemies[@index_enemy].id].element_ranks[id]
459. elements.push($data_system.elements[id])
460. end}
461. elements = ['Nothing'] if elements.size == 0
462. elements.each_index {|i|
463. self.contents.draw_text(x + i/4*180, 64 + i%4*32, 176, 32, elements)}
464. else
465. self.contents.draw_text(x, 64, 544, 32, 'Cannot analyze this')
466. end
467. end
468.
469. def draw_states(enemy, x, index, check)
470. unless check
471. states = []
472. (1...$data_states.size).each {|id|
473. if !$DUMMY_STATES.include?(id) &&
474. index == $data_enemies[@enemies[@index_enemy].id].state_ranks[id]
475. states.push($data_states[id].name)
476. end}
477. states = ['Nothing'] if states.size == 0
478. states.each_index {|i|
479. self.contents.draw_text(x + i/4*180, 64 + i%4*32, 176, 32, states)}
480. else
481. self.contents.draw_text(x, 64, 544, 32, 'Cannot analyze this')
482. end
483. end
484.
485. def draw_info(enemy, x, check)
486. unless check
487. text = slice_text($game_system.get_analyze_info(enemy.id), 528)
488. text.each_index {|i|
489. self.contents.draw_text(x, 64 + i*32, 544, 32, text)}
490. else
491. self.contents.draw_text(x, 64, 544, 32, 'Cannot analyze this')
492. end
493. end
494.
495. end
496.
497. #==============================================================================
498. # Scene_Battle
499. #==============================================================================
500.
501. class Scene_Battle
502.
503.
504. alias make_skill_action_result_aas_later make_skill_action_result
505. def make_skill_action_result
506. make_skill_action_result_aas_later
507. @analyze_window = Window_Analyze.new if ANALYZE_IDS.include?(@skill.id)
508. end
509.
510. alias update_phase4_step5_aas_later update_phase4_step5
511. def update_phase4_step5
512. update_phase4_step5_aas_later
513. if @analyze_window != nil
514. Graphics.freeze
515. @analyze_window.visible = true
516. Graphics.transition(10)
517. loop do
518. Graphics.update
519. Input.update
520. @analyze_window.update
521. @spriteset.update
522. $game_screen.update
523. if Input.trigger?(Input::A) || Input.trigger?(Input::C)
524. $game_system.se_play($data_system.cursor_se)
525. Graphics.freeze
526. case @analyze_window.mode
527. when 0 then @analyze_window.back_opacity = 128
528. when 1 then @analyze_window.opacity = 0
529. when 2 then @analyze_window.opacity = @analyze_window.back_opacity = 255
530. end
531. $game_system.analyze_mode = ($game_system.analyze_mode+1) % 3
532. @analyze_window.mode = $game_system.analyze_mode
533. Graphics.transition(5)
534. end
535. break if Input.trigger?(Input::B)
536. end
537. Graphics.freeze
538. $game_system.se_play($data_system.cancel_se)
539. @analyze_window.dispose
540. @analyze_window = nil
541. Graphics.transition(10)
542. end
543. end
544.
545. end
546.

Conversion: <XP> to <VX>
Looks like a great scanning system, very simple and easy to use. I would like to be able to use it in my game, i just need it converted to VX please!
Credit will be giving to who ever translates this and of course the original scripter!
 

oboys

Member

Hi, I'm not very familiar with frameworks other than XP but it seems to me that most scripts do not require that many changes to be made compatible with another framework. I would like to stress that, when reasonably possible, one does not desire to convert a script but to extend its compatibility. Extending scripts in this manner be achieved by setting a RMXP or RMVX flag and simply branching whenever necessary. Introducing auxiliary variables such as TILE_PIXEL_WIDTH, NUM_VISIBLE_TILE_COLS, and SCREEN_WIDTH can further simplify this process. Is my understanding of this correct or would someone argue that most scripts written for one framework can not be made compatible without rewriting most of the lines? Is there a compatibility script that simplifies this process and if not, might I request that the highly esteemed SDK team puts together a light-weight version of a thing? (the heavy-weight version being the SDK itself)
 
Y'know what, that doesn't sound like a bad idea at all oboys, making an 'SDK' if you call it that converts XP <=> VX scripts, I'm surprised nobody has tried it before (not counting the XP with VX capabilities project where somebody brought all the VX coding into XP.)

If I find time I might actually start a project for something like this, I'd have to put all my main stuff on major hold though. Although 80% of VX coding is just a repeat of the XP coding there are a few key differences. Doing things, like making sure $DEBUG is on if $TEST is on and visa versa, would be the easiest conversions, other things could be a little harder due to physical/coding difference, but I'm sure alot of that stuff can be overcomed.

Theres alot of VX methods I brought to XP that I wrote for the XP's MACL and in my CMS too, such as Bitmap.clear_rect, Bitmap.fill_gradient_rect, Bitmap.draw_face, Window_Base.<stat>_color<1 or 2>, Window_Base.draw_<stat>_bar, Window_Base.draw_face, etc... I don't know if they're all exactly like VX but most of them could be used for an XP <=> VX converter.
 

Thank you for viewing

HBGames is a leading amateur video game development forum and Discord server open to all ability levels. Feel free to have a nosey around!

Discord

Join our growing and active Discord server to discuss all aspects of game making in a relaxed environment. Join Us

Content

  • Our Games
  • Games in Development
  • Emoji by Twemoji.
    Top