- the 164th Blog -

加算ダメージ計算

主となる加算計算の部分、生コードです。
ぐちゃぐちゃですが、ロジックはわかると思います。


#Region "■■■【加算計算】■■■"
'加算計算
Private Sub Kasan_Keisan()
'直前の計算状態保存
dametxtlog(0) = TextBox2.Text
dametxtlog(1) = TextBox5.Text
dametxtlog(2) = TextBox10.Text
firstflaglog(0) = first_flag
hangenflaglog(0) = hangen_flag
damesizelog(0) = dame_size
damelog1 = goukeidame.Clone
logcntlog(0) = logcnt
kasanloglog1 = kasanlog.Clone
kitaichilog(0) = goukeikitai.Text
kitaichilog(1) = hpkitai.Text

'初回ダメージ入力
If first_flag = False Then
first_flag = True
goukeidame(1, 0) = 1
If max_hp > 0 Then
goukeidame(2, 0) = 1
End If
If TekiDougu_Obon.CheckState = CheckState.Checked Then
goukeidame(2, 0) = 3
End If
End If

'マルチスケイル・半減実の不適用時ダメージ計算
Dim multi_dame(2, 32), hangen_dame(2, 32), multihangen_dame(2, 32) As Double
If multi_check = 1 AndAlso hangen_check = 1 Then
multihangen_dame = dame.Clone
multi_check = 0
Damage_Keisan()
hangen_dame = dame.Clone
multi_check = 1
hangen_check = 0
Damage_Keisan()
multi_dame = dame.Clone
multi_check = 0
Damage_Keisan()
multi_check = 1
hangen_check = 1
If hangen_flag = False Then
For i = 0 To dame_size
goukeidame(2, i) *= 2
Next
hangen_flag = True
End If
ElseIf multi_check = 1 Then
multi_dame = dame.Clone
multi_check = 0
Damage_Keisan()
multi_check = 1
ElseIf hangen_check = 1 Then
hangen_dame = dame.Clone
hangen_check = 0
Damage_Keisan()
hangen_check = 1
If hangen_flag = False Then
For i = 0 To dame_size
goukeidame(2, i) *= 2
Next
hangen_flag = True
End If
End If

Dim flag As Integer
Dim k As Integer
Dim arieru(100000) As Boolean
Dim damemax, damemin, jotai_max, jotai_min, miga_max, miga_min As Integer
damemin = 10000
miga_max = 1
miga_min = 1000

'ダメージ加算
If link = 0 Then
ReDim kasandame(3, 32, dame_size)
For i = 0 To 32
For j = 0 To dame_size
If goukeidame(2, j) >= 0 OrElse kantsu_check = True Then
'身代わり無し
kasandame(3, i, j) = goukeidame(3, j)
If multi_check = 1 AndAlso goukeidame(0, j) = 0 AndAlso hangen_check = 1 AndAlso goukeidame(2, j) = 2 AndAlso i > 0 Then
'マルスケ+半減実
kasandame(0, i, j) = goukeidame(0, j) + multihangen_dame(0, i)
kasandame(1, i, j) = goukeidame(1, j) * dame(2, i)
kasandame(2, i, j) = 1
ElseIf multi_check = 1 AndAlso goukeidame(0, j) = 0 Then
'マルスケ
kasandame(0, i, j) = goukeidame(0, j) + multi_dame(0, i)
kasandame(1, i, j) = goukeidame(1, j) * dame(2, i)
kasandame(2, i, j) = goukeidame(2, j)
ElseIf hangen_check = 1 AndAlso goukeidame(2, j) = 2 AndAlso i > 0 Then
'半減実
kasandame(0, i, j) = goukeidame(0, j) + hangen_dame(0, i)
kasandame(1, i, j) = goukeidame(1, j) * dame(2, i)
kasandame(2, i, j) = 1
Else
'通常状態
kasandame(0, i, j) = goukeidame(0, j) + dame(0, i)
kasandame(1, i, j) = goukeidame(1, j) * dame(2, i)
kasandame(2, i, j) = goukeidame(2, j)
End If
Else
'身代わり
If multi_check = 1 AndAlso goukeidame(0, j) = 0 Then
'マルスケ
kasandame(0, i, j) = goukeidame(0, j)
kasandame(1, i, j) = goukeidame(1, j) * dame(2, i)
kasandame(3, i, j) = goukeidame(3, j) - multi_dame(0, i)
Else
'通常状態
kasandame(0, i, j) = goukeidame(0, j)
kasandame(1, i, j) = goukeidame(1, j) * dame(2, i)
kasandame(3, i, j) = goukeidame(3, j) - dame(0, i)
End If

