📄 baby2.c
字号:
"左手", "右手", "胳膊肘", "瘦排骨", "小腿", "短腿", "大腿", "火柴棍大腿", "罗圈腿", "哈吧腿", "水桶腰", "南瓜腰", "水蛇腰", "水萝卜腰", "麻花腰", "搓板儿背", "脚后跟", "裹脚背", "大脚趾", "细脚肘", "大肚皮", "啤酒肥肚", "瘪肚皮", "驼背", "肥臀", "臀尖", }); string *actions = ({ "不客气地迅速尿了一小滩尿。", "端起小水枪就狂浇一气。", "呸了一小口。", "吐出一小堆粘粘的口香糖渣。", "张口就舔了几口。", "将$n舔得死去活来。", "张开小嘴咬了一口。", "张开小嘴咬住$n死死不放。", "咬下一小砣肉。", "咬下一大块疙瘩肉。", "咬得$n捶胸顿足哭爹喊娘。", "咬出两排红牙印儿。", "咬出一大块瘀血紫疤。", "揪下一撮毛。", "揪下一层老皮。", "扯住一撮细毛不放。", "硬是扯出一个血囊葫芦。", "吧嗒吧嗒使劲捶了几拳。", "捶出一个大囊肿。", "胡乱踢了几下。", "踢得$n上吐下泄。", "砰地一声踢中要害。", "踢得$n直翻白眼。", "用大脑袋轰地一撞。", "用小指扎出几个绣花窟窿。", "使劲地抓出五道血痕。", "抓出五串水泡。", "伸出双手玩命地一掐。", "咬牙切齿地掐住$n的人中。", "伸出手掐出好大一个肿块。", "拽着悠秋千。", "啪啪左右开弓扇了十几下。", "扇了个两面红。", "毫不客气地挠起痒痒儿。", "挠出一大片粉头痱子。", "用小手指抠出一小肿疱。", "用手指抠出一沙疮。", "掏出一块红疤。", "抓出一大片青春美丽豆。", }); string *returns = ({ "然后跑回$N身上。", "然后悄悄地回到$N手中。", "再回头一本正经地爬到$N身上。", "再纵身跃回到$N手中。", "再回头一跳,跃到$N身上。", "然后高兴地回到$N手中。", "然后得意地钻回$N身上。", "然后十分满意地钻回$N手中。", "然后兴奋地蹦回$N身上。", "然后欣喜若狂地蹦回$N手中。", }); string str1 = my_name+rdm(dos)+rdm(parts)+"上,"+rdm(actions)+"\n"; if (! arg) return 0; who = present(arg,environment(this_player())); if (! who) return notify_fail ("耍谁?\n"); message_vision ("$N向"+my_name+ "使了一个眼色,然后若无其事地看了$n一眼。\n", this_player(),who); remove_call_out ("delayed_action"); call_out ("delayed_action",3,str1,this_player(),who); remove_call_out ("delayed_reaction"); call_out ("delayed_reaction",4,rdm(returns)+"\n", this_player(),who); return 1;}void delayed_action (string str, object ob1, object ob2){ message_vision (str,ob1,ob2);}void delayed_reaction (string str, object ob1, object ob2){ message_vision (str,ob1,ob2);}void die(){ int i; object owner, *enemy; int jing,qi,exp;owner=this_player(); exp = (int) query("combat_exp"); jing = (int) query("max_jing"); qi = (int) query("max_qi"); if(!environment()->query("no_death_penalty")) set("combat_exp", exp/10 * 8); set("eff_qi", qi); set("eff_jing", jing); set("qi", qi); set("jing", jing);if(member_array(owner->query("id"),owner->query("parents"))>-1){owner->set("baby/exp",(int)query("combat_exp"));owner->save();} ::die();}string status_color(int current, int max){ int percent; if( max>0 ) percent = current * 100 / max; else percent = 100; if( percent > 100 ) return HIC; if( percent >= 90 ) return HIG; if( percent >= 60 ) return HIY; if( percent >= 30 ) return YEL; if( percent >= 10 ) return HIR; return RED;}int do_shape(string arg){ mapping my; string shape; int at_pt,pa_pt,do_pt;if (!arg)return notify_fail("你要看谁的状态?\n");if (arg !=query("id"))return notify_fail("你要看谁的状态?\n");if(member_array(this_player()->query("id"),this_object()->query("parents"))<-1)return notify_fail("你是谁啊?\n"); my = query_entire_dbase(); printf(HIC"≡"HIY"──────────────────────────────"HIC"≡\n"NOR);printf(HIC"精力:"NOR"%s%3d/ %3d %s(%3d%%) "HIC"气血:"NOR"%s%3d/ %3d %s(%3d%%)\n", status_color(my["jing"], my["eff_jing"]), my["jing"],my["eff_jing"], status_color(my["eff_jing"], my["max_jing"]), my["eff_jing"] * 100 / my["max_jing"], status_color(my["qi"], my["eff_qi"]), my["qi"], my["eff_qi"], status_color(my["eff_qi"], my["max_qi"]), my["eff_qi"] * 100 / my["max_qi"] ); printf(HIW"性名: "HIG"%s"NOR"\t\t"HIW"经验: "HIG"%d"NOR"\t\t"HIW"年龄: "HIG"%d"NOR"\n"NOR, my["name"], my["combat_exp"],my["age"] ); printf(HIY"悟性: "HIG"%d"NOR"\t\t"HIY"根骨: "HIG"%d"NOR"\t\t"HIY"容貌: "HIG"%d"NOR"\n"NOR, query_int(), query_con(),query_per() ); printf(HIY"身法: "HIG"%d"NOR"\t\t"HIY"臂力: "HIG"%d"NOR"\t\t"HIY"福缘: "HIG"%d"NOR"\n"NOR, query_dex(), query_str(),query_kar() ); printf(HIY"内力: "HIG"%d"NOR"\t\t"HIY"内力上限: "HIG"%d"NOR"\t\t\n"NOR, query("neili"), query("max_neili") ); at_pt= COMBAT_D->skill_power(this_object(), "unarmed", SKILL_USAGE_ATTACK); pa_pt= COMBAT_D->skill_power(this_object(), "parry", SKILL_USAGE_DEFENSE); do_pt= COMBAT_D->skill_power(this_object(), "dodge", SKILL_USAGE_DEFENSE); printf(HIR"攻击力: %d\t"NOR+HIR"防御力: %d\t\n"NOR, at_pt+1, pa_pt/2+do_pt/2+1 ); printf("/cmds/skill/skills"->pet_skill(this_object())); printf(HIC"≡"HIY"──────────────────────────────"HIC"≡\n"NOR); return 1;}int do_cun(string arg){ object me, ob; me = this_player(); ob = this_object();if (!arg)return notify_fail("你要让谁存档?\n");if (arg !=query("id"))return notify_fail("你要让谁存档?\n");if(member_array(this_player()->query("id"),this_object()->query("parents"))<-1) return notify_fail ("自己的孩子自己管,你不用担这份心啦。\n"); if ( me->is_busy() ) return notify_fail("你上一个动作还没有完成!\n"); if ( me->is_fighting() ) return notify_fail("你还是专心作战吧!\n"); me->set("baby/age",(int)this_object()->query("age")); me->set("baby/exp",(int)this_object()->query("combat_exp"));// me->set("baby/skills",this_object()->query("skills")); me->set("baby/skills",this_object()->query_skills()); if (!wizardp(me)) me->start_busy(8);// write("年龄"+(int)this_object()->query("age")+"\n");// write("经验"+(int)this_object()->query("combat_exp")+"\n");// write("武功"+this_object()->query("skills")+"\n");// write("年龄"+(int)me->query("baby/age")+"\n");// write("经验"+(int)me->query("baby/exp")+"\n");// write("武功"+me->query("baby/skills")+"\n"); write("孩子的情况已经储存完毕。\n"); return 1;}int do_teach(string arg){ object me, ob; int gin_cost,amount, myskill, itskill; string student, skill; me = this_player(); ob = this_object(); if ( me->is_busy()) return notify_fail("你现在正忙着呢。\n"); if ( me->is_fighting() ) return notify_fail("你不能在战斗中教人知识。\n"); if ( !arg || (sscanf(arg, "%s about %s", student, skill) != 2) ) return notify_fail("指令格式:jiao <某人> about <技能>\n"); if ( student != ob->query("id") ) return notify_fail("你要教谁?\n"); if ( !myskill = me->query_skill(skill, 1)) return notify_fail("这项技能你好象还不会呢!\n");if( !SKILL_D(skill)->valid_learn(ob) ) return notify_fail("宝宝显然无法学会这项技能!\n");if(member_array(this_player()->query("id"),this_object()->query("parents"))<-1) return notify_fail ("自己的孩子自己教,你不用担这份心啦。\n"); if ( !living(ob) ) return notify_fail("嗯....你得先把" + ob->name() + "弄醒再说。\n"); if ( ! ob->query("is_baby") ) return notify_fail("人家也有师傅,有得着你来教?\n"); itskill = ob->query_skill(skill, 1); if(myskill <= itskill) return notify_fail( ob->name()+"以嘲笑的目光望着你。\n"); if( (int)me->query("potential") < 1 ) return notify_fail("你的潜能不够!\n"); gin_cost = (int)ob->query_int(); if( (int)me->query("jing") < gin_cost) return notify_fail("你显然太累了没有办法教!\n"); me->receive_damage("jing", gin_cost); amount = (int)me->query("int") + (int)ob->query("int"); message_vision(sprintf("$N不厌其烦地教$n「%s」。\n", to_chinese(skill)), me, ob); if(ob->query("age") < 5) {ob->add( "combat_exp", 1); me->start_busy(1); if (ob->query("age") < 5) message_vision("$n哇哇地大哭起来,$N说什么也哄不住。\n", me, ob); else message_vision("$n大哭大闹,说什么也不听$N话。\n", me, ob); } else { ob->add_skill(skill, amount); ob->add( "combat_exp", amount/20+random(amount/20) ); message_vision(sprintf("$N似乎真的学会了一些「%s」!\n", to_chinese(skill)), ob); me->start_busy(1); } return 1;}varargs void add_skill(string skill, int amount){ if( !find_object(SKILL_D(skill)) && file_size(SKILL_D(skill)+".c") < 0 ) error("F_SKILL: No such skill (" + skill + ")\n"); if( !mapp(skills) ) skills = ([]); if( undefinedp(skills[skill]) ) skills[skill] = 0; if( !amount ) amount = 1; if( !mapp(learned) ) learned = ([ skill : amount ]); else (int)learned[skill] += amount; if( learned[skill] > (skills[skill] + 1) * (skills[skill] + 1) ) { skills[skill]++; learned[skill] = 0; this_object()->improve_skill(skill, skills[skill]+1); }}int accept_object(object me, object obj){ object ob; ob = this_object();if(member_array(this_player()->query("id"),this_object()->query("parents"))<-1) return notify_fail ("人家父母会照顾自己的孩子啦。\n");if (obj->is_character()) return notify_fail("你想把活人送人??\n"); return 1;}int do_make(string arg){ object baby; int number;object me,obj;me=this_player();obj=this_player();if (!arg)return notify_fail("你要看谁的状态?\n");if (arg !=query("id"))return notify_fail("你要看谁的状态?\n"); baby=new("/d/taohuacun/npc/baby2"); baby->set("long", baby->query("long")+"这是"+obj->query("name")+"和"+me->query("name")+"的孩子。\n"); if (random(100)<50) { baby->set("gender","男性"); baby->set_name("小"+obj->query("name"),({"xiao "+obj->query("id"),"baby"})); } else { baby->set("gender","女性"); baby->set_name("小"+me->query("name"),({"xiao "+me->query("id"),"baby"})); } me->add("child",1); baby->set("parents",({me->query("id"),me->query("id")})); number=me->query("child"); me->set("child_"+number+"/gender",baby->query("gender")); me->set("child_"+number+"/long",baby->query("long")); me->set("child_"+number+"/name",baby->query("name")); me->set("child_"+number+"/id",({baby->query("id"),"baby"})); me->set("child_"+number+"/parents",baby->query("parents")); me->delete_temp("is_bearing"); me->save(); obj->save(); //this needs to be put at the last since //can only move the baby after it's parameters are set. if(!baby->move(environment(me))) baby->move(environment(environment(me)));return 1;}int do_order(string arg){ object me = this_player(); string type, cmd; int i; seteuid(getuid()); if( !arg ) return notify_fail("你想让宝宝做什么?\n"); if ((sscanf(arg, "%s %s", type, cmd) < 2 )) return notify_fail("指令格式:order [un]accept object | [un]accept fight | <指令>\n"); if (!living(this_object())) return notify_fail("现在不可能啦?\n");if(member_array(this_player()->query("id"),this_object()->query("parents"))<-1) return notify_fail ("自己的孩子自己管,你不用担这份心啦。\n"); for (i = 0; i < sizeof(cmds); i++) if (cmds[i] == type) { exec_cmd(me, arg); return 1; } return notify_fail("你只能对她下达战斗指令!\n");}void exec_cmd(object me, string arg){ if (!command(arg)) write("宝宝现在无法正确执行你的命令!\n"); else command("nod");}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -