[ リストに戻る ]
No.80へ返信

all インクルya等の丸投げツリー - としあき - 2010/09/25(Sat) 09:52:50 [No.18]
バトコン・サイズ差補正関連だけ - としあき - 2011/10/23(Sun) 10:40:42 [No.95]
ザオリクとかレイズの再現インクル - としあき - 2011/09/01(Thu) 19:33:07 [No.91]
Re: インクルya等の丸投げツリー - としあき - 2011/09/01(Thu) 19:32:10 [No.90]
今風バトコン(2011/09/01版) - としあき - 2011/02/13(Sun) 10:04:50 [No.80]
終了メッセージ - としあき - 2010/11/05(Fri) 22:48:18 [No.63]
必中武器とかの作り方・バトコン編 - としあき - 2010/10/20(Wed) 18:12:19 [No.51]
[削除] - - 2010/10/18(Mon) 10:12:14 [No.50]
[削除] - - 2010/10/17(Sun) 22:50:09 [No.49]
[削除] - - 2010/10/17(Sun) 22:45:22 [No.48]
Re: インクルや戦闘アニメ等の丸投げツリー - としあき - 2010/09/25(Sat) 09:54:54 [No.19]
[削除] - - 2010/09/25(Sat) 10:17:08 [No.28]
[削除] - - 2010/10/17(Sun) 22:43:28 [No.47]
Re: インクルや戦闘アニメ等の丸投げツリー - としあき - 2010/09/25(Sat) 10:04:11 [No.27]
Re: インクルや戦闘アニメ等の丸投げツリー - としあき - 2010/09/25(Sat) 10:02:54 [No.26]
Re: インクルや戦闘アニメ等の丸投げツリー - としあき - 2010/09/25(Sat) 10:02:13 [No.25]
Re: インクルや戦闘アニメ等の丸投げツリー - としあき - 2010/09/25(Sat) 10:00:22 [No.24]
Re: インクルや戦闘アニメ等の丸投げツリー - としあき - 2010/09/25(Sat) 09:59:32 [No.23]
Re: インクルや戦闘アニメ等の丸投げツリー - としあき - 2010/09/25(Sat) 09:58:52 [No.22]
Re: インクルや戦闘アニメ等の丸投げツリー - としあき - 2010/09/25(Sat) 09:57:28 [No.21]
Re: インクルや戦闘アニメ等の丸投げツリー - としあき - 2010/09/25(Sat) 09:56:16 [No.20]


今風バトコン(2011/09/01版) (No.18 への返信) - としあき

# 昨今のスパロボ風バトコン+α
# 最終更新日:2011/09/01
# ・各能力追加
# ・一部ルーチンを修正
# <注意事項>
# 「指揮官」技能はユニット数が多いと処理がべらぼうに重くなる危険性があるため
# シナリオに応じて外したほうが無難です


################################################################################
### alias.txt ##################################################################
################################################################################

################################################################################
### パイロット能力 #############################################################

### パラメータ上昇系 ###--------------------------------------------------------

###### Lv制能力

NT
特殊能力ニュータイプ=NT
NT=解説 "命中率・回避率に +$((Skill(PilotID(), 特殊能力ニュータイプ) _
- (1 + (Max(Skill(PilotID(), 特殊能力ニュータイプ) - 5, 0) \ 2))) * 5)% の修正を与え、;_
マップ兵器以外の「サ」属性武器の射程を +$(Max(Skill(PilotID(), 特殊能力ニュータイプ) - 5, 0) \ 2) する。"

強化人間
特殊能力強化人間=強化人間
強化人間=解説 "命中率・回避率に +$((Skill(PilotID(), 特殊能力強化人間) _
- (1 + (Max(Skill(PilotID(), 特殊能力強化人間) - 5, 0) \ 2))) * 4)% の修正を与え、;_
マップ兵器以外の「サ」属性武器の射程を +$(Max(Skill(PilotID(), 特殊能力強化人間) - 5, 0) \ 2) する。"

PSI
特殊能力PSI=PSI
PSI=解説 "命中率・回避率に +$(Skill(PilotID(), 特殊能力PSI) * 2)% の修正を与える。"

螺旋力
特殊能力螺旋力=螺旋力
螺旋力=解説 "命中率に +$(Skill(PilotID(), 特殊能力螺旋力) * 2)% の修正を与え、;_
戦闘中に受けるダメージを $(99 - Skill(PilotID(), 特殊能力螺旋力))% に軽減する。"

勇者
特殊能力勇者=勇者
勇者=解説 "命中率・回避率に +$((Skill(PilotID(), 特殊能力勇者) - 1) * 2)% の修正を与え、;_
$(Term("装甲"))値・$(Term("CT率"))に +$(Max((Skill(PilotID(), 特殊能力勇者) - 1) * 2 - 1, 0))% の修正を与える。"

新底力
特殊能力新底力=底力
底力=解説 "命中率・回避率に +$(Call("SKILL_REALPOWER", UnitID()) * 5)% の修正を与え、;_
$(Term("装甲"))値・$(Term("CT率"))に +$(Call("SKILL_REALPOWER", UnitID()) * 10)% の修正を与える。;_
(技能レベルと残り$(Term("HP"))に応じて上昇値は変動する)"

指揮官
特殊能力指揮官=指揮官
指揮官=解説 "半径$(Skill(PilotID(), 特殊能力指揮官) + 1)マス以内の全ての味方ユニットの;_
命中率と回避率に +5% の修正を与える。;(対象が技能所持者に1マス近づく度に+5%ずつ増加);_
なお、この技能の補正が重複する場合は、;最も高い補正値のみ適応する。"

###### 非Lv制能力

天才
特殊能力天才=天才
天才=解説 "命中率・回避率・$(Term("CT率"))に +20% の修正を与える。"

見切り
特殊能力見切り=見切り
見切り=解説 "気力130以上で発動。;最終命中率・最終回避率・$(Term("CT率"))に +10% の修正を与える。"


特殊能力極=極
極=解説 "気力130以上で発動。;最終命中率・最終回避率・$(Term("CT率"))に +30% の修正を与える。"

SEED
特殊能力SEED=SEED
SEED=解説 "気力130以上で発動。;_
最終命中率・最終回避率・$(Term("CT率"))に +20% の修正を与え、;戦闘での与ダメージが1.1倍になる。"

予知
特殊能力予知=予知
予知=解説 "気力130以上で発動。;反撃時、最終回避率に +30% の修正を与える。"

### 攻撃系 ###------------------------------------------------------------------

アタッカー
特殊能力アタッカー=アタッカー
アタッカー=解説 "気力130以上で発動。;戦闘での与ダメージが1.1倍になる。"

リベンジ
特殊能力リベンジ=リベンジ
リベンジ=解説 "反撃時の与ダメージが1.1倍になる。"

サイズ差補正無視
特殊能力サイズ差補正無視=サイズ差補正無視
サイズ差補正無視=解説 "サイズ差によって攻撃のダメージと命中率が低下しない。"

精密攻撃
特殊能力精密攻撃=精密攻撃
精密攻撃=解説 "クリティカル発生時、ダメージが1.5倍になる。"

### 防御系 ###------------------------------------------------------------------

