作者 主题: XML 威能  (阅读 6699 次)

副标题:

离线 Sheepy

  • 純良的白色生物
  • 風紀委
  • *
  • 帖子数: 14117
  • 苹果币: 2
XML 威能
« 于: 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
« 上次编辑: 2012-07-20, 周五 16:26:53 由 Sheepy »
(10:23:05 PM) 欧剃: 咩的笑话一般不仅冷,而且是黑漆漆的阴冷?
(10:23:11 PM) 布布: 这只是,对别人来说是掉SAN值的腹黑,对咩来说仅仅是笑话而已
(10:23:45 PM) ***Sheepy 聳肩, 一笑置之
(10:24:17 PM) ***布布 死了
  D&D 4e 歿土英豪 頭兩章試譯

离线 Sheepy

  • 純良的白色生物
  • 風紀委
  • *
  • 帖子数: 14117
  • 苹果币: 2
Re: XML 威能
« 回帖 #1 于: 2012-07-20, 周五 16:26:55 »
<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>
« 上次编辑: 2012-12-27, 周四 09:17:30 由 Sheepy »
(10:23:05 PM) 欧剃: 咩的笑话一般不仅冷,而且是黑漆漆的阴冷?
(10:23:11 PM) 布布: 这只是,对别人来说是掉SAN值的腹黑,对咩来说仅仅是笑话而已
(10:23:45 PM) ***Sheepy 聳肩, 一笑置之
(10:24:17 PM) ***布布 死了
  D&D 4e 歿土英豪 頭兩章試譯

离线 Sheepy

  • 純良的白色生物
  • 風紀委
  • *
  • 帖子数: 14117
  • 苹果币: 2
Re: XML 威能
« 回帖 #2 于: 2012-12-27, 周四 10:24:26 »
所需實現流程:

 角色移動
├ 消耗移動動作
└ 角色離開敵人威脅區域
 └ 敵人 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:角色免疫瀕死的昏迷。
(10:23:05 PM) 欧剃: 咩的笑话一般不仅冷,而且是黑漆漆的阴冷?
(10:23:11 PM) 布布: 这只是,对别人来说是掉SAN值的腹黑,对咩来说仅仅是笑话而已
(10:23:45 PM) ***Sheepy 聳肩, 一笑置之
(10:24:17 PM) ***布布 死了
  D&D 4e 歿土英豪 頭兩章試譯

离线 OckhamTheRazor

  • 根源索寻者
  • *
  • 帖子数: 5550
  • 苹果币: 3
Re: XML 威能
« 回帖 #3 于: 2012-12-27, 周四 10:27:58 »
不知道回帖好不好
但是做这个会累死吧...

离线 Sheepy

  • 純良的白色生物
  • 風紀委
  • *
  • 帖子数: 14117
  • 苹果币: 2
Re: XML 威能
« 回帖 #4 于: 2012-12-27, 周四 10:45:24 »
不知道回帖好不好
但是做这个会累死吧...
XML 那邊沒做過,只是白日夢。

堆疊那個約大半年前沒想好就去車,撞牆死得很慘。

現在因為想做狀態管理器所以重新構思中,吸納了之前的經驗,有些進展,但依然障礙重重。主要是很複雜,看上去很簡單的東西也可能會受各種千奇百怪的因素改變。

切身地感受到 D&D 真不是個普通人能隨便拿上手就玩的東西...
« 上次编辑: 2012-12-27, 周四 10:47:21 由 Sheepy »
(10:23:05 PM) 欧剃: 咩的笑话一般不仅冷,而且是黑漆漆的阴冷?
(10:23:11 PM) 布布: 这只是,对别人来说是掉SAN值的腹黑,对咩来说仅仅是笑话而已
(10:23:45 PM) ***Sheepy 聳肩, 一笑置之
(10:24:17 PM) ***布布 死了
  D&D 4e 歿土英豪 頭兩章試譯

离线 Sheepy

  • 純良的白色生物
  • 風紀委
  • *
  • 帖子数: 14117
  • 苹果币: 2
Re: XML 威能
« 回帖 #5 于: 2014-05-21, 周三 14:05:47 »
在腦中想很簡單。

畫出來發現沒那麼簡單。

下圖大部分都已經實作。
« 上次编辑: 2014-05-21, 周三 15:14:41 由 Sheepy »
(10:23:05 PM) 欧剃: 咩的笑话一般不仅冷,而且是黑漆漆的阴冷?
(10:23:11 PM) 布布: 这只是,对别人来说是掉SAN值的腹黑,对咩来说仅仅是笑话而已
(10:23:45 PM) ***Sheepy 聳肩, 一笑置之
(10:24:17 PM) ***布布 死了
  D&D 4e 歿土英豪 頭兩章試譯

离线 Sheepy

  • 純良的白色生物
  • 風紀委
  • *
  • 帖子数: 14117
  • 苹果币: 2
Re: XML 威能
« 回帖 #6 于: 2015-01-24, 周六 15:02:14 »
雖然不再用 XML 了,但居然還沒放棄... 無論如何精簡架構都是無補於事呢
« 上次编辑: 2015-01-24, 周六 15:43:09 由 Sheepy »
(10:23:05 PM) 欧剃: 咩的笑话一般不仅冷,而且是黑漆漆的阴冷?
(10:23:11 PM) 布布: 这只是,对别人来说是掉SAN值的腹黑,对咩来说仅仅是笑话而已
(10:23:45 PM) ***Sheepy 聳肩, 一笑置之
(10:24:17 PM) ***布布 死了
  D&D 4e 歿土英豪 頭兩章試譯