Show posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.

Topics - shdwlink1993

1
Chat / Stupid things heard in school
September 16, 2009, 11:24:17 pm
Basically, what are some of the stupidest things you've heard someone say in school. I'm sure some of you guys have heard plenty of random stuff that made you question the sanity of the coming generation, and I'm sure just about everyone here will enjoy hearing it. So, for the benefit of your fellow forum members, feel free to share! :haha:

I'd share myself, but I either haven't heard anything recently or have gone brain dead from the mental damage. I'm hoping for the former, but I'm going to start paying more careful attention just in case it's the latter (which would certainly make school more interesting).

(Incidentally, I'm not sure if this topic would be better in spam or chat, so if a g-mod has to fiddle around, sorry about that)
2
RMVX Script Database / [VX] Database Limit Breaker
August 24, 2009, 11:10:20 pm
Database Limit Breaker
Authors: shdwlink1993
Version: 1.0
Type: Limit Breaker
Key Term: Game Utility



Introduction

Have you ever wanted more that 999 of something? Maybe Weapons, or Skills. Or perhaps you just wanted a few more flashy animations? Well, The Database Limit Breaker will break said limits, allowing you to increase the potential of your game.


Features


  • Breaks Database limits for everything except elements and maps, allowing you to have as many as you want.



Screenshots




Demo

The Script is plug-&-play.


Script

Spoiler: ShowHide

#==============================================================================
# Database Limit Breaker VX
# Author: Shdwlink1993
# Version: 1.0
# Type: Limit Breaker
#:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=
# DLBVX Date 1.0b: 8/24/2009
#:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=
#
# #  This work is protected by the following license:
# #----------------------------------------------------------------------------
# # 
# #  Creative Commons - Attribution-NonCommercial-ShareAlike 3.0 Unported
# #  ( http://creativecommons.org/licenses/by-nc-sa/3.0/ )
# # 
# #  You are free:
# # 
# #  to Share - to copy, distribute and transmit the work
# #  to Remix - to adapt the work
# # 
# #  Under the following conditions:
# # 
# #  Attribution. You must attribute the work in the manner specified by the
# #  author or licensor (but not in any way that suggests that they endorse you
# #  or your use of the work).
# # 
# #  Noncommercial. You may not use this work for commercial purposes.
# # 
# #  Share alike. If you alter, transform, or build upon this work, you may
# #  distribute the resulting work only under the same or similar license to
# #  this one.
# # 
# #  - For any reuse or distribution, you must make clear to others the license
# #    terms of this work. The best way to do this is with a link to this web
# #    page.
# # 
# #  - Any of the above conditions can be waived if you get permission from the
# #    copyright holder.
# # 
# #  - Nothing in this license impairs or restricts the author's moral rights.
# # 
# #----------------------------------------------------------------------------
# #
# # Note that if you share this file, even after editing it, you must still
# # give proper credit to shdwlink1993.
#
#:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=
#
#                                    ~= Function =~
#
# This script is designed to break the database limits of 999 for anything
# (except elements and maps).
#
# Before running, make sure that the project is not open in RPG Maker VX! This
# is important because otherwise it will not read the new data!
#
#:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=
#
#                               ~= Version History =~
#
# Version 1.0b ---------------------------------------------------- [8/24/2009]
#
#:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=
#
#                                 ~= Customization =~
#
# For whatever you want changed, simply change the number after it to the number
# you want avaliable (you'll understand when you see it).
#
# If you do NOT want to change it, then leave the number at 0.
#
#:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=
#
#                               ~= Compatability =~
#
# - No Known Issues.
#
#:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=
#
#                             ~= Special Thanks =~
#
# - Blizzard, because this entire script is based on a five-line snippet he
# provided.
#
#:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=

Actors = 0
Animations = 0
Armors = 0
Classes = 0
CommonEvents = 0
Enemies = 0
Items = 0
Skills = 0
States = 0
Troops = 0
Weapons = 0

def ops(num, filename, st)
  return if num == 0
  data = load_data(filename)
  num = num-data.size
  struct = eval(st)
  if num > 1
    num.times { data.push(struct) }
  else
    (-num).times { data.pop }
  end
  File.open(filename, 'wb') {|f| Marshal.dump(data, f) }
end

begin
  ops(Actors, 'Data/Actors.rvdata', 'RPG::Actor.new')
  ops(Animations, 'Data/Animations.rvdata', 'RPG::Animation.new')
  ops(Armors, 'Data/Armors.rvdata', 'RPG::Armor.new')
  ops(Classes, 'Data/Classes.rvdata', 'RPG::Class.new')
  ops(CommonEvents, 'Data/CommonEvents.rvdata', 'RPG::CommonEvent.new')
  ops(Enemies, 'Data/Enemies.rvdata', 'RPG::Enemy.new')
  ops(Items, 'Data/Items.rvdata', 'RPG::Item.new')
  ops(Skills, 'Data/Skills.rvdata', 'RPG::Skill.new')
  ops(States, 'Data/States.rvdata', 'RPG::State.new')
  ops(Troops, 'Data/Troops.rvdata', 'RPG::Troop.new')
  ops(Weapons, 'Data/Weapons.rvdata', 'RPG::Weapon.new')
  exit
end



Instructions

Change the number of what you want more of to said number. If you want 1712 Actors, then change Actors to 1712. If you want less, then change it to that number. If you do not want the data changed, then change the number to 0.

NOTE: If you are going to do this, then please make sure that whatever bit of data you want altered is at 999 already. (If you need more Animations, then make sure you already have 999). Otherwise it will take a long time to work.


Compatibility

No Compatability Issues.


Credits and Thanks


  • Thanks to Blizzard, because this script is based on a five-line snippet he provided.
3
RMXP Script Database / [XP] Database Limit Breaker
August 24, 2009, 11:09:36 pm
Database Limit Breaker
Authors: shdwlink1993
Version: 1.0
Type: Limit Breaker
Key Term: Game Utility



Introduction

Have you ever wanted more that 999 of something? Maybe Weapons, or Skills. Or perhaps you just wanted a few more flashy animations? Well, The Database Limit Breaker will break said limits, allowing you to increase the potential of your game.


Features


  • Breaks Database limits for everything except elements and maps, allowing you to have as many as you want.



Screenshots




Demo

The Script is plug-&-play.


Script

Spoiler: ShowHide

#==============================================================================
# Database Limit Breaker XP
# Author: Shdwlink1993
# Version: 1.0
# Type: Limit Breaker
#:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=
# DLBXP Date 1.0b: 8/24/2009
#:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=
#
# #  This work is protected by the following license:
# #----------------------------------------------------------------------------
# # 
# #  Creative Commons - Attribution-NonCommercial-ShareAlike 3.0 Unported
# #  ( http://creativecommons.org/licenses/by-nc-sa/3.0/ )
# # 
# #  You are free:
# # 
# #  to Share - to copy, distribute and transmit the work
# #  to Remix - to adapt the work
# # 
# #  Under the following conditions:
# # 
# #  Attribution. You must attribute the work in the manner specified by the
# #  author or licensor (but not in any way that suggests that they endorse you
# #  or your use of the work).
# # 
# #  Noncommercial. You may not use this work for commercial purposes.
# # 
# #  Share alike. If you alter, transform, or build upon this work, you may
# #  distribute the resulting work only under the same or similar license to
# #  this one.
# # 
# #  - For any reuse or distribution, you must make clear to others the license
# #    terms of this work. The best way to do this is with a link to this web
# #    page.
# # 
# #  - Any of the above conditions can be waived if you get permission from the
# #    copyright holder.
# # 
# #  - Nothing in this license impairs or restricts the author's moral rights.
# # 
# #----------------------------------------------------------------------------
# #
# # Note that if you share this file, even after editing it, you must still
# # give proper credit to shdwlink1993.
#
#:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=
#
#                                    ~= Function =~
#
# This script is designed to break the database limits of 999 for anything
# (except elements and maps).
#
# Before running, make sure that the project is not open in RPG Maker XP! This
# is important because otherwise it will not read the new data!
#
#:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=
#
#                               ~= Version History =~
#
# Version 1.0b ---------------------------------------------------- [8/24/2009]
#
#:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=
#
#                                 ~= Customization =~
#
# For whatever you want changed, simply change the number after it to the number
# you want avaliable (you'll understand when you see it).
#
# If you do NOT want to change it, then leave the number at 0.
#
#:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=
#
#                               ~= Compatability =~
#
# - Will not work with Blizzard's Creation System.
#
#:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=
#
#                             ~= Special Thanks =~
#
# - Blizzard, because this entire script is based on a five-line snippet he
# provided.
#
#:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=

Actors = 0
Animations = 0
Armors = 0
Classes = 0
CommonEvents = 0
Enemies = 0
Items = 0
Skills = 0
States = 0
Tilesets = 0
Troops = 0
Weapons = 0

def ops(num, filename, st)
  return if num == 0
  data = load_data(filename)
  num = num-data.size
  struct = eval(st)
  if num > 1
    num.times { data.push(struct) }
  else
    (-num).times { data.pop }
  end
  File.open(filename, 'wb') {|f| Marshal.dump(data, f) }
end

begin
  ops(Actors, 'Data/Actors.rxdata', 'RPG::Actor.new')
  ops(Animations, 'Data/Animations.rxdata', 'RPG::Animation.new')
  ops(Armors, 'Data/Armors.rxdata', 'RPG::Armor.new')
  ops(Classes, 'Data/Classes.rxdata', 'RPG::Class.new')
  ops(CommonEvents, 'Data/CommonEvents.rxdata', 'RPG::CommonEvent.new')
  ops(Enemies, 'Data/Enemies.rxdata', 'RPG::Enemy.new')
  ops(Items, 'Data/Items.rxdata', 'RPG::Item.new')
  ops(Skills, 'Data/Skills.rxdata', 'RPG::Skill.new')
  ops(States, 'Data/States.rxdata', 'RPG::State.new')
  ops(Tilesets, 'Data/Tilesets.rxdata', 'RPG::Tileset.new')
  ops(Troops, 'Data/Troops.rxdata', 'RPG::Troop.new')
  ops(Weapons, 'Data/Weapons.rxdata', 'RPG::Weapon.new')
  exit
end



Instructions

Change the number of what you want more of to said number. If you want 1712 Actors, then change Actors to 1712. If you want less, then change it to that number. If you do not want the data changed, then change the number to 0.

NOTE: If you are going to do this, then please make sure that whatever bit of data you want altered is at 999 already. (If you need more Animations, then make sure you already have 999). Otherwise, it may crash.


Compatibility

Will NOT work with Blizzard's Creation System.


Credits and Thanks


  • Thanks to Blizzard, because this script is based on a five-line snippet he provided.
4
Unless I'm very mistaken, aliasing a definition in a module isn't quite as easy as the same in a class. Can anyone tell me what you need to do to alias in a module?

Thanks in advance
5
Welcome! / Why I've been gone
July 31, 2009, 12:48:30 am
Sorry for being gone for so long (I'm still not 100% back yet). My computer is now officially dead. After it's various and sundry crashes (I believe that there was insufficient ventilation in the computer), something has gone out in the Motherboard (I think). I will be getting a new one after a friend gets a new one and gives his daughter his old one and gives her old computer to me. So yes, I'll be back soon. Just figured you'd like to know why. Also, I'd like to mention that one casualty was my old Hard Drive, meaning that I have none of my old files anymore (But I found a disk that has Blizz's music, so that's not gone. xD)

Be back soon.
6
Resource Requests / 8-Bit Tileset Request
July 16, 2009, 07:58:14 am
I have a rather strange sounding request: I need several different XP Tilesets made in an 8-Bit style (for example, Final Fantasy 1, 2, and 3 for the NES. Or Fire Emblem for the NES. Or even Dragon Quests 1, 2, 3, or 4 for the NES. any RPG from the NES).  I normally would just use Spriters Resource and VG Maps for this kind of thing, but unfortunately all those games operate off of 16x16 tiles, not 32x32 like XP, and since I can't resize them without an overly pixelated effect, I decided to file this request. And now that I've wasted your time reading this paragraph, maybe I should elaborate. xD

I need tilesets similar to these in an 8-bit style (obviously, not all at the same time):

  • World Map

  • Town Outside

  • House Inside

  • Castle Inside

  • Fire Cave

  • Ice Cave

  • Cavern

  • Water Cave

  • On The Clouds



If any clarification is needed, please ask. If someone can help me, that will be great. If you want to make them all in one big tileset or on different ones, it's OK with me. I'm not picky. Thanks in advance.
7
Entertainment / Nanaca Crash
July 01, 2009, 12:27:43 am
A beauty of a game, Nanaca Crash is a hillariously entertaining time waster of a game.

What happens, you may ask? Well, you hit a man with a bicycle. And then you get to see how far you can make him fly into the air. Hitting the people standing on the ground will result in various effects. Also, there are special moves that can be activated.

Crashing into innocent bystanders has never been funner! :D
8
Entertainment / BEST GAME EVAR!
April 08, 2009, 08:38:38 pm


If you've never heard of this game, then I wonder why you still have a reason to live! Progress Quest is the best game you'll ever find on the internet! Created by the geniuses at the Progress Quest website, Progress Quest is just about the best game you'll ever find! It's a form of the standard MMORPG genre that truly is more inventive than the rest. AND it has the most advanced engine for your gaming experience, superior to it's brothers and sisters in carrying out mundane tasks with ruthless efficiency!

This game even has a crap-load of features to make it far better than other RPG-esque games out there!

  • Select from a stellar cast of races, including a Skraeling, a Half Orc, and even a Panda Man

  • Choose from an epic list of classes, like an Un-Paladin, Voodoo Princess, or a Tickle-Mimic

  • Uses an intuitive Stats-Generation System with a unique "Unroll" feature, that enables you to undo your previous roll if you're particularly hasty.

  • Uses a wide selection of items, weapons, and equipment! I've always wanted to wield a Hackbam to execute a Boy Scout!



It recently became more used on Ubuntu computers than NetHack, so what are you waiting for? Play this game*.

*Warning: The usage of the word "play" does not denote that you will be able to perform any game-relavant actions after your character has been selected.
9
I've been working for the last while on a new module-based Default-Styled Battle System for RMXP. And it was going pretty well. I added in a component for Desperation Attacks from FFVI, another one for the various Overdrive modes from FFX, and I was working on the layout for the actual Actors.

Now, I've seen the scripts to make your party be able to hold as many people as you need in them. And all of them have the same problem: The Battle Scene. The best thing you can do is squish them all up and hope for the best. I went ahead with a different idea: Having the Battle Status Window show only one person at a time (and have it only take up 1/4 the space), and then switch the focus when needed.

And then the problems really picked up.

I now am completely stumped. The game will eventually crash with this plugged in, and I still cannot figure out what the blazes the game is doing to get in this state. I'd appreciate it if anyone could take a look at this and show me where exactly I managed to go wrong. The main problem I'm having with it is that it crashes because the Battle Status window focuses on something that doesn't exist. That is, I think, because of the id numbers being thrown out in Scene_Battle during the update of phase 4, steps 3, 4, 5, and 6 (if it gets there with skills that target more than one person, it loops the second one indefinitely).

Any help would be greatly appreciated.

Problematic Script Component: ShowHide
class Sprite_Battler
 
  alias trsup update
  def update
    trsup
    if @battler.is_a?(Game_Actor)
      self.x = 80
      self.y = 464
      self.z = 0
    end
  end
 
end

class Spriteset_Battle
 
  attr_reader   :viewport1
  attr_reader   :viewport2
  attr_accessor :actor_id
 
  def initialize
    @viewport1 = Viewport.new(0, 0, 640, 320)
    @viewport2 = Viewport.new(0, 0, 640, 480)
    @viewport3 = Viewport.new(0, 0, 640, 480)
    @viewport4 = Viewport.new(0, 0, 640, 480)
    @viewport2.z = 101
    @viewport3.z = 200
    @viewport4.z = 5000
    @battleback_sprite = Sprite.new(@viewport1)
    @enemy_sprites = []
    $game_troop.enemies.reverse.each {|enemy|
      @enemy_sprites.push(Sprite_Battler.new(@viewport1, enemy))
    }
    @actor_sprites = []
    4.times {@actor_sprites.push(Sprite_Battler.new(@viewport2))}
    @actor_id = 0
    @vactor = @actor_sprites[0]
    @weather = RPG::Weather.new(@viewport1)
    @picture_sprites = []
    (51..100).each {|i|
      @picture_sprites.push(Sprite_Picture.new(@viewport3,
        $game_screen.pictures[i]))
    }
    @timer_sprite = Sprite_Timer.new
    update
  end
 
  def dispose
    @battleback_sprite.bitmap.dispose if @battleback_sprite.bitmap != nil
    @battleback_sprite.dispose
    (@enemy_sprites + @actor_sprites).each {|sprite| sprite.dispose}
    @weather.dispose
    @picture_sprites.each {|sprite| sprite.dispose}
    @timer_sprite.dispose
    @viewport1.dispose
    @viewport2.dispose
    @viewport3.dispose
    @viewport4.dispose
  end
 
  def effect?
    return (@enemy_sprites + @actor_sprites).any? {|sprite| sprite.effect?}
  end
 
  def update
    @vactor.battler = $game_party.actors[@actor_id]
    if @battleback_name != $game_temp.battleback_name
      @battleback_name = $game_temp.battleback_name
      @battleback_sprite.bitmap.dispose if @battleback_sprite.bitmap != nil
      @battleback_sprite.bitmap = RPG::Cache.battleback(@battleback_name)
      @battleback_sprite.src_rect.set(0, 0, 640, 320)
    end
    (@enemy_sprites + @actor_sprites).each {|sprite| sprite.update}
    @weather.type = $game_screen.weather_type
    @weather.max = $game_screen.weather_max
    @weather.update
    @picture_sprites.each {|sprite| sprite.update}
    @timer_sprite.update
    @viewport1.tone = $game_screen.tone
    @viewport1.ox = $game_screen.shake
    @viewport4.color = $game_screen.flash_color
    @viewport1.update
    @viewport2.update
    @viewport4.update
  end
 
end

class Window_BattleStatus < Window_Base
 
  attr_accessor :actor_id
 
  def initialize
    super(0, 320, 160, 160)
    self.contents = Bitmap.new(width - 32, height - 32)
    @level_up = false
    @actor_id = 0
    refresh
  end
 
  def refresh
    self.contents.clear
    actor = $game_party.actors[@actor_id]
    self.contents.font.size = 22
    draw_actor_name(actor, actor.name.size/2+40, 0)
    draw_actor_hp(actor, 4, 32, 120)
    draw_actor_sp(actor, 4, 48, 120)
    if @level_up
      self.contents.font.color = normal_color
      self.contents.draw_text(4, 72, 120, 32, 'LEVEL UP!')
    else
      draw_actor_state(actor, 4, 72)
    end
  end
 
  def need_refresh
    return false
  end
 
  def update
    super
    if $game_temp.battle_main_phase
      self.contents_opacity -= 4 if self.contents_opacity > 191
    else
      self.contents_opacity += 4 if self.contents_opacity < 255
    end
  end
 
end

class Arrow_Actor < Arrow_Base
 
  def actor
    return $game_party.actors[@index]
  end
 
  def update
    super
    if Input.repeat?(Input::RIGHT)
      $game_system.se_play($data_system.cursor_se)
      @index = (@index + 1) % $game_party.actors.size
      $scene.change_actor(self.actor)
    elsif Input.repeat?(Input::LEFT)
      $game_system.se_play($data_system.cursor_se)
      @index = (@index + $game_party.actors.size - 1) % $game_party.actors.size
      $scene.change_actor(self.actor)
    end
    if self.actor != nil
      self.x = self.actor.screen_x
      self.y = self.actor.screen_y
    end
  end
 
  def update_help
    @help_window.set_actor(self.actor)
  end
 
end

class Scene_Battle
 
  attr_reader :actor_id
 
  alias as2_p3sca phase3_setup_command_window
  def phase3_setup_command_window
    as2_p3sca
    @actor_command_window.x = 0
    change_actor(@actor_index)
  end
 
  alias as2_up4s3 update_phase4_step3
  def update_phase4_step3
    if @active_battler.is_a?(Game_Actor) &&
       @status_window.actor_id-1 != @active_battler.id
      change_actor(@active_battler.id-1)
    end
    as2_up4s3
  end
 
  def update_phase4_step4
    if @target_battler.is_a?(Game_Actor) &&
       @status_window.actor_id-1 != @target_battler.id
      change_actor(@target_battler.id-1)
    end
    if @target_battler == nil
      @target_battler = @target_battlers[0]
      @battler_rotations = 0
    end
    @target_battler.animation_id = @animation2_id
    @target_battler.animation_hit = (@target_battler.damage != 'Miss')
    @wait_count = 8
    @phase4_step = 5
  end
 
  def update_phase4_step5
    @help_window.visible = false
    @status_window.refresh
    @target_battler.damage_pop = true if @target_battler.damage != nil
    @phase4_step = 6
  end
 
  def update_phase4_step6
    if @target_battlers[@battler_rotations+1] != nil
      @target_battler = @target_battlers[@battler_rotations+1]
      @phase4_step = 4
    else
      $game_temp.forcing_battler = nil
      if @common_event_id > 0
        common_event = $data_common_events[@common_event_id]
        $game_system.battle_interpreter.setup(common_event.list, 0)
      end
      @target_battler = @battler_rotations = nil
      @phase4_step = 1
    end
  end
 
  def change_actor(id)
    @status_window.actor_id = @spriteset.actor_id = id
    @status_window.refresh
  end
 
end
10
Video Games / Eversion
February 06, 2009, 08:59:57 am
Eversion is the cutest little platforming game you've ever seen! :D It's great for the whole family! :D It's not nearly as challenging as I Wanna be the Guy or as long as Cave Story! :) It's just a cute little game about saving the princess and collecting gems. :haha:

See? Cute game!: ShowHide


It's got seven levels, and it's bouncy graphics will leave you happy inside for a long time to come! :D You know it's a great gaming experience because it's even made with the SMILE engine! 8) How much better can you get at being happy than SMILE?!?!? :???:

Just check out the game here: http://zarat.us/tra/offline-games/eversion.html.

PS: Ignore the message at the bottom of the page that the game is "NOT INDICATED FOR CHILDREN OR THOSE OF A NERVOUS DISPOSITION." :<_<: The site likes playing jokes on people. :<_<: Because this game is filled with love and flowers! :D
11
RMXP Script Database / [XP] Teleportation
February 01, 2009, 04:12:53 pm
Teleportation
Authors: shdwlink1993
Version: 1.1
Type: Game Addon
Key Term: Movement Add-on



Introduction

You guys remember RPG Maker 2003, right? I didn't think so. :^_^': There was an event command in RM2k3 called "Manage Teleport Locations" (or something to that effect). Using this allowed you to add and remove locations from a list. A skill called Teleport allowed you to go to any of these locations. This script is my conversion of my variation of this functionality.



Features


  • Easy control of teleportable locations.
  • Automatic duplicate control.
  • Backup and restore the list of locations.
  • Scene made that allows for easy player selection.
  • Temporarily disable and enable different locations.



Screenshots

None, really. The Teleport Menu isn't really shiny enough to need it's own screen.


Demo

See here for the VX Demo.


Script

Spoiler: ShowHide

#==============================================================================
# Teleportation
# Author: Shdwlink1993
# Version: 1.1
# Type: Game Addon
#:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=
# Teleport Date 1.0: 2/1/2009
# Teleport Date 1.1: 2/5/2009
#:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=
#
# #  This work is protected by the following license:
# #----------------------------------------------------------------------------
# # 
# #  Creative Commons - Attribution-NonCommercial-ShareAlike 3.0 Unported
# #  ( http://creativecommons.org/licenses/by-nc-sa/3.0/ )
# # 
# #  You are free:
# # 
# #  to Share - to copy, distribute and transmit the work
# #  to Remix - to adapt the work
# # 
# #  Under the following conditions:
# # 
# #  Attribution. You must attribute the work in the manner specified by the
# #  author or licensor (but not in any way that suggests that they endorse you
# #  or your use of the work).
# # 
# #  Noncommercial. You may not use this work for commercial purposes.
# # 
# #  Share alike. If you alter, transform, or build upon this work, you may
# #  distribute the resulting work only under the same or similar license to
# #  this one.
# # 
# #  - For any reuse or distribution, you must make clear to others the license
# #    terms of this work. The best way to do this is with a link to this web
# #    page.
# # 
# #  - Any of the above conditions can be waived if you get permission from the
# #    copyright holder.
# # 
# #  - Nothing in this license impairs or restricts the author's moral rights.
# # 
# #----------------------------------------------------------------------------
# #
# # Note that if you share this file, even after editing it, you must still
# # give proper credit to shdwlink1993.
#
#:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=
#
#                                ~= Functions =~
#
# This script allows you to teleport to predefined locations, not unlike RPG
# Maker 2003's similar function.
#
# $game_player.add_location(name, map, x, y, face, description)
#   Adds a location to the list of teleportable locations. You cannot add a
# location if it's name is already in use (limit duplicates). Face refers to
# the direction the player will be facing. If you don't know, look at a number
# pad. 2 is down, 4 left, etc.
#
# $game_player.add_here(name, description)
#   Adds a location to the list where you are with the designated name and
# description.
#
# $game_player.remove_location(name)
#   Removes a location with the name from the list of teleportable locations.
#
# $game_player.disable_location(name)
#   Disallows you to teleport to the location with the name. This should be
#  used only in instances where the teleport is to be temporarily disabled. If
#  it should be permanently disabled, use the remove_location command to free
#  space.
#
# $game_player.enable_location(name)
#   Allows you to teleport to the disabled location with the name.
#
# $game_player.toggle_location(name)
#   Changes if the location with the name can be teleported to or not.
#
# $game_player.backup_locations
#   Makes a backup of all known locations and deletes them.
#
# $game_player.restore_locations
#   Restores the locations from the backup. All locations learned in the backup
#  are added to the list.
#
#:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=
#
#                               ~= Version History =~
#
# Version 1.0 ------------------------------------------------------ [2/1/2009]
# Version 1.1 ------------------------------------------------------ [2/5/2009]
#  - Added in ability to disable individual teleports.
#
#:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=
#
#                               ~= Compatability =~
#
# - Should work perfectly with just about anything.
#
#:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=

class Game_System
 
  attr_accessor :teleport_disabled
 
  alias teleinit initialize
  def initialize
    teleinit
    @teleport_disabled = false
  end
 
end

class Game_Player
 
  attr_reader :known_locs
 
  alias teleinit initialize
  def initialize
    teleinit
    @known_locs = []
    @backup_locs = []
  end
 
  def add_here(name, desc = '')
    return add_location(name, $game_map.map_id, @x, @y, @direction, desc)
  end
 
  def add_location(name, map, x, y, face, desc = '')
    unless @known_locs == []
      @known_locs.each_index {|i| return if name == @known_locs[i][0] }
    end
    @known_locs.push([name, map, x, y, face, desc, true])
  end
 
  def remove_location(name)
    @known_locs.each_index {|i|
      if name == @known_locs[i][0]
        @known_locs.delete(@known_locs[i])
        return
      end}
  end
 
  def disable_location(name)
    @known_locs.each_index {|i|
      if name == @known_locs[i][0]
        @known_locs[i][6] = false
        return
      end}
  end
 
  def enable_location(name)
    @known_locs.each_index {|i|
      if name == @known_locs[i][0]
        @known_locs[i][6] = true
        return
      end}
  end
 
  def toggle_location(name)
    @known_locs.each_index {|i|
      if name == @known_locs[i][0]
        @known_locs[i][6] = !@known_locs[i][6]
        return
      end}
  end
   
  def backup_locations
    @backup_locs = @known_locs
    @known_locs = []
  end
 
  def restore_locations
    @known_locs & @backup_locs
    @backup_locs = []
  end
 
end

class Window_Teleport < Window_Selectable
  #--------------------------------------------------------------------------
  # * Object Initialization
  #--------------------------------------------------------------------------
  def initialize
    super(0, 64, 640, 416)
    @column_max = 2
    refresh
    self.index = 0
  end
  #--------------------------------------------------------------------------
  # * Get Item
  #--------------------------------------------------------------------------
  def item
    return @data[self.index]
  end
  #--------------------------------------------------------------------------
  # * Refresh
  #--------------------------------------------------------------------------
  def refresh
    if self.contents != nil
      self.contents.dispose
      self.contents = nil
    end
    @data = []
    $game_player.known_locs.each {|t| @data.push(t) }
    # If item count is not 0, make a bit map and draw all items
    @item_max = @data.size
    if @item_max > 0
      self.contents = Bitmap.new(width - 32, row_max * 32)
      @item_max.times {|i| draw_item(i) }
    end
  end
  #--------------------------------------------------------------------------
  # * Draw Item
  #     index : item number
  #--------------------------------------------------------------------------
  def draw_item(index)
    item = @data[index]
    if item[6]
      self.contents.font.color = normal_color
    else
      self.contents.font.color = disabled_color
    end
    x = 4 + index % 2 * (288 + 32)
    y = index / 2 * 32
    rect = Rect.new(x, y, self.width / @column_max - 32, 32)
    self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))
    self.contents.draw_text(x + 4, y, 212, 32, item[0], 0)
  end
  #--------------------------------------------------------------------------
  # * Help Text Update
  #--------------------------------------------------------------------------
  def update_help
    @help_window.set_text(self.item == nil ? '' : self.item[5])
  end