ガード
特殊能力ガード=ガード
ガード=解説 "気力130以上で発動。;戦闘での被ダメージが0.8倍になる。"

ブロッキング
特殊能力ブロッキング=ブロッキング
ブロッキング=解説 "「切り払い」「シールド防御」を発動させるために必要。;_
発動確率は相手との技量差で決まる。"

### 援護系 ###------------------------------------------------------------------

連携攻撃
統率Lv4=非表示
特殊能力連携攻撃=連携攻撃
連携攻撃=解説 "援護攻撃が敵の反撃前に発動する。;_
また、援護攻撃が必ずクリティカルになる。"

### 気力系 ###------------------------------------------------------------------

気力+(回避)
特殊能力気力回避=気力+(回避)
気力+(回避)=解説 "敵の攻撃を回避した時、;本来の気力の増減に加えて気力を +1 する。"

気力+(撃破)
特殊能力気力破壊=気力+(撃破)
気力+(撃破)=解説 "味方の誰かが敵ユニットを破壊した時、;本来の気力の増減に加えて気力を +1 する。"

気力+(ダメージ)
特殊能力気力被弾=気力+(ダメージ)
気力+(ダメージ)=解説 "敵からダメージを受けた時、;本来の気力の増減に加えて気力を +2 する。"

気力+(命中)
特殊能力気力命中=気力+(命中)
気力+(命中)=解説 "敵に攻撃が命中した時、;本来の気力の増減に加えて気力を +1 する。"

戦意高揚
特殊能力戦意高揚=戦意高揚
戦意高揚=解説 "2ターン目以降から発動。;毎ターン気力を +3 する。"

戦闘後気力低下
特殊能力気力低下=戦闘後気力低下
戦闘後気力低下=解説 "戦闘後に相手の気力を -3 する。;_
ただし使用武器がマップ兵器の場合、相手の性格が「機械」の場合は無効。"

### その他 ###------------------------------------------------------------------

Bセーブ
特殊能力Bセーブ=Bセーブ
Bセーブ=解説 "全武器の弾数が1.5倍になる"

Eセーブ
特殊能力Eセーブ=Eセーブ
Eセーブ=解説 "武器とアビリティの$(Term("EN"))消費が20%減少する"

ダッシュ
特殊能力ダッシュ=ダッシュ
ダッシュ=解説 "ユニットの$(Term("移動力"))に +1 の修正を与える。;_
また、気力130以上で更に +1 の修正を与える。"

ダブルアタック
特殊能力DA=ダブルアタック
ダブルアタック=解説 "自身の$(Term("技量"))が相手より20以上高い場合、;_
攻撃直後に同じ武器で再攻撃を行う。"

パーツ供給
特殊能力パーツ供給=パーツ供給
パーツ供給=解説 "隣接するユニットに消費系強化パーツを使用する事ができる。"

ヒット&アウェイ
特殊能力HA=ヒット&アウェイ
ヒット&アウェイ=解説 "移動せずに攻撃した場合、再行動できる。;_
ただし、再行動中は攻撃不能状態になる。"

連続行動
特殊能力連続行動=連続行動
連続行動=解説 "気力120以上で敵を破壊した場合、再行動できる。;_
この権利は1フェイズ中に一度だけであり、;メインパイロットが変わっても権利は復活しない。"

################################################################################
### ユニット能力 ###############################################################

### パラメータ上昇系 ###--------------------------------------------------------

ODEシステム
特殊能力ODEシステム=ODEシステム
ODEシステム=解説 "自軍フェイズ開始時に発動。;_
最終命中率・最終回避率に +$(SKL_FRAG[ODE, Party(PilotID())])% の修正を与える。;_
(ターン数と能力所持ユニット数に応じて補正値は変動する)"

### 防御系 ###------------------------------------------------------------------

# 剣装備
# 特殊能力剣装備=剣装備
# 剣装備=解説 "「ブロッキング」能力を所持している場合のみ、一定確率で発動。_
# 戦闘時、相手の「武突実」属性攻撃を切り払い、無効化する。"

盾装備
大型シールド=盾装備
特殊能力盾装備=盾装備
盾装備=解説 "戦闘時、防御を選択した場合にシールド防御が発動する。;_
ただし「ブロッキング」を所持している場合は、;防御を選択しなくても一定確率で発動する。"

### その他 ###------------------------------------------------------------------

螺旋力発動
HP回復Lv1 (気力Lv3)
特殊能力螺旋力発動=螺旋力発動 <気力Lv3>
螺旋力発動=解説 "気力130以上で発動。;「HP回復Lv1」が付加され、_
気力と螺旋力レベルに応じて攻撃のダメージが増加する。"

空中EN消費無効
特殊能力空中EN消費無効=空中EN消費無効
空中EN消費無効=解説 "空中での毎ターンの$(Term("EN"))消費が無くなる。"

################################################################################
### システム用 #################################################################

照準値強化
特殊能力照準値強化=非表示

ユニット共通エリアス
パイロット能力強化="命中時気力増加Lv1=非表示" (気力+(命中))
パイロット能力強化="回避時気力増加Lv1=非表示" (気力+(回避))
パイロット能力強化="損傷時気力増加Lv2=非表示" (気力+(ダメージ))
最大弾数増加Lv1 (Bセーブ)
EN消費減少Lv2 (Eセーブ)
移動力強化Lv1=非表示 (ダッシュ !気力Lv3)
移動力強化Lv2=非表示 (ダッシュ 気力Lv3)
攻撃属性=非表示 改L15 !改 !M !R
攻撃属性=非表示 痛L-1 !痛 (!精密攻撃)
装甲強化Lv-0.5=非表示 (ランクLv1 !ランクLv2)
装甲強化Lv-1=非表示 (ランクLv2 !ランクLv3)
装甲強化Lv-1.5=非表示 (ランクLv3 !ランクLv4)
装甲強化Lv-2=非表示 (ランクLv4 !ランクLv5)
装甲強化Lv-2.5=非表示 (ランクLv5 !ランクLv6)
装甲強化Lv-3=非表示 (ランクLv6)

サイコミュ用エリアス
サ=解説 思念誘導攻撃 "パイロットのNT、または強化人間の技能Lvが_
$(Info(UnitID(), 武器, 対象ユニット使用武器番号, 属性レベル, サ))_
以上で;なければ使用する事ができない。;また、この攻撃はECMによる影響を受けない。"
射程延長Lv1=サ (特殊能力ニュータイプLv7 or 特殊能力強化人間Lv7 !特殊能力ニュータイプLv9 !特殊能力強化人間Lv9)
射程延長Lv2=サ (特殊能力ニュータイプLv9 or 特殊能力強化人間Lv9)

性格弱気
命中時気力増加Lv1=非表示
回避時気力増加Lv3=非表示

性格普通
命中時気力増加Lv1=非表示

性格強気
命中時気力増加Lv1=非表示
失敗時気力増加Lv1=非表示
損傷時気力増加Lv1=非表示

性格超強気
命中時気力増加Lv1=非表示
失敗時気力増加Lv2=非表示
損傷時気力増加Lv2=非表示

