combatd.c
来自「C实现的MUD,对大家基本入门网络游戏很有帮助!」· C语言 代码 · 共 1,195 行 · 第 1/4 页
C
1,195 行
// combatd.c// modify by zzz year 2000#pragma optimize#include <ansi.h>#include <skill.h>#include <weapon.h>#include <combat.h>inherit F_DBASE;mapping *combat_action = ({ ([ "action": "$N挥拳攻击$n的$l", "damage_type": "瘀伤", ]), ([ "action": "$N往$n的$l一抓", "damage_type": "抓伤", ]), ([ "action": "$N往$n的$l狠狠地踢了一脚", "damage_type": "瘀伤", ]), ([ "action": "$N提起拳头往$n的$l捶去", "damage_type": "瘀伤", ]), ([ "action": "$N对准$n的$l用力挥出一拳", "damage_type": "瘀伤", ]),});object *player;int userno;string *guard_msg = ({ CYN "$N注视著$n的行动,企图寻找机会出手。\n" NOR, CYN "$N正盯著$n的一举一动,随时准备发动攻势。\n" NOR, CYN "$N缓缓地移动脚步,想要找出$n的破绽。\n" NOR, CYN "$N目不转睛地盯著$n的动作,寻找进攻的最佳时机。\n" NOR, CYN "$N慢慢地移动著脚步,伺机出手。\n" NOR,});string *catch_hunt_msg = ({ HIW "$N和$n仇人相见分外眼红,立刻打了起来!\n" NOR, HIW "$N对著$n大喝:「可恶,又是你!」\n" NOR, HIW "$N和$n一碰面,二话不说就打了起来!\n" NOR, HIW "$N一眼瞥见$n,「哼」的一声冲了过来!\n" NOR, HIW "$N一见到$n,愣了一愣,大叫:「我宰了你!」\n" NOR, HIW "$N喝道:「$n,我们的帐还没算完,看招!」\n" NOR, HIW "$N喝道:「$n,看招!」\n" NOR,});string *winner_msg = ({ CYN "\n$N哈哈大笑,说道:承让了!\n\n" NOR, CYN "\n$N双手一拱,笑著说道:承让!\n\n" NOR, CYN "\n$N胜了这招,向后跃开三尺,笑道:承让!\n\n" NOR, CYN "\n$n脸色微变,说道:佩服,佩服!\n\n" NOR, CYN "\n$n向后退了几步,说道:这场比试算我输了,佩服,佩服!\n\n" NOR, CYN "\n$n向后一纵,躬身做揖说道:阁下武艺不凡,果然高明!\n\n" NOR,});string *catch_hunt_beast_msg = ({ HIW "$N怒吼一声,扑了过来攻击$n!\n" NOR, HIW "$N对着$n大吼,想杀死$n!\n" NOR, HIW "$N发出连串低吼,突然暴起攻击$n!\n" NOR,});string *catch_hunt_bird_msg = ({ HIW "$N对着$n一声怒鸣,飞冲了过来!\n" NOR, HIW "$N怒鸣几声,突然暴起攻击$n!\n" NOR, HIW "$N一声锐鸣,猛然向$n发起攻击!\n" NOR,});string *winner_animal_msg = ({ CYN "\n$N退在一旁,警戒地向$n盯视!\n\n" NOR, CYN "\n$N退守开来,但仍然毫不放松地盯着$n!\n\n" NOR, CYN "\n$N退了几步,但随时可能再冲过来!\n\n" NOR});void create(){ seteuid(getuid()); set("name", "战斗精灵"); set("id", "combatd");}string damage_msg(int damage, string type){ string str;// return "造成 " + damage + " 点" + type + "。\n"; if( damage == 0 ) return "结果没有造成任何伤害。\n"; switch( type ) { case "擦伤": case "割伤": if( damage < 10 ) return "结果只是轻轻地划破$p的皮肉。\n"; if( damage < 50 ) return "结果在$p$l划出一道细长的血痕。\n"; if( damage < 100 ) return "结果「嗤」地一声,在$n身上划出一道伤口!\n"; if( damage < 200 ) return "结果「嗤」地一声,在$n身上划出一道血淋淋的伤口!\n"; if( damage < 320 ) return "结果「嗤」地一声,在$n身上划出一道又长又深的伤口,溅得$N满脸鲜血!\n"; return "结果只听见$n一声惨嚎,$w已在$p$l划出一道深可见骨的可怕伤口!!\n"; case "刺伤": if( damage < 10 ) return "结果只是轻轻地刺破$n的皮肉。\n"; if( damage < 50 ) return "结果在$n$l刺出一个创口。\n"; if( damage < 100 ) return "结果「噗」地一声刺入了$n$l寸许!\n"; if( damage < 200 ) return "结果「噗」地一声刺进$n的$l,使$p不由自主地退了几步!\n"; if( damage < 320 ) return "结果「噗嗤」地一声,$w刺进了$n的$l,殷红的鲜血随即喷了出来!\n"; return "结果只听见$n一声惨嚎,$w已在$p的$l对穿而出,鲜血溅得满地!!\n"; case "瘀伤": if( damage < 20 ) return "结果只是轻轻地碰到$n,比拍苍蝇稍微重了点。\n"; if( damage < 40 ) return "结果在$n的$l造成一处瘀青。\n"; if( damage < 80 ) return "结果一击命中,$n的$l登时肿了一块老高!\n"; if( damage < 100 ) return "结果一击命中,$n闷哼了一声显然吃了不小的亏!\n"; if( damage < 170 ) return "结果「砰」地一声,$n退了两步!\n"; if( damage < 240 ) return "结果这一下「砰」地一声打得$n连退了好几步,差一点摔倒!\n"; if( damage < 320 ) return "结果重重地击中,$n「哇」地一声吐出一口鲜血!\n"; if( damage < 450 ) return "结果只听见「砰」地一声巨响,$n像一捆稻草般飞了出去!!\n"; return "只听见$n一声惨叫,整个身体象断了线的风筝一样飞了出去!!\n"; case "内伤": if( damage < 20 ) return "结果只是把$n打得退了半步,毫发无损。\n"; if( damage < 60 ) return "结果$n痛哼一声,在$p的$l造成一处瘀伤。\n"; if( damage < 100 ) return "结果一击命中,把$n打得痛得弯下腰去!\n"; if( damage < 170 ) return "结果$n闷哼了一声,脸上一阵青一阵白,显然受了点内伤!\n"; if( damage < 240 ) return "结果$n脸色一下变得惨白,昏昏沉沉接连退了好几步!\n"; if( damage < 320 ) return "结果重重地击中,$n「哇」地一声吐出一口鲜血!\n"; if( damage < 450 ) return "结果「轰」地一声,$n全身气血倒流,口中鲜血狂喷而出!\n"; return "结果只听见几声喀喀轻响,$n一声惨叫,像滩软泥般塌了下去!!\n"; case "震伤": if( damage < 100 ) return "结果$n受到$N的劲力一震,闷哼一声。\n"; if( damage < 150 ) return "结果$n被$N以劲力一震,「嘿」地一声退了两步。\n"; if( damage < 230 ) return "结果$n被$N以劲力一震,胸口有如受到一记重锤,连退了五六步!\n"; if( damage < 340 ) return "结果$N的劲力一下震得$n连退了好几步,差一点摔倒!\n"; if( damage < 450 ) return "结果$n被$N的劲力震得全身气血倒流,口中鲜血狂喷而出!\n"; return "结果$n被$N的劲力震得眼前一黑,内脏碎裂,身子凭空飞了出去!!\n"; case "拉伤": if( damage < 15 ) return "结果只是轻轻地划过了$n的皮肤。\n"; if( damage < 50 ) return "结果在$n的$l抽出一道细长的血印。\n"; if( damage < 150 ) return "结果「啪」地一声$w将$n的$l皮肤扯开,形成一道尺许长的伤口!\n"; if( damage < 250 ) return "只听$n「啊」地一声吐出一口鲜血,原来$p$l内的骨头已经被$w的劲力抽裂!\n"; if( damage < 350 ) return "结果随着「咔」地一声,$w已将$n$l处的骨头硬生生地抽断,断骨从肉里冒了出来!\n"; return "结果$n一声惨嚎,$w已从$p$l处撕下了一大片血淋淋的皮肉,鲜血溅得满地!!\n"; case "砸伤": case "挫伤": if( damage < 20 ) return "结果只是轻轻地碰撞到了$n一下,没有造成什么伤害。\n"; if( damage < 80 ) return "结果$w只将$n的$l砸出一块瘀红。\n"; if( damage < 160 ) return "结果「啪」地一声,$w打中$n的$l,登时肿了一块老高!\n"; if( damage < 320 ) return "结果$w重重得击中$n的$l,打得$p倒退数步,「哇」地吐出一大口鲜血!\n"; if( damage < 450 ) return "结果只听见「硼」地一声巨响,$w打在$n身上,将$p像一捆稻草般击飞出去!\n"; return "结果$w一下打在$n的身上,几声骨碎声中,$p象散了架似的瘫了下去!!\n"; case "抓伤": if( damage < 20 ) return "结果只是在$n$l处轻轻刮过,没有什么伤害。\n"; if( damage < 40 ) return "结果$n皱了皱眉,$p的$l已经被拉出了一道浅浅的血痕。\n"; if( damage < 80 ) return "结果拉下来$n$l的一点皮肉,疼得$p「哇哇」怪叫了起来!\n"; if( damage < 120 ) return "结果「唰」地一声,$n的$l上顿时被抓出五道血痕,鲜血流了出来!\n"; if( damage < 220 ) return "结果$n疼得大叫一声,$p$l上被抓出了几道深深的血沟,鲜血直流!\n"; if( damage < 330 ) return "结果只听见$n一声惨嚎,$N的手爪已在$p的$l处刺出了五个血肉模糊的窟窿!\n"; if( damage < 440 ) return "结果「啊」地一声惨叫,$n身上$l处被$N抓下了一大片皮肉,鲜血横飞满地!!\n"; return "结果$n一声凄惨的嘶叫,$l处被连皮带肉扯下一大块,露出了白森森的骨头!!\n"; case "摔伤": if( damage < 20 ) return "结果$n脚下不稳,在地上擦破了点儿皮。\n"; if( damage < 80 ) return "结果「啪」地一声,$n在地上摔了个屁礅。\n"; if( damage < 160 ) return "结果$n一不小心,被$N重重摔倒在地!\n"; if( damage < 300 ) return "结果$n被一下摔倒在地,「噗地」一声喷出了一大口鲜血!\n"; if( damage < 420 ) return "结果被$N这一下摔在地上,$l处的骨头「卡嚓」一声断了!\n"; return "结果只听见$n一声惨嚎,被$N摔得血肉横飞,惨不忍睹!!\n"; case "跌伤": if( damage < 100 ) return "结果$p就地一滚,没怎么伤着。\n"; else if( damage < 200 ) return "结果「吧叽」一声,$p被摔了个屁墩。\n"; else if( damage < 400 ) return "结果$p的$l着实地被摔了一下!\n"; else if( damage < 800 ) return "结果$p的$l砸在地上,被摔得青紫!\n"; else if( damage < 1600 ) return "结果在$p的$l立时肿起一大块,鲜血里透着青紫!\n"; else return "结果$p的$l被摔得皮开肉绽,骨头从肉里戳出来!!\n"; break; case "咬伤": if( damage < 100 ) return "结果只是轻轻地蹭了一下$p的皮肉。\n"; else if( damage < 200 ) return "结果在$p$l咬出一排牙印。\n"; else if( damage < 400 ) return "结果$p被咬下一片肉来!\n"; else if( damage < 800 ) return "结果$p连皮带肉被咬下一大块!\n"; else if( damage < 1600 ) return "结果在$p的身上咬下来血肉模糊的一大块$l肉!\n"; else return "结果只听见$n一声惨嚎,$p的$l上的肉被一口咬掉,露出骨头!!\n"; break; case "瘀伤": case "淤伤": case "挫伤": if( damage < 100 ) return "结果只是轻轻地碰到,比拍苍蝇稍微重了点。\n"; else if( damage < 200 ) return "结果在$p的$l造成一处瘀青。\n"; else if( damage < 400 ) return "结果一击命中,$n的$l登时肿了一块老高!\n"; else if( damage < 800 ) return "结果一击命中,$n闷哼了一声显然吃了不小的亏!\n"; else if( damage < 1200 ) return "结果「砰」地一声,$n退了两步!\n"; else if( damage < 1600 ) return "结果这一下「砰」地一声击得$n连退了好几步,差一点摔倒!\n"; else if( damage < 2400 ) return "结果重重地击中,$n「哇」地一声吐出一口鲜血!!\n"; else return "结果只听见「砰」地一声巨响,$n像一捆稻草般飞了出去!!\n"; break; case "内伤": if( damage < 100 ) return "结果只是把$n打得退了半步,毫发无损。\n"; else if( damage < 200 ) return "结果$n痛哼一声,在$p的$l造成一处瘀伤。\n"; else if( damage < 400 ) return "结果一击命中,把$n打得痛得弯下腰去!\n"; else if( damage < 800 ) return "结果$n闷哼了一声,脸上一阵青一阵白,显然受了点内伤!\n"; else if( damage < 1200 ) return "结果$n脸色一下变得惨白,昏昏沉沉接连退了好几步!\n"; else if( damage < 1600 ) return "结果重重地击中,$n「哇」地一声吐出一口鲜血!\n"; else if( damage < 2400 ) return "结果「轰」地一声,$n全身气血倒流,口中鲜血狂喷而出!!\n"; else return "结果只听见几声喀喀轻响,$n一声惨叫,像滩软泥般塌了下去!!\n"; break; case "震伤": if( damage < 100 ) return "结果$p疑惑地看了$P一眼,似乎没有感觉到什么痛处。\n"; else if( damage < 200 ) return "结果$p身子一晃,立足不定,差点儿就要摔倒。\n"; else if( damage < 400 ) return "结果$p立足不定,向后接连摔了两个筋斗,哇的一声,喷出一口鲜血!\n"; else if( damage < 800 ) return "结果$p哇的一声,喷出一口鲜血,委顿在地,便似一堆软泥!\n"; else if( damage < 1600 ) return "结果$p身子便如一捆稻草般,在空中平平的飞了出去,重重摔在地下,口中鲜血狂喷!\n"; else if( damage < 2400 ) return "结果只听一声巨响,$p口中鲜血狂喷,全身骨骼碎裂!!\n"; else return "结果只听一声巨响,$p全身骨骼碎裂,竟似被这排山倒海般的一击将身子打成了两截!!\n"; break; case "擦伤": case "抓伤": if( damage < 100 ) return "结果$p只被轻轻地蹭破了一点油皮。\n"; else if( damage < 200 ) return "结果$p的$l上被划出一道细长的血痕。\n"; else if( damage < 400 ) return "结果「唰」地在$p的$l上蹭掉一大片皮肉!\n"; else if( damage < 800 ) return "结果「唰」地一声擦出一道血淋淋的伤口!\n"; else if( damage < 1600 ) return "结果「唰」地一声$p的$l上被撕下血淋淋的一片肉!\n"; else return "结果只听见$n一声惨嚎,$p$l的皮肉尽裂,露出白森森的骨头!\n"; break; case "割伤": case "劈伤": case "砍伤": if( damage < 100 ) return "结果只是轻轻地划破$p的皮肉。\n"; else if( damage < 200 ) return "结果在$p$l划出一道细长的血痕。\n"; else if( damage < 400 ) return "结果「嗤」地一声砍出一道伤口!\n"; else if( damage < 800 ) return "结果「嗤」地一声劈出一道血淋淋的伤口!\n"; else if( damage < 1600 ) return "结果「嗤」地一声劈出一道又长又深的伤口,溅得$N满脸鲜血!\n"; else return "结果只听见$n一声惨嚎,$w已在$p$l砍出一道深及见骨的可怕伤口!!\n"; break; case "刺伤": if( damage < 100 ) return "结果只是轻轻地刺破$p的皮肉。\n"; else if( damage < 200 ) return "结果在$p$l刺出一个创口。\n"; else if( damage < 400 ) return "结果「噗」地一声刺入了$n$l寸许!\n"; else if( damage < 800 ) return "结果「噗」地一声刺进$n的$l,使$p不由自主地退了几步!\n"; else if( damage < 1600 ) return "结果「噗嗤」地一声,$w已在$p$l刺出一个血肉模糊的血窟窿!\n"; else return "结果只听见$n一声惨嚎,$w已在$p的$l对穿而出,鲜血溅得满地!!\n"; break; case "砸伤": if( damage < 20 ) return "结果只是轻轻地碰撞到了$n一下,没有造成什么伤害。\n"; if( damage < 60 ) return "结果$w只将$n的$l砸出一块瘀红。\n"; if( damage < 120 ) return "结果「啪」地一声,$w打中$n的$l,登时肿了一块老高!\n"; if( damage < 240 ) return "结果$w重重得击中$n的$l,打得$p倒退数步,「哇」地吐出一大口鲜血!\n"; if( damage < 380 ) return "结果只听见「硼」地一声巨响,$w打在$n身上,将$p像一捆稻草般击飞出去!\n"; return "只见$w重重地撞击在$n的身上,几声骨碎声中,$p象散了架似的瘫了下去!!\n"; break; case "鞭伤": if( damage < 100 ) return "结果只是在$p$l上擦了一道白印。\n"; else if( damage < 200 ) return "结果在$p的$l上抽出一道血痕。\n"; else if( damage < 400 ) return "结果「啪」地一声$p被抽了一道伤口!\n"; else if( damage < 800 ) return "结果$p的$l上被抽了一道血淋淋的创口!\n"; else if( damage < 1600 ) return "结果「啪」地一声$p被$N的$w抽了一道从头到脚的血印!\n"; else return "结果只听见「咔嚓」一声,$p的$l的骨头被抽断,$w被染得血红!!\n"; break; case "灼伤": case "烧伤": if( damage < 100 ) return "结果只是把$p的$l烫了一下。\n"; else if( damage < 200 ) return "结果$p的$l被$w灼炙得起了个小疱。\n"; else if( damage < 400 ) return "结果$p的$l被$w烧得红肿疼痛,痛得不住冒汗咬牙!\n"; else if( damage < 800 ) return "结果「嗤」一声轻响,$p祗觉$l上一片热痛,已被$w烧成了暗红色,犹如焦炭!\n"; else if( damage < 1600 ) return "结果「嗤嗤」一阵声响过去,$n神色痛楚难当,$l被$w烧得一片焦黑,青烟直冒!\n"; else return "结果只听见$n长声惨呼,在地上不住打滚,$l已被$w烧得皮肉尽烂,焦臭四溢!!\n"; break; case "冻伤": if( damage < 100 ) return "结果$p祗是觉得$l有些冷飕飕地,还挺凉快的。\n"; else if( damage < 200 ) return "结果$p的$l被冻得有些麻木。\n"; else if( damage < 400 ) return "结果$p机伶伶地打了个寒颤!\n"; else if( damage < 800 ) return "结果$p脸色一变,神情有些僵硬,身子也冷得瑟瑟发抖!\n"; else if( damage < 1600 ) return "结果$p身子打颤,脸色苍白,嘴唇冻得发紫,牙关格格直响!\n"; else return "结果祗听见$n声音一哑,脸上惨白得没半分血色,颤抖不休,浑身血液似乎都结成了冰!!\n"; default: if( !type ) type = "伤害"; if( damage < 10 ) str = "结果只是勉强造成一处轻微"; else if( damage < 20 ) str = "结果造成轻微的"; else if( damage < 30 ) str = "结果造成一处"; else if( damage < 50 ) str = "结果造成一处严重"; else if( damage < 80 ) str = "结果造成颇为严重的"; else if( damage < 120 ) str = "结果造成相当严重的"; else if( damage < 170 ) str = "结果造成十分严重的"; else if( damage < 230 ) str = "结果造成极其严重的"; else str = "结果造成非常可怕的严重"; return str + type + "!\n"; }}string eff_status_msg(int ratio){ if( ratio==100 ) return HIG "看起来气血充盈,并没有受伤。" NOR; if( ratio > 95 ) return HIG "似乎受了点轻伤,不过光从外表看不大出来。" NOR; if( ratio > 90 ) return HIY "看起来可能受了点轻伤。" NOR; if( ratio > 80 ) return HIY "受了几处伤,不过似乎并不碍事。" NOR; if( ratio > 60 ) return HIY "受伤不轻,看起来状况并不太好。" NOR; if( ratio > 40 ) return HIR "气息粗重,动作开始散乱,看来所受的伤著实不轻。" NOR; if( ratio > 30 ) return HIR "已经伤痕累累,正在勉力支撑著不倒下去。" NOR; if( ratio > 20 ) return HIR "受了相当重的伤,只怕会有生命危险。" NOR; if( ratio > 10 ) return RED "伤重之下已经难以支撑,眼看就要倒在地上。" NOR; if( ratio > 5 ) return RED "受伤过重,已经奄奄一息,命在旦夕了。" NOR; return RED "受伤过重,已经有如风中残烛,随时都可能断气。" NOR;}string status_msg(int ratio){
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?