end

class Scene_Teleport
  #--------------------------------------------------------------------------
  # * Main Processing
  #--------------------------------------------------------------------------
  def main
    # Make help window, item window
    @help_window = Window_Help.new
    @teleport_window = Window_Teleport.new
    # Associate help window
    @teleport_window.help_window = @help_window
    # Execute transition
    Graphics.transition
    # Main loop
    loop {
      # Update game screen
      Graphics.update
      # Update input information
      Input.update
      # Frame update
      update
      # Abort loop if screen is changed
      break if $scene != self
    }
    # Prepare for transition
    Graphics.freeze
    # Dispose of windows
    @help_window.dispose
    @teleport_window.dispose
  end
  #--------------------------------------------------------------------------
  # * Frame Update
  #--------------------------------------------------------------------------
  def update
    # Update windows
    @help_window.update
    @teleport_window.update
    update_tele
  end
  #--------------------------------------------------------------------------
  # * Frame Update (when item window is active)
  #--------------------------------------------------------------------------
  def update_tele
    # If B button was pressed
    if Input.trigger?(Input::B)
      # Play cancel SE
      $game_system.se_play($data_system.cancel_se)
      # Switch to menu screen
      $scene = Scene_Menu.new(0)
      return
    end
    # If C button was pressed
    if Input.trigger?(Input::C)
      # Get currently selected data on the item window
      @item = @teleport_window.item
      # If you can't teleport, then you don't!
      unless @item[6]
        $game_system.se_play($data_system.buzzer_se)
        return
      end
      # Play decision SE
      $game_system.se_play($data_system.decision_se)
      $game_temp.player_transferring = true
      # Set player move destination
      $game_temp.player_new_map_id = @item[1]
      $game_temp.player_new_x = @item[2]
      $game_temp.player_new_y = @item[3]
      $game_temp.player_new_direction = @item[4]
      $scene = Scene_Map.new
      return
    end
  end
 
end



Instructions

Read the script for this.


Compatibility