成長格闘型回避
格闘成長Lv-0.2=非表示
射撃成長Lv-0.35=非表示
命中成長Lv-0.025=非表示
回避成長Lv-0.025=非表示
技量成長Lv-0.35=非表示
反応成長Lv-0.35=非表示

成長格闘型防御
格闘成長Lv-0.2=非表示
射撃成長Lv-0.35=非表示
命中成長Lv-0.025=非表示
回避成長Lv-0.175=非表示
技量成長Lv-0.35=非表示
反応成長Lv-0.05=非表示

成長格闘型晩成
格闘成長Lv-0.15=非表示
射撃成長Lv-0.35=非表示
命中成長Lv-0.025=非表示
回避成長Lv-0.175=非表示
技量成長Lv-0.35=非表示

成長射撃型回避
格闘成長Lv-0.35=非表示
射撃成長Lv-0.2=非表示
命中成長Lv-0.025=非表示
回避成長Lv-0.025=非表示
技量成長Lv-0.35=非表示
反応成長Lv-0.35=非表示

成長射撃型防御
格闘成長Lv-0.35=非表示
射撃成長Lv-0.2=非表示
命中成長Lv-0.025=非表示
回避成長Lv-0.175=非表示
技量成長Lv-0.35=非表示
反応成長Lv-0.05=非表示

成長射撃型晩成
格闘成長Lv-0.35=非表示
射撃成長Lv-0.15=非表示
命中成長Lv-0.025=非表示
技量成長Lv-0.35=非表示
反応成長Lv-0.35=非表示

成長万能型回避
格闘成長Lv-0.2=非表示
射撃成長Lv-0.2=非表示
命中成長Lv-0.025=非表示
回避成長Lv-0.025=非表示
技量成長Lv-0.35=非表示
反応成長Lv-0.35=非表示

成長万能型防御
格闘成長Lv-0.2=非表示
射撃成長Lv-0.2=非表示
命中成長Lv-0.025=非表示
回避成長Lv-0.175=非表示
技量成長Lv-0.35=非表示
反応成長Lv-0.05=非表示

成長万能型晩成
格闘成長Lv-0.15=非表示
射撃成長Lv-0.15=非表示
命中成長Lv-0.025=非表示
回避成長Lv-0.075=非表示
技量成長Lv-0.35=非表示
反応成長Lv-0.1=非表示

成長SP重視型回避
SP高成長=非表示
格闘成長Lv-0.35=非表示
射撃成長Lv-0.35=非表示
命中成長Lv-0.025=非表示
回避成長Lv-0.075=非表示
技量成長Lv-0.35=非表示
反応成長Lv-0.35=非表示

成長SP重視型防御
SP高成長=非表示
格闘成長Lv-0.35=非表示
射撃成長Lv-0.35=非表示
命中成長Lv-0.025=非表示
回避成長Lv-0.175=非表示
技量成長Lv-0.35=非表示
反応成長Lv-0.1=非表示



###### 以下、敵専用

成長格闘型標準
格闘成長Lv-0.2=非表示
射撃成長Lv-0.35=非表示
命中成長Lv-0.025=非表示
回避成長Lv-0.175=非表示
技量成長Lv-0.35=非表示
反応成長Lv-0.35=非表示

成長射撃型標準
格闘成長Lv-0.35=非表示
射撃成長Lv-0.2=非表示
命中成長Lv-0.025=非表示
回避成長Lv-0.175=非表示
技量成長Lv-0.35=非表示
反応成長Lv-0.35=非表示

成長万能型標準
格闘成長Lv-0.25=非表示
射撃成長Lv-0.25=非表示
命中成長Lv-0.025=非表示
回避成長Lv-0.075=非表示
技量成長Lv-0.35=非表示
反応成長Lv-0.35=非表示

成長次元獣型
SP遅成長=非表示
格闘成長Lv-0.2=非表示
射撃成長Lv-0.2=非表示
命中成長Lv-0.025=非表示
回避成長Lv-0.175=非表示
技量成長Lv-0.02=非表示
反応成長Lv-0.51=非表示

################################################################################
### battle.txt #################################################################
################################################################################

最終命中率
Max(最終値, 0) + Call("SKILL_FINALHIT", 攻撃側ユニットID) _
- Call("SKILL_FINALAVOID", 防御側ユニットID)

命中率
(攻撃側補正 - 防御側補正) _
* Call("ADJUST_UNITSIZE", 防御側ユニットID, 攻撃側ユニットID, 武器番号) _
+ Call("ADJUST_DISTANCE", 攻撃側ユニットID, 防御側ユニットID, 武器番号) _
- Call("ADJUST_AREA_AVOID", 防御側ユニットID) _
+ CON_TARGET[防御側ユニットID]

命中補正
RoundUp((命中 / 2 + Call("UNITRANK_HIT", 攻撃側ユニットID)) _
* Call("ADJUST_AREA_UNIT", 攻撃側ユニットID, 防御側ユニットID, 武器番号), 0) + 攻撃値 _
+ Call("SKILL_HIT", 攻撃側ユニットID) + Call("SKILL_REALPOWER", 攻撃側ユニットID) * 5 _
+ Call("SKILL_COMMANDER", 攻撃側ユニットID)

回避補正
RoundUp((回避 / 2 + 運動性) * Call("ADJUST_AREA_UNIT", 防御側ユニットID), 0) _
+ Call("SKILL_AVOID", 防御側ユニットID) + Call("SKILL_REALPOWER", 防御側ユニットID) * 5 _
+ Call("SKILL_COMMANDER", 防御側ユニットID)

最終ダメージ
最終値 + Call("SPECIALPOWER_ROUTINE", 攻撃側ユニットID, 防御側ユニットID, 武器番号)

ダメージ
(攻撃側補正 - 防御側補正) _
* Call("ADJUST_SIZEDAMAGE", 攻撃側ユニットID, 防御側ユニットID, 武器番号) _
* Call("ADJUST_AREA_DAMAGE", 防御側ユニットID) _
* (1 + Call("ADJUST_PRESSMENT", 防御側ユニットID, 攻撃側ユニットID) / 100) _
* Call("SKILL_DAMAGE", 攻撃側ユニットID, 防御側ユニットID)

攻撃地形補正
攻撃値 * Call("ADJUST_AREA_WEAPON", 攻撃側ユニットID, 防御側ユニットID, 武器番号)

攻撃補正
武器威力 * (攻撃値 + 気力) / 200

防御補正
装甲値 * (反応 + 気力) / 200 * Call("SKILL_GUARD", 防御側ユニットID) _
* (1 + Call("SKILL_REALPOWER", 防御側ユニットID) / 10)

最終クリティカル発生率
最終値 \ Call("CRITICAL_PARTYCHECK", 攻撃側ユニットID, 防御側ユニットID)

クリティカル攻撃補正
技量 + 攻撃値 + Call("SKILL_CRITICAL", 攻撃側ユニットID) _
+ Call("SKILL_REALPOWER", 攻撃側ユニットID) * 10

# 特殊効果攻撃補正
# 技量 \ 2 + 攻撃値

# 特殊効果防御補正
# 技量 \ 2 - Call("CRITICAL_PARTYCHECK2", ザコ補正, 攻撃側ユニットID, 防御側ユニットID)

