1279 lines
No EOL
26 KiB
Ruby
1279 lines
No EOL
26 KiB
Ruby
# encoding: utf-8
|
|
# rgss2.rb
|
|
# author: dice2000
|
|
# original author: aoitaku
|
|
# https://gist.github.com/aoitaku/7822424
|
|
#
|
|
# 本プログラムはRPGツクールVX 正規ユーザーが
|
|
# RPGツクールVXでの利用を目的とする場合においてのみ
|
|
# 使用できます。
|
|
#
|
|
require 'jsonable'
|
|
class Color
|
|
include Jsonable
|
|
attr_accessor :red, :green, :blue, :alpha
|
|
def initialize(data)
|
|
@red, @green, @blue, @alpha = *data
|
|
end
|
|
def _dump(limit)
|
|
[@red, @green, @blue, @alpha].pack("EEEE")
|
|
end
|
|
def self._load(obj)
|
|
Color.new(obj.unpack("EEEE"))
|
|
end
|
|
end
|
|
class Table
|
|
include Jsonable
|
|
def initialize(data)
|
|
@num_of_dimensions,
|
|
@xsize, @ysize, @zsize,
|
|
@num_of_elements,
|
|
*@elements = *data
|
|
if @num_of_dimensions > 1
|
|
if @xsize > 1
|
|
@elements = @elements.each_slice(@xsize).to_a
|
|
else
|
|
@elements = @elements.map{|element|[element]}
|
|
end
|
|
end
|
|
if @num_of_dimensions > 2
|
|
if @ysize > 1
|
|
@elements = @elements.each_slice(@ysize).to_a
|
|
else
|
|
@elements = @elements.map{|element|[element]}
|
|
end
|
|
end
|
|
end
|
|
def _dump(limit)
|
|
[@num_of_dimensions,
|
|
@xsize, @ysize, @zsize,
|
|
@num_of_elements,
|
|
*@elements.flatten].pack("VVVVVv*")
|
|
end
|
|
def self._load(obj)
|
|
Table.new(obj.unpack("VVVVVv*"))
|
|
end
|
|
end
|
|
class Tone
|
|
include Jsonable
|
|
attr_accessor :red, :green, :blue, :gray
|
|
def initialize(data)
|
|
@red, @green, @blue, @gray = *data
|
|
end
|
|
def _dump(limit)
|
|
[@red, @green, @blue, @gray].pack("EEEE")
|
|
end
|
|
def self._load(obj)
|
|
Tone.new(obj.unpack("EEEE"))
|
|
end
|
|
end
|
|
#
|
|
# ここまでは元ファイルと定義が同一
|
|
#
|
|
module RPG
|
|
def self.unpack_str(str)
|
|
tmp_ary = str.unpack("U*")
|
|
str = ""
|
|
tmp_ary.each{ |c|
|
|
str += c.chr("UTF-8")
|
|
}
|
|
return str
|
|
end
|
|
end
|
|
#
|
|
# RGSS2
|
|
#
|
|
# RPG::Actor:アクターのデータクラス。
|
|
#
|
|
class RPG::Actor
|
|
include Jsonable
|
|
def unpack_names
|
|
@name = RPG::unpack_str(@name)
|
|
@character_name = RPG::unpack_str(@character_name)
|
|
@face_name = RPG::unpack_str(@face_name)
|
|
end
|
|
def initialize
|
|
@id = 0
|
|
@name = ""
|
|
@class_id = 1
|
|
@initial_level = 1
|
|
@exp_basis = 25
|
|
@exp_inflation = 35
|
|
@character_name = ""
|
|
@character_index = 0
|
|
@face_name = ""
|
|
@face_index = 0
|
|
@parameters = nil
|
|
#@parameters = Table.new(6,100)
|
|
#for i in 1..99
|
|
# @parameters[0,i] = 400+i*50
|
|
# @parameters[1,i] = 80+i*10
|
|
# @parameters[2,i] = 15+i*5/4
|
|
# @parameters[3,i] = 15+i*5/4
|
|
# @parameters[4,i] = 20+i*5/2
|
|
# @parameters[5,i] = 20+i*5/2
|
|
#end
|
|
@weapon_id = 0
|
|
@armor1_id = 0
|
|
@armor2_id = 0
|
|
@armor3_id = 0
|
|
@armor4_id = 0
|
|
@two_swords_style = false
|
|
@fix_equipment = false
|
|
@auto_battle = false
|
|
@super_guard = false
|
|
@pharmacology = false
|
|
@critical_bonus = false
|
|
end
|
|
attr_accessor :id
|
|
attr_accessor :name
|
|
attr_accessor :class_id
|
|
attr_accessor :initial_level
|
|
attr_accessor :exp_basis
|
|
attr_accessor :exp_inflation
|
|
attr_accessor :character_name
|
|
attr_accessor :character_index
|
|
attr_accessor :face_name
|
|
attr_accessor :face_index
|
|
attr_accessor :parameters
|
|
attr_accessor :weapon_id
|
|
attr_accessor :armor1_id
|
|
attr_accessor :armor2_id
|
|
attr_accessor :armor3_id
|
|
attr_accessor :armor4_id
|
|
attr_accessor :two_swords_style
|
|
attr_accessor :fix_equipment
|
|
attr_accessor :auto_battle
|
|
attr_accessor :super_guard
|
|
attr_accessor :pharmacology
|
|
attr_accessor :critical_bonus
|
|
end
|
|
#
|
|
# RPG::Animation:アニメーションのデータクラス。
|
|
#
|
|
class RPG::Animation
|
|
include Jsonable
|
|
def unpack_names
|
|
@name = RPG::unpack_str(@name)
|
|
@animation1_name = RPG::unpack_str(@animation1_name)
|
|
@animation2_name = RPG::unpack_str(@animation2_name)
|
|
end
|
|
def initialize
|
|
@id = 0
|
|
@name = ""
|
|
@animation1_name = ""
|
|
@animation1_hue = 0
|
|
@animation2_name = ""
|
|
@animation2_hue = 0
|
|
@position = 1
|
|
@frame_max = 1
|
|
@frames = [RPG::Animation::Frame.new]
|
|
@timings = []
|
|
end
|
|
attr_accessor :id
|
|
attr_accessor :name
|
|
attr_accessor :animation1_name
|
|
attr_accessor :animation1_hue
|
|
attr_accessor :animation2_name
|
|
attr_accessor :animation2_hue
|
|
attr_accessor :position
|
|
attr_accessor :frame_max
|
|
attr_accessor :frames
|
|
attr_accessor :timings
|
|
end
|
|
|
|
class RPG::Animation::Frame
|
|
include Jsonable
|
|
def initialize
|
|
@cell_max = 0
|
|
@cell_data = Table.new([0, 0])
|
|
end
|
|
attr_accessor :cell_max
|
|
attr_accessor :cell_data
|
|
end
|
|
|
|
class RPG::Animation::Timing
|
|
include Jsonable
|
|
def initialize
|
|
@frame = 0
|
|
@se = RPG::SE.new("", 80)
|
|
@flash_scope = 0
|
|
@flash_color = Color.new([255,255,255,255])
|
|
@flash_duration = 5
|
|
end
|
|
attr_accessor :frame
|
|
attr_accessor :se
|
|
attr_accessor :flash_scope
|
|
attr_accessor :flash_color
|
|
attr_accessor :flash_duration
|
|
end
|
|
|
|
class RPG::Area
|
|
include Jsonable
|
|
def unpack_names
|
|
@name = RPG::unpack_str(@name)
|
|
end
|
|
def initialize
|
|
@id = 0
|
|
@name = ""
|
|
@map_id = 0
|
|
@rect = Rect.new(0,0,0,0)
|
|
@encounter_list = []
|
|
@order = 0
|
|
end
|
|
attr_accessor :id
|
|
attr_accessor :name
|
|
attr_accessor :map_id
|
|
attr_accessor :rect
|
|
attr_accessor :encounter_list
|
|
attr_accessor :order
|
|
end
|
|
|
|
class RPG::BaseItem
|
|
include Jsonable
|
|
def unpack_names
|
|
@name = RPG::unpack_str(@name)
|
|
@description = RPG::unpack_str(@description)
|
|
@note = RPG::unpack_str(@note)
|
|
end
|
|
def initialize
|
|
@id = 0
|
|
@name = ""
|
|
@icon_index = 0
|
|
@description = ""
|
|
@note = ""
|
|
end
|
|
attr_accessor :id
|
|
attr_accessor :name
|
|
attr_accessor :icon_index
|
|
attr_accessor :description
|
|
attr_accessor :note
|
|
end
|
|
|
|
class RPG::Armor < RPG::BaseItem
|
|
include Jsonable
|
|
def initialize
|
|
super
|
|
@kind = 0
|
|
@price = 0
|
|
@eva = 0
|
|
@atk = 0
|
|
@def = 0
|
|
@spi = 0
|
|
@agi = 0
|
|
@prevent_critical = false
|
|
@half_mp_cost = false
|
|
@double_exp_gain = false
|
|
@auto_hp_recover = false
|
|
@element_set = []
|
|
@state_set = []
|
|
end
|
|
attr_accessor :kind
|
|
attr_accessor :price
|
|
attr_accessor :eva
|
|
attr_accessor :atk
|
|
attr_accessor :def
|
|
attr_accessor :spi
|
|
attr_accessor :agi
|
|
attr_accessor :prevent_critical
|
|
attr_accessor :half_mp_cost
|
|
attr_accessor :double_exp_gain
|
|
attr_accessor :auto_hp_recover
|
|
attr_accessor :element_set
|
|
attr_accessor :state_set
|
|
end
|
|
|
|
class RPG::Weapon < RPG::BaseItem
|
|
include Jsonable
|
|
def initialize
|
|
super
|
|
@animation_id = 0
|
|
@price = 0
|
|
@hit = 95
|
|
@atk = 0
|
|
@def = 0
|
|
@spi = 0
|
|
@agi = 0
|
|
@two_handed = false
|
|
@fast_attack = false
|
|
@dual_attack = false
|
|
@critical_bonus = false
|
|
@element_set = []
|
|
@state_set = []
|
|
end
|
|
attr_accessor :animation_id
|
|
attr_accessor :price
|
|
attr_accessor :hit
|
|
attr_accessor :atk
|
|
attr_accessor :def
|
|
attr_accessor :spi
|
|
attr_accessor :agi
|
|
attr_accessor :two_handed
|
|
attr_accessor :fast_attack
|
|
attr_accessor :dual_attack
|
|
attr_accessor :critical_bonus
|
|
attr_accessor :element_set
|
|
attr_accessor :state_set
|
|
end
|
|
|
|
class RPG::UsableItem < RPG::BaseItem
|
|
include Jsonable
|
|
def initialize
|
|
super
|
|
@scope = 0
|
|
@occasion = 0
|
|
@speed = 0
|
|
@animation_id = 0
|
|
@common_event_id = 0
|
|
@base_damage = 0
|
|
@variance = 20
|
|
@atk_f = 0
|
|
@spi_f = 0
|
|
@physical_attack = false
|
|
@damage_to_mp = false
|
|
@absorb_damage = false
|
|
@ignore_defense = false
|
|
@element_set = []
|
|
@plus_state_set = []
|
|
@minus_state_set = []
|
|
end
|
|
def for_opponent?
|
|
return [1, 2, 3, 4, 5, 6].include?(@scope)
|
|
end
|
|
def for_friend?
|
|
return [7, 8, 9, 10, 11].include?(@scope)
|
|
end
|
|
def for_dead_friend?
|
|
return [9, 10].include?(@scope)
|
|
end
|
|
def for_user?
|
|
return [11].include?(@scope)
|
|
end
|
|
def for_one?
|
|
return [1, 3, 4, 7, 9, 11].include?(@scope)
|
|
end
|
|
def for_two?
|
|
return [5].include?(@scope)
|
|
end
|
|
def for_three?
|
|
return [6].include?(@scope)
|
|
end
|
|
def for_random?
|
|
return [4, 5, 6].include?(@scope)
|
|
end
|
|
def for_all?
|
|
return [2, 8, 10].include?(@scope)
|
|
end
|
|
def dual?
|
|
return [3].include?(@scope)
|
|
end
|
|
def need_selection?
|
|
return [1, 3, 7, 9].include?(@scope)
|
|
end
|
|
def battle_ok?
|
|
return [0, 1].include?(@occasion)
|
|
end
|
|
def menu_ok?
|
|
return [0, 2].include?(@occasion)
|
|
end
|
|
attr_accessor :scope
|
|
attr_accessor :occasion
|
|
attr_accessor :speed
|
|
attr_accessor :animation_id
|
|
attr_accessor :common_event_id
|
|
attr_accessor :base_damage
|
|
attr_accessor :variance
|
|
attr_accessor :atk_f
|
|
attr_accessor :spi_f
|
|
attr_accessor :physical_attack
|
|
attr_accessor :damage_to_mp
|
|
attr_accessor :absorb_damage
|
|
attr_accessor :ignore_defense
|
|
attr_accessor :element_set
|
|
attr_accessor :plus_state_set
|
|
attr_accessor :minus_state_set
|
|
end
|
|
|
|
class RPG::Item < RPG::UsableItem
|
|
include Jsonable
|
|
def initialize
|
|
super
|
|
@scope = 7
|
|
@price = 0
|
|
@consumable = true
|
|
@hp_recovery_rate = 0
|
|
@hp_recovery = 0
|
|
@mp_recovery_rate = 0
|
|
@mp_recovery = 0
|
|
@parameter_type = 0
|
|
@parameter_points = 0
|
|
end
|
|
attr_accessor :price
|
|
attr_accessor :consumable
|
|
attr_accessor :hp_recovery_rate
|
|
attr_accessor :hp_recovery
|
|
attr_accessor :mp_recovery_rate
|
|
attr_accessor :mp_recovery
|
|
attr_accessor :parameter_type
|
|
attr_accessor :parameter_points
|
|
end
|
|
|
|
class RPG::Skill < RPG::UsableItem
|
|
include Jsonable
|
|
def unpack_names
|
|
super
|
|
@message1 = RPG::unpack_str(@message1)
|
|
@message2 = RPG::unpack_str(@message2)
|
|
end
|
|
def initialize
|
|
super
|
|
@scope = 1
|
|
@mp_cost = 0
|
|
@hit = 100
|
|
@message1 = ""
|
|
@message2 = ""
|
|
end
|
|
attr_accessor :mp_cost
|
|
attr_accessor :hit
|
|
attr_accessor :message1
|
|
attr_accessor :message2
|
|
end
|
|
|
|
class RPG::AudioFile
|
|
include Jsonable
|
|
def unpack_names
|
|
@name = RPG::unpack_str(@name)
|
|
end
|
|
def initialize(name = "", volume = 100, pitch = 100)
|
|
@name = name
|
|
@volume = volume
|
|
@pitch = pitch
|
|
end
|
|
attr_accessor :name
|
|
attr_accessor :volume
|
|
attr_accessor :pitch
|
|
end
|
|
|
|
class RPG::BGM < RPG::AudioFile
|
|
@@last = RPG::BGM.new
|
|
def play
|
|
if @name.empty?
|
|
Audio.bgm_stop
|
|
@@last = RPG::BGM.new
|
|
else
|
|
Audio.bgm_play("Audio/BGM/" + @name, @volume, @pitch)
|
|
@@last = self
|
|
end
|
|
end
|
|
def self.stop
|
|
Audio.bgm_stop
|
|
@@last = RPG::BGM.new
|
|
end
|
|
def self.fade(time)
|
|
Audio.bgm_fade(time)
|
|
@@last = RPG::BGM.new
|
|
end
|
|
def self.last
|
|
@@last
|
|
end
|
|
end
|
|
|
|
class RPG::BGS < RPG::AudioFile
|
|
@@last = RPG::BGS.new
|
|
def play
|
|
if @name.empty?
|
|
Audio.bgs_stop
|
|
@@last = RPG::BGS.new
|
|
else
|
|
Audio.bgs_play("Audio/BGS/" + @name, @volume, @pitch)
|
|
@@last = self
|
|
end
|
|
end
|
|
def self.stop
|
|
Audio.bgs_stop
|
|
@@last = RPG::BGS.new
|
|
end
|
|
def self.fade(time)
|
|
Audio.bgs_fade(time)
|
|
@@last = RPG::BGS.new
|
|
end
|
|
def self.last
|
|
@@last
|
|
end
|
|
end
|
|
|
|
class RPG::ME < RPG::AudioFile
|
|
def play
|
|
if @name.empty?
|
|
Audio.me_stop
|
|
else
|
|
Audio.me_play("Audio/ME/" + @name, @volume, @pitch)
|
|
end
|
|
end
|
|
def self.stop
|
|
Audio.me_stop
|
|
end
|
|
def self.fade(time)
|
|
Audio.me_fade(time)
|
|
end
|
|
end
|
|
|
|
class RPG::SE < RPG::AudioFile
|
|
def play
|
|
unless @name.empty?
|
|
Audio.se_play("Audio/SE/" + @name, @volume, @pitch)
|
|
end
|
|
end
|
|
def self.stop
|
|
Audio.se_stop
|
|
end
|
|
end
|
|
|
|
class RPG::Class
|
|
include Jsonable
|
|
def unpack_names
|
|
@name = RPG::unpack_str(@name)
|
|
@skill_name = RPG::unpack_str(@skill_name)
|
|
end
|
|
def initialize
|
|
@id = 0
|
|
@name = ""
|
|
@position = 0
|
|
@weapon_set = []
|
|
@armor_set = []
|
|
@element_ranks = Table.new(1)
|
|
@state_ranks = Table.new(1)
|
|
@learnings = []
|
|
@skill_name_valid = false
|
|
@skill_name = ""
|
|
end
|
|
attr_accessor :id
|
|
attr_accessor :name
|
|
attr_accessor :position
|
|
attr_accessor :weapon_set
|
|
attr_accessor :armor_set
|
|
attr_accessor :element_ranks
|
|
attr_accessor :state_ranks
|
|
attr_accessor :learnings
|
|
attr_accessor :skill_name_valid
|
|
attr_accessor :skill_name
|
|
end
|
|
|
|
class RPG::Class::Learning
|
|
include Jsonable
|
|
def initialize
|
|
@level = 1
|
|
@skill_id = 1
|
|
end
|
|
attr_accessor :level
|
|
attr_accessor :skill_id
|
|
end
|
|
|
|
class RPG::CommonEvent
|
|
include Jsonable
|
|
def unpack_names
|
|
@name = RPG::unpack_str(@name)
|
|
@list.each{ |i| i.unpack_names }
|
|
end
|
|
def initialize
|
|
@id = 0
|
|
@name = ""
|
|
@trigger = 0
|
|
@switch_id = 1
|
|
@list = [RPG::EventCommand.new]
|
|
end
|
|
attr_accessor :id
|
|
attr_accessor :name
|
|
attr_accessor :trigger
|
|
attr_accessor :switch_id
|
|
attr_accessor :list
|
|
end
|
|
|
|
class RPG::Enemy
|
|
include Jsonable
|
|
def unpack_names
|
|
@name = RPG::unpack_str(@name)
|
|
@battler_name = RPG::unpack_str(@battler_name)
|
|
@note = RPG::unpack_str(@note)
|
|
end
|
|
def initialize
|
|
@id = 0
|
|
@name = ""
|
|
@battler_name = ""
|
|
@battler_hue = 0
|
|
@maxhp = 10
|
|
@maxmp = 10
|
|
@atk = 10
|
|
@def = 10
|
|
@spi = 10
|
|
@agi = 10
|
|
@hit = 95
|
|
@eva = 5
|
|
@exp = 0
|
|
@gold = 0
|
|
@drop_item1 = RPG::Enemy::DropItem.new
|
|
@drop_item2 = RPG::Enemy::DropItem.new
|
|
@levitate = false
|
|
@has_critical = false
|
|
@element_ranks = Table.new(1)
|
|
@state_ranks = Table.new(1)
|
|
@actions = [RPG::Enemy::Action.new]
|
|
@note = ""
|
|
end
|
|
attr_accessor :id
|
|
attr_accessor :name
|
|
attr_accessor :battler_name
|
|
attr_accessor :battler_hue
|
|
attr_accessor :maxhp
|
|
attr_accessor :maxmp
|
|
attr_accessor :atk
|
|
attr_accessor :def
|
|
attr_accessor :spi
|
|
attr_accessor :agi
|
|
attr_accessor :hit
|
|
attr_accessor :eva
|
|
attr_accessor :exp
|
|
attr_accessor :gold
|
|
attr_accessor :drop_item1
|
|
attr_accessor :drop_item2
|
|
attr_accessor :levitate
|
|
attr_accessor :has_critical
|
|
attr_accessor :element_ranks
|
|
attr_accessor :state_ranks
|
|
attr_accessor :actions
|
|
attr_accessor :note
|
|
end
|
|
|
|
class RPG::Enemy::Action
|
|
include Jsonable
|
|
def initialize
|
|
@kind = 0
|
|
@basic = 0
|
|
@skill_id = 1
|
|
@condition_type = 0
|
|
@condition_param1 = 0
|
|
@condition_param2 = 0
|
|
@rating = 5
|
|
end
|
|
def skill?
|
|
return @kind == 1
|
|
end
|
|
attr_accessor :kind
|
|
attr_accessor :basic
|
|
attr_accessor :skill_id
|
|
attr_accessor :condition_type
|
|
attr_accessor :condition_param1
|
|
attr_accessor :condition_param2
|
|
attr_accessor :rating
|
|
end
|
|
|
|
class RPG::Enemy::DropItem
|
|
include Jsonable
|
|
def initialize
|
|
@kind = 0
|
|
@item_id = 1
|
|
@weapon_id = 1
|
|
@armor_id = 1
|
|
@denominator = 1
|
|
end
|
|
attr_accessor :kind
|
|
attr_accessor :item_id
|
|
attr_accessor :weapon_id
|
|
attr_accessor :armor_id
|
|
attr_accessor :denominator
|
|
end
|
|
|
|
class RPG::Event
|
|
include Jsonable
|
|
def unpack_names
|
|
@name = RPG::unpack_str(@name)
|
|
@pages.each{ |i| i.unpack_names }
|
|
end
|
|
def initialize(x = 0, y = 0)
|
|
@id = 0
|
|
@name = ""
|
|
@x = x
|
|
@y = y
|
|
@pages = [RPG::Event::Page.new]
|
|
end
|
|
attr_accessor :id
|
|
attr_accessor :name
|
|
attr_accessor :x
|
|
attr_accessor :y
|
|
attr_accessor :pages
|
|
end
|
|
|
|
class RPG::Event::Page
|
|
include Jsonable
|
|
def unpack_names
|
|
@graphic.unpack_names
|
|
@list.each{ |i| i.unpack_names }
|
|
end
|
|
def initialize
|
|
@condition = RPG::Event::Page::Condition.new
|
|
@graphic = RPG::Event::Page::Graphic.new
|
|
@move_type = 0
|
|
@move_speed = 3
|
|
@move_frequency = 3
|
|
@move_route = RPG::MoveRoute.new
|
|
@walk_anime = true
|
|
@step_anime = false
|
|
@direction_fix = false
|
|
@through = false
|
|
@priority_type = 0
|
|
@trigger = 0
|
|
@list = [RPG::EventCommand.new]
|
|
end
|
|
attr_accessor :condition
|
|
attr_accessor :graphic
|
|
attr_accessor :move_type
|
|
attr_accessor :move_speed
|
|
attr_accessor :move_frequency
|
|
attr_accessor :move_route
|
|
attr_accessor :walk_anime
|
|
attr_accessor :step_anime
|
|
attr_accessor :direction_fix
|
|
attr_accessor :through
|
|
attr_accessor :priority_type
|
|
attr_accessor :trigger
|
|
attr_accessor :list
|
|
end
|
|
|
|
class RPG::Event::Page::Condition
|
|
include Jsonable
|
|
def initialize
|
|
@switch1_valid = false
|
|
@switch2_valid = false
|
|
@variable_valid = false
|
|
@self_switch_valid = false
|
|
@item_valid = false
|
|
@actor_valid = false
|
|
@switch1_id = 1
|
|
@switch2_id = 1
|
|
@variable_id = 1
|
|
@variable_value = 0
|
|
@self_switch_ch = "A"
|
|
@item_id = 1
|
|
@actor_id = 1
|
|
end
|
|
attr_accessor :switch1_valid
|
|
attr_accessor :switch2_valid
|
|
attr_accessor :variable_valid
|
|
attr_accessor :self_switch_valid
|
|
attr_accessor :item_valid
|
|
attr_accessor :actor_valid
|
|
attr_accessor :switch1_id
|
|
attr_accessor :switch2_id
|
|
attr_accessor :variable_id
|
|
attr_accessor :variable_value
|
|
attr_accessor :self_switch_ch
|
|
attr_accessor :item_id
|
|
attr_accessor :actor_id
|
|
end
|
|
|
|
class RPG::Event::Page::Graphic
|
|
include Jsonable
|
|
def unpack_names
|
|
@character_name = RPG::unpack_str(@character_name)
|
|
end
|
|
def initialize
|
|
@tile_id = 0
|
|
@character_name = ""
|
|
@character_index = 0
|
|
@direction = 2
|
|
@pattern = 0
|
|
end
|
|
attr_accessor :tile_id
|
|
attr_accessor :character_name
|
|
attr_accessor :character_index
|
|
attr_accessor :direction
|
|
attr_accessor :pattern
|
|
end
|
|
|
|
class RPG::EventCommand
|
|
include Jsonable
|
|
def unpack_names
|
|
tmp = []
|
|
tmp = @parameters.dup
|
|
@parameters = []
|
|
tmp.each{|i|
|
|
if i.is_a?(String)
|
|
@parameters << RPG::unpack_str(i).dup
|
|
else
|
|
@parameters << i
|
|
end
|
|
}
|
|
end
|
|
def initialize(code = 0, indent = 0, parameters = [])
|
|
@code = code
|
|
@indent = indent
|
|
@parameters = parameters
|
|
end
|
|
attr_accessor :code
|
|
attr_accessor :indent
|
|
attr_accessor :parameters
|
|
end
|
|
|
|
class RPG::Map
|
|
include Jsonable
|
|
def unpack_names
|
|
@bgm.unpack_names
|
|
@bgs.unpack_names
|
|
@parallax_name = RPG::unpack_str(@parallax_name)
|
|
if @events != {}
|
|
@events.each_value{|v|
|
|
v.unpack_names
|
|
}
|
|
end
|
|
end
|
|
def initialize(width = 17, height = 13)
|
|
@width = width
|
|
@height = height
|
|
@scroll_type = 0
|
|
@autoplay_bgm = false
|
|
@bgm = RPG::BGM.new
|
|
@autoplay_bgs = false
|
|
@bgs = RPG::BGS.new("", 80)
|
|
@disable_dashing = false
|
|
@encounter_list = []
|
|
@encounter_step = 30
|
|
@parallax_name = ""
|
|
@parallax_loop_x = false
|
|
@parallax_loop_y = false
|
|
@parallax_sx = 0
|
|
@parallax_sy = 0
|
|
@parallax_show = false
|
|
@data = Table.new([width, height, 3])
|
|
@events = {}
|
|
end
|
|
attr_accessor :width
|
|
attr_accessor :height
|
|
attr_accessor :scroll_type
|
|
attr_accessor :autoplay_bgm
|
|
attr_accessor :bgm
|
|
attr_accessor :autoplay_bgs
|
|
attr_accessor :bgs
|
|
attr_accessor :disable_dashing
|
|
attr_accessor :encounter_list
|
|
attr_accessor :encounter_step
|
|
attr_accessor :parallax_name
|
|
attr_accessor :parallax_loop_x
|
|
attr_accessor :parallax_loop_y
|
|
attr_accessor :parallax_sx
|
|
attr_accessor :parallax_sy
|
|
attr_accessor :parallax_show
|
|
attr_accessor :data
|
|
attr_accessor :events
|
|
end
|
|
|
|
class RPG::MapInfo
|
|
include Jsonable
|
|
def unpack_names
|
|
@name = RPG::unpack_str(@name)
|
|
end
|
|
def initialize
|
|
@name = ""
|
|
@parent_id = 0
|
|
@order = 0
|
|
@expanded = false
|
|
@scroll_x = 0
|
|
@scroll_y = 0
|
|
end
|
|
attr_accessor :name
|
|
attr_accessor :parent_id
|
|
attr_accessor :order
|
|
attr_accessor :expanded
|
|
attr_accessor :scroll_x
|
|
attr_accessor :scroll_y
|
|
end
|
|
|
|
class RPG::MoveCommand
|
|
include Jsonable
|
|
def initialize(code = 0, parameters = [])
|
|
@code = code
|
|
@parameters = parameters
|
|
end
|
|
attr_accessor :code
|
|
attr_accessor :parameters
|
|
end
|
|
|
|
class RPG::MoveRoute
|
|
include Jsonable
|
|
def initialize
|
|
@repeat = true
|
|
@skippable = false
|
|
@wait = false
|
|
@list = [RPG::MoveCommand.new]
|
|
end
|
|
attr_accessor :repeat
|
|
attr_accessor :skippable
|
|
attr_accessor :wait
|
|
attr_accessor :list
|
|
end
|
|
|
|
class RPG::State
|
|
include Jsonable
|
|
def unpack_names
|
|
@name = RPG::unpack_str(@name)
|
|
@message1 = RPG::unpack_str(@message1)
|
|
@message2 = RPG::unpack_str(@message2)
|
|
@message3 = RPG::unpack_str(@message3)
|
|
@message4 = RPG::unpack_str(@message4)
|
|
@note = RPG::unpack_str(@note)
|
|
end
|
|
def initialize
|
|
@id = 0
|
|
@name = ""
|
|
@icon_index = 0
|
|
@restriction = 0
|
|
@priority = 5
|
|
@atk_rate = 100
|
|
@def_rate = 100
|
|
@spi_rate = 100
|
|
@agi_rate = 100
|
|
@nonresistance = false
|
|
@offset_by_opposite = false
|
|
@slip_damage = false
|
|
@reduce_hit_ratio = false
|
|
@battle_only = true
|
|
@release_by_damage = false
|
|
@hold_turn = 0
|
|
@auto_release_prob = 0
|
|
@message1 = ""
|
|
@message2 = ""
|
|
@message3 = ""
|
|
@message4 = ""
|
|
@element_set = []
|
|
@state_set = []
|
|
@note = ""
|
|
end
|
|
attr_accessor :id
|
|
attr_accessor :name
|
|
attr_accessor :icon_index
|
|
attr_accessor :restriction
|
|
attr_accessor :priority
|
|
attr_accessor :atk_rate
|
|
attr_accessor :def_rate
|
|
attr_accessor :spi_rate
|
|
attr_accessor :agi_rate
|
|
attr_accessor :nonresistance
|
|
attr_accessor :offset_by_opposite
|
|
attr_accessor :slip_damage
|
|
attr_accessor :reduce_hit_ratio
|
|
attr_accessor :battle_only
|
|
attr_accessor :release_by_damage
|
|
attr_accessor :hold_turn
|
|
attr_accessor :auto_release_prob
|
|
attr_accessor :message1
|
|
attr_accessor :message2
|
|
attr_accessor :message3
|
|
attr_accessor :message4
|
|
attr_accessor :element_set
|
|
attr_accessor :state_set
|
|
attr_accessor :note
|
|
end
|
|
|
|
class RPG::System
|
|
include Jsonable
|
|
def unpack_names
|
|
@game_title = RPG::unpack_str(@game_title)
|
|
@battler_name = RPG::unpack_str(@battler_name)
|
|
tmp = []
|
|
tmp = @elements.dup
|
|
@elements = []
|
|
tmp.each{|i|
|
|
@elements << RPG::unpack_str(i).dup if i != nil
|
|
}
|
|
tmp = []
|
|
tmp = @switches.dup
|
|
@switches = []
|
|
tmp.each{|i|
|
|
@switches << RPG::unpack_str(i).dup if i != nil
|
|
}
|
|
tmp = []
|
|
tmp = @variables.dup
|
|
@variables = []
|
|
tmp.each{|i|
|
|
@variables << RPG::unpack_str(i).dup if i != nil
|
|
}
|
|
@terms.unpack_names
|
|
end
|
|
def initialize
|
|
@game_title = ""
|
|
@version_id = 0
|
|
@party_members = [1]
|
|
@elements = [nil, ""]
|
|
@switches = [nil, ""]
|
|
# @magic_number = 0
|
|
@variables = [nil, ""]
|
|
@passages = nil
|
|
#@passages = Table.new([8192])
|
|
@boat = RPG::System::Vehicle.new
|
|
@ship = RPG::System::Vehicle.new
|
|
@airship = RPG::System::Vehicle.new
|
|
@title_bgm = RPG::AudioFile.new
|
|
@battle_bgm = RPG::AudioFile.new
|
|
@battle_end_me = RPG::AudioFile.new
|
|
@gameover_me = RPG::AudioFile.new
|
|
@sounds = []
|
|
20.times { @sounds.push(RPG::AudioFile.new) }
|
|
@test_battlers = []
|
|
@test_troop_id = 1
|
|
@start_map_id = 1
|
|
@start_x = 0
|
|
@start_y = 0
|
|
@terms = RPG::System::Terms.new
|
|
@battler_name = ""
|
|
@battler_hue = 0
|
|
@edit_map_id = 1
|
|
end
|
|
attr_accessor :game_title
|
|
attr_accessor :version_id
|
|
attr_accessor :party_members
|
|
attr_accessor :elements
|
|
attr_accessor :switches
|
|
attr_accessor :magic_number
|
|
attr_accessor :variables
|
|
attr_accessor :passages
|
|
attr_accessor :boat
|
|
attr_accessor :ship
|
|
attr_accessor :airship
|
|
attr_accessor :title_bgm
|
|
attr_accessor :battle_bgm
|
|
attr_accessor :battle_end_me
|
|
attr_accessor :gameover_me
|
|
attr_accessor :sounds
|
|
attr_accessor :test_battlers
|
|
attr_accessor :test_troop_id
|
|
attr_accessor :start_map_id
|
|
attr_accessor :start_x
|
|
attr_accessor :start_y
|
|
attr_accessor :terms
|
|
attr_accessor :battler_name
|
|
attr_accessor :battler_hue
|
|
attr_accessor :edit_map_id
|
|
end
|
|
|
|
class RPG::System::Terms
|
|
include Jsonable
|
|
def unpack_names
|
|
@level = RPG::unpack_str(@level)
|
|
@level_a = RPG::unpack_str(@level_a)
|
|
@hp = RPG::unpack_str(@hp)
|
|
@hp_a = RPG::unpack_str(@hp_a)
|
|
@mp = RPG::unpack_str(@mp)
|
|
@mp_a = RPG::unpack_str(@mp_a)
|
|
@atk = RPG::unpack_str(@atk)
|
|
@def = RPG::unpack_str(@def)
|
|
@spi = RPG::unpack_str(@spi)
|
|
@agi = RPG::unpack_str(@agi)
|
|
@weapon = RPG::unpack_str(@weapon)
|
|
@armor1 = RPG::unpack_str(@armor1)
|
|
@armor2 = RPG::unpack_str(@armor2)
|
|
@armor3 = RPG::unpack_str(@armor3)
|
|
@armor4 = RPG::unpack_str(@armor4)
|
|
@weapon1 = RPG::unpack_str(@weapon1)
|
|
@weapon2 = RPG::unpack_str(@weapon2)
|
|
@attack = RPG::unpack_str(@attack)
|
|
@skill = RPG::unpack_str(@skill)
|
|
@guard = RPG::unpack_str(@guard)
|
|
@item = RPG::unpack_str(@item)
|
|
@equip = RPG::unpack_str(@equip)
|
|
@status = RPG::unpack_str(@status)
|
|
@save = RPG::unpack_str(@save)
|
|
@game_end = RPG::unpack_str(@game_end)
|
|
@fight = RPG::unpack_str(@fight)
|
|
@escape = RPG::unpack_str(@escape)
|
|
@new_game = RPG::unpack_str(@new_game)
|
|
@continue = RPG::unpack_str(@continue)
|
|
@shutdown = RPG::unpack_str(@shutdown)
|
|
@to_title = RPG::unpack_str(@to_title)
|
|
@cancel = RPG::unpack_str(@cancel)
|
|
@gold = RPG::unpack_str(@gold)
|
|
end
|
|
def initialize
|
|
@level = ""
|
|
@level_a = ""
|
|
@hp = ""
|
|
@hp_a = ""
|
|
@mp = ""
|
|
@mp_a = ""
|
|
@atk = ""
|
|
@def = ""
|
|
@spi = ""
|
|
@agi = ""
|
|
@weapon = ""
|
|
@armor1 = ""
|
|
@armor2 = ""
|
|
@armor3 = ""
|
|
@armor4 = ""
|
|
@weapon1 = ""
|
|
@weapon2 = ""
|
|
@attack = ""
|
|
@skill = ""
|
|
@guard = ""
|
|
@item = ""
|
|
@equip = ""
|
|
@status = ""
|
|
@save = ""
|
|
@game_end = ""
|
|
@fight = ""
|
|
@escape = ""
|
|
@new_game = ""
|
|
@continue = ""
|
|
@shutdown = ""
|
|
@to_title = ""
|
|
@cancel = ""
|
|
@gold = ""
|
|
end
|
|
attr_accessor :level
|
|
attr_accessor :level_a
|
|
attr_accessor :hp
|
|
attr_accessor :hp_a
|
|
attr_accessor :mp
|
|
attr_accessor :mp_a
|
|
attr_accessor :atk
|
|
attr_accessor :def
|
|
attr_accessor :spi
|
|
attr_accessor :agi
|
|
attr_accessor :weapon
|
|
attr_accessor :armor1
|
|
attr_accessor :armor2
|
|
attr_accessor :armor3
|
|
attr_accessor :armor4
|
|
attr_accessor :weapon1
|
|
attr_accessor :weapon2
|
|
attr_accessor :attack
|
|
attr_accessor :skill
|
|
attr_accessor :guard
|
|
attr_accessor :item
|
|
attr_accessor :equip
|
|
attr_accessor :status
|
|
attr_accessor :save
|
|
attr_accessor :game_end
|
|
attr_accessor :fight
|
|
attr_accessor :escape
|
|
attr_accessor :new_game
|
|
attr_accessor :continue
|
|
attr_accessor :shutdown
|
|
attr_accessor :to_title
|
|
attr_accessor :cancel
|
|
attr_accessor :gold
|
|
end
|
|
|
|
class RPG::System::TestBattler
|
|
include Jsonable
|
|
def initialize
|
|
@actor_id = 1
|
|
@level = 1
|
|
@weapon_id = 0
|
|
@armor1_id = 0
|
|
@armor2_id = 0
|
|
@armor3_id = 0
|
|
@armor4_id = 0
|
|
end
|
|
attr_accessor :actor_id
|
|
attr_accessor :level
|
|
attr_accessor :weapon_id
|
|
attr_accessor :armor1_id
|
|
attr_accessor :armor2_id
|
|
attr_accessor :armor3_id
|
|
attr_accessor :armor4_id
|
|
end
|
|
|
|
class RPG::System::Vehicle
|
|
include Jsonable
|
|
def unpack_names
|
|
@character_name = RPG::unpack_str(@character_name)
|
|
end
|
|
def initialize
|
|
@character_name = ""
|
|
@character_index = 0
|
|
@bgm = RPG::BGM.new
|
|
@start_map_id = 0
|
|
@start_x = 0
|
|
@start_y = 0
|
|
end
|
|
attr_accessor :character_name
|
|
attr_accessor :character_index
|
|
attr_accessor :bgm
|
|
attr_accessor :start_map_id
|
|
attr_accessor :start_x
|
|
attr_accessor :start_y
|
|
end
|
|
|
|
class RPG::Troop
|
|
include Jsonable
|
|
def unpack_names
|
|
@name = RPG::unpack_str(@name)
|
|
end
|
|
def initialize
|
|
@id = 0
|
|
@name = ""
|
|
@members = []
|
|
@pages = [RPG::Troop::Page.new]
|
|
#@pages = [RPG::BattleEventPage.new]
|
|
end
|
|
attr_accessor :id
|
|
attr_accessor :name
|
|
attr_accessor :members
|
|
attr_accessor :pages
|
|
end
|
|
|
|
class RPG::Troop::Member
|
|
include Jsonable
|
|
def initialize
|
|
@enemy_id = 1
|
|
@x = 0
|
|
@y = 0
|
|
@hidden = false
|
|
@immortal = false
|
|
end
|
|
attr_accessor :enemy_id
|
|
attr_accessor :x
|
|
attr_accessor :y
|
|
attr_accessor :hidden
|
|
attr_accessor :immortal
|
|
end
|
|
|
|
class RPG::Troop::Page
|
|
include Jsonable
|
|
def initialize
|
|
@condition = RPG::Troop::Page::Condition.new
|
|
@span = 0
|
|
@list = [RPG::EventCommand.new]
|
|
end
|
|
attr_accessor :condition
|
|
attr_accessor :span
|
|
attr_accessor :list
|
|
end
|
|
|
|
class RPG::Troop::Page::Condition
|
|
include Jsonable
|
|
def initialize
|
|
@turn_ending = false
|
|
@turn_valid = false
|
|
@enemy_valid = false
|
|
@actor_valid = false
|
|
@switch_valid = false
|
|
@turn_a = 0
|
|
@turn_b = 0
|
|
@enemy_index = 0
|
|
@enemy_hp = 50
|
|
@actor_id = 1
|
|
@actor_hp = 50
|
|
@switch_id = 1
|
|
end
|
|
attr_accessor :turn_ending
|
|
attr_accessor :turn_valid
|
|
attr_accessor :enemy_valid
|
|
attr_accessor :actor_valid
|
|
attr_accessor :switch_valid
|
|
attr_accessor :turn_a
|
|
attr_accessor :turn_b
|
|
attr_accessor :enemy_index
|
|
attr_accessor :enemy_hp
|
|
attr_accessor :actor_id
|
|
attr_accessor :actor_hp
|
|
attr_accessor :switch_id
|
|
end |