主题: cast lianhua
查看单个帖子
旧 2011-12-16   #1
Odysseus
高级会员
级别:6 | 在线时长:109小时 | 升级还需:31小时级别:6 | 在线时长:109小时 | 升级还需:31小时级别:6 | 在线时长:109小时 | 升级还需:31小时
 
Odysseus 的头像
 
注册: 08年04月11日
来自: 盘丝洞
帖子: 311
声望力: 21
声望: 50 Odysseus 初领妙道
现金:29两梁山币
资产:1245两梁山币
致谢数: 0
获感谢文章数:0
获会员感谢数:0
cast lianhua源码分析(原创)

50级的buddhism cast lianhua和100级的cast lianhua效果有区别吗?谁有源码分析一下呀.
自己分析了。如下:

int cast(object me)
{
int skill;
me=this_player();


if( (int)me->query_skill("buddhism", 1) < 50 )
return notify_fail("你的大乘佛法等级不够。\n"); if( (int)me->query("mana") < 300 )
return notify_fail("你的法力不够。\n");
if( (int)me->query("kee") < 300 )
return notify_fail("你的气血不足。\n");
if( (int)me->query("sen") < 300 )
return notify_fail("你的精神不足。\n");//cat lianhua大乘等级至少要
50级,法力300以上,气血300以上,精神300以上。
if( (int)me->query_temp("anti_magic") )
return notify_fail("你已经在运功中了。\n");

skill = me->query_skill("spells");//法术有效登记

me->add("mana", -100);
me->receive_damage("kee", 30);
me->receive_damage("sen", 30);//施法费法力100,气血30,精神30

message_vision(
HIC"$N微一凝神,背后幻出一朵白莲,五色毫光闪现。\n" NOR, me);

me->set_temp("anti_magic", skill);//抗魔法系数=法术有效等级

me->start_call_out( (: call_other, __FILE__, "remove_effect", me, skill/3 :), skill);

if( me->is_fighting() ) me->start_busy(3);//如果在战斗中自己busy 3秒。

return 1;
}

void remove_effect(object me, int amount)
{
me->delete_temp("anti_magic");
tell_object(me, "你身后的白莲渐渐隐去了。\n");
return;
}

*************
if( victim->query_temp("anti_magic") )
{
adjust=(int)victim->query_temp("anti_magic");//抗魔法系数

if( (int)victim->query("mana") < adjust)
success=0;//法力小于抗魔法系数则失败
else
success=1;//否则成功

if( success )
{
victim->add("mana", -adjust);//成功后减法力值=抗魔法系数
damage_qi=damage_qi - adjust/2;
damage_shen=damage_shen - adjust/2;//收到的伤害气血和精神各减抗魔法系数/2
if ( damage_qi > 0 || damage_shen > 0 )
message_vision("\n只见$N身后幻出千朵白莲,挡住了$n的攻势。\n", victim, winner); //抵挡住一些伤害
else
message_vision("\n只见$N身后幻出千朵白莲,将$n的攻势尽数化解。\n", victim, winner); //毫发无伤
}
}

综上,因为抗魔法系数=法术有效等级,提高buddhism的有效等级是化解法术伤害的关键参数。

此帖于 2011-12-23 11:43 被 Odysseus 编辑. 原因: 更新
Odysseus 当前离线  
回复时引用此帖