################################################################################
### sp.txt #####################################################################
################################################################################

必属性武器用SP
非表示, 0, 自分, 攻撃, -, -, -
絶対命中
-

散属性武器用SP
非表示, 0, 自分, 攻撃, -, -, -
回避能力無効化
-

DA用SP
非表示, 0, 自分, 攻撃, -, -, -
再攻撃
-

################################################################################
### include.eve ################################################################
################################################################################

//―――――――――――――――――――――――――――――――――――――――
// 関数名:SKILL_FINALHIT
// 説 明:攻撃(防御)側の特殊スキルによる最終命中率補正を算出する
// 引 数: Args(1):攻撃側ユニットID
//―――――――――――――――――――――――――――――――――――――――
SKILL_FINALHIT:
Local i = 0

# ODEシステム
If IsAvailable(Args(1), 特殊能力ODEシステム) <> 0 Then
i= i + SKL_FRAG[ODE, Party(Args(1))]
EndIf

# 見切り
If Skill(PilotID(Args(1)), 特殊能力見切り) <> 0 _
And Morale(PilotID(Args(1))) >= 130 Then
Incr i 10
EndIf

# SEED
If Skill(PilotID(Args(1)), 特殊能力SEED) <> 0 _
And Morale(PilotID(Args(1))) >= 130 Then
Incr i 20
EndIf

# 極
If Skill(PilotID(Args(1)), 特殊能力極) <> 0 _
And Morale(PilotID(Args(1))) >= 130 Then
Incr i 30
EndIf
Return i

//―――――――――――――――――――――――――――――――――――――――
// 関数名:SKILL_FINALAVOID
// 説 明:攻撃(防御)側の特殊スキルによる最終回避率補正を算出する
// 引 数: Args(1):防御側ユニットID
//―――――――――――――――――――――――――――――――――――――――
SKILL_FINALAVOID:
Local i = 0

# ODEシステム
If IsAvailable(Args(1), 特殊能力ODEシステム) <> 0 Then
i= i + SKL_FRAG[ODE, Party(Args(1))]
EndIf

# 見切り
If Skill(PilotID(Args(1)), 特殊能力見切り) <> 0 _
And Morale(PilotID(Args(1))) >= 130 Then
Incr i 10
EndIf

# SEED
If Skill(PilotID(Args(1)), 特殊能力SEED) <> 0 _
And Morale(PilotID(Args(1))) >= 130 Then
Incr i 20
EndIf

# 極
If Skill(PilotID(Args(1)), 特殊能力極) <> 0 _
And Morale(PilotID(Args(1))) >= 130 Then
Incr i 30
EndIf

# 予知
If Skill(PilotID(Args(1)), 特殊能力予知) <> 0 _
And Morale(PilotID(Args(1))) >= 130 _
And Party(Args(1)) <> フェイズ Then
Incr i 30
EndIf
Return i

//―――――――――――――――――――――――――――――――――――――――
// 関数名:ADJUST_UNITSIZE
// 説 明:ユニットサイズによる回避率補正を算出する
// 戻り値: 攻撃側サイズ - 防御側サイズ(1.5〜0.5)
// 引 数: Args(1):防御側ユニットID
// Args(2):攻撃側ユニットID
//―――――――――――――――――――――――――――――――――――――――
ADJUST_UNITSIZE:
Local i
i[XL] = 6
i[LL] = 5
i[L] = 4
i[M] = 3
i[S] = 2
i[SS] = 1

i[Avoid] = 1 + (i[Info(ユニット, Args(1), サイズ)] _
- i[Info(ユニット, Args(2), サイズ)]) / 10

# サイズ差補正無視スキル所持、武器が「大」属性、SP「直撃」がかかっている場合は
# 命中率が低下しない
If i[Avoid] < 1 Then
If Skill(PilotID(Args(2)), 特殊能力サイズ差補正無視) <> 0 Then
Return 1
ElseIf Info(ユニット, Args(2), 武器, Args(3), 属性所有, "大") = 1 Then
Return 1
ElseIf SpecialPower(PilotID(Args(2)), 直撃) = 1 Then
Return 1
EndIf
EndIf
Return i[Avoid]

//―――――――――――――――――――――――――――――――――――――――
// 関数名:ADJUST_DISTANCE
// 説 明:攻撃側と防御側双方間の距離命中率補正を算出する
// 戻り値: (3 - 距離) * 5
// 引 数: Args(1):攻撃側ユニットID
// Args(2):防御側ユニットID
// Args(3):武器番号
//―――――――――――――――――――――――――――――――――――――――
ADJUST_DISTANCE:
# 拡散武器、MAP兵器の場合は計算しない
If Info(ユニット, Args(1), 武器, Args(3), 属性所有, "散") = 1 _
Or Info(ユニット, Args(1), 武器, Args(3), 属性所有, "M") = 1 Then
Return 0
EndIf

Local i

# 互いの距離を算出
i = Abs(X(Args(1)) - X(Args(2))) + Abs(Y(Args(1)) - Y(Args(2)))

# 補正計算
i = (3 - i) * 5

# 近接武器、誘導系武器の場合は減算しない
If Info(ユニット, Args(1), 武器, Args(3), 属性所有, "武") = 1 _
Or Info(ユニット, Args(1), 武器, Args(3), 属性所有, "突") = 1 _
Or Info(ユニット, Args(1), 武器, Args(3), 属性所有, "接") = 1 _
Or Info(ユニット, Args(1), 武器, Args(3), 属性所有, "サ") = 1 _
Or Info(ユニット, Args(1), 武器, Args(3), 属性所有, "H") = 1 _
Or Info(ユニット, Args(1), 武器, Args(3), 属性所有, "追") = 1 _
Or Info(ユニット, Args(1), 武器, Args(3), 属性所有, "有") = 1 _
Or Info(ユニット, Args(1), 武器, Args(3), 属性所有, "誘") = 1 Then
Return (Max(i, 0))
EndIf
Return i

//―――――――――――――――――――――――――――――――――――――――
// 関数名:ADJUST_AREA_AVOID
// 説 明:防御側の存在する地形の回避率補正を算出する
// 引 数: Args(1):防御側ユニットID
//―――――――――――――――――――――――――――――――――――――――
ADJUST_AREA_AVOID:
If Area(Args(1)) = "空中" Or Area(Args(1)) = "水上" Then
Return 0
EndIf
Return (Info(マップ, X(Args(1)), Y(Args(1)), 回避修正))

//―――――――――――――――――――――――――――――――――――――――
// 関数名:UNITRANK_HIT
// 説 明:攻撃側のユニットランクによって擬似的に照準値を再現
// 引 数: Args(1):攻撃側ユニットID
//―――――――――――――――――――――――――――――――――――――――
UNITRANK_HIT:
Local i
i[Hit] = 140

i[Hit] = i[Hit] + Rank(Args(1)) * 5

For i[Num] = 1 To Info(ユニット, Args(1), 特殊能力数)
If Info(ユニット, Args(1), 特殊能力, i[Num]) = "特殊能力照準値強化" Then
i[Hit] = i[Hit] + Info(ユニット, Args(1), 特殊能力レベル, i[Num]) * 5
EndIf
Next
Return i[Hit]

