#include "../forest.h" // 繼承某檔案
#define MOB_NAME HIR"鬼"HIB"魂"NOR // MOB NAME
#define MOB_ID HIM"("HIP"Ghost"HIM")"NOR // MOB ID
inherit GMONSTER; // 群體怪
static int kk = 0; // 防必中,需配減傷護盾使用。
void create()
{
int haemo,amount;
haemo=1200000+60000*random(8); // 怪物血量
amount=10+random(20); // 怪物數量
set("level",105+5*random(6)); // 怪物等級
set("race","幽靈"); // 怪物種族
::create();
seteuid(getuid(this_object())); // 一定要有就對了!
set_living_name("ghost"); // 系統看得id,只能小寫。
set("id",({"ghost"})); // mob id
set_name(MOB_NAME); // 怪物中文名
set("short",MOB_NAME+MOB_ID+" ["+amount+"個"+MOB_NAME+"]");
set("long",@NORR
鬼魂總是從你忽略的暗處出手攻擊,這些大多是想要擅入這片森
林的人死後的模樣,無法進入輪迴還終生困死在此。
NORR
);
set("hp_src",haemo); // 與hp_max為一組,怪的最高血量。
set("hp_max",haemo); // 與hp_src為一組,怪的最高血量。
set("hp",haemo); // 怪的血量,統一改上面的血量定義就好了。
set("killer",1); // 自動攻擊, 0為不開啟 1為開啟。
set("unit","個"); // 怪物單位
set("ethic",-10000); // 怪物道德
set("gender","male"); // 怪物性別
set("skill",(["dodge":4000])); // 怪物技能
set("member",amount); // 怪物的數量
set("stat",(["str":6666,"dex":6666,"con":6666, // 怪物屬性,平常可不用設。
"air":6666,"mag":6666,"fel":6666]));// 數值全設6666為普攻必中。
set("special",80); // 特攻發動率。
enable_commands(); // 可使怪執行命令,固定設著就好了。
set_verbs(({"打向","砍向"})); // 怪物的普攻敘述。
set("no_pacify",1); // 不被安撫
set("no_sleep",1); // 不被沉睡
set("no_confine",1); // 不被束縛
set("no_ice",1); // 不被冰凍
set_temp("selfshield2",({500000,1,this_object(),this_object()})); // 自設減
傷護盾
}
int special_fun(object frog,object ppl) // 特攻
{
int j,r;
r=random(3);
switch(r) // 隨機選一種攻擊效果
{
case 1:
shut(HIY"暴風雨之夜襲"NOR,25000,5000); // 簡易式的特功,("敘述",殺傷,命中)。
shut(HIY"暴風雨之夜襲"NOR,20000,9999); // 命中範圍1~9999,9999為必中。
frog->shut("$N使出"HIY"滅卻"HIW"."HIG"魂"NOR"攻向$O",18000+5000*random(8),
499+500*random(20),({"dam","magic",2}),ppl,2+random(4));
// 複雜式的特功,("敘述",殺傷,命中,"種類",目標,攻擊次數)。
// 種類那欄 -> {"屬性","種類","等級強度(1-5)"}
// 屬性:dam、fire、wind、earth、thunder、light、dark、ice、water
// 種類:物理(physics)、魔法(magic)、必中穿刺(stick)
break;
case 2:
frog->shut("$N使出"HIY"滅卻"HIW"."HIG"魂"NOR"攻向$O",18000+5000*random(8),
499+500*random(20),({"dam","magic",2}),ppl,2+random(4));
// 複雜式的特功,("敘述",殺傷,命中,"種類",目標,攻擊次數)。
// 種類那欄 -> {"屬性","種類","等級強度(1-5)"}
// 屬性:dam、fire、wind、earth、thunder、light、dark、ice、water
// 種類:物理(physics)、魔法(magic)、必中穿刺(stick)
break;
default:
// 破盾功能
if(ppl->query_temp("shield2"))
{
show(frog,ppl,HIC"你的護盾因為受到巨大力量的衝擊,而徹底的崩潰了!\n"NOR);
ppl->delete_temp("shield2");
ppl->delete_temp("attack");
return 1;
}
// 補血功能
if(random(4)==1&&query("hp")<50000000)
{
show(frog,ppl,"$N"HIC"吸收了海水的精華,使受創的傷口漸漸地恢復了\n\n"NOR);
add("hp",(int)query("hp_src")/10);
}
// 定身功能
if(random(2)==1)
{
ppl->set("block_command_msg",
"\n狂暴的雨勢,使你感到身體不堪負荷、全身無力,無法行動!!\n");
ppl->set("block_command",5);
}
break;
}
return 1;
}
int receive_damage(int damage) // 傳回傷害的設定,沒說明的地方請照抄。
{
this_object()->delete_temp("time_record");
set_temp("selfshield2",({500000,1,this_object(),this_object()}));
::receive_damage(damage); // 傳回傷害(可修改,會讓實際傷害跟顯示傷害不一致)
return 1;
}
string shield2_name() // 護盾名稱
{
return HIW"水之障壁"NOR;
}
mixed shield(object me,object tar,int dam,string type) // 減傷設定
{
if(type == "fire") dam=dam/15;
else if(type == "thunder") dam=dam/3;
else dam = dam / 8;
return ({kk=dam,"$O受到大海的庇護削弱迎面而來的傷害!"});
// 若無防必中,把kk=dam改為dam即可。
}
int die()
{
object ppl;
ppl=this_player();
if((int)ppl->query_temp("virtue_robber")==1) // 判斷有無任務參數
{
ppl->delete_temp("virtue_robber"); // 刪除任務參數
ppl->set_temp("virtue_robber",2); // 設置任務參數
}
if((string)ppl->query("pri_guild")!="knight") // 如果主職業不等於騎士的話
{
shout(HIG"\n\n\t"+ppl->query("chi_name")+ // shout為全sanc的人都看得到
HIM"費盡千辛萬苦終於殺死了這隻怪!\n\n"NOR);
write(HIW"在此特別賞賜你聲望三百、"+ // write為只有殺死的人看得到
"道德兩萬、金錢一萬。\n"NOR);
ppl->add_warexp(300); // 增加戰功
ppl->add_ethic(20000); // 增加道德
ppl->add("balance",10000); // 增加金錢一萬。
if(random(5)==1)
{
clone_object(VO"energy")->move_to(ppl);
write(HIG"\n【 "HIC"你得到"HIC"贔屭"HIY"精血"HIC"!"HIG" 】\n"NOR);
}
if(random(3)==1)
{
ob=clone_object(VE"belt");
ob_set_names(ob,ppl,all_inventory(environment(frog)));
// 團隊認主,可讓玩家自設。若要只認殺死的人為主,去除該行即可。
ob->move_to(ppl);
}
remove();
return 1;
}
return 1;
}