世界樹の迷宮呪い状態再現インクル

データ作ってると色々再現しようのないものがあるわけで。
そんな中で、世界樹の呪い状態が再現できそうなのでインクル作った。
データカテゴリとは何か違う気もするが、
世界樹データのためのものだし、問題ないだろう。


http://park15.wakwak.com/~wizard/wizard/neta/SQnoroiTest_100731.zip
テストシナリオは作ったので動きがみたい人はどうぞ。
援護とかにも対応できると思っていたのだけど、
援護だと追加攻撃が発動してくれないようなので対応できてません。
他にもシステムメッセージが色々違和感あるとか問題点は多いかと。

# unit.txt
ノロイダケ(SQ3)
ノロイダケ, (世界樹の迷宮), 1, 3
陸, 3, S, 1000, 40
特殊能力
弱点=植
レジストLv-10=呪いの菌糸 全
呪=解説 呪い攻撃 "毒属性がクリティカルした時に発動し、相手を呪い状態にする。"
9900, 80, 900, 75
CACB, SQ3_NoroidakeU.bmp
呪いの胞子,                0, 1, 4, +30,  -, 10,   -, AAAA, +70, 呪術毒L0
石突き,                 1200, 1, 1,  +0,  -,  -,   -, AAAA, -10, 突

# animation.txt
世界樹の迷宮
呪いの胞子(クリティカル), 呪い $(戦闘アニメ_呪いクリティカル本体())

汎用
呪い発動(準備), 呪い発動 $(戦闘アニメ_呪い発動準備本体())
呪い発動(攻撃), 呪い発動 $(戦闘アニメ_呪い発動攻撃本体())
呪い発動(回避), 0.01;-.wav
呪い発動(解説), -

# Item.txt
呪い状態再現アイテム
呪い状態再現アイテム, 固定, 非表示
特殊能力
追加攻撃=状態:呪い 呪い発動 全 100 命中時限定 連鎖不可 (呪い状態)
状態:呪い=解説 "与えたダメージの1/2が呪いによって返り、自分のHPが減少する。このダメージによっては破壊されない"
0, 0, 0, 0, 0
呪い発動,                  0, 1, 99, -999,  -,  -,   -, AAAA, -999, -(追加攻撃)

# Include.eve
*攻撃 全 全:

Set 呪い再現HP情報[対象ユニットID] HP(対象ユニットID)
Set 呪い再現HP情報[相手ユニットID] HP(相手ユニットID)

Exit

*攻撃後
Unset 呪い再現HP情報
Exit

戦闘アニメ_呪いクリティカル:

Return

戦闘アニメ_呪いクリティカル本体:
Local UID
Set UID 相手ユニットID
# 再現アイテムを装備してない人に装備させる
If IsEquiped(UID, 呪い状態再現アイテム) = 0 Then

# 味方陣営の場合は他の仲間からアイテムを奪ってしまうので新しく作成
 If Party(UID) = "味方" Then
  Item 呪い状態再現アイテム
 EndIf
 Equip UID 呪い状態再現アイテム

EndIf

# 今のところは3ターン固定
SetStatus UID 呪い 3

Return 0

# 処理順説明。この順番で処理されている。
# 準備本体:戦闘前HPと現在HPを比較して呪いダメージを計算。スキップされない。
#           現在HP−戦闘前HPで計算するので呪いダメージはマイナスの値。
# 準備:呪いダメージがマイナス値になっている場合に出血アニメ表示。右クリックでスキップされる。
# 攻撃本体:呪いダメージがマイナス値になっている場合、HPを減少させる。
#           その後、念のため呪いダメージをリセット。スキップされない。
# 攻撃:特に何もすることはない。攻撃本体を呼び出すためのダミー。


戦闘アニメ_呪い発動準備:
If 呪いダメージ < 0 Then
  Call 戦闘アニメ_出血準備
EndIf
Return

戦闘アニメ_呪い発動準備本体:
Local UID
Set UID 相手ユニットID

If 呪い再現HP情報[UID] > 0 Then
# 戦闘前のHP取得が上手くいかなかった時の為の保険

# 呪いダメージの計算だけ行う
 Set 呪いダメージ (HP(UID) - 呪い再現HP情報[UID])

EndIf

Return 0

戦闘アニメ_呪い発動攻撃:
Return

戦闘アニメ_呪い発動攻撃本体:
Local UID
Set UID 対象ユニットID
 If 呪いダメージ < 0 Then
  Set HP(UID) (HP(UID) + 呪いダメージ / 2)
 EndIf
 Unset 呪いダメージ
Return 0