📄 look20000810.c
字号:
}
return 1;
}
string gettof(object me, object ob)
{
object weapon;
string skill_type,parry_type;
int attack_points;
if( objectp(weapon = ob->query_temp("weapon")) )
{
skill_type = weapon->query("skill_type");
parry_type = "parry";
}
else
{
skill_type = "unarmed";
parry_type = "unarmed";
}
attack_points = COMBAT_D->skill_power(ob, skill_type, SKILL_USAGE_ATTACK);
// attack_points = ob->query_temp("apply/attack");
return tough_level((int)(attack_points/100));
}
int look_living(object me, object obj)
{
int per;
int spi;
int age;
int weight;
string str, limb_status, pro;
mixed *inv;
mapping my_fam, fam;
int me_shen, obj_shen;
int equip, wearornot;
me_shen = (int)me->query("shen");
obj_shen = (int)obj->query("shen");
// per = obj->query("per");
per = obj->query_per();
age = obj->query("age");
if( me!=obj )
message("vision", me->name() + "正盯著你看,不知道打些什么主意。\n", obj);
str = obj->long();
pro = (obj==me) ? gender_self(obj->query("gender")) : gender_pronoun(obj->query("gender"));
if (obj->query_temp("is_riding"))
str += sprintf("%s正骑在%s上,低头看着你。\n", pro, obj->query_temp("is_riding"));
if( (string)obj->query("race")=="人类"
&& intp(obj->query("age")) )
{
str += sprintf("%s看起来约%s多岁。\n", pro, chinese_number(obj->query("age") / 10 * 10));
str += sprintf("%s的武功看来", pro);
str +=gettof(me,obj);
str +=sprintf(",");
str +=sprintf("出手似乎");
str +=getdam(me,obj);
str +=sprintf("。\n");
}
if(age > 70 ) per = per/4;
if(age > 60 ) per = per/3;
if(age > 50 ) per = per/2;
if ((string) obj->query("gender") == "男性" || (string) obj->query("gender") == "无性")
{
if (per >= 30) str +=pro+ HIW"长得宛如玉树临风,风流倜傥,顾盼之间,神采飞扬。真正是人中龙凤!\n"NOR;
if ((per >= 26) && (per < 30))
str += pro+HIC"英俊潇洒,气宇轩昂,风度翩翩,面目俊朗,貌似潘安。\n"NOR;
if ((per >= 22) && (per < 26))
str += pro+HIG"相貌英俊,仪表堂堂。骨格清奇,丰姿非俗。\n"NOR;
if ((per >= 18) && (per < 22))
str += pro+HIY"五官端正。\n"NOR;
if ((per >= 15) && (per < 18))
str += pro+HIB"相貌平平。没什么好看的。\n"NOR;
if (per < 15)
str += pro+RED"长得...有点对不住别人。\n"NOR;
}
else
{
if ((string) obj->query("gender") == "女性")
{
if (per >= 30)
str += pro+HIW"有倾国倾城之貌,容色丽都,娇艳绝伦,堪称人间仙子!\n长发如云,肌肤胜雪,风华绝代,不知倾倒了多少英雄豪杰。\n"NOR;
if ((per >= 28) && (per < 30))
str += pro+HIC"清丽绝俗,风姿动人。有沉鱼落雁之容,避月羞花之貌!\n俏脸生春,妙目含情,顾盼神飞,轻轻一笑,不觉让人怦然心动。\n"NOR;
if ((per >= 26) && (per < 28))
str += pro+HIG"肤如凝脂,眉目如画,风情万种,楚楚动人。当真是我见犹怜!\n"NOR;
if ((per >= 24) && (per < 26))
str += pro+HIM"容色秀丽,面带晕红,眼含秋波。举手投足之间,确有一番风韵。\n"NOR;
if ((per >= 21) && (per < 24))
str += pro+HIR"气质高雅,面目姣好,虽算不上绝世佳人,也颇有几份姿色。\n"NOR;
if ((per >= 18) && (per < 21))
str += pro+HIY"相貌平平,还看得过去。\n"NOR;
if ((per >= 15) && (per <18))
str += pro+HIB"的相貌嘛...马马虎虎吧。\n"NOR;
if (per < 15)
str += RED"咦,"+pro+"长得和无盐有点相似耶。\n"NOR;
}
else
{
if (living(obj))
{
if (!obj->query_temp("owner"))
str += pro+"是一只未被驯服的畜生,眼光里满是戒心和敌意。\n";
else
str += pro+"是一只被"+obj->query_temp("ownername")+"驯服的畜生,一副很温驯的样子。\n";
}
}
}
wearornot = 0;
inv = all_inventory(obj);
for(equip=0; equip<sizeof(inv); equip++)
{
if( inv[equip]->query("equipped") ) wearornot = 1;
}
//check about wife and husband
if((obj->parse_command_id_list())[0]==me->query("couple/couple_id") )
{
if( (string)me->query("gender")=="女性" )
{
str += sprintf("%s是你的丈夫。\n", pro);
}
else{
str += sprintf("%s是你的妻子。\n", pro);
}
}
if (me->query("jiebai"))
if (strsrch(me->query("jiebai"), obj->query("id")+">") >= 0)
{
if( obj->query("gender")=="女性" )
{
if (obj->query("mud_age") > me->query("mud_age"))
str += sprintf("%s是你的义姐。\n", pro);
else
str += sprintf("%s是你的结义妹子。\n", pro);
}
else{
if (obj->query("mud_age") > me->query("mud_age"))
str += sprintf("%s是你的结义兄长。\n", pro);
else
str += sprintf("%s是你的义弟。\n", pro);
}
}
if((wearornot == 0 ) && userp(obj) && !wizardp(obj) )
str += pro+"身上居然什么都没穿耶!\n";
// If we both has family, check if we have any relations.
if( obj!=me
&& mapp(fam = obj->query("family"))
&& mapp(my_fam = me->query("family"))
&& fam["family_name"] == my_fam["family_name"] ) {
if( fam["generation"]==my_fam["generation"] ) {
if( (string)obj->query("gender") == "男性" ||
(string)obj->query("gender") == "无性")
str += sprintf( pro + "是你的%s%s。\n",
my_fam["master_id"] == fam["master_id"]? "": "同门",
my_fam["enter_time"] > fam["enter_time"] ? "师兄": "师弟");
else
str += sprintf( pro + "是你的%s%s。\n",
my_fam["master_id"] == fam["master_id"]? "": "同门",
my_fam["enter_time"] > fam["enter_time"] ? "师姐": "师妹");
} else if( fam["generation"] < my_fam["generation"] ) {
if( my_fam["master_id"] == obj->query("id") )
str += pro + "是你的师父。\n";
else if( my_fam["generation"] - fam["generation"] > 1 )
str += pro + "是你的同门长辈。\n";
else if( fam["enter_time"] < my_fam["enter_time"] )
str += pro + "是你的师伯。\n";
else
str += pro + "是你的师叔。\n";
} else {
if( fam["generation"] - my_fam["generation"] > 1 )
str += pro + "是你的同门晚辈。\n";
else if( fam["master_id"] == me->query("id") )
str += pro + "是你的弟子。\n";
else
str += pro + "是你的师侄。\n";
}
}
if( obj->query("max_qi") )
str += pro + COMBAT_D->eff_status_msg((int)obj->query("eff_qi")* 100 / (int)obj->query("max_qi")) + "\n";
if(obj->is_corpse() && obj->query("kantou") == 1) str += sprintf("%s连头都被割走了。\n", pro);
inv = all_inventory(obj);
if( sizeof(inv) ) {
inv = map_array(inv, "inventory_look", this_object(), obj->is_corpse()? 0 : 1 );
inv -= ({ 0 });
if( sizeof(inv) )
str += sprintf( obj->is_corpse() ? "%s的遗物有:\n%s\n": "%s身上带著:\n%s\n",
pro, implode(inv, "\n") );
}
message("vision", str, me);
// Modified by Hop
/*
if( obj!=me
&& living(obj)
&& random((int)obj->query("shen")) < 0 - (int)me->query("int") * 10 ) {
write( obj->name() + "突然转过头来瞪你一眼。\n");
COMBAT_D->auto_fight(obj, me, "berserk");
}
*/
if( obj!=me && living(obj)
&& (((me_shen < 0) && (obj_shen > 0)) || ((me_shen > 0) && (obj_shen < 0)))
&& (((me_shen - obj_shen) > ((int)obj->query("neili") * 20))
|| ((obj_shen - me_shen) > ((int)obj->query("neili") * 20))))
{
write( obj->name() + "突然转过头来瞪你一眼。\n");
if(obj->query("age") > 15 && me->query("age") > 15)
if(!wizardp(obj) && !wizardp(me))
COMBAT_D->auto_fight(obj, me, "berserk");
}
return 1;
}
string inventory_look(object obj, int flag)
{
string str;
str = obj->short();
if( obj->query("equipped") )
str = HIC " □" NOR + str;
else if( !flag )
str = " " + str;
else
return 0;
return str;
}
int look_room_item(object me, string arg)
{
object env;
mapping item, exits;
if( !objectp(env = environment(me)) )
return notify_fail("这里只有灰蒙蒙地一片,什么也没有。\n");
if( mapp(item = env->query("item_desc")) && !undefinedp(item[arg]) ) {
if( stringp(item[arg]) )
write(item[arg]);
else if( functionp(item[arg]) )
write((string)(*item[arg])(me));
return 1;
}
if( mapp(exits = env->query("exits")) && !undefinedp(exits[arg]) ) {
if( objectp(env = find_object(exits[arg])) )
look_room(me, env);
else {
call_other(exits[arg], "???");
look_room(me, find_object(exits[arg]));
}
return 1;
}
return notify_fail("你要看什么?\n");
}
string tough_level(int power)
{
int lvl;
int rawlvl;
int grade = 1;
if(power<0) power=0;
rawlvl = (int) pow( (float) 1.0 * power, 0.3);
lvl = to_int(rawlvl/grade);
if( lvl >= sizeof(tough_level_desc) )
lvl = sizeof(tough_level_desc)-1;
return tough_level_desc[((int)lvl)];
}
string getdam(object me, object obj)
{
int level;
level = obj->query_temp("apply/damage") + obj->query("jiali");
level = level / 30;
if( level >= sizeof(heavy_level_desc) )
level = sizeof(heavy_level_desc)-1;
return heavy_level_desc[((int)level)];
}
int help (object me)
{
write(@HELP
指令格式: look [<物品>|<生物>|<方向>]
这个指令让你查看你所在的环境、某件物品、生物、或是方向。
HELP
);
return 1;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -