拾った武器防具をその場で売却する

このキャラにはこの服装とこの武器と決めている場合、山賊から拾う装備がただ所持重量を圧迫するだけなのが嫌なので、非ユニークキャラから拾いあげた付呪無しの装備をその場でゴールドに変えてみるスクリプトを組む事にしました。

これから書く最低限の例文はステート移行による連続Event開始の防止処理を一切行っていないので、実際に使用する場合はPapyrus Tweaks NGのフレームレート切り離し機能との併用を強く推奨します。この状態で数時間テストプレイをしましたが、私の環境ではスクリプトのスタックが起こりませんでした。

付呪判別の都合上、SKSEのソースが必須です。頑張って入れて。

今回やりたい事としては

・ルートした装備をその場でゴールドに変換
・ユニークキャラからルートした装備は変換しない
・付呪が付いた装備は変換しない

となります。このスクリプトをMagicEffect側に取り付けた後にSSEEditでスクリプトのプロパティで

PlayerRef = プレイヤーのリファレンスであるFormID:14を指定
SourceContainerKeyword = ActorTypeNPCであるFormID:13794を指定
ConvertedMiscItem = ゴールドであるFormID:Fを指定

してください。私はこれをSpellに取り付けてニューゲーム時にプレイヤーに配布するQuestを作成して運用していますが、MagicEffectさえ作成してあれば好きなように使えるのでそこは自由にやってみてください。

ScriptName aaaKimachuuAddItemBreak Extends ActiveMagicEffect

Actor Property PlayerRef Auto
Keyword Property SourceContainerKeyword Auto
MiscObject Property ConvertedMiscItem Auto

Event OnItemAdded(Form akBaseItem, int aiItemCount, ObjectReference akItemReference, ObjectReference akSourceContainer)
if akSourceContainer.HasKeyword(SourceContainerKeyword)
ActorBase cheakBase = akSourceContainer.GetBaseObject() as ActorBase
if (!cheakBase.IsUnique())
if akBaseItem as Weapon
Weapon WeaponRef = akBaseItem as Weapon
if (WeaponRef.GetEnchantment() == none)
Int WVal = WeaponRef.GetGoldValue()
PlayerRef.AddItem(ConvertedMiscItem, WVal, True)
PlayerRef.RemoveItem(WeaponRef)
endif
elseif akBaseItem as Armor
Armor ArmorRef = akBaseItem as Armor
if (ArmorRef.GetEnchantment() == none)
Int AVal = ArmorRef.GetGoldValue()
PlayerRef.AddItem(ConvertedMiscItem, AVal, True)
PlayerRef.RemoveItem(ArmorRef)
endif
endif
endif
endif
endEvent

読みにくくてほんとごめん…よく考えたら後にアクターベースがユニークかどうかを判定させているので、コンテナのキーワード判別はぶっちゃけ冗長な感じもしますが、とりあえず最初に書いた時はこんな感じという事で。もし実際にやってみて問題が起こっても責任は取れませんが、起こった問題には興味があるので教えてくださると嬉しいです。

テストプレイしてて気付いたのですが、NGSの自動売却機能だこれ。

この記事を書いた人

PSO2 Ship03、FFXIVイフ鯖などで活動しています。PSO2ではEP2以降Teを楽しんでおり、単独戦闘力を求める以上に他人を見る立ち回りが好きです。申し訳程度に現行エキスパを取っているくらいの中間ゲーマーですが、宜しくお願いします。

コメント

コメントする

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

目次