SRC質問掲示板Mk2
(現在 過去ログ129 を表示中)

HOME HELP 新規作成 新着記事 トピック表示 検索 掲示板新着情報RSS配信新着情報 過去ログ

[ 最新記事及び返信フォームをトピックトップへ ]

■22394 / inTopicNo.1)  援護攻撃・援護防御関連について色々
  
□投稿者/ Shun -(2011/08/21(Sun) 15:14:12) [ID:fBGRLrAe]
     初めまして、いつもSRCを楽しませていただいています。
    タイトルにある通り、援護関連の技能に関していくつか質問があります。

     スパロボ本家において、『援護攻撃の与ダメージ+10%』や『援護防御の被ダメージ-20%』等の小隊長能力やエースボーナスがあるシリーズがありますが、これらをSRCで再現するにはどうすれば良いでしょうか。つまり、援護によるダメージ量の修正のかけ方です。SRCには、『サポートアタックダメージ低下』というオプションがありますが、そのオプションによるダメージの減少量は30%で固定なので、融通が利かない場合があると思います。そこで、そのオプションを使うことなく援護の時のダメージ減少量を自在に調節することができれば、上記のような小隊長能力を再現出来ると思います。
    加えて、特定のパイロットに対しての援護攻撃・防御時のダメージ増減のやり方及び、援護攻撃を必ずクリティカルにする『連携攻撃(SRCにおける信頼度が関わっている同名の技能ではなく、本家スパロボの側の特殊技能)』の再現の方法も教えていただけたらと思います。



引用返信/返信 削除キー/
■22397 / inTopicNo.2)  Re[1]: 援護攻撃・援護防御関連について色々
□投稿者/ Shun -(2011/08/23(Tue) 19:59:14) [ID:fBGRLrAe]
     援護攻撃に関してですが、『サポートアタックダメージ低下』のオプション無しでも、援護攻撃のダメージ量を変化させることができ、同様に援護攻撃時の攻撃力アップのエースボーナスも再現できるようになりました。
    しかし、援護防御時のダメージ減少がまだ再現できない状態であり、以下にその時作成したインクルードを公開しますので、どこか問題点があれば指摘していただきたいと思います。


    SystemフォルダのBattle.txtに、バトルコンフィグを以下のように設定しました。

    最終ダメージ
    最終値 * Call(ダメージ援護攻撃補正,攻撃側ユニットID) * Call(ダメージ援護防御補正,防御側ユニットID)


    その上で、インクルードを以下のように設定しました。

    ダメージ援護攻撃補正:

    Local Re_Damage = 1

    If (Args(1) = サポートアタックユニットID) Then
    Re_Damage = Re_Damage * 0.7
    EndIf

    #上記のやり方で、『サポートアタックダメージ低下』のオプションと同様に援護攻撃のダメージが30%減るようになりました。

    #以下は『援護攻撃の攻撃力+20%』のエースボーナスを再現したものです。
    #『援護攻撃の攻撃力+20%のAボーナス』の特殊技能を非表示でパイロットに加えることで再現できました。

    If (Args(1) = サポートアタックユニットID) Then
    If Info(パイロット,Pilot(Args(1)),特殊能力所有,援護攻撃の攻撃力+20%のAボーナス) = 1 Then
    Re_Damage = Re_Damage * 1.2
    EndIf
    EndIf

    Return Re_Damage

    #以下は援護防御時にダメージが減少するインクルードです。
    #援護攻撃の時と同じ形の式にしたのですが、援護攻撃の時と違いこの式だと機能しませんでした。これを見て何か問題点があればご指摘をお願いします。

    ダメージ援護防御補正:

    Local Re_Damage = 1

    If (Args(1) = サポートガードユニットID) Then
    If Info(パイロット,Pilot(Args(1)),特殊能力所有,援護防御のダメージ-20%のAボーナス) = 1 Then
    Re_Damage = Re_Damage * 0.8
    EndIf
    EndIf

    Return Re_Damage


引用返信/返信 削除キー/
■22399 / inTopicNo.3)  Re[2]: 援護攻撃・援護防御関連について色々
□投稿者/ 中箱 -(2011/08/23(Tue) 22:16:56) [ID:XAPi9INn]
    2011/08/23(Tue) 22:18:35 編集(投稿者)

    援護防御のダメージ減少についてのみですが


    >#以下は援護防御時にダメージが減少するインクルードです。
    >#援護攻撃の時と同じ形の式にしたのですが、援護攻撃の時と違いこの式だと機能しませんでした。これを見て何か問題点があればご指摘をお願いします。


    サポートガードユニットIDの説明には
    >戦闘直後のイベントで参照した場合にのみ正しい値を返します。
    とありますので、多分このせいでしょう。

    今は、「防御側ユニットIDとサポートガードユニットIDが等しい時」という条件になっていますが、
    これを、「防御側ユニットIDが本来の攻撃相手とは違う時」に変えてみてはどうでしょうか。


    …ただ、その「本来の攻撃相手」ですが、
    大体は *攻撃 全 全 のようなイベント中での対象ユニットIDなり相手ユニットIDなりを使えば良い筈ですが、
    この方法だと、例えば戦闘中にハイパーモードが発動した時のように途中でユニットが変化する場合には使えませんから、
    そのような事が起こる可能性がある場合には、また別の判定方法にする必要が出てきそうです。
    (どんな場合にも使えそうな判定方法があれば良いのですが、ちょっと思いつきません…)
