📄 jifa.c
字号:
// enable.c
#include <ansi.h>
inherit F_CLEAN_UP;
mapping valid_types = ([
"unarmed": "拳脚",
"sword": "剑法",
"hammer": "锤法",
"blade": "刀法",
"stick": "棒法",
"staff": "杖法",
"club" : "棍法",
"throwing": "暗器",
"force": "内功",
"parry": "招架",
"dodge": "轻功",
"magic": "法术",
"spells": "魔法",
"leg": "腿法",
"axe": "斧法",
"move": "行动",
"array": "阵法",
"whip": "鞭法",
"lingfa": "令法",
// shaolin skills
"finger": "指法",
"hand": "手法",
"cuff": "拳法",
"claw": "爪法",
"strike": "掌法",
// "club": "棍法",
]);
int main(object me, string arg)
{
mapping map;
string *types, *skill, ski, map_to;
int i, modify;
seteuid(getuid());
if( !arg ) {
map = me->query_skill_map();
if( !mapp(map) || sizeof(map)==0 )
return notify_fail("你现在没有使用任何特殊技能。\n");
skill = keys(valid_types);
write("以下是你目前使用中的特殊技能。\n");
for (i=0; i<sizeof(skill); i++) {
if( undefinedp(valid_types[skill[i]]) ) {
map_delete(map, skill[i]);
continue;
}
if( !me->query_skill(skill[i]) ) continue;
if (!undefinedp(map[skill[i]]) && me->query_skill(map[skill[i]],1)<=0)
{
me->map_skill("unarmed");
me->map_skill("hammer");
me->map_skill("blade");
me->map_skill("sword");
me->map_skill("staff");
me->map_skill("club");
me->map_skill("throwing");
me->map_skill("parry");
me->map_skill("dodge");
me->map_skill("magic");
me->map_skill("spells");
me->map_skill("leg");
me->map_skill("axe");
me->map_skill("array");
me->map_skill("whip");
me->map_skill("finger");
me->map_skill("hand");
me->map_skill("cuff");
me->map_skill("claw");
me->map_skill("strike");
me->map_skill("force");
me->prepare_skill("unarmed");
me->prepare_skill("hammer");
me->prepare_skill("blade");
me->prepare_skill("sword");
me->prepare_skill("staff");
me->prepare_skill("club");
me->prepare_skill("throwing");
me->prepare_skill("parry");
me->prepare_skill("dodge");
me->prepare_skill("magic");
me->prepare_skill("spells");
me->prepare_skill("leg");
me->prepare_skill("axe");
me->prepare_skill("array");
me->prepare_skill("whip");
me->prepare_skill("finger");
me->prepare_skill("hand");
me->prepare_skill("cuff");
me->prepare_skill("claw");
me->prepare_skill("strike");
me->reset_action();
return notify_fail(HIR"你的武功有问题!请重新enable所有武功\n"NOR);
}
modify = me->query_temp("apply/" + skill[i]);
printf(" %-20s: %-20s 有效等级:%s%3d\n" NOR,
valid_types[skill[i]] + " (" + skill[i] + ")",
undefinedp(map[skill[i]]) ? "无" : to_chinese(map[skill[i]]),
(modify==0 ? "" : (modify>0 ? HIC : HIR)),
me->query_skill(skill[i]));
}
return 1;
}
if( arg=="?" ) {
write("以下是可以使用特殊技能的种类:\n");
skill = sort_array(keys(valid_types), (: strcmp :) );
for(i=0; i<sizeof(skill); i++) {
printf(" %s (%s)\n", valid_types[skill[i]], skill[i] );
}
return 1;
}
if( sscanf(arg, "%s %s", ski, map_to)!=2 )
return notify_fail("指令格式:enable|jifa [<技能种类> <技能名称>|none]\n");
if( undefinedp(valid_types[ski]) )
return notify_fail("没有这个技能种类,用 enable ? 可以查看有哪些种类。\n");
if( map_to=="none" ) {
if (ski=="force")
{
if (me->query_temp("powerup"))
return notify_fail("这个内功你不是还用着吗?\n");
if (me->query_temp("linji"))
return notify_fail("这个内功你不是还用着吗?\n");
if (me->query_temp("yun_riyue"))
return notify_fail("这个内功你不是还用着吗?\n");
if (me->query_temp("yun_yinyang"))
return notify_fail("这个内功你不是还用着吗?\n");
if( (int)me->query_temp("powerupxtg") ) return
notify_fail("你已经在先天大法了。\n");
if( (int)me->query_temp("poweruptxg") ) return
notify_fail("你已经在运太玄功了。\n");
if( (int)me->query_temp("powerupkh") ) return
notify_fail("你已经在运葵花无敌功了。\n");
if(me->query_temp("wdpowerup") )
return notify_fail("你现在正在使用「五毒神功」的绝技,请在正常状态下放弃武功!\n");
if ((int)me->query_temp("shield"))
return notify_fail("你已经在运护体神功中了,请在正常状态下放弃武功!\n");
}
me->map_skill(ski);
me->reset_action();
write("Ok.\n");
return 1;
} else if( map_to==ski ) {
write("「" + to_chinese(ski) + "」是所有" + valid_types[ski] + "的基础,不需要 enable。\n");
return 1;
}
if( !me->query_skill(map_to, 1) )
return notify_fail("你不会这种技能。\n");
// if( !me->query_skill(ski, 1) )
// return notify_fail("你连「" + to_chinese(ski) + "」都没学会,更别提"
// + to_chinese(map_to) + "了。\n");
if( !SKILL_D(map_to)->valid_enable(ski) )
return notify_fail("这个技能不能当成这种用途。\n");
if( ski=="magic" ) {
write("你改用另一种法术系,精力必须重新锻练。\n");
me->set("jingli", 0);
me->receive_damage("jing", 0);
}
else if( ski=="force" ) {
if (me->query_temp("powerup"))
return notify_fail("这个内功你不是还用着吗?\n");
if (me->query_temp("powerup"))
return notify_fail("这个内功你不是还用着吗?\n");
if (me->query_temp("linji"))
return notify_fail("这个内功你不是还用着吗?\n");
if (me->query_temp("yun_riyue"))
return notify_fail("这个内功你不是还用着吗?\n");
if (me->query_temp("yun_yinyang"))
return notify_fail("这个内功你不是还用着吗?\n");
if( (int)me->query_temp("powerupxtg") ) return
notify_fail("你已经在先天大法了。\n");
if( (int)me->query_temp("poweruptxg") ) return
notify_fail("你已经在运太玄功了。\n");
if( (int)me->query_temp("powerupkh") ) return
notify_fail("你已经在运葵花无敌功了。\n");
if(me->query_temp("wdpowerup") )
return notify_fail("你现在正在使用「五毒神功」的绝技,请在正常状态下放弃武功!\n");
if ((int)me->query_temp("shield"))
return notify_fail("你已经在运护体神功中了,请在正常状态下放弃武功!\n");
write("你改用另一种内功,内力必须重新锻练。\n");
me->set("neili", 0);
me->receive_damage("qi", 0);
}
me->map_skill(ski, map_to);
me->reset_action();
write("Ok.\n");
return 1;
}
int help(object me)
{
write(@HELP
指令格式 : enable|jifa [<技能种类> <技能名称> | none]
enable|jifa ?
这个指令让你指定所要用的技能,需指明技能种类和技能名称。如果不加参
数则会显示出技能种类及你目前所使用的技能名称 ,如果加一个?会列出
所有能使用特殊技能的技能种类。
HELP
);
return 1;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -