作者hlead (希多)
看板mud_sanc
标题[公告] 种族抗性也实装了!
时间Tue Aug 2 19:47:45 2011
负的做起来有点麻烦..avert
之後视情况在补上负数的好了...
/cmds/std/_wear.c档:
static mapping RACE_ANTI=(["stoneman" :({"earth/2","dam/1","wind/1"}),
"elf" :({"wind/2","ice/1"}),
"devil" :({"fire/2","dark/1"}),
"dragonman" :({"thunder/2","poison/1","fire/1"}),
"human" :({"light/2","wind/1"}) ]);
if(type=="body") // 新增种族抗性 by Norr in 2011/08/02
{
if( userp(user) && !ob->query("set_race_anti_ok") )
{
anti_all = RACE_ANTI[user->query("race")];
foreach(anti_lv in anti_all)
if(sscanf(anti_lv,"%s/%s",kind,lv)==2)
ob->add("anti_kind/"+kind,atoi(lv) ); //额外增加上去种族的抗性。
ob->set("set_race_anti_ok",1); // 判断是否已增加上去。
}
user->set("armor_body",ob);
}
话说,原程式好像本来就是设 user->set("armor_body",ob); 而不是set_temp。
然後由於是读种族,避免mob又乱设种族读不到的情况,
所以就设定只有玩家才有效。而mob则自行设置anti_kind参数即可。
用 set_race_anti_ok 函数去判断是否加了,
这样就不用在remove相关函数多做判断了!
-----------------------------------------------------
然後由於特供大部分都已设1-3左右,所以降为 7 好了!
2~5用来设置特攻,6 & 7为大绝。
// 种族等级抗性
if(wand=(object)tar->query("armor_body"))
if(anti_tmp=(int)wand->query("anti_kind/"+kind))
{
if(c>7) c=7; // 威力级数 max = 7。
if( anti_tmp > (c+2) )
damage = damage / 100;
}
// 读取身上总抗性
anti_tmp=(int)tar->query("anti_effect/"+kind);
// 抗性与伤害的公式计算
if(anti_tmp)
{
if(c>7) c=7; // 威力级数 max = 7 。
anti_tmp = anti_tmp * anti_table[c-1] / 25; // 威力级数会影响抗性效果
if(anti_tmp>99) anti_tmp=99; // 锁住最大抗性
damage=(1+damage/100)*(100-anti_tmp);
}
为了减少负担,去除掉anti_effect/all的判断。
由於会设置all的真的少之又少,
如果真的要设置的话,请用anti_effect/fire,ice,wind......
一个一个设置上去。
----------------------------------
再来就是在view body时,显示anti_kind的抗性等级。
之後再补做上去....
还有抗性总和要思考一下写在哪显示...
其实感觉自己view每件装备然後记忆一下比较快...
好懒得改..runaway
----------------------------------
补上测试情况:
> wear plate
你装备上 锁子甲(Chain Plate)。
> da plate
Object : 防具(锁子甲 /d/ppl/ina/dinah/blood/eq/plate)
anti_kind :([ "ice" : 1, "wind" : 2 ])
> rem plate
你脱下锁子甲(Chain Plate)。
> wear plate
你装备上 锁子甲(Chain Plate)。
> da plate
Object : 防具(锁子甲 /d/ppl/ina/dinah/blood/eq/plate)
anti_kind :([ "ice" : 1, "wind" : 2 ])
--
Norr@Sanc
风,吹散了一切烦恼,只留下平静的思考。
雨,淋落了一切纷乱,只剩下无比的快乐。
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 122.117.46.189
※ 编辑: hlead 来自: 122.117.46.189 (08/02 19:49)
1F:→ laechan :有空我把 shut_tar 的 while(times--) {..} 内的东西 08/02 20:32
2F:→ laechan :做个缩减,你 shut_d.c改好了时就说一下,我预定明天改 08/02 20:33
3F:→ laechan :我把算把一些计算部份独立成为一个函数,会比较好读 08/02 20:33
4F:→ hlead :嗯。您可以先改。...应该没要改了.. 08/02 20:41
5F:→ hlead :如果有的话,等您改完我在修改就好了.. 08/02 20:41