Should be compatible with just about everything.


Credits and Thanks


  • Shdwlink1993 for making the script.



Author's Notes

One little thing that might be new to some of you is that you need to change the scene to view the Teleport Menu. To do this, use the script( call) '$scene = Scene_Teleport.new'.
12
RMVX Script Database / [VX] Teleportation
January 31, 2009, 10:01:24 am
Teleportation
Authors: shdwlink1993
Version: 1.1
Type: Game Addon
Key Term: Movement Add-on



Introduction

You guys remember RPG Maker 2003, right? I didn't think so. :^_^': There was an event command in RM2k3 called "Manage Teleport Locations" (or something to that effect). Using this allowed you to add and remove locations from a list. A skill called Teleport allowed you to go to any of these locations. This script is my variation of this functionality.



Features


  • Easy control of teleportable locations.
  • Automatic duplicate control.
  • Backup and restore the list of locations.
  • Scene made that allows for easy player selection.
  • Temporarily disable and enable different locations.



Screenshots

None, really. The Teleport Menu isn't really shiny enough to need it's own screen.


Demo

See here.


Script

Spoiler: ShowHide

#==============================================================================
# Teleportation
# Author: Shdwlink1993
# Version: 1.1
# Type: Game Addon
#:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=
# Teleport Date 1.0b: 1/31/2009
# Teleport Date 1.01b: 1/31/2009
# Teleport Date 1.1: 2/5/2009
#:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=
#
# #  This work is protected by the following license:
# #----------------------------------------------------------------------------
# # 
# #  Creative Commons - Attribution-NonCommercial-ShareAlike 3.0 Unported
# #  ( http://creativecommons.org/licenses/by-nc-sa/3.0/ )
# # 
# #  You are free:
# # 
# #  to Share - to copy, distribute and transmit the work
# #  to Remix - to adapt the work
# # 
# #  Under the following conditions:
# # 
# #  Attribution. You must attribute the work in the manner specified by the
# #  author or licensor (but not in any way that suggests that they endorse you
# #  or your use of the work).
# # 
# #  Noncommercial. You may not use this work for commercial purposes.
# # 
# #  Share alike. If you alter, transform, or build upon this work, you may
# #  distribute the resulting work only under the same or similar license to
# #  this one.
# # 
# #  - For any reuse or distribution, you must make clear to others the license
# #    terms of this work. The best way to do this is with a link to this web
# #    page.
# # 
# #  - Any of the above conditions can be waived if you get permission from the
# #    copyright holder.
# # 
# #  - Nothing in this license impairs or restricts the author's moral rights.
# # 
# #----------------------------------------------------------------------------
# #
# # Note that if you share this file, even after editing it, you must still
# # give proper credit to shdwlink1993.
#
#:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=
#
#                                ~= Functions =~
#
# This script allows you to teleport to predefined locations, not unlike RPG
# Maker 2003's similar function.
#
# $game_player.add_location(name, map, x, y, face, description)
#   Adds a location to the list of teleportable locations. You cannot add a
# location if it's name is already in use (limit duplicates). Face refers to
# the direction the player will be facing. If you don't know, look at a number
# pad. 2 is down, 4 left, etc.
#
# $game_player.add_here(name, description)
#   Adds a location to the list where you are with the designated name and
# description.
#
# $game_player.remove_location(name)
#   Removes a location with the name from the list of teleportable locations.
#
# $game_player.disable_location(name)
#   Disallows you to teleport to the location with the name. This should be
#  used only in instances where the teleport is to be temporarily disabled. If
#  it should be permanently disabled, use the remove_location command to free
#  space.
#
# $game_player.enable_location(name)
#   Allows you to teleport to the disabled location with the name.
#
# $game_player.toggle_location(name)
#   Changes if the location with the name can be teleported to or not.
#
# $game_player.backup_locations
#   Makes a backup of all known locations and deletes them.
#
# $game_player.restore_locations
#   Restores the locations from the backup. All locations learned in the backup
#  are added to the list.
#
#:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=
#
#                               ~= Version History =~
#
# Version 1.0b ---------------------------------------------------- [1/31/2009]
# Version 1.01b --------------------------------------------------- [1/31/2009]
#  - Fixed a fatal error in $game_player.remove_location
#  - Added a variable to $game_system.
# Version 1.1 ------------------------------------------------------ [2/5/2009]
#  - Added in ability to disable individual teleports.
#
#:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=
#
#                              ~= Customization =~
#
# The only bit of customization occurs in the Sound module. The script asks for
# you to make a sound effect for the file. Replace name with the name of the
# file (Like 'teleport'), volume with the volume of the file (80 by default),
# and pitch with, you guessed it, the pitch of the file (default to 100).
#
#:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=
#
#                               ~= Compatability =~
#
# - Should work perfectly with just about anything.
#
#:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=

module Sound
 
  def self.play_tele
    RPG::SE.new('Item1', 80, 100).play
  end
 
end

class Game_System
 
  attr_accessor :teleport_disabled
 
  alias teleinit initialize
  def initialize
    teleinit
    @teleport_disabled = false
  end
 
end

class Game_Player
 
  attr_reader :known_locs
 
  alias teleinit initialize
  def initialize
    teleinit
    @known_locs = []
    @backup_locs = []
  end
 
  def add_here(name, desc = '')
    return add_location(name, $game_map.map_id, @x, @y, @direction, desc)
  end
 
  def add_location(name, map, x, y, face, desc = '')
    unless @known_locs == []
      @known_locs.each_index {|i| return if name == @known_locs[i][0] }
    end
    @known_locs.push([name, map, x, y, face, desc, true])
  end
 
  def remove_location(name)
    @known_locs.each_index {|i|
      if name == @known_locs[i][0]
        @known_locs.delete(@known_locs[i])
        return
      end}
  end
 
  def disable_location(name)
    @known_locs.each_index {|i|
      if name == @known_locs[i][0]
        @known_locs[i][6] = false
        return
      end}
  end
 
  def enable_location(name)
    @known_locs.each_index {|i|
      if name == @known_locs[i][0]
        @known_locs[i][6] = true
        return
      end}
  end
 
  def toggle_location(name)
    @known_locs.each_index {|i|
      if name == @known_locs[i][0]
        @known_locs[i][6] = !@known_locs[i][6]
        return
      end}
  end
 
  def backup_locations
    @backup_locs = @known_locs
    @known_locs = []
  end
 
  def restore_locations
    @known_locs & @backup_locs
    @backup_locs = []
  end
 
end

class Window_Teleport < Window_Selectable
 
  def initialize(x, y, width, height)
    super(x, y, width, height)
    @column_max = 2
    self.index = 0
    refresh
  end
 
  def item
    return @data[self.index]
  end
 
  def refresh
    @data = []
    $game_player.known_locs.each {|t| @data.push(t) }
    @item_max = @data.size
    create_contents
    @item_max.times {|i| draw_tele(i) }
  end
 
  def draw_tele(index)
    rect = item_rect(index)
    self.contents.clear_rect(rect)
    item = @data[index]
    if item != nil
      rect.width -= 4
      self.contents.font.color = normal_color
      self.contents.font.color.alpha = item[6] ? 255 : 128
      self.contents.draw_text(rect.x + 2, rect.y, 172, WLH, item[0])
    end
  end
 
  def update_help
    @help_window.set_text(item == nil ? '' : item[5])
  end
 
end

class Scene_Teleport < Scene_Base
 
  def start
    super
    create_menu_background
    @viewport = Viewport.new(0, 0, 544, 416)
    @help_window = Window_Help.new
    @help_window.viewport = @viewport
    @teleport_window = Window_Teleport.new(0, 56, 544, 360)
    @teleport_window.viewport = @viewport
    @teleport_window.help_window = @help_window
  end
 
  def terminate
    super
    dispose_menu_background
    @viewport.dispose
    @help_window.dispose
    @teleport_window.dispose
  end
 
  def return_scene
    $scene = Scene_Menu.new(4)
  end
 
  def update
    super
    update_menu_background
    @help_window.update
    @teleport_window.update
    update_item_selection
  end
 
  def update_item_selection
    if Input.trigger?(Input::B)
      Sound.play_cancel
      return_scene
    elsif Input.trigger?(Input::C)
      @item = @teleport_window.item
      Sound.play_decision
      if @item[6]
        go_tele
      else
        Sound.play_buzzer
        return
      end
    end
  end
 
  def go_tele
    Sound.play_tele
    $game_player.reserve_transfer(@item[1], @item[2], @item[3], @item[4])
    $scene = Scene_Map.new
  end
 
end



Instructions

Read the script for this.


Compatibility

Should be compatible with just about everything.


Credits and Thanks


  • Shdwlink1993 for making the script.



Author's Notes

One little thing that might be new to some of you is that you need to change the scene to view the Teleport Menu. To do this, use the script( call) '$scene = Scene_Teleport.new'.
13
Script Troubleshooting / Question concerning Enemy AI
January 23, 2009, 07:35:03 pm
For my next little scripting project, I decided to delve into that mystical, mysterious, and blindingly horrific area of the standard scripts known as Battle AI. For those of you who genuinely have no idea what the heck I mean, let me enlighten you:

Whenever you enter battle in RPG Maker XP (assuming that you are, of course, using the Default Battle System and not something much better, like Blizz-ABS), your virtual opponent selects the attack they make carefully. It's based on a number of conditions, and they carefully consider the target they choose so as to screw you over the most. Also, Blizzard cannot script anything, the SDK is the best compatibility aid on the planet, and Chaos Project is the worst RMXP game on the planet. :^_^':

In reality, the AI essentially picks the attack to use by looking at a few conditionals, and then randomly selects it based off of action ratings. Then, it picks the target... with less care than what it uses: randomly picking anyone there. All it checks is if it's meant for someone on their side, or yours, and if it's meant for dead people or not. Nothing fancy.

Anyways, something rather interesting has come up while I was looking through these AI functions (Which would be much less infuriating to look through if they didn't have it spread in several different scripts scattered all over the place :<_<: ), and I'm wondering if anyone actually can tell me why this glaringly blatant flaw was made. So, in lieu of any other brilliant ideas, like staring at code, I decided to make a post about it, and see if someone else will be willing to do the staring for me :^_^':.

Basically, in the enemy AI, it checks for each action to see if it's possible based on a number of criteria, said criteria being battle turns, enemy HP condition, party levels, and switches before shoving it into it's list of choices (This can all be found in Game_Enemy.make_action, for all you curious people :P).

Something odd I noticed here, and perhaps you did as well, is that the ability to actually, you know, use the skill (is there enough SP, is the user silenced) isn't actually a condition to being placed in it's list of available options. It is factored in at a later time, of course (Game_Battler.skill_can_use?, and this is after the skill candidate has been finalized, just before the skill is used), but it's rather odd that they didn't want to make certain that a skill wasn't selected, almost used, and then canceled, leaving the player with a free turn that may or may not have been intended to be present.

So, getting to the actual question, does anyone know why that wouldn't have been factored in? The player cannot use any skills that they cannot use, as it's grayed out and non-selectable. You can't waste a turn unless the action couldn't be performed because of something that happened that turn, like dying or silencing or whatever. Why wouldn't the AI get the same benefits?
14
Video Games / I Wanna Be the Guy
January 22, 2009, 08:11:05 pm


I Wanna Be the Guy is a fun, interesting, and exciting platformer good for all ages of the family.Except for the swearing you will make when you lose at it time and again. :haha:

I Wanna Be the Guy is the hardest game you will ever play in your life, bar none. You know something's up when the front page of the website proudly proclaims that it is "nail-rippingly difficult" and "sadistic". In this game, you fill the role of The Wanna Be the Guy (The Kid) in an almost plot-less journey to transition to becoming The Guy. Armed with Very Small Gun and Cape of Hero, you set out on an epic quest to become The Guy!

In order to become The Guy, you must travel to different places and defeat several different bosses, as per your standard platforming extravaganza. The catch is almost immediately apparent: The Kid is very fragile. One brush with anything from a spike to a Tetris block to the moon(?) to even a bit of Delicious Fruit will make him explode in a large amount of that pixelated blood we all know and love (Or is that just me?).

I Wanna be the Guy, commonly abbreviated to IWBTG, is, surprisingly enough, highly addictive. There's just something fun about getting killed by everything from Dracula's Goblet to a Sword to even getting run over by Samus in her Morph Ball. It's not difficult because of dumb level design. It's hard for the right reasons, something a lot of games cannot do these days, sadly.

If you've been yearning for that good 'ol mental anguish you haven't felt since your NES went the way of the Dinosaur, then you might want to give this a try. I Wanna be the Guy is available for purchase at the low price of $0.00, and can be found at the homepage at http://kayin.pyoko.org/iwbtg/. Have fun, and good luck (Cause you'll need it, believe me) :D!
15
My computer has been acting... screwy lately. Let me rephrase that: My computer has been acting like a piece of crap lately.

Basically, it's been crashing more often than... well... FAX and Ulta post in SPAM. :o And it keeps changing it's reason why. It's cited all sorts of problems, from faulty BIOS Drivers to ntfs.sys (And if that were the problem, the computer should have been having difficulties starting at all), as well as audio and sound drivers.

If the random reboots weren't annoying on their own, they are accompanied with programs randomly crashing as well. No reason is given. They just crash, and usually rather violently. I'm at a complete loss for why.

Not even my internet is escaping from the oddities. Google Searches, of all things, have been randomly (not to mention infuriatingly) redirecting me to other pages instead of the result I clicked (they tend to be pages at www.yellow.com, which redirect me to a page with a cow on it(?)). And not only can AVG not get any updates, but any attempts to manually download them via the site are rejected for unknown reasons. I am becoming infuriated...

And, even stranger, AVG's scanning is interrupted by, surprise, a crash when it reaches a certain point (the same point, mind you)! I'm getting really worried for some reason...

So, does anyone know what the heck is going on? Is it some sort of virus? Bad hardware? Bad programs? All of the above?
16
RMVX Script Database / [VX] HoT DoT
January 11, 2009, 11:59:38 pm
HoT DoT
Authors: shdwlink1993
Version: 1.0b
Type: Poison Control
Key Term: Player / Party / Troop Add-on



Introduction

HoT DoT (Apparantly WoW-speak for Healing/Damage over Time), or Poison Control, is a system designed to let you make poison do more than what it always does. In RMXP and RMVX, poison does one thing only. That can be annoying after a while, like having a recharging health stat, or draining your magic.


Features


  • Allows for many kinds of poison.
  • Poisons that can heal you can easily be made.
  • Lets poisons affect other stats besides health.
  • More than one poison affects you at a time.



Screenshots

These would be completely useless.


Demo

The script is pretty plug-and-play, so I don't think this is needed.


Script

Spoiler: ShowHide

#==============================================================================
# HoT DoT
# Author: Shdwlink1993
# Version: 1.0b
# Type: Poison Control
#:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=
# HT Date 1.0b: 1/11/2009
#:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=
#
# #  This work is protected by the following license:
# #----------------------------------------------------------------------------
# # 
# #  Creative Commons - Attribution-NonCommercial-ShareAlike 3.0 Unported
# #  ( http://creativecommons.org/licenses/by-nc-sa/3.0/ )
# # 
# #  You are free:
# # 
# #  to Share - to copy, distribute and transmit the work
# #  to Remix - to adapt the work
# # 
# #  Under the following conditions:
# # 
# #  Attribution. You must attribute the work in the manner specified by the
# #  author or licensor (but not in any way that suggests that they endorse you
# #  or your use of the work).
# # 
# #  Noncommercial. You may not use this work for commercial purposes.
# # 
# #  Share alike. If you alter, transform, or build upon this work, you may
# #  distribute the resulting work only under the same or similar license to
# #  this one.
# # 
# #  - For any reuse or distribution, you must make clear to others the license
# #    terms of this work. The best way to do this is with a link to this web
# #    page.
# # 
# #  - Any of the above conditions can be waived if you get permission from the
# #    copyright holder.
# # 
# #  - Nothing in this license impairs or restricts the author's moral rights.
# # 
# #----------------------------------------------------------------------------
# #
# # Note that if you share this file, even after editing it, you must still
# # give proper credit to shdwlink1993.
#
#:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=
#
#                                ~= Function =~
#
# This script is designed to allow you to expand what poison does to your
# character. Poison now is able to affect HP or MP, and take off a fraction or
# a set amount of HP/MP.
#
#:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=
#
#                               ~= Version History =~
#
# Version 1.0b ---------------------------------------------------- [1/11/2009]
#
#:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=
#
#                              ~= Customization =~
#
# Customization can be found right under where the Poison Database begins.
#
#:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=
#
#                               ~= Compatability =~
#
# - Will not work with other Poison-editing scripts.
#
#:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=

