FE

というわけで、FEについて色々調べてみた。
FEの武器システムについてわかったことをまとめてみると、

  • 味方ターン中は自由に装備変更できる(行動が終了しているか否かを問わない)
  • 攻撃の際に使った武器が自動的に装備される
  • 敵ターンでは装備している武器で自動反撃を行う

こんな感じでいいのかな?
んで、タイトル通り早速コードに書き下してみた。
思っていたよりかなり大変な作業でした。
ちなみに一度も動かしてないので、バグが潜んでいる可能性高し。
今日は眠いので以上。
以下にコード。

# ファイヤーエムブレム再現インクルード下書き
*攻撃後 味方 敵:
*攻撃後 味方 中立:

# 味方フェイズじゃなければ意味が無いので終了
If フェイズ != "味方" Exit

# 使用した武器を記録しておく
FEI_装備武器[対象ユニットID] = 対象ユニット使用武器

Exit


# 味方ユニットの装備していないアイテムを全て封印する
*ターン 全 敵:

Local myWeapon i j _ItemID weap temp flag
ForEach 味方
  # 装備中の武器を変数に格納
  myWeapon = FEI_装備武器[対象ユニットID]
  # 封印済みアイテム数を初期化
  FEI_封印アイテム[対象ユニットID,0] = 0
  # アイテムの内、「そうび」していないアイテムを検索
  For i = 1 to CountItem()
    # 対象アイテム名称を取得
    _Item = Item(対象ユニットID, i)
    # 対象アイテムが関係無いアイテムだったらスキップ
    Switch Info(_Item, "装備個所")
    Case "アイテム" "強化パーツ" "片手" "両手" "盾" "肩" "両肩" "体" "頭" "非表示"
      Skip
    EndSw
    # フラグを初期化
    flag = 0
    # 対象アイテムの武器と比較
    For j = 1 to Info(_Item, "武器数")
      weap = Info(_Item, "武器", j)
      # 対象武器が「そうび」している武器なら
      If myWeapon = weap Then
        # このアイテムは封印しないのでフラグを立てる
        flag = 1
      Endif
    Next
    # フラグが立っていなかったら
    If flag = 0 Then
      # 対象アイテムと全ての武器が一致しなかったので、対象アイテムを封印
      Disable Unit() _Item
      # 封印中のアイテム数をインクリメント
      Incr FEI_封印アイテム[対象ユニットID,0]
      temp = FEI_封印アイテム[対象ユニットID,0]
      # 封印したアイテムを記録しておく
      FEI_封印アイテム[対象ユニットID,temp] = _Item
    Endif
  Next
Next

Exit



# 封印したアイテムを全て解除
*ターン 全 味方:
Local i
ForEach 味方
  For i = 1 to FEI_封印アイテム[対象ユニットID,0]
    Enable Unit() FEI_封印アイテム[対象ユニットID,i]
  Next
Next
Exit