作者laechan (小太保)
看板mud_sanc
标题[抠顶] 指令 _toss.c
时间Mon Sep 3 00:25:29 2012
明天起理论上有空,在公司会挪一部份时间写新的工具程式,
这个不会占用太多时间,我还在规划它的 code 型式。
大部份时间应该都会拿来 coding 圣殿的东西,这个指令我希
望最慢星期二能完成,届时跟 giant-mood(始源巨人之心)以及
始源巨人一起开放。始源巨人目前暂定会放在秘境第200格,我
会做一个基本的限制:玩家「身上」需带有石精戒及石神戒,
才能跟始源巨人学 giant-mood。不一定要装备它们。
======================================================
// toss, 石化人变身後专用指令
// belldandy@sanc 2011/06/01
// 设定集:
// toss [目标] 或 toss [目标] to [方向]
// 1.对一般怪物, 丢到半空的期间其闪格挡通通无效(特攻必中状态)
// 被丢到半空的怪无法攻击, 用 tossing 参数判断
// 2.对群体怪物会分裂成 2~数 只.
// toss 可以抓空飘的怪物
// toss 可以把任何骑在马上的生物抓下来(与马分离)
// toss 可以抓到幻影中的实体
#define TOSS_TIMES 5
inherit DAEMON;
int help()
{
write(@LONG
toss(抓抛)指令说明:
======================================================
toss 目标
将战斗中的目标扔向高空
或将空飘中、骑马中的目标抓摔在地上
toss 目标 to 方向
将[队友]扔向
这个指令只有石化人(stoneman)可以使用。
使用前必须先变成巨大化状态(heart giant-mood)。
======================================================
Laechan@Sanc 2012/09/03
LONG
);
return 1;
}
int cmd_toss(string str,object me)
{
object tar,env;
string tarname,exits;
int t;
t=time();
if((string)me->query("race")!="stoneman" ||
(int)me->query_temp("giant_mood")<t)
return notify_fail("toss: 只有巨大化的石化人才能使用这个指令喔.\n");
if(!str || str=="")
{
help();
return notify_fail("");
}
// toss 需设定施展时间间隔
if(!env=environment(me))
return notify_fail("toss: 这个指令无法在虚无空间使用喔.\n");
if(me->query_temp("time_record/toss_times")>t)
return notify_fail("toss: 你要等一下才可以再 toss 喔!!\n");
// 不接方向的情况
if(sscanf(str,"%s to %s",tarname,exits)==2)
{
if(!env->query("exits/"+exits) && !env->query("hide_exits/"+exits))
return notify_fail("toss: 这里没有往 "+exits+" 的方向喔.\n");
}
else
{
str=tarname;
exits="";
}
if(tar=present(str,env))
{
if(wizardp(tar) && !wizardp(me))
return notify_fail("toss: 这里没有 "+tarname+" 这个对象可以 toss 喔.\n");
if(!living(tar))
return notify_fail("toss: 你不能抓抛它喔.\n");
// 以後 toss 玩家的话就是把玩家抓到身上 or 抛往其它房间
if(userp(tar))
return notify_fail("toss: 你只能抓非玩家的生物喔.\n");
// 允许抓 boss
// if(tar->query("BOSS"))
// return notify_fail("toss: 你不能抓 BOSS 类的怪物喔.\n");
if(tar->query("tossing")>t)
return notify_fail("toss: 你现在不能抓"+tar->query("short")+"喔.\n");
tar->set("tossing",t+TOSS_TIMES);
me->set_temp("time_record/toss_times",t+TOSS_TIMES);
// 抛往空中
if(exits=="")
{
show(me,tar,"\n"HIW"$N"HIW"一把抓住了"HIW"$O"HIW",随手扔到了半空!\n"+
}
return notify_fail("toss: 这里没有 "+tarname+" 这个对象可以 toss 喔.\n");
}
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 223.141.14.91
1F:→ laechan :除了 toss 指令, 应该还能再给 smash(smesh) 指令 09/03 00:33
2F:→ laechan :用来攻城打城门用的 09/03 00:33
※ 编辑: laechan 来自: 210.61.157.53 (09/03 16:51)
※ 编辑: laechan 来自: 210.61.157.53 (09/05 13:13)