Switch 対象パイロット
Case 獅子王凱(エヴォリュダー) 獅子王凱(GS)
Set Mi-Koto 卯都木命(GGGFオペレーター)
Case Else
Set Mi-Koto 卯都木命(プログラムドライブ)
EndSw
# エヴォリュダーか否かでミコトの表情を分化させておく。
# ドライブ役が変更されている場合は使いませんが、先に設定しています。
If Skill(対象パイロット, 八木沼承認) Then
AutoTalk 八木沼範行 固定 非表示
ファイナルフュージョン、承認……っと
Suspend
If Skill(対象パイロット, スワンドライブ) Then
AutoTalk 火麻激 固定 非表示
スワァァァン!!
Suspend
ElseIf Skill(対象パイロット, パピヨンドライブ) Then
AutoTalk 火麻激 固定 非表示
パピヨォォォン!!
Suspend
Else
AutoTalk 火麻激 固定 非表示
卯都木ぃぃぃっ!!
Suspend
EndIf
ElseIf Skill(対象パイロット, ロゼ承認) Then
AutoTalk ロゼ=アプロヴァール
ファイナルフュージョン! 承ーーー認ッ!!
Suspend
Else
AutoTalk 大河幸太郎 固定 非表示
ファイナルフュージョン!!: しょおぉぉぉ認っ!!
Suspend
EndIf
Switch Args(1)
Case "-" ""
Set GUY_S 対象パイロット
Case Else
Set GUY_S Pilot(Args(1))
EndSw
Switch GUY_S
Case 獅子王凱(GS)
Set GUY_SA GUY_S
Set Mi-Koto 卯都木命(GGGFオペレーター)
Case 獅子王凱(エヴォリュダー)
Set GUY_SA (GUY_S & "(攻撃)")
Set Mi-Koto 卯都木命(GGGFオペレーター)
Case Else
Set GUY_SA (GUY_S & "(攻撃)")
Set Mi-Koto 卯都木命(プログラムドライブ)
EndSw
Switch Unit(GUY_S)
Case ガオガイガー(前期型) ガオガイガー
Set GAO_N ガオガイガー
Case ガオファイガー
Set GAO_N ガオファイガー
EndSw
# 合体相手によってゴルディーの呼びかけ対象を決定。
Local i ConnectedG-Hammer
Set ConnectedG-Hammer 0
For i = 1 To CountPilot(対象ユニットID)
If Pilot(対象ユニットID,i) = ゴルディーマーグ Then
Set ConnectedG-Hammer 1
EndIf
Next
If ConnectedG-Hammer = 0 Then
Call _GH-SaftyDeviceRelieve
AutoTalk システム
End
# 何も言わない。メッセージウィンドウの消去。
Switch Unit(対象ユニットID)
Case ガオガイガー(前期型)
Combine 対象ユニットID ガオガイガー(G)(前期型)
Case ガオガイガー
Combine 対象ユニットID ガオガイガー(G)
Case ガオファイガー
Combine 対象ユニットID ガオファイガー(G)
EndSw
EndIf
UnSet ConnectedG-Hammer
Exit
If CountPilot(対象ユニットID) > 1 Then
Local i V J_P
For i = 1 to CountPilot(対象ユニットID)
Set J_P[i] Pilot(対象ユニットID, i)
Next
GetOff
ForEach V In J_P
If Skill(J_P[V], 浄解) > 0 Then
Ride J_P[V] ジェイキャリアー
Else
Ride J_P[V] 対象ユニットID
EndIf
Next
UnSet i V J_P
EndIf
For i = 1 To ArgNum
Array ARY Args(i) "="
Switch ARY[1]
Case 画像ファイル
Set Pict[A] ARY[2]
Set Pict[B] ARY[3]
Case 画像サイズ
Set PictSz[A] ARY[2]
Set PictSz[B] ARY[3]
Case 色
Skip
Case Else
If InStr(ARY[1], ".wav") > 0 Then
Set PrSE ARY[1]
EndIf
EndSw
Next
Local i T_X T_Y ANG DRCT W_P W_S H_C S_E S-I C-S LN
Local UID = _GetName(対象ユニットID,_GetIDFromArgs())
_CenteringCheck UID
Set T_X (WX(UID) + 16)
Set T_Y (WY(UID) + 16)
# +16してユニット画像の中心座標を得ておく。
Set ANG Call(_GetAngle)
Set DRCT _FlipVertical(ANG)
# 目標までの角度と上下反転するかどうかの取得。汎用戦闘アニメ流用。
Set W_P[1] Args(1)
Set W_S[1] Args(2)
Set W_P[2] Args(3)
Set W_S[2] Args(4)
Set S_E _GetName(Reload.wav,Args(5))
Set H_C[1] (W_S[1] / 2)
Set H_C[2] (W_S[2] / 2)
Set S-I[A] (Sin(3.141592 * (ANG + 90) / 180) * 16)
Set C-S[A] (Cos(3.141592 * (ANG + 90) / 180) * 16)
# 画像表示用・修正値の計算など
# ↓ここから画像の表示
Wait Start
PlaySound S_E
For i = 1 To 3
ClearPicture
Switch i
Case 1
Set LN -4
Case 2
Set LN 2
Case 3
Set LN 0
EndSw
PaintPicture W_P[1] (T_X - H_C[1] - C-S[A] - LN) (T_Y - H_C[1] - S-I[A] - LN) W_S[1] W_S[1] 透過 DRCT 右回転 ANG _ColorTime()
PaintPicture W_P[2] (T_X - H_C[2] + C-S[A] - LN) (T_Y - H_C[2] + S-I[A] - LN) W_S[2] W_S[2] 透過 DRCT 右回転 ANG _ColorTime()
Refresh
Wait Until (0.6 * i)
Next
Wait Until 7
UnSet i T_X T_Y ANG W_P W_S B_C H_C S-I C-S LN
Return Keep
# ローカル変数を削除してリターン
Local i m T_X T_Y ANG DRCT W_P W_S B_C B_S H_C S-I C-S LN ARY
Local UID = _GetName(対象ユニットID,_GetIDFromArgs())
_CenteringCheck UID
Set T_X (WX(UID) + 16)
Set T_Y (WY(UID) + 16)
Set ANG Call(_GetAngle)
Set DRCT _FlipVertical(ANG)
Set B_S Call(_GetSizeFromArgs)
For i = 1 To ArgNum
Array ARY Args(i) "="
Switch ARY[1]
Case 画像ファイル
Set W_P[A] ARY[2]
Set W_P[B] ARY[3]
Case 画像サイズ
Set W_S[A] ARY[2]
Set W_S[B] ARY[3]
Case 色
Set B_C[A] ARY[2]
Set B_C[B] ARY[3]
Case Else
Skip
EndSw
Next
Set W_P[1] _GetName("Weapon\EFFECT_BeamRifle01.bmp",W_P[A])
Set W_S[1] _GetName(32,W_S[A])
Set W_P[2] _GetName("Weapon\EFFECT_BeamRifle01.bmp",W_P[B])
Set W_S[2] _GetName(32,W_S[B])
If B_S = "小" Then
Set B_C[1] ("Beam\EFFECT_Beam" & _GetName("(Pink)",_G_BC_FA(B_C[A])) & "0")
Set B_C[2] ("Beam\EFFECT_Beam" & _GetName("(Pink)",_G_BC_FA(B_C[B])) & "0")
ElseIf B_S = "中" Then
Set B_C[1] ("Beam\EFFECT_MBeam" & _GetName("(Pink)",_G_BC_FA(B_C[A])) & "0")
Set B_C[2] ("Beam\EFFECT_MBeam" & _GetName("(Pink)",_G_BC_FA(B_C[B])) & "0")
EndIf
Set H_C[1] (W_S[1] / 2)
Set H_C[2] (W_S[2] / 2)
# 修正値の計算……画像サイズの半分=画像回転時の半径
Set S-I[1] (Sin(3.141592 * ANG / 180) * H_C[1])
Set S-I[2] (Sin(3.141592 * ANG / 180) * H_C[2])
Set C-S[1] (Cos(3.141592 * ANG / 180) * H_C[1])
Set C-S[2] (Cos(3.141592 * ANG / 180) * H_C[2])
# 画像の半径にそれぞれの角度のサイン・コサインをかける
# =画像回転時の砲口の位置を知るための修正値
Set LN[X] _GetCircumference(ANG,X)
Set LN[Y] _GetCircumference(ANG,Y)
# ビーム発射時の”反動”=ビーム発射方向の逆ベクトルを求める。汎用戦闘アニメ流用。
_UnSetBattleAnimeValue
# ↓ここから画像の表示
Wait Start
PlaySound Charge.wav
For i = 1 To 5
ClearPicture
Switch i
Case 3
_SelectSound Beam.wav _GetWavFromArgs()
If B_S = "小" Then
Set m -2
ElseIf B_S = "中" Then
Set m -4
EndIf
Case 4
If B_S = "小" Then
Set m -1
ElseIf B_S = "中" Then
Set m -2
EndIf
Case Else
Set m 0
EndSw
PaintPicture W_P[1] (T_X - H_C[1] - C-S[A] + (LN[X] * m)) (T_Y - H_C[1] - S-I[A] + (LN[Y] * m)) W_S[1] W_S[1] 透過 DRCT 右回転 ANG _ColorTime()
PaintPicture W_P[2] (T_X - H_C[2] + C-S[A] + (LN[X] * m)) (T_Y - H_C[2] + S-I[A] + (LN[Y] * m)) W_S[2] W_S[2] 透過 DRCT 右回転 ANG _ColorTime()
PaintPicture (B_C[1] & i & ".bmp") (T_X - 32 - C-S[A] - C-S[1]) (T_Y - 32 - S-I[A] - S-I[1]) 64 64 透過 右回転 ANG _ColorTime(1)
PaintPicture (B_C[2] & i & ".bmp") (T_X - 32 + C-S[A] - C-S[2]) (T_Y - 32 + S-I[A] - S-I[2]) 64 64 透過 右回転 ANG _ColorTime(1)
Refresh
Wait Until (0.8 * i)
Next
UnSet i m T_X T_Y ANG W_P W_S B_C B_S H_C S-I C-S S_E LN ARY PrSE
Return
Local i m E_X E_Y ANG B_C B_CA B_CB X_F Y_F ARY B_S P_S
Local UID = _GetName(相手ユニットID,_GetIDFromArgs())
_CenteringCheck UID
Set E_X (WX(UID) - 16)
Set E_Y (WY(UID) - 16)
Set ANG Call(_GetAngle)
Set B_S Call(_GetSizeFromArgs)
For i = 1 To ArgNum
Array ARY Args(i) "="
Switch ARY[1]
Case 画像ファイル 画像サイズ
Skip
Case 色
Set B_C[A] ARY[2]
Set B_C[B] ARY[3]
Case Else
Skip
EndSw
Next
Set B_CA[1] ("Beam\EFFECT_BeamDroplet" & _GetName("(Pink)",_G_BC_FA(B_C[A])) & "0")
Set B_CA[2] ("Beam\EFFECT_BeamDroplet" & _GetName("(Pink)",_G_BC_FA(B_C[B])) & "0")
If B_S = "小" Then
Set B_CB[1] ("Beam\EFFECT_BeamHit" & _GetName("(Pink)",_G_BC_FA(B_C[A])) & "0")
Set B_CB[2] ("Beam\EFFECT_BeamHit" & _GetName("(Pink)",_G_BC_FA(B_C[B])) & "0")
Set m 1
Set P_S[1] 26
Set P_S[2] 24
ElseIf B_S = "中" Then
Set B_CB[1] ("Beam\EFFECT_MBeamHit" & _GetName("(Pink)",_G_BC_FA(B_C[A])) & "0")
Set B_CB[2] ("Beam\EFFECT_MBeamHit" & _GetName("(Pink)",_G_BC_FA(B_C[B])) & "0")
Set m 2
Set P_S[1] 20
Set P_S[2] 16
EndIf
Set X_F _GetCircumference((ANG + 90),X)
Set Y_F _GetCircumference((ANG + 90),Y)
Wait Start
For i = 1 To 6
ClearPicture
If (i = 2) Then
_SelectSound Explode.wav _GetWavFromArgs()
EndIf
Switch i
Case 2
PaintPicture (B_CA[1] & 1 & ".bmp") (E_X + P_S[1] + (X_F * 8)) (E_Y + P_S[1] + (Y_F * 8)) (12 * m) (12 * m) 右回転 ANG 透過 _ColorTime(1)
PaintPicture (B_CA[2] & 1 & ".bmp") (E_X + P_S[1] + (X_F * -8)) (E_Y + P_S[1] + (Y_F * -8)) (12 * m) (12 * m) 右回転 ANG 透過 _ColorTime(1)
Case 3 4
PaintPicture (B_CA[1] & 1 & ".bmp") (E_X + P_S[2] + (X_F * 8)) (E_Y + P_S[2] + (Y_F * 8)) (16 * m) (16 * m) 右回転 ANG 透過 _ColorTime(1)
PaintPicture (B_CA[2] & 1 & ".bmp") (E_X + P_S[2] + (X_F * -8)) (E_Y + P_S[2] + (Y_F * -8)) (16 * m) (16 * m) 右回転 ANG 透過 _ColorTime(1)
EndSw
PaintPicture (B_CB[1] & i & ".bmp") (E_X + (X_F * 8)) (E_Y + (Y_F * 8)) 64 64 透過 右回転 ANG _ColorTime(1)
PaintPicture (B_CB[2] & i & ".bmp") (E_X + (X_F * -8)) (E_Y + (Y_F * -8)) 64 64 透過 右回転 ANG _ColorTime(1)
Refresh
Wait Until (0.7 * i)
Next
UnSet i m E_X E_Y ANG B_C B_CA B_CB X_F Y_F ARY B_S P_S
Return
# ローカル変数を削除してリターン
Local i C_X C_Y W_X W_Y ANG DRCT DRCT2 W_P W_S H_C S-I C-S LN
Local UID = _GetName(対象ユニットID,_GetIDFromArgs())
_CenteringCheck UID
Set C_X WX(UID)
Set C_Y WY(UID)
Set ANG Call(_GetAngle)
If (X(UID) >= _Get_X(相手ユニットID)) Then
Set DRCT ""
Else
Set DRCT 左右反転
EndIf
Set DRCT2 _FlipVertical(ANG)
For i = 1 To ArgNum
Array ARY Args(i) "="
Switch ARY[1]
Case 画像ファイル
Set W_P[1] ARY[2]
Set W_P[2] ARY[3]
Case 画像サイズ
Set W_S[1] ARY[2]
Set W_S[2] ARY[3]
Case Else
Skip
EndSw
Next
Set H_C[1] (W_S[1] / 2)
Set H_C[2] (W_S[2] / 2)
Set S-I[A] (Sin(3.141592 * (ANG + 90) / 180) * 16)
Set C-S[A] (Cos(3.141592 * (ANG + 90) / 180) * 16)
# 画像表示用・修正値の計算など
Local X_F = _GetCircumference(ANG,X)
Local Y_F = _GetCircumference(ANG,Y)
Local BMP_FILE = _GetBMPName(UID)
Local BMP_FILE2 = _GetTileName(UID)
_UnSetBattleAnimeValue
Set W_X[1] ((C_X + 16) - H_C[1] - C-S[A])
Set W_Y[1] ((C_Y + 16) - H_C[1] - S-I[A])
Set W_X[2] ((C_X + 16) - H_C[2] + C-S[A])
Set W_Y[2] ((C_Y + 16) - H_C[2] + S-I[A])
Local i ARY C_X C_Y SIZE B_C S_E M_S P_G
Local UID = _GetName(対象ユニットID,_GetIDFromArgs())
For i = 1 To ArgNum
Array ARY Args(i) "="
Switch ARY[1]
Case 色
Set B_C[A] ARY[2]
Set B_C[B] ARY[3]
Case 効果音
Set S_E[1] ARY[2]
Set S_E[2] _GetName(ARY[2],ARY[3])
Case 台詞
Set M_S[A] ARY[2]
Set M_S[B] ARY[3]
Case 表情
Set P_G[A] ARY[2]
Set P_G[B] _GetName(ARY[2],ARY[3])
EndSw
Next
Local i ARY C_X C_Y B_C S_E M_S P_G LN
Local UID = _GetName(対象ユニットID,_GetIDFromArgs())
For i = 1 To ArgNum
Array ARY Args(i) "="
Switch ARY[1]
Case 色
Set B_C[A] ARY[2]
Set B_C[B] ARY[3]
Set B_C[C] ARY[4]
Case 効果音
Set S_E[1] ARY[2]
Set S_E[2] _GetName(ARY[2],ARY[3])
Case 台詞
Set M_S[A] ARY[2]
Set M_S[B] ARY[3]
Case 表情
Set P_G[A] ARY[2]
Set P_G[B] _GetName(ARY[2],ARY[3])
EndSw
Next
Local i j T_X T_Y W_P W_S H_S A_G LN S-I C-S ARY DRCT
Local UID = _GetName(対象ユニットID,_GetIDFromArgs())
_CenteringCheck UID
Set T_X (WX(UID) + 16)
Set T_Y (WY(UID) + 16)
For i = 1 To ArgNum
Array ARY Args(i) "="
Switch ARY[1]
Case 画像ファイル
For j = 1 To (Count(ARY) - 1)
Set W_P[j] ARY[j + 1]
Next
Case 画像サイズ
For j = 1 To (Count(ARY) - 1)
Set W_S[j] ARY[j + 1]
Set H_S[j] (W_S[j] / 2)
Next
Case 角度
For j = 1 To (Count(ARY) - 1)
Set A_G[j] ARY[j + 1]
Next
Case 個数
Local NUM = ARY[2]
Case 集合
Local M_V = 1
Case Else
Skip
EndSw
Next
If NUM > 0 Then
For i = 2 To NUM
Set W_P[i] W_P[1]
Set W_S[i] W_S[1]
Set H_S[i] H_S[1]
Next
EndIf
If Count(A_G) = 0 Then
For i = 1 To Count(W_P)
Set A_G[i] (((360 / Count(W_P)) * (i - 1)) + 90)
# 90を足すのは1枚目の画像が真上に来るようにするための処置。
Next
EndIf
If M_V = 1 Then
For i = 1 To Count(A_G)
If A_G[i] >= 90 And A_G[i] <= 270 Then
Set DRCT[i] ""
Else
Set DRCT[i] 左右反転
EndIf
Next
Else
For i = 1 To Count(A_G)
If A_G[i] > 90 And A_G[i] < 270 Then
Set DRCT[i] 左右反転
Else
Set DRCT[i] ""
EndIf
Next
EndIf
For i = 1 To Count(W_P)
Set S-I[i] (Sin(3.141592 * (A_G[i]) / 180) * 25)
Set C-S[i] (Cos(3.141592 * (A_G[i]) / 180) * 25)
Next
Switch Call(_GetSpeedFromArgs)
Case 速
Set LN 0.5
Case 遅
Set LN 2
Case Else
Set LN 1
EndSw
Wait Start
_SelectSound Whiz.wav _GetWavFromArgs()
If M_V = 1 Then
For i = 1 To 5
ClearPicture
For j = 1 To Count(W_P)
PaintPicture W_P[j] (T_X - H_S[j] - (C-S[j] * (6 - i))) (T_Y - H_S[j] - (S-I[j] * (6 - i))) W_S[j] W_S[j] 透過 DRCT[j] _ColorTime()
Next
Refresh
Wait Until (LN * i)
Next
Else
For i = 1 To 5
ClearPicture
For j = 1 To Count(W_P)
PaintPicture W_P[j] (T_X - H_S[j] - (C-S[j] * (i + 1))) (T_Y - H_S[j] - (S-I[j] * (i + 1))) W_S[j] W_S[j] 透過 DRCT[j] _ColorTime()
Next
Refresh
Wait Until (LN * i)
Next
EndIf
UnSet i j T_X T_Y W_P W_S H_S A_G LN S-I C-S ARY DRCT NUM M_V
Return
Local i BMP_FILE BMP_FILE2 ANG C_X C_Y B_C X_F Y_F Ex_Pl
Local UID = _GetName(相手ユニットID,_GetIDFromArgs())
Set B_C ("Impact\EFFECT_CircleImpact" & _GetName("(White)",_G_BC_FA()) & "0")
Set ANG Call(_GetAngle)
_CenteringCheck UID
Set C_X WX(UID)
Set C_Y WY(UID)
Set BMP_FILE _GetBMPName(UID)
Set BMP_FILE2 _GetTileName(UID)
Set X_F _GetCircumference(ANG,X)
Set Y_F _GetCircumference(ANG,Y)
For i = 1 To ArgNum
Switch Args(i)
Case 爆発なし
Set Ex_Pl 1
Case Else
Skip
EndSw
Next
Local i ANG C_X C_Y B_C X_F Y_F LN
Local UID = _GetName(対象ユニットID,_GetIDFromArgs())
Set B_C ("Impact\EFFECT_CircleImpact" & _GetName("(White)",_G_BC_FA()) & "0")
Set ANG Call(_GetAngle)
Set S-I (Sin(3.141592 * ANG / 180))
Set C-S (Cos(3.141592 * ANG / 180))
_CenteringCheck UID
Set C_X (_Get_WX(UID) - 32)
Set C_Y (_Get_WY(UID) - 32)
Set X_F _GetCircumference((ANG + 180),X)
Set Y_F _GetCircumference((ANG + 180),Y)
_SelectSound Whiz.wav _GetWavFromArgs()
Wait Start
For i = 1 To 3
Set LN (i - 1)
ClearPicture
PaintPicture (B_C & i & ".bmp") (C_X - (C-S * 32) - (X_F * (8 * LN))) (C_Y - (S-I * 32) - (Y_F * (8 * LN))) 96 96 透過 右回転 (180 + ANG) _ColorTime(1)
Refresh
Wait Until (i * 0.7)
Next