Код:
=begin
シンボルエンカウント Ver1.02
シンボルエンカウントを使用する場合のRGSSです。
以下のリストをScene_Debug~Mainの間に挿入してください。
変更・追加しているのは以下のクラスです。
再定義は取りあえず無い(はず)ですが、影響がある場合は確認して下さい。
Game_Party
Game_Map
Game_Temp
Game_Event
Game_Character
●使い方
★1:
リストを挿入します。リスト先頭のパラメータは任意で設定して下さい。
★2:
敵のイベントを設定します。
まず、MAP上にイベントを作成します。
イベントの名前欄に半角で「ENEMY2」「ENEMY2@」「ENEMY@2」「ENEMY@2!」等の
いずれかの方法で付けます(「」なし)。
文字列は離さないでくっつけて記入します。意味は以下の通りです。
ENEMY :これが記入されていると敵イベントと判別
2 :警戒範囲の半径XY(マス)。1以上を設定。
(0や記入無しはエンカウント時の方向設定の挙動がおかしくなる)
@ :敵の警戒フラグ。これがある場合、向きに関係なく警戒範囲に入った
段階でプレイヤーに向かってくる(セルフスイッチAがONになる)。
無い場合、プレイヤーが背後から近づいても警戒しない。
! :敵探査範囲フラグ。これがあると探査範囲がひし形になる。
ない場合は正方形に探索する。(※Ver1.01追加)
■Ver1.01追加
警戒範囲が変更できるようになりました。
設定 DISTANCE_TYPE によって視認範囲のモードを変更できます。
正方形(false) ひし形(true)
●●●●● ●
●●●●● ●●●
●●○●● ●●○●●
●●●●● ●●●
●●●●● ●
★3:
イベントページを5つ作成します。各ページの設定は以下の通りです。
基本的には以下の通りにすると良いですが、そのほかイベントの組み合わせで
色々方法が変わりますので試してみて下さい。
※P1:通常時の敵の行動
キャラクタ :決めた敵シンボル
条件 :なし
自律移動 :タイプ-ランダム 速度-3 頻度-3 (それぞれ任意)
オプション :移動時アニメのみON
トリガー :プレイヤーから接触
イベント内容:条件分岐:スクリプト:$game_party.no_encount?
それ以外の場合
セルフスイッチの操作:B=ON
スクリプト:$game_map.turn_inbattle(@event_id)(任意)
(戦闘時に方向指定ある場合入力)
▲または・・・
セルフスイッチの操作:B=ON
スクリプト:$game_map.turn_inbattle(@event_id)(任意)
(戦闘時に方向指定ある場合入力)
※P2:プレイヤーが警戒範囲に接近(視認範囲にいる)
キャラクタ :決めた敵シンボル
条件 :セルフスイッチAがON
自律移動 :タイプ-近づく 速度-5 頻度-6 (それぞれ任意)
▲おとなしい敵の場合
タイプ-ランダム 速度-3 頻度-3 (それぞれ任意)
オプション :移動時アニメのみON
トリガー :イベントから接触
イベント内容:条件分岐:スクリプト:$game_party.no_encount?
それ以外の場合
セルフスイッチの操作:B=ON
スクリプト:$game_map.turn_inbattle(@event_id)(任意)
(戦闘時に方向指定ある場合入力)
▲または・・・
セルフスイッチの操作:B=ON
スクリプト:$game_map.turn_inbattle(@event_id)(任意)
(戦闘時に方向指定ある場合入力)
※P3:戦闘状態
キャラクタ :決めた敵シンボル
条件 :セルフスイッチBがON
自律移動 :任意 (固定)
オプション:任意 (移動時アニメのみON)
トリガー :自動実行
イベント内容:バトルの処理(敵トループNOは任意)
勝った場合:セルフスイッチの操作:C=ON
逃げた場合:セルフスイッチの操作:D=ON
▲ 負けた場合:任意(基本はゲームオーバー)
※P4:勝利時の状態
キャラクタ :決めた敵シンボル(または無し)
条件 :セルフスイッチCがON
自律移動 :(固定)
オプション :(すり抜け)
トリガー :決定ボタン(復活する予定のある場合)
▲または
自動実行(復活しない場合)
イベント内容:イベントの一時消去(復活しない場合)
▲または
なし(復活する予定のある場合)
※基本的にどちらかになるようにして下さい。
※P5:逃走時の状態
キャラクタ :決めた敵シンボル
条件 :セルフスイッチDがON
自律移動 :任意 (固定)
オプション :任意 (すり抜け)
トリガー :決定ボタン
イベント内容:なし
※P4・P5にて、自律移動で動かす場合は「すり抜け」は設定しない方がいいです。
壁にめり込むなどのバグが発生しやすいようです。
※復活のON/OFFは任意のスイッチで切替が出来ます。
詳しくはリストを参照して下さい。
※自律移動「近づく」は意外に性能が悪いです(;´Д`)
「カスタム」にて移動ルート「プレイヤーに近づく」の方が実は性能が
良かったりします。‥その代わり挙動はイマイチな部分もありますが。
●機能説明
イベントコマンドにて以下のスクリプトを入力することが出来ます。
必要に応じて使用して下さい。
■$game_map.turn_inbattle(@event_id)
戦闘開始時に向きによる先制・奇襲などを行いたい場合に使用。
$game_temp.encount_turn に以下のいずれかの返り値が代入される。
0:通常 ・正面から当たった場合
1:先制 ・敵の背後から当たった場合
2:奇襲 ・敵に背後から当たられた場合
3:ランダム・それ以外の方向からお互い当たった場合
(ex:PLAYERが↓で敵が→の場合等)
スクリプト:$game_map.turn_inbattle(@event_id) で使用。
※このRGSSには戦闘開始時の先制攻撃などのシステムは付けていません。
(システムによってまちまちなので対応し切れません)
別途改造などして準備して下さい。
無くても、戦闘自体は問題なく動きます。
■$game_map.enemy_all_recover
MAP上にて倒した敵シンボルが全て復活します。
MAP切替時の設定は無視され、強制的に復活します。
ただし「イベント一時消去」をしていると復活しません。
(厳密にはMAP内のセルフスイッチCがON状態の敵シンボルのみ復活)
罠とかに使えるかも知れません。
■$game_party.all_see? (通常は内部使用のため使わなくても良い)
指定ステートがメンバー内の誰かにある場合、敵が完全に見える。
これはその状態を確認する。trueで真、falseで偽。
条件分岐 : $game_party.all_see? とするなどして使用。
■$game_party.no_caution? (通常は内部使用のため使わなくても良い)
指定ステートがメンバー内の誰かにある場合、敵が警戒しなくなる。
これはその状態を確認する。trueで真、falseで偽。
条件分岐 : $game_party.no_caution? とするなどして使用。
■$game_party.no_encount?
指定ステートがメンバー内の誰かにある場合、敵と戦闘しなくなる。
これはその状態を確認する。trueで真、falseで偽。
条件分岐 : $game_party.no_encount? とするなどして使用。
●その他
WIKIの「イベント接触範囲拡張」に対応しています。
名前欄にて以下のように設定すると使えます。
必要に応じて活用して下さい
EVENT_WIDE,1,2,2,ENEMY2@
※上記の通り、必ず順番の最後に入力して下さい。
履歴
Ver1.00 公開。
Ver1.01 計測範囲のモードを変えられるようにした。
Ver1.02 初期点滅時の点滅終了後にシンボルが一瞬表示されてしまうバグ修正。
=end
#==============================================================================
# ■ Game_Party
#------------------------------------------------------------------------------
# パーティを扱うクラスです。ゴールドやアイテムなどの情報が含まれます。このク
# ラスのインスタンスは $game_party で参照されます。
#==============================================================================
class Game_Party
#以下の機能を使用する場合、それぞれステートID設定(使用不可は0)
ALL_SEE = 0 #遠見状態ステートID
NO_CAUTION = 0 #敵警戒しないステートID
NO_ENCOUNT = 0 #敵戦闘しないステートID
NO_ALL_BATTLE = 0 #上記機能3つ全部ある場合のステートID
ALL_SEE_NO_CAUTION = 0 #遠見&敵警戒しないステートID
NO_CAUTION_BATTLE = 0 #敵警戒しない&戦闘無しステートID
end
#==============================================================================
# ■ Game_Map
#------------------------------------------------------------------------------
# マップを扱うクラスです。スクロールや通行可能判定などの機能を持っています。
# このクラスのインスタンスは $game_map で参照されます。
#==============================================================================
class Game_Map
#それぞれ以下の初期設定をして下さい。
EVENT_ENEMY_NAME = "ENEMY" #イベントにこの名前がある場合は敵シンボル。
#ex) ENEMY2@ など
ENCOUNT_DISTANCE1 = 640 #32 * 5 敵との距離1(これより大きいと透明になる距離)
ENCOUNT_DISTANCE2 = 640 #32 * 3 敵との距離2(これより大きいと半透明になる距離)
#距離はMAPパーツの基本の大きさである32を基準に考えると良い (ex: 32 * ?)
#※ひし形の場合は決めた範囲に+16した方が良いようだ
CHANGE_OPACITY = 80 #敵との距離で使用する半透明時の透明度
DISTANCE_TYPE = false # PLAYER視認範囲計測方法
#(false = 正方形 true = ひし形)
DISTANCE_ERASE_MODE = true #点滅状態時に距離を離すとシンボルが消える 初期ON
ENEMY_DEATH_COUNT = 1 #戦闘勝利後シンボルが復活するまでの時間(フレーム)
ENEMY_ESCAPE_COUNT = 0 #敵から逃走・シンボル復活時の点滅時間(フレーム)
ENEMY_FIRST_COUNT = 1 #MAP切替時の敵シンボル点滅時間(フレーム)
ENEMY_ESCAPE_OPACITY = 0 #逃走・MAP切替時の半透明状態の透明度
#$game_switches(ゲームスイッチ)のID
ENEMY_REFRESH_NO = 10 #MAP切替時に敵が全て復活する 初期OFF
ENEMY_REVIVE_NO = 11 #倒した敵シンボルが一定時間後に復活する 初期OFF
#--------------------------------------------------------------------------
# ■ セットアップ
# map_id : マップ ID
#--------------------------------------------------------------------------
alias wiki_setup setup
def setup(map_id)
# 呼び戻す
wiki_setup(map_id)
#エンカウントデータ初期化
@enemy_events = [] #敵イベント
@enemy_range = [] #警戒距離
@enemy_distance_type = [] #警戒範囲のタイプ
@enemy_caution = [] #警戒心強い?
@enemy_wait = [] #点滅時のウエイト
@flach_fg = false #点滅用フラグ
#エンカウントデータ取得
for i in @map.events.values
if i.name.include?(EVENT_ENEMY_NAME)
@enemy_events.push(i.id)
end
end
#エンカウントデータ登録
#※wiki「イベント接触範囲拡張」併用対応
for i in 0...@enemy_events.size
tmp = ""
data = []
#文字列をとりあえず選別し、格納
data = @events[@enemy_events[i]].name.split(/,/)
data.each_index do |j|
if data[j].include?(EVENT_ENEMY_NAME)
tmp = data[j]
break
end
end
#警戒反応モード
tmp.delete!(EVENT_ENEMY_NAME)
@enemy_caution[i] = false
if tmp.include?("@")
@enemy_caution[i] = true
end
tmp.delete!("@")
#警戒範囲のタイプ
@enemy_distance_type[i] = false
if tmp.include?("!")
@enemy_distance_type[i] = true
end
tmp.delete!("!")
#警戒距離
range = tmp.to_i
range *= 32
#ひし形の場合16pix余分に足す
range += 16 if @enemy_distance_type[i]
@enemy_range.push(range)
end
#MAP切替時に敵イベント初期化?(スイッチで切替)
if $game_switches[ENEMY_REFRESH_NO]
all_enemy_refresh
end
#点滅カウント設定
for i in 0...@enemy_events.size
key3 = [@map_id,@enemy_events[i],"C"] #戦闘勝利
if !$game_self_switches[key3] or
$game_self_switches[key3] && $game_switches[ENEMY_REVIVE_NO]
enemy_refresh(@enemy_events[i],true)
@enemy_wait[i] = ENEMY_FIRST_COUNT
enemy_switch(@enemy_events[i],"D",true)
end
end
end
#--------------------------------------------------------------------------
# ■ 敵復活の操作
#--------------------------------------------------------------------------
def enemy_all_recover
#点滅カウント設定
for i in 0...@enemy_events.size
# @enemy_wait[i] = 0
key1 = [@map_id,@enemy_events[i],"A"] #
key2 = [@map_id,@enemy_events[i],"B"] #戦闘
key3 = [@map_id,@enemy_events[i],"C"] #戦闘勝利
key4 = [@map_id,@enemy_events[i],"D"] #逃走
if $game_self_switches[key3]# or $game_self_switches[key4]
unless (!$game_self_switches[key1] or $game_self_switches[key1]) &&
!$game_self_switches[key2] && !$game_self_switches[key3] &&
!$game_self_switches[key4]
@enemy_wait[i] = ENEMY_FIRST_COUNT
enemy_switch(@enemy_events[i],"D",true,true)
end
enemy_switch(@enemy_events[i],"B",false,true)
enemy_switch(@enemy_events[i],"C",false,false)
end
end
end
#--------------------------------------------------------------------------
# ■ セルフスイッチの操作
#--------------------------------------------------------------------------
def enemy_switch(event_id,switch,value,mode = false)
key = [@map_id,event_id,switch]
$game_self_switches[key] = value
if mode == false
$game_map.need_refresh = true
end
end
#--------------------------------------------------------------------------
# ■ 一つの敵イベントの初期化
#--------------------------------------------------------------------------
def enemy_refresh(event_id,mode = false)
enemy_switch(event_id,"A",false,true)
enemy_switch(event_id,"B",false,true)
enemy_switch(event_id,"C",false,true)
enemy_switch(event_id,"D",false,mode)
end
#--------------------------------------------------------------------------
# ■ 全ての敵イベントの初期化
#--------------------------------------------------------------------------
def all_enemy_refresh
for i in 0...@enemy_events.size
enemy_refresh(@enemy_events[i],true)
end
$game_map.need_refresh = true
end
#--------------------------------------------------------------------------
# ■ イベントとプレイヤーの距離
# falseで絶対値を返す
# mode: 0:通常(絶対値) 1:通常 2:ひし形(マンハッタン距離(絶対値))
#--------------------------------------------------------------------------
def event_distance(event_id,mode = 0)
xy = []
xy[0] = (@events[event_id].screen_x - $game_player.screen_x)
xy[1] = (@events[event_id].screen_y - $game_player.screen_y)
#0、2は絶対値に変換
if mode == 0 or mode == 2
xy[0] = xy[0].abs
xy[1] = xy[1].abs
end
#ひし形(マンハッタン距離)
xy[2] = xy[0] + xy[1] if mode == 2
#配列で返す
return xy
end
#--------------------------------------------------------------------------
# ■ 敵イベントフレーム更新
#--------------------------------------------------------------------------
#イベントID,警戒距離,反応,探査範囲
def update_enemy_event(event_id,range,mode,type)
key1 = [@map_id,event_id,"A"] #警戒範囲
key3 = [@map_id,event_id,"C"] #戦闘勝利
key4 = [@map_id,event_id,"D"] #戦闘逃走
xy = event_distance(event_id,2) #敵との距離
#透明で初期化
tmp_opacity = 0
#勝利状態でない場合
unless $game_self_switches[key3] #&& $game_switches[ENEMY_REVIVE_NO]
#正方形範囲
if !DISTANCE_TYPE
#距離2(不透明>半透明)
if xy[0] <= ENCOUNT_DISTANCE2 && xy[1] <= ENCOUNT_DISTANCE2 or $game_party.all_see?
tmp_opacity = ($game_self_switches[key4]) ? ENEMY_ESCAPE_OPACITY : 255
#距離1(半透明>透明)
elsif xy[0] <= ENCOUNT_DISTANCE1 && xy[1] <= ENCOUNT_DISTANCE1
tmp_opacity = ($game_self_switches[key4]) ? ENEMY_ESCAPE_OPACITY : CHANGE_OPACITY
#点滅状態?(距離は透明時)
elsif $game_self_switches[key4] && !DISTANCE_ERASE_MODE
tmp_opacity = ENEMY_ESCAPE_OPACITY
end
#ひし形(マンハッタン距離)
else
#距離2(不透明 << 半透明)
if xy[2] <= ENCOUNT_DISTANCE2 or $game_party.all_see?
tmp_opacity = ($game_self_switches[key4]) ? ENEMY_ESCAPE_OPACITY : 255
#距離1(半透明 << 透明)
elsif xy[2] <= ENCOUNT_DISTANCE1
tmp_opacity = ($game_self_switches[key4]) ? ENEMY_ESCAPE_OPACITY : CHANGE_OPACITY
#点滅状態?(距離は透明時)
elsif $game_self_switches[key4] && !DISTANCE_ERASE_MODE
tmp_opacity = ENEMY_ESCAPE_OPACITY
end
end
end
#透明度設定
if $game_self_switches[key4] && @flach_fg
@events[event_id].opacity_setting(0)
else
@events[event_id].opacity_setting(tmp_opacity)
end
#警戒状態
if !$game_map.interpreter.running?&& !$game_player.move_route_forcing
#警戒範囲制御
if (!type && xy[0] <= range && xy[1] <= range or type && xy[2] <= range) &&
!$game_party.no_caution? && (enemy_caution_check(event_id) or mode)
enemy_switch(event_id,"A",true) if !$game_self_switches[key1]
else
enemy_switch(event_id,"A",false) if $game_self_switches[key1]
end
end
end
#--------------------------------------------------------------------------
# ■ 敵警戒状態 更新
#--------------------------------------------------------------------------
def enemy_caution_check(event_id)
xy = event_distance(event_id,1)
x = xy[0]
y = xy[1]
case @events[event_id].direction
when 2
return true if y <= 0
when 4
return true if x >= 0
when 6
return true if x <= 0
when 8
return true if y >= 0
end
return false
end
#--------------------------------------------------------------------------
# ■ 敵戦闘開始時の向き(イベントコマンドで使用)
# $game_temp.encount_turn に以下の返り値
# 0:通常 1:先制 2:奇襲 3:ランダム(ex:PLAYERが↓で敵が→の場合等)
#--------------------------------------------------------------------------
#$game_map.turn_inbattle(@event_id) <<書式
def turn_inbattle(event_id)
#XY数値検出
xy = event_distance(event_id,1)
x = xy[0] #比較X
y = xy[1] #比較Y
t = 0 #向きのモード 0で初期化
en = @events[event_id].old_direction #敵の過去の向き
pl = $game_player.direction #PLAYERの過去の向き
#上下
if pl == 2 or pl == 8
if en == 4 or en == 6
t = 3
elsif en == 2 && pl == 2
t = 2 if y < 0
t = 1 if y > 0
elsif en == 8 && pl == 8
t = 2 if y > 0
t = 1 if y < 0
end
#左右
elsif pl == 4 or pl == 6
if en == 2 or en == 8
t = 3
elsif en == 4 && pl == 4
t = 2 if x > 0
t = 1 if x < 0
elsif en == 6 && pl == 6
t = 2 if x < 0
t = 1 if x > 0
end
end
$game_temp.encount_turn = t
end
#--------------------------------------------------------------------------
# ■ フレーム更新
#--------------------------------------------------------------------------
alias wiki_update update
def update
#呼び戻す
wiki_update
#敵イベントループ
@flach_fg = (@flach_fg == false)? true:false
for i in 0...@enemy_events.size
update_enemy_event(@enemy_events[i],@enemy_range[i],@enemy_caution[i],@enemy_distance_type[i])
key3 = [@map_id,@enemy_events[i],"C"] #戦闘勝利
key4 = [@map_id,@enemy_events[i],"D"] #戦闘逃走
#敵シンボルが復活する場合
if $game_self_switches[key3] && $game_switches[ENEMY_REVIVE_NO]
if @enemy_wait[i] > 0
@enemy_wait[i] -= 1
if @enemy_wait[i] <= 0
enemy_switch(@enemy_events[i],"C",false)
enemy_switch(@enemy_events[i],"D",true)
end
elsif @enemy_wait[i] <= 0
@enemy_wait[i] = ENEMY_DEATH_COUNT
end
#逃げた時・シンボル復活・MAP切替時の点滅設定処理
elsif $game_self_switches[key4]
if @enemy_wait[i] > 0
@enemy_wait[i] -= 1
if @enemy_wait[i] <= 0
enemy_refresh(@enemy_events[i])
@events[@enemy_events[i]].opacity_setting(ENEMY_ESCAPE_OPACITY)
end
elsif @enemy_wait[i] <= 0
@enemy_wait[i] = ENEMY_ESCAPE_COUNT
end
end
end
end
end
#==============================================================================
# ■ Game_Temp
#------------------------------------------------------------------------------
# セーブデータに含まれない、一時的なデータを扱うクラスです。このクラスのイン
# スタンスは $game_temp で参照されます。
#==============================================================================
class Game_Temp
#--------------------------------------------------------------------------
# ■ 公開インスタンス変数
#--------------------------------------------------------------------------
attr_accessor :encount_turn #戦闘開始時のモード設定用
#--------------------------------------------------------------------------
# ■ オブジェクト初期化
#--------------------------------------------------------------------------
alias wiki_initialize initialize
def initialize
wiki_initialize
#0:通常 1:先制 2:奇襲 3:ランダム
@encount_turn = 0
end
end
#==============================================================================
# ■ Game_Party
#------------------------------------------------------------------------------
# パーティを扱うクラスです。ゴールドやアイテムなどの情報が含まれます。このク
# ラスのインスタンスは $game_party で参照されます。
#==============================================================================
class Game_Party
#--------------------------------------------------------------------------
# ■ ステートIDがパーティーにあるか?
#--------------------------------------------------------------------------
def party_stete?(state_id)
if state_id > 0
for actor in @actors
if actor.exist? && actor.state?(state_id)
return true
end
end
end
return false
end
#--------------------------------------------------------------------------
# ■ 遠見状態?
#--------------------------------------------------------------------------
def all_see?
return true if party_stete?(NO_ALL_BATTLE)
return true if party_stete?(ALL_SEE_NO_CAUTION)
return true if party_stete?(ALL_SEE)
return false
end
#--------------------------------------------------------------------------
# ■ 敵警戒しない状態?
#-------------------------------------------------------------------------
def no_caution?
return true if party_stete?(NO_ALL_BATTLE)
return true if party_stete?(ALL_SEE_NO_CAUTION)
return true if party_stete?(NO_CAUTION_BATTLE)
return true if party_stete?(NO_CAUTION)
return false
end
#--------------------------------------------------------------------------
# ■ エンカウントしない状態?(多分イベントコマンド内でも使用)
#--------------------------------------------------------------------------
#条件分岐にて : $game_party.no_encount? << イベントコマンド内書式
def no_encount?
return true if party_stete?(NO_ALL_BATTLE)
return true if party_stete?(NO_CAUTION_BATTLE)
return true if party_stete?(NO_ENCOUNT)
return false
end
end
#==============================================================================
# ■ Game_Event
#------------------------------------------------------------------------------
# イベントを扱うクラスです。条件判定によるイベントページ切り替えや、並列処理
# イベント実行などの機能を持っており、Game_Map クラスの内部で使用されます。
#==============================================================================
class Game_Event < Game_Character
#--------------------------------------------------------------------------
# ● リフレッシュ
#--------------------------------------------------------------------------
alias wiki_refresh refresh
def refresh
wiki_refresh
if @old_opacity != nil
@opacity = @old_opacity
end
end
#--------------------------------------------------------------------------
# ■ イベント名の取得
#--------------------------------------------------------------------------
def name
return @event.name
end
#--------------------------------------------------------------------------
# ■ 不透明度の変化
#--------------------------------------------------------------------------
def opacity_setting(opacity)
return if @opacity == opacity
@old_opacity = opacity
@opacity = opacity
end
end
#==============================================================================
# ■ Game_Character (分割定義 3)
#------------------------------------------------------------------------------
# キャラクターを扱うクラスです。このクラスは Game_Player クラスと Game_Event
# クラスのスーパークラスとして使用されます。
#==============================================================================
class Game_Character
attr_reader :old_direction #過去の向きを保存
#--------------------------------------------------------------------------
# ■ オブジェクト初期化
#--------------------------------------------------------------------------
alias wiki_initialize initialize
def initialize
wiki_initialize
@old_direction = @direction
end
#--------------------------------------------------------------------------
# ■ 下を向く
#--------------------------------------------------------------------------
alias wiki_turn_down turn_down
def turn_down
@old_direction = @direction
wiki_turn_down
end
#--------------------------------------------------------------------------
# ■ 左を向く
#--------------------------------------------------------------------------
alias wiki_turn_left turn_left
def turn_left
@old_direction = @direction
wiki_turn_left
end
#--------------------------------------------------------------------------
# ■ 右を向く
#--------------------------------------------------------------------------
alias wiki_turn_right turn_right
def turn_right
@old_direction = @direction
wiki_turn_right
end
#--------------------------------------------------------------------------
# ■ 上を向く
#--------------------------------------------------------------------------
alias wiki_turn_up turn_up
def turn_up
@old_direction = @direction
wiki_turn_up
end
end
Социальные закладки