KomoD作シナモン用改変パッチ説明書

インストール方法

cinnamonフォルダにfutanariフォルダとfutanari.defを入れて、select.defの[Characters]に

cinnamon/futanari.def
を書き加えて下さい。

主な改変個所

当パッチでは、このような変更が行われます。

  1. フーバーオーバー関連
    1. キャンセル防止
    2. フーバーオーバーや偽・瞬○殺中にフーバーオーバー、偽・瞬○殺、シナモンヒップアタックコマンドを入れるとキャンセルしてフラフラ動く不具合を直しました。


      記述変更

      以下のステートにトリガー“stateno != [4000,4019]”、“stateno != [14005,14006]”を追加しました。
      [StateDef 3050]〜[StateDef 3099]は存在しないので、トリガー“stateno != [3050,3100)”を削除しました。

      cinnamon.cmd
      [StateDef -1]
      ;Hoover's Ooover
      ;フーバーオーバー(ゲージレベル3)
      [State -1, HooversOoover]
      type = ChangeState
      value = 4000
      triggerall = command = "HooversOoover"
      triggerall = power >= 3000
      triggerall = statetype != A
      trigger1 = ctrl
      trigger2 = hitdefattr = SC, NA, SA, HA
      trigger2 = stateno != [3050,3100)
      trigger2 = movecontact
      ;Hoover's Ooover
      ;フーバーオーバー(ゲージレベル3)
      [State -1, HooversOoover]
      type = ChangeState
      value = 4000
      triggerall = command = "HooversOoover"
      triggerall = power >= 3000
      triggerall = statetype != A
      trigger1 = ctrl
      trigger2 = hitdefattr = SC, NA, SA, HA
      trigger2 = stateno != [4000,4019]
      trigger2 = stateno != [14005,14006]
      trigger2 = movecontact
      ;Nikkei Shungokusatsu
      ;偽・瞬獄殺(ゲージレベル3)
      [State -1, HooversOoover]
      type = ChangeState
      value = 4010
      triggerall = command = "Gokusatsu"
      triggerall = power >= 3000
      triggerall = statetype != A
      trigger1 = ctrl
      trigger2 = hitdefattr = SC, NA, SA, HA
      trigger2 = stateno != [3050,3100)
      trigger2 = movecontact
      ;Nikkei Shungokusatsu
      ;偽・瞬獄殺(ゲージレベル3)
      [State -1, HooversOoover]
      type = ChangeState
      value = 4010
      triggerall = command = "Gokusatsu"
      triggerall = power >= 3000
      triggerall = statetype != A
      trigger1 = ctrl
      trigger2 = hitdefattr = SC, NA, SA, HA
      trigger2 = stateno != [4000,4019]
      trigger2 = stateno != [14005,14006]
      trigger2 = movecontact
      ;シナモンヒップアタック(ゲージレベル1)
      [State -1, CinnamonHipAttack]
      type = ChangeState
      value = 2999
      triggerall = command = "CinnamonHipAttack"
      triggerall = power >= 1000
      triggerall = stateno != [3000,3050]
      triggerall = stateno != [1100,1122]
      trigger1 = statetype != A
      trigger1 = ctrl
      trigger2 = statetype != A
      trigger2 = hitdefattr = SC, NA, SA, HA
      trigger2 = movecontact
      ;シナモンヒップアタック(ゲージレベル1)
      [State -1, CinnamonHipAttack]
      type = ChangeState
      value = 2999
      triggerall = command = "CinnamonHipAttack"
      triggerall = power >= 1000
      triggerall = stateno != [1100,1122]
      triggerall = stateno != [3000,3050]
      triggerall = stateno != [4000,4019]
      triggerall = stateno != [14005,14006]
      trigger1 = statetype != A
      trigger1 = ctrl
      trigger2 = statetype != A
      trigger2 = hitdefattr = SC, NA, SA, HA
      trigger2 = movecontact
      cinnamon.cns
      [StateDef -3]
      ;AIフーバーオーバー(ゲージレベル3)
      [State -3, HooversOoover]
      type = ChangeState
      value = 4000
      Triggerall = Var(59) = 1 ;ここからAI条件
      triggerall = power >= 3000
      triggerall = statetype = S || statetype = C
      triggerall = p2statetype = S || p2statetype = C
      triggerall = movetype = I
      triggerall = p2movetype != H;A有
      trigger1 = p2bodydist X >= 0
      trigger1 = p2bodydist X <= 20;ここまで条件
      trigger1 = ctrl
      trigger2 = hitdefattr = SC, NA, SA, HA
      trigger2 = stateno != [3050,3100)
      trigger2 = movecontact
      ;AIフーバーオーバー(ゲージレベル3)
      [State -3, HooversOoover]
      type = ChangeState
      value = 4000
      Triggerall = Var(59) = 1 ;ここからAI条件
      triggerall = power >= 3000
      triggerall = statetype = S || statetype = C
      triggerall = p2statetype = S || p2statetype = C
      triggerall = movetype = I
      triggerall = p2movetype != H;A有
      trigger1 = p2bodydist X >= 0
      trigger1 = p2bodydist X <= 20;ここまで条件
      trigger1 = ctrl
      trigger2 = hitdefattr = SC, NA, SA, HA
      trigger2 = stateno != [4000,4019]
      trigger2 = stateno != [14005,14006]
      trigger2 = movecontact


    3. 抜け対策
    4. 従来、一部のキャラは受身コマンドやダウン回避コマンドで抜けられるようになっていましたが、それを防止しました。

      該当キャラは大抵、cmdファイルやAIに
      [State -1, UKEMI]
      type = ChangeState
      value = ????
      triggerall = command = "recovery"
      triggerall = alive = 1
      trigger1 = stateno = 5050
      trigger1 = pos y > -30
      のような、“StateNo = 5050”トリガーはあっても“CanRecover”トリガーが無い受身移行ステートがあります。


      記述変更

      つかまれた敵が移行する[StateDef 4007]にある
      [State 820, 2]
      type = SelfState
      trigger1 = !gethitvar(isbound)
      value = 5050
      によって、TargetBindが実行されていないときに自ステート5050に戻されるので、
      [StateDef 4002]に以下のような記述変更を行いました。
      [State 4002, Bind ]
      type = TargetBind
      trigger1 = time = 0
      pos = 40, 0
      [State 4002, Bind ]
      type = TargetBind
      Trigger1 = Time < 64
      pos = 40, 0
      これだけでは、一部のキャラをつかんだ場合、後退りしてしまうので、
      [StateDef 4007]に
      [State 4007, NoPush]
      Type = PlayerPush
      Trigger1 = 1
      Value = 0
      
      を追記しておきました。

      同様に、偽・瞬○殺の[StateDef 4012]に以下のような記述変更を行いました。
      [State 4012, Bind ]
      type = TargetBind
      trigger1 = Time = 0
      pos = 40, 0
      [State 4012, Bind ]
      type = TargetBind
      trigger1 = 1
      pos = 40, 0


      その後の敵が移行する[StateDef 15020]〜[StateDef 15035]に以下のような記述変更を行いました。

      [StateDef 15030]
      [State 15030, 3]
      type = SelfState
      triggerall = !HitFall
      trigger1 = HitOver
      trigger2 = Vel Y > 0    ;Hit ground
      trigger2 = Pos Y >= 30  ;.
      value = 5040 ;HITA_RECOV
      
      [State 15030, 4]
      type = SelfState
      triggerall = HitFall
      trigger1 = HitOver
      trigger2 = Vel Y > 0    ;Hit ground
      trigger2 = Pos Y >= 30  ;
      value = 5050 ;HITA_FALL
      [State 15030, 3]
      type = ChangeState
      triggerall = !HitFall
      trigger1 = HitOver
      trigger2 = Vel Y > 0    ;Hit ground
      trigger2 = Pos Y >= 30  ;.
      value = 15040 ;HITA_RECOV
      
      [State 15030, 4]
      type = ChangeState
      triggerall = HitFall
      trigger1 = HitOver
      trigger2 = Vel Y > 0    ;Hit ground
      trigger2 = Pos Y >= 30  ;
      value = 15050 ;HITA_FALL
      [StateDef 15035]
      [State 15035, 3]
      type = SelfState
      triggerall = !HitFall
      trigger1 = HitOver  ;Hit is over
      trigger2 = AnimTime = 0 ;Animation over
      trigger3 = Vel Y > 0    ;Hit ground
      trigger3 = Pos Y >= 30  ;.
      trigger4 = Time = 0     ;No transition anim
      trigger4 = Anim != 5035 ;.
      value = 5040 ;HITA_RECOV
      [State 15035, 3]
      type = ChangeState
      triggerall = !HitFall
      trigger1 = HitOver  ;Hit is over
      trigger2 = AnimTime = 0 ;Animation over
      trigger3 = Vel Y > 0    ;Hit ground
      trigger3 = Pos Y >= 30  ;.
      trigger4 = Time = 0     ;No transition anim
      trigger4 = Anim != 5035 ;.
      value = 15040 ;HITA_RECOV
      [State 15035, 4]
      type = SelfState
      triggerall = HitFall
      trigger1 = HitOver  ;Hit is over
      trigger2 = AnimTime = 0 ;Anim is over
      trigger3 = Vel Y > 0    ;Hit ground
      trigger3 = Pos Y >= 30  ;.
      trigger4 = Time = 0     ;No transition anim
      trigger4 = Anim != 5035 ;.
      value = 5050 ;HITA_FALL
      [State 15035, 4]
      type = ChangeState
      triggerall = HitFall
      trigger1 = HitOver  ;Hit is over
      trigger2 = AnimTime = 0 ;Anim is over
      trigger3 = Vel Y > 0    ;Hit ground
      trigger3 = Pos Y >= 30  ;.
      trigger4 = Time = 0     ;No transition anim
      trigger4 = Anim != 5035 ;.
      value = 15050 ;HITA_FALL

      そして、新たに以下のステートを追加しました。
      ; HITA_RECOV (recovering in air, not falling)
      [Statedef 15040]
      type    = A
      movetype= H
      physics = N
      
      [State 15040, 1]
      type = ChangeState
      trigger1 = !Alive
      value = 15050
      
      [State 15040, 2]
      type = ChangeAnim
      trigger1 = AnimTime = 0
      trigger1 = Anim != 5040
      trigger2 = Time = 0
      trigger2 = Anim != 5035
      value = 5040
      
      [State 15040, 3]
      type = CtrlSet
      trigger1 = HitOver
      value = 1
      
      [State 15040, 4]
      type = StateTypeSet
      trigger1 = HitOver
      movetype = I
      
      [State 15040, 5]
      type = VelAdd
      trigger1 = 1
      y = GetHitVar(yaccel)
      
      [State 15040, 6]
      type = SelfState
      trigger1 = Vel Y > 0
      trigger1 = Pos Y >= 0
      value = 52 ;JUMPLAND
      
      
      
      ; HITA_FALL (knocked up, falling)
      [Statedef 15050]
      type    = A
      movetype= H
      physics = N
      
      [State 15050, 1] ;Change anim when done with transition
      type = ChangeAnim
      trigger1 = AnimTime = 0
      trigger1 = Anim = 5035
      trigger2 = Time = 0     ;If no transition anim
      trigger2 = Anim != 5035
      trigger2 = (Anim != [5051, 5059]) && (Anim != [5061, 5069])
      trigger2 = Anim != 5090 ;Not if hit off ground anim
      value = 5050
      
      [State 15050, 2] ;Coming down anim
      type = ChangeAnim
      trigger1 = anim = [5050,5059]
      trigger1 = Vel Y >= ifelse(anim = 5050, 1, -2)
      trigger1 = SelfAnimExist(anim+10)
      value = anim+10
      persistent = 0
      
      [State 15050, 3] ;Gravity
      type = VelAdd
      trigger1 = 1
      y = GetHitVar(yaccel)
      
      [State 15050, 6]
      type = SelfState
      trigger1 = Vel Y > 0
      trigger1 = Pos Y >= ifelse((anim = [5051,5059]) || (anim = [5061,5069]), 0, 25)
      value = 5100 ;HIT_BOUNCE


      ……対特定キャラ用ステート[StateDef 14005]、[StateDef 14006]は削除するべきか悩んでいます。(叫び声を上げる程度の違いなので)


  2. 「カップのなか」関連
    1. 敵の位置設定法をかえてタッグでの不具合を解消しました。
    2. 従来の、カップに当たった敵が移行する[StateDef 3110]、[StateDef 3111]で敵の位置を設定する
      [State 3110, 2]
      type = PosSet
      trigger1 = time = 20
      trigger1 = enemy,Facing = 1
      x = 80
      y = -25
      
      [State 3110, 2]
      type = PosSet
      trigger1 = time = 20
      trigger1 = enemy,Facing = -1
      x = -80
      y = -25
      の方法では、タッグではメインキャラの向きしか参照しないので、
      シナモンがサブキャラになってるときはシナモンのパートナーの向きによって、
      カップから飛び出すはずの敵がシナモンの頭から飛び出す様になります。

      だから、敵に当たったカップが移行する[StateDef 3105]でTargetBindを使う方法にかえました。


    3. 落とすカップを当たり用、はずれ用の2種類から、当たりはずれ共通の1種類にしました。
    4. これにより、

      1. はずれ用カップの[StateDef 13101]を廃止。
      2. カップに当たった敵が移行する[StateDef 3110]を待機、
        [StateDef 3111]をはずれの動作、[StateDef 3112]を当たりの動作に変更。
      3. 敵の当たり・はずれの動作への移行は、カップの[StateDef 3105]でTargetStateを使用。


    5. 一部のキャラは、カップから顔を出すようにしました。
    6. 586氏作Unknownの「たるのなか」対応キャラ、スディ氏作首斬り破沙羅の絶命奥義対応キャラ、NRF氏作コンバット越前は、カップから顔を出すようにしました。





      新たに対応したいキャラを追加する場合は……


  3. パワーチャージ関連
    1. ライフもパワーも満タンの時はチャージを行わないようにしました。
    2. 記述変更

      以下のステートに
      trigger1 = Life < LifeMax
      trigger2 = Power < PowerMax
      を追加しました。

      cinnamon.cmd
      [StateDef -1]
      ;Charge
      ;チャージ
      [State -1, Charge]
      type = ChangeState
      value = 990
      triggerall = command = "Charge"
      triggerall = command != "holddown"
      triggerall = Var(59) = 0
      trigger1 = statetype = S
      trigger1 = ctrl
      ;Charge
      ;チャージ
      [State -1, Charge]
      type = ChangeState
      value = 990
      triggerall = command = "Charge"
      triggerall = command != "holddown"
      triggerall = Var(59) = 0
      triggerAll = statetype = S
      triggerAll = ctrl
      Trigger1 = Life < LifeMax
      Trigger2 = Power < PowerMax
      cinnamon.cns
      [StateDef 990]
      [State 990, 6]
      type = ChangeState
      trigger1 = time = 25
      trigger1 = command = "hold_Charge"
      value = 991
      ctrl = 1
      [State 990, 6]
      type = ChangeState
      triggerAll = time = 25
      triggerAll = command = "hold_Charge"
      trigger1 = Life < LifeMax
      trigger2 = Power < PowerMax
      value = 991
      ctrl = 1
      [StateDef 991]
      [State 991, 5]
      type = ChangeState
      trigger1 = time = 19
      trigger1 = command = "hold_Charge"
      value = 991
      [State 991, 5]
      type = ChangeState
      triggerAll = time = 19
      triggerAll = command = "hold_Charge"
      trigger1 = Life < LifeMax
      trigger2 = Power < PowerMax
      value = 991


今後の予定


パッチ作者 Masanobu Uchida
mailto:mas_uchida@mve.biglobe.ne.jp
2009/05