module SL93
 
  def self.hotdot(id)
    case id
    #------------------------------------------------------------------------
    # Poison Database Begins
    #------------------------------------------------------------------------
    #  when STATE_NUMBER then return [TYPE, DAMAGE, VARIANCE, LIMIT_DRAIN]
    #  * STATE_NUMBER is the state you want to be affected by this.
    #  * TYPE refers to the thing sustaining damage.
    #      1 = HP, 2 = MP. If the type is positive, the amount is a literal
    #      number (eg. You lose about 50 HP). If the type is negative, then
    #      the amount is a fraction of the maximum (eg. You lose about 50% of
    #      your HP).
    #  * DAMAGE refers to how much damage is healed/taken.
    #      A Positive amount hurts you and a negative amount heals you.
    #  * VARIANCE refers to how much the damage varies. Positive only.
    #      This depends in part on if the type was positive (~5 HP difference)
    #      or negative (~5% HP difference).
    #  * LIMIT_DRAIN refers to if the poison can leave you with 0 HP/SP.
    #      If true, then it is limited, and stops at 1. If false, then it
    #      isn't.
    #------------------------------------------------------------------------
  when 2 then return [-1, 10, 10, false]  # Standard Poison
    #------------------------------------------------------------------------
    # Poison Database Ends
    #------------------------------------------------------------------------
    end
    return false
  end
 
end

class Game_Battler
 
  def slip_damage?
    return @states.any? {|i| SL93.hotdot(i) != false }
  end
 
  def slip_damage_effect
    ids = []
    for i in @states
      ids.push(i) if SL93.hotdot(i) != false
    end
    for i in ids
      damage = SL93.hotdot(i)[1] if SL93.hotdot(i)[0] > 0
      damage = self.maxhp / SL93.hotdot(i)[1] if SL93.hotdot(i)[0] == -1
      damage = self.maxsp / SL93.hotdot(i)[1] if SL93.hotdot(i)[0] == -2
      if damage.abs > 0 && SL93.hotdot(i)[2] > 0
        amp = [damage.abs - SL93.hotdot(i)[2], 1].max if SL93.hotdot(i)[0] > 0
        amp = [damage.abs * SL93.hotdot(i)[2] / 100, 1].max if SL93.hotdot(i)[0] < 0
        damage += rand(amp+1) + rand(amp+1) - amp
      end
      damage = damage * -1 if SL93.hotdot(i)[0] < 0
      if SL93.hotdot(i)[0] == 1 || SL93.hotdot(i)[0] == -1
        damage = self.hp - 1 if !SL93.hotdot(i)[3] && (0 > self.hp += damage)
        self.hp += damage
      elsif SL93.hotdot(i)[0] == 2 || SL93.hotdot(i)[0] == -2
        damage = self.mp - 1 if !SL93.hotdot(i)[3] && (0 > self.mp += damage)
        self.mp += damage
      end
    end
    return true
  end
 
end

class Game_Party
 
  def on_player_walk
    for actor in members
      if actor.slip_damage?
        actor.slip_damage_effect
        $game_map.screen.start_flash(Color.new(255,0,0,64), 4)
        $game_temp.next_scene = "gameover" if $game_party.all_dead?
      end
    end
  end
 
end



Instructions

Found within the script.


Compatibility


  • Will not work with other Poison-editing scripts.



Credits and Thanks


  • Arxur for the script idea.



Author's Notes

An XP version is available here.
17
RMXP Script Database / [XP] HoT DoT
January 11, 2009, 11:02:09 pm
HoT DoT
Authors: shdwlink1993, KK20
Version: 1.04
Type: Poison Control
Key Term: Player / Party / Troop Add-on



Introduction

HoT DoT (Apparantly WoW-speak for Healing/Damage over Time), or Poison Control, is a system designed to let you make poison do more than what it always does. In RMXP and RMVX, poison does one thing only. That can be annoying after a while, like having a recharging health stat, or draining your magic.


Features


  • Allows for many kinds of poison.
  • Poisons that can heal you can easily be made.
  • Lets poisons affect other stats besides health.
  • More than one poison affects you at a time.



Screenshots

These would be completely useless.


Demo

The script is pretty plug-and-play, so I don't think this is needed.


Script

1.04 by KK20
Spoiler: ShowHide
#==============================================================================
# HoT DoT
# Author: Shdwlink1993
# Version: 1.04
# Type: Poison Control
#
# Editted by KK20
#:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=
# HT Date 1.0b: 1/11/2009
# HT Date 1.01b: 1/12/2009
# HT Date 1.02: 2/19/2012
# HT Date 1.03: 3/20/2012
# HT Date 1.04: 4/08/2012
#:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=
#
# #  This work is protected by the following license:
# #----------------------------------------------------------------------------
# # 
# #  Creative Commons - Attribution-NonCommercial-ShareAlike 3.0 Unported
# #  ( http://creativecommons.org/licenses/by-nc-sa/3.0/ )
# # 
# #  You are free:
# # 
# #  to Share - to copy, distribute and transmit the work
# #  to Remix - to adapt the work
# # 
# #  Under the following conditions:
# # 
# #  Attribution. You must attribute the work in the manner specified by the
# #  author or licensor (but not in any way that suggests that they endorse you
# #  or your use of the work).
# # 
# #  Noncommercial. You may not use this work for commercial purposes.
# # 
# #  Share alike. If you alter, transform, or build upon this work, you may
# #  distribute the resulting work only under the same or similar license to
# #  this one.
# # 
# #  - For any reuse or distribution, you must make clear to others the license
# #    terms of this work. The best way to do this is with a link to this web
# #    page.
# # 
# #  - Any of the above conditions can be waived if you get permission from the
# #    copyright holder.
# # 
# #  - Nothing in this license impairs or restricts the author's moral rights.
# # 
# #----------------------------------------------------------------------------
# #
# # Note that if you share this file, even after editing it, you must still
# # give proper credit to shdwlink1993.
#
#:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=
#
#                                ~= Function =~
#
# This script is designed to allow you to expand what poison does to your
# character. Poison now is able to affect HP or SP, and take off a fraction or
# a set amount of HP/SP.
#
#:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=
#
#                               ~= Version History =~
#
# Version 1.0b ---------------------------------------------------- [1/11/2009]
# Version 1.01b --------------------------------------------------- [1/12/2009]
# Version 1.02 ---------------------------------------------------- [2/19/2012]
# Version 1.03 ---------------------------------------------------- [3/20/2012]
# Version 1.04 ---------------------------------------------------- [4/08/2012]
#
#  V 1.04 Changes:
#  - DoT that heals will make the screen flash green instead of red
#  - Damage values that were displayed in battle were inaccurate
#  - Percentage based damage was written incorrectly
#
#  V 1.03 Changes:
#  - Percentage-based DoT healed when damage values were positive and visa-versa
#  - Modified how variance was calculated (added explanation in config)
#  - Organized script to be easier on the eyes and added comment lines
#
#  V 1.02 Changes:
#  - Negative damage values damaged instead of healed and visa-versa
#  - Limit_Drain was bugged and has now been fixed
#  - HP and SP damage was being calculated twice (thus actual damage/healing
#    was twice the value the user configured)
#
#:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=
#
#                              ~= Customization =~
#
# Customization can be found right under where the Poison Database begins.
#
#:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=
#
#                               ~= Compatability =~
#
# - Low probability of working with the SDK.
# - Will not work with other Poison-editing scripts.
# - Must be placed above Tons of Addons.
#
#:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=

module SL93
 
  def self.hotdot(id)
    case id
    #------------------------------------------------------------------------
    # Poison Database Begins
    #------------------------------------------------------------------------
    #  when STATE_NUMBER then return [TYPE, DAMAGE, VARIANCE, LIMIT_DRAIN]
    #  * STATE_NUMBER is the state you want to be affected by this.
    #  * TYPE refers to the thing sustaining damage.
    #      1 = HP, 2 = SP. If the type is positive, the amount is a literal
    #      number (eg. You lose about 50 HP). If the type is negative, then
    #      the amount is a fraction of the maximum (eg. You lose about 50% of
    #      your HP).
    #  * DAMAGE refers to how much damage is healed/taken.
    #      A Positive amount hurts you and a negative amount heals you.
    #  * VARIANCE refers to how much the damage varies. Positive only.
    #      This depends in part on if TYPE was positive or negative.
    #
    #      Example A: TYPE is positive. VARIANCE is 15.
    #                 Damage/Heal amount can do up to 15 more or 15 less.
    #
    #      Example B: TYPE is negative. VARIANCE is 15.
    #                 Damage/Heal amount can do up to 15% more or 15% less.
    #
    #  * LIMIT_DRAIN refers to if the poison can leave you with 0 HP/SP.
    #      If true, then it is limited, and stops at 1. If false, then it
    #      isn't.
    #------------------------------------------------------------------------
   when 3 then return [-1, 100, 15, false]  # Standard Poison
    #------------------------------------------------------------------------
    # Poison Database Ends
    #------------------------------------------------------------------------
    end
    return false
  end
 
end

class Game_Battler
 
  def slip_damage?
    return @states.any? {|i| SL93.hotdot(i) != false }
  end
 
  def slip_damage_effect
    ids = []
    sp_damage = 0
    self.damage = 0
    # Get the HoT/DoT states applied to the character
    for i in @states
      ids.push(i) if SL93.hotdot(i) != false
    end
   
    for i in ids
      # If the state damages/heals by a literal number
      if SL93.hotdot(i)[0] > 0
        damage = SL93.hotdot(i)[1]
      # If the state damages/heals HP by a percent
      elsif SL93.hotdot(i)[0] == -1
        damage = self.maxhp * SL93.hotdot(i)[1] / 100
      # If the state damages/heals SP by a percent
      elsif SL93.hotdot(i)[0] == -2
        damage = self.maxsp * SL93.hotdot(i)[1] / 100
      end
     
      # If damage/heal amount is not zero and variance exists
      if damage != 0 && SL93.hotdot(i)[2] > 0
        # Variance based on literal numbers
        amp = (damage.abs < SL93.hotdot(i)[2] ? damage.abs - 1 : SL93.hotdot(i)[2]) if SL93.hotdot(i)[0] > 0
        # Variance based on percentages
        amp = [damage.abs * SL93.hotdot(i)[2] / 100, 1].max if SL93.hotdot(i)[0] < 0
        # Apply variance amounts to damage/heal amount
        damage += rand(amp+1) + rand(amp+1) - amp
      end
     
      # If HP damage/heal
      if SL93.hotdot(i)[0].abs == 1
        hp = @hp
        # If limit_drain and actual HP damage being done (not healing)
        if SL93.hotdot(i)[3] and damage > 0
          self.hp = [hp - damage,1].max # Leave 1 HP
        else
          self.hp -= damage
        end
        # Add total damage to variable
        self.damage += damage
      # If SP damage/heal
      elsif SL93.hotdot(i)[0].abs == 2
        sp = @sp
        # If limit_drain and actual SP damage being done (not healing)
        if SL93.hotdot(i)[3] and damage > 0
          self.sp = [sp - damage,1].max # Leave 1 SP
        else
          self.sp -= damage
        end
        # Add total SP damage to variable
        sp_damage += damage
      end
    end
    # Modify @damage to be SP damage if no changes to HP were made
    self.damage = sp_damage if self.damage == 0
  end
 
end

class Game_Party
 
  def check_map_slip_damage
    @actors.each {|actor|
      if actor.hp > 0 && actor.slip_damage?
        actor.slip_damage_effect
        if actor.damage <= 0
          # Positive DoT makes green screen
          $game_screen.start_flash(Color.new(0, 255, 0, 128), 4)
        else
          # Negative DoT makes red screen
          $game_screen.start_flash(Color.new(255, 0, 0, 128), 4)
        end
        $game_temp.gameover = $game_party.all_dead?
      end
    }
  end
 
end


1.01b by shdwlink (has a few bugs)
Spoiler: ShowHide

#==============================================================================
# HoT DoT
# Author: Shdwlink1993
# Version: 1.01b
# Type: Poison Control
#:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=
# HT Date 1.0b: 1/11/2009
# HT Date 1.01b: 1/12/2009
#:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=
#
# #  This work is protected by the following license:
# #----------------------------------------------------------------------------
# #  
# #  Creative Commons - Attribution-NonCommercial-ShareAlike 3.0 Unported
# #  ( http://creativecommons.org/licenses/by-nc-sa/3.0/ )
# #  
# #  You are free:
# #  
# #  to Share - to copy, distribute and transmit the work
# #  to Remix - to adapt the work
# #  
# #  Under the following conditions:
# #  
# #  Attribution. You must attribute the work in the manner specified by the
# #  author or licensor (but not in any way that suggests that they endorse you
# #  or your use of the work).
# #  
# #  Noncommercial. You may not use this work for commercial purposes.
# #  
# #  Share alike. If you alter, transform, or build upon this work, you may
# #  distribute the resulting work only under the same or similar license to
# #  this one.
# #  
# #  - For any reuse or distribution, you must make clear to others the license
# #    terms of this work. The best way to do this is with a link to this web
# #    page.
# #  
# #  - Any of the above conditions can be waived if you get permission from the
# #    copyright holder.
# #  
# #  - Nothing in this license impairs or restricts the author's moral rights.
# #  
# #----------------------------------------------------------------------------
# #
# # Note that if you share this file, even after editing it, you must still
# # give proper credit to shdwlink1993.
#
#:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=
#
#                                ~= Function =~
#
# This script is designed to allow you to expand what poison does to your
# character. Poison now is able to affect HP or SP, and take off a fraction or
# a set amount of HP/SP.
#
#:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=
#
#                               ~= Version History =~
#
# Version 1.0b ---------------------------------------------------- [1/11/2009]
# Version 1.01b --------------------------------------------------- [1/12/2009]
#  - A simple math error was fixed (+ instead of -)
#
#:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=
#
#                              ~= Customization =~
#
# Customization can be found right under where the Poison Database begins.
#
#:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=
#
#                               ~= Compatability =~
#
# - Low probability of working with the SDK.
# - Will not work with other Poison-editing scripts.
# - Must be placed above Tons of Addons.
#
#:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=

module SL93
 
 def self.hotdot(id)
   case id
   #------------------------------------------------------------------------
   # Poison Database Begins
   #------------------------------------------------------------------------
   #  when STATE_NUMBER then return [TYPE, DAMAGE, VARIANCE, LIMIT_DRAIN]
   #  * STATE_NUMBER is the state you want to be affected by this.
   #  * TYPE refers to the thing sustaining damage.
   #      1 = HP, 2 = SP. If the type is positive, the amount is a literal
   #      number (eg. You lose about 50 HP). If the type is negative, then
   #      the amount is a fraction of the maximum (eg. You lose about 50% of
   #      your HP).
   #  * DAMAGE refers to how much damage is healed/taken.
   #      A Positive amount hurts you and a negative amount heals you.
   #  * VARIANCE refers to how much the damage varies. Positive only.
   #      This depends in part on if the type was positive (~5 HP difference)
   #      or negative (~5% HP difference).
   #  * LIMIT_DRAIN refers to if the poison can leave you with 0 HP/SP.
   #      If true, then it is limited, and stops at 1. If false, then it
   #      isn't.
   #------------------------------------------------------------------------
 when 3 then return [-1, 10, 15, false]  # Standard Poison
   #------------------------------------------------------------------------
   # Poison Database Ends
   #------------------------------------------------------------------------
   end
   return false
 end
 