//―――――――――――――――――――――――――――――――――――――――
// 関数名:ADJUST_AREA_UNIT
// 説 明:攻撃(防御)側のユニットの地形適応命中(回避)補正を算出する
// 戻り値: S:1.1 A:1 B:0.9 C:0.8 D:0.4 -:0
// 引 数: Args(1):攻撃側ユニットID
// Args(2):防御側ユニットID
// Args(3):武器番号
//―――――――――――――――――――――――――――――――――――――――
ADJUST_AREA_UNIT:
Local i

# 接近戦攻撃の場合は防御側地形、それ以外は攻撃側地形が適応される
If Info(ユニット, Args(1), 武器, Args(3), 属性所有, "武") = 1 _
Or Info(ユニット, Args(1), 武器, Args(3), 属性所有, "突") = 1 _
Or Info(ユニット, Args(1), 武器, Args(3), 属性所有, "接") = 1 Then
i[Unit] = Args(2)
Else
i[Unit] = Args(1)
EndIf

# 攻撃側(防御側)の地形適応を抽出する
Switch Area(i[Unit])
Case "空中" "水上"
i[Area] = Mid(Info(ユニット, Args(1), "地形適応"), 1, 1)
Case "水中"
i[Area] = Mid(Info(ユニット, Args(1), "地形適応"), 3, 1)
Case "宇宙"
i[Area] = Mid(Info(ユニット, Args(1), "地形適応"), 4, 1)
Case Else
i[Area] = Mid(Info(ユニット, Args(1), "地形適応"), 2, 1)
EndSw

# 抽出した地形に応じて値を代入する
Switch i[Area]
Case "S"
i[Area] = 5
Case "A"
i[Area] = 4
Case "B"
i[Area] = 3
Case "C"
i[Area] = 2
Case "D"
i[Area] = 1
Case Else
i[Area] = 0
EndSw

If i[Unit] = Args(2) And Area(Args(2)) = "空中" Then
# ジャンプ攻撃の場合は、属性レベル分だけ値を加算
If Info(ユニット, Args(1), 武器, Args(3), 属性所有, "J") = 1 Then
i[Area] = i[Area] + Info(ユニット, Args(1), 武器, Args(3), 属性レベル, "J")
EndIf
EndIf

# 値に応じて地形適応倍率を算出する
Switch i[Area]
Case "4"
Return 1
Case "3"
Return 0.9
Case "2"
Return 0.8
Case "1"
Return 0.4
Case "0"
Return 0
EndSw
Return 1.1

//―――――――――――――――――――――――――――――――――――――――
// 関数名:SKILL_HIT
// 説 明:攻撃側の特殊スキルによる命中率補正を算出する
// 引 数: Args(1):攻撃側ユニットID
//―――――――――――――――――――――――――――――――――――――――
SKILL_HIT:
Local i = 0

# ニュータイプ
If Skill(PilotID(Args(1)), 特殊能力ニュータイプ) <> 0 Then
i = i + (Skill(PilotID(Args(1)), 特殊能力ニュータイプ) _
- (1 + (Max(Skill(PilotID(Args(1)), 特殊能力ニュータイプ) - 5, 0) \ 2))) * 5
EndIf

# 強化人間
If Skill(PilotID(Args(1)), 特殊能力強化人間) <> 0 Then
i = i + (Skill(PilotID(Args(1)), 特殊能力強化人間) _
- (1 + (Max(Skill(PilotID(Args(1)), 特殊能力強化人間) - 5, 0) \ 2))) * 4
EndIf

# PSI
If Skill(PilotID(Args(1)), 特殊能力PSI) <> 0 Then
i = i + Skill(PilotID(Args(1)), 特殊能力PSI) * 2
EndIf

# 勇者
If Skill(PilotID(Args(1)), 特殊能力勇者) <> 0 Then
i = i + (Skill(PilotID(Args(1)), 特殊能力勇者) - 1) * 2
EndIf

# 螺旋力
If Skill(PilotID(Args(1)), 特殊能力螺旋力) <> 0 Then
i = i + Skill(PilotID(Args(1)), 特殊能力螺旋力) * 2
EndIf

# 天才
If Skill(PilotID(Args(1)), 特殊能力天才) <> 0 Then
Incr i 20
EndIf

# 底力補正相殺
If Skill(PilotID(Args(1)), 特殊能力新底力) <> 0 _
And Damage(Args(1)) >= 75 Then
Incr i -30
EndIf
# 運動性変動系特殊効果修正
If Condition(Args(1), "運動性UP") <> 0 _
And SpecialPower(PilotID(Args(1)), 集中) <> 1 Then
Incr i -15
EndIf
If Condition(Args(1), "運動性DOWN") <> 0 Then
Incr i 15
EndIf
Return HIT

//―――――――――――――――――――――――――――――――――――――――
// 関数名:SKILL_AVOID
// 説 明:防御側の特殊スキルによる回避率補正を算出する
// 引 数: Args(1):防御側ユニットID
//―――――――――――――――――――――――――――――――――――――――
SKILL_AVOID:
Local i = 0

# ニュータイプ
If Skill(PilotID(Args(1)), 特殊能力ニュータイプ) <> 0 Then
i = i + (Skill(PilotID(Args(1)), 特殊能力ニュータイプ) _
- (1 + (Max(Skill(PilotID(Args(1)), 特殊能力ニュータイプ) - 5, 0) \ 2))) * 5
EndIf

# 強化人間
If Skill(PilotID(Args(1)), 特殊能力強化人間) <> 0 Then
i = i + (Skill(PilotID(Args(1)), 特殊能力強化人間) _
- (1 + (Max(Skill(PilotID(Args(1)), 特殊能力強化人間) - 5, 0) \ 2))) * 4
EndIf

# PSI
If Skill(PilotID(Args(1)), 特殊能力PSI) <> 0 Then
i = i + Skill(PilotID(Args(1)), 特殊能力PSI) * 2
EndIf

# 勇者
If Skill(PilotID(Args(1)), 特殊能力勇者) <> 0 Then
i = i + (Skill(PilotID(Args(1)), 特殊能力勇者) - 1) * 2
EndIf

# 天才
If Skill(PilotID(Args(1)), 特殊能力天才) <> 0 Then
Incr i 20
EndIf

# 底力補正相殺
If Skill(PilotID(Args(1)), 特殊能力新底力) <> 0 _
And Damage(Args(1)) >= 75 Then
Incr i -30
EndIf
# 運動性変動系特殊効果修正
If Condition(Args(1), "運動性UP") <> 0 _
And SpecialPower(PilotID(Args(1)), 集中) <> 1 Then
Incr i 15
EndIf
If Condition(Args(1), "運動性DOWN") <> 0 Then
Incr i -15
EndIf
Return AVD

//―――――――――――――――――――――――――――――――――――――――
// 関数名:SKILL_REALPOWER
// 説 明:底力スキルによる補正値を算出する
// 戻り値: 0〜9(小数点以下切り捨て)
// 引 数: Args(1):攻撃(防御)側ユニットID
//―――――――――――――――――――――――――――――――――――――――
SKILL_REALPOWER:
Local i = 0

