| 幻魔の公子です。
最初から具体的な式を書くのは、質問した人が成長しないから好ましくないとかちょっと思ったりも時々するのですが、まぁ役に立つかどうか判らない返答ではありますので、とりあえず適当に組んでみました。 テストしてないので、うまく動かなかったら申し訳ありません。基本的なところは間違ってないと思うので、頑張って修正してみて下さい。
ちなみに、経験値入手の式は、検索で探したFの経験値入手の計算式が元です。 攻撃力の式がFと同じらしいんで、経験値もそうじゃないかなーと。動かしてみて違ったら、適当に修正して下さい。 つーか、経験値を求める関数があれば一番楽なのですが。
とりあえず、隊員のユニットIDを適当な配列変数に格納します。
Global 隊員 Set 隊員[n] UnitID(隊員名称)
こんな感じですか。
攻撃後 全 全: For i = 1 To Count(隊員) If 対象ユニット = 隊員[i] Then Set GetExp (Info(Pilot(相手ユニット),経験値) + Info(Unit(相手ユニット),経験値) * 0.1 * Call(経験値倍率,対象ユニット,相手ユニット)) If GetExp < 10 Then Set GetExp 10 Endif ExpUp 対象ユニット (-1 * GetExp) ExpUp 隊長 GetExp Break Elseif 相手ユニット = 隊員[i] Then Set GetExp (Info(Pilot(対象ユニット),経験値) + Info(Unit(対象ユニット),経験値) * 0.1 * Call(経験値倍率,相手ユニット,対象ユニット)) If GetExp < 10 Then Set GetExp 10 Endif ExpUp 相手ユニット (-1 * GetExp) ExpUp 隊長 GetExp Break Endif Next Exit
破壊 全 全: For i = 1 To Count(隊員) If 相手ユニット = 隊員[i] Then Set GetExp (Info(Pilot(対象ユニット),経験値) + Info(Unit(対象ユニット),経験値) * Call(経験値倍率,相手ユニット,対象ユニット)) If GetExp < 10 Then Set GetExp 10 Endif ExpUp 相手ユニット (-1 * GetExp) ExpUp 隊長 GetExp Break Endif Next Exit
経験値倍率: Set レベル差 (Level(相手ユニット) - Level(対象ユニット))
Switch レベル差 Case -7 Set 倍率 3.1 Case -6 Set 倍率 2.8 Case -5 Set 倍率 2.5 Case -4 Set 倍率 2.2 Case -3 Set 倍率 1.9 Case -2 Set 倍率 1.6 Case -1 Set 倍率 1.3 Case 1 Set 倍率 0.5 Case 2 Set 倍率 0.25 Case 3 Set 倍率 0.125 Case 4 Set 倍率 (1 / 15) Case 5 Set 倍率 (1 / 30) Case Else If レベル差 > 0 Then Set 倍率 (1 / 60) Elseif レベル差 < 0 Then Set 倍率 3.4 Else Set 倍率 1 Endif EndSw
Return 倍率
もう片方ですが、破壊、攻撃後イベントでLevel関数でそのパイロットのレベルを調べ、LevelUpコマンドを使って同じになるよう(一応判りやすく説明すると、レベル差を求めてその差分だけ上昇させるわけです)に調整してやればよろしいかと。
それでは。
|