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的有效等级是化解法术伤害的关键参数。