作者laechan (小太保)
看板mud_sanc
標題[wizs] 抗性的判斷方式
時間Mon May 24 15:24:09 2010
我想試看看以我現在的功力,能不能寫出較簡略的判斷版本。
首先假設某怪抗火 30%、抗冰 20%。設定上通常是降子..
set("xxx/fire",30);
set("xxx/ice",20);
shut_d.c 則設定了 ({"physics","fire",lv}) 這樣的格式,
假設也不變動,那麼怪物需再設定的部份就包括..
set("lv",??);
set("xxx/physics",50); // 比方抗物理
set("xxx/magics",50); // 比方這叫抗魔法
lv 的部份就可以搭配之前說的怪物分群方案,Lv1 的攻擊打
到 Lv2 的怪傷害就降低之類的,弄個對映表。
假設怪物設 physics 抗 50、抗火 30,那用 furiousaxe 打
這隻怪,傷害就先減半,再減 30%..
kinds=shut_kinds; // 讀取 ({"physics","fire",1});
dam=dam*(100-(int)mob->query("xxx/"+shut_kinds[0])/100;
if(dam>0)
dam=dam*(100-(int)mob->query("xxx/"+shut_kinds[1]))/100;
if(dam>0)
dam=dam*(Lv影響公式);
然後在這邊得到最終 dam。在判斷過程中假設遇到抗物理100
的那第一行的 dam = 0,這時底下的就不需要再判斷。
而怪物使用 shut 的部份「就依該怪物的 lv 多少,shut 的
lv 就帶多少」,而沒有給 magics 的攻擊就視為物理攻擊,
在這情況下 shut( "fire" ) 就等於 shut( ({"physics","fire",怪物lv}) )
結論...
一、先做怪物分群
二、然後對所有特攻技能檔設定 physics/magics、攻擊屬性
以及 lv 值。
(這是最大的工程)
三、在 mob_d.c 的 Create 函數內先內建抗性。
四、然後才是實裝抗性系統,使該系統的計算式能得到最簡化
五、最後才是逐一修改所有怪物,使其具有抗性設定。
Laechan
--
※ 發信站: 批踢踢實業坊(ptt.cc)
※ 編輯: laechan 來自: 61.225.162.40 (05/24 15:25)
1F:→ aiggkimd :狂怒還附火屬?那不是很多技能都要改?例如四大掌.. 05/24 16:26
2F:→ laechan :是啊,但基本上他們都是物理攻擊,只有以cast,spell擊 05/24 16:27
3F:→ laechan :出的才能算magics 05/24 16:28
4F:→ laechan :(不過五手也會寫為物理攻擊) 05/24 16:28
5F:→ laechan :或者以五手擊出的所有攻擊, Lv 只能算 1 或 < n 05/24 16:28
6F:→ aiggkimd :還滿多技能照字面上直覺就能知道是哪種屬性 05/24 16:28
7F:→ laechan :基本上有完全抗物理攻擊的怪,也會有完全抗法術攻擊的 05/24 16:29
8F:→ aiggkimd :目前覺得抗物理的太多..出團法牧多還打比較快 05/24 16:32
9F:→ aiggkimd :抗性這東西在任何遊戲內都算重要的一環,還滿有趣的 05/24 16:33
10F:→ justinj :希望不要寫出完抗物理+魔法的怪...總覺得有人會寫... 05/24 17:11
11F:→ laechan :有人會寫啊 05/24 17:13
12F:→ aiggkimd :至少不會兩樣都全抗...但是我覺得這樣肯定會有物理跟 05/24 17:17
13F:→ aiggkimd :魔法各抗99%的怪= = 05/24 17:17
14F:→ Layase1 :虛影那種不就是了嗎 05/24 18:03
15F:→ laechan :兩種都100那個ok,因為shut2跟shut無關.而如果再連必 05/25 08:16
16F:→ laechan :中都擋,那我會請那個wiz自己帶團打,打不贏→請他修改 05/25 08:17
17F:→ justinj :目前我所知道防必中全都是norr的區域..avert 05/25 10:38
18F:推 hlead :海船不是我區域 and 防必中怪大多不是我寫得。 05/25 12:18