If Skill(PilotID(Args(1)), 特殊能力新底力) <> 0 Then
i = Damage(Args(1)) \ 10 _
- (9 - Info(パイロット, PilotID(Args(1)), 特殊能力レベル, "新底力"))
EndIf
Return (Max(i, 0))

//―――――――――――――――――――――――――――――――――――――――
// 関数名:SKILL_COMMANDER
// 説 明:指揮官スキルによる補正値を算出する
// 戻り値: 0〜(5の倍数のみ)
// 引 数: Args(1):攻撃(防御)側ユニットID
//―――――――――――――――――――――――――――――――――――――――
SKILL_COMMANDER:
Local i
i[Hit] = 0
i[Log] = 0

# 戦闘アニメのバグ防止用
Set i[Unit1] 対象ユニットID
Set i[Unit2] 相手ユニットID

# 出撃している攻撃側ユニット陣営で
# 指揮官スキルを所持しているパイロットを検索
ForEach Party(Args(1)) 出撃
If i[Unit1] = 対象ユニットID Then
Skip
EndIf
If Skill(PilotID(対象ユニットID), 特殊能力指揮官) > 0 Then
i[Hit] = (Skill(PilotID(対象ユニットID), 特殊能力指揮官) + 2) * 5 _
- (Abs(X(Args(1)) - X(対象ユニットID)) + Abs(Y(Args(1)) - Y(対象ユニットID))) * 5
If i[Log] <= i[Hit] Then
i[Log] = i[Hit]
EndIf
EndIf
Next

# 対象・相手ユニットを復元(存在しない場合はスルー)
If Not i[Unit1] = "" Then
Select i[Unit1]
EndIf
If Not i[Unit2] = "" Then
SelectTarget i[Unit2]
EndIf
Return i[Log]

//―――――――――――――――――――――――――――――――――――――――
// 関数名:ADJUST_SIZEDAMAGE
// 説 明:ユニットサイズによるダメージ補正を算出する
// 戻り値: 0.5〜1.5
// 引 数: Args(1):攻撃側ユニットID
// Args(2):防御側ユニットID
// Args(3):武器番号
//―――――――――――――――――――――――――――――――――――――――
ADJUST_SIZEDAMAGE:
Local i
i[XL] = 6
i[LL] = 5
i[L] = 4
i[M] = 3
i[S] = 2
i[SS] = 1

# 1 + (攻撃側サイズ - 防御側サイズ) / 10
i[Damage] = 1 + (i[Info(ユニット, Args(1), サイズ)] _
- i[Info(ユニット, Args(2), サイズ)]) / 10

# サイズ差補正無視スキル所持、武器が「大」属性、SP「直撃」がかかっている場合は
# サイズ差ダメージ補正を算出しない(ただし、ダメージが低下する場合のみ)
If i[Damage] < 1 Then
If Skill(PilotID(Args(1)), 特殊能力サイズ差補正無視) <> 0 Then
Return 1
ElseIf Info(ユニット, Args(1), 武器, Args(3), 属性所有, "大") = 1 Then
Return 1
ElseIf SpecialPower(PilotID(Args(1)), 直撃) = 1 Then
Return 1
EndIf
EndIf
Return i[Damage]

//―――――――――――――――――――――――――――――――――――――――
// 関数名:ADJUST_AREA_DAMAGE
// 説 明:防御側の存在する地形の防御補正を算出する
// 引 数: Args(1):防御側ユニットID
//―――――――――――――――――――――――――――――――――――――――
ADJUST_AREA_DAMAGE:
If Area(Args(1)) = "空中" Or Area(Args(1)) = "水上" Then
Return 1
EndIf
Return ((100 - Info(マップ, X(Args(1)), Y(Args(1)), ダメージ修正)) / 100)

//―――――――――――――――――――――――――――――――――――――――
// 関数名:ADJUST_PRESSENT
// 説 明:プレースメント補正を算出する
// 戻り値:敵の周囲を取り囲む同陣営ユニット数によって変動(1、1.05、1.1)
// 引 数: Args(1):防御側ユニットID
// Args(2):攻撃側ユニットID
//―――――――――――――――――――――――――――――――――――――――
ADJUST_PRESSMENT:
Local i j
i[Pressment] = 0

# 北側判定
i[Unit1] = Info(マップ, X(Args(1)), Y(Args(1)) - 1, ユニットID)
# 南側判定
i[Unit2] = Info(マップ, X(Args(1)), Y(Args(1)) + 1, ユニットID)
# 東側判定
i[Unit3] = Info(マップ, X(Args(1)) + 1, Y(Args(1)), ユニットID)
# 西側判定
i[Unit4] = Info(マップ, X(Args(1)) - 1, Y(Args(1)), ユニットID)

If Party(i[Unit1]) = Party(Args(2)) And i[Unit1] <> Args(2) Then
Incr i[Pressment] 1
EndIf
If Party(i[Unit2]) = Party(Args(2)) And i[Unit2] <> Args(2) Then
Incr i[Pressment] 1
EndIf
If Party(i[Unit3]) = Party(Args(2)) And i[Unit3] <> Args(2) Then
Incr i[Pressment] 1
EndIf
If Party(i[Unit4]) = Party(Args(2)) And i[Unit4] <> Args(2) Then
Incr i[Pressment] 1
EndIf

If i[Pressment] > 0 Then
If i[Pressment] = 4 Then
Return 10
Else
Return 5
EndIf
EndIf
Return 0

//―――――――――――――――――――――――――――――――――――――――
// 関数名:SKILL_DAMAGE
// 説 明:攻撃(防御)側の特殊スキルによるダメージ倍率補正を算出する
// 引 数: Args(1):攻撃側ユニットID
// Args(2):防御側ユニットID
//―――――――――――――――――――――――――――――――――――――――
SKILL_DAMAGE:
Local i = 1

# SEED
If Skill(PilotID(Args(1)), 特殊能力SEED) <> 0 _
And Morale(PilotID(Args(1))) >= 130 Then
i = i * 1.1
EndIf

# アタッカー
If Skill(PilotID(Args(1)), 特殊能力アタッカー) <> 0 _
And Morale(PilotID(Args(1))) >= 130 Then
i = i * 1.1
EndIf

# リベンジ
If Skill(PilotID(Args(1)), 特殊能力リベンジ) <> 0 _
And Party(Args(1)) <> フェイズ Then
i = i * 1.1
EndIf

# ガード
If Skill(PilotID(Args(2)), 特殊能力ガード) <> 0 _
And Morale(PilotID(Args(2))) >= 130 Then
i = i * 0.8
EndIf

# 螺旋力
If Skill(PilotID(Args(2)), 特殊能力螺旋力) <> 0 Then
i = i * ((99 - Skill(PilotID(Args(2)), 特殊能力螺旋力)) / 100)
EndIf

# 螺旋力発動
If IsAvailable(Args(1), 特殊能力螺旋力発動) <> 0 _
And Morale(PilotID(Args(1))) >= 130 Then
i = i * Min(1 + RoundDown(Morale(PilotID(Args(1))) - 110, -1) / 200, _
1 + Skill(PilotID(Args(1)), 特殊能力螺旋力) * 0.05)
EndIf
Return i