end

class Game_Battler
 
 def slip_damage?
   return @states.any? {|i| SL93.hotdot(i) != false }
 end
 
 def slip_damage_effect
   ids = []
   for i in @states
     ids.push(i) if SL93.hotdot(i) != false
   end
   for i in ids
     self.damage = SL93.hotdot(i)[1] if SL93.hotdot(i)[0] > 0
     self.damage = self.maxhp / SL93.hotdot(i)[1] if SL93.hotdot(i)[0] == -1
     self.damage = self.maxsp / SL93.hotdot(i)[1] if SL93.hotdot(i)[0] == -2
     if self.damage.abs > 0 && SL93.hotdot(i)[2] > 0
       amp = [self.damage.abs - SL93.hotdot(i)[2], 1].max if SL93.hotdot(i)[0] > 0
       amp = [self.damage.abs * SL93.hotdot(i)[2] / 100, 1].max if SL93.hotdot(i)[0] < 0
       self.damage += rand(amp+1) + rand(amp+1) - amp
     end
     self.damage = self.damage * -1 if SL93.hotdot(i)[0] < 0
     if SL93.hotdot(i)[0] == 1 || SL93.hotdot(i)[0] == -1
       self.damage = self.hp - 1 if !SL93.hotdot(i)[3] && (0 > self.hp += self.damage)
       self.hp += self.damage
     elsif SL93.hotdot(i)[0] == 2 || SL93.hotdot(i)[0] == -2
       self.damage = self.sp - 1 if !SL93.hotdot(i)[3] && (0 > self.sp += self.damage)
       self.sp += self.damage
     end
   end
   return true
 end
 
end

class Game_Party
 
 def check_map_slip_damage
   @actors.each {|actor|
     if actor.hp > 0 && actor.slip_damage?
       actor.slip_damage_effect
       $game_screen.start_flash(Color.new(255, 0, 0, 128), 4)
       $game_temp.gameover = $game_party.all_dead?
     end
   }
 end
 
end



Instructions

Found within the script.


Compatibility


  • Low probability of working with the SDK.
  • Will not work with other Poison-editing scripts.
  • Must be placed above Tons of Addons.



Credits and Thanks


  • Arxur for the script idea.



Author's Notes

A VX version is available here.

EDIT: Fixed a very stupid problem in the documentation (And a very stupid error in the script itself - I fixed it in time for VX though.). xD
18
Use Audacity to get VG Music into your game
(Sorry the title's so vauge-sounding)


Introduction

This Tutorial will help you get music that normally wouldn't work well on RMXP and edit it so that it works well. Audacity, the program we'll be using today, is a great free sound editor. If you don't have it, you can get it from it's homepage at their homepage

Most music from soundtracks, especially from video game soundtracks, have a number of nuances that prevent the song from being used well. Most prominently is the fade-out at the end of the song. Although this works well if you're listening to the song on your computer, it doesn't help when you're trying to get it into your game. This guide will help you circumvent these measures and get the song in your game without any troubles.

Before starting, be sure that you are familiar with the song you are doing this to. Otherwise, you might run into some difficulties later on.




Step 1: The Fade-Out

The Fade-Out is used in most songs to create a sense of closure to the song, since VG Music can't have a standard musical ending, instead looping incessantly. To help for people listening to these on a CD, back to back, they have a fade at the end. Usually, a song from a video game has a basic structure, and works somewhat like this:

Intro (If present)
Entire Song (May be played through twice)
Fade-out

To get the fade-out out, all you need to do is select the section where the song repeats again (the part with the fade), highlight to the very end of the song, and delete it. volia.




Step 2: The Intro

If your song does not have an intro, feel lucky and skip this, because this part has problems with RMXP. Select the introduction segment, and Cut it (Don't Delete it!). Make a new project, and paste the section in. You'll need it for later.

Now, check if the standard song sounds OK by loop-playing through it (Hold shift and click Play). If there are no disernable skips in the song, then it's fine. Otherwise, you messed up earlier.




Step 3: Importing the Song

First of all, if your "main song" project repeats itself twice (Make sure it's an exact duplication of the first half), feel free to delete that part. You won't need it, and it'll cut back on file-size. Now, export the files. If your size-concious, export as an .ogg file. In fact, do so in any case.

Now, have RMXP import the main song as a BGM, and import the intro (if you had one) as a SE.




Step 4: Intro Nuances

If you were unlucky to have an intro in your song, then this part needs nothing but a good ear and time.

Put the song into an event (If you'll need this song a lot, then put this into a Common Event) something like this:


Play SE: 'Intro'
Wait: X Frame(s)
Play BGM: 'Song'


Now, you have to guess on what X is going to be. To do this, simply put in a number around what you think is right (40FPS is what RMXP usually runs at), and test-play the game (and run the event). If the song didn't start for a while after the intro ended, then make the wait less, and increase the wait if the two overlap. The reason that this isn't too great is because if you aren't running at peak FPS, then there will be a gap of some sort that shouldn't be there.

In closing, I hope this tutorial helps you out in making your games. :)
19
Entertainment / Is Your Son a Computer Hacker?
December 27, 2008, 04:42:22 pm
An article I found a bit ago. I'm not sure if this was written as a joke or not, but if it's not, then that's scary...

QuoteIs Your Son a Computer Hacker?

As an enlightened, modern parent, I try to be as involved as possible in the lives of my six children. I encourage them to join team sports. I attend their teen parties with them to ensure no drinking or alcohol is on the premises. I keep a fatherly eye on the CDs they listen to and the shows they watch, the company they keep and the books they read. You could say I'm a model parent. My children have never failed to make me proud, and I can say without the slightest embellishment that I have the finest family in the USA.

Two years ago, my wife Carol and I decided that our children's education would not be complete without some grounding in modern computers. To this end, we bought our children a brand new Compaq to learn with. The kids had a lot of fun using the handful of application programs we'd bought, such as Adobe's Photoshop and Microsoft's Word, and my wife and I were pleased that our gift was received so well. Our son Peter was most entranced by the device, and became quite a pro at surfing the net. When Peter began to spend whole days on the machine, I became concerned, but Carol advised me to calm down, and that it was only a passing phase. I was content to bow to her experience as a mother, until our youngest daughter, Cindy, charged into the living room one night to blurt out: "Peter is a computer hacker!"

As you can imagine, I was amazed. A computer hacker in my own house! I began to monitor my son's habits, to make certain that Cindy wasn't just telling stories, as she is prone to doing at times.

After a few days of investigation, and some research into computer hacking, I confronted Peter with the evidence. I'm afraid to say, this was the only time I have ever been truly disappointed in one of my children. We raised them to be honest and to have integrity, and Peter betrayed the principles we tried to encourage in him, when he refused point blank to admit to his activities. His denials continued for hours, and in the end, I was left with no choice but to ban him from using the computer until he is old enough to be responsible for his actions.

After going through this ordeal with my own family, I was left pondering how I could best help others in similar situations. I'd gained a lot of knowledge over those few days regarding hackers. It's only right that I provide that information to other parents, in the hope that they will be able to tell if their children are being drawn into the world of hacking. Perhaps other parents will be able to steer their sons back onto the straight and narrow before extreme measures need to be employed.

To this end, I have decided to publish the top ten signs that your son is a hacker. I advise any parents to read this list carefully and if their son matches the profile, they should take action. A smart parent will first try to reason with their son, before resorting to groundings, or even spanking. I pride myself that I have never had to spank a child, and I hope this guide will help other parents to put a halt to their son's misbehaviour before a spanking becomes necessary.

1. Has your son asked you to change ISPs?

Most American families use trusted and responsible Internet Service Providers, such as AOL. These providers have a strict "No Hacking" policy, and take careful measures to ensure that your internet experience is enjoyable, educational and above all legal. If your child is becoming a hacker, one of his first steps will be to request a change to a more hacker friendly provider.

I would advise all parents to refuse this request. One of the reasons your son is interested in switching providers is to get away from AOL's child safety filter. This filter is vital to any parent who wants his son to enjoy the internet without the endangering him through exposure to "adult" content. It is best to stick with the protection AOL provides, rather than using a home-based solution. If your son is becoming a hacker, he will be able to circumvent any home-based measures with surprising ease, using information gleaned from various hacker sites.

2. Are you finding programs on your computer that you don't remember installing?

Your son will probably try to install some hacker software. He may attempt to conceal the presence of the software in some way, but you can usually find any new programs by reading through the programs listed under "Install/Remove Programs" in your control panel. Popular hacker software includes "Comet Cursor", "Bonzi Buddy" and "Flash".

The best option is to confront your son with the evidence, and force him to remove the offending programs. He will probably try to install the software again, but you will be able to tell that this is happening, if your machine offers to "download" one of the hacker applications. If this happens, it is time to give your son a stern talking to, and possibly consider punishing him with a grounding.

3. Has your child asked for new hardware?

Computer hackers are often limited by conventional computer hardware. They may request "faster" video cards, and larger hard drives, or even more memory. If your son starts requesting these devices, it is possible that he has a legitimate need. You can best ensure that you are buying legal, trustworthy hardware by only buying replacement parts from your computer's manufacturer.

If your son has requested a new "processor" from a company called "AMD", this is genuine cause for alarm. AMD is a third-world based company who make inferior, "knock-off" copies of American processor chips. They use child labor extensively in their third world sweatshops, and they deliberately disable the security features that American processor makers, such as Intel, use to prevent hacking. AMD chips are never sold in stores, and you will most likely be told that you have to order them from internet sites. Do not buy this chip! This is one request that you must refuse your son, if you are to have any hope of raising him well.

4. Does your child read hacking manuals?

If you pay close attention to your son's reading habits, as I do, you will be able to determine a great deal about his opinions and hobbies. Children are at their most impressionable in the teenage years. Any father who has had a seventeen year old daughter attempt to sneak out on a date wearing make up and perfume is well aware of the effect that improper influences can have on inexperienced minds.

There are, unfortunately, many hacking manuals available in bookshops today. A few titles to be on the lookout for are: "Snow Crash" and "Cryptonomicon" by Neal Stephenson; "Neuromancer" by William Gibson; "Programming with Perl" by Timothy O'Reilly; "Geeks" by Jon Katz; "The Hacker Crackdown" by Bruce Sterling; "Microserfs" by Douglas Coupland; "Hackers" by Steven Levy; and "The Cathedral and the Bazaar" by Eric S. Raymond.

If you find any of these hacking manuals in your child's possession, confiscate them immediately. You should also petition local booksellers to remove these titles from their shelves. You may meet with some resistance at first, but even booksellers have to bow to community pressure.

5. How much time does your child spend using the computer each day?

If your son spends more than thirty minutes each day on the computer, he may be using it to DOS other peoples sites. DOSing involves gaining access to the "command prompt" on other people's machines, and using it to tie up vital internet services. This can take up to eight hours. If your son is doing this, he is breaking the law, and you should stop him immediately. The safest policy is to limit your children's access to the computer to a maximum of forty-five minutes each day.

6. Does your son use Quake?

Quake is an online virtual reality used by hackers. It is a popular meeting place and training ground, where they discuss hacking and train in the use of various firearms. Many hackers develop anti-social tendencies due to the use of this virtual world, and it may cause erratic behaviour at home and at school.

If your son is using Quake, you should make hime understand that this is not acceptable to you. You should ensure all the firearms in your house are carefully locked away, and have trigger locks installed. You should also bring your concerns to the attention of his school.

7. Is your son becoming argumentative and surly in his social behaviour?

As a child enters the electronic world of hacking, he may become disaffected with the real world. He may lose the ability to control his actions, or judge the rightness or wrongness of a course of behaviour. This will manifest itself soonest in the way he treats others. Those whom he disagrees with will be met with scorn, bitterness, and even foul language. He may utter threats of violence of a real or electronic nature.

Even when confronted, your son will probably find it difficult to talk about this problem to you. He will probably claim that there is no problem, and that you are imagining things. He may tell you that it is you who has the problem, and you should "back off" and "stop smothering him." Do not allow yourself to be deceived. You are the only chance your son has, even if he doesn't understand the situation he is in. Keep trying to get through to him, no matter how much he retreats into himself.

8. Is your son obsessed with "Lunix"?

BSD, Lunix, Debian and Mandrake are all versions of an illegal hacker operation system, invented by a Soviet computer hacker named Linyos Torovoltos, before the Russians lost the Cold War. It is based on a program called "xenix", which was written by Microsoft for the US government. These programs are used by hackers to break into other people's computer systems to steal credit card numbers. They may also be used to break into people's stereos to steal their music, using the "mp3" program. Torovoltos is a notorious hacker, responsible for writing many hacker programs, such as "telnet", which is used by hackers to connect to machines on the internet without using a telephone.

Your son may try to install "lunix" on your hard drive. If he is careful, you may not notice its presence, however, lunix is a capricious beast, and if handled incorrectly, your son may damage your computer, and even break it completely by deleting Windows, at which point you will have to have your computer repaired by a professional.

If you see the word "LILO" during your windows startup (just after you turn the machine on), your son has installed lunix. In order to get rid of it, you will have to send your computer back to the manufacturer, and have them fit a new hard drive. Lunix is extremely dangerous software, and cannot be removed without destroying part of your hard disk surface.

9. Has your son radically changed his appearance?

If your son has undergone a sudden change in his style of dress, you may have a hacker on your hands. Hackers tend to dress in bright, day-glo colors. They may wear baggy pants, bright colored shirts and spiky hair dyed in bright colors to match their clothes. They may take to carrying "glow-sticks" and some wear pacifiers around their necks. (I have no idea why they do this) There are many such hackers in schools today, and your son may have started to associate with them. If you notice that your son's group of friends includes people dressed like this, it is time to think about a severe curfew, to protect him from dangerous influences.

10. Is your son struggling academically?

If your son is failing courses in school, or performing poorly on sports teams, he may be involved in a hacking group, such as the infamous "Otaku" hacker association. Excessive time spent on the computer, communicating with his fellow hackers may cause temporary damage to the eyes and brain, from the electromagnetic radiation. This will cause his marks to slip dramatically, particularly in difficult subjects such as Math, and Chemistry. In extreme cases, over-exposure to computer radiation can cause schizophrenia, meningitis and other psychological diseases. Also, the reduction in exercise may cause him to lose muscle mass, and even to start gaining weight. For the sake of your child's mental and physical health, you must put a stop to his hacking, and limit his computer time drastically.

I encourage all parents to read through this guide carefully. Your child's future may depend upon it. Hacking is an illegal and dangerous activity, that may land your child in prison, and tear your family apart. It cannot be taken too seriously.
20
General Discussion / OpenSource - Community Project
October 27, 2008, 01:38:02 am
OpenSource - Community Project is an idea I've been juggling in my head for a while. The basic idea is that a lot of people have tried to make games. If you don't believe me, then go check out the New Projects board here and on .org. However, only a handful of these games are actually finished, let alone very successful.

The basic idea of OpenSource is that it's just that: an open source game. There's a bit of a catch to it, however: You cannot make the entire game, or even a large portion. The point is for one person to add on a bit, another person to add their talents, someone else could put in a script and make it work, etc. The idea is that at the end, we end up with a big, long, community project that everyone had a hand in.

There would need to be a basic game template made at the beginning of the project with a basic plot beginning, and maybe with one or two extras. And then someone else would have to pick it up and add in some more. Maybe they might make a world map, or create a little more plot and gameplay, whatever. Then, they drop it and the next person picks the project up, and does the same, etc. Eventually, we'd end up with a project with much more than we could have made individually.

The point of this poll is to 'test the waters', so to speak. How interested would you be in this project? Would you contribute to it?
21
Video Games / What is your favorite controller?
August 29, 2008, 04:49:08 am
In a fit of wanting to ask a strange question, I'm curious as to what everyone's favorite video game controller is and why they like that one. Everything is applicable (except a PC keyboard and mouse (sorry, rom nuts) -_-).

I perfer the Nintendo Gamecube controller because 1) It's what I'm most used to and 2) It has more buttons than most controllers (except the X-Box contoller, which... I guess I just don't like. I'd perfer the 360 controller to the original though).
22
I've been searching around this big wide internet for some time because I know I've seen a RMXP Solid Snake Sprite at least ONCE. However, I can't find it and the only sprites I can find of sneaky old Solid Snake are from his early 8-bit days, or worse, Game Boy quality...

Simply put, I need a Solid Snake Sprite, and, if possible, another one with him in a Cardboard Box. Thank you.

Bump. I think I can handle the Cardboard box, but I need the Snake Sprite or the whole thing's useless. If anyone can make Solid Snake sprite-iliated, please do help.
23
Entertainment / Lost in Translation
August 19, 2008, 12:04:55 pm
You know all those internet legends about things that were translated into a language by something like Babelfish to something like spanish and back and came out all screwed up? Well, now we have a tool that works even better! http://tashian.com/multibabel lets you put something in English in, and it automatically translates it from English to French to English to German to English to Italian to English to Portuguese to English to Spanish to English. Useful if you want a laugh at the lack of coherent... anything that comes out of it! :P

Also, here's an example (It's pretty big)

