真だんごチェック

この「真だんごチェック」では、だんご何個分までサーチするかと、一番最初の基点となるユニットを選択できるようにしました。
後は、各だんごを構成するユニット数と、それらのユニットのIDをそれぞれ配列変数に保存してあります。「Check_DANGO:」関数内でならいくらでも参照できますし、「Local Chain_UnitNum」と「Local Chain_Unit」を削除すれば、関数外でも参照できます。(ただし、変数の競合に注意を
「Chain_UnitNum」にユニット数、「Chain_Unit」にユニットIDを格納しています。おまけで抽出方法ものっけてあるのでソース参照。
※1/21 tonkatiさんの指摘を受け、一部修正。ご指摘ありがとうございます。
以下、ソース。

マップコマンド 真だんごチェック関数起動:
真だんごチェック
Exit

# 書式: Check_DANGO サーチ回数 基点ユニット
# サーチ回数を指定しなかった場合、-1を指定した場合、全塊をリストアップ
# 指定した場合、指定した数分のだんごをリストアップ
真だんごチェック:
Check_DANGO
Return

Check_DANGO:
Local Select_UnitID
Local 出撃味方数
Local Loop_Max = Args(1)
Local Loop_Num
Local DANGO_Num
Local Chain_UnitNum
Local チェック済
Local i j k
Local Chain_Unit
Local だんごソート
Local Max_Num

ForEach 味方 出撃
  Select_UnitID = 対象ユニットID
  Incr 出撃味方数
Next

If Args(1) = "" Then
  Loop_Max = -1
Endif

If Args(2) != "" Then
  Select_UnitID = Args(2)
Endif

Do
  Incr Loop_Num
  Chain_Unit[Loop_Num,0] = Select_UnitID
  Set チェック済[Select_UnitID]
  Incr Chain_UnitNum[Loop_Num]
  For k = 0 to 出撃味方数
    If Chain_Unit[Loop_Num,k] = "" Then
      Break
    Endif
    For i = 1 to 2
      For j = 1 to 2
        Select_UnitID = Info(マップ,(X(Chain_Unit[Loop_Num,k]) + i - j),(Y(Chain_Unit[Loop_Num,k]) + 3 - i - j),ユニットID)
        If (チェック済[Select_UnitID] = 0) And (Party(Select_UnitID) = "味方") Then
          Set チェック済[Select_UnitID]
          Chain_Unit[Loop_Num,Chain_UnitNum[Loop_Num]] = Select_UnitID
          Incr Chain_UnitNum[Loop_Num]
        Endif
      Next
    Next
  Next
  Incr DANGO_Num Chain_UnitNum[Loop_Num]
  ForEach 味方 出撃
    If チェック済[対象ユニットID] = 0 Then
      Select_UnitID = 対象ユニットID
      Break
    Endif
  Next
Loop While (((Loop_Max = -1) Or (Loop_Num < Loop_Max)) And (DANGO_Num != 出撃味方数))

Ask Chain_UnitNum "各だんごのユニット数 一覧"
For i = 0 to (Chain_UnitNum[選択] - 1)
  だんごソート[Chain_Unit[選択,i]] = Nickname(Chain_Unit[選択,i])
Next
Ask だんごソート "選択しただんごのユニット 一覧" キャンセル可

For i = 1 to Loop_Num
  If Chain_UnitNum[i] > Max_Num Then
    Max_Num = Chain_UnitNum[i]
  Endif
Next

Talk システム
全出撃ユニット$(出撃味方数)の内、$(Max_Num)機がだんご状態にあります
End

Return