[武防] 未鑑定防具鑑定流程

看板mud_sanc (Sanctuary - 聖殿)作者 (小太保)時間13年前 (2013/03/19 12:27), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串1/1
直接貼 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)
文章代碼(AID): #1HH-ahXS (mud_sanc)
文章代碼(AID): #1HH-ahXS (mud_sanc)