original text: ShowHide
War has changed. It's no longer about nations, ideologies, or ethnicity. It's an endless series of proxy battles fought by mercenaries and machines. War - and its consumption of life - has become a well-oiled machine. War has changed. ID-tagged soldiers carry ID-tagged weapons, use ID-tagged gear. Nanomachines inside their bodies enhance and regulate their abilities. Genetic control. Information control. Emotion control. Battlefield control. Everything is monitored and kept under control. War has changed. The age of deterrence has become the age of control... All in the name of averting catastrophe from weapons of mass destruction. And he who controls the battlefield... Controls history. War has changed. When the battlefield is under total control... ...War becomes routine.


ending text: ShowHide
The modified war. It is not of one more a certain way in the nations, ideologies or with them the ethnic members. A series without the conclusion of the battles of the measurement of mercennaires fights and her he them splodges some. The war - and the relative consumición of the duration - were transformata inside in a good-lubricated machine. The war modified the small indicator-mark carriers of the soldiers the small indicator-mark groups, uses the small indicator-mark tax. Nanomachines to the interior of its bodies gives to the prominencia and to the rule his capienza. Genetic order. The information of the order. Sensitivity of the order. Halting of the battle of the order. Everything is verified and to control. The modified war. The age of dissuasion was transformata inside in the age of the instruction... All in the name of vermeidenen the disaster of the groups of the massive destruction. And, that one the controls takes part the battle... It controls history. The modified war. If the battle is the halting, this one the war gets to be present under total of the instruction.......
24
RMXP Script Database / [XP] Save File System
July 26, 2008, 06:59:24 am
Save File System
Authors: shdwlink1993, Phylomortis
Version: 1.12b
Type: Game Enhancement, Save System
Key Term: Title / Save / Load / GameOver Add-on



Introduction

This script has several different (and kinda random :whistle:) systems that I designed to work with Save Files, such as New Game Plus, Multiple Disk System, Infinite Save Files, and Autosave/Restore.


Features


  • New Game Plus: After completing a game, you can use this to let the player start again with their items, party members, and allow them to access new areas and items.
  • Multiple Disk System: Allows you to overcome the Map Limitation and have a smooth transition between disks. Beta release.
  • Infinite Save Files: Set a number and you can have that many Save Files. Much better than the default restriction of 4.
  • Autosave and Autorestore System: This makes it so that if you die, a command window appears asking if you want to retry or quit. Selecting retry will load a temporary save file that can be saved whenever you, the designer, choose.



Screenshots

None needed.


Demo

None needed.


Script

This script can go anywhere underneath Scene_Load, but it is recommended that it go underneath all your other scripts except Main.
Spoiler: ShowHide

#==============================================================================
# Save File System
# Author: Shdwlink1993
# Version: 1.12b
# Type: Game Enhancement, Save System
#:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=
# SFS Date 1.0b: 7/26/2008
# SFS Date 1.01b: 7/26/2008
# SFS Date 1.02b: 7/26/2008
# SFS Date 1.1b: 8/24/2008
# SFS Date 1.11b: 8/27/2008
# SFS Date 1.12b: 8/30/2008
#:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=
#
# #  This work is protected by the following license:
# #----------------------------------------------------------------------------
# # 
# #  Creative Commons - Attribution-NonCommercial-ShareAlike 3.0 Unported
# #  ( http://creativecommons.org/licenses/by-nc-sa/3.0/ )
# # 
# #  You are free:
# # 
# #  to Share - to copy, distribute and transmit the work
# #  to Remix - to adapt the work
# # 
# #  Under the following conditions:
# # 
# #  Attribution. You must attribute the work in the manner specified by the
# #  author or licensor (but not in any way that suggests that they endorse you
# #  or your use of the work).
# # 
# #  Noncommercial. You may not use this work for commercial purposes.
# # 
# #  Share alike. If you alter, transform, or build upon this work, you may
# #  distribute the resulting work only under the same or similar license to
# #  this one.
# # 
# #  - For any reuse or distribution, you must make clear to others the license
# #    terms of this work. The best way to do this is with a link to this web
# #    page.
# # 
# #  - Any of the above conditions can be waived if you get permission from the
# #    copyright holder.
# # 
# #  - Nothing in this license impairs or restricts the author's moral rights.
# # 
# #----------------------------------------------------------------------------
# #
# # Note that if you share this file, even after editing it, you must still
# # give proper credit to shdwlink1993.
#
#:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=
#
#                                    ~= Function =~
#
# This script is designed to provide many different save game functions into
# your game, such as New Game Plus (NGP) functionality (As seen in Chrono
# Trigger), Multiple Disk System (MDS) (As seen in most PSX Final Fantasy
# Games), Infinite Save Files (Which should have been default in RMXP), and an
# Autosave and Autorestore System (ARS).
#
#:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=
#
#                               ~= Version History =~
#
# Version 1.0b ---------------------------------------------------- [7/26/2008]
#  - New Game + added (Version 1.0)
#  - Multiple Disk System added (Version 1.0b)
#  - Infinite Save Files added (Version 1.0)
# Version 1.01b --------------------------------------------------- [7/26/2008]
#  - DREAM for Save Files (Blizzard) Support added (Version 1.0)
# Version 1.02b --------------------------------------------------- [7/26/2008]
#  - DREAM for Save Files (Blizzard) Support fixed (Version 1.1)
# Version 1.1b ---------------------------------------------------- [8/24/2008]
#  - New Game + updated (Version 1.1b)
#  - Multiple Disk System updated (Version 1.1b)
#  - Autosave/Restore System added (Version 1.0)
#  - Chaos Project Save Layout (Fantasist) Support added (Version 1.0b)
# Version 1.11b --------------------------------------------------- [8/27/2008]
#  - Fixed an error with Scene_Save's new functionality
# Version 1.12b --------------------------------------------------- [8/30/2008]
#  - Autosave/Restore System fixed (Version 1.01)
#
#:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=
#
#                            ~= New Functionality =~
#
# Automatically, there is a new function added into Scene_Save. If you want to
# make the player REQUIRED to save the game at a particular point, you can use
# this script call:
#
# $scene = Scene_Save.new(true)
#
# This script call will make it so the player is forced to save the game to
# exit the menu.
#
#:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=
#
#                            ~= General Customization =~
#
# DREAM = Set this to true if you are using DREAM for Save Files by Blizzard.
#
# CPSL = Set this to true if you are using Chaos Project Save Layout by
# Fantasist.
#
#:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=
#
#                                ~= New Game Plus =~
#                                      - 1.1b -
#
# New Game Plus (Or New Game +) is a system first widely seen in Chrono Trigger
# for the SNES, although the system's roots go back to The Legend of Zelda's
# Second Quest. Essentially, once you beat the game, you can then use this
# option to restart the game with all your items and such. Characters will
# start the game with all the skills and stats they had in the previous file.
#
# To run the New Game Plus File creator, you need to, when the game is
# completed, have a call script that contains this:
#
# SL93.make_ngp
#
# Customization Options:
#
# NGP = Set this to false if you are NOT going to use NG+ at all in your game.
#
# NGP_SWI = Change this to the ID number of the Switch that you want to use for
# New Game + things, such as different dialog and such. The Switch will be set
# before the game starts.
#
# ACTORS = Set this to true if you want a NG+ start with all the Party Members
# from the previous save. Note that this does not alter their stats. All this
# affects is their ability to start in your party.
#
# GOLD = Set this to true if you want the party to start with all their money.
#
# TIME = Set this to true if you want the player to start with the same time
# they finished the game with.
#
# SWI_EXCEPTIONS = Put the ID of any Switch you want remaining in the NG+ into
# the array. Useful if you have an unlockable that the player should be able to
# start with.
#
# VAR_EXCEPTIONS = Put the ID of any Variable you want remaining in the NG+
# into the array.
#
#:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=
#
#                             ~= Multiple Disk System =~
#                                      - 1.1b -
#
# The Multiple Disk System is a system that was seen primarily on PlayStation
# games, in particular Final Fantasy's 7, 8, and 9. The reason this system
# would be useful in RMXP is because any attempt to create a Map when all 999
# are already in use will result in the editor crashing, which is a large
# problem for people designing a large game. To work around this, you would
# need to use the Multiple Disk System.
#
# WARNING: Before creating the second disk, be sure that all scripts, database
# entries, ect. that appear in more than one disk have all been finalized and
# will not be edited!
#
# To make the second Disk, simply copy and paste the project folder, open it
# and remove all the maps that you won't need.
#
# After compiling the game, place all the files into the same folder and
# rename them to Disk n.exe, Disk n.ini, and Disk n.rgssad instead of the
# previous name, where n is the disk number.
#
# Customization Options:
#
# MDS = Set this to false if you are NOT going to use the MDS in your game.
#
# PICTURE_NAME = Change this to the Picture name of the image you want
# displayed during the scene. The picture must be in the Picture Folder.
#
# DISK_VAR = Set this to the Variable ID that you are going to use for the save
# file's current disk number.
#
# CURRENT_DISK = Set this to the Disk Number of the disk you are editing. Do NOT
# use this Disk Number in any other disk in this game!
#
#:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=
#
#                            ~= Infinite Save Files =~
#                                     - 1.0 -
#
# Infinite Save Files is a system that can be used to create and save, as the
# title suggests, infinite saves. The system will allow you to choose how many
# save files to allow (so I guess it's not QUITE infinite) for saving and
# loading purposes. If you are using Chaos Project Save Layout, then this
# system will be completely disabled.
#
# Customization Options:
#
# SAVE_FILES = Set this to the number of save files you want the game to use.
# Note that the higher this number is, the more lag is generated while trying
# to load it all. Also note that this variable affects the New Game Plus
# selection. If you don't want any changes, just leave it at 4.
#
#:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=
#
#                          ~= Autosave/Restore System =~
#                                     - 1.0 -
#
# The Autosave & Autorestore System is a system used (never by name) subtely by
# many, many games. If you enter a room (or a floor, ala MGS) at some point,
# die, hit the continue button, and are automatically restored to exactly the
# same way you were before then (without loading up a save file), you have been
# Auto-Saved and Restored, and probably have been for some time.
#
# To make an auto-save point, use this syntax:
#
# SL93.update_temp_save
#
# To restore the save point, you use this syntax:
#
# SL93.restore_temp_save
#
# If you want the temp file to be deleted after use, then just use this
# instead:
#
# SL93.restore_temp_save(true)
#
# Customization Options:
#
# ARS = Set this to true if you intend on using the Autosave/Restore System.
#
# TEMP_SAVE = Set this to the name of the temporary save file.
#
# ALL_TRANSFERS = Set this to true if you want the teleport command to
# automatically update the save file.
#
#:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=
#
#                               ~= Compatability =~
#
# - Low probability of working with the SDK.
# - Probably will not work with any Title Screen Modifications
# - Will not work with other Custom Save Systems or New Game Plus Systems
#
#:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=
#
#                             ~= Special Thanks =~
#
# - Blizzard, for a few script conventions and inspiration.
# - Phylomortis, because part of the ISF came from his script.
# - Memor-X, for requesting the Multiple Disk System.
#
#:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=

#==============================================================================
# ** SL93
#==============================================================================

module SL93
 
  # for compatablilty
  $sfs = 1.1
  #============================================================================
  # New Game Plus Configuration
  #============================================================================
  NGP = false
  NGP_SWI = 1
  ACTORS = true
  GOLD = true
  TIME = true
  SWI_EXCEPTIONS = [2, 50]
  VAR_EXCEPTIONS = [1, 2]
  #============================================================================
  # Multiple Disk System Configuration
  #============================================================================
  MDS = false
  DISK_VAR = 1
  CURRENT_DISK = 1
  PICTURE_NAME = ''
  #============================================================================
  # Infinite Save Files Configuration
  #============================================================================
  SAVE_FILES = 4
  #============================================================================
  # Autosave/Restore System Configuration
  #============================================================================
  ARS = false
  TEMP_SAVE = 'temp.save'
  ALL_TRANSFERS = false
  #============================================================================
  # Compatability With Other Systems
  #============================================================================
  CPSL = false
  DREAM = false
  #============================================================================
  # End Configuration
  #============================================================================
 
  def self.make_ngp
    if NGP
      $game_system.ngp = true
      if DREAM
        DREAM.save_game("Complete#{$game_temp.last_file_index+1}.ngp")
      else
        Scene_Save.save_game_data("Complete#{$game_temp.last_file_index+1}.ngp")
      end
  $game_system.ngp = false
    else
      raise "Cannot create New Game+ File!\nPlease activate NGP system and retry." if $DEBUG
    end
  end
 
  def self.update_temp_save
    if ARS
      file = File.open(TEMP_SAVE, 'rb')
      Marshal.dump($game_system, file)
      Marshal.dump($game_switches, file)
      Marshal.dump($game_variables, file)
      Marshal.dump($game_self_switches, file)
      Marshal.dump($game_screen, file)
      Marshal.dump($game_actors, file)
      Marshal.dump($game_party, file)
      Marshal.dump($game_troop, file)
      Marshal.dump($game_map, file)
      Marshal.dump($game_player, file)
      file.close
    else
      raise "Cannot update Temp Save File!\nPlease activate ARS and retry." if $DEBUG
    end
  end
 
  def self.restore_temp_save(delete = false)
    if ARS
      if FileTest.exist?(TEMP_SAVE)
        file = File.open(TEMP_SAVE, 'rb')
        Marshal.load($game_system, file)
        Marshal.load($game_switches, file)
        Marshal.load($game_variables, file)
        Marshal.load($game_self_switches, file)
        Marshal.load($game_screen, file)
        Marshal.load($game_actors, file)
        Marshal.load($game_party, file)
        Marshal.load($game_troop, file)
        Marshal.load($game_map, file)
        Marshal.load($game_player, file)
        $game_map.setup($game_map.map_id)
        $game_player.center($game_player.x, $game_player.y)
        $game_party.refresh
        $game_system.bgm_play($game_system.playing_bgm)
        $game_system.bgs_play($game_system.playing_bgs)
        $game_map.update
        File.delete(TEMP_SAVE) if delete
        $scene = Scene_Map.new
      else
        # Start a new game.
        Graphics.frame_count = 0
        $game_temp          = Game_Temp.new
        $game_system        = Game_System.new
        $game_switches      = Game_Switches.new
        $game_variables     = Game_Variables.new
        $game_self_switches = Game_SelfSwitches.new
        $game_screen        = Game_Screen.new
        $game_actors        = Game_Actors.new
        $game_party         = Game_Party.new
        $game_troop         = Game_Troop.new
        $game_map           = Game_Map.new
        $game_player        = Game_Player.new
        $game_variables[DISK_VAR] = 1 if MDS
        $game_party.setup_starting_members
        $game_map.setup($data_system.start_map_id)
        $game_player.moveto($data_system.start_x, $data_system.start_y)
        $game_player.refresh
        $game_map.autoplay
        $game_map.update
        $scene = Scene_Map.new
      end
    else
      raise "Cannot restore Temp Save File!\nPlease activate ARS and retry." if $DEBUG
    end
  end
 