引用返信/返信 削除キー/
■22401 / inTopicNo.4)  Re[3]: 援護攻撃・援護防御関連について色々
□投稿者/ Shun -(2011/08/24(Wed) 00:56:53) [ID:fBGRLrAe]
    援護防御に関して、以下のように修正してみました。

    #攻撃イベントラベルで本来攻撃を受けるはずの相手を変数で設定する。
    *攻撃 全 全:
    撃U = 相手ユニットID
    Exit

    If (Args(1) <> 撃U) And (撃U <> サポートガードユニットID) Then
    If Info(パイロット,Pilot(Args(1)),特殊能力所有,援護防御のダメージ-20%のAボーナス) = 1 Then
    Re_Damage = Re_Damage * 0.8
    EndIf
    EndIf

     ただ、この状態だと確かに援護防御時のダメージがAボーナス無しの時の80%になったのですが、味方フェイズの時もなぜか受けるダメージに補正がかかるという新たな問題が出てきてしまいました。
     例を上げると、Aボーナス無しの時の援護防御のダメージが500の場合、Aボーナスありだと20%減の400になりますが、味方フェイズの際に敵からの反撃で同じ攻撃を受けると、1000のダメージのはずが援護防御状態でないにも関わらず20%減の800になってしまいます。
     何か原因があれば教えていただければと思います。

引用返信/返信 削除キー/
■22402 / inTopicNo.5)  なぜサポートガードユニットIDを使うことに拘るのでしょう?
□投稿者/ 中箱 -(2011/08/24(Wed) 03:59:47) [ID:XAPi9INn]
    >味方フェイズの時もなぜか受けるダメージに補正がかかるという新たな問題が出てきてしまいました。

    > 何か原因があれば教えていただければと思います。


    変更されたIfの条件式、
    >If (Args(1) <> 撃U) And (撃U <> サポートガードユニットID) Then
    これは、前回私の書いた表現を使えば、
    「本来の攻撃相手が、防御側ユニットIDでもサポートガードユニットIDとも違う時」という条件ということですが、

    なぜこの条件が良いと考えられたのでしょうか。
    この条件の場合、本来の攻撃相手がたまたまサポートガードユニットIDと同じだった場合、変な動作をすることになります。

    変数「サポートガードユニットID」の値がどうなっているかは確認しましたか?



    前回も一部引用しましたが、ヘルプの「変数」項、サポートガードユニットIDの説明はこうです。

    >サポートガードユニットID
    >サポートガード、かばう、身代わりのいずれかによって攻撃を代わりに受けたユニットのユニットID
    >戦闘直後のイベントで参照した場合にのみ正しい値を返します。

    最後の行を言い換えると
    「戦闘直後のイベント以外で参照した場合には、正しい値を返さないかもしれません」
    となります。

    バトルコンフィグデータから参照するのは戦闘直後のイベントでの参照ではありませんから、
    システム変数「サポートガードユニットID」は正しい値とは限りません。(大体正しくありません)

    正しい値を返してくれ(るとは限ら)ないと分かっている変数を使おうとするのであれば、
    まずは、正しい値を返すのはどんな場合か、間違った値はどんな場合か、といった基本的なことを調べ、
    調べた結果から、この変数は利用できるか、利用できるのはどんなタイミングか、などを考えながらでないと、正しい動作を目指すのは難しいのではないでしょうか。


    (変数の確認方法ですが、例えば
     >If (Args(1) <> 撃U) And (撃U <> サポートガードユニットID) Then
     行の直前に
      サポガ = サポートガードユニットID
     を追加して、
     *攻撃後 全 全:
     Talk
     さっきのサポートガードユニットIDは「$(サポガ)」;
     End
     Exit
     のようにすればいいでしょう)
引用返信/返信 削除キー/
■22404 / inTopicNo.6)  Re[5]: なぜサポートガードユニットIDを使うことに拘るのでしょう?
□投稿者/ Shun -(2011/08/24(Wed) 14:31:32) [ID:fBGRLrAe]

    条件式のサポートガードユニットIDを外し、

    If (Args(1) <> 撃U) Then
    If Info(パイロット,Pilot(Args(1)),特殊能力所有,援護防御のダメージ-20%のAボーナス) = 1 Then
    Re_Damage = Re_Damage * 0.8
    EndIf
    EndIf

    にしたところ、何とか正常に作動しました。
    やはりサポートガードユニットIDは機能していなかったようです。
    ご指摘どうもありがとうございました。

引用返信/返信 削除キー/
■22407 / inTopicNo.7)  Re[6]: なぜサポートガードユニットIDを使うことに拘るのでしょう?
□投稿者/ Shun -(2011/08/28(Sun) 21:21:01) [ID:fBGRLrAe]
    No22404に返信(Shunさんの記事)
    >
    > 条件式のサポートガードユニットIDを外し、
    >
    > If (Args(1) <> 撃U) Then
    > If Info(パイロット,Pilot(Args(1)),特殊能力所有,援護防御のダメージ-20%のAボーナス) = 1 Then
    > Re_Damage = Re_Damage * 0.8
    > EndIf
    > EndIf
    >
    > にしたところ、何とか正常に作動しました。
    > やはりサポートガードユニットIDは機能していなかったようです。
    > ご指摘どうもありがとうございました。
    >

    解決済みのチェックをし忘れていたので、送り直します。
解決済み!
引用返信/返信 削除キー/



トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

Pass/

HOME HELP 新規作成 新着記事 トピック表示 検索 掲示板新着情報RSS配信新着情報 過去ログ

- Child Tree -
- Antispam Version -