作者laechan (小太保)
看板mud_sanc
标题[法师] 暂定契约指令档 (随时更新)
时间Mon Mar 1 11:40:02 2010
// _tempbond.c
// Laechan@Sanc add in 2010/03/01
inherit DAEMON;
int cmd_tempbond(string str,object me)
{
string sk_name="tempbond",tmp1,tmp2,names;
object ppl,env;
mixed tempbond;
// wiz 可以略过底下限制
if(!wizardp(me))
{
if((string)me->query("pri_guild")!="mage")
return notify_fail("tempbond: 这个指令只有主职的魔法师才可以使用喔.\n");
if(me->query("skill/"+sk_name)<100)
return notify_fail("tempbond: 你的技能必须练到 100 才能使用这个指令喔.\n");
}
if(str=="back")
{
tempbond=(mixed)me->query("record_data/tempbond");
if(sizeof(tempbond)<1)
return notify_fail("tempbond: 你还没有与任何人订立暂定契约喔.\n");
if(!ppl=find_player(tempbond[0]))
return notify_fail("tempbond: 你的契约主人目前处於离线状态喔.\n");
if(!env=environment(ppl))
return notify_fail("tempbond: 你的契约主人目前处於虚幻时空喔.\n");
if(env->query("no_recall") || env->query("no_return"))
return notify_fail("tempbond: 你的契约主人目前处於你无法前往的地方喔.\n");
// 即使是随从的主动 back 也需设定使用後 delay time
me->move(env,"SNEAK");
// 加上移动讯息
}
if(sscanf(str,"-%s %s",tmp1,tmp2)!=2)
return notify_fail("tempbond: 请参考 help tempbond 指令说明喔.\n");
switch(tmp1)
{
// 订立暂定契约
case "order":
// 一定要加的限制,不然会造成A与B互订契约的情况
if(ppl->query("record_data/tempbond"))
return notify_fail("tempbond: 你已经与他人建立了暂定契约关系了喔.\n");
if(!ppl=present(tmp2,me))
return notify_fail("tempbond: "+tmp2+" 不在这里喔.\n");
// 玩家无法与 wiz 订立暂定契约(讯息显示同上, 不管该 wiz 是否隐形)
if(wizardp(ppl) && !wizardp(me))
return notify_fail("tempbond: "+tmp2+" 不在这里喔.\n");
if(!userp(ppl))
return notify_fail("tempbond: "+tmp2+" 不是玩家喔.\n");
// 暂时做的限制,避免初期的混乱
if(!ppl->query("pri_guild") || (string)ppl->query("pri_guild")=="mage")
return notify_fail("tempbond: "+tmp2+" 的主职不能是冒险者以及法师喔.\n");
// 读取 tempbond 资料串 ({"谁跟他订契约",目前等级,目前经验值,..}) 前三确定
tempbond=(mixed)ppl->query("record_data/tempbond");
// 原则上不主动透露该玩家与哪位魔法师订立暂定契约
if(sizeof(tempbond)>0)
return notify_fail("tempbond: "+tmp2+" 已经与别人订立暂定契约了。\n");
names=me->query("name");
if(ppl->query_temp("tempbond_order/"+names))
return notify_fail("tempbond: 你已经对 "+tmp2+" 送出订立契约的要求罗.\n");
// 暂时不设立其它的订契约条件(可能需要第三人在场、或者需要特殊道具、...)
// 我个人倾向两种条件都要成立,特殊道具可经由打区域拿到并可屯积、拍卖
tell_object(ppl,me->query("short")+"想与你订下暂定契约。\n"+
"若你同意的话请下 tempbond -agree "+names+" 指令.\n");
ppl->set_temp("tempbond_order/"+names,1);
return notify_fail("tempbond: 你对 "+tmp2+" 送出了订立暂定契约的要求.\n"+
" 请等待他的同意吧!!\n");
break;
case "call":
if(!ppl=find_player(tmp2))
return notify_fail("tempbond: "+tmp2+" 现在是离线状态喔.\n");
if(wizardp(ppl) && !wizardp(me))
return notify_fail("tempbond: "+tmp2+" 现在是离线状态喔.\n");
tempbond=(mixed)ppl->query("record_data/tempbond");
if(sizeof(tempbond)<1)
return notify_fail("tempbond: "+tmp2+" 跟你没有暂定契约关系喔.\n");
names=me->query("name");
if((string)tempbond[0]!=names)
return notify_fail("tempbond: "+tmp2+" 跟你没有暂定契约关系喔.\n");
if(!env=environment(ppl))
return notify_fail("tempbond: "+tmp2+" 现在的状态无法被你召唤喔.\n");
if(env==environment(me))
return notify_fail("tempbond: "+tmp2+" 已经在这里了喔.\n");
env=environment(me);
if(env->query("no_recall") || env->query("no_return"))
return notify_fail("tempbond: 你现在位於无法召唤 "+tmp2+" 的地方喔.\n");
// 这里必须再加上其它的限制
// 召唤玩家之後,再下一次的召唤时间限制必须做
ppl->move_player(env);
// 加上双方及房间其它玩家都能看到的讯息
break;
case "agree":
// 读取 tempbond 资料串 ({"谁跟他订契约",目前等级,目前经验值,..}) 前三确定
tempbond=(mixed)me->query("record_data/tempbond");
// 原则上不主动透露该玩家与哪位魔法师订立暂定契约
if(sizeof(tempbond)>0)
return notify_fail("tempbond: 你已经有与别人订立暂定契约了。\n");
if(!me->query_temp("tempbond_agree"))
return notify_fail("tempbond: 你目前没有需要同意订立暂定契约的对象喔.\n");
if(!ppl=present(tmp2,me))
return notify_fail("tempbond: "+tmp2+" 不在这里喔.\n");
if(!userp(ppl))
return notify_fail("tempbond: "+tmp2+" 不是玩家喔.\n");
if(!me->query_temp("tempbond_agree/"+tmp2))
return notify_fail("tempbond: "+tmp2+" 并没有想要与你订立暂定契约喔.\n");
// 底下契约就会成立
break;
==
一、quest 或 plain/hlead 若有看到,我倾向让订立契约的道具
名称为「契约之符」,说明叙述与暂定契约有关,然後可在
你们的区域解任务或打败某只怪物拿到。
拿到的难度由你们决定,我个人是希望很难拿到。另外如果
highelf 你觉得你的区域也有难以闯关的任务or难以打败的
怪物,也可以提出契约之符道具的摆放权。
(因为我的区域完全没有这类的特质)
然後不认主,纯物品,可以被存进家or家族。
二、我倾向有第三人在场,该人为魔法师,负责以契约之符搭配魔
法阵画出暂定契约魔法阵(增加魔法阵的适用范围),该魔法阵
有时间性,时间到就消失,订立契约的双方必须在时间内完成
契约,不然就要再来一次(增加契约之符消耗可能)。
三、我倾向由「二转法师」才拥有施展暂定契约魔法阵的能力,初
期的二转全部个案处理─由 wiz 协助二转。
四、暂定契约会限制在特定地点(避免一些 bug)。
五、暂定契约储存资料可能还包括卡片相关资料等,以第四栏位起
做为储存区。
六、暂定契约初期开放能力
1)加强受契约者的战斗能力
2)spiriten -clone tempbond 召唤契约附送道具
3)tempbond -summon 及 tempbond -reback 从者召唤返回功能
下午将继续撰写该技能档案。
Laechan
--
※ 发信站: 批踢踢实业坊(ptt.cc)
※ 编辑: laechan 来自: 61.225.162.84 (03/01 14:30)
1F:→ amosdeus :善见战争的奖励可以增加契约之符,只是该物品有什麽 03/01 16:42
2F:→ amosdeus :特殊的设置吗,还是已经写好了,我复制过来就可以了? 03/01 16:44
3F:→ laechan :双 id 加一个 set("tempbond",1); 之类的就可 03/01 16:47
※ 编辑: laechan 来自: 61.225.162.84 (03/01 16:53)
4F:推 HighElf :/d/ppl/highelf/west/3/room/26.c 03/01 20:58
5F:→ HighElf :或许能在这个空间search的到,不过要再多设delayTime 03/01 21:00
6F:推 HighElf :埋在/d/ppl/highelf/happyearth/room/157.c的某格 03/01 21:02
7F:→ laechan :那降吧,deus可以考虑善见战争的奖励是多样式随机择一 03/01 21:56
coding 不下去了...睡觉 ^_^ 明天继续~
※ 编辑: laechan 来自: 119.15.246.19 (03/01 22:50)
8F:推 horry7 :memory 有个契约之戒,给您参考 03/02 08:01
9F:→ laechan :喔喔,是 物品 or ? (防具的话应该也可以,多样性^^) 03/02 08:04
10F:推 horry7 :防具,五精灵其中的一样宝物 03/02 10:37
※ 编辑: laechan 来自: 61.225.161.85 (03/02 13:59)
11F:→ laechan :-order,-agree,-call 及 back 大致写好了.再来我要评 03/02 14:01
12F:→ laechan :估一下要再写什麽,以及初期的测试 03/02 14:01
13F:推 justinj :...契约人特殊召唤物品... 03/02 18:19
14F:→ justinj :伤害转移.. 03/02 18:21
我会先写提升随从基础能力的部份,这个若写好 tempbond
就可以先开放,其它没有时间压力(也并非只有我能写),
重点是让大家能先享受该技能的重点效果及好处。
所以没意外的话接着会写 tempbond -clone [契约道具id]
这是最复杂的,因为契约道具有武器、有防具,甚至道具,
在原作中随从无法自己选择武器,圣殿可行的做法是...
一、闯区域拿物品,再依该物品「登录」为随从道具。例如
「破魔石」的相对映道具即为破魔之剑。(这是举例)
二、依照随从的主职业,「随机」产生对映物品。例如剑类
随从道具有三把,随机给予一把。
我个人原先规划是采二的方案,但目前倾向一的方案,因为
与原作不同比较有趣,再者让玩家选择自己想要的道具也不
错。
(不过这也确定了[卡片]的设计也会与原作不同)
※ 编辑: laechan 来自: 119.15.246.19 (03/02 20:15)
15F:推 justinj :..一的话也就说要有最烂..到最好的物品..... 03/03 09:05
16F:→ laechan :不是,主要是依功能,道具本身没有好烂的差异,但是有装 03/03 09:29
17F:→ laechan :备位置及种类的差异 03/03 09:29
18F:→ laechan :(某些以前的 auc eq 可以拿来用) 03/03 09:30
19F:推 justinj :......那那些生产的装备有时效性吧... 03/03 11:54