北大侠客行MUD论坛

 找回密码
 注册
搜索
热搜: 新手 wiki 升级
查看: 5401|回复: 14

说到武器,谈一下骑马与砍杀的设置

[复制链接]
发表于 2011-8-23 15:33:17 | 显示全部楼层 |阅读模式
这个是西方冷兵器动作类游戏中真实度第一的游戏了,毋庸置疑
护甲效果——见面伤害,根据部位,简略分为头甲、身甲、腿甲三处,不同部位的攻击按照不同部位的护甲计算,攻击头部有额外加成

攻击种类
砍——一应劈砍动作,都是砍伤
刺——一应戳刺动作,都是刺伤
钝——一应敲击动作,都是钝伤

攻击种类的区别
砍——砍的兵器攻击力最高,但是受到护甲减免的效果也最严重。最好的全身板甲可以忽略大部分砍伤
刺——攻击力挺不错,护甲减免效果略差,即使全身板甲也不能忽视刺伤
钝——攻击力最低,打没甲的效果很差,但是护甲减免效果也很差,而且钝击打人必晕,而不是死,放到北侠可以考虑做成上限伤害

攻击速度则是看动作咯,自然是刺最快
如剑,就有刺和砍两种类型,刀就只有砍,锤头是盾,弓弩是刺,等等……

——————————————————————————————

在mud的功夫代码里,我也看到了类似的东东
  1. 匕首功夫:
  2. "damage_type" : "刺伤"

  3. 空手功夫:
  4. "damage_type" : "瘀伤"
  5. "damage_type" : "内伤"

  6. 刀法:
  7. "damage_type" : "割伤"

  8. 棒法:
  9. "damage_type": "挫伤"
