[時間のかかるchangestate]


[基本]

「ChangeStateしたい状況」を満たしてから

randam10~40F以上経過したとき

「ChangeState可能条件」を満たしていればChangeState

こういうChangeStateです。



記述方法は説明するより例を見たほうが早いでしょう。

記述例

 
[ChangeState(AI用)]

[State -1, p]
type = ChangeState
value = 210
triggerall = statetype = S              ;「ChangeState可能条件」
triggerall = ctrl                            ;「ChangeState可能条件」
trigger1 = p2bodydist X <= 50        ;「ChangeStateしたい状況その1」
trigger1 = enemy,stateno = 250      ;「ChangeStateしたい状況その1」
trigger2 = p2bodydist X <= 80        ;「ChangeStateしたい状況その2」
trigger2 = enemy,MoveType = A     ;「ChangeStateしたい状況その2」
trigger2 = enemy,StateType = A     ;「ChangeStateしたい状況その2」



[時間のかかるchangestate]

[State -1, p]
type = ChangeState
value = 210
triggerall = helper(BB),var(2) >= 10 + helper(BB),var(1)     ;randam10~40F以上経過した
triggerall = Floor(fvar(AA)) = 210                ;210に移行したいと思っていた
trigger1 = statetype = S                     ;「ChangeState可能条件」
trigger1 = ctrl                                                           ;「ChangeState可能条件」

[State -1, fv]
type = varset
fvar(AA) = 210.01                    ;210に移行したいパターン1
trigger1 = p2bodydist X < = 50    ;「ChangeStateしたい状況その1」
trigger1 = enemy,stateno = 250   ;「ChangeStateしたい状況その1」
ignorehitpause = 1

[State -1, fv]
type = varset
fvar(AA) = 210.02                      ;210に移行したいパターン2
trigger1 = p2bodydist X <= 80      ;「ChangeStateしたい状況その2」
trigger1 = enemy,MoveType = A   ;「ChangeStateしたい状況その2」
trigger1 = enemy,StateType = A   ;「ChangeStateしたい状況その2」
ignorehitpause = 1
 


こんな感じです。 


 
*備考1*

非やられ状態(root,movetype = H && root,stateno != [120,155])

から

やられ状態(root,movetype != H || root,stateno = [120,155])

になると

[時間のかかるchangestate]は終了します。

*備考2*

新たに[時間のかかるchangestate]を発動させると

それまでの[時間のかかるchangestate]は終了されます。



 
[任意の解除]

それから

randam10~40F以上経過したとき

「ChangeState可能条件」を満たしようがない状況になっているかもしれません。

そんなときは


[State -1, Re]
type = varset
fvar(AA) = 0
triggerall = helper(BB),var(2) >= 10 + helper(BB),var(1)          ;randam10~40F以上経過した
triggerall = fvar(AA) = xxx.yy                         ;xxxに移行したいパターンyy

trigger1 = ‥

ignorehitpause = 1


↑これにtriggerを追加して終わらせてください。



[State -1, p]
type = ChangeState
value = 610
triggerall = helper(BB),var(2) >= 10 + helper(BB),var(1)     ;randam10~40F以上経過した
triggerall = Floor(fvar(AA)) = 610                ;210に移行したいと思っていた
trigger1 = statetype = A                     ;「ChangeState可能条件」
trigger1 = ctrl                            ;「ChangeState可能条件」

[State -1, fv]
type = varset
fvar(AA) = 610.15                 ;610に移行したいパターン15
trigger1 = p2bodydist X < = 50                  ;「ChangeStateしたい状況」
trigger1 = enemy,stateno = 250                 ;「ChangeStateしたい状況」
ignorehitpause = 1

[State -1, Re]
type = varset
fvar(AA) = 0
triggerall = helper(BB),var(2) >= 10 + helper(BB),var(1) ;randam10~40F以上経過した
triggerall = fvar(AA) = 610.15                 ;610に移行したいパターン15
trigger1 = statetype != A                                        ;地上に降りてしまった。
ignorehitpause = 1


こんな感じです。




 [覚えておくと良いtrigger]

trigger1 = helper(BB),var(2) < 10 + helper(BB),var(1)    ;randam10~40Fまだ経過していない

たぶんヒット確認小パンこすりで使う。