If kasandame(3, i, j) <= 0 Then '身代わり消滅チェック
kasandame(2, i, j) = -1 * goukeidame(2, j)
kasandame(3, i, j) = 0
Else
kasandame(2, i, j) = goukeidame(2, j)
End If
End If
If Not kasandame(2, i, j) = 0 Then
'頑丈
If ganjo_check = 1 AndAlso goukeidame(0, j) = 0 AndAlso max_hp > 0 Then
If kasandame(0, i, j) >= max_hp Then
kasandame(0, i, j) = max_hp - 1
End If
End If

If kasandame(0, i, j) >= max_hp Then
kasandame(2, i, j) = 0 'DEAD
kasandame(3, i, j) = 0
ElseIf kasandame(2, i, j) = 3 AndAlso kasandame(0, i, j) >= max_hp / 2 Then
kasandame(0, i, j) = kasandame(0, i, j) - Int(max_hp / 4)
kasandame(2, i, j) = 1 'オボン発動
End If
End If

If kasandame(0, i, j) > damemax Then
damemax = kasandame(0, i, j) '最大ダメージを記録しておく
End If
If kasandame(0, i, j) < damemin Then
damemin = kasandame(0, i, j) '最小ダメージを記録しておく
End If
If kasandame(2, i, j) > jotai_max Then
jotai_max = kasandame(2, i, j) '最大の“状態”を記録しておく
End If
If kasandame(2, i, j) < jotai_min Then
jotai_min = kasandame(2, i, j) '最小の“状態”を記録しておく
End If
arieru(kasandame(0, i, j)) = True 'ダメージの存在を記録しておく
If kasandame(2, i, j) < 0 Then
If kasandame(3, i, j) > miga_max Then
miga_max = kasandame(3, i, j) '最大の身代わりHPを記録しておく
End If
If kasandame(3, i, j) < miga_min Then
miga_min = kasandame(3, i, j) '最小の身代わりHPを記録しておく
End If
End If

Next j
Next i

'合計ダメージとして並び替え
ReDim goukeidame(3, (dame_size + 1) * 32)
For l = damemin To damemax
If arieru(l) = True Then
For jo = jotai_min To jotai_max
If jo >= 0 Then
If flag = 1 Then
k = k + 1
flag = 0
End If
For i = 0 To 32
For j = 0 To dame_size
If kasandame(0, i, j) = l AndAlso kasandame(1, i, j) > 0 AndAlso kasandame(2, i, j) = jo Then
goukeidame(0, k) = l
goukeidame(1, k) = goukeidame(1, k) + kasandame(1, i, j)
goukeidame(2, k) = jo
flag = 1
End If
Next j
Next i
Else
For mi = miga_max To miga_min Step -1
If flag = 1 Then
k = k + 1
flag = 0
End If
For i = 0 To 32
For j = 0 To dame_size
If kasandame(0, i, j) = l AndAlso kasandame(1, i, j) > 0 AndAlso kasandame(2, i, j) = jo AndAlso kasandame(3, i, j) = mi Then
goukeidame(0, k) = l
goukeidame(1, k) = goukeidame(1, k) + kasandame(1, i, j)
goukeidame(2, k) = jo
goukeidame(3, k) = mi
flag = 1
End If
Next j
Next i
Next mi
End If
Next jo
End If
Next l
'急所ランク-1用修正項
If flag = 0 Then
k = k - 1
End If
dame_size = k

Else '連続攻撃の場合
'命中100未満の場合,元のダメージ分布を外れた場合のものとして記録
Dim hazure_dame(3, dame_size) As Double
Dim hazure_size As Integer
If dame(2, 0) > 0 Then
hazure_dame = goukeidame.Clone
hazure_size = dame_size
For i = 0 To hazure_size
hazure_dame(1, i) = hazure_dame(1, i) * dame(2, 0)
Next i
End If

Dim link2dame(3, 0) As Double
Dim link2size As Integer
Dim link3dame(3, 0) As Double
Dim link3size As Integer
Dim link4dame(3, 0) As Double
Dim link4size As Integer

