SRC総合支援センター

ヘルプh| 連絡先

GSCトップ掲示板巨大データ掲示板



【5535】インクル修正

名前
 ぶれーかー
投稿日時
 - 2013年11月24日(日) 23時28分 -
設定
引用なし
パスワード
[添付]〜添付ファイル〜
seed(5).zip ファイルサイズ: 299.9KB
再度の投稿予告からまた一週間たったタイミングで申し訳ないのですが
また偉いバグが見つかってしまったので、その修正をしたいと思います。
そのバグというのが

1、インパルスガンダムにフォースシルエットなど飛行可能シルエットを装備し
2、飛行状態で高層ビルや崖の上など、「着地できない地形」の上にいる際に
3、アビリティの「シルエット換装」を実行したうえで
4、「キャンセル」を選択すると

プレイヤーの自主的なキャンセル時に、行動を終了させないための
インクル側からかかる「覚醒」の効果が発生した後、
飛行不可能なシルエットに着地不可能な地形上で換装しようとした場合に
強制キャンセルされ、その際に行動を終了させないためにかかる「覚醒」が
後から別個にかかるために、インパルスが二回行動状態になる、というものです。
これを利用すると無限行動が可能になってしまいます。


また、同様の原因に起因するバグとして、飛行可能なストライカーパックを装備した
ストライカーパック対応MSが、着地不可能な地形の上空にいるときに
アークエンジェルからストライカーパックの換装を行っても同様の無限行動バグが発生します。
もっともこちらの場合、無限行動できるのはアークエンジェル(とドミニオン)だけですが。


さて、これらの問題を検証しているときに、もう一つ現行インクルードの問題点を発見してしまいました。

通常、ストライカーにせよシルエットにせよ、飛行可能な装備を装着し、着地不能地形の上を飛行中
ランチャーストライカーやソードシルエットといった飛行不可能な装備へ換装しようとすると
換装できない地形であることがメッセージで表示され、強制的にキャンセルされます。
この動作は上述した無限行動バグの原因の一環でもあります。

しかし、この飛行可能な装備を装着しているストライクガンダムなりインパルスガンダムなりが
別個に「ミノフスキークラフト等飛行能力獲得できる強化パーツ」など、
べつの手段によって飛行能力を獲得していた場合
本来なら換装できなければいけないということになりますが
この場合でも注意メッセージとともに換装がキャンセルされるということになります。

おそらく、飛行可能なパックが存在するのに、わざわざ貴重なミノフスキークラフトを
ストライクやインパルスにまわすような方が少数派だったために露見しなかったものと思われますが
現状空が飛べてストライカーパックに対応しており味方入りもありえるユニットとして
ヴァンセイバーガンダムがいたりするので
なんとか対応する必要があります。


最初にかきました無限行動バグはちょっと書き足しすれば直るのですが
後者はちょっと修正が効きそうにありません。
そもそも、引属性で水中の機体を地上に引っ張り上げられたときなど
強制的に移動不可能地形に乗り上げてしまうことは0ではなく
そのような地形で飛行できない形態に換装するのが間違いだったのだ、と
プレイヤーの自己責任として無視することも、インクル作成時は考えていたのですが
そうならないようにしたほうが親切だろう、と
インクル作るのが苦手であるにも関わらず「背伸び」してしまったのが諸悪の根源と言いますか…

実は(想定された動作かは怪しいですが)移動不能地形に乗り上げてしまっても
強制退去されるまでには1ターン猶予があり
その1ターンの間はどういうわけか(進入できないはずの地形の上を)普通に移動できてしまうので
そのターンのうちに移動可能地形まで脱出できれば、強制退去は避けれたりします。


以上のような事情から、3種類のバグの排除をかねて、
飛行可能なパックを装備し、着地できない地形の上を飛行中、
飛行能力を持たないパックへ換装しようとしても
注意メッセージの表示や強制キャンセルは発生しない
ようにインクルの仕様を変えてしまおうと思うのですがどうでしょうか?
要するにも問題箇所をごっそりを削除してしまおうと。
これはデータバランスの問題というよりはプレイアビリティの問題ということになるのですが…

これはこれで無視できないレベルの問題ですので、さらに一週間、投稿を待ち
様子を見させてもらおうと思います。

【5536】修正後インクルード

名前
 ぶれーかー