//―――――――――――――――――――――――――――――――――――――――
// 関数名:ADJUST_AREA_WEAPON
// 説 明:攻撃側のユニットの地形適応ダメージ倍率補正を算出する
// 戻り値: S:1.1 A:1 B:0.8 C:0.6 D:0.4 -:0
// 引 数: Args(1):攻撃側ユニットID
// Args(2):防御側ユニットID
// Args(3):武器番号
//―――――――――――――――――――――――――――――――――――――――
ADJUST_AREA_WEAPON:
Local i

# 接近戦攻撃の場合は防御側地形、それ以外は攻撃側地形が適応される
If Info(ユニット, Args(1), 武器, Args(3), 属性所有, "武") = 1 _
Or Info(ユニット, Args(1), 武器, Args(3), 属性所有, "突") = 1 _
Or Info(ユニット, Args(1), 武器, Args(3), 属性所有, "接") = 1 Then
i[Unit] = Args(2)
Else
i[Unit] = Args(1)
EndIf

# 攻撃側の武器地形適応を抽出する
Switch Area(i[Unit])
Case "空中"
i[Area] = Mid(Info(ユニット, Args(1), 武器, Args(3), "地形適応"), 1, 1)
Case "水中"
i[Area] = Mid(Info(ユニット, Args(1), 武器, Args(3), "地形適応"), 3, 1)
Case "宇宙"
i[Area] = Mid(Info(ユニット, Args(1), 武器, Args(3), "地形適応"), 4, 1)
Case Else
i[Area] = Mid(Info(ユニット, Args(1), 武器, Args(3), "地形適応"), 2, 1)
EndSw

# 抽出した地形に応じて値を代入し
# 値に応じて地形適応倍率を算出する
Switch i[Area]
Case "S"
Return 1.1
Case "A"
Return 1
Case "B"
Return 0.8
Case "C"
Return 0.6
Case "D"
Return 0.4
EndSw
Return 0

//―――――――――――――――――――――――――――――――――――――――
// 関数名:SKILL_GUARD
// 説 明:防御側の特殊スキルによる装甲補正を算出する
// 引 数: Args(1):防御側ユニットID
//―――――――――――――――――――――――――――――――――――――――
SKILL_GUARD:
Local i = 100

# 勇者
If Skill(PilotID(Args(1)), 特殊能力勇者) > 1 Then
i = i + (Skill(PilotID(Args(1)), 特殊能力勇者) - 1) * 2 - 1
EndIf
Return (i / 100)

//―――――――――――――――――――――――――――――――――――――――
// 関数名:CRITICAL_PARTYCHECK
// 説 明:敵陣営ユニットが味方陣営ユニットに攻撃する場合
// 最終CT率が1/4に抑えられる
// 戻り値: 攻撃側が敵の場合:4
// 攻撃側が中立、防御側が味方、またはNPCの場合:4
// それ以外:1
// 引 数: Args(1):攻撃側ユニットID
// Args(2):防御側ユニットID
//―――――――――――――――――――――――――――――――――――――――
CRITICAL_PARTYCHECK:
If Party(Args(1)) = Party(Args(2)) Then
Return 4
ElseIf Party(Args(1)) = "敵" Then
Return 4
ElseIf Party(Args(1)) = "中立" Then
Switch Party(Args(2))
Case "味方" "NPC"
Return 4
EndSw
EndIf
Return 1

//―――――――――――――――――――――――――――――――――――――――
// 関数名:SKILL_CRITICAL
// 説 明:攻撃側の特殊スキルによるクリティカル率補正を算出する
// 引 数: Args(1):攻撃側ユニットID
//―――――――――――――――――――――――――――――――――――――――
SKILL_CRITICAL:
Local i = 0

# 勇者
If Skill(PilotID(Args(1)), 特殊能力勇者) > 1 Then
i = i + (Skill(PilotID(Args(1)), 特殊能力勇者) - 1) * 2 - 1
EndIf

# 天才
If Skill(PilotID(Args(1)), 特殊能力天才) <> 0 Then
Incr i 20
EndIf

# 見切り
If Skill(PilotID(Args(1)), 特殊能力見切り) <> 0 _
And Morale(PilotID(Args(1))) >= 130 Then
Incr i 10
EndIf

# SEED
If Skill(PilotID(Args(1)), 特殊能力SEED) <> 0 _
And Morale(PilotID(Args(1))) >= 130 Then
Incr i 20
EndIf

# 極
If Skill(PilotID(Args(1)), 特殊能力極) <> 0 _
And Morale(PilotID(Args(1))) >= 130 Then
Incr i 30
EndIf

# 底力補正相殺
If Skill(PilotID(Args(1)), 特殊能力新底力) <> 0 _
And Damage(Args(1)) >= 75 Then
i = i - 50
EndIf
Return i

//―――――――――――――――――――――――――――――――――――――――
// 関数名:CRITICAL_PARTYCHECK2
// 説 明:敵特殊効果発動率補正
// 戻り値: 攻撃側が敵の場合:+30
// 攻撃側が中立、防御側が味方、またはNPCの場合:+30
// それ以外:0
// 引 数: Args(1):ザコ補正
// Args(2):攻撃側ユニットID
// Args(3):防御側ユニットID
//―――――――――――――――――――――――――――――――――――――――
CRITICAL_PARTYCHECK2:
Local i
i = Args(1)

If Party(Args(2)) = Party(Args(3)) Then
Return i
ElseIf Party(Args(2)) = "敵" Then
i = i + 30
ElseIf Party(Args(2)) = "中立" Then
Switch Party(Args(3))
Case "味方" "NPC"
i = i + 30
EndSw
EndIf
Return i

//―――――――――――――――――――――――――――――――――――――――
// 関数名:SPECIALPOWER_ROUTINE
// 説 明:一部の能力や武装用のルーチン
// 戻り値:0
// 引 数: Args(1):攻撃側ユニットID
// Args(2):防御側ユニットID
// Args(3):武器番号
//―――――――――――――――――――――――――――――――――――――――
SPECIALPOWER_ROUTINE:
Local i = 0

# ブロッキング
ClearSkill PilotID(Args(2)) 切り払い
ClearSkill PilotID(Args(2)) S防御
If IsAvailable(Args(2), 特殊能力盾装備) <> 0 _
And 相手ユニット使用武器 = "防御" Then
SetSkill PilotID(Args(2)) S防御 32 非表示
ElseIf Skill(PilotID(Args(2)), 特殊能力ブロッキング) <> 0 Then
i = Max((Info(パイロット, PilotID(Args(2)), "技量") + 10) _
- Info(パイロット, PilotID(Args(1)), "技量"), 10)
If Party(Args(2)) = Party(Args(1)) Then
i = i \ 2
ElseIf Party(Args(2)) = "敵" Then
i = i \ 2
ElseIf Party(Args(2)) = "中立" Then
Switch Party(Args(1))
Case "味方" "NPC"
i = i \ 2
EndSw
EndIf
If i >= Random(100) Then
# If IsAvailable(Args(2), 特殊能力剣装備) <> 0 Then
SetSkill PilotID(Args(2)) 切り払い 32 非表示
# EndIf
EndIf
If IsAvailable(Args(2), 特殊能力盾装備) <> 0 Then
If i >= Random(100) Then
If 1 = Random(2) Then
ClearSkill PilotID(Args(2)) 切り払い
EndIf
SetSkill PilotID(Args(2)) S防御 32 非表示
EndIf
EndIf
EndIf