ReDim kasandame(3, 32, dame_size)
For i = 1 To 32
For j = 0 To dame_size
If goukeidame(2, j) >= 0 OrElse kantsu_check = True Then
kasandame(3, i, j) = goukeidame(3, j)
If multi_check = 1 AndAlso goukeidame(0, j) = 0 AndAlso hangen_check = 1 AndAlso goukeidame(2, j) = 2 AndAlso i > 0 Then
kasandame(0, i, j) = goukeidame(0, j) + multihangen_dame(0, i)
kasandame(1, i, j) = goukeidame(1, j) * dame(2, i)
kasandame(2, i, j) = 1
ElseIf multi_check = 1 AndAlso goukeidame(0, j) = 0 Then
kasandame(0, i, j) = goukeidame(0, j) + multi_dame(0, i)
kasandame(1, i, j) = goukeidame(1, j) * dame(2, i)
kasandame(2, i, j) = goukeidame(2, j)
ElseIf hangen_check = 1 AndAlso goukeidame(2, j) = 2 AndAlso i > 0 Then
kasandame(0, i, j) = goukeidame(0, j) + hangen_dame(0, i)
kasandame(1, i, j) = goukeidame(1, j) * dame(2, i)
kasandame(2, i, j) = 1
Else
kasandame(0, i, j) = goukeidame(0, j) + dame(0, i)
kasandame(1, i, j) = goukeidame(1, j) * dame(2, i)
kasandame(2, i, j) = goukeidame(2, j)
End If
Else '身代わり
If multi_check = 1 AndAlso goukeidame(0, j) = 0 Then
kasandame(0, i, j) = goukeidame(0, j)
kasandame(1, i, j) = goukeidame(1, j) * dame(2, i)
kasandame(3, i, j) = goukeidame(3, j) - multi_dame(0, i)
Else
kasandame(0, i, j) = goukeidame(0, j)
kasandame(1, i, j) = goukeidame(1, j) * dame(2, i)
kasandame(3, i, j) = goukeidame(3, j) - dame(0, i)
End If
If kasandame(3, i, j) <= 0 Then '身代わり消滅
kasandame(2, i, j) = -1 * goukeidame(2, j)
kasandame(3, i, j) = 0
Else
kasandame(2, i, j) = goukeidame(2, j)
End If
End If
If Not kasandame(2, i, j) = 0 Then
'頑丈
If ganjo_check = 1 AndAlso goukeidame(0, j) = 0 AndAlso max_hp > 0 Then
If kasandame(0, i, j) >= max_hp Then
kasandame(0, i, j) = max_hp - 1
End If
End If

If kasandame(0, i, j) >= max_hp Then
kasandame(2, i, j) = 0 'DEAD
kasandame(3, i, j) = 0
ElseIf kasandame(2, i, j) = 3 AndAlso kasandame(0, i, j) >= max_hp / 2 Then
kasandame(0, i, j) = kasandame(0, i, j) - Int(max_hp / 4)
kasandame(2, i, j) = 1 'オボン発動
End If
End If

If kasandame(0, i, j) > damemax Then
damemax = kasandame(0, i, j) '最大ダメージを記録しておく
End If
If kasandame(0, i, j) < damemin Then
damemin = kasandame(0, i, j) '最小ダメージを記録しておく
End If
If kasandame(2, i, j) > jotai_max Then
jotai_max = kasandame(2, i, j) '最大の“状態”を記録しておく
End If
If kasandame(2, i, j) < jotai_min Then
jotai_min = kasandame(2, i, j) '最小の“状態”を記録しておく
End If
arieru(kasandame(0, i, j)) = True 'ダメージの存在を記録しておく
If kasandame(2, i, j) < 0 Then
If kasandame(3, i, j) > miga_max Then
miga_max = kasandame(3, i, j) '最大の身代わりHPを記録しておく
End If
If kasandame(3, i, j) < miga_min Then
miga_min = kasandame(3, i, j) '最小の身代わりHPを記録しておく
End If
End If

Next j
Next i

'合計ダメージとして並び替え
ReDim goukeidame(3, (dame_size + 1) * 32)
For l = damemin To damemax
If arieru(l) = True Then
For jo = jotai_min To jotai_max
If jo >= 0 Then
If flag = 1 Then
k = k + 1
flag = 0
End If
For i = 0 To 32
For j = 0 To dame_size
If kasandame(0, i, j) = l AndAlso kasandame(1, i, j) > 0 AndAlso kasandame(2, i, j) = jo Then
goukeidame(0, k) = l
goukeidame(1, k) = goukeidame(1, k) + kasandame(1, i, j)
goukeidame(2, k) = jo
flag = 1
End If
Next j
Next i
Else
For mi = miga_max To miga_min Step -1
If flag = 1 Then
k = k + 1
flag = 0
End If
For i = 0 To 32
For j = 0 To dame_size
If kasandame(0, i, j) = l AndAlso kasandame(1, i, j) > 0 AndAlso kasandame(2, i, j) = jo AndAlso kasandame(3, i, j) = mi Then
goukeidame(0, k) = l
goukeidame(1, k) = goukeidame(1, k) + kasandame(1, i, j)
goukeidame(2, k) = jo
goukeidame(3, k) = mi
flag = 1
End If
Next j
Next i
Next mi
End If
Next jo
End If
Next l
'急所ランク-1用修正項
If flag = 0 Then
k = k - 1
End If
dame_size = k


