int play(object me, object ob, string arg) { int lvl; int i; string m_name; if (! arg) return notify_fail("你要演奏什么曲子?\n"); if (! (lvl = me->query_skill(arg, 1))) return notify_fail("你不会演奏这首曲子。\n"); if (! SKILL_D(arg)->valid_enable("guzheng-jifa")) return notify_fail("这不能用来弹奏!\n"); lvl += me->query_skill("guzheng-jifa", 1) / 2; m_name = to_chinese(arg); if (me->is_busy()) return notify_fail("你现在正忙,等会儿再演奏吧。\n"); if (lvl < 15) { message_vision(WHT "\n$N" WHT "胡乱拨了拨$n" WHT ",结果只是发" "出了几下刺耳的杂音。\n" NOR, me, ob); } else if (lvl < 30) { message_vision(WHT "\n$N" WHT "拨拉了一下$n" WHT ",发出几声怪" "响,难听的一塌糊涂。\n" NOR, me, ob); } else if (lvl < 60) { message_vision(WHT "\n$N" WHT "摆好$n" WHT "轻轻弹了几下,声音" "还算清脆,不太难听。\n" NOR, me, ob); } else if (lvl < 90) { message_vision(HIW "\n$N" HIW "摆好$n" HIW "弹了一首" + m_name + HIW ",韵律洋洋洒洒,颇为不错。\n" NOR, me, ob); } else if (lvl < 150) { message_vision(HIW "\n$N" HIW "摆好$n" HIW "弹了一首" + m_name + HIW ",颇为动人,引人入胜。\n" NOR, me, ob); } else if (lvl < 225) { message_vision(HIW "\n$N" HIW "摆好$n" HIW "弹了一首" + m_name + HIW ",听得众人感慨万千,甚是投入。\n" NOR, me, ob); } else if (lvl < 300) { message_vision(HIC "\n$N" HIC "摆好$n" HIC "弹了一首" + m_name + HIC ",琴音宛若溪水荡流,怡然陶趣,雅致万千。\n" NOR, me, ob); } else { message_vision(HIG "\n$N" HIG "摆好$n" HIG "弹了一首" + m_name + HIG ",宛若清溪流上心头,令人无酒自醉,却又似身" "至仙境,心灵空明。\n" NOR, me, ob); } me->start_busy(3 + random(3)); SKILL_D(arg)->do_effect(me); return 1; }
int perform(object me, object target) { int damage,l_temp; string msg; int busy_time,busy_time1,pfm_time,pfm_time1; busy_time=3; //perform的忙时间基数 busy_time1=2; //成功对手的忙时间基数 if( !target ) target = offensive_target(me); if( !target || !target->is_character() || !me->is_fighting(target) ) return notify_fail("神功伤敌只能对战斗中的对手使用。\n"); if( objectp(me->query_temp("weapon")) ) return notify_fail("你必须空手才能使用「九阴绝户手」!\n"); if( (int)me->query_skill("lanhua-shou", 1) < 100 ) return notify_fail("你的兰花手不够娴熟,不会使用「九阴绝户手」。\n"); if( (int)me->query_skill("jiuyin-xinjing", 1) < 100 ) return notify_fail("你的九阴心经不够高,不能用「九阴绝户手」伤敌。\n"); if( (int)me->query("force") < 500 ) return notify_fail("你现在内力太弱,不能使出「九阴绝户手」招式。\n"); if( (int)me->query_condition("juehu_busy")) return notify_fail("你元气大伤,现在没有能力使出「九阴绝户手」招式。\n"); msg = HIB "$N默运神功,脸色白得吓人,突然使出兰花手的一记阴招「九阴绝户手」,企图当场把$n废于掌下。\n\n"NOR; pfm_time=(int)busy_time-(me->query("lanhua-shou",1)+me->query("jiuyin-xinjing",1))*(1+busy_time)/200*busy_time; pfm_time1=busy_time1+(int)(me->query("lanhua-shou",1)+me->query("jiuyin-xinjing",1))*(1+busy_time)/200*busy_time; if (random(me->query_skill("force")) > target->query_skill("force")/2 ) { me->start_busy(pfm_time); target->start_busy(random(pfm_time1)); damage = (int)me->query_skill("lanhua-shou", 1); damage = damage + random(damage)/2; target->receive_damage("kee", damage); target->receive_wound("sen", damage/2); target->receive_damage("kee", damage/2); target->receive_wound("sen", damage/3); me->add("force", -damage/6); msg += RED"结果$N一击命中,$n只感到下体一阵刺痛,体内精元不断外泄,顿时觉的四肢无力,两腿不停颤抖。\n"NOR; } else { me->start_busy(random(pfm_time)); l_temp=80-(int)me->query_skill("jiuyin-xinjing", 1)/10; me->add("force", -l_temp); msg += CYN"可是$p看破了$P的狠毒企图,向旁跳开数步,躲开了$P的凌厉一击!\n"NOR; } message_vision(msg, me, target); if (damage>200 ) { me->add("sen", -damage); // target->apply_condition("juehu_hurt",(int)(500*target->query("age"))); me->apply_condition("juehu_busy",(int)(100*me->query("age"))); me->add("max_force", - (20 + random(20))); if (target->query("gender")== "男性") { message_vision(HIW"$N突然觉的丹田内的精元已流失迨尽,心里一阵难过,知道自己有一段时间不能行欢做乐了!\n"NOR,target); } else {if (target->query("gender")== "女性") message_vision(HIW"$N被你一击命中,,不禁既羞又怒,见$n竟对一女流之辈也用此阴毒招数!\n"NOR,target,me); else message_vision(HIW"$N虽然击中$n的私处,但感觉受力甚轻,似乎已无要害可言!\n"NOR,me,target); } target->kill_ob(me); } return 1; }
int perform(object me, object target) { object weapon; int i, a, ap, dp, power; if (!target) target=offensive_target(me); if (!target || !target->is_character() || !me->is_fighting(target)) return notify_fail("你不在战斗中!\n"); weapon=me->query_temp("weapon"); if (!objectp(weapon) || weapon->query("skill_type") != "sword") return notify_fail("你手中无剑,如何使得出哀牢山剑意?\n"); if (me->query_skill("kurong-changong", 1)<70) return notify_fail("你的内功火候未到,无法架御哀牢山剑意!\n"); if (me->query_skill("sword", 1) < 100) return notify_fail("你剑法修为不够,无法施展哀牢山剑意!\n"); if (me->query_skill("duanjia-jian",1)<60) return notify_fail("你段家剑修为不够,无法施展哀牢山剑意!\n"); if( me->query_skill_mapped("force") != "kurong-changong") return notify_fail("你所用的内功与哀牢山剑意气路相悖!\n"); if (me->query("neili") <= 500) return notify_fail("你的内力不够使用哀牢山剑意!\n"); message_vision(HIR "\n突然间$N剑法突变,剑气纵横,上六剑,下六剑,前六剑,后六剑,\n\n"NOR, me, target); message_vision(HIR "\n左六剑,右六剑,施展哀牢山剑意对$n虚虚实实连刺了三十六剑!\n\n" NOR, me, target); if (me->query("combat_exp")*100/target->query("combat_exp")<120) a=3; else { if (me->query("combat_exp")*100/target->query("combat_exp")<150) a=4; else { if (me->query("combat_exp")*100/target->query("combat_exp")<180) a=5; else a=6; } } for (i=1; i<=a; i++) COMBAT_D->do_attack(me, target, weapon); ap = me->query_skill("force")+me->query_skill("sword")/3; dp = target->query_skill("force")+target->query_skill("dodge")/3; power = me->query_skill("yiyang-zhi",1) + me->query_skill("duanjia-jian",1); // 增加攻击力 消耗极大之内力 if(random(2) == 1 && random(ap+dp)*100 > dp*50 && (int)me->query_skill("yiyang-zhi", 1) > 200 && me->query("neili") >= 2000 && me->query("family/family_name")=="大理段家") { message_vision(HIY "\n只见$N剑交左手,右手急运内功将一阳指力贯注在"NOR+weapon->query("name")+NOR HIY",对着$n补了一剑!\n" NOR, me, target); me->add_temp("apply/speed", power/3); me->add_temp("apply/damage", power/2); me->add_temp("apply/attack", power/2); target->add_temp("apply/defense", -power/5); target->add_temp("apply/dodge", -power/5); target->add_temp("apply/parry", -power/5); COMBAT_D->do_attack(me, target, weapon); target->add_temp("apply/defense", power/5); target->add_temp("apply/dodge", power/5); target->add_temp("apply/parry", power/5); me->add_temp("apply/speed", -power/3); me->add_temp("apply/damage", -power/2); me->add_temp("apply/attack", -power/2); me->add("neili", -500); } me->start_busy(a-random(4)); me->add("neili", -200); me->add("jingli", -50); return 1; }
int perform(object me, object target) { string msg; int extra,adjust; int count; object weapon,targetweapon; extra = me->query_skill("ittouryu",1); if ( extra < 150) return notify_fail("你的[一刀流剑术]还不够纯熟!\n"); if( !target ) target = offensive_target(me); if( !target || !target->is_character() || !me->is_fighting(target) ) return notify_fail("[百鬼夜狂]只能对战斗中的对手使用。\n"); // if(me->query_temp("timer/hyakki")+60>time()) // return notify_fail("你的杀气已尽,无法在短时间内再出这一招。\n"); msg = HIR "\n\n$N突然仰天长嚎,头发如钢针般根根直竖,$n依稀看到$N的瞳仁正在变成红色。 $N猛地扑向$n,发动了一刀流的最强一招-「百鬼夜狂」,将$n笼罩在一片刀光中。 " NOR; count=0; adjust = 440-me->query_skill("blade")>0?0:440-me->query_skill("blade"); // message_vision("adjust is "+(string)adjust+"\n",me); // me->set_temp("timer/hyakki",time()); me->add_temp("apply/attack",adjust); me->add_temp("apply/damage",extra); msg += HIC "百鬼袭!!" NOR; COMBAT_D->do_attack(me,target, TYPE_PERFORM,msg); if(target->query_temp("damaged_during_attack")) count++; msg = HIG "百鬼冲!!" NOR; COMBAT_D->do_attack(me,target, TYPE_PERFORM,msg); if(target->query_temp("damaged_during_attack")) count++; msg = HIB "百鬼碎!!" NOR; COMBAT_D->do_attack(me,target, TYPE_PERFORM,msg); if(target->query_temp("damaged_during_attack")) count++; msg = HIY "百鬼突!!" NOR; COMBAT_D->do_attack(me,target, TYPE_PERFORM,msg); if(target->query_temp("damaged_during_attack")) count++; msg = HIM "百鬼坠!!" NOR; COMBAT_D->do_attack(me,target, TYPE_PERFORM,msg); if(target->query_temp("damaged_during_attack")) count++; msg = HIW "百鬼斩!!" NOR; COMBAT_D->do_attack(me,target, TYPE_PERFORM,msg); if(target->query_temp("damaged_during_attack")) count++; msg = HIR "灭!!!!" NOR; COMBAT_D->do_attack(me,target, TYPE_PERFORM,msg); if(target->query_temp("damaged_during_attack")) count++; msg="\n\n"; me->add_temp("apply/damage",-extra); me->add_temp("apply/attack",-adjust); if(!count) msg+=HIB"$n好整以暇地闪过$N所有的攻击,冷冷地说: “该轮到我了!”。\n"NOR; else if(count<4) msg+=HIY"突然,一蓬鲜血激射,随之$n破出刀光,捂着殷红的衣襟, 退向一侧。\n"NOR; else if(count<7) msg+=HIM"突然,一蓬鲜血激射,随之$n破出刀光,捂着殷红的衣襟, 口中撕吼着:“魑魅魍魉...”, $N接道:“百鬼夜狂”。\n"NOR; else msg+=HIR"突然,一蓬鲜血激射,随之$N破出刀光,背对着血泊中的$n 傲慢地说道:“笑止千万!”\n"NOR; message_vision(msg,me,target); if (count>3) target->start_busy(3); else target->start_busy(count); if (count>5) me->start_busy(3); else me->start_busy(8-count); return 1; }
int perform(object me, object target) { string msg; int extra, hammer; object weapon; int busy, super; if( !target ) target = offensive_target(me); if( !target ||!target->is_character() ||!me->is_fighting(target) ) return notify_fail("『天雷一击』只能对战斗中的对手使用。\n"); weapon = me->query_temp("weapon"); extra = me->query_skill("thunderwhip",1); // 200 *1.6 if( extra <50) return notify_fail("『天雷一击』至少需要50级的天雷破!\n"); if( extra < 200 || me->query("class")!= "yinshi") { me->add_temp("apply/attack", extra); me->add_temp("apply/damage", extra); msg = HIR"\n$N"+HIR"力灌鞭梢,手中的"+weapon->query("name")+ HIR""叭"的一声,象条毒龙般向$n"NOR+HIR"钻去!\n" NOR; message_vision(msg,me,target); COMBAT_D->do_attack(me,target, TYPE_PERFORM,""); me->add_temp("apply/attack", -extra); me->add_temp("apply/damage", -extra); me->perform_busy(2); } else { me->add_temp("apply/attack", extra); me->add_temp("apply/damage", extra); msg = HIR"\n$N"+HIR"力灌鞭梢,手中的"+weapon->query("name")+ HIR""叭"的一声,象条毒龙般向$n"NOR+HIR"钻去!\n" NOR; message_vision(msg,me,target); COMBAT_D->do_attack(me,target, TYPE_PERFORM,""); msg = HIR"\n$N"+HIR"急运真气,大喝一声,手中的"+weapon->query("name")+ HIR"夹着惊雷之势向$n"NOR+HIR"反卷而去!\n" NOR; message_vision(msg,me,target); COMBAT_D->do_attack(me,target, TYPE_PERFORM,""); me->add_temp("apply/attack", -extra); me->add_temp("apply/damage", -extra); busy = 2; super = me->query_skill("flying-dragon",1); if (super >=100) { super = (super-100)/10; if (random(100)<super && me->query_temp("yl9x_times") < 2 ) { me->add_temp("yl9x_times",1); message_vision(WHT"$N一口真气吐出,身法竟然丝毫不显迟滞。\n"NOR, me); busy = 0; } else { me->set_temp("yl9x_times",0); } } me->perform_busy(busy); } return 1; }
int cast(object me, object target) { string msg; int success, ap, dp; if( (string)me->query("class") != "yaomo" ) return notify_fail("只有妖魔才能施展天魔解体大法。\n"); if( !target ) target = offensive_target(me); if( !target || !target->is_character() || target->is_corpse() || target==me) return notify_fail("你要对谁施展天魔解体大法?\n"); if((int)me->query("mana") < 100 || (int)me->query("max_mana") < 100 ) return notify_fail("你的法力不够,不能有效施展天魔解体大法!\n"); if((int)me->query("force") < 50 || (int)me->query("max_force") < 50 ) return notify_fail("你的内力不够,不能有效施展天魔解体大法!\n"); if((int)me->query("sen") < 100 || (int)me->query("sen") < (int)me->query("max_sen")/2 ) return notify_fail("你无法集中精力施展天魔解体大法!\n"); if( (int)me->query("combat_exp") < (int)target->query("combat_exp")/10 ) return notify_fail("对方比你强太多了,还是别送死吧!\n"); //here, we do not allow that a too weak player trys this on //a much stronger player. this is to prevent statistically possible //but unreasonable results from happenning. if( random(me->query("max_mana")) < 50 ) { write("你失败了!\n"); return 1; } msg = HIC "$N口中念了几句咒文,双手捧住脑袋,仰天发出一声悲嘶!\n\n忽然间$N将自己舌头狠命一咬,一道血雾向$n喷了过去!\n" NOR; success = 1; ap = me->query_skill("spells"); ap = ap * ap * ap /10 ; ap += (int)me->query("combat_exp"); ap = 4*ap; //this is for 拼命 so easier. dp = target->query("combat_exp"); if( random(ap + dp) < dp ) success = 0; //here we compared exp and spells level. //note: has nothing to do with target's spells level. ap = (int)me->query("max_mana"); dp = (int)target->query("max_mana"); if( ap < random(dp) ) success = 0; //here we compared max_mana. //if the attacher has half of the max_mana of the target, //he has 50% chance to kill his target, which is reasonable. if(success == 1 ){//now both die. msg += HIR "结果$n被血雾罩住,顿时发出一声惨叫!\n而$N也身子一瘫,倒在地上。\n" NOR; message_vision(msg, me, target); target->kill_ob(me); me->kill_ob(target); //to produce killing messages. me->add("max_mana", -100); me->add("max_force", -50); me->save(); //successed, attacker lost 100 max_fali and 50 max_neili. target->receive_wound("sen", (int)target->query("max_sen")+1, me); target->receive_wound("kee", (int)target->query("max_kee")+1, me); COMBAT_D->report_status(target); //target die here. me->receive_wound("sen", (int)me->query("max_sen")+1, target); me->receive_wound("kee", (int)me->query("max_kee")+1, target); COMBAT_D->report_status(me); //attacker die here. } else { msg += HIR "结果血雾被$n法力反激,反而罩住了$N!\n$N长叹一声,身子一瘫,倒在地上。\n" NOR; message_vision(msg, me, target); target->kill_ob(me); me->kill_ob(target); //to produce killing messages. me->add("max_mana", -50); me->add("max_force", -25); me->save(); //failed, attacker lost 50 max_fali and 25 max_neili. me->receive_wound("sen", (int)me->query("max_sen")+1, target); me->receive_wound("kee", (int)me->query("max_kee")+1, target); COMBAT_D->report_status(me); //attacker die here. } return 3+random(5); }
int main(object me, string arg) { string msg, enemy, ob1, ob2, ob3, ob4, ob5, ob6; string myname=me->query("name"); object en, obj1, obj2, obj3, obj4, obj5, obj6, *obs; int i, j, power; if( environment(me)->query("no_fight") ) return notify_fail("这里不准战斗。\n"); if( !arg ) { return notify_fail("启动天罡北斗阵必须指定组阵阵友和对手。\n"); } if(sscanf(arg, "%s %s %s %s %s %s %s",enemy,ob1,ob2,ob3,ob4,ob5,ob6)!=7) { return notify_fail("指令格式:qixing 敌手 阵友1 阵友2 阵友3 阵友4 阵友5 阵友6\n"); } if(!objectp( en= present(enemy, environment(me)))) return notify_fail("没有敌人啊?\n"); if(!en->is_character() ) return notify_fail("看清楚一点,那并不是生物。\n"); if( en->is_fighting() ) return notify_fail("人家已经在战斗中了,还想布阵?\n"); if( !living(en) || en->query_temp("noliving") ) return notify_fail(en->name()+"都已倒地了,还用得着围攻吗?\n"); if((int)en->query("age") <= 15 && userp(en)) return notify_fail("为了世界更美好,放过小孩子吧。\n"); if(en==me) return notify_fail("干掉自己?别这么想不开。\n"); if(!objectp( obj1 = present(ob1, environment(me)))) return notify_fail("你好象阵友没指定对吧?\n"); if(!objectp( obj2 = present(ob2, environment(me)))) return notify_fail("你好象阵友没指定对吧?\n"); if(!objectp( obj3 = present(ob3, environment(me)))) return notify_fail("你好象阵友没指定对吧?\n"); if(!objectp( obj4 = present(ob4, environment(me)))) return notify_fail("你好象阵友没指定对吧?\n"); if(!objectp( obj5 = present(ob5, environment(me)))) return notify_fail("你好象阵友没指定对吧?\n"); if(!objectp( obj6 = present(ob6, environment(me)))) return notify_fail("你好象阵友没指定对吧?\n"); if(en==obj1 || en==obj2 || en==obj3 || en==obj4 || en==obj5 || en==obj6 || en==me || obj1==obj2 || obj1==obj3 || obj1==obj4 || obj1==obj5 || obj1==obj6 || obj1==me || obj2==obj3 || obj2==obj4 || obj2==obj5 || obj2==obj6 || obj2==me || obj3==obj4 || obj3==obj5 || obj3==obj6 || obj3==me || obj4==obj5 || obj4==obj6 || obj4==me || obj5==obj6 || obj5==me || obj6==me) return notify_fail("阵列摆设不对。\n"); me->dismiss_team(); me->set_leader(); me->add_team_member(obj1); me->add_team_member(obj2); me->add_team_member(obj3); me->add_team_member(obj4); me->add_team_member(obj5); me->add_team_member(obj6); if(pointerp(obs=me->query_team()) ) { for(i=0;i<sizeof(obs);i++) { if(!obs[i]->is_character() ) return notify_fail(obs[i]->query("name")+"不是生物。\n"); if( obs[i]->is_fighting() ) return notify_fail(obs[i]->query("name")+"已在战斗中了。\n"); if( !living(obs[i]) || obs[i]->query_temp("noliving") ) return notify_fail(obs[i]->name()+"已倒在地上了,无法追随你。\n"); if((int)obs[i]->query("age") <= 15 && userp(obs[i])) return notify_fail(obs[i]->query("name")+"人家还小,放弃吧。\n"); if((int)obs[i]->query_skill("array",1) <= 50 || (int)obs[i]->query_skill("xiantian-qigong",1) <= 50 || (int)obs[i]->query_skill("quanzhen-jian",1) <= 50) return notify_fail(obs[i]->query("name")+"的技能不足布阵。\n"); } if(sizeof(obs) != 7) return notify_fail("布阵人数不足。\n"); } for(i=0;i<sizeof(obs);i++) { if(obs[i] != me) message_vision(myname+ "道:"+obs[i]->query("name")+"请做好准备!\n",me); } message_vision(myname+ "清了清喉咙,大声说道:好,时辰已到,现在开始启动「天罡北斗阵」!\n",me); message_vision(myname+ "突然身形移动,发动众全真弟子抢占位置,左边四人,右边三人,正是摆的「天罡北斗阵」阵法。\n",me); remove_call_out("do_qixing"); call_out("do_qixing", 1, me, en); return 1; }
int perform(object me, object target) { object weapon; string wn, msg; object sroom, room; int ap, dp, damage; if (userp(me) && ! me->query("can_perform/lunhui-jian/hui")) return notify_fail("你所使用的外功中没有这种功能。\n"); if (! target) target = offensive_target(me); if (! target || ! me->is_fighting(target)) return notify_fail(HUI "只能对战斗中的对手使用。\n"); if (! objectp(weapon = me->query_temp("weapon")) || (string)weapon->query("skill_type") != "sword") return notify_fail("你使用的武器不对,难以施展" HUI "。\n"); if ((int)me->query_skill("force") < 750) return notify_fail("你的内功修为不够,难以施展" HUI "。\n"); if ((int)me->query("max_neili") < 10000) return notify_fail("你的内力修为不够,难以施展" HUI "。\n"); if ((int)me->query_skill("buddhism", 1) < 500) return notify_fail("你对禅宗心法参悟不够,难以施展" HUI "。\n"); if ((int)me->query_skill("lunhui-jian", 1) < 500) return notify_fail("你释迦轮回剑火候不够,难以施展" HUI "。\n"); if (me->query_skill_mapped("sword") != "lunhui-jian") return notify_fail("你没有激发释迦轮回剑,难以施展" HUI "。\n"); if ((int)me->query("neili") < 1000) return notify_fail("你现在真气不够,难以施展" HUI "。\n"); if (! living(target)) return notify_fail("对方都已经这样了,用不着这么费力吧?\n"); wn = weapon->name(); message_combatd(HIW "$N" HIW "面露拈花之意,祭起手中" + wn + HIW ",霎时碧波流转,华光万丈,说不尽的祥和。" "\n" NOR, me, target); // 记录下最初的房间 if (! objectp(sroom = environment(me))) return 1; ap = me->query_skill("sword") + me->query_skill("buddhism", 1); dp = target->query_skill("parry") + target->query_skill("buddhism", 1); damage = ap + random(ap); // 六道轮回之人间道 room = find_object("/d/special/liudaolunhui/rendao"); if (! room) room = load_object("/d/special/liudaolunhui/rendao"); me->move(room); target->move(room); message_vision(HIY "\n$N" HIY "左手轻轻一拨,右手所持的" + wn + HIY "叮呤做响,剑姿说不出的潇洒妙曼。\n" NOR, me, target); if (ap / 2 + random(ap) > dp) { msg = COMBAT_D->do_damage(me, target, WEAPON_ATTACK, damage, 300, (: attack1, me, target, damage :)); } else
int valid_leave(object me, string dir) { int dam_gin,dam_sen,dam_kee; dam_gin = me->query("max_gin")/6; dam_sen = me->query("max_sen")/6; dam_kee = me->query("max_kee")/6; if( userp(me) && dir == "up" ) { if ( me->query_skill("dodge",1) < 100 ) { if ((int)me->query("kee") <= 50) { message_vision("山冰如镜,狂风似刀,惊魂未定之间,$N但觉脚下一空,摔了下来......\n\n",me); me->unconcious(); } else { me->start_busy(5); me->receive_damage("kee",50); me->set_temp("last_damage_from","在喜马拉亚峰失足落下,尸骨无存。\n"); message_vision("山冰如镜,狂风似刀,$N只觉脚下无根,立足不稳......\n\n",me); } return notify_fail("\n"); } else { switch ( random(18) ) { case 1: if ((int)me->query("gin") < dam_gin || (int)me->query("kee") < dam_kee || (int)me->query("sen") < dam_sen) { message_vision(HIW"$N突然觉得脚下流冰浮动,四处哗哗作响,脚底一滑,竟已仰天摔了下去。\n"NOR,me); me->unconcious(); } else { me->receive_damage("gin", dam_gin); me->receive_damage("kee", dam_kee); me->receive_damage("sen", dam_sen); me->set_temp("last_damage_from","在喜马拉亚峰失足落下,尸骨无存。\n"); message_vision(HIW"$N突然觉得脚底一滑,竟仰天摔了一跤。\n"NOR,me); } return notify_fail("\n"); break; case 2: message_vision(HIW"骤然之间,无数巨大的冰柱冰岩,在狂风中呼啸,炸裂,铺天盖地向$N头顶上砸来。。。\n\n"NOR,me); if ( random(2) ) { message_vision(HIW"一块巨大无匹的冰石从天而降,砸向$N的额角,“轰。。。”\n"NOR,me); me->unconcious(); } else { message_vision(HIW"$N全身紧贴在岩石下,紧紧抓着凸出来的冰笋,终于躲过冰块,却不由得惊出一身冷汗!\n\n"NOR,me); } return notify_fail("\n"); break; case 3: message_vision(HIW"募地“轰隆”一声巨响,山摇地晃,闷雷阵阵,山崩了!\n\n"NOR,me); me->unconcious(); return notify_fail("\n"); break; case 4: message_vision(HIW"远处隐隐传来轰轰巨响,响声愈来愈近,愈来愈猛,转瞬之间竟\n然是一个愈来愈大的雪球从山上滚下!\n\n"NOR,me); message_vision(HIW"\n$N躲避不及,被大雪球紧紧的压在下边!\n\n"NOR,me); if( me->query_kar()<12 ) { message_vision(HIW"$N浑身被压在冰块之中,血液都已被冻僵,眼前只是白芒芒的一片....\n\n"NOR,me); me->set_temp("last_damage_from","在喜马拉亚峰遭遇雪崩,尸骨无存。\n"); me->die(); } else if ( me->query_kar()<16) { message_vision(HIW"$N气若游丝,渐渐奈不住稀薄的空气,神智逐渐模糊起来....\n\n"NOR,me); me->unconcious(); } else { message_vision(HIW"$N咬紧牙关,用尽全力往雪堆外挤,一寸,两寸......\n终于$N从雪堆里摇摇晃晃爬了出来......\n\n"NOR,me); me->start_busy(3); } return notify_fail("\n"); break; } } } return 1; }
void do_fkill(object me,object target) { object env, weapon; object *inv; int i, bel; if(!me || !target) return ; bel=(int)me->query("bellicosity"); // 由于现在能赌杀气又杀手赌杀气输还能用 cmd bc 所以 // 杀手杀气都能赌无限且只要杀气超过10万以上都有必杀 // 能力故设限 By Swy if( bel > 30000 ) bel=30000; if( me->is_fighting(target) ) { if ( bel < 20 ) { tell_object(me,HIY"你的杀气不够喔!\n"NOR); return 0; } if ( me->query("force") < 20 ) { tell_object(me,HIY"你的内力不够喔!\n"NOR); return 0; } if ( me->is_busy() ) { tell_object(me,HIY"你的还没有准备好做下一波的刺杀。\n"NOR); return 0; } if(target !=me ) { message_vision(HIM+"\n$N拿匕首,见人就刺。\n"+NOR,me,target); if ( random(10) > 2 ) { switch(random(3)) { case 0: message_vision(HIW+"$N对着$n疯狂的大叫~杀杀杀~,连续往$n身上乱刺去。\n"+NOR,me,target); target->receive_wound("kee", bel/25 ); me->add("force",-20); break; case 1: message_vision(HIW+"$N大喝一声~杀ㄚ~对$n快速冲过去,胡乱地对$n刺了几下。\n"+NOR,me,target); target->receive_wound("kee", bel/20 ); me->add("force",-20); break; case 2: message_vision(HIW+"$N眼露凶光,猛地对准$n直戳过去,口中还~哈哈~大笑着。\n"+NOR,me,target); target->receive_wound("kee", bel/15 ); me->add("force",-20); break; } COMBAT_D->report_status(target); me->start_busy(random(3)); } else { message_vision(HIW+"\n$n侧身一躲,$N的刺杀被$n闪过了。\n"+NOR,me,target); me->add("force",-20); inv = all_inventory(environment(target)); for(i=0;i<sizeof(inv);i++) { if(inv[i]->is_character() && inv[i]!=target && inv[i]!= me && !inv[i]->is_corpse() && inv[i]->query("id")!=me->query("sub_id") && inv[i]->query("sub_id")!=me->query("id") ) { if(random(2)==0) { target = inv[i]; message_vision(HIC+"$N刺中了在旁边观看热闹的的$n。\n"+NOR,me,target); message_vision(HIC+"$n告诉$N说道: 可恶! 竟敢打我,我要你出代价。\n"+NOR,me,target); target->receive_wound("kee", bel/25 ); target->fight_ob(me); } } } } } } if(!target) return ; if ( (int)target->query("kee") < 0 ) target->die(); }
void do_kill(object me,object target) { object env, weapon; object *inv; int i; if(!me || !target) return ; if( !me->is_fighting() && target->query("kee") > 0 ) { if( !me->query_temp("invis") ) { tell_object(me,HIY"你没藏匿起来,会被发现的。\n"NOR); return 0; } if (me->query("max_sen")!=me->query("sen") ) { tell_object(me,HIY"你没有足够的神,去做再一次的刺杀。\n"NOR); return 0; } if(target !=me ) { message_vision(HIC+"$N偷偷摸摸地走到$n背后。\n"+NOR,me,target); if(random(10) > 2) { switch(random(3)) { case 0: message_vision(HIW+"\n$N以极快的速度,瞄准$n用力一刺,使$n受到极大的伤害。\n"+NOR,me,target); target->receive_wound("kee", (int)target->query("max_kee")*20/100); break; case 1: message_vision(HIW+"\n$N对着$n的背部狠狠一捅,使$n血流不止。\n"+NOR,me,target); target->receive_wound("kee", (int)target->query("max_kee")*15/100); break; case 2: message_vision(HIW+"\n$N无声无息的以暗器手法,把匕首往$n身上一扔,使$n受到极大的打击。\n"+NOR,me,target); target->receive_wound("kee", (int)target->query("max_kee")*25/100); break; } message_vision(HIR+"\n$n见身上插着$N的匕首,忿怒地想杀死$N。\n"+NOR,me,target); // 双手武器 以副为先 if (weapon=me->query_temp("secondary_weapon")) { weapon=me->query_temp("secondary_weapon"); } else { weapon=me->query_temp("weapon"); } weapon->unequip(); weapon->move(target); //改变名字 if ( weapon->query("BAK")!="USED" ) { weapon->set("name","染血的"+weapon->name()+""); } //每用一次 武器就变坏 if ( weapon->query("weapon_prop/damage") >= 3 ) { weapon->add("weapon_prop/damage", -3 ); } else { weapon->set("value", 0 ); weapon->set("no_sell",1); weapon->set("weapon_prop", 0); } weapon->set("BAK","USED"); me->reset_action(); me->kill_ob(target); target->kill_ob(me); me->delete_temp("invis"); me->receive_damage("sen", (int)me->query("sen")/10 ); target->apply_condition("bleeding",random(10)+1); } else { message_vision(HIW+"\n$n突然发现了$N的存在,使$N找不到下手的机会。\n"+NOR,me,target); me->add("sen",-10); me->delete_temp("invis"); } } } }
int perform(object me, object target) { int ap,dp,damage,chance; string msg; object weapon; if( !target ) target = offensive_target(me); if( !target || !target->is_character() || target->is_corpse() || target==me) return notify_fail("你要对谁施展「断水无痕」?\n"); if(!me->is_fighting()) return notify_fail("「断水无痕」只能在战斗中使用!\n"); if(me->query("family/family_name")!="蜀山剑派") return notify_fail("不是蜀山的不能用「断水无痕」!\n"); if(me->query("shushan/duanshui_master")!=1) return notify_fail("你还没领会「断水无痕」!\n"); if((int)me->query("max_force") < 500 ) return notify_fail("你的内力不够!\n"); if((int)me->query("force") < 500 ) return notify_fail("你的内力不足!\n"); if((int)me->query("sen") < 300 ) return notify_fail("你的精神不足,没法子施用外功!\n"); if((int)me->query_skill("shushan-jianfa", 1) < 100) return notify_fail("你的蜀山剑法修为还不够,使用这一招会有困难!\n"); msg = CYN"\n$N手腕晃动如疾风,以砍断三千尺飞流的速度,直逼$n!\n"NOR; ap = me->query_skill("sword"); ap = ap*ap*ap / 20; dp = target->query("combat_exp"); chance = (int)(random( ap + dp ) / dp * 100); if (target->is_busy()) chance *= 3; if( chance > 40 ) { damage = me->query_skill("sword") * 2 + me->query("force_factor"); if (damage > 800) damage = 750+random(75); target->receive_damage("kee",damage); target->receive_wound("kee",damage/3); target->start_busy(random(1)+1); msg += CYN"结果$n被$N的「断水无痕」拦腰而过!\n"NOR; } else msg += "但是被$n躲开了。\n"NOR; message_vision(msg, me, target); if( damage > 0 ) COMBAT_D->report_status(target); if( !target->is_fighting(me) ) { if( living(target) ) { if( userp(target) ) target->fight_ob(me); else target->kill_ob(me); } } me->add("force",-200-me->query("force_factor")); me->start_busy(3); return 1; }
int exert(object me, object target) { int sp, dp; if ( target == me ) target = offensive_target(me); if( !objectp(target) || target->query("id") == "mu ren" ) return notify_fail("你要吸取谁的真气?\n"); if ( me->query_temp("sucked") ) return notify_fail("你刚刚吸取过真气!\n"); if( objectp(me->query_temp("weapon")) ) return notify_fail("你必须空手才能施用化功大法吸人真气!\n"); // if( !me->is_fighting() || !target->is_fighting()) if( (int)me->query_skill("huagong-dafa",1) < 30 ) return notify_fail("你的化功大法功力不够,不能吸取对方的真气。\n"); if( (int)me->query("neili",1) < 10 ) return notify_fail("你的内力不够,不能使用化功大法。\n"); if( (int)target->query("qi") < 30 ) return notify_fail( target->name() + "已经真气涣散,你已经无法从他体内吸取真气了!\n"); message_vision( HIR "$N突然诡异的一笑,双手一扬,拇指对准$n的掌心按了过来!\n\n" NOR, me, target ); if ( living(target) ) { if( !target->is_killing(me) ) target->kill_ob(me); } sp = me->query_skill("force") + me->query_skill("dodge") + me->query_skill("zhaixinggong",1)/2; dp = target->query_skill("force") + target->query_skill("dodge"); me->set_temp("sucked", 1); if (( random(sp) > random(dp) ) || !living(target) ) { tell_object(target, HIR "你突然觉得全身真气自手掌奔涌而出,四肢无力,再也使不出劲来!\n" NOR); tell_object(me, HIG "你觉得" + target->name() + "的真气自手掌源源不绝地流了进来。\n" NOR); target->receive_damage("qi", (int)me->query_skill("huagong-dafa", 1) ); me->add("qi", (int)me->query_skill("huagong-dafa", 1) ); me->add("eff_qi", (int)(me->query_skill("huagong-dafa", 1)*2/3) ); if ( me->query("eff_qi") > me->query("max_qi") ) me->set("eff_qi", me->query("max_qi")); if( target->query("combat_exp") >= me->query("combat_exp") ) me->add("combat_exp",1); me->start_busy(2); target->start_busy(random(2)); me->add("neili", -5); call_out("del_sucked", 2, me); } else { message_vision(HIY "可是$p看破了$P的企图,机灵地闪了开去。\n" NOR, me, target); me->start_busy(2); call_out("del_sucked", 4, me); } return 1; }
void attempt_apprentice(object me) { message_vision(CYN"$N冷冷地看了$n一眼,一语不发。\n"NOR, this_object(), me); return; }
int accept_object(object who, object ob) { message_vision("$N对$n怪叫一声:在阳间做亏心事了吧!\n",this_object(),who); return 1; }
int main(object me, string arg) { object ob, old_rec; mapping family; int i; if( !arg ) return notify_fail("指令格式:recruit [cancel]|<对象>\n"); if( arg=="cancel" ) { old_rec = me->query_temp("pending/recruit"); if( !objectp(old_rec) ) return notify_fail("你现在并没有收录任何人为弟子的意思。\n"); write("你改变主意不想收" + old_rec->name() + "为弟子了。\n"); tell_object(old_rec, me->name() + "改变主意不想收你为弟子了。\n"); me->delete_temp("pending/recruit"); return 1; } if( !(ob = present(arg, environment(me))) ) return notify_fail("你想收谁作弟子?\n"); if( ob==me ) return notify_fail("收自己为弟子?好主意...不过没有用。\n"); if( ob->is_apprentice_of(me) ) { message_vision("$N拍拍$n的头,说道:「好徒儿!」\n", me, ob); return 1; } if( !me->query("family") ) return notify_fail("你并不属于任何门派,你必须先加入一个门派,或自己创一个才能收徒。\n"); if (!me->query("family/generation")) return notify_fail("你乃弃徒,先求哪一位本门师父将你重列门墙再说吧。\n"); if ( (ob->query("family")) && (me->query("family/family_name") != ob->query("family/family_name")) ) return notify_fail(ob->name()+"乃"+ob->query("family/family_name") +"弟子,未经其师尊同意就挖人家墙角不太好吧。\n\n"); if (me->query("family/master_id") == ob->query("id")) return notify_fail("开什么玩笑?人家是你师父,还有什么要从你这里学的?\n"); if ( userp(me) && userp(ob) && (wizardp(me) != wizardp(ob)) ) return notify_fail("巫师玩家之间不能有师徒关系。\n"); /* if( ob->query("family")){ if ((int)me->query("family/generation") >= (int)ob->query("family/generation")) return notify_fail("你只能收辈份比你低的同门派弟子为徒。\n"); } */ // If the target is willing to apprentice us already, we do it. if( (object)ob->query_temp("pending/apprentice") == me ) { if( !living(ob) ) { message_vision( "$N决定收$n为弟子。\n\n" "不过看样子$n显然没有办法行拜师之礼。\n\n", me, ob); return 1; } // follow modified by elon 09-10-95 to fix a bug in 1st time recruit if((ob->query("family")) && ( (string)me->query("family/family_name") != (string)ob->query("family/family_name") ) ) { message_vision( "$N决定投入$n门下!!\n\n" "$N跪了下来向$n恭恭敬敬地磕了四个响头,叫道:「师父!」\n\n", ob, me); ob->set("score", 0); ob->add("betrayer", 1); } else message_vision( "$N决定收$n为弟子。\n\n" "$n跪了下来向$N恭恭敬敬地磕了四个响头,叫道:「师父!」\n", me, ob); me->recruit_apprentice(ob); ob->delete_temp("pending/apprentice"); write("恭喜你新收了一名弟子!\n"); family = ob->query("family"); tell_object( ob, sprintf("恭喜您成为%s的第%s代弟子。\n", family["family_name"], chinese_number(family["generation"]) )); return 1; } else { old_rec = me->query_temp("pending/recruit"); if( ob==old_rec ) return notify_fail("你想收" + ob->name() + "为弟子,但是对方还没有答应。\n"); else if( objectp(old_rec) ) { write("你改变主意不想收" + old_rec->name() + "为弟子了。\n"); tell_object(old_rec, me->name() + "改变主意不想收你为弟子了。\n"); } me->set_temp("pending/recruit", ob ); message_vision("\n$N想要收$n为弟子。\n", me, ob); tell_object(ob, YEL "如果你愿意拜" + me->name() + "为师父,用 apprentice 指令。\n" NOR); return 1; } }
int main(object me, string arg) { object ob, old_app; mapping family, skills; int i; string *skname; if( !arg ) return notify_fail("指令格式:apprentice [cancel]|<对象>\n"); if( arg=="cancel" ) { old_app = me->query_temp("pending/apprentice"); if( !objectp(old_app) ) return notify_fail("你现在并没有拜任何人为师的意思。\n"); write("你改变主意不想拜" + old_app->name() + "为师了。\n"); tell_object(old_app, me->name() + "改变主意不想拜你为师了。\n"); me->delete_temp("pending/apprentice"); return 1; } if( !(ob = present(arg, environment(me))) || !ob->is_character() ) return notify_fail("你想拜谁为师?\n"); if( !living(ob) ) return notify_fail("你必须先把" + ob->name() + "弄醒。\n"); if( ob==me ) return notify_fail("拜自己为师?好主意...不过没有用。\n"); if( me->is_apprentice_of(ob) ) { message_vision("$N恭恭敬敬地向$n磕头请安,叫道:「师父!」\n", me, ob); return 1; } if( !mapp( ob->query("family") ) ) return notify_fail(ob->name() + "既不属于任何门派,也没有开山立派,不能拜师。\n"); if ( (me->query("family")) && (me->query("family/family_name") != ob->query("family/family_name")) ) return notify_fail(ob->name()+"是"+ob->query("family/family_name")+"师傅,未经本派师门同意不能改换门派!\n\n"); if (ob->query("family/master_id") == me->query("id")) return notify_fail("开什么玩笑?拜自己的徒弟为师?\n"); if ( userp(me) && userp(ob) && (wizardp(me) != wizardp(ob)) ) return notify_fail("巫师玩家之间不能有师徒关系。\n"); /* if( me->query("family") ){ if((int)ob->query("family/generation") >= (int)me->query("family/generation") ) return notify_fail("你只能拜比自己辈份高的人为师。\n"); } */ // If the target is willing to recruit us already, we do it. if( (object)ob->query_temp("pending/recruit") == me ) { if( (string)me->query("family/family_name") != (string)ob->query("family/family_name") ) { message_vision( "$N决定投入$n门下!!\n\n" "$N跪了下来向$n恭恭敬敬地磕了四个响头,叫道:「师父!」\n\n", me, ob); me->set("score", 0); me->add("betrayer", 1); } else message_vision( "$N决定拜$n为师。\n\n" "$N跪了下来向$n恭恭敬敬地磕了四个响头,叫道:「师父!」\n\n", me, ob); ob->recruit_apprentice(me); ob->delete_temp("pending/recruit"); tell_object(ob, "恭喜你新收了一名弟子!\n"); family = me->query("family"); printf("恭喜您成为%s的第%s代弟子。\n", me->query("family/family_name"), chinese_number( me->query("family/generation"))); return 1; } else { old_app = me->query_temp("pending/apprentice"); if( ob==old_app ) return notify_fail("你想拜" + ob->name() + "为师,但是对方还没有答应。\n"); else if( objectp(old_app) ) { write("你改变主意不想拜" + old_app->name() + "为师了。\n"); tell_object(old_app, me->name() + "改变主意不想拜你为师了。\n"); } message_vision("$N想要拜$n为师。\n", me, ob); me->set_temp("pending/apprentice", ob ); if( userp(ob) ) { tell_object(ob, YEL "如果你愿意收" + me->name() + "为弟子,用 recruit 指令。\n" NOR); } else ob->attempt_apprentice(me); return 1; } }
int fliping(object me) { me->move(__DIR__"west_garden.c"); message_vision("$N用手一撑墙头儿,轻巧的跳了过来。\n", me); return 1; }
int cast(object me, object target) { string msg; int ap, dp, dg, damage; if (!target) target = offensive_target(me); if (!target || !target->is_character() || target->is_corpse() || target==me) return notify_fail("你要对谁用扭转乾坤?\n"); if (!me->query("cast_juanbi")) return notify_fail("「扭转乾坤」是白象小王的绝活,没有他的亲传谁也用不了!\n"); if (!target->is_fighting(me)) return notify_fail("只有在战斗中才能使用扭转乾坤!\n"); if ((int)me->query("kee") < 100) return notify_fail("你体力不足,用不了扭转乾坤!\n"); if ((int)me->query("force") < 100) return notify_fail("你须运足内力才能使用扭转乾坤!\n"); if ((int)me->query_skill("dengxian-dafa", 1) < 40) return notify_fail("你的登仙大法还不够纯熟。\n"); if ((int)me->query("mana") < 300) return notify_fail("你的法力不足以变作神象伤敌!\n"); if (me->query("cast_juanbi") > 0) msg = HIW"\n$N趁$n不备,怒吼一声,转瞬间化作一只黄牙老象," +"伸出蛟龙般的鼻子向$n卷去!\n" NOR; else // cast_juanbi == -1, it's baixiang-xiaow himself msg = HIW"\n$N趁$n不备,怒吼一声,现出白色巨象的原形," +"伸出蛟龙般的鼻子向$n卷去!\n" NOR; ap = (int)me->query_skill("spells"); dp = target->query_skill("spells"); dg = target->query_skill("dodge"); if (dp!=0) dp=100*ap/dp/3+random(100*ap/dp)/2; else dp=100; if (dg!=0) dg=100*ap/dg/3+random(100*ap/dg)/2; else dg=100; damage = me->query("max_mana")/20+1; damage = (me->query("mana_factor")+me->query("str")+random(damage))*2; if (dp < 30) { msg += HIW"不料$n早有准备,扭转身形轻舒猿臂一把抓住了$N的鼻子!\n" +"$N疼得一声闷哼,身不由己的被$n拖了过去!\n"NOR; message_vision(msg, me, target); me->add("kee", me->query("str") * 2); me->start_busy(30-dp+random(10)); } else if (dp<60 && dp>30) { msg += HIW"$n连忙扭转身形运转神功将$N的长鼻荡开。\n"NOR; message_vision(msg, me, target); me->start_busy(1+random(2)); } else if (dg<50) { msg += HIW"$n纵身向后一跃,闪过了这一击。\n"NOR; message_vision(msg, me, target); me->start_busy(1+random(2)); target->start_busy(random(3)); } else { msg += HIW"$n促不击防,被$N的长鼻高高卷起,$N用力一甩," +"$n如断了线的风筝般飞了出去!\n"NOR; message_vision(msg, me, target); target->receive_damage("kee",damage,me); me->start_busy(random(2)); target->start_busy(1+random(3)); COMBAT_D->report_status(target); } me->add("force", -30); me->add("mana", -30); target->kill_ob(me); return 1; }
int exert(object me, object target) { object obj, weapon; int ap, dp; seteuid(getuid()); if( userp(me) ) return notify_fail("it is only for npcs.\n"); if( me->is_busy() ) return notify_fail("you are busy now.\n"); if( !objectp(weapon = me->query_temp("weapon")) || (string)weapon->query("id") != "lubo" ) return notify_fail("��δִ����������������\n"); if( !objectp(obj = present("kulou guan", me)) || !obj->query("equipped") ) return notify_fail("��δ�����ùڣ�����������\n"); if( !objectp(obj = present("rentou lian", me)) || !obj->query("equipped") ) return notify_fail("��δ����ͷ��������������\n"); if( !living(target) ) return notify_fail("�����һ�㣬�Dz����ǻ��\n"); if( target->query("race") != "����" ) return notify_fail(target->query("name") + "������������\n"); if( (int)me->query("neili") < 300 ) return notify_fail("�������������\n"); if( (int)me->query_skill("necromancy", 1) < 30 ) return notify_fail("��Ľ���������������\n"); if( (int)me->query_skill("lamaism", 1) < 30 ) return notify_fail("��������ķ�����������\n"); if( (int)me->query_skill("longxiang-banruo", 1) < 30 ) return notify_fail("����������������������\n"); if( environment(me)->query("no_fight") ) return notify_fail("�����ﲻ�ܳ���\n"); if( target->query_temp("cursed", 1) || target->query_temp("block_msg/all", 1)) return notify_fail("�����ѱ�������\n"); if( (int)me->query_temp("curser") ) return notify_fail("�㽵������һ���ˣ�\n"); me->add("neili", -50); me->receive_damage("jingli", 50); message_vision( BLU "$Nҡͷ���ԣ����б��д�˷����������������䡣���������ٴ죬�����з����������ɡ�\n" NOR, me); tell_object(target, "�����������ȹ���������Դ���һ�����ң���ǰһ�ѹ�Ӱ��������������������֫��������Ȼ��˯��\n"); ap = (int)me->query("neili") + (int)me->query("max_neili") + (int)me->query_skill("necromancy", 1) * 10 + (int)me->query_skill("lamaism", 1) * 10; dp = (int)target->query_skill("force") * 10; ap *= (int)me->query("combat_exp")/1000 + 1; dp *= (int)target->query("combat_exp")/1000 + 1; if( random(ap + dp) > dp ) { tell_object(target, HIR"\n��ֻ������ǰ��һ����������Զȥ����Ļ�����Ҫ���ϣ������������ס�\n"NOR); target->start_busy(2 + random(2)); target->set_temp("cursed", 1); target->set_temp("yield", 1); // target->set_temp("block_msg/all", 1); me->set_temp("curser", 1); message_vision(HIR"\n$NͻȻ��ʼ���۷�ֱ������������ǰ����\n"NOR, target); remove_call_out("del_sung"); call_out("del_sung", 3 + random(3), me, target); } else{ me->start_busy(1 + random(3)); if( !target->is_killing(me->query("id")) ) target->kill_ob(me); } return 1; }
void start_zhuochan (object who, int i) { message_vision ("\n$N念道:"+msgs[i]+"\n",who); message_vision ("\n片刻,$N开始低首坐禅。\n",who); who->set_temp("obstacle/biqiu_zuochan",i+1); }
int perform(object me, object target) { string msg; int myexp,yourexp,lvl,extra, mod, x; if (userp(me)) if (me->query("class")!= "shaolin" && me->query("class")!="bonze") return notify_fail("『千手千变』是佛门武功。\n"); extra=me->query_skill("dabei-strike",1); if(extra<20) return notify_fail("『千手千变』需要20级的大慈大悲千叶式。\n"); if( !target ) target = offensive_target(me); if( !target || !target->is_character() || !me->is_fighting(target) ) return notify_fail("『千手千变』只能对战斗中的对手使用。\n"); if ((target->query("boss") || target->query("big_boss"))&& me->query("class")!="shaolin") return notify_fail(HIW"此人功力深湛,不会被此手法迷惑的。\n"NOR); mod = COMBAT_D->can_busy(me, target, "dabei-strike"); if (!mod) return notify_fail(HIW"此人功力深湛,不会被此手法迷惑的。\n"NOR); if(target->is_busy()) return notify_fail(target->name()+"已经手忙脚乱了!\n"); myexp = (int) me->query("combat_exp"); yourexp = (int) target->query("combat_exp")* mod/10; // (180/2+1.2x180) = 306/40+1 = 8 lvl = (int) me->query_skill("unarmed") / 40 + 1; // 兴国的BUSY效率不高 if (lvl > 5 && me->query("class")=="bonze") lvl = 5; msg = HBRED+HIW "$N"HIW"使出大悲千叶掌法中的『千手千变』,幻出无数掌影击向$n!" NOR; if (COMBAT_D->do_busy_attack(me, target, "dabei-strike", "unarmed", lvl* 100, mod)) { message_vision(msg + "\n", me, target); msg = YEL"结果$n被$N攻了个手忙脚乱!\n"NOR; message_vision(msg, me, target); target->force_busy(2); target->set_temp("busy_timer/dabei-strike",time()); me->perform_busy(1); } else { me->add_temp("apply/attack",extra/2); COMBAT_D->do_attack(me,target, TYPE_PERFORM,msg); me->add_temp("apply/attack",-extra/2); me->perform_busy(2); } // INherently, Every busy has 4*level hate, unarmed makes it 10x you/target level every 2 turn. if (target && !userp(target)){ x = me->query("combat_exp")> target->query("combat_exp") ? target->query("combat_exp"): me->query("combat_exp"); target->add_hate(me, F_LEVEL->get_level(x)*6); } return 1; }
int cast(object me, object target) { string msg; int damage, ap, dp; if (!target) target = offensive_target(me); if (!target || !target->is_character() || target->is_corpse() || target==me) return notify_fail(HIR "你要对谁使用黑雾?\n" NOR); if ((int)me->query_skill("necromancy", 1) < 30) return notify_fail("你的勾魂术火候不够,哪里用得出这招!\n"); if ((int)me->query("mana") < 40 + (int)me->query("mana_factor")) return notify_fail("你的法力不够!\n"); if ((int)me->query("force") < 200) return notify_fail("你的内力不够,无法喷出黑雾。\n"); if ((int)me->query("sen") < 40) return notify_fail("你现在神智不清,别把自己迷倒了!\n"); me->add("mana", -50-(int)me->query("mana_factor")); me->add("force", -150); me->receive_damage("sen", 50); if (random(me->query("max_mana")) < 150) { write("这一次好象不灵。\n"); return 1; } msg = HIG "$N突然腾空而起,口中高呼念念有词,张口喷出黑雾将$n团团围住!\n" NOR; ap = me->query_skill("spells"); ap = (ap * ap * ap / (4 * 400)) * (int)me->query("sen"); ap += (int)me->query("combat_exp"); dp = target->query("combat_exp"); if (random(ap + dp) > dp) { damage = (int)me->query("max_mana") / 10 + random((int)me->query("eff_sen") / 10); damage -= (int)target->query("max_mana") / 10 + random((int)me->query("eff_sen") / 5); damage += (int)me->query("mana_factor") - random((int)target->query("mana_factor")); //here we can see if 2 players are at same status, the attacker has higher chance. if (damage > 0) { //finally damage also depends on enabled spells level. damage += damage+random((damage*(int)me->query_skill("spells"))/240); msg += HIM "结果$n分不清东西了!\n" NOR; target->receive_damage("sen", damage, me); target->receive_wound("sen", damage*2, me); target->receive_damage("kee", damage*2, me); target->receive_wound("kee", damage*3, me); target->start_busy(1); me->improve_skill("necromancy", 1, 1); me->start_busy(2); } else { //here, cast failed and the target's mana_factor will be added to the previous //damage to hurt yourself:(...note, damage<0. msg += HIC "结果黑雾$n以法力一逼,反向$N回卷而去!\n" NOR; damage -= (int)target->query("mana_factor"); damage -= random((-damage*(int)target->query_skill("spells"))/100); me->receive_damage("sen", -damage, target); me->receive_wound("sen", -damage*2, target); me->receive_damage("kee", -damage, target); me->receive_wound("kee", -damage*3, target); // me->improve_skill("necromancy", 1, 1); } } else msg += "但是被$n躲开了。\n"; message_vision(msg, me, target); if (damage > 0) COMBAT_D->report_status(target); else if (damage < 0) COMBAT_D->report_status(me); //damage=0 corresponding to "但是被$n躲开了。\n"--no report. if (!target->is_fighting(me)) { if (living(target)) { if (userp(target)) target->fight_ob(me); else target->kill_ob(me); } me->kill_ob(target); } me->start_busy(1+random(2)); return 3+random(5); }
int perform(object me, object target) { object ob; string msg; int skill; if (! wizardp(me)) return notify_fail("目前这功能还不开放!\n"); if( !target ) target = offensive_target(me); if( !target || !target->is_character() || !me->is_fighting(target) ) return notify_fail("花开并蒂只能带动战斗中的对手。\n"); if( me->query_temp("yield") ) return notify_fail("你不出掌,怎么能出「花开并蒂」?\n"); if( objectp(ob = me->query_temp("double_huakai")) ) { if( ob->is_fighting(me) ) return notify_fail("你已经在出「花开并蒂」了。\n"); } if( (int)me->query_temp("huakai")) return notify_fail("你已经在出「花开并蒂」了。\n"); if( (int)me->query_skill("mian-zhang", 1) < 99) return notify_fail("你的绵掌不够纯熟,尚未能出此绝招。\n"); if( (int)me->query_skill("taiji-shengong", 1) < 79) return notify_fail("你的太极神功修为不够,不能出「花开并蒂」。\n"); if( (int)me->query("jiali") > 2 || (int)me->query("jiajin") > 2) return notify_fail("你发现加力后无法把绵掌中若有若无,借力打力的要决发挥出来。\n"); msg = HIM "\n$N深深吸了一口气,一招「花开并蒂」左手挥掌猛击$n的右颊,右手出指疾点$n的“缺盆穴”。\n"NOR; me->add("neili", -30 +random(-20)); me->add("jingli", -15 +random(-15)); if( random(me->query("combat_exp") * me->query_int() / 100) > (int)target->query("combat_exp") * target->query_int() / 300 ) { me->start_busy(2); me->set_temp("huakai", 1); call_out("huakai", 1, me, target); } else { msg += YEL"可是$p已看破此招,不慌不忙的避开了。\n"NOR; me->start_busy(1+random(3)); } message_vision(msg, me, target); return 1; }
int perform(object me, object target) { object armor; int damage; string *limb, type, result, str; type = "内伤"; if( !target ) target = offensive_target(me); if( !target || !target->is_character() || !me->is_fighting(target) ) return notify_fail("你不在战斗中。\n"); if ( objectp(me->query_temp("weapon")) ) return notify_fail("你不是空手。\n"); /* if( target->is_busy() ) return notify_fail(target->name() + "目前正自顾不暇,放胆攻击吧。\n"); */ if( (int)me->query_skill("huoyan-dao", 1) < 120 ) return notify_fail("你的火焰刀修为不够。\n"); if ( me->query_skill_mapped("force") != "xiaowuxiang" && me->query_skill_mapped("force") != "longxiang-banruo") return notify_fail("你所用内功不对!\n"); if( me->query("neili") <= 500 ) return notify_fail("你的内力不够!\n"); if( me->query("jingli") <= 150 ) return notify_fail("你的精力不够!\n"); message_vision(HIR "$N长吸一口气,身上衣衫缓缓涨起,两掌变得通红,射出一股灼人热气。$n的身影被笼罩在一团火焰之中。\n\n" NOR, me,target); //tell_object(target, BLU "你只觉一股热浪扑面,霍的胸口一阵剧痛。\n"NOR); me->add("neili", -100); me->add("jingli", -100); if( random(me->query("combat_exp")) > (int)target->query("combat_exp")/2){ if( target->query_temp("armor/cloth")){ armor = target->query_temp("armor/cloth"); if( armor->query("armor_prop/armor") < 150){ message_vision(HIY"只见$N身上的$n"+HIY+"已被震得粉碎,变成一块块破布掉在地上。\n"NOR, target, armor); armor->unequip(); armor->move(environment(target)); armor->set("name", "破碎的" + armor->query("name")); armor->set("value", 0); armor->set("armor_prop/armor", 0); target->reset_action(); } } damage = random((int)me->query_skill("strike"))*5; target->receive_damage("qi", damage, me); target->receive_wound("qi", (int)me->query_skill("huoyan-dao", 1), me); target->start_busy(1+random(3)); limb = target->query("limbs"); result = COMBAT_D->damage_msg(damage, type); result = replace_string( result, "$l", limb[random(sizeof(limb))]); result = replace_string( result, "$p", target->name() ); message_vision(result, me, target); str = COMBAT_D->status_msg((int)target->query("qi") * 100 /(int)target->query("max_qi")); message_vision("($N"+str+")\n", target); } else { message_vision(HIY "$p赶紧向後跃开数丈,躲开$P的攻击。\n" NOR, me, target); } me->start_busy(1+random(3)); return 1; }
void die() { message_vision("\n$N大怒道:“你敢砍老子!兄弟们会替我报仇的!”说完倒地死了。\n", this_object()); ::die(); }
int perform(object me, object target) { string msg; int level,extra,kee,i; if( !target ) target = offensive_target(me); if( !target || !target->is_character() || !me->is_fighting(target) ) return notify_fail("[棉里藏针]只能对战斗中的对手使用。\n"); level = (int)me->query_skill("unarmed"); extra = (int)me->query("wudang/level"); extra = (extra >=2000)? 2000:extra; if(!me->query("wudang/zhen")){ me->add_temp("apply/attack",extra/20); COMBAT_D->do_attack(me,target,TYPE_PERFORM, 0); me->add_temp("apply/attack",-extra/20); me->start_busy(1); if (me->query("wudang/level") < 3000){ me->add("wudang/level",1); if ((int)me->query("wudang/level")%100==0) tell_object(me, HIW "由於你勤习棉里藏针,你的熟练度提高了。\n" NOR); } else if (me->query("family/master_id") == "master shi"){ me->set("wudang/zhen",1); tell_object(me, HIW "由於你勤习棉里藏针,你悟出了新的变化!\n" NOR); me->set("wudang/level",0); } return 1; }else { if ( me->query_skill_mapped("force") != "taijiforce") return notify_fail("棉里藏针必须和太极心法配和!\n"); me->add_temp("apply/damage",level/10); me->add_temp("apply/attack",level/20); kee = target->query("kee"); msg = HIR "\n$N"+HIR"双手猛然一抖一拢,一股气劲向$n"+HIR"撞到!" NOR; COMBAT_D->do_attack(me,target,TYPE_PERFORM,msg); me->add_temp("apply/damage",- level/10); me->add_temp("apply/attack",- level/20); msg = HIW "气劲呼的一声,散开消失...\n" NOR; message_vision(msg, me, target); for (i=0; i< (int)level/50 ;i++){ if( (int)target->query("kee") < kee ) { if (level>300){ msg = HIY"$N"+HIY"一击命中,双手顺势向外一拨,引开了$n"+HIY"的守势!\n"NOR; message_vision(msg, me, target); target->start_busy(1); me->start_busy(1); call_out("nextattack",1,me,target); break; }else{ msg = HIY"$N"+HIY"一击命中,但$n"+HIY"立刻将自己护住!\n"NOR; message_vision(msg, me, target); me->start_busy(2); break; } }else { kee = target->query("kee"); msg = HIY"$N"+HIY"双手一翻一抖,一股气劲又向$n"+HIY"撞到!" NOR; me->add_temp("apply/damage",level/10); me->add_temp("apply/attack",level/20); COMBAT_D->do_attack(me,target,TYPE_PERFORM,msg); me->add_temp("apply/damage",- level/10); me->add_temp("apply/attack",- level/20); msg = HIW "气劲呼的一声,散开消失...\n" NOR; message_vision(msg, me, target); } } if (i == (int)level/50 ){ message_vision(HIY"$N"+HIY"一招"+chinese_number(i)+"式居然全部未中,立刻露出破绽。\n"NOR,me); me->start_busy(5); } return 1; } }
int perform(object me, object target) { object weapon; int speed, damage, hand; weapon = me->query_temp("weapon"); if( !target && me->is_fighting() ) target = offensive_target(me); if( !target || !target->is_character() || !me->is_fighting(target) ) return notify_fail("落英神剑掌和兰花拂穴手的搭配攻击只能对战斗中的对手使用。\n"); if( me->query("gender") != "女性") return notify_fail("你不是女儿身,跟这一招的优雅姿态有点格格不入。\n"); if( objectp(weapon)) return notify_fail("你必需先放下武器。\n"); if( me->query_temp("luoying_lanhua") ) return notify_fail("你已经使出了落英神剑掌和兰花拂穴手的搭配攻击!\n"); if( me->query_skill("lanhua-fuxue",1) < 90 ) return notify_fail("你的兰花拂穴手修为不足。\n"); if( me->query_skill("luoying-shenjian",1) < 90 ) return notify_fail("你的落英神剑掌修为不足。\n"); if( me->query_skill("bitao-xuangong", 1) < 100 ) return notify_fail("你的碧涛玄功修为不足,无法同时施展落英神剑掌和兰花拂穴手!\n"); if( me->query_skill_mapped("force") != "bitao-xuangong") return notify_fail("你必需先运使碧涛玄功!\n"); if( me->query_skill_mapped("strike") != "luoying-shenjian") return notify_fail("你所施展的掌法并非落英神剑掌,如何能与兰花拂穴手搭配?\n"); if( me->query("max_neili") <= 1000 ) return notify_fail("你的内力修为不足!\n"); if( me->query("neili") <= 400 ) return notify_fail("你的内力不够!\n"); if( me->query("jingli") <= 400 ) return notify_fail("你的精力不够!\n"); damage = (me->query_skill("lanhua-fuxue",1) + me->query_skill("luoying-shenjian",1))/6; hand = (me->query_skill("hand",1)+me->query_skill("strike",1) )/6; speed = (me->query_skill("hand",1)+me->query_skill("strike",1) )/200; me->add("neili", -80); me->add("jingli", -80); //命中率增加 me->add_temp("apply/speed", speed); me->add_temp("apply/attack", damage); me->add_temp("apply/damage", damage/2); me->set_temp("luoying_lanhua", 1); message_vision(HIY"\n$N突然变招,使出「落英神剑掌」来,掌影飘忽於四方八面,或五虚一实,或八虚一实,真如桃林中狂风忽起、万花齐落一般,妙在姿态飘逸,宛若翩翩起舞。\n"NOR, me,target); if(me->is_fighting(target) ){ COMBAT_D->do_attack(me, target, me->query_temp("weapon")); } message_vision(HIC"\n但见$N指化为掌,掌化为指,「落英神剑掌」与「兰花拂穴手」交互为用,当真是掌来时如落英缤纷,指拂处若春兰葳蕤,不但招招凌厉,而且丰姿端丽。\n"NOR, me,target); if(me->is_fighting(target) ){ COMBAT_D->do_attack(me, target, me->query_temp("weapon")); } me->set_temp("fuxue", 1); me->start_busy(1); call_out("checking", 1, me, weapon,speed,damage); return 1; }
int duo2(object me, object target){ int amount1, amount2; if( !target || !me->is_fighting(target) ) return; if( !living(me) || me->is_ghost() ) return; if( !target || environment(me) != environment(target) || !me->is_fighting() ) return; if((me->query("neili")<(me->query_skill("force",1)*15) || target->query("neili")<(target->query_skill("force",1)*15))){ if(me->query("neili")>target->query("neili")){ message_vision(HIG"\n$N运足了气力,猛地将"+me->query_temp("weapon")->query("name")+HIG"夺回,顺手就是一招,向$n击去。"NOR,me,target); me->add("jiali", me->query_skill("whip",1)); me->add_temp("apply/attack",me->query_skill("whip",1)); me->add_temp("apply/damage",me->query_skill("whip",1)); COMBAT_D->do_attack(me, target, me->query_temp("weapon")); //printf("\n"); me->add("jiali", -me->query_skill("whip",1)); me->add_temp("apply/attack",-me->query_skill("whip",1)); me->add_temp("apply/damage",-me->query_skill("whip",1)); target->start_busy(random(3)); } else { message_vision(HIG"\n$n运足了气力,猛地将$N手中的"+me->query_temp("weapon")->query("name")+HIG"拉得脱手而出,掉在了地上。\n"NOR,me,target); me->query_temp("weapon")->move(environment(me)); me->start_busy(2+random(3)); } } else { message_vision(WHT"\n只见$N和$n运足了内力用力回夺,两人的衣服在内力鼓荡下如遇骤风。\n"NOR, me, target); amount1=me->query_skill("force",1); amount2=target->query_skill("force",1); if(random(amount1)>random(amount2)){ message_vision(YEL"\n只见$n身子一晃,似乎有些支持不住。\n"NOR, me, target); target->add("neili",-amount1); } else { message_vision(YEL"\n只见$N身子一晃,似乎有些支持不住。\n"NOR, me, target); me->add("neili",-amount2); } me->add("neili", -50); target->add("neili", -50); me->start_busy(4); target->start_busy(4); remove_call_out("duo2"); call_out("duo2", 3, me, target); return 1; } remove_call_out("duo2"); return 1; }
void leave_room() { message_vision(HIW"仿佛在白雪红梅间渐渐融化了一个淡淡的影子,白衣如雪的身影消失在视野中。 \n"NOR,this_object()); destruct(this_object()); }