end

#==============================================================================
# ** Game_System
#==============================================================================

class Game_System
 
  #--------------------------------------------------------------------------
  # * Public Instance Variables
  #--------------------------------------------------------------------------
  attr_accessor :ngp if SL93::NGP
  #--------------------------------------------------------------------------
  # * Object Initialization
  #--------------------------------------------------------------------------
  alias shdwlink1993_sfs_init initialize
  def initialize
    shdwlink1993_sfs_init
    @ngp = false if SL93::NGP
  end
end

#==============================================================================
# ** Window_SaveFile
#==============================================================================

class Window_SaveFile < Window_Base
 
  #--------------------------------------------------------------------------
  # * Object Initialization
  #     file_index : save file index
  #     filename   : file name
  #     position   : placement of window
  #--------------------------------------------------------------------------
  def initialize(file_index, filename, position)
    y = 64 + position * 104
    super(0, y, 640, 104)
    self.contents = Bitmap.new(width - 32, height - 32)
    @file_index = file_index
    if SL93::DREAM
      @filename = "#{SAVE_NAME}#{file_index + 1}.dream4" if SL93::DREAM
    else
      @filename = "Save#{@file_index + 1}.rxdata"
    end
    @time_stamp = Time.at(0)
    @file_exist = FileTest.exist?(@filename)
    if @file_exist
      begin
        file = File.open(@filename, 'r')
        @time_stamp = file.mtime
        if SL93::DREAM
          @characters, @frame_count, @game_system, @game_switches,
          @game_variables, @game_party, @game_map, @game_player = DREAM.data(file)
        else
          @characters = Marshal.load(file)
          @frame_count = Marshal.load(file)
          @game_system = Marshal.load(file)
          @game_switches = Marshal.load(file)
          @game_variables = Marshal.load(file)
        end
        @total_sec = @frame_count / Graphics.frame_rate
        file.close
        refresh
      rescue
        @file_exist = false
        refresh
        self.contents.draw_text(4, 20, 600, 32, 'Corrupt Data!', 1)
        time_string = @time_stamp.strftime('%Y/%m/%d %H:%M')
        self.contents.draw_text(4, 40, 600, 32, time_string, 2)
      end
    else
      refresh
    end
    @selected = false
  end
  #--------------------------------------------------------------------------
  # * Refresh
  #--------------------------------------------------------------------------
  def refresh
    self.contents.clear
    # Draw file number
    self.contents.font.color = normal_color
    name = "File #{@file_index + 1}"
    self.contents.draw_text(4, 0, 600, 32, name)
    @name_width = contents.text_size(name).width
    # If save file exists
    if @file_exist
      # Draw character
      @characters.each_index {|i|
        bitmap = RPG::Cache.character(@characters[i][0], @characters[i][1])
        cw = bitmap.rect.width / 4
        ch = bitmap.rect.height / 4
        src_rect = Rect.new(0, 0, cw, ch)
        x = 300 - @characters.size * 32 + i * 64 - cw / 2
        self.contents.blt(x, 68 - ch, bitmap, src_rect)
      }
      # Draw play time
      hour = @total_sec / 60 / 60
      min = @total_sec / 60 % 60
      sec = @total_sec % 60
      time_string = sprintf('%02d:%02d:%02d', hour, min, sec)
      self.contents.font.color = normal_color
      self.contents.draw_text(4, 8, 600, 32, time_string, 2)
      # Draw timestamp
      self.contents.font.color = normal_color
      time_string = @time_stamp.strftime('%Y/%m/%d %H:%M')
      self.contents.draw_text(4, 40, 600, 32, time_string, 2)
    else
      self.contents.font.color = normal_color
      self.contents.draw_text(4, 40, 600, 32, 'No Data')
    end
  end
 
end

#==============================================================================
# ** Window_NGPFile
#==============================================================================

class Window_NGPFile < Window_Base
 
  #--------------------------------------------------------------------------
  # * Object Initialization
  #     file_index : save file index
  #     filename   : file name
  #     position   : placement of window
  #--------------------------------------------------------------------------
  def initialize(file_index, filename, position)
    y = 64 + position * 104
    super(0, y, 640, 104)
    self.contents = Bitmap.new(width - 32, height - 32)
    @file_index = file_index
    @filename = "Complete#{i+1}.ngp"
    @time_stamp = Time.at(0)
    @file_exist = FileTest.exist?(@filename)
    if @file_exist
      begin
        file = File.open(@filename, 'r')
        @time_stamp = file.mtime
        if DREAM
          @characters, @frame_count, @game_system, @game_switches,
          @game_variables, @game_party, @game_map, @game_player = DREAM.data(file)
        else
          @characters, @frame_count, @game_system, @game_switches,
          @game_variables, @game_party, @game_map, @game_player = Marshal.load(file)
        end
        @total_sec = @frame_count / Graphics.frame_rate
        file.close
        refresh
      rescue
        @file_exist = false
        refresh
        self.contents.draw_text(4, 20, 600, 32, 'Corrupt Data!', 1)
        time_string = @time_stamp.strftime('%Y/%m/%d %H:%M')
        self.contents.draw_text(4, 40, 600, 32, time_string, 2)
      end
    else
      refresh
    end
    @selected = false
  end
  #--------------------------------------------------------------------------
  # * Refresh
  #--------------------------------------------------------------------------
  def refresh
    self.contents.clear
    # Draw file number
    self.contents.font.color = normal_color
    name = "Complete Game #{@file_index + 1}"
    self.contents.draw_text(4, 0, 600, 32, name)
    @name_width = contents.text_size(name).width
    # If save file exists
    if @file_exist
      # Draw character
      @characters.each_index {|i|
        bitmap = RPG::Cache.character(@characters[i][0], @characters[i][1])
        cw = bitmap.rect.width / 4
        ch = bitmap.rect.height / 4
        src_rect = Rect.new(0, 0, cw, ch)
        x = 300 - @characters.size * 32 + i * 64 - cw / 2
        self.contents.blt(x, 68 - ch, bitmap, src_rect)
      }
      # Draw play time
      hour = @total_sec / 60 / 60
      min = @total_sec / 60 % 60
      sec = @total_sec % 60
      time_string = sprintf('%02d:%02d:%02d', hour, min, sec)
      self.contents.font.color = normal_color
      self.contents.draw_text(4, 8, 600, 32, time_string, 2)
      # Draw timestamp
      self.contents.font.color = normal_color
      time_string = @time_stamp.strftime('%Y/%m/%d %H:%M')
      self.contents.draw_text(4, 40, 600, 32, time_string, 2)
    else
      self.contents.font.color = normal_color
      self.contents.draw_text(4, 40, 600, 32, 'No Data')
    end
  end

end

#==============================================================================
# ** Scene_Title
#==============================================================================

class Scene_Title
  #--------------------------------------------------------------------------
  # * Main Processing
  #--------------------------------------------------------------------------
  def main
    # If battle test
    if $BTEST
      battle_test
      return
    end
    # Load database
    $data_actors        = load_data('Data/Actors.rxdata')
    $data_classes       = load_data('Data/Classes.rxdata')
    $data_skills        = load_data('Data/Skills.rxdata')
    $data_items         = load_data('Data/Items.rxdata')
    $data_weapons       = load_data('Data/Weapons.rxdata')
    $data_armors        = load_data('Data/Armors.rxdata')
    $data_enemies       = load_data('Data/Enemies.rxdata')
    $data_troops        = load_data('Data/Troops.rxdata')
    $data_states        = load_data('Data/States.rxdata')
    $data_animations    = load_data('Data/Animations.rxdata')
    $data_tilesets      = load_data('Data/Tilesets.rxdata')
    $data_common_events = load_data('Data/CommonEvents.rxdata')
    $data_system        = load_data('Data/System.rxdata')
    if FileTest.exist?('save.tmp')
      Scene_Load.read_save_data('save.tmp')
      return
    end
    # Make system object
    $game_system = Game_System.new
    # Make title graphic
    @sprite = Sprite.new
    @sprite.bitmap = RPG::Cache.title($data_system.title_name)
    # Make command window
    s1 = 'New Game'
    if SL93::NGP
      s2 = 'New Game +'
      s3 = 'Continue'
      s4 = 'Shutdown'
    else
      s2 = 'Continue'
      s3 = 'Shutdown'
    end
    if SL93::NGP
      @command_window = Window_Command.new(192, [s1, s2, s3, s4])
    else
      @command_window = Window_Command.new(192, [s1, s2, s3])
    end
    @command_window.back_opacity = 160
    @command_window.x = 320 - @command_window.width / 2
    @command_window.y = 288
    # Continue enabled determinant
    # Check if at least one save file exists
    # If enabled, make @continue_enabled true; if disabled, make it false
    @continue_enabled = (0..SL93::SAVE_FILES-1).any? {|i|
      if SL93::DREAM
        FileTest.exist?("#{SAVE_NAME}#{file_index + 1}.dream4") if SL93::DREAM
      else
        FileTest.exist?("Save#{i+1}.rxdata") if !SL93::DREAM
      end
    }
    @newgameplus_enabled = (0..8).any? {|i|
      FileTest.exist?("Complete#{i+1}.ngp")
    } if SL93::NGP
    @newgame_enabled = true
    @newgame_enabled = (SL93::CURRENT_DISK == 1) if SL93::MDS
    # If continue is enabled, move cursor to 'Continue'
    # If disabled, display 'Continue' text in gray
    if @continue_enabled
      if SL93::NGP
        @command_window.index = 2
      else
        @command_window.index = 1
      end
    else
      if SL93::NGP
        @command_window.disable_item(2)
      else
        @command_window.disable_item(1)
      end
    end
    @command_window.disable_item(0) if !@newgame_enabled && SL93::MDS
    @command_window.disable_item(1) if !@newgameplus_enabled && SL93::NGP
    # Play title BGM
    $game_system.bgm_play($data_system.title_bgm)
    # Stop playing ME and BGS
    Audio.me_stop
    Audio.bgs_stop
    # Execute transition
    Graphics.transition
    # Main loop
    loop {
      # Update game screen
      Graphics.update
      # Update input information
      Input.update
      # Frame update
      update
      # Abort loop if screen is changed
      break if $scene != self
    }
    # Prepare for transition
    Graphics.freeze
    # Dispose of command window
    @command_window.dispose
    # Dispose of title graphic
    @sprite.bitmap.dispose
    @sprite.dispose
  end
  #--------------------------------------------------------------------------
  # * Frame Update
  #--------------------------------------------------------------------------
  def update
    # Update command window
    @command_window.update
    # If C button was pressed
    if Input.trigger?(Input::C)
      # Branch by command window cursor position
      if SL93::NGP
        case @command_window.index
        when 0 then command_new_game
        when 1 then command_ngplus
        when 2 then command_continue
        when 3 then command_shutdown
        end
      else
        case @command_window.index
        when 0 then command_new_game
        when 1 then command_continue
        when 2 then command_shutdown
        end
      end
    end
  end
  #--------------------------------------------------------------------------
  # * Command: New Game
  #--------------------------------------------------------------------------
  def command_new_game
    # Play decision SE
    $game_system.se_play($data_system.decision_se)
    # Stop BGM
    Audio.bgm_stop
    # Reset frame count for measuring play time
    Graphics.frame_count = 0
    # Make each type of game object
    $game_temp          = Game_Temp.new
    $game_system        = Game_System.new
    $game_switches      = Game_Switches.new
    $game_variables     = Game_Variables.new
    $game_self_switches = Game_SelfSwitches.new
    $game_screen        = Game_Screen.new
    $game_actors        = Game_Actors.new
    $game_party         = Game_Party.new
    $game_troop         = Game_Troop.new
    $game_map           = Game_Map.new
    $game_player        = Game_Player.new
    $game_variables[SL93::DISK_VAR] = 1
    # Set up initial party
    $game_party.setup_starting_members
    # Set up initial map position
    $game_map.setup($data_system.start_map_id)
    # Move player to initial position
    $game_player.moveto($data_system.start_x, $data_system.start_y)
    # Refresh player
    $game_player.refresh
    # Run automatic change for BGM and BGS set with map
    $game_map.autoplay
    # Update map (run parallel process event)
    $game_map.update
    # Switch to map screen
    $scene = Scene_Map.new
  end
  #--------------------------------------------------------------------------
  # * Command: New Game +
  #--------------------------------------------------------------------------
  def command_ngplus
    # If continue is disabled
    unless @newgameplus_enabled
      # Play buzzer SE
      $game_system.se_play($data_system.buzzer_se)
      return
    end
    # Play decision SE
    $game_system.se_play($data_system.decision_se)
    # Switch to load screen
    $scene = Scene_New_Game_Plus.new
  end
end

#==============================================================================
# ** Scene_Map
#==============================================================================

class Scene_Map

  if SL93::MDS
    #--------------------------------------------------------------------------
    # * Main Processing
    #--------------------------------------------------------------------------
    alias shdwlink1993_mds_up update
    def update
  $scene = Scene_MDS.new if $game_variables[SL93::DISK_VAR] !=
      SL93::CURRENT_DISK
  shdwlink1993_mds_up
    end
  end
 
  if SL93::ARS && SL93::ALL_TRANSFERS
    alias shdwlink1993_ars_transfer_player transfer_player
    #--------------------------------------------------------------------------
    # * Player Place Move
    #--------------------------------------------------------------------------
    def transfer_player
      shdwlink1993_ars_transfer_player
      SL93.update_temp_save
    end
  end
 
end

#==============================================================================
# ** Scene_MDS
#==============================================================================

class Scene_MDS
  if SL93::MDS
    def main
      if $game_variables[SL93::DISK_VAR] == SL93::CURRENT_DISK
        $scene = Scene_Map.new
        return
      end
      @mds = Sprite.new
      @mds.bitmap = Bitmap.new(640, 480)
      @pic = RPG::Cache.picture(SL93::PICTURE_NAME.to_s)
      self.bitmap.blt(0, 0, @pic, Rect.new(0, 0, picture.width, picture.height))
      @mds.bitmap.draw_text(0, 0, 320, 240, 'Changing Disk.')
      Scene_Save.save_game_data('save.tmp')
      Thread.new {system("Disk #{$game_variables[SL93::DISK_VAR]}")}
      15.times {Graphics.update}
      $scene = nil
    end
  end
end

#==============================================================================
# ** Scene_File
#==============================================================================

class Scene_File
  if !SL93::CPSL
    #--------------------------------------------------------------------------
    # * Object Initialization
    #     help_text : text string shown in the help window
    #--------------------------------------------------------------------------
    def initialize(help_text)
      @help_text = help_text
    end
    #--------------------------------------------------------------------------
    # * Main Processing
    #--------------------------------------------------------------------------
    def main
      # Make help window
      @help_window = Window_Help.new
      @help_window.set_text(@help_text)
      # Make save file window
      @savefile_windows = []
      @cursor_displace = 0
      (0..3).each {|i|
        @savefile_windows.push(Window_SaveFile.new(i, make_filename(i), i))
      }
      # Select last file to be operated
      @file_index = 0
      @savefile_windows[@file_index].selected = true
      # Execute transition
      Graphics.transition
      # Main loop
      loop {
        # Update game screen
        Graphics.update
        # Update input information
        Input.update
        # Frame update
        update
        # Abort loop if screen is changed
        break if $scene != self
      }
      # Prepare for transition
      Graphics.freeze
      # Dispose of windows
      @help_window.dispose
      @savefile_windows.each {|win| win.dispose}
    end
    #--------------------------------------------------------------------------
    # * Frame Update
    #--------------------------------------------------------------------------
    def update
      # Update windows
      @help_window.update
      @savefile_windows.each {|win| win.update }
      # If C button was pressed
      if Input.trigger?(Input::C)
        # Call method: on_decision (defined by the subclasses)
        on_decision(make_filename(@file_index))
        $game_temp.last_file_index = @file_index
      # If B button was pressed
      elsif Input.trigger?(Input::B)
        # Call method: on_cancel (defined by the subclasses)
        on_cancel
      # If the down directional button was pressed
      elsif Input.repeat?(Input::DOWN)
        # If the down directional button pressed down is not a repeat,
        # or cursor position is more in front than the max save files.
        if Input.trigger?(Input::DOWN) || @file_index <
              SL93::SAVE_FILES - 1
          if @file_index == SL93::SAVE_FILES - 1
            $game_system.se_play($data_system.buzzer_se)
            return
          end
          @cursor_displace += 1
          if @cursor_displace == 4
            @cursor_displace = 3
            @savefile_windows.each {|win| win.dispose }
            @savefile_windows = []
            (0..3).each {|i|
              f = i - 2 + @file_index
              name = make_filename(f)
              @savefile_windows.push(Window_SaveFile.new(f, name, i))
              @savefile_windows[i].selected = false
            }
          end
          $game_system.se_play($data_system.cursor_se)
          @file_index = (@file_index + 1)
          @file_index = SL93::SAVE_FILES - 1 if @file_index ==
              SL93::SAVE_FILES
          (0..3).each {|i| @savefile_windows[i].selected = false }
          @savefile_windows[@cursor_displace].selected = true
          return
        end
      elsif Input.repeat?(Input::UP)
        if Input.trigger?(Input::UP) || @file_index > 0
          if @file_index == 0
            $game_system.se_play($data_system.buzzer_se)
            return
          end
          @cursor_displace -= 1
          if @cursor_displace == -1
            @cursor_displace = 0
            @savefile_windows.each {|win| win.dispose }
            @savefile_windows = []
            (0..3).each {|i|
              f = i - 1 + @file_index
              name = make_filename(f)
              @savefile_windows.push(Window_SaveFile.new(f, name, i))
              @savefile_windows[i].selected = false
            }
          end
          $game_system.se_play($data_system.cursor_se)
          @file_index = (@file_index - 1)
          @file_index = 0 if @file_index == -1
          (0..3).each {|i| @savefile_windows[i].selected = false }
          @savefile_windows[@cursor_displace].selected = true
          return
        end
      end
    end
    #--------------------------------------------------------------------------
    # * Make File Name
    #     file_index : save file index (0-3)
    #--------------------------------------------------------------------------
    def make_filename(file_index)
      return "Save#{file_index + 1}.rxdata" if !SL93::DREAM
      return "#{SAVE_NAME}#{file_index + 1}.dream4" if SL93::DREAM
    end
  end
 
end

#==============================================================================
# ** Scene_Save
#==============================================================================

class Scene_Save < Scene_File
  #--------------------------------------------------------------------------
  # * Object Initialization
  #--------------------------------------------------------------------------
  alias shdwlink1993_sfs_init initialize
  def initialize(cancel_lock = true)
    shdwlink1993_sfs_init
  @cancel_lock = cancel_lock
  end
  #--------------------------------------------------------------------------
  # * Cancel Processing
  #--------------------------------------------------------------------------
  def on_cancel
    if @cancel_save
      $game_system.se_play($data_system.cancel_se)
      return
    else
      # Play cancel SE
      $game_system.se_play($data_system.cancel_se)
      # If called from event
      if $game_temp.save_calling
        # Clear save call flag
        $game_temp.save_calling = false
        # Switch to map screen
        $scene = Scene_Map.new
      else
        # Switch to menu screen
        $scene = Scene_Menu.new(4)
      end
    end
  end
 
end

#==============================================================================
# ** Scene_Load
#==============================================================================

class Scene_Load < Scene_File
  #--------------------------------------------------------------------------
  # * Object Initialization
  #--------------------------------------------------------------------------
  def initialize
    # Remake temporary object
    $game_temp = Game_Temp.new
    # Timestamp selects new file
    $game_temp.last_file_index = 0
    latest_time = Time.at(0)
    (0..SL93::SAVE_FILES-1).each {|i|
      filename = make_filename(i)
      if FileTest.exist?(filename)
        file = File.open(filename, 'r')
        if file.mtime > latest_time
          latest_time = file.mtime
          $game_temp.last_file_index = i
        end
        file.close
      end
    }
    super('Which file would you like to load?') if !SL93::CPSL
  end
 
end

#==============================================================================
# ** Scene_New_Game_Plus
#==============================================================================

class Scene_New_Game_Plus < Scene_File
  #--------------------------------------------------------------------------
  # * Object Initialization
  #--------------------------------------------------------------------------
  def initialize
    # Remake temporary object
    $game_temp = Game_Temp.new
    # Timestamp selects new file
    $game_temp.last_file_index = 0
    latest_time = Time.at(0)
if CPSL
else
    (0..SL93::SAVE_FILES-1).each {|i|
      filename = make_filename(i)
      if FileTest.exist?(filename)
        file = File.open(filename, 'r')
        if file.mtime > latest_time
          latest_time = file.mtime
          $game_temp.last_file_index = i
        end
        file.close
      end
    }
end
    super('Which file would you like to import?')
  end
  #--------------------------------------------------------------------------
  # * Main Processing
  #--------------------------------------------------------------------------
  def main
    # Make help window
    @help_window = Window_Help.new
    @help_window.set_text(@help_text)
    # Make save file window
    @savefile_windows = []
    @cursor_displace = 0
    (0..3).each {|i|
      @savefile_windows.push(Window_NGPFile.new(i, make_filename(i), i))
    }
    # Select last file to be operated
    @file_index = 0
    @savefile_windows[@file_index].selected = true
    # Execute transition
    Graphics.transition
    # Main loop
    loop {
      # Update game screen
      Graphics.update
      # Update input information
      Input.update
      # Frame update
      update
      # Abort loop if screen is changed
      break if $scene != self
    }
    # Prepare for transition
    Graphics.freeze
    # Dispose of windows
    @help_window.dispose
    @savefile_windows.each {|win| win.dispose}
  end
  #--------------------------------------------------------------------------
  # * Decision Processing
  #--------------------------------------------------------------------------
  def on_decision(filename)
    # If file doesn't exist
    unless FileTest.exist?(filename)
      # Play buzzer SE
      $game_system.se_play($data_system.buzzer_se)
      return
    end
    # Play load SE
    $game_system.se_play($data_system.load_se)
    # Read save data
    file = File.open(filename, 'rb')
    if read_save_data(file)
      file.close
      # Set up initial party
      $game_party.setup_starting_members if !SL93::ACTORS
      # Set up initial map position
      $game_map.setup($data_system.start_map_id)
      # Move player to initial position
      $game_player.moveto($data_system.start_x, $data_system.start_y)
      # Refresh player
      $game_player.refresh
      # Run automatic change for BGM and BGS set with map
      $game_map.autoplay
      # Update map (run parallel process event)
      $game_map.update
  # Close any possible loopholes
  $game_system.ngp = false
      # Switch to map screen
      $scene = Scene_Map.new
    else
      # Reset game_system
      $game_system = Game_System.new
      # Play buzzer SE
      $game_system.se_play($data_system.buzzer_se)
      return
    end
  end
  #--------------------------------------------------------------------------
  # * Cancel Processing
  #--------------------------------------------------------------------------
  def on_cancel
    # Play cancel SE
    $game_system.se_play($data_system.cancel_se)
    # Switch to title screen
    $scene = Scene_Title.new
  end
  #--------------------------------------------------------------------------
  # * Read Save Data
  #     file : file object for reading (opened)
  #--------------------------------------------------------------------------
  def read_save_data(file)
    if DREAM
      DREAM.load_game(file)
    else
      characters           = Marshal.load(file)
      Graphics.frame_count = Marshal.load(file)
      $game_system         = Marshal.load(file)
      $game_switches       = Marshal.load(file)
      $game_variables      = Marshal.load(file)
      $game_actors         = Marshal.load(file)
      $game_party          = Marshal.load(file)
      $game_troop          = Marshal.load(file)
      $game_map            = Marshal.load(file)
    end
    Graphics.frame_count = 0 if !SL93::TIME
    return false if $game_system.ngp != true
    $game_switches_bk, $game_variables_bk = $game_switches, $game_variables
    $game_switches      = Game_Switches.new
    $game_variables     = Game_Variables.new
    SL93::SWI_EXCEPTIONS.each {|s|
      $game_switches[s] = $game_switches_bk[s]
    }
    SL93::VAR_EXCEPTIONS.each {|v|
      $game_variables[v] = $game_variables_bk[v]
    }
    $game_self_switches = Game_SelfSwitches.new
    $game_screen        = Game_Screen.new
    $game_party.lose_gold(9999999) if !SL93::GOLD
    $game_player        = Game_Player.new
    # Refresh party members
    $game_party.refresh
    return true
  end
end

#==============================================================================
# ** Scene_Gameover
#------------------------------------------------------------------------------
#  This class performs game over screen processing.
#==============================================================================

class Scene_Gameover
  if SL93::ARS
    #--------------------------------------------------------------------------
    # * Main Processing
    #--------------------------------------------------------------------------
    def main
      # Make game over graphic
      @sprite = Sprite.new
      @sprite.bitmap = RPG::Cache.gameover($data_system.gameover_name)
      # Stop BGM and BGS
      $game_system.bgm_play(nil)
      $game_system.bgs_play(nil)
      # Play game over ME
      $game_system.me_play($data_system.gameover_me)
      # Execute transition
      Graphics.transition(120)
      c1 = 'Retry'
      c2 = 'Quit'
      @command_window = Window_Command.new(192, [c1, c2])
      @command_window.back_opacity = 160
      @command_window.x = 320 - @command_window.width / 2
      @command_window.y = 288
      # Main loop
      loop {
        # Update game screen
        Graphics.update
        # Update input information
        Input.update
        # Frame update
        update
        # Abort loop if screen is changed
        break if $scene != self
      }
      # Prepare for transition
      Graphics.freeze
      # Dispose of game over graphic
      @sprite.bitmap.dispose
      @sprite.dispose
      @command_window.dispose
      # Execute transition
      Graphics.transition(40)
      # Prepare for transition
      Graphics.freeze
      # If battle test
      $scene = nil if $BTEST
    end
    #--------------------------------------------------------------------------
    # * Frame Update
    #--------------------------------------------------------------------------
    def update
      @command_window.update
      if Input.trigger?(Input::C)
        case @command_window.index
        when 0 then SL93.restore_temp_save
        when 1 then $scene = Scene_Title.new
        end
      end
    end
  end
end



Instructions

Found in Script.


Compatibility

Doesn't work with other Save Systems, New Game Plus Systems, or the SDK.
Requires a little modifying to work with Title Screen Mods.
Should work with DREAM and CPSL.


Credits and Thanks


  • shdwlink1993 - for making it.
  • Blizzard - for some inspiration and scripting conventions.
  • Phylomortis - because part of the Infinite Save Files came from his script.
  • Memor-X - for requesting the Multiple Disk System.



Author's Notes

As this is the first script I have released, any and all issues or bug reports would be greatly appreciated. If you have any requests or add-ons you'd like to see, don't hesitate to drop a suggestion.

Also, the Multiple Disk System is currently beta because I have not tested it completely yet. There is a chance that there are blatantly (and not-so-blatantly) obvious errors in it.

Why do I always release updates for this script when it's very early in the morning?
25
Entertainment / Captain SNES
July 06, 2008, 12:24:17 pm
Has anyone heard of Captain NES, the cartoon series? Well, this has almost nothing to do with it. It's a webcomic (like 8-bit theater) that is hillarious (also like 8-bit theater) which has SNES characters (not like 8-bit theater) and a plot (also unlike 8-bit theater. Wait. Does 8-bit theater have a plot?)

Anyways, check it out at www.captainsnes.com. Do it NOW! ;D
26
Recently I've been looking around at some of the Japanese Script sites and I've been looking for one run by a group/scripter (I have no clue) called XRXS. If anyone knows their website (and would let me know), that'd be great.

Thanks in advance.
27
News / Suggestions / Feedback / Code Image
June 26, 2008, 12:16:50 am
Simply put, I think it would be a good idea to change the "<?PHP" image that appears in the dark theme when you have a block of code () to something more used on the forum, since I haven't seen any PHP scripts here. Could that get changed to something like "RGSS" instead, considering that we tend to actually use it here ;D?
28
At my school, we have a wide variety of various and sundry security measures implemented to ensure that us kids don't do anything crazy and insane like run almost every program in existence (I figured out how to short-cut that one). There is, however, one issue I'm having.

I need some method of using one .reg file. Said .reg file contains four RTP locations (so I can run RPG Makers 2000, 2003, XP, and VX) that are on the flash-drive. The catches?

  • I can't just use regedit (after making the computer think it's OK to run it), as it says that editing is blocked.

  • .reg files are blocked automatically, and I don't think there are any exceptions to this rule.

  • .vbs files are blocked as well, meaning that my one other solution to the problem refuses to work.

  • Reinstalling the RTP to the flash-drive fails because it says I need to be an admin.



If anyone could help, I would greatly appreciate it! <.<
29
This is a very small thing. Unfortunately, I don't know how to go about this process: All I need is that when someone is Poisoned, they cannot be killed by said poison. It will drag them all the way to 1HP, but it won't actually kill them. If you've played Pokemon, you know how this works.

Thanks in advance
     ~ shdwlink1993

EDIT: Maybe I shouldn't have posted so soon >.< I got it working. If a mod feels like deleting this, I wouldn't mind at all.
30
I made a similar post to this one on RMRev, but I wanted some input, so I'm posting it here ;).

I have hit on a very interesting little quirk in RPG Makers XP and VX. Overwriting any "hidden module" (Input, Graphics, RPG, probably more, but I'm not sure) also alters something in the .dll file you are using, meaning that there's a good chance that your change will affect all the games.

How do I know this? Simple: RPG Maker VX is getting it's Input module from Tons of Addons, in an RMXP project, which I used about three months ago, and then changed my mind on it's Input Script (which really makes no difference, because I can still use the numberpad... And I don't remember why I stopped trying to use the Input script, but it still works anyway. Persistent script, Blizz! It works after you told it not to on other projects! ;D.)

This makes some very interesting things happen if you are stupid enough to attempt them. The biggest hint I had that this dll overwriting was occurring was when, as a test, I "undefined" (meaning I defined it as nothing) Graphics.Update. And the results of that are still in effect, even though I am no longer using that script (In case you wanted to know, the game runs about 1/3 faster than it used to, with no downsides that I know of!)

I'm not 100% certain that it is the dll file that is causing this, but unless someone has another idea as to what is causing this, I'm thinking it's the dll. Also, I'm curious to see if anyone has an explicable reason as to why VX is getting settings from XP, because this isn't making very much sense to me.