System・Include


※上記の広告は60日以上更新のないWIKIに表示されています。更新することで広告が下部へ移動します。

## SP関連ルーチン ##

## 報復

*攻撃 全 全:
If (SpecialPower(相手ユニットID,報復) + SpecialPower(対象ユニットID,報復)) = 0 Exit
If SpecialPower(相手ユニットID,報復) = 1 Then
Set SP報復_相手HP[相手ユニットID] HP(相手ユニットID)
Endif
If SpecialPower(対象ユニットID,報復) = 1 Then
Set SP報復_相手HP[対象ユニットID] HP(対象ユニットID)
Endif
Exit

*攻撃後 全 全:
Local SP報復_HP補正 SP報復_攻撃者 SP報復_防御者 SP報復_消費霊力 SP報復_攻撃者現HP SP報復_攻撃者元HP SP報復_防御者元HP

If (SpecialPower(相手ユニットID,報復) + SpecialPower(対象ユニットID,報復)) = 0 Then
UnSet SP報復_相手HP
Exit
Endif

If ((Info(ユニット,相手ユニットID,武器,相手ユニット使用武器,属性所有,霊) + Info(ユニット,相手ユニットID,武器,相手ユニット使用武器,属性所有,プ)) _
* Info(ユニット,相手ユニットID,特殊能力所有,霊力変換器)) > 0 Then
If Plana(相手ユニットID) < Info(ユニット,相手ユニットID,特殊能力レベル,霊力変換器) Then
Set SP報復_消費霊力[防御者] Min((Max(Info(ユニット,相手ユニットID,武器,相手ユニット使用武器,属性レベル,霊),_
Info(ユニット,相手ユニットID,武器,相手ユニット使用武器,属性レベル,プ)) * 5),(Info(ユニット,相手ユニットID,特殊能力レベル,霊力変換器) - Plana(相手ユニットID)))
Incr SP報復_HP補正[防御者] (SP報復_消費霊力[防御者] * 10 * (SP報復_相手HP[相手ユニットID] / (Info(ユニット,相手ユニットID,最大HP))))
Endif
Endif

If ((Info(ユニット,対象ユニットID,武器,対象ユニット使用武器,属性所有,霊) + Info(ユニット,対象ユニットID,武器,対象ユニット使用武器,属性所有,プ)) _
* Info(ユニット,対象ユニットID,特殊能力所有,霊力変換器)) > 0 Then
If Plana(対象ユニットID) < Info(ユニット,対象ユニットID,特殊能力レベル,霊力変換器) Then
Set SP報復_消費霊力[攻撃者] Min((Max(Info(ユニット,対象ユニットID,武器,対象ユニット使用武器,属性レベル,霊),_
Info(ユニット,対象ユニットID,武器,対象ユニット使用武器,属性レベル,プ)) * 5),(Info(ユニット,対象ユニットID,特殊能力レベル,霊力変換器) - Plana(対象ユニットID)))
Incr SP報復_HP補正[攻撃者] (SP報復_消費霊力[攻撃者] * 10 * (SP報復_相手HP[対象ユニットID] / (Info(ユニット,対象ユニットID,最大HP))))
Endif
Endif

If Info(ユニット,相手ユニットID,武器,相手ユニット使用武器,属性所有,失) = 1 Then
Incr SP報復_HP補正[防御者] (Info(ユニット,相手ユニットID,武器,相手ユニット使用武器,属性レベル,失) * Info(ユニット,相手ユニットID,最大HP) * 0.1)
Endif
If Info(ユニット,対象ユニットID,武器,対象ユニット使用武器,属性所有,失) = 1 Then
Incr SP報復_HP補正[攻撃者] (Info(ユニット,対象ユニットID,武器,対象ユニット使用武器,属性レベル,失) * Info(ユニット,対象ユニットID,最大HP) * 0.1)
Endif


If (SpecialPower(相手ユニットID,報復) + SpecialPower(対象ユニットID,報復)) = 2 Then
Set SP報復_攻撃者 対象ユニットID
Set SP報復_防御者 相手ユニットID
Set SP報復_攻撃者元HP SP報復_相手HP[対象ユニットID]
Set SP報復_攻撃者現HP HP(対象ユニットID)
Set SP報復_防御者元HP SP報復_相手HP[相手ユニットID]
Unset SP報復_相手HP

If (HP(SP報復_防御者) + SP報復_HP補正[防御者] + 1) < SP報復_防御者元HP Then
ClearSpecialPower SP報復_防御者 報復
Call SP報復メインルーチン SP報復_攻撃者 _
(SP報復_防御者元HP - SP報復_HP補正[防御者] - HP(SP報復_防御者))
Endif
If (Status(SP報復_攻撃者) = 出撃) And _
((SP報復_攻撃者現HP + SP報復_HP補正[攻撃者] + 1) < SP報復_攻撃者元HP) Then
ClearSpecialPower SP報復_攻撃者 報復
Call SP報復メインルーチン SP報復_防御者 _
(SP報復_攻撃者元HP - SP報復_HP補正[攻撃者] - SP報復_攻撃者現HP)
Endif
Exit
Endif

If SpecialPower(相手ユニットID,報復) = 1 Then
If (HP(相手ユニットID) + SP報復_HP補正[防御者] + 1) < SP報復_相手HP[相手ユニットID] Then
ClearSpecialPower 相手ユニットID 報復
Call SP報復メインルーチン 対象ユニットID _
(SP報復_相手HP[相手ユニットID] - HP(相手ユニットID) - SP報復_HP補正[防御者])
Exit
Endif
Endif

If SpecialPower(対象ユニットID,報復) = 1 Then
If (HP(対象ユニットID) + SP報復_HP補正[攻撃者] + 1) < SP報復_相手HP[対象ユニットID] Then
ClearSpecialPower 対象ユニットID 報復
Call SP報復メインルーチン 相手ユニットID _
(SP報復_相手HP[対象ユニットID] - HP(対象ユニットID) - SP報復_HP補正[攻撃者])
Exit
Endif
Endif
Unset SP報復_相手HP
Exit



SP報復メインルーチン:
Local SP報復_ダメージ
Set SP報復_ダメージ Int((Args(2) * 1.5))
If HP(Args(1)) < (SP報復_ダメージ + 10) Then
Set SP報復_ダメージ (HP(Args(1)) - 10)
Endif
If SP報復_ダメージ < 0 Then
Set SP報復_ダメージ 0
Endif
Center X(Args(1)) Y(Args(1))
Explode M X(Args(1)) Y(Args(1))
AutoTalk システム
$(Nickname(Args(1)))は$(SP報復_ダメージ)の報復ダメージを受けた。
End
HP(Args(1)) = (HP(Args(1)) - SP報復_ダメージ)
UnSet SP報復_相手HP
Return
ツールボックス

下から選んでください:

新しいページを作成する
ヘルプ / FAQ もご覧ください。