| 御刀です。
先日ここでアドバイスをいただいて、それをもとに インクルを作ってみたのですが、そのインクルを使うと 戦闘アニメが少し変になったんです。 具体的には、
・武器アイコンと弾の画像がややずれて表示される (ビームライフルとビームの位置が合ってない、といった具合) ・回避時にユニット画像がスライドしない
という感じの症状がみられました。 不思議なことにそのインクルを使わなかったら正常に表示されるのです。
私には何が原因なのかさっぱりわかりません。 ソースをすべて掲示するので、どなたか、原因がなんなのか調査して いただけないでしょうか。 申し訳ありません、すこし長いです。
#============================================= # 熱量基本値 #=============================================
# ※あらかじめ「外気温度」を宣言しておく
*ターン 1 味方: Set 相手増加熱量 0 Set 自分増加熱量 0 Local 冷却 ForEach 全 冷却 = Call(冷却性能計算, 対象パイロット) 熱量[対象ユニット] = Int(外気温度 * (1 - 冷却 / 15000)) Next Exit
#============================================= # 毎ターン熱量回復 #=============================================
*ターン 全 味方: Local 冷却 ForEach 全 If 熱量[対象ユニット] > Call(耐熱温度取得, 対象パイロット) Then 冷却 = Call(緊急冷却性能計算, 対象パイロット) 熱量[対象ユニット] = Int(熱量[対象ユニット] * (1 - 冷却 / 10000)) Else 冷却 = Call(冷却性能計算, 対象パイロット) 熱量[対象ユニット] = Int(熱量[対象ユニット] * (1 - 冷却 / 10000)) EndIf If 熱量[対象ユニット] < (外気温度 * (1 - 冷却 / 15000)) Then 熱量[対象ユニット] = Int(外気温度 * (1 - 冷却 / 15000)) EndIf Next Exit
#============================================= # 移動により発生する熱量 #=============================================
ターン 全 全: ForEach 全 X[Pilot()] = X(Pilot()) Y[Pilot()] = Y(Pilot()) Next Exit
行動終了 全: Local 移動X 移動Y 移動距離 冷却 発熱
移動X = Abs(X(Pilot()) - X[Pilot()]) 移動Y = Abs(Y(Pilot()) - Y[Pilot()])
移動距離 = (移動X + 移動Y)
If 熱量[Pilot()] > Call(耐熱温度取得, 対象パイロット) Then 冷却 = Call(緊急冷却性能計算, 対象パイロット) Else 冷却 = Call(冷却性能計算, 対象パイロット) EndIf
発熱 = Call(発熱量取得, 対象パイロット)
増加熱量 = Int((発熱 / 100) * 移動距離 * (1 - 冷却 / 15000))
熱量[対象ユニット] = 熱量[対象ユニット] + 増加熱量 If 相手増加熱量 <> 0 Then 熱量増加アニメ 相手 相手増加熱量 熱量[相手] EndIf If (自分増加熱量 + 増加熱量) <> 0 Then 熱量増加アニメ 対象ユニット (自分増加熱量 + 増加熱量) 熱量[対象ユニット] EndIf Set 相手増加熱量 0 相手 = "" Exit
#============================================= # 被弾により発生する熱量 #=============================================
攻撃 全 全: 先攻武器が命中 = 0 後攻武器が命中 = 0 SetMessage 対象ユニット 攻撃(命中) "$(Call(先攻攻撃命中))" SetMessage 相手ユニット 攻撃(命中) "$(Call(後攻攻撃命中))" Exit
先攻攻撃命中: 先攻攻撃が命中 = 1 Return
後攻攻撃命中: 後攻攻撃が命中 = 1 Return
攻撃後 全 全: Local 冷却 発熱 Set 相手増加熱量 0 Set 自分増加熱量 0 相手 = 相手ユニット If 先攻攻撃が命中 = 1 Then 発熱 = 0 If 熱量[相手ユニット] > Call(耐熱温度取得, 相手パイロット) Then 冷却 = Call(緊急冷却性能計算, 相手パイロット) Else 冷却 = Call(冷却性能計算, 相手パイロット) EndIf 発熱 = (Info(ユニット, Unit(対象パイロット), 武器, 対象ユニット使用武器, 属性レベル, 熱) * 10) 相手増加熱量 = Int(発熱 * (1 - 冷却 / 15000))
熱量[相手ユニット] = 熱量[相手ユニット] + 相手増加熱量 EndIf If 後攻攻撃が命中 = 1 Then 発熱 = 0 If 熱量[対象ユニット] > Call(耐熱温度取得, 対象パイロット) Then 冷却 = Call(緊急冷却性能計算, 対象パイロット) Else 冷却 = Call(冷却性能計算, 対象パイロット) EndIf 発熱 = (Info(ユニット, Unit(相手パイロット), 武器, 相手ユニット使用武器, 属性レベル, 熱) * 10) 自分増加熱量 = Int(発熱 * (1 - 冷却 / 15000))
熱量[対象ユニット] = 熱量[対象ユニット] + 自分増加熱量 EndIf
Exit
#============================================= # 熱量増加アニメ #============================================= # Args(1)はユニットID # Args(2)は増加熱量 # Args(3)は熱量
熱量増加アニメ: Local i 増加量 ねつりょう Center Args(1) 増加量 = Args(3) - Args(2) i = 0 Do While (i <= 20) If Int(増加量 + (Args(2) * i / 20)) <= Call(耐熱温度取得, Args(1)) Then ClearPicture 190 200 350 210 Line 200 200 250 210 #DDAA00 B ねつりょう = Int(増加量 + (Args(2) * i / 20)) Font 10pt #DDAA00 Pゴシック Bold PaintString 200 185 "HEAT" PaintString 260 200 ねつりょう If ねつりょう > 1000 Then ねつりょう = 1000 EndIf Line 200 200 (200 + ねつりょう / 20) 210 #DDAA00 BF Else ClearPicture 190 200 350 210 Line 200 200 250 210 #FF0000 B ねつりょう = Int(増加量 + (Args(2) * i / 20)) Font 10pt #FF0000 Pゴシック Bold PaintString 200 185 "HEAT" PaintString 260 200 ねつりょう If ねつりょう > 1000 Then ねつりょう = 1000 EndIf Line 200 200 (200 + ねつりょう / 20) 210 #FF0000 BF EndIf Refresh Wait 0.1 Incr i 1 Loop Wait 10 Return
#============================================= # 各種能力の取得 #=============================================
冷却性能計算: Local れいきゃく If Info(ユニット, Unit(Args(1)), ユニットクラス) = "AC" Then Local HEAD装備 Local CORE装備 Local ARMS装備 Local LEGS装備 Local BOOSTER装備 Local GENERATOR装備 Local RADIATOR装備 For i = 1 To CountItem(Args(1)) If Info(アイテム,Item(Args(1),i),装備個所) = "HEAD" Then HEAD装備 = Item(Args(1),i) ElseIf Info(アイテム,Item(Args(1),i),装備個所) = "CORE" Then CORE装備 = Item(Args(1),i) ElseIf Info(アイテム,Item(Args(1),i),装備個所) = "ARMS" Then ARMS装備 = Item(Args(1),i) ElseIf Info(アイテム,Item(Args(1),i),装備個所) = "LEGS" Then LEGS装備 = Item(Args(1),i) ElseIf Info(アイテム,Item(Args(1),i),装備個所) = "BOOSTER" Then BOOSTER装備 = Item(Args(1),i) ElseIf Info(アイテム,Item(Args(1),i),装備個所) = "GENERATOR" Then GENERATOR装備 = Item(Args(1),i) ElseIf Info(アイテム,Item(Args(1),i),装備個所) = "RADIATOR" Then RADIATOR装備 = Item(Args(1),i) EndIf Next Incr れいきゃく LIndex(Info(アイテム, HEAD装備, 特殊能力データ, 放熱量), 2) Incr れいきゃく LIndex(Info(アイテム, CORE装備, 特殊能力データ, 放熱量), 2) Incr れいきゃく LIndex(Info(アイテム, ARMS装備, 特殊能力データ, 放熱量), 2) Incr れいきゃく LIndex(Info(アイテム, LEGS装備, 特殊能力データ, 放熱量), 2) れいきゃく = れいきゃく - LIndex(Info(アイテム, GENERATOR装備, 特殊能力データ, 発熱量), 2) Incr れいきゃく LIndex(Info(アイテム, RADIATOR装備, 特殊能力データ, 放熱量), 2) Else れいきゃく = LIndex(Info(ユニット, Unit(Args(1)), 特殊能力データ, 放熱量), 2) EndIf Return (れいきゃく)
緊急冷却性能計算: Local れいきゃく If Info(ユニット, Unit(Args(1)), ユニットクラス) = "AC" Then Local HEAD装備 Local CORE装備 Local ARMS装備 Local LEGS装備 Local BOOSTER装備 Local GENERATOR装備 Local RADIATOR装備 For i = 1 To CountItem(Args(1)) If Info(アイテム,Item(Args(1),i),装備個所) = "HEAD" Then HEAD装備 = Item(Args(1),i) ElseIf Info(アイテム,Item(Args(1),i),装備個所) = "CORE" Then CORE装備 = Item(Args(1),i) ElseIf Info(アイテム,Item(Args(1),i),装備個所) = "ARMS" Then ARMS装備 = Item(Args(1),i) ElseIf Info(アイテム,Item(Args(1),i),装備個所) = "LEGS" Then LEGS装備 = Item(Args(1),i) ElseIf Info(アイテム,Item(Args(1),i),装備個所) = "BOOSTER" Then BOOSTER装備 = Item(Args(1),i) ElseIf Info(アイテム,Item(Args(1),i),装備個所) = "GENERATOR" Then GENERATOR装備 = Item(Args(1),i) ElseIf Info(アイテム,Item(Args(1),i),装備個所) = "RADIATOR" Then RADIATOR装備 = Item(Args(1),i) EndIf Next Incr れいきゃく LIndex(Info(アイテム, HEAD装備, 特殊能力データ, 放熱量), 2) Incr れいきゃく LIndex(Info(アイテム, CORE装備, 特殊能力データ, 放熱量), 2) Incr れいきゃく LIndex(Info(アイテム, ARMS装備, 特殊能力データ, 放熱量), 2) Incr れいきゃく LIndex(Info(アイテム, LEGS装備, 特殊能力データ, 放熱量), 2) れいきゃく = れいきゃく - LIndex(Info(アイテム, GENERATOR装備, 特殊能力データ, 発熱量), 2) Incr れいきゃく LIndex(Info(アイテム, RADIATOR装備, 特殊能力データ, 緊急時放熱量), 2) Else れいきゃく = LIndex(Info(ユニット, Unit(Args(1)), 特殊能力データ, 緊急時放熱量), 2) EndIf Return (れいきゃく)
耐熱温度取得: Local たいねつ If Info(ユニット, Unit(Args(1)), ユニットクラス) = "AC" Then For i = 1 To CountItem(Args(1)) If Info(アイテム,Item(Args(1),i),装備個所) = "CORE" Then CORE装備 = Item(Args(1),i) EndIf Next たいねつ = LIndex(Info(アイテム, CORE装備, 特殊能力データ, 耐熱温度), 2) Else たいねつ = LIndex(Info(ユニット, Unit(Args(1)), 特殊能力データ, 耐熱温度), 2) EndIf Return (たいねつ)
発熱量取得: Local はつねつ If Info(ユニット, Unit(Args(1)), ユニットクラス) = "AC" Then For i = 1 To CountItem(Args(1)) If Info(アイテム,Item(Args(1),i),装備個所) = "BOOSTER" Then BOOSTER装備 = Item(Args(1),i) EndIf Next はつねつ = LIndex(Info(アイテム, BOOSTER装備, 特殊能力データ, 発熱量), 2) Else はつねつ = LIndex(Info(ユニット, Unit(Args(1)), 特殊能力データ, 発熱量), 2) EndIf Return (はつねつ)
|