性能が変化するキャラについて


いわゆる「裏キャラ」や「暴走キャラ」もそうですし、モードセレクトとかもそうですね。
大別すると以下の2パターンに分けられると思います。

1.パレットにより性能が変化する
2.ラウンド中に特定の条件を満たすと変化する

以上について簡単に説明します。


1.パレットにより性能が変化する

例えば「startを押しながらキャラを決定すると裏キャラになる」といった感じの処理ですね。
厳密に書くならば、「パレットが7〜12の場合、性能が変化するようにする」ことになります。
とすれば、これをそのままtriggerにとるか、この状態(パレットが7〜12の状態)をvarに記憶させておくかの2つになります。
私は、数字として扱いやすい上見た目もスッキリする分後者をオススメします。

「数字として扱いやすい」と書いたのは、例えば裏モード判別用のvarの値を10にしておけば、

[State 200, Voice]
type = PlaySnd
trigger1 = AnimElem = 1
value = 0, var(12);var(12)=10で裏モード
channel = 0

といったように記述を簡潔に出来ます。
(この場合、sndに音を登録する際、0,0が通常時の音、0,10が裏時の音という感じであらかじめ設定します)

これをもしパレットでやるならば、

[State 200, Voice]
type = PlaySnd
trigger1 = AnimElem = 1
value = 0, ifelse((palno = [1,6]), 0, 10);palno=[1,6]が表モード
channel = 0

または、

[State 200, Voice]
type = PlaySnd
triggerall = palno = [1,6];palno=[1,6]が表モード
trigger1 = AnimElem = 1
value = 0, 0
channel = 0

[State 200, Voice]
type = PlaySnd
triggerall = palno = [7,12];palno=[7,12]が裏モード
trigger1 = AnimElem = 1
value = 0, 10
channel = 0

となり、若干記述が多くなりますね。


2.ラウンド中に特定の条件を満たすと変化する

これは用途によってさらに2種類に分けられます(厳密には同一の処理なのですが)。
私のカプエスキャラを例にすれば、グルーヴセレクトとMAX発動の違いのようなものです。
どちらにせよ、特定のtriggerを満たすとvarsetし、そのvarにより性能を判断する事になります。

前者の場合、ラウンド中やあるいは特定の条件(commnad等)を満たした際にヘルパを呼び出します。
そのヘルパがparent,commandをtriggerに取ってchangestateし、
ヘルパの各々のstateでparentvarsetにより本体のモード判別用のvarを変化させていけば、モード分けができます。

参考までに、私のキャラのグルーヴセレクトをば(一部省略、あと基本処理ばかりなので、各処理の説明は省略します)
;---------------------------------------------------------------------------
;グルーヴセレクト(Kグルーヴ)
[Statedef 6005]
ctrl = 1
anim = 6900;画像の無いダミーのairです

[State 6005, VarSet]
type = ParentVarSet
trigger1 = Time = 0
var(20) = 5

[State 6005, Spark]
type = Explod
trigger1 = Time = 0
Anim = ifelse(facing = 1, 6005, 6015)
pos = 0, 0
postype = p1
ownpal = 1
bindtime = -1
pausemovetime = -1
ontop = 1
ID = 6005
scale = 0.5,0.5

[State 6005, RemoveExplod]
type = RemoveExplod
trigger1 = Time = 0
ID = 6006

[State 6005, RemoveExplod]
type = RemoveExplod
trigger1 = Time = 0
ID = 6004

[State 6005, RemoveExplod]
type = RemoveExplod
trigger1 = roundstate > 1
trigger2 = parent,command = "a" || parent,command = "b" || parent,command = "c" || parent,command = "x" || parent,command = "y" || parent,command = "z"
ID = 6005

[State 6005, ChangeState]
type = ChangeState
triggerall = time > 7
trigger1 = parent,command = "up"
value = 6004

[State 6005, ChangeState]
type = ChangeState
triggerall = time > 7
trigger1 = parent,command = "down"
value = 6006

[STate 6005, DestroySelf]
type = DestroySelf
trigger1 = roundstate > 1
trigger2 = parent,command = "a" || parent,command = "b" || parent,command = "c" || parent,command = "x" || parent,command = "y" || parent,command = "z"
;---------------------------------------------------------------------------
後はこれの繰返しです。

後者の処理も、基本的には同じですね。
特定の動作での変化ならそのstate内で、また特定の条件を満たすだけでの変化ならばstate-2でvarsetしてやります。
要はvarsetの仕方の違いだけですね。(前述のグルーヴセレクトにしても、「ヘルパがvarsetする」だけで、varsetの仕方の違いという点では同じです)
時間制限があるなら、そのvarが0じゃない時だけvaraddで減らしてやればOKです。


いかがでしょうか。
どの変化も私のキャラで使ってる処理なので、実際にどう動くか見たい場合は私のキャラを参考にして頂いて構いません。

■トップへ戻る