//cool@SJ,19990628
#include <ansi.h>
#include <skill.h>

inherit SKILL;

//#include "/kungfu/skill/yiyang-zhi/liumai_msg.h";

string *xue_name = ({ 
"劳宫穴","膻中穴","曲池穴","关元穴","曲骨穴","中极穴","承浆穴","天突穴","百会穴",
"幽门穴","章门穴","大横穴","紫宫穴","冷渊穴","天井穴","极泉穴","清灵穴","至阳穴",}); 

mapping *action_finger = ({
([      "action" : "忽听嗤嗤轻响，一股柔和的气流自$N手指涌出，正是一招「阳春暖融」，缓缓点向$n$l",
        "weapon" : "一阳指力",
        "skill_name" : "阳春暖融",
        "damage_type" : "刺伤"
]),
([      "action" : "$N右手食指微点，出招「晓天初阳」，一股雄浑的一阳指力射向$n，出手沉稳，招数正大",
        "weapon" : "一阳指力",
        "skill_name" : "晓天初阳",
        "damage_type" : "刺伤"
]),
([      "action" : "$N一指「日出霞光」，激出的一股罡气涌向$n，看似是温淳平和，但沛然浑厚，无可与抗",
         "weapon" : "一阳指力",
        "skill_name" : "日出霞光",
        "damage_type" : "内伤"
]),
([      "action" : "忽听嗤嗤轻响，一股柔和的气流自$N手指涌出，正是一招「阳春暖融」，缓缓点向$n$l",
        "weapon" : "一阳指力",
        "skill_name" : "阳春暖融",
        "damage_type" : "刺伤"
]),
([      "action" : "$N踏前一步，伸指凌空轻轻一点，$n只觉气息一紧，已被「赤日焦阳」的刚阳气劲触到$l",
        "weapon" : "纯阳真气",
        "skill_name" : "赤日焦阳",
        "damage_type" : "刺伤"
]),
([      "action" : "$N衣袖轻摆，罡阳柔气从袖底挥出，涌向$n的$l，正是玄功若神的一招「晓阳云暖」",
        "skill_name" : "晓阳云暖",
         "weapon" : "一阳指力",
        "damage_type" : "内伤"
]),
([      "action" : "$N面带微笑，伸出右食指，缓缓点向$n胸口，这招「暮云映日」劲气弥漫，却无丝毫破空之声",
        "weapon" : "一阳指力",
        "skill_name" : "暮云映日",
        "damage_type" : "刺伤"
]),
([      "action" : "只见$N食指微屈，一指「九天乾阳」点出，气象森严，雍容肃穆，于威猛之中不脱王者风度！",
        "weapon" : "纯阳真气",
        "skill_name" : "九天乾阳",
        "damage_type" : "内伤"
]),
([ "action" : "$N头顶白气氤氲，渐聚渐浓，便似蒸笼一般，食指伸出，一式「三阳开泰」按向$n！",
        "weapon" : "纯阳真气",
        "skill_name" : "三阳开泰",
        "damage_type" : "震伤"
])
});


mapping *action_sword = ({
([      "action" : "$N嘴角轻笑，提$w平胸，看准时机一剑刺出，激起呼呼风声，迅猛无比地直插$n$l",
        "damage_type" : "刺伤",
]),
([      "action" : "$N左手捏个剑诀，右腕传动，将一阳指神功化于$w之上，出剑凝重，平平正正地刺向$n",
        "damage_type" : "刺伤",
]),
([      "action" : "只见$N屏息凝神，脚步沉着，剑走刀势，一式横劈，砍向$n$l，招式威猛正大",
        "damage_type" : "割伤",
]),
([      "action" : "$N脚下步法微变，身随剑走，端凝自重，极飘逸的一剑向$n刺出，轻灵中却也不失王者气象",
        "damage_type" : "刺伤",
]),
([      "action" : "$N平推一剑，手中的$w看似渐渐沉重，使动时略比先前滞涩，但实是举轻若重，威猛之极",
        "damage_type" : "刺伤",
]),
});

int valid_enable(string usage) 
{  
   return usage=="finger" || usage=="parry" || usage=="sword"; 
}

int valid_combine(string combo)
 {
         object me;
         me = this_player();
         if ((int)me->query_int() >= 40)
                 return combo=="kurong-changong";
 }

int valid_learn(object me)
{
       
       if ((string)me->query("gender") != "男性") 
                return notify_fail("一阳指乃是纯阳玄功，你如何可以修习？\n");
       if (me->query_temp("weapon") || me->query_temp("secondary_weapon"))
                return notify_fail("练一阳指必须空手。\n");
       if ((int)me->query_skill("qingyan-zhang", 1) < 70)
                return notify_fail("你的其它武功火候不够，无法学一阳指。\n");      
       if (!me->query_skill("kurong-changong", 1))
          if((int)me->query_skill("qiantian-yiyang", 1) < 100)
                return notify_fail("你的内功火候不够，无法学一阳指。\n");
       if ((int)me->query("max_neili") < 1000)
                return notify_fail("你的内力太弱，无法练一阳指。\n");
        return 1;
}

