#==============================================================================
# ■ XPの規格のホコグラをVX Aceでも使用する By 貪藻矢射妥←
#------------------------------------------------------------------------------
# XPの規格のホコグラをVX Aceでも使用できるようにします。
#
# XPのホコグラのファイル名に『!XP』をつけてインポートしてください。
#
# ※なお、アクターの歩行グラフィックの部分は表示がおかしくなりますが、それは
# 仕様です。
#
#==============================================================================
# 更新っぽいもの
# 2012:03:18
# ・VX Ace規格のキャラチップ表示の際、インデックスが固定されているバグを修正
# ・XP規格のパターン3が表示出来なかったバグを修正
module CHAR_ON_XP
# XP規格のための識別文字
XP_WORD="XP"
# VX Aceのデフォルトパターン
VXA_DEFAULT_PTN = 1
# XPのデフォルトパターン
XP_DEFAULT_PTN = 0
end
#==============================================================================
# ■ Game_Character
#------------------------------------------------------------------------------
# キャラクターを扱うクラスです。このクラスは Game_Player クラスと Game_Event
# クラスのスーパークラスとして使用されます。
#==============================================================================
class Game_Character < Game_CharacterBase
#--------------------------------------------------------------------------
# ● 公開インスタンス変数
#--------------------------------------------------------------------------
attr_accessor :change_pattern # 真・パターン
attr_accessor :original_pattern # 元のパターン
#--------------------------------------------------------------------------
# ● オブジェクト初期化
#--------------------------------------------------------------------------
alias init_public_members_xp init_public_members
def init_public_members
init_public_members_xp
@change_pattern = 0
end
#--------------------------------------------------------------------------
# ● 姿勢の矯正
#--------------------------------------------------------------------------
def straighten
@original_pattern = @change_pattern
@pattern = @change_pattern if @walk_anime or @step_anime
@anime_count = 0
end
end
#==============================================================================
# ■ Sprite_Character
#------------------------------------------------------------------------------
# キャラクター表示用のスプライトです。Game_Character クラスのインスタンスを
# 監視し、スプライトの状態を自動的に変化させます。
#==============================================================================
class Sprite_Character < Sprite_Base
include CHAR_ON_XP
#--------------------------------------------------------------------------
# ● キャラクターのビットマップを設定
#--------------------------------------------------------------------------
def set_character_bitmap
self.bitmap = Cache.character(@character_name)
sign = @character_name[/^[\!\$]./]
if sign && sign.include?('$')
@cw = bitmap.width / 3
@ch = bitmap.height / 4
elsif sign && @character_name.include?(XP_WORD)
@cw = bitmap.width / 4
@ch = bitmap.height / 4
else
@cw = bitmap.width / 12
@ch = bitmap.height / 8
end
self.ox = @cw / 2
self.oy = @ch
end
#--------------------------------------------------------------------------
# ● 転送元矩形の更新
#--------------------------------------------------------------------------
def update_src_rect
if @tile_id == 0
index = @character.character_index
sign = @character_name[/^[\!\$]./]
if sign && @character_name.include?(XP_WORD)
@character.change_pattern = XP_DEFAULT_PTN
else
@character.change_pattern = VXA_DEFAULT_PTN
end
# ツクールVX Aceの仕様上 pattern が 2 を超えることはない
pattern = @character.pattern < 3 ? @character.pattern :
@character.change_pattern
if sign && @character_name.include?(XP_WORD)
# XP規格の pattern = 3 はVX Aceでは index = 1, pattern = 0 となる
pattern = 3 if index == 1 && pattern == 0
sx = pattern * @cw
else
sx = (index % 4 * 3 + pattern) * @cw
end
@character.original_pattern = @character.pattern
sy = (index / 4 * 4 + (@character.direction - 2) / 2) * @ch
self.src_rect.set(sx, sy, @cw, @ch)
end
end
end
|