だんごチェック

そして昨日作った(といっても、今日手直しした)サブルーチンを更に手直し。
自分でもちょっと混乱するものになってしまった。

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

だんごチェック:
Local Select_UnitID
Local 出撃味方数
Local Chain_UnitNum
UnSet チェック済

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

Talk システム
全出撃ユニット$(出撃味方数)、$(Select_UnitID)が連鎖のスタート
End

Chain_UnitNum = Check_Chain(Select_UnitID,Chain_UnitNum)

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

Return

Check_Chain:
Local Chain_UnitNum = Args(2) + 1
Local Select_UnitID

Incr チェック済[Args(1)]

# Args(1)の右側
Select_UnitID = Info(マップ,(X(Args(1)) + 1),Y(Args(1)),ユニットID)
If (チェック済[Select_UnitID] = 0) And (Party(Select_UnitID) = "味方") Then
	Chain_UnitNum = Check_Chain(Select_UnitID,Chain_UnitNum)
EndIf

# Args(1)の左側
Select_UnitID = Info(マップ,(X(Args(1)) - 1),Y(Args(1)),ユニットID)
If (チェック済[Select_UnitID] = 0) And (Party(Select_UnitID) = "味方") Then
	Chain_UnitNum = Check_Chain(Select_UnitID,Chain_UnitNum)
EndIf

# Args(1)の上側
Select_UnitID = Info(マップ,X(Args(1)),(Y(Args(1)) - 1),ユニットID)
If (チェック済[Select_UnitID] = 0) And (Party(Select_UnitID) = "味方") Then
	Chain_UnitNum = Check_Chain(Select_UnitID,Chain_UnitNum)
EndIf

# Args(1)の下側
Select_UnitID = Info(マップ,X(Args(1)),(Y(Args(1)) + 1),ユニットID)
If (チェック済[Select_UnitID] = 0) And (Party(Select_UnitID) = "味方") Then
	Chain_UnitNum = Check_Chain(Select_UnitID,Chain_UnitNum)
EndIf

Return Chain_UnitNum

※1/14 15:04 If文に無駄な条件までかませてたのを修正
しかしやはり気にしないでおk(ry