# 必中武器再現
ClearSpecialPower Args(1) 必属性武器用SP
If Info(ユニット, Args(1), 武器, Args(3), 属性所有, "必") = 1 Then
SpecialPower Args(1) 必属性武器用SP
EndIf

# 拡散攻撃を分身無効にする
ClearSpecialPower Args(1) 散属性武器用SP
If Info(ユニット, Args(1), 武器, Args(3), 属性所有, "散") = 1 Then
SpecialPower Args(1) 散属性武器用SP
EndIf
Return 0

################################################################################
### 特殊システムルーチン #######################################################

*ターン 全 全:
# 連続行動技能のフラグを消す
UnSet SKL_FRAG[RENGEKI]

# 連続ターゲット補正リストを消去する
ForEach フェイズ 全て
UnSet CON_TARGET[対象ユニットID]
Next
ForEach フェイズ 出撃
If ターン数 > 1 Then
# 戦意高揚
If Skill(対象パイロット, 特殊能力戦意高揚) <> 0 Then
IncreaseMorale 3
EndIf
If IsAvailable(対象ユニットID, 特殊能力空中EN消費無効) <> 1 Then
# 空中か水上にいるユニットはENが10減る
Switch Area(対象ユニットID)
Case "空中" "水上"
EN(対象ユニットID) = EN(対象ユニットID) - 10
EndSw
EndIf
EndIf
If Skill(対象パイロット, 特殊能力HA) <> 0 Then
UnSet SKL_FRAG[HA]
SKL_FRAG[HA, 対象ユニットID, CX] = X(対象ユニットID)
SKL_FRAG[HA, 対象ユニットID, CY] = Y(対象ユニットID)
EndIf
If IsAvailable(対象ユニットID, 特殊能力ODEシステム) <> 0 Then
Incr SKL_FRAG[ODE, Party(対象ユニットID)] 2
EndIf
Next
Exit

*攻撃 全 全:
# ダブルアタック
ClearSpecialPower 対象ユニットID DA用SP
If Skill(対象パイロット, 特殊能力DA) <> 0 Then
If Info(パイロット, 対象パイロット, 技量) >= _
(Info(パイロット, 相手パイロット, 技量) + 20) Then
SpecialPower 対象ユニットID DA用SP
EndIf
EndIf

# ヒット&アウェイ
If Skill(対象パイロット, 特殊能力HA) <> 0 Then
If (SKL_FRAG[HA, 対象ユニットID, CX] = X(対象ユニットID)) _
And (SKL_FRAG[HA, 対象ユニットID, CY] = Y(対象ユニットID)) Then
SKL_FRAG[HA, 対象ユニットID, FRAG] = 1
EndIf
EndIf
Exit

*攻撃後 全 全:
# 交戦した相手の連続ターゲット補正を10%増加させる
Incr CON_TARGET[相手ユニットID] 10

If Info(ユニット, 対象ユニットID, 武器, 対象ユニット使用武器, 属性所有, "M") = 1 Exit

# 相手が反撃していればこちらの補正も増加
If 相手ユニット使用武器 <> "" _
And 相手ユニット使用武器 <> "防御" _
And 相手ユニット使用武器 <> "回避" Then
Incr CON_TARGET[対象ユニットID] 10
EndIf

If Skill(対象パイロット, 特殊能力気力低下) <> 0 _
And Info(パイロット, 相手パイロット, 性格) <> "機械" Then
IncreaseMorale 相手ユニットID -3
EndIf
Exit

*破壊 全:
# 破壊されたユニットの連続ターゲット補正を消去する
UnSet CON_TARGET[対象ユニットID]

If IsAvailable(対象ユニットID, 特殊能力ODEシステム) <> 0 Then
Incr SKL_FRAG[ODE, Party(対象ユニットID)] -2
EndIf

# 連続行動技能
If Skill(相手ユニットID, 特殊能力連続行動) <> 0 Then
If Morale(PilotID(相手ユニットID)) >= 120 _
And SKL_FRAG[RENGEKI, PilotID(相手ユニットID)] = 0 Then
Action(相手ユニットID) = Action(相手ユニットID) + 1
For i = 1 To CountPilot(相手ユニットID)
Set SKL_FRAG[RENGEKI, PilotID(相手ユニットID, i)] 1
Next
EndIf
EndIf

If Info(ユニット, 相手ユニットID, 武器, 相手ユニット使用武器, 属性所有, "M") = 1 Then
If Info(パイロット, 相手パイロット, 性格) <> "機械" Then
IncreaseMorale 相手ユニットID 1
EndIf
ForEach Party(相手ユニットID)
If Info(パイロット, 対象パイロット, 性格) <> "機械" Then
IncreaseMorale 1
EndIf
If Skill(対象ユニットID, 特殊能力気力破壊) <> 0 Then
IncreaseMorale 1
EndIf
Next
Else
ForEach Party(相手ユニットID)
If Skill(対象ユニットID, 特殊能力気力破壊) <> 0 Then
IncreaseMorale 1
EndIf
Next
EndIf
Exit

*行動終了 全:
If Skill(対象パイロット, 特殊能力HA) <> 0 Then
If SKL_FRAG[HA, 対象ユニットID, FRAG] = 1 Then
Action(対象ユニットID) = Action(対象ユニットID) + 1
SKL_FRAG[HA, 対象ユニットID, FRAG] = 2
SetStatus 対象ユニットID 攻撃不能 -1
ElseIf SKL_FRAG[HA, 対象ユニットID, FRAG] = 2 Then
ClearStatus 対象ユニットID 攻撃不能
UnSet SKL_FRAG[HA]
SKL_FRAG[HA, 対象ユニットID, CX] = X(対象ユニットID)
SKL_FRAG[HA, 対象ユニットID, CY] = Y(対象ユニットID)
EndIf
EndIf
Exit

ユニットコマンド 待機 全 (SKL_FRAG[HA, 対象ユニットID, FRAG] = 2):
ClearStatus 対象ユニットID 攻撃不能
UnSet SKL_FRAG[HA]
SKL_FRAG[HA, 対象ユニットID, CX] = X(対象ユニットID)
SKL_FRAG[HA, 対象ユニットID, CY] = Y(対象ユニットID)
Finish
Exit

-*ユニットコマンド 照準値表示 全 Call(HitView):
Exit

HitView:
Line 400 0 479 32 #000032 BF
Line 400 0 479 32 B #7878ff
Line 401 1 478 31 B #5050ff
Font 10pt #ffffaa 明朝 Regular
PaintString 405 10 "照準値$(RSet(Call("UNITRANK_HIT", UnitID()), 4))"
Font
Refresh
ClearPicture
Return


[No.80] 2011/02/13(Sun) 10:04:50

Name
E-Mail
URL
Subject
Color
Cookie / Pass

- HOME - お知らせ(3/8) - 新着記事 - 記事検索 - 携帯用URL - フィード - ヘルプ - 環境設定 -

Rocket Board Type-T (Free) Rocket BBS