复制代码
但是在北侠的代码里,damage_type,仅仅只是影响描述而已
  1. result += damage_msg(damage, action["damage_type"]);

  2. switch( type )
  3. {
  4. case "擦伤":
  5. case "割伤":
  6.   if( damage < 10 ) return "结果只是轻轻地划破$p的皮肉。\n";
  7.   else if( damage < 20 ) return "结果在$p$l划出一道细长的血痕。\n";
  8.   else if( damage < 40 ) return "结果「嗤」地一声划出一道伤口!\n";
  9.   else if( damage < 80 ) return "结果「嗤」地一声划出一道血淋淋的伤口!\n";
  10.   else if( damage < 160 ) return "结果「嗤」地一声划出一道又长又深的伤口,溅得$N满脸鲜血!\n";
  11.   else return "结果只听见$n一声惨嚎,$w已在$p$l划出一道深及见骨的可怕伤口!!\n";
  12.   break;
  13. case "刺伤":
  14.   if( damage < 10 ) return "结果只是轻轻地刺破$p的皮肉。\n";
  15.   else if( damage < 20 ) return "结果在$p$l刺出一个创口。\n";
  16.   else if( damage < 40 ) return "结果「噗」地一声刺入了$n$l寸许!\n";
  17.   else if( damage < 80 ) return "结果「噗」地一声刺进$n的$l,使$p不由自主地退了几步!\n";
  18.   else if( damage < 160 ) return "结果「噗嗤」地一声,$w已在$p$l刺出一个血肉□糊的血窟窿!\n";
  19.   else return "结果只听见$n一声惨嚎,$w已在$p的$l对穿而出,鲜血溅得满地!!\n";
  20.   break;
  21. case "瘀伤":
  22.   if( damage < 10 ) return "结果只是轻轻地碰到,比拍苍蝇稍微重了点。\n";
  23.   else if( damage < 20 ) return "结果在$p的$l造成一处瘀青。\n";
  24.   else if( damage < 40 ) return "结果一击命中,$n的$l登时肿了一块老高!\n";
  25.   else if( damage < 80 ) return "结果一击命中,$n闷哼了一声显然吃了不小的亏!\n";
  26.   else if( damage < 120 ) return "结果「砰」地一声,$n退了两步!\n";
  27.   else if( damage < 160 ) return "结果这一下「砰」地一声打得$n连退了好几步,差一点摔倒!\n";
  28.   else if( damage < 240 ) return "结果重重地击中,$n「哇」地一声吐出一口鲜血!\n";
  29.   else return "结果只听见「砰」地一声巨响,$n像一捆稻草般飞了出去!!\n";
  30.   break;
  31. case "砸伤":
  32.   if( damage < 20 ) return "结果只是轻轻地碰撞到了$n一下,没有造成什么伤害。\n";
  33.   if( damage < 60 ) return "结果$w只将$n的$l砸出一块瘀红。\n";
  34.   if( damage < 120 ) return "结果「啪」地一声,$w打中$n的$l,登时肿了一块老高!\n";
  35.   if( damage < 240 ) return "结果$w重重得击中$n的$l,打得$p倒退数步,「哇」地吐出一大口鲜血!\n";
  36.   if( damage < 380 ) return "结果只听见「硼」地一声巨响,$w打在$n身上,将$p像一捆稻草般击飞出去!\n";
  37.   return "只见$w重重地撞击在$n的身上,几声骨碎声中,$p象散了架似的瘫了下去!!\n";
  38.   break;
  39. case "内伤":
  40.   if( damage < 10 ) return "只是把$n打得退了半步,毫发无损。\n";
  41.   else if( damage < 20 ) return "$n痛哼一声,在$p的$l造成一处瘀伤。\n";
  42.   else if( damage < 30 ) return "一击命中,把$n打得痛得弯下腰去!\n";
  43.   else if( damage < 40 ) return "$n闷哼了一声,脸上一阵青一阵白,显然受了点内伤!\n";
  44.   else if( damage < 60 ) return "$n脸色一下变得惨白,昏昏沉沉接连退了好几步!\n";
  45.   else if( damage < 70 ) return "重重地击中,$n「哇」地一声吐出一口鲜血!\n";
  46.   else if( damage < 80 ) return "「轰」地一声,$n全身气血倒流,口中鲜血狂喷而出!\n";
  47.   else return "只听见几声喀喀轻响,$n一声惨叫,像滩软泥般塌了下去!!\n";
  48.   break;
  49. case "点穴"://增加点穴伤害pal
  50.   if( damage < 10 ) return "结果只是轻轻的碰到$n的$l根本没有点到穴道。\n";
  51.   else if( damage < 20 ) return "结果$n痛哼一声,在$p的$l造成一处淤青。\n";
  52.   else if( damage < 40 ) return "结果一击命中,$w点中了$n$l上的穴道,$n只觉一阵麻木!\n";
  53.   else if( damage < 80 ) return "结果$n闷哼了一声,脸上一阵青一阵白,登时$l麻木!\n";
  54.   else if( damage < 160 ) return "结果$n脸色一下变得惨白,$w点中$n$l的穴道,一阵疼痛遍布整个$l!\n";
  55.   else if( damage < 240 ) return "结果$n一声大叫,$l的穴道被点中,疼痛直入心肺!\n";
  56.   else return "结果只听见$n一声惨叫,一阵剧痛夹杂着麻痒游遍全身,跟着直挺挺的倒了下去.\n";
  57.   break;
  58. case "抓伤":
  59.   if( damage < 10 ) return "结果只是轻轻地抓到,比抓痒稍微重了点。\n";
  60.   else if( damage < 20 ) return "结果在$p的$l抓出几条血痕。\n";
  61.   else if( damage < 40 ) return "结果一抓命中,$n的$l被抓得鲜血飞溅!\n";
  62.   else if( damage < 80 ) return "结果「嗤」地一声,$l被抓得深可见骨!!\n";
  63.   else if( damage < 120 ) return "结果一抓命中,$n的$l被抓得血肉横飞!!!\n";
  64.   else if( damage < 160 ) return "结果这一下「嗤」地一声抓得$n连晃好几下,差一点摔倒!\n";
  65.   else if( damage < 240 ) return "结果$n哀号一声,$l被抓得筋断骨折!!\n";
  66.   else return "结果只听见$n一声惨嚎,$l被抓出五个血窟窿!鲜血溅得满地!!\n";
  67.   break;
  68. case "摔伤":
  69. case "撞伤":
  70.   if( damage < 20 ) return "结果$n脚下不稳,在地上擦破了点儿皮。\n";
  71.   if( damage < 80 ) return "结果「啪」地一声,$n在地上摔了个屁礅。\n";
  72.   if( damage < 160 ) return "结果$n一不小心,被$N重重摔倒在地!\n";
  73.   if( damage < 320 ) return "结果$n被一下摔倒在地,「噗」地一声喷出了一大口鲜血!\n";
  74.   if( damage < 500 ) return "结果被$N这一下摔在地上,骨头「卡嚓」一声断了!\n";
  75.   return "结果只听见$n一声惨嚎,被$N摔得血肉横飞,惨不忍睹!!\n";
  76. case "反弹伤":
  77.   if( damage < 5 ) return "$N受到$n奋力反震,闷哼一声。\n";
  78.   else if( damage < 10 ) return "$N被$n的胸膛震得气血翻腾,大惊失色。\n";
  79.   else if( damage < 20 ) return "$N被$n的小腹震得站立不稳,摇摇晃晃。\n";
  80.   else if( damage < 40 ) return "$N被$n以内力反震,「嘿」地一声退了两步。\n";
  81.   else if( damage < 80 ) return "$N被$n的小腹反弹回来的力量震得半身发麻。\n";
  82.   else if( damage < 120 ) return "$N被$n的反弹力一震,胸口有如受到一记重击,连退了五六步!\n";
  83.   else if( damage < 160 ) return "$N被$n的内力劲风一震,眼前一黑,身子向後飞出丈许!!\n";
  84.   else return "$N被$n的内力劲风一震,眼前一黑,狂吐鲜血,身子象断了线的风筝向後飞去!!\n";
  85.   break;
  86. default:
  87.   if( !type ) type = "伤害";
  88.   if( damage < 10 ) str =  "结果只是勉强造成一处轻微";
  89.   else if( damage < 20 ) str = "结果造成轻微的";
  90.   else if( damage < 30 ) str = "结果造成一处";
  91.   else if( damage < 50 ) str = "结果造成一处严重";
  92.   else if( damage < 80 ) str = "结果造成颇为严重的";
  93.   else if( damage < 120 ) str = "结果造成相当严重的";
  94.   else if( damage < 170 ) str = "结果造成十分严重的";
  95.   else if( damage < 230 ) str = "结果造成极其严重的";
  96.   else str =  "结果造成非常可怕的严重";
  97.   return str + type + "!\n";
  98. }
