antirobot2.c
来自「C实现的MUD,对大家基本入门网络游戏很有帮助!」· C语言 代码 · 共 242 行
C
242 行
// designed by Yu Jue
#include <ansi.h>
inherit NPC;
string *key=({
"┌■■■┌■┌■■■┌■■■┌■┌■┌■■■┌■■■┌■■■┌■■■┌■■■",
"│■┐■│■└─┐■└─┐■│■│■│■─┘│■─┘└─┐■│■┐■│■┐■",
"│■│■│■┌■■■┌■■■│■■■│■■■│■■■ │■│■■■│■■■",
"│■│■│■│■─┘└─┐■└─┐■└─┐■│■┐■ │■│■┐■└─┐■",
"│■■■│■│■■■┌■■■ │■┌■■■│■■■ │■│■■■┌■■■",
"└──┘└┘└──┘└──┘ └┘└──┘└──┘ └┘└──┘└──┘",
"■■■┐■┐■■■┐■■■┐■┐■┐■■■┐■■■┐■■■┐■■■┐■■■┐",
"■┌■│■│└─■│└─■│■│■│■┌─┘■┌─┘└─■│■┌■│■┌■│",
"■│■│■│■■■│■■■│■■■│■■■┐■■■┐ ■│■■■│■■■│",
"■│■│■│■┌─┘└─■│└─■│└─■│■┌■│ ■│■┌■│└─■│",
"■■■│■│■■■┐■■■│ ■│■■■│■■■│ ■│■■■│■■■│",
"└──┘└┘└──┘└──┘ └┘└──┘└──┘ └┘└──┘└──┘",
"┌──┐┌┐┌──┐┌──┐┌┐┌┐┌──┐┌──┐┌──┐┌──┐┌──┐",
"│■■■│■└■■■└■■■│■│■│■■■│■■■└■■■│■■■│■■■",
"│■│■│■┌──■┌─┘■│■┘■│■─┐│■─┐ │■│■┘■│■┘■",
"│■│■│■│■■■└■■■└■■■└■■■│■■■ │■│■■■└■■■",
"│■┘■│■│■─┐┌─┘■ │■┌─┘■│■┘■ │■│■┘■┌──■",
"└■■■└■└■■■└■■■ └■└■■■└■■■ └■└■■■└■■■",
"┌──┐┌┐┌──┐┌──┐┌┐┌┐┌──┐┌──┐┌──┐┌──┐┌──┐",
"■■■│■│■■■│■■■│■│■│■■■┘■■■┘■■■│■■■│■■■│",
"■│■│■│┌─■│┌─■│■└■│■└─┐■└─┐ ■│■└■│■└■│",
"■│■│■│■■■┘■■■│■■■│■■■│■■■│ ■│■■■│■■■│",
"■└■│■│■──┐┌─■│ ■│┌─■│■└■│ ■│■└■│┌─■│",
"■■■┘■┘■■■┘■■■┘ ■┘■■■┘■■■┘ ■┘■■■┘■■■┘",
"┌──┐┌┐┌──┐┌──┐┌┐┌┐┌──┐┌──┐┌──┐┌──┐┌──┐",
"│┌┐│││└─┐│└─┐││││││┌─┘│┌─┘└─┐││┌┐││┌┐│",
"││││││┌─┘│┌─┘││└┘││└─┐│└─┐ │││└┘││└┘│",
"│││││││┌─┘└─┐│└─┐│└─┐││┌┐│ │││┌┐│└─┐│",
"│└┘││││└─┐┌─┘│ ││┌─┘││└┘│ │││└┘│┌─┘│",
"└──┘└┘└──┘└──┘ └┘└──┘└──┘ └┘└──┘└──┘"
});
string ans="";
object ob;
int timer = 0;
string str = "银翼杀手说道:请用 answer 回答,下面这行数字是?\n";
void create()
{
set_name("银翼杀手", ({ "yinyi shashou", "yinyi", "shashou", "runner" }));
set("gender", "机器");
set("age", 20);
set_temp("apply/long",
({ "这是一个专门追缉机器人的机器探员。\n"
"如果利用机器自动回答问题,档案将被无条件删除。\n"})
);
set_skill("dodge", 1000);
set("max_qi", 10000);
set("qi", 10000);
set("max_jing", 10000);
set("jing", 10000);
set("combat_exp", 5000000);
set("inquiry", ([
"name": "你还有这闲功夫啊?专心回答问题吧!",
"rumors": "听说有机器人混入本MUD,嘿嘿,我可是火眼金睛呀。",
]) );
set("attitude", "friendly");
setup();
}
void question()
{
if (!ob) return;
tell_object(ob, HIW+str+NOR);
}
void init()
{
if (this_player() == ob) {
remove_call_out("question",);
call_out("question", 1);
add_action("do_answer", ({ "answer", "da", "huida" }));
add_action("wait", ({ "quit", "learn", "xue", "study", "du", "sleep", "practice", "lian" }));
}
}
int wait()
{
write("对不起,请先回答问题。\n");
return 1;
}
void kill_ob(object ob)
{
ob->remove_killer(this_object());
remove_killer(ob);
message_vision("$N沮丧地发现银翼杀手根本不理会作战请求。\n", ob);
}
void unconcious()
{
reincarnate();
set("eff_qi", query("max_qi"));
set("qi", query("max_qi"));
set("eff_jing", query("max_jing"));
set("jing", query("max_jing"));
set("jingli", query("eff_jingli"));
say("银翼杀手狞笑着说:我是无敌不死版!\n");
command("hehe");
}
void die()
{
unconcious();
}
int do_answer(string arg)
{
object me = this_object();
int len = strlen(ans);
if (!arg || strlen(arg) != len)
return notify_fail("答案的长度不对,再仔细看看。\n");
if (arg==ans) {
message_vision("$N点了点头,说道:OK,$n继续忙吧。\n", me, ob);
message_vision("$N突然消失不见了。\n", me);
} else {
message_vision("$N叹了口气道:"+arg+"?"+ans+"才对,这么简单都答不出?去法庭接受聆讯吧!\n", me);
message_vision("$N把$n带去了法庭。\n", me, ob);
ob->move("/d/wizard/robot_court");
}
destruct(this_object());
return 1;
}
void test4()
{
object me = this_object();
if (ob && interactive(ob)) {
if (environment() != environment(ob))
me->move(environment(ob), 1);
timer--;
if (timer > 0) {
tell_object(ob, "银翼杀手警告你:你还有" + chinese_number(timer) + "秒钟的考虑时间。\n");
call_out("test4", 1);
} else {
tell_object(ob, "银翼杀手叹了口气道:一点反应都没有,又是一个机器人嫌犯,去法庭接受聆讯吧!\n");
message_vision("$N把$n带去了法庭。\n", me, ob);
ob->move("/d/wizard/robot_court");
destruct(me);
}
} else destruct(me);
}
void test3()
{
object me = this_object();
if (ob && interactive(ob)) {
if (environment() != environment(ob))
me->move(environment(ob), 1);
timer -= 10;
tell_object(ob, "银翼杀手警告你:你还有" + chinese_number(timer) + "秒钟的考虑时间。\n");
call_out("question", 1);
if (timer > 10) call_out("test3", 10);
else call_out("test4", 1);
} else destruct(me);
}
void test2()
{
object me = this_object();
if (ob && interactive(ob)) {
if (environment() != environment(ob))
me->move(environment(ob), 1);
timer -= 30;
tell_object(ob, "银翼杀手警告你:你还有" + chinese_number(timer) + "秒钟的考虑时间。\n");
call_out("question", 1);
if (timer > 60) call_out("test2", 30);
else call_out("test3", 10);
} else destruct(me);
}
void test1()
{
object me = this_object();
if (ob && interactive(ob)) {
if (environment() != environment(ob))
me->move(environment(ob), 1);
timer -= 60;
tell_object(ob, "银翼杀手警告你:你还有" + chinese_number(timer / 60) + "分钟的考虑时间。\n");
call_out("question", 1);
if (timer > 120) call_out("test1", 60);
else call_out("test2", 30);
} else destruct(me);
}
void test_robot(object obj)
{
int len, temp, line, ltemp, c, cl;
object me = this_object();
ob = obj;
if (environment(ob)) {
me->move(environment(ob), 1);
message_vision("$N忽然出现在$n面前!\n", me, ob);
set_leader(ob);
tell_object(ob, "银翼杀手略带歉意地说:“机器人稽查,例行公事,请回答一个小问题。”\n");
temp = len = random(3) + 3;
while (temp--) {
ans += "0";
ans[<1] += random(10);
}
line = random(5)*6;
for (ltemp = line; ltemp < line+6; ltemp++) {
for (temp = 0; temp < len; temp++) {
c = ans[temp] - '0';
if (c != 1) cl = 7;
else cl = 3;
if (c > 1) c = c * 8 - 4;
else c *= 8;
cl += c;
str += key[ltemp][c..cl];
}
str += "\n";
}
timer = 180;
call_out("test1", 60);
} else destruct(me);
}
void test_player(string player)
{
object ob = find_player(player);
if (ob && interactive(ob))
test_robot(ob);
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?