'2発目以降.命中無視確率dame(1を使って加算
Dim cnt As Integer
If link = 1 Then
cnt = 1
Else
cnt = 4
End If
Dim rnd As Double
rnd = 1
Do Until cnt = 0
cnt -= 1
ReDim arieru(100000)
flag = 0
k = 0
jotai_max = 0
jotai_min = 0
damemax = 0
damemin = 10000
miga_max = 0
miga_min = 1000

ReDim kasandame(3, 32, dame_size)
For i = 1 To 32
For j = 0 To dame_size
If goukeidame(2, j) >= 0 OrElse kantsu_check = True Then
kasandame(3, i, j) = goukeidame(3, j)
If multi_check = 1 AndAlso goukeidame(0, j) = 0 AndAlso hangen_check = 1 AndAlso goukeidame(2, j) = 2 Then
kasandame(0, i, j) = goukeidame(0, j) + multihangen_dame(0, i)
kasandame(1, i, j) = goukeidame(1, j) * dame(2, i)
kasandame(2, i, j) = 1
ElseIf multi_check = 1 AndAlso goukeidame(0, j) = 0 Then
kasandame(0, i, j) = goukeidame(0, j) + multi_dame(0, i)
kasandame(1, i, j) = goukeidame(1, j) * dame(2, i)
kasandame(2, i, j) = goukeidame(2, j)
ElseIf hangen_check = 1 AndAlso goukeidame(2, j) = 2 Then
kasandame(0, i, j) = goukeidame(0, j) + hangen_dame(0, i)
kasandame(1, i, j) = goukeidame(1, j) * dame(2, i)
kasandame(2, i, j) = 1
Else
kasandame(0, i, j) = goukeidame(0, j) + dame(0, i)
kasandame(1, i, j) = goukeidame(1, j) * dame(1, i)
kasandame(2, i, j) = goukeidame(2, j)
End If
Else '身代わり
kasandame(0, i, j) = goukeidame(0, j)
kasandame(1, i, j) = goukeidame(1, j) * dame(2, i)
kasandame(3, i, j) = goukeidame(3, j) - dame(0, i)
If kasandame(3, i, j) <= 0 Then '身代わり消滅
kasandame(2, i, j) = -1 * goukeidame(2, j)
kasandame(3, i, j) = 0
Else
kasandame(2, i, j) = goukeidame(2, j)
End If
End If

If Not kasandame(2, i, j) = 0 Then
If kasandame(0, i, j) >= max_hp Then
kasandame(2, i, j) = 0 'DEAD
kasandame(3, i, j) = 0
ElseIf kasandame(2, i, j) = 3 AndAlso kasandame(0, i, j) >= max_hp / 2 Then
kasandame(0, i, j) = kasandame(0, i, j) - Int(max_hp / 4)
kasandame(2, i, j) = 1 'オボン発動
End If
End If

If kasandame(0, i, j) > damemax Then
damemax = kasandame(0, i, j) '最大ダメージを記録しておく
End If
If kasandame(0, i, j) < damemin Then
damemin = kasandame(0, i, j) '最小ダメージを記録しておく
End If
If kasandame(2, i, j) > jotai_max Then
jotai_max = kasandame(2, i, j) '最大の“状態”を記録しておく
End If
If kasandame(2, i, j) < jotai_min Then
jotai_min = kasandame(2, i, j) '最小の“状態”を記録しておく
End If
arieru(kasandame(0, i, j)) = True 'ダメージの存在を記録しておく
If kasandame(2, i, j) < 0 Then
If kasandame(3, i, j) > miga_max Then
miga_max = kasandame(3, i, j) '最大の身代わりHPを記録しておく
End If
If kasandame(3, i, j) < miga_min Then
miga_min = kasandame(3, i, j) '最小の身代わりHPを記録しておく
End If
End If
Next j
Next i

'合計ダメージとして並び替え
ReDim goukeidame(3, (dame_size + 1) * 32)
For l = damemin To damemax
If arieru(l) = True Then
For jo = jotai_min To jotai_max
If jo >= 0 Then
If flag = 1 Then
k = k + 1
flag = 0
End If
For i = 0 To 32
For j = 0 To dame_size
If kasandame(0, i, j) = l AndAlso kasandame(1, i, j) > 0 AndAlso kasandame(2, i, j) = jo Then
goukeidame(0, k) = l
goukeidame(1, k) = goukeidame(1, k) + kasandame(1, i, j)
goukeidame(2, k) = jo
flag = 1
End If
Next j
Next i
Else
For mi = miga_max To miga_min Step -1
If flag = 1 Then
k = k + 1
flag = 0
End If
For i = 0 To 32
For j = 0 To dame_size
If kasandame(0, i, j) = l AndAlso kasandame(1, i, j) > 0 AndAlso kasandame(2, i, j) = jo AndAlso kasandame(3, i, j) = mi Then
goukeidame(0, k) = l
goukeidame(1, k) = goukeidame(1, k) + kasandame(1, i, j)
goukeidame(2, k) = jo
goukeidame(3, k) = mi
flag = 1
End If
Next j
Next i
Next mi
End If
Next jo
End If
Next l