投稿日時
 - 2013年11月24日(日) 23時29分 -
設定
引用なし
パスワード
##############################シルエット関連初処理


使用 Unit(対象ユニットID) シルエット換装 :

If Not 使用済みシルエットナンバー > 0 Then
 使用済みシルエットナンバー = 1
EndIf


戦艦換装シルエットナンバー = 1
For i = 0 To CountItem(未装備)
 If i = 0 Then
  戦艦換装シルエット[0] = キャンセル
 EndIf
 If Info(アイテム,Item(未装備,i),アイテムクラス) = シルエット Then

  For j = 1 To 使用済みシルエットナンバー
 
   If 使用済みシルエット[j] = Item(未装備,i) Then
    このシルエットは使用済み = 1
   EndIf
  Next

   If Not このシルエットは使用済み = 1 Then
    戦艦換装シルエット[戦艦換装シルエットナンバー] = Item(未装備,i)
    Incr 戦艦換装シルエットナンバー
   EndIf

 EndIf

UnSet このシルエットは使用済み

Next


Ask 戦艦換装シルエット "$(Info(ユニットデータ,対象ユニットID,愛称))に装備するシルエットを選択してください"

If 選択 = 0 Then
  Cancel
  SpecialPower 対象ユニットID 覚醒
EndIf


##カオス、ガイア、アビスシルエットを、アウトフレームに付けれなくするための処理


If Info(戦艦換装シルエット[選択],名称) = カオスシルエット Then
 If Not Unit(対象ユニットID) = インパルスガンダム(ASTRAY対応) Then
  Talk
  換装可能な機体ではありません
  End
  Cancel
  SpecialPower 対象ユニットID 覚醒
 EndIf
ElseIf Info(戦艦換装シルエット[選択],名称) = アビスシルエット Then
 If Not Unit(対象ユニットID) = インパルスガンダム(ASTRAY対応) Then
  Talk
  換装可能な機体ではありません
  End
  Cancel
  SpecialPower 対象ユニットID 覚醒
 EndIf
ElseIf Info(戦艦換装シルエット[選択],名称) = ガイアシルエット Then
 If Not Unit(対象ユニットID) = インパルスガンダム(ASTRAY対応) Then
  Talk
  換装可能な機体ではありません
  End
  Cancel
  SpecialPower 対象ユニットID 覚醒
 EndIf
EndIf


##


Exit


使用後 Unit(対象ユニットID) シルエット換装 :

Call 使用済みシルエット処理


Equip 対象ユニットID 戦艦換装シルエット[選択]


UnSet i
UnSet j
UnSet 戦艦換装シルエットナンバー
UnSet 戦艦換装シルエット
SpecialPower 対象ユニットID 覚醒


Exit


使用済みシルエット処理:

For i = 0 To CountItem(対象ユニットID)

If Info(アイテム,Item(対象ユニットID,i),アイテムクラス) = シルエット Then
  使用済みシルエット[使用済みシルエットナンバー] = Item(対象ユニットID,i)
EndIf

Next

Incr 使用済みシルエットナンバー


Return


##############################ストライカーパック関連初処理


#######スカイグラスパーから換装する際の処理


使用 Unit(対象ユニットID) ストライカーパック換装 :

If Not 使用済みSPナンバー > 0 Then
 使用済みSPナンバー = 1
EndIf

#↑戦艦からの換装を使用するとき用の処理


##Gフライトを、アウトフレーム以外に付けれなくするための処理

If Info(アイテム,Item(対象ユニットID,1),名称) = Gフライト Then
 If Not Unit(相手ユニットID) = アストレイアウトフレーム Then
  If Not Unit(相手ユニットID) = アストレイアウトフレームD Then
   Talk
   換装可能な機体ではありません
   End
   Cancel
   SpecialPower 対象ユニットID 覚醒
  EndIf
 EndIf
EndIf


##


Exit


使用後 Unit(対象ユニットID) ストライカーパック換装 :


スカグラ装備中パック = (Item(対象ユニットID,1))

Call 使用済みストライカーパック処理


Equip 対象ユニットID ダミーストライカーパック
RemoveItem (対象ユニットID) ダミーストライカーパック
Equip 相手ユニットID スカグラ装備中パック


UnSet スカグラ装備中パック

RecoverEN 相手ユニットID 100

Exit


