作者laechan (小太保)
看板mud_sanc
标题[武防] 未监定防具监定流程
时间Tue Mar 19 12:27:09 2013
直接贴 code 罗~ 下午有空再 // 标注
看的懂 code 的就直接看吧,也可以回文标注挑战自己看
code 的能力。
另外下面「百分之一」的部份实际上为 1/10,random(10)
就是做 10 取一,只是因为多个 1/10 串在一起,所以实
际上玩家很难得到设定非常完整的超完美物品。
// 每一件未监定物品都有初期属性, 有正有负
// 而且假设完整属性应该有五个, 实际先跑出来的通常只有四个
// 再交给 1. 那个去做完整化
keys_effect=keys((mapping)ob->query("effect"));
// keys_effect 就是该物品的初期属性种类
// 1.百分之一的机率可以完整属性种类
if(random(10)!=4)
{
while(1)
{
r=sizeof(keys_effect);
names=keys_effect[random(r)];
if(ob->query("effect/"+names)<0) continue;
ob->delete("effect/"+names);
keys_effect-=({names});
break;
}
}
else
shorts+="完整";
// 2.调整属性值
foreach(names in keys_effect)
{
r=ob->query("effect/"+names);
if(r>0)
r=10+random(r-9)+random(10);
else
{
r=-r;
r=10+random(r-9)+random(10);
r=-r;
}
ob->set("effect/"+names,r);
}
// 3.百分之一的机率可以将扣属性的拿掉
if(random(10)==2)
{
foreach(names in keys_effect)
{
if(ob->query("effect/"+names)<0)
{
keys_effect-=({names});
ob->delete("effect/"+names);
shorts+="无瑕";
break;
}
}
}
// 4.十分之一机率高防御
if(random(10)==4)
{
r=(int)ob->query("armor");
r=r*(15+random(6))/10;
ob->set("armor",r);
shorts+="坚固";
}
// 5.十分之一机率高属性
if(random(10)==2)
{
r=sizeof(keys_effect);
while(1)
{
names=keys_effect[random(r)];
if(ob->query("effect/"+names)>0)
{
ob->set("effect/"+names,70+random(30));
shorts="高"+to_chinese(replace_string(names,"stat-",""))+shorts;
break;
}
}
}
// 6.十分之一机率再高属性
if(random(10)==2)
{
r=sizeof(keys_effect);
while(1)
{
names=keys_effect[random(r)];
if(ob->query("effect/"+names)>0)
{
if(ob->query("effect/"+names)<70)
ob->set("effect/"+names,70+random(30));
else
ob->set("effect/"+names,99); // 最高
shorts="高"+to_chinese(replace_string(names,"stat-",""))+shorts;
break;
}
}
}
// 双高的情况
if(strlen(shorts)>11)
{
// EX: 高力量高力量 => 最高力量
// 高体质高魔力 => 高体魔
if(shorts[0..1]=="高" && shorts[6..7]=="高")
{
names=shorts[0..11];
shorts=substr(shorts,names,"");
if(names[2..5]==names[8..11])
shorts="最高"+names[2..5]+shorts;
else
shorts="高"+names[2..3]+names[8..9]+shorts;
}
}
if(shorts!="")
{
shorts=shorts+"的 "+ob->query("short");
ob->set("short",shorts);
}
write("\""HIW"当─!"NOR"\"物品监定完成。\n");
--
※ 发信站: 批踢踢实业坊(ptt.cc)
※ 编辑: laechan 来自: 210.61.157.53 (03/19 13:41)