复制代码
然而对伤害的影响,damage_type完全无用

————————————————————————————————————————

矛盾矛盾,矛和盾自出现以来就是彼此对立的,攻击和防御,必须以彼此为参照才能体现出来

但是,北侠的防御呢?
没任何用处,只能减少受到的上限伤害……

谈一谈游戏中我见过的几种很经典的防御算法吧

1、圣火纹章
伤害=攻击-防御
这个是最简单的,也是最经典的,但是要求攻防必须精确到了极点,因此只适合于圣火纹章这种剧情完全固定的游戏
特点:破甲
2、魔兽争霸
伤害=攻击/(1+0.06*防御)
每点防御增加6%的有效生命,随着防御的上升,减免程度会下降,但是从有效生命来看,是线性的
魔兽争霸算法的经典程度我就不解释了吧
特点:比例减免
3、骑马与砍杀
护甲吸收——砍 = 0.8
护甲吸收——刺 = 0.65
护甲吸收——盾 = 0.5

护甲减免——砍  = 1.0
护甲减免——刺  = 0.5
护甲减免——盾  = 0.75

计算公式是:
伤害少 = 基础伤害 - ( 护甲 * 护甲吸收 )
最终伤害 =  伤害 * ( 1 -  ( 护甲/100 * 护甲减免 ) )

这种算法,结合了上述算法一(破甲)和算法二(比例减免)的特点,并且根据伤害类型有不同的加成,个人觉得是最适合移植北侠的

北大侠客行MUD,中国最好的MUD

[ 本帖最后由 zgbl 于 2011-8-23 03:42 PM 编辑 ]
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
 楼主| 发表于 2011-8-23 15:45:08 | 显示全部楼层

护甲减免的计算方式


骑马与砍杀里相比常规100点左右的初始伤害,70甲已经近乎无敌了

放到北侠也很可行,以100M1000sk和3o200武器天精金造成的伤害为上限,以同样的极品3o防御装为上限,来调整参数,设计分界线

[ 本帖最后由 zgbl 于 2011-8-23 03:48 PM 编辑 ]

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
发表于 2011-8-23 15:45:58 | 显示全部楼层

我可以先攻击马不?

北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
发表于 2011-8-23 15:46:26 | 显示全部楼层
护甲要有用少林星宿有福了,普通人只好花钱去换ironskin了
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
 楼主| 发表于 2011-8-23 15:49:07 | 显示全部楼层
原帖由 nol 于 2011-8-23 15:45 发表

马么。。。打到马就算马的防御,没打到就算人的,就这样
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
 楼主| 发表于 2011-8-23 15:53:23 | 显示全部楼层
不过如果改这个的话,随机装备的防御就得大改了,不然很容易就能凑一套高防装备。。。
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
发表于 2011-8-23 15:59:35 | 显示全部楼层
高防装常见,3o高防装不常见,不过装备差的那点防御在某些技能和特技面前可以忽略不计
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
发表于 2011-8-23 16:22:42 | 显示全部楼层
如果攻防都这样细算的话,
除了增加npc化学攻击比例,增加npc数量之外。
单挑npc的任务几乎别无选择要给npc穿一身随机装备才能对抗玩家的攻防。
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
发表于 2011-8-23 16:25:30 | 显示全部楼层
为啥NPC要对抗玩家。。。。NPC练一个号1秒钟,玩家练一个号少则半月,多则半年,这已经很不公平了,所以NPC被玩家虐才对
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
发表于 2011-8-23 16:27:57 | 显示全部楼层
原帖由 syfd 于 2011-8-23 03:46 PM 发表
护甲要有用少林星宿有福了,普通人只好花钱去换ironskin了

少林还带ironskin的飘过。。。什么都不穿2000多防御0 0 0
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|北大侠客行MUD ( 京ICP备16065414号-1 )

GMT+8, 2024-11-26 01:35 PM , Processed in 0.011394 second(s), 15 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表