'急所ランク-1用修正項
If flag = 0 Then
k = k - 1
End If
dame_size = k

If link = 2 Then
If cnt = 3 Then
ReDim link2dame(3, dame_size)
link2dame = goukeidame.Clone
link2size = dame_size
For i = 0 To link2size
link2dame(1, i) = link2dame(1, i) * 3 / 8
Next i
ElseIf cnt = 2 Then
ReDim link3dame(3, dame_size)
link3dame = goukeidame.Clone
link3size = dame_size
For i = 0 To link3size
link3dame(1, i) = link3dame(1, i) * 3 / 8
Next i
ElseIf cnt = 1 Then
ReDim link4dame(3, dame_size)
link4dame = goukeidame.Clone
link4size = dame_size
For i = 0 To link4size
link4dame(1, i) = link4dame(1, i) / 8
Next i
ElseIf cnt = 0 Then
For i = 0 To dame_size
goukeidame(1, i) = goukeidame(1, i) / 8
Next i
End If
End If
Loop
damemax = 0
If link = 2 Then
ReDim Preserve goukeidame(3, dame_size + link2size + link3size + link4size + 3)
For i = 0 To link2size
goukeidame(0, dame_size + 1 + i) = link2dame(0, i)
goukeidame(1, dame_size + 1 + i) = link2dame(1, i)
goukeidame(2, dame_size + 1 + i) = link2dame(2, i)
goukeidame(3, dame_size + 1 + i) = link2dame(3, i)
Next i
For i = 0 To link3size
goukeidame(0, dame_size + link2size + 2 + i) = link3dame(0, i)
goukeidame(1, dame_size + link2size + 2 + i) = link3dame(1, i)
goukeidame(2, dame_size + link2size + 2 + i) = link3dame(2, i)
goukeidame(3, dame_size + link2size + 2 + i) = link3dame(3, i)
Next i
For i = 0 To link4size
goukeidame(0, dame_size + link2size + link3size + 3 + i) = link4dame(0, i)
goukeidame(1, dame_size + link2size + link3size + 3 + i) = link4dame(1, i)
goukeidame(2, dame_size + link2size + link3size + 3 + i) = link4dame(2, i)
goukeidame(3, dame_size + link2size + link3size + 3 + i) = link4dame(3, i)
Next i
If goukeidame(0, dame_size) > damemax Then
damemax = goukeidame(0, dame_size)
End If
If link2dame(0, link2size) > damemax Then
damemax = link2dame(0, link2size)
End If
If link3dame(0, link3size) > damemax Then
damemax = link3dame(0, link3size)
End If
If link4dame(0, link4size) > damemax Then
damemax = link4dame(0, link4size)
End If
dame_size = dame_size + link2size + link3size + link4size + 3
End If

If dame(2, 0) > 0 Then
ReDim Preserve hazure_dame(3, dame_size + 1 + hazure_size)
flag = 0
k = 0
For i = 0 To dame_size
hazure_dame(0, hazure_size + 1 + i) = goukeidame(0, i)
hazure_dame(1, hazure_size + 1 + i) = goukeidame(1, i)
hazure_dame(2, hazure_size + 1 + i) = goukeidame(2, i)
hazure_dame(3, hazure_size + 1 + i) = goukeidame(3, i)
Next i

If goukeidame(0, dame_size) > damemax Then
damemax = goukeidame(0, dame_size)
End If
If hazure_dame(0, hazure_size) > damemax Then
damemax = hazure_dame(0, hazure_size)
End If

'[120918]追加修正==========
jotai_max = 0
jotai_min = 0
damemax = 0
damemin = 10000
miga_max = 0
miga_min = 1000
For i = 0 To dame_size + 1 + hazure_size
If hazure_dame(0, i) > damemax Then
damemax = hazure_dame(0, i) '最大ダメージを記録しておく
End If
If hazure_dame(0, i) < damemin Then
damemin = hazure_dame(0, i) '最小ダメージを記録しておく
End If
If hazure_dame(2, i) > jotai_max Then
jotai_max = hazure_dame(2, i) '最大の“状態”を記録しておく
End If
If hazure_dame(2, i) < jotai_min Then
jotai_min = hazure_dame(2, i) '最小の“状態”を記録しておく
End If
arieru(hazure_dame(0, i)) = True 'ダメージの存在を記録しておく
If hazure_dame(2, i) < 0 Then
If hazure_dame(3, i) > miga_max Then
miga_max = hazure_dame(3, i) '最大の身代わりHPを記録しておく
End If
If hazure_dame(3, i) < miga_min Then
miga_min = hazure_dame(3, i) '最小の身代わりHPを記録しておく
End If
End If
Next
'==================

