文字MUD游戏论坛-天下泥潭群英会-水泊梁山

文字MUD游戏论坛-天下泥潭群英会-水泊梁山 (http://www.aolai.org/forums/)
-   『 巫师天下 』 (http://www.aolai.org/forums/f21/)
-   -   【原创】迷魂源码分析 (http://www.aolai.org/forums/t13306/)

stome1025 2008-02-29 14:41

【原创】迷魂源码分析
 
2000.4月的代码:
if((int)me->query_skill("spells") < 100 || (int)me->query_skill("moonshentong",1) < 60)
return notify_fail("你还没学会迷魂术。。。\n");
//////////////////有效法力大于100,月宫仙法大于60级才能用迷魂
if( !target
|| !target->is_character()
|| target->is_corpse()
|| target==me)
return notify_fail("你想迷谁的魂?\n");

if(target->query_temp("no_move"))
return notify_fail(target->query("name")+"已经魂不守舍,呆若木鸡了!\n");

if((int)me->query("mana") < 200 )
return notify_fail("你的法力不够!\n");

if((int)me->query("sen") < 10 )
return notify_fail("你无法集中精神!\n");

me->add("mana", -200);
////////////////迷魂消耗法力200
me->receive_damage("sen", 10);
////////////////消耗10点精神
msg = HIC
"$N低头轻声念了句咒文又抬起头来朝$n妩媚的一笑!\n"
NOR;

success = 1;
ap = me->query_skill("spells");
ap = ap * ap * ap /12 ;
ap += (int)me->query("daoxing");
dp = target->query("daoxing");
////////////////有效法力的3次方除以12+dh

ap2 = (int)me->query_per();
////////////////施法者容貌
dp2 = (int)target->query_per();
////////////////目标容貌
ap3 = (int)me->query("mana");
////////////////施法者当前法力值
dp3 = (int)target->query("mana");
////////////////目标当前法力值
ap = ap + 5000*ap2+200*ap3;
////////////////所以这里应该是 施法者有效法力3次方/12+施法者dh+施法者容貌×5000+施法者当前法力×200
dp = dp+5000*dp2+200*dp3;
////////////////所以这里应该是 施法者dh+施法者容貌×5000+施法者当前法力×200
xk=SPELL_D->check_xiangke(me, target);
if(xk==1) {
dp/=5;
} else if(xk==-1) {
ap/=5;
}
////////////////判断法术是否相克

if( random(ap+dp)<dp) success = 0;
////////////////随机从0-(施法者有效法力3次方/12+施法者dh+施法者容貌×5000+施法者当前法力×200 +施法者dh+施法者容貌×5000+施法者当前法力×200)之间取一个随机数,如果这个数字小于施法者dh+施法者容貌×5000+施法者当前法力×200,迷魂失败,否则迷魂成功。
//here we compare current mana. this is important. you need recover to try again.

if(success == 1 ){
msg += HIR "$神不守舍地看着$N,怜香惜玉之心油然而起,竟然忘了自己在战斗之中。\n" NOR;
target->set_temp("no_move", 1);
////////////////////目标被busy1秒
howlong = random((me->query_skill("spells") -100))/3+4;
////////////////////作用时间是(0-(施法者有效法力-100)随机值)/3+4
if(howlong>60) howlong=60;
////////////////////最长不超过60秒
call_out("free", howlong, target);
}
else {
msg += HIR "$n鄙夷的看了$一眼,毫不为所动!\n" NOR;
me->start_busy(random(2));
if( living(target) ) target->kill_ob(me);
}

message_vision(msg, me, target);

return 3+random(5);


法术相克关系如下:
baguazhou 克 dengxian-dafa
buddhism 克 pingtian-dafa
dao 克 yaofa和tianmo
taiyi 克 moonshentong
dengxian-dafa 克 moonshentong
pingtian-dafa 克 seashentong
tianmo 克 buddhism
yaofa 克 gouhunshu
gouhunshu 克 baguazhou
moonshentong 克 tianmo和dao
seashentong 克 taiyi

成功率分析:
初期,假设法术有效等级100,容貌30,法力1000,dh 100年(dh在代码里面表示为n年×1000)
一个怪,一般能力比你低15%
假设怪的法术有效等级85,容貌30,法力850,dh 85年
1-( (100×100×100)/12+100×1000+30×5000+1000×200 + 85×1000+30×5000+850×200)/(85×1000+30×5000+850×200) = 56.9%
最后一个怪,一般能力比你高20%
假设怪的法术有效等级120,容貌30,法力1200,dh 120年
1-( 100×100×100/12+100×1000+30×5000+1000×200 + 120×1000+30×5000+1200×200)/(120×1000+30×5000+1200×200) = 51.12%
所以初期灭怪用迷魂没什么太大的优势
后期,
假设法术有效等级300,容貌40,法力3000,dh 1000年
假设第一个怪的法术有效等级255,容貌30,法力2550,dh 850年
成功率为73.85%
假设最后怪的法术有效等级360,容貌30,法力3600,dh 1200年
成功率为67.18%

越到后期,迷魂的成功率越稳定,另外,迷魂的时,最好把法力练到接近最大法力×2这样成功率会高一些。初期把法力练满再用迷魂成功率提升效果会更明显一些

stome1025 2008-03-01 23:30

回复: 【原创】迷魂源码分析
 
在实际的灭妖过程中,最有效提高灭妖命中率的方法是提高有效法术等级,比如,带个玉佩,穿个僧袍之类的。法术有效等级对命中率影响呈3次方关系。
其次是提高容貌和法力,最没用是提高dh,因为怪的dh是根据你的dh设定的,在dh和wx差不多时,dh对命中影响最小
怪的dh设定公式: guai_dh=your_wx/2+your_dh/3

dgnsl 2008-06-01 16:39

回复: 【原创】迷魂源码分析
 
学习:em01::em01::em01:


所有时间均为格林尼治时间 +9, 现在的时间是 13:10.

Powered by SPLS
版权所有 2001-2023 水泊梁山
皖ICP备05012024号

站长 fengyue


Content Relevant URLs by vBSEO 3.6.1