[技能] 魔法陣

看板mud_sanc (Sanctuary - 聖殿)作者 (小太保)時間16年前 (2010/03/25 10:32), 編輯推噓0(003)
留言3則, 1人參與, 最新討論串2/2 (看更多)
// 舊技能已備份為 /d/spell/magic-cycle.20100325 // Laechan@Sanc written in 2010/03/25 inherit __DIR__+"spell_d.c"; // 非 return 1 可截斷 start_effect 呼叫 // (例如 return 2) int start_skill(object tar,int lv) { object ppl=this_player(); int skill; // wiz 可略過底下判斷 if(!wizardp(ppl)) { if((string)ppl->query("pri_guild")!="mage") { write("只有主職魔法師才能施展魔法陣喔.\n"); return 0; } // 這裡可加上 runes 限制 if(!ppl->query_temp("magic heart")) { write("施展魔法陣之前必須先施展 magic heart 喔.\n"); return 0; } if(ppl->query_temp("flying")) { write("施展魔法陣之前必須先 land 喔(漂浮在半空中無法使用).\n"); return 0; } } // 保險起見增設的限制 if(ppl->query_temp("casting")) { write("你正在施法當中, 沒空施展其它法術喔.\n"); return 0; } skill=ppl->query("skill/magic-cycle"); switch(lv) { // 全屬性增幅魔法陣, 可跟其它魔法陣共存 case 1: skill=skill/200; ppl->add_temp("casting",6-skill); // Lv10 時剩 1 秒 call_out("add_all_stat",5,ppl,environment(ppl),skill); return 2; // = return 0; 但有 call_out 不能有 return 0; break; default: write("這個級數的魔法陣功能未實裝喔.\n"); return 0; break; } } int add_all_stat(object ppl,object env,lv) { mixed obs; object ob; int sp; if(!ppl) return 1; if(!env) { ppl->delete_temp("casting"); return 1; } // 玩家已離開施展地點時取消施展 if(env!=environment(ppl)) { ppl->delete_temp("casting"); return 1; } sp=ppl->query("sp_src"); ppl->add("sp",-(sp/10)); // 消耗 1/10 的 sp if(ppl->query("sp")<1) ppl->set("sp",1); obs=all_inventory(env); obs-=({ppl}); // 施展者自己不加 foreach(ppl in obs) { if(!ppl) continue; if(!userp(ppl)) continue; // 不加 con 其它都加 ppl->temp_several_same_mod(({"stat/air","stat/str","stat/fel", "stat/mag","stat/dex","stat/int"}), lv*lv,"magic-cycle",lv); } return 1; } -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.225.161.19

03/25 10:32, , 1F
待會有事, 先 coding 到這
03/25 10:32, 1F

03/25 10:32, , 2F
_cast.c 已針對 return 2 的部份做相對應修改
03/25 10:32, 2F

03/25 10:53, , 3F
修改位置在第 315~353 行
03/25 10:53, 3F
文章代碼(AID): #1BgiixlP (mud_sanc)
討論串 (同標題文章)
文章代碼(AID): #1BgiixlP (mud_sanc)