'合計ダメージとして並び替え
ReDim goukeidame(3, dame_size + 1 + hazure_size)
For l = 0 To damemax
For jo = -3 To 3
If jo >= 0 Then
If flag = 1 Then
k = k + 1
flag = 0
End If
For i = 0 To dame_size + 1 + hazure_size
If hazure_dame(0, i) = l AndAlso hazure_dame(1, i) > 0 AndAlso hazure_dame(2, i) = jo Then
goukeidame(0, k) = l
goukeidame(1, k) += hazure_dame(1, i)
goukeidame(2, k) = jo
flag = 1
End If
Next i
Else
For mi = miga_max To 1 Step -1
If flag = 1 Then
k = k + 1
flag = 0
End If
For i = 0 To dame_size + 1 + hazure_size
If hazure_dame(0, i) = l AndAlso hazure_dame(1, i) > 0 AndAlso hazure_dame(2, i) = jo AndAlso hazure_dame(3, i) = mi Then
goukeidame(0, k) = l
goukeidame(1, k) += hazure_dame(1, i)
goukeidame(2, k) = jo
goukeidame(3, k) = mi
flag = 1
End If
Next i
Next mi
End If
Next jo
Next l

'急所ランク-1用修正項
If flag = 0 Then
k = k - 1
End If
dame_size = k
ElseIf link = 2 Then
'合計ダメージとして並び替え
ReDim hazure_dame(3, dame_size)
hazure_dame = goukeidame.Clone
ReDim goukeidame(3, dame_size)
flag = 0
k = 0
For l = 0 To damemax
For jo = -3 To 3
If jo >= 0 Then
If flag = 1 Then
k = k + 1
flag = 0
End If
For i = 0 To dame_size
If hazure_dame(0, i) = l AndAlso hazure_dame(1, i) > 0 AndAlso hazure_dame(2, i) = jo Then
goukeidame(0, k) = l
goukeidame(1, k) += hazure_dame(1, i)
goukeidame(2, k) = jo
flag = 1
End If
Next i
Else
For mi = miga_max To 1 Step -1
If flag = 1 Then
k = k + 1
flag = 0
End If
For i = 0 To dame_size
If hazure_dame(0, i) = l AndAlso hazure_dame(1, i) > 0 AndAlso hazure_dame(2, i) = jo AndAlso hazure_dame(3, i) = mi Then
goukeidame(0, k) = l
goukeidame(1, k) += hazure_dame(1, i)
goukeidame(2, k) = jo
goukeidame(3, k) = mi
flag = 1
End If
Next i
Next mi
End If
Next jo
Next l
'急所ランク-1用修正項
If flag = 0 Then
k = k - 1
End If
dame_size = k
End If
End If

'残りHP計算
hp_size = dame_size
ReDim nokori_hp(3, dame_size)
For i = 0 To dame_size
nokori_hp(0, i) = max_hp - goukeidame(0, i)
If nokori_hp(0, i) <= 0 Then
nokori_hp(0, i) = 0
For j = i To dame_size
nokori_hp(1, i) = nokori_hp(1, i) + goukeidame(1, j)
Next
nokori_hp(2, i) = 0
nokori_hp(3, i) = 0
hp_size = i
i = dame_size
Else
nokori_hp(1, i) = goukeidame(1, i)
nokori_hp(2, i) = goukeidame(2, i)
nokori_hp(3, i) = goukeidame(3, i)
End If
Next i

'再計算した場合の後処理
If multi_check + hangen_check > 0 Then
Damage_Keisan()
End If
End Sub

スポンサーサイト



tag:

2020/05/15 23:52 | ポケモン | Comment [0] | TrackBack [0]

【ポケモンXY】 加算ダメージ計算機XY

加算ダメージ計算機のXY対応verです。
加算XY10


★ダウンロード
次のリンクから(pass:164)
加算ダメージ計算機XY ver2.0
加算ダメージ計算機XY ver2.0 (小型圧縮版)


◆動作環境
OSは基本的にWindows環境のみに対応しています.XP,Vista,7で動作を確認しています.
動作には.NET Framework4.0が必要です.リンク先からダウンロード・インストールしてください.
(.NET Frameworkは,様々なWindows準拠アプリケーションの動作に必要な実行環境です)


◆更新ログ
13.11.17 XY対応
 ・XYの新ポケモンの種族値,及び新技データ追加
 ・既存ポケモンの種族値変更点,及び既存技変更点に対応
 ・急所ダメージ2倍⇒1.5倍(端数切捨て)
 ・ジュエル倍率1.5倍⇒1.3倍
 ・突撃チョッキ追加
 ・身代り貫通加算追加(音攻撃・すりぬけ等対応)
