北大侠客行MUD论坛

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

再讨论一下force里的hit_ob,不明白设计的指导思想是什么

[复制链接]
发表于 2004-4-28 21:56:51 | 显示全部楼层 |阅读模式

  1. // force.c                                 

  2. inherit SKILL;              
  3.                                                                                      mixed hit_ob(object me, object victim, int damage_bonus, int factor)
  4. {
  5.     int damage;
  6.     int my_max_nl,victim_max_nl;
  7.                                                                                                    
  8.     me->add("neili", - factor );
  9.          if (me->query("neili") < me->query("max_neili") * 2)
  10.         my_max_nl = me->query("neili");
  11.     else
  12.                  my_max_nl = me->query("max_neili") * 2;
  13.          if (victim->query("neili") < victim->query("max_neili") * 2)
  14.         victim_max_nl = victim->query("neili");
  15.     else
  16.                  victim_max_nl = victim->query("max_neili") * 2;
  17.                                                                                                    
  18.     damage = my_max_nl/20 + factor
  19.         - victim_max_nl/25;
  20.                                                                                                    
  21.     if( damage < 0 ) {
  22.         // 自己内力不如敌人时被反震
  23.         if( !me->query_temp("weapon") //为什么还要考虑自己是否带武器呢?
  24.         &&  random(victim->query_skill("force")) > me->query_skill("force")/2 ) {
  25.             damage = - damage;
  26.             me->receive_damage( "qi", damage * 2 );
  27.             me->receive_wound( "qi", damage );
  28.             if( damage < 10 ) return "$N受到$n的内力反震,闷哼一声。\n";
  29.             else if( damage < 20 ) return "$N被$n以内力反震,「嘿」地一声退了两步。\n";
  30.             else if( damage < 40 ) return "$N被$N以内力一震,胸口有如受到一记重锤,连退了五六步!\n";
  31.             else return "$N被$n的内力一震,眼前一黑,身子向后飞出丈许!!\n";
  32.         }
  33.         if( damage_bonus + damage < 0 ) return - damage_bonus;
  34.         return damage;
  35.     }
  36.                                                                                                    
  37.     damage -= victim->query_temp("apply/armor_vs_force");
  38.     if( damage_bonus + damage < 0 ) return - damage_bonus;
  39.     // 执行到这里 damage 通常大于0,damage_bonus + damage < 0 会成立吗??
  40.     if( random(me->query_skill("force")) < damage )
  41.         return damage;
  42.     //假定通常情况下,me->query_skill("force")=600 ,damage = 100
  43.     //这个判断很难成立,因此大多数情况,函数没有返回值
  44. }
复制代码

[ Last edited by notme on 2004-4-28 at 09:58 PM ]
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
发表于 2004-4-30 16:04:40 | 显示全部楼层

Re:再讨论一下force里的hit_ob,不明白设计的指导思想是什么

就是形成一个内力(包括加力)差别造成的伤害,或者是伤害的反弹阿

apply/armor_vs_force这个参数目前没有用,不过我考虑在gem系统里面用上
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
发表于 2004-5-20 17:12:56 | 显示全部楼层

Re:再讨论一下force里的hit_ob,不明白设计的指导思想是什么

apply/armor_vs_force本来应该是有用的。它的作用就是看能否抗住空手之类偏重force的功夫。例如一件软甲(锁子甲),它可能在防护刀剑的时候很有用,但是对于空手就没有一件硬甲来得有效。
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-23 07:40 PM , Processed in 0.011594 second(s), 14 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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