| 2009/11/01(Sun) 20:44:06 編集(投稿者) 2009/11/01(Sun) 20:22:32 編集(投稿者)
バトルコンフィグのダメージ周りの式をかなり変更したんですが、その結果、予測ダメージが実際のダメージと全然違うようになってしまいました。 予測では10や0ばかりなんですが、実際には500や1000くらいのダメージになったりなど。 実際に使うときは予測ダメージなどは非表示にしようと思ってるんですが、予測ダメージが正常に計算されないことで敵の動きなどに影響しないかと危惧しています。 どこか予測ダメージを狂わせてる表記などがあれば指摘していただきたいです。
追記1:パイロット能力が攻撃力に影響しない武器の場合、正常に表示されていました。 追記2:別のユニットで続けて同じ名称の武器を使った場合も正常に表示された。 「ユニット1」で「武器1」を使用してすぐに「ユニット2」で「武器1」を使用した場合正常に表示される。という具合。
ここから今使ってるコンフィグデータ 最終ダメージ 最終値 + Call(ダメージ記憶, 最終値)
ダメージ ( 攻撃側補正 - 防御側補正 ) * 地形適応 + Call(倍返し)
命中補正 ( 100 + 命中 + 反応 + 運動性 + 攻撃値 ) * ( ( ( 現在HP / 最大HP ) * 0.2 ) + 0.8 ) * ( ( ( 現在EN / 最大EN ) * 0.2 ) + 0.8 )
回避補正 ( 回避 + 反応 + 運動性 ) * ( ( ( 現在HP / 最大HP ) * 0.2 ) + 0.8 ) * ( ( ( 現在EN / 最大EN ) * 0.2 ) + 0.8 )
最終命中率 Min(Call(命中上限), Max( 最終値, Call(命中下限)) )
攻撃補正 ( 武器威力 + Call(攻撃力) * Call(ダメージバランス) * 気力 / 100 ) * Call(クリティカル補正)
防御補正 装甲値 + Call(防御力) * 気力 / 100 * 地形適応
ここからコンフィグに使っているサブルーチンなど #バトルコンフィグ用データ
ダメージバランス:
バランス武器補正 = Info(ユニット, 対象ユニットID,武器, 対象ユニット使用武器, 属性レベル, バ) #Talk #バランス武器補正$(バランス武器補正) #End バランスEN補正 = 現在EN / 最大EN #Talk #バランスEN補正$(バランスEN補正) #End バランス技量補正 = ( Min( 技量 , 200 ) - 100 ) / 2 #Talk #バランス技量補正$(バランス技量補正) #End バランス値 = ( バランス武器補正 + バランス技量補正 ) * バランスEN補正 #Talk #バランス値$(バランス値) #End バランス補正 = 120 - Min( バランス値 , 99) #Talk #バランス補正$(バランス補正) #End ダメージ乱数 = ( ( Min(Random(バランス補正), Random(バランス補正)) + ( 120 - バランス補正) ) / 100 ) #Talk #ダメージ乱数$(ダメージ乱数) #End
Return ダメージ乱数
倍返し:
If Info(ユニット,対象ユニットID,武器, 対象ユニット使用武器, 属性所有, 倍) = 1 Then
If Info(ユニット,対象ユニットID,武器, 対象ユニット使用武器, 必要技能) = 当て身技 Then
倍返し倍率 = Info(ユニット,対象ユニットID,武器, 対象ユニット使用武器, 属性レベル, 倍) 倍返し補正 = 前ダメージ * 倍返し倍率
Else
倍返し補正 = 0
EndIf
Else
倍返し補正 = 0
EndIf
Return 倍返し補正
ダメージ記憶:
前ダメージ = Args(1)
Return 0
命中上限:
If 相手ユニット使用武器 = "回避" Then
命中上限値 = 95 * 2
Else
命中上限値 = 95
EndIf
Return 命中上限値
命中下限:
If 相手ユニット使用武器 = "回避" Then
命中下限値 = 5 * 2
Else
命中下限値 = 5
EndIf
Return 命中下限値
攻撃力:
攻撃力値 = 0
If Info(ユニット,対象ユニットID,武器, 対象ユニット使用武器, 属性所有, 格) = 1 Then
攻撃力値 = 攻撃力値 + 格闘 * Info(ユニット,対象ユニットID,武器, 対象ユニット使用武器, 属性レベル, 格)
EndIf
If Info(ユニット,対象ユニットID,武器, 対象ユニット使用武器, 属性所有, 射) = 1 Then
攻撃力値 = 攻撃力値 + 射撃 * Info(ユニット,対象ユニットID,武器, 対象ユニット使用武器, 属性レベル, 射)
EndIf If Info(ユニット,対象ユニットID,武器, 対象ユニット使用武器, 属性所有, 中) = 1 Then
攻撃力値 = 攻撃力値 + 命中 * Info(ユニット,対象ユニットID,武器, 対象ユニット使用武器, 属性レベル, 中)
EndIf If Info(ユニット,対象ユニットID,武器, 対象ユニット使用武器, 属性所有, 避) = 1 Then
攻撃力値 = 攻撃力値 + 回避 * Info(ユニット,対象ユニットID,武器, 対象ユニット使用武器, 属性レベル, 避)
EndIf If Info(ユニット,対象ユニットID,武器, 対象ユニット使用武器, 属性所有, 応) = 1 Then
攻撃力値 = 攻撃力値 + 反応 * Info(ユニット,対象ユニットID,武器, 対象ユニット使用武器, 属性レベル, 応)
EndIf If Info(ユニット,対象ユニットID,武器, 対象ユニット使用武器, 属性所有, 量) = 1 Then
攻撃力値 = 攻撃力値 + 技量 * Info(ユニット,対象ユニットID,武器, 対象ユニット使用武器, 属性レベル, 量)
EndIf
If Info(ユニット,対象ユニットID,武器, 対象ユニット使用武器, 属性所有, 定) = 1 Then
攻撃力値 = 攻撃力値 + 100 * Info(ユニット,対象ユニットID,武器, 対象ユニット使用武器, 属性レベル, 定)
EndIf
Return 攻撃力値
防御力:
防御力値 = 耐久
If 対象ユニット使用武器 = 防御 Then
If Info(ユニット,相手ユニットID,武器, 相手ユニット使用武器, 属性所有, 格) = 1 Then
防御力値 = 防御力値 * ( ( 格闘 - 50 ) / 100 )
EndIf
If Info(ユニット,相手ユニットID,武器, 相手ユニット使用武器, 属性所有, 射) = 1 Then
防御力値 = 防御力値 * ( ( 射撃 - 50 ) / 100 )
EndIf If Info(ユニット,相手ユニットID,武器, 相手ユニット使用武器, 属性所有, 中) = 1 Then
防御力値 = 防御力値 * ( ( 命中 - 50 ) / 100 )
EndIf If Info(ユニット,相手ユニットID,武器, 相手ユニット使用武器, 属性所有, 避) = 1 Then
防御力値 = 防御力値 * ( ( 回避 - 50 ) / 100 )
EndIf If Info(ユニット,相手ユニットID,武器, 相手ユニット使用武器, 属性所有, 応) = 1 Then
防御力値 = 防御力値 * ( ( 反応 - 50 ) / 100 )
EndIf If Info(ユニット,相手ユニットID,武器, 相手ユニット使用武器, 属性所有, 量) = 1 Then
防御力値 = 防御力値 * ( ( 技量 - 50 ) / 100 )
EndIf
EndIf
Return 防御力値
*攻撃 全 全: クリティカル発生 = 0 SetMessage 対象ユニットID 攻撃(クリティカル) $(Call(クリティカル発生取得)) Exit
クリティカル発生取得: クリティカル発生 = 1 Return
クリティカル補正: クリティカル補正値 = 1 If クリティカル発生 = 1 Then
クリティカル補正値 = 1.5
EndIf Return クリティカル補正値
|