#######戦艦から換装する際の処理


使用 Unit(対象ユニットID) ストライカーパック換装(S) :

If Not 使用済みSPナンバー > 0 Then
 使用済みSPナンバー = 1
EndIf


戦艦換装SPナンバー = 1
For i = 0 To CountItem(未装備)
 If i = 0 Then
 戦艦換装ストライカーパック[0] = キャンセル
 EndIf
 If Info(アイテム,Item(未装備,i),アイテムクラス) = ストライカーパック Then

  For j = 1 To 使用済みSPナンバー
 
   If 使用済みストライカーパック[j] = Item(未装備,i) Then
    このSPは使用済み = 1
   EndIf
  Next

   If Not このSPは使用済み = 1 Then
    戦艦換装ストライカーパック[戦艦換装SPナンバー] = Item(未装備,i)
    Incr 戦艦換装SPナンバー
   EndIf

 EndIf

UnSet このSPは使用済み

Next


Ask 戦艦換装ストライカーパック "$(Info(ユニット,相手ユニットID,愛称))に装備するストライカーパックを選択してください"

If 選択 = 0 Then
 SpecialPower 対象ユニットID 覚醒
 Cancel
EndIf


##Gフライトを、アウトフレーム以外に付けれなくするための処理


If Info(アイテム,戦艦換装ストライカーパック[選択],名称) = Gフライト Then
 If Not Unit(相手ユニットID) = アストレイアウトフレーム Then
  If Not Unit(相手ユニットID) = アストレイアウトフレームD Then
   Talk
   換装可能な機体ではありません
   End
   Cancel
   SpecialPower 対象ユニットID 覚醒
  EndIf
 EndIf
EndIf

##


Exit


使用後 Unit(対象ユニットID) ストライカーパック換装(S) :


Call 使用済みストライカーパック処理


Equip 対象ユニットID ダミーストライカーパック
Equip 相手ユニットID 戦艦換装ストライカーパック[選択]
RemoveItem (対象ユニットID) ダミーストライカーパック


UnSet i
UnSet j
UnSet 戦艦換装SPナンバー
UnSet 戦艦換装ストライカーパック
RecoverEN 相手ユニットID 100
Exit


使用済みストライカーパック処理:

For i = 0 To CountItem(相手ユニットID)

If Info(アイテム,Item(相手ユニットID,i),アイテムクラス) = ストライカーパック Then
  使用済みストライカーパック[使用済みSPナンバー] = Item(相手ユニットID,i)
EndIf

Next

Incr 使用済みSPナンバー


Return


#####以下アウトフレーム専用処理

*使用後 アストレイアウトフレーム シルエット換装 :
*使用後 アストレイアウトフレームD シルエット換装 :

Equip 対象ユニット ダミーストライカーパック
RemoveItem 対象ユニット ダミーストライカーパック
Equip 対象ユニット ダミーウィザード
RemoveItem 対象ユニット ダミーウィザード
Equip 対象ユニット ダミーアストレイ換装パーツ
RemoveItem 対象ユニット ダミーアストレイ換装パーツ

Exit


*使用後 Unit(対象ユニットID) ストライカーパック換装 :
*使用後 Unit(対象ユニットID) ストライカーパック換装(S) :


If Unit(相手ユニットID) = アストレイアウトフレーム then
 Equip 相手ユニットID ダミーシルエット
 RemoveItem 相手ユニットID ダミーシルエット
 Equip 相手ユニットID ダミーウィザード
 RemoveItem 相手ユニットID ダミーウィザード
 Equip 相手ユニットID ダミーアストレイ換装パーツ
 RemoveItem 相手ユニットID ダミーアストレイ換装パーツ
ElseIf Unit(相手ユニットID) = アストレイアウトフレームD then
 Equip 相手ユニットID ダミーシルエット
 RemoveItem 相手ユニットID ダミーシルエット
 Equip 相手ユニットID ダミーウィザード
 RemoveItem 相手ユニットID ダミーウィザード
 Equip 相手ユニットID ダミーアストレイ換装パーツ
 RemoveItem 相手ユニットID ダミーアストレイ換装パーツ
EndIf

Exit

66 / 371 ツリー ←次へ前へ→

ページ:

記事番号:

537,322

(SS)C-BOARD v3.8 is Free

ページトップへt


SRC総合支援センター