launcherを用いた射撃のダメージ
飛び道具全般まとめようと思ったけど気力が尽きたのでとりあえず射撃武器だけでも。
やはり煩雑なので読む気のある人だけどうぞ。読む気がない人は結論だけどうぞ。
武器の性能について
表を参照のこと。
ダメージ計算
上から処理されます。
行が変わるごとに整数に丸められます。端数切捨て。
random2avg(x,y)は0~x-1の値をとって分散はyに依存する乱数。平均は(x-1)/2。
- 変数定義
- baseの初期値
- 種族一致でbaseHit++,baseDam++
- エルフで種族一致ならさらにbaseHit++
- netに絡まっているときbaseHit--
- exDamBonusの初期値
- exDamBonus = lnchDamBonus + 1d(1 + ammoDamBonus)-1
- exDamBonusはもう一度ダイスで減る
- exDamBonus = 1d(exDamBonus + 1) -1 (exDamBonus > 0)
- exDamBonus = -1d(-exDamBonus + 1) + 1(exDamBonus < 0)
- exHitBonusの初期値
- exHitBonus = 1d(lnchHitBonus + 1) -1 (lnchHitBonus > 0)
- exHitBonus = -1d(-lnchHitBonus + 1) +1 (lnchHitBonus < 0)
- 器用さの半分が足される
- exHitBonus += dex / 2
- sling
- slingbullet使用時 baseHit+= 4
- exHitBonus += skill * 1.5
- strbonusの計算
- strbonus = (str - 10) * 10 / 9
- strbonus = strbonus * (2 * baseDam + ammoDamBonus) / 20
- strbonus = min(lnchDamBonus + 1, strbonus)
- exDamBonus += strbonus
- dice_mult = 100 * (13 + 1d(1 + skill)) / 14
- lnchDamBonus = min(0, lnchDamBonus)
- exHitBonus += throwingスキル / 5
- browgun
- baseHit -= 2
- exHitBonus += skill * 1.5 + dex / 2
- lnchDamBonus = min(0, lnchDamBonus)
- ammoDamBonus = min(0, ammoDamBonus)
- dice_mult=100
- exHitBonus += throwingスキル / 5
- bow
- baseHit -= 3
- exHitBonus += skill * 2
- strbonusの計算
- strbonus = 10 * (str - 10)/4
- strbonus = strbonus * (2 * baseDam + ammoDamBonus) / 20
- strbonus = min(lnchDamBonus + 1, strbonus)
- exDamBonus += strbonus
- dice_mult = 100 * (16 + 1d(1 + skill)) / 17
- lnchDamBonus = min(0, lnchDamBonus)
- crossbow
- baseHit++
- exHitBonus += skill*1.5+6
- dice_mult = 100 * (21 + 1d(1 + skill)) / 22
- hand crossbowのとき
- exHitBonus -= 2
- dice_mult = dice_mult * 26 / 30
- 弓がVORPALエゴのとき
- dice_mult = dice_mult * 130 / 100
- 矢がSTEEL/FLAME/FROST/CHAOSのとき
- dice_mult = dice_mult * 150 / 100
- exHitBonusをbaseHitに足す
- hit = baseHit + random2avg(exHitBonus + 1, 2) (exHitBonus>=0)
- hit = baseHit - random2avg(-exHitBonus + 1, 2) (exHitBonus<0)
- 最終的な命中
- hit += ammoHitBonus + lnchHitBonus*1
- exDamBonusをbaseDamに足す
- 倍率がかかる
- dam *= dice_mult / 100
具体的な例
わかりにくーいので幾つか例を出す
sling(+x,+y)でslingbullet(+z)を撃つ場合
- baseHit = 2+4=6
- baseDam = 6
- exDamBonus = 1d(y + 1d(z + 1)) - 1
- strbonus =(str - 10)*10/9
- strbonus = strbonus * (12 + z) / 20
- exDamBonus += strbonus
- exHitBonus = 1d(x + 1) - 1 + dex / 2 + skill * 1.5 + throwing_skill / 5
- dice_mult = 100 * (13 + 1d(1 + skill)) / 14
- hit = 6 + random2avg(exHitBonus + 1, 2) + x + z
- dam = dice_mult / 100 * 1d(5 + 1d(exDamBonus + 1)) + z
longbow(+x,+y)でarrow(+z)を撃つ場合
- baseHit = 0 - 3 = -3
- baseDam = 6 + 1d(1 + 7) - 1 = 5 + 1d8
- exDamBonus = 1d(y + 1d(z + 1)) - 1
- strbonus = 2.5 * (str - 10)
- strbonus = strbonus * (10 + 2d8 + z) /20
- exDamBonus += min(y+1,strbonus)
- exHitBonus = 1d(x + 1) - 1 + dex / 2 + skill * 2
- dice_mult = 100 * (16 + 1d(1+skill)) / 17
- hit = -3 + random2avg(exHitBonus+1,2) + x + z
- dam = dice_mult / 100 * 1d(4 + 1d8 + 1d(exDamBonus + 1)) + z
crossbow(+x,+y)でbolt(+z)を撃つ場合
- baseHit = 5
- baseDam = 5 + 1d(1 + 9) - 1 = 4 + 1d10
- exDamBonus = 1d(y + 1d(z + 1)) - 1
- exHitBonus = 1d(x + 1) + 5 + dex / 2 + skill * 1.5
- dice_mult = 100 * (21 + 1d(1 + skill)) / 22
- hit = 5 + random2avg(exHitBonus + 1,2)
- dam = dice_mult / 100 * 1d(3 + 1d10 + 1d(exDamBonus + 1)) + y + z
結論
- スリングは伸びしろが少ないので頑張ってスキルを鍛えても旨みが少ない
- longbowは命中の初期値が少なくskillの伸びが大きい
- ある程度伸ばさないと全然当たらない
- longbowは弓ではなく矢を鍛えろ
- ダメージを見るとzは17/16倍で効いてくるがyは3/8倍程度
- crossbowはスキルがなくてもそこそこ当たる
- crossbowは弓を鍛えるほうが効率が良い
- ただしyが9/8倍程度に対してzが17/16倍程度なので優劣はそこまで大きくない
- 以上より、dcssで射撃をするなら矢をきっちり鍛えることをオススメする
- 手に持ってenchant weapon。1でも2でも効く。3は矢に使うのは損なので武器に使おう。
- 矢を強化すると撃ったとき壊れにくくなるというメリットもある。
通常arrow,bolt,slingbulletは1/4で壊れるが、(強化値)/(強化値+1)で破壊を免れる。- (強化値)/(強化値+3)で破壊を免れる(0.9現在)
+0で25%, +1で12.5%, +3で6.25%, +5で4.17%, +7で3.125%で壊れる。- +0で25%, +1で18.75%, +3で12.5%, +5で9.375%, +7で7.5%, +9で6.25%