13.12.30 ver1.0
 ・急所率変更(1/16,1/8,1/4,1/3,1/2)⇒(1/12,1/6,1/2,1/1)
 ・「被ダメ依存計算」機能追加(反動ダメージ,ドレパン回復等対応)
 ・親子愛(ダメージ0.5倍)計算追加
 ・命中率計算方法見直し
13.02.21 ver1.01
 ・体重100.0kgモンスターのけたぐり被威力を100に(pokedataXY.mdbの変更)
14.12.30 ver2.0
 ・ORASの新ポケモンの種族値データ追加
 ・急所率変更(1/12,1/6,1/2,1/1)⇒(1/16,1/8,1/2,1/1)

◆セーブデータについて
BW2以前のverのセーブデータは引き続き利用「可」
本XYver以降のverのセーブデータは以前のverでは利用「不可」
互換性は一方方向のみです。ご注意ください。

他、詳しい使用方法などは前回記事を参考ください。
XYのダメージ計算は不明点も多く、計算違いがある可能性があります。ご承知おきください。
計算結果と実機ダメージに誤差があった場合などには、情報提供にご協力ください

tag:ゲーム ポケモン XY ダメージ計算機 

2014/12/30 05:23 | ポケモン | Comment [5] | TrackBack [0]

【パズドラ】ランク164到達

最近ゲーム全般あまりできてないけど、パズドラはちょこちょこ進めてました。

ランク164になったので記念報告!
Screenshot_2013-12-14-16-40-09.png

スクショは一番良く使ってるハクPT
主な使用リーダーはハクのほか、麒麟、カグツチ、闇メタなど。
所有神一覧メーカーによると、神所有率は92%でなかなか。
ダウンロード

8月末に始めたので、プレイ期間は3ヶ月半ほど。
見た目重視で育成してるから、五右衛門やらサタンやらは後回しになってしまっている。
ランク164超えたらランク上げに励もうと思ってたので、そのあたりの実用性重視のリーダーもぼちぼち育て始めます。

ちなみに携帯はガラケー派。
パズドラはカーナビ用のタブレットでプレイしてます。
画面大きいから斜め移動とか決めやすいけど、指動かす量多いし長時間のパズルは結構疲れる。

tag:ゲーム パズドラ 164 

2013/12/14 17:02 | ゲーム | Comment [0] | TrackBack [0]

【ポケモンXY】 新ポケモン種族値・体重・けたぐり威力一覧

けたぐり威力は5thと同じ計算式と仮定して算出。
 ※14/02/22修正:6thでは100.0kgに対し威力100になったとのこと
 ※14/03/23修正:メガボスゴドラ、バケッチャ・パンプジン貧~大
名前は加算ダメージ計算機方式。
なんかスタイル崩れまくりだけど気にしない。

◆XY新ポケモン

NoNameHABCDS重さ威力
650ハリマロン566165484538920
651ハリボーグ6178955658572960
652ブリガロン881071227475649080
653フォッコ4045406260609.420
654テールナー59595890707314.540
655マフォクシー7569721141001043960
656ケロマツ415640624471720
657ゲコガシラ54635283569710.940
658ゲッコウガ729567103711224060
659ホルビー383638323657520
660ホルード85567750777842.460
661ヤヤコマ4550434038621.720
662ヒノヤコマ6273555652841640
663ファイアロー788171746912624.540
664コフキムシ3835402725352.520
665コフーライ4522602730298.420
666ビビヨン8052509050891740
667シシコ62505873547213.540
668カエンジシ8668721096610681.580
669フラベベ4438396179420.120
670フラエッテ5445477598520.920
671フラージェス786568112154751020
672メェークル6665486257523160
673ゴーゴート123100629781689180
674ヤンチャム678262464843820
675ゴロンダ9512478697158136100
676トリミアン75806065901022860
677ニャスパー6248546360683.520
678ニャオニクス74487683811048.520
679ヒトツキ4580100353728220
680ニダンギル591101504549354.520
681ギルガルド盾605015050150605380
681ギルガルド矛601505015050605380
682シュシュプ7852606365230.520
683フレフワン101727299892915.540
684ペロッパフ6248665957493.520
685ペロリーム828086857572520
686マーイーカ5354533746453.520
687カラマネロ8692886875734760
688カメテテ4252673956503160
689ガメノデス721051155486689680
690クズモー5060606060307.320
691ドラミドロ657590971234481.580
692ウデッポウ5053625863448.320
693ブロスター717388120895935.360
694エリキテル443833614370620
695エレザード625552109941092140
696チゴラス5889774545482660
697ガチゴラス82121119695971270120
698アマルス77595067634625.260
699アマルルガ1237772999258225120
700ニンフィア9565651101306023.540
701ルチャブル789275746311821.540
702デデンネ67585781671012.220
703メレシー505015050150505.720
704ヌメラ4550355575402.820
705ヌメイル687553831136017.540
706ヌメルゴン901007011015080150.5100
707クレッフィ578091808775320
708ボクレー437048506038720
709オーロット85110766582567180
710バケッチャ貧4466704455563.520
710バケッチャ中496670445551520
710バケッチャ大5466704455467.520
710バケッチャ巨5966704455411540
711パンプジン貧55851225875999.520
711パンプジン中659012258758412.540
711パンプジン大75951225875691440
711パンプジン巨851001225875543960
712カチコール55698532352899.580
713クレベース95117184444628505120
714オンバット403035454055820
715オンバーン85708097801238580
716ゼルネアス126131951319899215120
717イベルタル126131951319899203120
718ジガルデ108100121819595305120


