ring.c
来自「C实现的MUD,对大家基本入门网络游戏很有帮助!」· C语言 代码 · 共 173 行
C
173 行
#include <ansi.h>
#include <armor.h>
inherit FINGER;
inherit F_GEMS;
void init_sockets(object me)
{
set("max_sockets", 1);
if (me->query("combat_exp") > 10000000)
add("max_sockets", 1);
if (me->query("combat_exp") > 10000000)
add("max_sockets", 1);
if (me->query("combat_exp") < 10000000 && (int)query("sockets/max",1)>=2)
set("sockets/max",2);
if ((int)query("sockets/max",1)>3)
set("sockets/max",3);
if (me->query("diablo/" + TYPE_FINGER + "/id") != query("id")) return;
set("sockets", me->query("diablo/" + TYPE_FINGER + "/sockets"));
set_ring_desc();
}
void setup()
{
init_sockets(this_player());
::setup();
}
void spec_prop(object me, string socket, int socket_level, int mode)
{
int i;
if (!valid_gem(socket, socket_level)) return;
if (me->query("diablo/" + TYPE_FINGER + "/id") != query("id")) return;
if (me->query("max_neili") < 100) return;
switch (socket) {
case "ruby":
if (mode == 1)
message_vision(HIR + query("name") + HIR"射出一道耀眼的红光,$N在神光的沐浴下感到体力异常的充沛!\n"NOR, me);
else
message_vision(HIR"随着神光渐渐的隐去,$N的体力又恢复正常了。\n"NOR, me);
me->add("max_qi", me->query("max_neili") * socket_level * mode / 15);
me->add("eff_qi", me->query("max_neili") * socket_level * mode / 15);
me->add("qi", me->query("max_neili") * socket_level * mode / 15);
break;
case "topaz":
if (mode == 1)
message_vision(HIY + query("name") + HIY"射出一道夺目的黄光,$N在神光的沐浴下感到精力异常的充沛!\n"NOR, me);
else
message_vision(HIY"随着神光渐渐的隐去,$N的精力又恢复正常了。\n"NOR, me);
me->add("max_jing", me->query("max_neili") * socket_level * mode / 40);
me->add("eff_jing", me->query("max_neili") * socket_level * mode / 40);
me->add("jing", me->query("max_neili") * socket_level * mode / 40);
break;
case "sapphire":
if (mode == 1)
message_vision(HIB + query("name") + HIB"射出一道柔和的蓝光,$N在神光的沐浴下感到内力异常的充沛!\n"NOR, me);
else
message_vision(HIB"随着神光渐渐的隐去,$N的内力又恢复正常了。\n"NOR, me);
me->add("neili", me->query("max_neili") * socket_level * mode / 15);
break;
case "emerald":
if (mode == 1)
message_vision(HIG"忽然从" + query("name") + HIG"里幻化出一个身披绿纱的幸运女神围绕着$N的身边!\n"NOR, me);
else
message_vision(HIG"绿光一闪,$N的幸运女神就不见了。\n"NOR, me);
me->add_temp("apply/karey", 6 * socket_level * mode);
break;
case "amethyst":
if (mode == 1)
message_vision(MAG"一片紫色云雾迅速从" + query("name") + MAG"中涌出,转眼间就已经把$N托了起来!\n"NOR, me);
else
message_vision(MAG"紫色云雾被风吹散了,$N的身形又显现了出来。\n"NOR, me);
me->add_temp("apply/dexerity", 6 * socket_level * mode);
break;
case "diamond":
if (mode == 1)
message_vision(HIW"「哗」," + query("name") + HIW"划出一道闪电直冲天际,$N刹时感到体内充满了力量!\n"NOR, me);
else
message_vision(HIW"渐渐的$N的神色又恢复了正常。\n"NOR, me);
me->add_temp("apply/strength", 6 * socket_level * mode);
break;
case "skull":
if (mode == 1)
message_vision(WHT"$N忽然感到一股奇异的力量围绕着$P,隐隐之间只觉得充斥着莫明的魔力!\n"NOR, me);
else
message_vision(WHT"$N" + query("name") + WHT"中的咒语渐渐失去了效用!\n"NOR, me);
me->add_temp("apply/magic", 6 * socket_level * mode);
break;
case "windjade":
if (mode == 1)
message_vision(GRN"$N忽然感到一阵呼啸旋转的风围绕着$P,$N身体周围形成旋风!\n"NOR, me);
else
message_vision(GRN"$N" + query("name") + GRN"中的咒语渐渐失去了效用!\n"NOR, me);
me->add_temp("apply/dodge", 7 * socket_level * mode);
break;
case "firejade":
if (mode == 1)
message_vision(WHT"$N忽然感到炙热的无形之火绕着$P,$N允满了无尽的力量!\n"NOR, me);
else
message_vision(WHT"$N" + query("name") + WHT"中的咒语渐渐失去了效用!\n"NOR, me);
me->add("neili", me->query("max_neili") * socket_level * mode / 8);
me->add("eff_qi", me->query("max_qi") * socket_level * mode / 8);
me->add("eff_jing", me->query("max_jing") * socket_level * mode / 8);
break;
case "icejade":
if (mode == 1)
message_vision(CYN"$N忽然感到一阵冰雪的寒气围绕着$P,$N的身形如雾如幻!\n"NOR, me);
else
message_vision(CYN"$N" + query("name") + CYN"中的咒语渐渐失去了效用!\n"NOR, me);
me->add_temp("apply/karey", 5 * socket_level * mode);
me->add_temp("apply/percao", 5 * socket_level * mode);
break;
case "thunderjade":
if (mode == 1)
message_vision(MAG"$N忽然感到蓝色的火,白色的雷电围绕着$P,$N如天神降临!\n"NOR, me);
else
message_vision(MAG"$N" + query("name") + MAG"中的咒语渐渐失去了效用!\n"NOR, me);
me->add_temp("apply/intelligence", 3 * socket_level * mode);
break;
case "earthjade":
if (mode == 1)
message_vision(YEL"$N忽然感到大地无尽的生命力围绕着$P,$N感到允满活力!\n"NOR, me);
else
message_vision(YEL"$N" + query("name") + YEL"中的咒语渐渐失去了效用!\n"NOR, me);
if ((int)me->query_temp("foodgem") < (socket_level*3))
{
me->add_temp("foodgem",1);
if( me->query("food") < me->max_food_capacity() )
me->set("food", me->max_water_capacity());
if( (int)me->query("water") < me->max_water_capacity() )
me->set("water", me->max_water_capacity());
}
me->add("max_jing", me->query("max_jing") * socket_level * mode / 8);
break;
}
return;
}
int wear()
{
int i, sockets, ret;
object me = environment();
if (!(ret = ::wear())) return 0;
sockets = query("sockets/max");
for (i = 1; i <= sockets; i++)
spec_prop(me, query(sprintf("sockets/socket%d", i)), query(sprintf("sockets/socket%d_level", i)), 1);
return ret;
}
int unequip()
{
int i, sockets, ret;
object me = environment();
if (!(ret = ::unequip())) return 0;
sockets = query("sockets/max");
for (i = 1; i <= sockets; i++)
spec_prop(me, query(sprintf("sockets/socket%d", i)), query(sprintf("sockets/socket%d_level", i)), -1);
return ret;
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?