作者laechan (小太保)
看板mud_sanc
标题Re: [抠顶] 指令 enchant
时间Fri Aug 10 10:43:14 2012
继续 coding,今天主改 /adm/daemons/user_d.c,已先备份
成 /adm/daemons/user_d.20120810,今天 coding 用的背景
音乐是电影【冷光线索】原声带。
=====================================================
if(wp=(object)me->query("weapon1"))
{
wp->check_enchant();
wptype=me->query_wp_type();
}
在读取 wp 那边新增 check_enchant() 程式段,依目前的写
法应该会造成一定程度的 loading,所以有在考虑将附魔改
成不计时间(这样几乎可以不需 check)。
=====================================================
hv : 普攻/en 中额外增加一回合连击数
// 魔法武器专用 for laechan@sanc 2012/08/10
if(wp)
if(i=(int)wp->enchant("hv")>99)
times=times+1+times/6;
这是普攻/en额外增加连击数的设定区,它的概念是,「至少
增加一连击」,然後再额外增加「原本连击数/6」,这样低连
击数时看的到效果(+1),高连击数时也不会增加太多。先暂定
这样。
而理论上可以跟 i 连结,例如..
times=1+(times*(200+i/200))/200;
这个的意思就是,假设玩家现在 enchant 技能值 700,那它
就增加 3.5% 的连击数,而且保证至少加 1 击。扩大来讲,
一个 40 连击的玩家将来假设加到最多 15% 的连击数时,就
变成 46 连击,原则上 50 连击以下我都是默认的,不过,最
好还是别加太多,但也别加太少。
======================================================
fp : 普攻/en 中额外增加经验值及学点
// Laechan@Sanc add in 2012/08/10 for 魔法武器
if(wp)
if(i=wp->enchant("fp")>99)
t4=(t4*(200+i/200))/200;
这是经验值的增加部份,上面公式的意思就是,假设玩家现在
enchant 技能值 700,那获得的经验值就增加 3.5%,设定概念
同上面连击数的部份。
// Laechan@sanc add in 2012/08/10 for 魔法武器
// t2 不为 0 才增幅
if(wp)
if(i=(int)wp->enchant("fp")>99)
t2=t2+1+random(i/1000);
上面的意思是,学点会先经过本来就有的一个计算後,确认不
为 0 时才做增幅,保证加 1,最多加 1+3 这样。
=======================================================
fi : 普攻/en 中额外增加技能熟练度
// Laechan@Sanc add in 2012/08/10 for 魔法武器
if(t1>0 && wp)
if(i=(int)wp->enchant("fi")>0)
t1=t1+(t1*(400+i/400))/400+random((t1*(400+i/400))/400);
这个概念是,假设魔法武器最高 3000,那熟练度额外增加 7.5%
(确定),以及 0~7.5%,即最少 7.5% 最高可到 15%。
=======================================================
z1 : 普攻/en 中随机自动施放 xxx hands 法术
if(wp && tar)
{
if(i=(int)wp->enchant("z1")>99)
{
switch(random(5))
{
case 0:
t1=me->query("skill/burning hands");
"/d/spell/burning_hands"->start_effect(tar,me,t1/100,t1,1+i/1000);
break;
.
.
上面是 z1 的部份(与灵力武器的并效),它的意思是说,在你
打完攻击之後,它还会额外「随机」挑一个 hands 类的法术做
攻击,而且..
1.你施展的 xxx hands 技能值原先可以为 0
(则击出後理论上有可能技能值变 1)
2.不会消耗任何的 sp 值
但是「cleanse」不列入(因为我得确认这技能是不是在新手镇
有被归类为额外学习类技能)。
========================================================
z2 : 普攻/en 攻击对邪恶系怪物一定命中
// 魔法武器专用 for laechan@sanc 2012/08/10
if(wp)
{
if(i=(int)wp->enchant("hv")>99)
times=1+(times*(200+i/200))/200;
if(i=(int)wp->enchant("ad")>99)
if(i/50 > random(100))
dam=(dam*(200+i/200))/200;
if(i=(int)wp->enchant("z2")>99)
if((int)tar->query("ethic")<0)
hit=9999;
}
这是保证命中的部份。本来想跟束缚术并效,但考量实用性,
最後还是决定采这个。不过这个原则上依然不适用「飘浮状态
」。
========================================================
hr : 普攻/en 中只要有击中怪物,就回复一些 pp 值
if(i>0)
{
if(i=(int)wp->enchant("hr")>99)
me->add_3p("pp",1+random(i));
}
这是 hr 的效果,假设玩家 enchant 技能值 700,那麽战斗中
每一轮的 普攻/en 只要有击中怪物时,pp 就回复 1~700。
这个确定是暂定公式,原则上我认为回值+%应该是最理想做法,
但就怕有些几十万 pp 的玩家,比方 50 万,那回 1% 就是5000
以上,所以不可能说回到 10% 那麽多,顶多 1.5%,然後加上值
还有是否加入 sp,我是认为加 sp 的合理性不足。至於 hp 则
是可以的,目前先暂时只做回 pp 的部份。
========================================================
ad : 普攻/en 增加「爆击」机率,此时伤害会提高
// 魔法武器专用 for laechan@sanc 2012/08/10
if(wp)
{
if(i=(int)wp->enchant("hv")>99)
times=1+(times*(200+i/200))/200;
if(i=(int)wp->enchant("ad")>99)
if(i/50 > random(100))
dam=(dam*(200+i/200))/200;
}
增伤的效果部份,跟影响连击数的部份写在一起,它是写在回圈
外的,所以要另外计算「机率」,目前机率暂时采用技能值/50
的做法,比方你 enchant 技能值 700,那发动机率就是 14%,
而增伤值就是 3.5%。
========================================================
再来是改 mob_d.c 的 die 函数。
========================================================
kr : 杀死怪物後 hp/sp/pp 回满
// Laechan@Sanc add in 2012/08/10 for 魔法武器
if(wp)
if((int)wp->enchant("kr")>99)
killer->full_3p(111);
这是 kr 的效果,即击杀怪物时 3p 回满,它的前提是该怪物
没有自订 die 函数,因为有自订的不会触发原先的 die()。
为此得改一下 full_3p,若 hp 超过 hp_src 就无视,以免牧
师的 pure power 效果被覆盖。(已改)
========================================================
km : 杀死怪物後增加得到的金钱数量
// Laechan@snac add in 2012/08/10 for 魔法武器
if(i>0 && wp)
if(max=(int)wp->enchant("km")>99)
i=(i*(200+max/200))/200;
这是 km 的效果,即击杀怪物时可得到较多的金钱部份,其获
得数量最多增加 15%。它同样会先经过一些原始的判断,确定
玩家可获得金钱时(i>0),才额外做加成。
========================================================
接着修改 /cmds/std/_view.c
========================================================
已修改完毕。先随便 wear 一把武器,然後使用 running 指令
贴入底下的东西..
ob=me->query_wp();
i=time();
ob->set_enchant("ad",700,i);
ob->set_enchant("fi",700,i);
ob->set_enchant("fp",700,i);
ob->set_enchant("km",700,i);
ob->set_enchant("kr",700,i);
ob->set_enchant("z1",700,i);
ob->set_enchant("z2",700,i);
ob->set_enchant("hv",700,i);
ob->set_enchant("hr",700,i);
write(identify(ob->enchant())+"\n");
贴好後确认各附魔效果已设入,就可以 view,底下是 view 後
的结果...
狂 风 刀(Crazy_Wind Blade)
────────────────────────────
级数:100
型态:blade
重量:180
价格:7000
杀伤:2800
命中:200
认主:laechan
影响:
str+13 air+8 con-9
附魔:
+3.5% 怪物金钱掉落量
杀死怪物後 hp/sp/pp 全满
14% 的普攻/en的爆击伤害提高
3.5%
普攻/en攻击中随机自动施展 hands 类法术
普攻/en击中怪物回复
1~700 点 pp 值
普攻/en攻击中获得经验值提高
3.5%
普攻/en攻击对邪恶系怪物一定命中
+3.5% 普攻/en一回合连击数
普攻/en攻击中获得熟练度提高
1.7%~3.4%
这是一把狂风刀, 刀身有时会突然卷起一阵狂风, 据说有扫除魔
物的力量.
────────────────────────────
当然实际上玩家使用时最多只能附魔到五种左右。
Laechan
--
※ 发信站: 批踢踢实业坊(ptt.cc)
※ 编辑: laechan 来自: 210.61.157.53 (08/10 15:26)
1F:推 justinj :当拿spiriten时..放没有看到附魔 08/10 21:02
2F:→ laechan :因为 environment 判定问题, 已更正^^ 08/10 21:15