string query_skill_name(int level)
{
        int i;
        for(i = sizeof(action_finger)-1; i >= 0; i--)
                return action_finger[i]["skill_name"];
}

mapping query_action(object me, object weapon)
{
        int i,j,level,a,b,c,d,e,f,lv;
        level = (int) me->query_skill("yiyang-zhi",1);
       lv = (int)me->query_skill("liumai-shenjian",1);
        a = me->query("neili");
        b = me->query_str();
        c = me->query_dex();
        d = me->query_con();
        e = me->query_skill("force");
        f = me->query_skill("kurong-changong",1);
        if (lv >= 150) j = 5;
        else if (lv >= 120) j = 4;
        else if (lv >= 90) j = 3;
        else if (lv >= 60) j = 2;
        else if (lv >= 30) j = 1;
        else j = 0;
      j=j+1;
                
   if (me->query("neili")>me->query("max_neili"))
  a = me->query("max_neili")+(me->query("neili") - me->query("max_neili"))/10;
        if (a<800) a=800;
/*
        if (me->query_temp("start_6mai")) {                
             for(i = sizeof(action_finger); i > 0; i--)
                    return ([
                "action":liumai_msg[random(j)*5+1+random(4)],
                "damage":random(2)?(random(level/2)+random(b)+lv):lv,
                "damage_type": action_finger[NewRandom(i, 20, level/5)]["damage_type"],
                "dodge": c/2+random(me->query_skill("dodge")/5)-random(40),
                "force": a/10+random(lv)/2+e+200,

                "parry": d/2-random(40)+random(me->query_skill("parry")/6),
                "weapon" : "剑气",
                ]);
            }     
        
*/       
 if (!weapon) {                
             for(i = sizeof(action_finger); i > 0; i--)
                    return ([
                "action":action_finger[NewRandom(i, 20, level/5)]["action"],
                "damage":random(2)?(random(level/5)+random(b)/2+20):10,
                "damage_type": action_finger[NewRandom(i, 20, level/5)]["damage_type"],
    

            "dodge": c/2+random(me->query_skill("dodge")/6)-random(40),
                "force": a/10+random(f)/2+e+150,
                "parry": d/2-random(40)+random(me->query_skill("parry")/6),
                "skill_name" : action_finger[NewRandom(i, 20, level/5)]["skill_name"],
                "weapon" : action_finger[NewRandom(i, 20, level/5)]["weapon"],
                ]);
            }        
        else {
             for(i = sizeof(action_sword); i > 0; i--)
                 return ([
                "action":action_sword[NewRandom(i, 20, level/5)]["action"],
                "damage":random(e/2)+random(b/10)*f/3+50, 
                "damage_type": action_sword[NewRandom(i, 20, level/5)]["damage_type"],
                "dodge": c+random(me->query_skill("dodge")/5)-random(50),
                "force": a/15+random(level+f),
                "parry": d-random(40)+random(me->query_skill("parry")/5),
                       ]);  
   }     
}

int practice_skill(object me)
{        
        if (!me->query_skill("kurong-changong", 1))
            if((int)me->query_skill("qiantian-yiyang", 1) < 100)
                return notify_fail("你的乾天一阳功火候不够，无法练一阳指。\n");
        if ((int)me->query("jingli") < 40)
                return notify_fail("你的体力太低了。\n");
        if ((int)me->query("neili") < 10)
                return notify_fail("你的内力不够练一阳指。\n");
                          
        me->receive_damage("jingli", 25);
        me->add("neili", -10);
        return 1;
}

string perform_action_file(string action)
{
      return __DIR__"yiyang-zhi/" + action;
}

mixed hit_ob(object me, object victim, int damage_bonus)
{
    string name,weapon;
   int j = 0;
    name = xue_name[random(sizeof(xue_name))];
   if ((int)me->query_skill("kurong-changong",1)>150) j=3;

    if(victim->is_busy()) return 0;
        if (!objectp(weapon = me->query_temp("weapon"))) {
    if((!random(5)) && (me->query("neili")>200) && me->query_skill("yiyang-zhi", 1) > 100)
      {
          victim->start_busy(2+random(j));
                          me->add("neili",-50);
                if (victim->query("neili") <=(damage_bonus+5))
                victim->set("neili",0);
                else
                victim->add("neili",-(damage_bonus+5));
        return CYN "紧接着$N食指一曲一弹,$n被凌空一指点中"RED+name+CYN"，真气不由得一滞！\n" NOR;
        } 
        } else 
        {
      if((!random(5)) && (me->query("neili")>200) && me->query_skill("yiyang-zhi", 1) > 100)
           {
          victim->start_busy(2+random(j));
                me->add("neili",-30);
                victim->receive_damage("qi", me->query_skill("yiyang-zhi",1)/3+damage_bonus/2);
                victim->receive_wound("qi", me->query_skill("yiyang-zhi",1)/2+damage_bonus/4);       
                return CYN "只见$N手中长剑突然发出一股耀眼的光芒,$n被气刺中"RED+name+CYN"，真气不由得一滞！\n" NOR;
        }   
        }
 
}
