Re: [闲聊] 宠物系统

楼主: laechan (挥泪斩马云)   2019-09-23 16:33:16
六日累翻了,先不弄,现在也很想睡。
先看可不可行。
首先依照 dummy.c 的写法,它是 inherit MONSTER; 所以我大概
得让佣兵所的目录位于 /adm/daemons 下例如与科隆塔同一目录,
在这个地方下像是 hire [玩家id] 的指令,就可以进行佣兵的雇
用。
方便的设计是透过该房间 clone 出 dummy 然后:
call_other(dummy,"loading_xxx","玩家id");
我刚刚试是可以的,玩家下指令可不可以我就不清楚,要试了才知
道,先当成可以。
该佣兵被叫出来后就会直接变成玩家的佣兵,依下篇
Re: [闲聊] 宠物系统
https://www.ptt.cc/bbs/mud_sanc/M.1566646651.A.7E2.html
预计会改到
/adm/daemons/look_d.c
比方
抠顶机器(Laechan:进阶盗贼)正站在这里。
└带着宠物[洁洁(gigi)]
└带着佣兵[飞影(hiei)]
上面就是我说的可能会让显示看起来较复杂的例子,以后可能还有
带着生命体之类的,RO 的玩家可以同时带这三种出门。
sanc 也可以。
佣兵的英文是 mercenary,简单一点用 guard 也可,假设叫 guard
,那么预计会使用到玩家 temp_data 区的 guard 字段。
/cmds/std/_guard.c
那可能是这样
> guard
佣兵[飞影(hiei)]正跟着你一起行动.
名字: 飞影(hiei)
等级: 120
种族: 石化人
职业: 骑士
能力: 多重攻击Lv1 骑乘攻击Lv1 ....
装备: 基本上可以用虚拟的,看有无必要,大概写得出来..
能力可以在 loading 时就顺便读取及写入,初期我的简单想法是,
比方这个玩家是有学多重攻击的,那就会有多重攻击Lv1,它的意思
是如果玩家雇用这个人当佣兵,它会稍微影响到雇主在多重攻击方
面的相关数值,EX: 连击数。
读取例子则像这样
if(guard=user->query_temp("guard"))
{
if(guard->query("ability/multi-attack"))
num=(num*11)/10;
}
基本上也会有 guard -dehire 这类的解雇语法。
至于其它命令....嘛,或许命令它施展受到限制的辅助法术有可能
做到,像是 guard -cast heal 之类的....guard 指令可以限制玩
家在 -cast 后面能接的法术范围。
不过这不太好改。目前的 start_skill 及 start_effect 都没有把
caster 放在函数的参数内,所以必须由佣兵做为发动的主体,而不
是下 guard 指令的人,除非改 start_skill,以 pray.c 为例
int start_skill(object tar,int lv)
{
object ppl=this_player();
string str=skill_name("pray");
改成
varargs int start_skill(object tar,int lv,object ppl)
{
string str=skill_name("pray");
if(!ppl) ppl=this_player();
至于 start_effect 倒是就还好,有把 user 带进参数内。
初期我会放几个吧,holy power 会优先放看看。
/std/user.c
大概像底下
> hp
第[120]级 抠顶机器(Laechan:进阶盗贼)
生命力 : 100% **************************************************※
精神力 : 100% **************************************************※
内 力 : 100% **************************************************※
宠物:
第[120]级 洁洁(gigi)
生命力 : 109% ************************************************** ※
佣兵:
第[120]级 飞影(hiei)
生命力 : 100% **************************************************※
攻击目标:
第[55]级 游客(Customer)
生命力 : 109% ************************************************** ※
adm/daemons/user_d.c
主要改 quit 函数,当玩家有佣兵然后 quit 时,佣兵会被自动移除。
/adm/simul_efun/new_defance.c
嘛,这里就牵涉到佣兵是要拿来干嘛的,以及需考量到它跟宠物之间的
同质性问题。
例如 ro 的宠物,有附加饲主能力的效果,常驻的除非宠物消失。
ro 的佣兵,则可以帮忙攻击,但没听说可以帮忙格挡,倒是可以招呼到
一些原本会打向玩家的攻击。然后基本上对雇主的能力没啥影响。
也就是说
宠物 佣兵
 可否攻击怪物   X  ○
 可否被怪物攻击  X  ○
 对玩家常驻效果  ○  X
 能否对它下指令  ○  ○ (但是下指令的结果各不相同)
能否让它背东西  X  X
sanc 基本上也会对宠物与佣兵做一些基本区别。
以上是设定稿,看起来可行,择期实装。
LAechan

Links booklink

Contact Us: admin [ a t ] ucptt.com