作者hlead (希多)
看板mud_sanc
标题Re: [闲聊] 抗性相关设定
时间Wed Jul 27 12:40:01 2011
※ 引述《laechan (小太保)》之铭言:
: 底下是范例函数
: // 各抗性共用同一份 table
: mixed ant_table=({ ({...}),
: ({...}),
: }); // 二维阵列
改为下面这样好了。
// kind = 属性 , variety = 种类 , c = 威力级数。
if(c>5) c=5; // 威力级数 max = 5 。
// 读取身上总抗性
anti_tmp=(int)tar->query("anti_percent/all")+
(int)tar->query("anti_percent/"+kind)+
(int)tar->query("anti_percent/"+variety);
// 抗性与伤害的公式计算
if(anti_tmp)
{
anti_tmp * (10-c) / 10; // 威力级数会影响抗性效果
if(anti_tmp>99) anti_tmp=99; // 锁住最大抗性
damage=(1+damage/100)*(100-anti_tmp);
}
anti_tmp * (10-c) / 10; 这个其实可以改查表。
要复杂计算的话,也可以判别
if (c < (anti_tmp + 1)/20)
anti_tmp += 10;
举例来说,lv 3 威力的火球...
只要抗火 60 就可以达到 抗火 70 的效果。
这是一种差距极大时所产生的额外附加效果。
这样感觉会很复杂计算orz..
-------------------------
如果照以上写法的话(目前已更新上去。)
mob的抗性部分就要改设为:
anti_tmp=(int)tar->query("anti_percent/all")+
(int)tar->query("anti_percent/"+kind)+
(int)tar->query("anti_percent/"+variety);
装备部分没差,因为有同化机制。
------------------------
/adm/simul_efun/new_and_count.c下有:
int get_anti_percent(int damage,int percent)
{
if(percent>MAX_ANTI_PERCENT) return damage;
if(percent<-MAX_ANTI_PERCENT) return damage;
return (damage/100)*percent;
}
目前有效果?...看起来好像是没用的..
--
Norr@Sanc
风,吹散了一切烦恼,只留下平静的思考。
雨,淋落了一切纷乱,只剩下无比的快乐。
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 122.117.46.189
※ 编辑: hlead 来自: 122.117.46.189 (07/27 13:23)
1F:→ laechan :shut_d.c 我最近要动, 你已经改完了? 07/27 13:26
2F:→ hlead :嗯..改完了.. 07/27 13:44
3F:→ hlead :剩复杂计算那边 不知道要不要加而已... 07/27 13:45
4F:→ laechan :你可以自己判断 + 实装後看情况斟酌 07/27 13:57
5F:→ hlead :我是预计过几天後再看看 07/27 13:59
6F:→ hlead :话说玩家身上的anti_percent有些怪怪的.. 07/27 14:00
7F:→ hlead :默默的又是负数.. 07/27 14:00
8F:→ laechan :要看某个 simul_efun 有没有被用到就用 grep 去找 07/27 14:05
9F:→ laechan :负数就是我之前提过的,因为它没有 new 函数去 new 它 07/27 14:05
10F:→ hlead :嗯 我找是没有啦..只是多问看看一次而已..avert 07/27 14:19
11F:→ hlead :可是他也是在effect当中..不是理论上也会自动new? 07/27 14:20