[指令] 魔法武器(enchant)效果說明

看板mud_sanc (Sanctuary - 聖殿)作者 (小太保)時間13年前 (2012/08/10 10:43), 編輯推噓1(101)
留言2則, 2人參與, 最新討論串1/1
繼續 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)

08/10 21:02, , 1F
當拿spiriten時..放沒有看到附魔
08/10 21:02, 1F

08/10 21:15, , 2F
因為 environment 判定問題, 已更正^^
08/10 21:15, 2F
文章代碼(AID): #1G97L64Q (mud_sanc)
文章代碼(AID): #1G97L64Q (mud_sanc)