純美蘋果園
跑團活動區 => 私有分區 => Dreamland => 主题作者是: Sheepy 于 2012-07-20, 周五 16:17:12
-
大工程大工程..
Unit
Slot
Option
Action
Choice
Effect
Event:
initiative
action
- attack
- critical
- violate mark
- move
- forced
- willing
- adjacent
status (changed)
stat (changed)
time
rest
-
<power name="Twin Strikes" spec="Ranger 1 AA" keywords="w,mar">
<attack count="2" defense="A" hit="1[W] dmg">
<var bonus="{StrM}" require="weapon.melee,weapon.melee" set.range.type="melee" />
<var bonus="{DexM}" require="weapon.ranged" set.range.type="ranged" />
</attack>
</power>
<power name="Summon Giant Toad" spec="Druid 1 DA" keywords="i,summoning,pri">
<summon range="5" size="small" speed="5,swim 6" skill="jump+10">
<command range="m3" attack="WvR" attack.hit="d8+{WisM} damage, pull 2" >
<set name="last_target" value="{target}" />
</command>
<command action="instinct">
<exec command="command.1" target="$last_target">
<onfail>
<exec command="command.1">
<onfail>
<move>
<target> <within range="3" enemy="nearest" /> </target>
</move>
</onfail>
</exec>
</onfail>
</exec>
</command>
</summon>
</power>
<power name="Lifeblood" spec="Vryloka U" action="free">
<trigger>
<status actor="you" subject="enemy" to="bloodied|dead"/>
</trigger>
<choice onuse="1">
<option>
<shift range="{spd}" />
</option><option>
<grant thp="5+{halfLv}" />
</option><option>
<bonus roll="attack" amount="+2 power" until="eoynt" />
</option>
</choice>
</power>
<item name="Genasi Soul Armor" spec="4+ uncommon armor" armor="leather,hide">
<choice option="//power.Genasi.lv0" />
<power action="minor" frequency="daily">
<grant power="choice.1" until="eoe" />
</power>
</item>
<item name="Demonbound" spec="3+ uncommon boon">
<power keywords="summoning" action="minor" frequency="daily">
<summon range="r10" size="medium" speed="fly 6 hover" defense="AC+2,Fort+2">
<var level="13+" set.size="large" set.defense="AC+4,Fort+4" set.reach="2" />
<var level="18+" add.keywords="phasing" />
<var level="28+" add.defense="Ref+2,Will+2" />
<command>
<attack range="M1" attack="{PrimeM}+4 vs AC" hit="d8+{PrimeM} damage">
<var level="8+">
<set><hit>
<damage require="target.status.bloodied"> 5 </damage>
<damage> d8+{PrimeM} </damage>
</hit></set>
</var>
<var level="23+" set.range="L2" />
<var level="28+" add.hit="ongoing 10 poison damage se" />
</attack>
</command>
<command action="instinct">
<exec command="command.1" require="target.status.bloodied target.is.enemy">
<onfail>
<move target="adjacent nearest enemy">
<onfail>
<exec command="command.1" require="target.status.bloodied target.is.ally">
<onfail>
<exec command="command.1" tagName="charge" require="target.status.bloodied target.is.ally" />
</onfail>
</exec>
</onfail>
</move>
</onfail>
</exec>
</command>
</summon>
</power>
</item>
<feat name="Weapon Proficiency" source="PHB,HFL,HFK">
<choice option="//item.weapon.mundane" />
<grant proficiency.weapon="choice.1" />
</feat>
<feat name="Divine Channeler" source="DP" require="wis 13, religion">
<choice option="//class.divine" require="hasnot.#" />
<choice option="//class.{choice.1}.power.channel" />
<multiclass> {choice.1} </multiclass>
<grant is="{choice.1}" />
<var require="feature.channel_divinity" grant.power="choice.2">
<else>
<grant feature="feature.divine.channel_divinity" set.frequency="daily" />
<grant power="choice.2" />
</else></var>
</feat>
<feat name="Mighty Crusader Expertise" source="Dr402">
<var req="item.holy_symbol, item.left_hand.is.{item.right_hand}.is.weapon.is.two_handed">
<bonus roll="attack" amount="+1 feat" require="tool.is.{item.holy_symbol}">
<bonus roll="attack" amount="+1 feat" require="tool.is.weapon.is.two_handed.is.{item.left_hand}.is.{item.right_hand}">
<var level="11+" set.bonus.amount="+2" />
<var level="21+" set.bonus.amount="+3" />
</var>
</feat>
-
所需實現流程:
角色移動
├ 消耗移動動作
└ 角色離開敵人威脅區域
└ 敵人 OA
├ 消耗 OA
└ 命中
└ 傷害
└ 角色負血
└ 瀕死
└ 昏迷
└ 倒地
以上是順序發生的。
這時牧師插入反應信心盾:
角色移動
├ 消耗移動動作
└ 角色離開敵人威脅區域
└ 敵人 OA
├ 消耗 OA
└ 命中
└ 傷害
├ 角色負血
│└ 瀕死
│ └ 昏迷
│ └ 倒地
└ 信心盾
├ 消耗打斷
├ 消耗信心盾
└ 角色回血
└ 解除瀕死
但這時遊俠插入干擾攻擊於 OA 命中, 變成:
角色移動
├ 消耗移動動作
└ 角色離開敵人威脅區域
└ 敵人 OA <─────┐
├ 消耗 OA │
├ X 命中 │
│└ X 傷害 ────┼┐
│ ├ X 角色負血 ││
│ │└ X 瀕死 ││
│ │ └ X 昏迷 ││
│ │ └ X 倒地 ││
│ └ X 信心盾 ││
│ ├ 消耗打斷 ││
│ ├ 消耗信心盾 ││
│ └ X 角色回血 ││
│ └ X 解除瀕死││
├ 干擾攻擊 ││
│├ 消耗打斷 ││
│├ 消耗干擾攻擊 ││
│└ 命中 ││
│ ├ 傷害 ││
│ │└ 敵人浴血 ││
│ │ └ 浴血攻擊 ││
│ │ └ 傷害 ││
│ └ 敵命中減值 ─┘│
└ 打失 │
└ 半傷 <─────┘
但由於浴血傷害計算出來後,半傷後依然瀕死,所以牧師依然觸發信心盾
角色移動
├ 消耗移動動作
└ 角色離開敵人威脅區域
└ 敵人 OA <─────┐
├ 消耗 OA │
├ X 命中 │
│└ X 傷害 ────┼┐
│ ├ X 角色負血 ││
│ │└ X 瀕死 ││
│ │ └ X 昏迷 ││
│ │ └ X 倒地 ││
│ └ X 信心盾 ││
│ ├ 消耗打斷 ││
│ ├ 消耗信心盾 ││
│ └ X 角色回血 ││
│ └ X 解除瀕死││
├ 干擾攻擊 ││
│├ 消耗打斷 ││
│├ 消耗干擾攻擊 ││
│└ 命中 ││
│ ├ 傷害 ││
│ │└ 敵人浴血 ││
│ │ └ 浴血攻擊 ││
│ │ └ 傷害 ││
│ └ 敵命中減值 ─┘│
└ 打失 │
└ 半傷 <─────┘
├ 角色負血
│└ 瀕死
│ └ 昏迷
│ └ 倒地
└ 信心盾
├ 消耗打斷
├ 消耗信心盾
└ 角色回血
└ 解除瀕死
系統要求:
1. 行動及行動結果的樹狀堆疊。
2. 在堆疊中的任一階段獲得當前狀態並能列出可選用的能力。
3. 後發事件可以改變(但不移除)前發事件。 (干擾令到命中打失,但已投的數值依然記錄在案)
4. 獲得當前狀態時,會忽略無效的行動/結果。 (干擾後忽略本來的所有命中效果,包括第一次信心盾沒被耗用)
5. 判斷後發事件是否可行時,會忽略尚末發生的事件 (e.g. 干擾攻擊令到命中打失,但本身依然是有效,因為本來是命中)
其他考慮情況1:干擾攻擊命中後受到敵人干擾變成打失。
其他考慮情況2:角色免疫瀕死的昏迷。
-
不知道回帖好不好
但是做这个会累死吧...
-
不知道回帖好不好
但是做这个会累死吧...
XML 那邊沒做過,只是白日夢。
堆疊那個約大半年前沒想好就去車,撞牆死得很慘。
現在因為想做狀態管理器所以重新構思中,吸納了之前的經驗,有些進展,但依然障礙重重。主要是很複雜,看上去很簡單的東西也可能會受各種千奇百怪的因素改變。
切身地感受到 D&D 真不是個普通人能隨便拿上手就玩的東西...
-
在腦中想很簡單。
畫出來發現沒那麼簡單。
下圖大部分都已經實作。
-
雖然不再用 XML 了,但居然還沒放棄... 無論如何精簡架構都是無補於事呢