◆メガシンカポケモン
NameHABCDS重さ威力
メガアブソル6515060115601154960
メガカイロス6515512065901055980
メガガブリアス10817011512095929580
メガカメックス7910312013511578101.1100
メガガルーラ10512510060100100100100
メガギャラドス951551097013081305120
メガクチート5010512555955023.540
メガゲンガー6065801709513040.560
メガサーナイト68856516513510048.460
メガジュペッタ64165759383751340
メガチャーレム6010085808510031.560
メガデンリュウ90951051651104561.580
メガバシャーモ8016080130801005280
メガハッサム701501406510075125100
メガバンギラス1001641509512071255120
メガフーディン555065175951504860
メガフシギバナ8010012312212080155.5100
メガプテラ801358570951507980
メガヘラクロス80185115401057562.580
メガヘルガー7590901409011549.560
メガボスゴドラ70140230608050395120
メガミュウツーX106190100154100130127100
メガミュウツーY106150701941201403360
メガユキノオー9013210513210530185100
メガライボルト707580135801354460
メガリザードンX7813011113085100110.5100
メガリザードンY7810478159115100100.5100
メガルカリオ70145881407011257.580

tag:ゲーム ポケモン XY データ 

2013/11/23 21:46 | ポケモン | Comment [2] | TrackBack [0]

【聖地巡礼】 喰霊-零- @大谷資料館

ご存知の方もいるかもしれませんが、昨年大阪から引っ越しまして、現在は東京の栃木という都会に住んでいる僕です。栃木のご当地(?)聖地を探してみたところ、「喰霊-零-」の聖地が2つもあることがわかった。
今回はその1つ、大谷資料館の採石場跡を巡礼してきましたー。最近買った車とカメラの練習も兼ねて。もう一つの殺生石も近々行ってみようかな。

喰霊冥
喰霊はもはや少し古いのかもしれんが、お気に入り作品の一つ。
大谷資料館の採石場跡地は、第8話のVS冥姉さんバトルステージ。DVD特典のロケハン映像にも出てる。

喰霊-零-は、原作の過去を描いた、ほぼアニメオリジナル作品。
第一話の衝撃から始まり、バッドエンドへと向けて負の要素が蓄積されていくようなストーリー展開、だからこそ映える幸福の描写、アツい戰闘シーン、刀少女と、とても素晴らしい作品。

作品もおもろいが、DVDのオーディオコメンタリーも大好き。
アニメ全体ではよくあるのかもしれんけど、声優さんが出て来んで監督・脚本・プロデューサーといった製作陣が作品や演出、製作エピソードなどを語り合うようなこの作品のオーディオコメンタリーの形式は、当時の自分にはすごく新鮮だった。
ここはこうすればよかったとか反省点を赤裸々にぶちまけたりして、とてもおもしろい。オヌヌメ。

採石場跡は震災の影響でしばらく公開されていなかったみたいだけど、復活しててよかった。
ちなみにDVDを見直してみたところ、ロケハンを行ったのが5月末ということで、たまたま時期もぴったり。
なかなか楽しかった~


話は変わるが、お出かけのもう一つの目的として、Steins;Gate劇場版を鑑賞してきた。
アニメから続きの映画としてきれいにまとまっていたように思う。しかしなにより助手デレ強すぎだろjk。これだけでもう1クールはいけますね。まぁやってほしくないけど。
正直、完結したアニメの映画化には良いイメージなくて、がっかり覚悟だったから割と期待以上でした。
劇場版アニメはマクロスF、そらおと、まどマギ、etc...割とスルーしてたのが多いから、BD借りて観てみようかなぁ。


閑話休題、以下写真ぺたぺた

Read More ・・・

tag:アニメ 喰霊-零- 聖地巡礼 

2013/06/02 22:44 | 日記 | Comment [0] | TrackBack [0]





next»

© FC2 BLOG / ooq:blog