錬成関連修正まとめ

イヤリングとネックレスの錬成対象化

[Scripts\Skills\Imbuing\Core\Imbuing.cs]
●76行目の条件文に追加
 else if (item is BaseJewel && !(item is BaseRing) && !(item is BaseBracelet) && !(item is BaseEarrings) && !(item is BaseNecklace))

ネックレス(銀)について

ネックレス(銀)については以下の部分も追加が必要です。
●169行目
 if (item.GetType() == typeof(SilverRing) || item.GetType() == typeof(SilverBracelet) || item.GetType() == typeof(Necklace) || item.GetType() == typeof(SilverNecklace))
   return false;
上記の通り条件に、|| item.GetType() == typeof(Necklace) || item.GetType() == typeof(SilverNecklace) を追加します。

★一見、NPC店売りのネックレス(銀)はSilverNecklace(0x1F08)と思ってしまいますが、(0x1085)なのでただのNecklaceなんですね。
(おそらくUO初期からある普通のネックレスで、見た目が銀なだけだったんですね。)

勤勉の首飾り(NecklaceofDiligence.cs)は、SilverNecklace(0x1F08)クラスを継承していますが、個別にアーティファクト扱いになっているので錬成不可で問題ありませんでした。
公正のアミュレット(AmuletOfRighteousness.cs)も、アーティファクト扱い&Blessなので錬成不可で問題ありませんでした。

なお、Gold系のアクセはすでに錬成可能なので、その下のforeachブロックのCraftSystem.Systemsに含まれていて、特殊アイテム=falseで返っているようです。
あと、ネックレスにはビーズタイプのSilverBeadNecklace(0x1F05)クラスもありますが、こちらもクラフトアイテム扱いですでに錬成可能でした。

オークヘルムについて

★その他、オークヘルムなど、生産可能品「以外」は上記の169行目の部分でfalseを返してやらないとスペシャルアイテム扱いとなり、"You cannot imbue an item with such strange magical properties."のメッセージが出て錬成対象から弾かれます。

例えば、"OrcHelm"を錬成可能にするためには、
 || item.GetType() == typeof(OrcHelm)
 // (実際は || item is OrcHelm という表現でよいのですがw)
を追加する形になりますが、"OrcHelm"を錬成可能にした場合、これを継承している"EvilOrcHelm"も自動的に錬成可能となりますので、"EvilOrcHelm"は錬成不可にしたい場合は、EvilOrcHelm.cs に、
 public override bool IsArtifact { get { return true; } }
を追加してアーティファクト扱いにすればOKです。

骨腕が錬成できない不具合修正 2017/1/25 ServUO側が修正済み

(2017/2/10 DaemonArms.csとDaemonHelm.csの正しい配置についても、ServUO側に反映しておきました。)

原因

BoneArms.csが、Scripts\Items\Artifacts\Equipment\Armor\Sets\DaemonBone\内にあり、なおかつ8行目に
 public override bool IsArtifact { get { return true; } }
があり、アーティファクト扱いになっている。

修正内容

(1) Scripts\Items\Artifacts\Equipment\Armor\Sets\DaemonBone\BoneArms.csの8行目
 public override bool IsArtifact { get { return true; } }
をコメントアウトして無効化する。
(ネクロ腕は独自ファイルがありちゃんとアーティファクト扱いになっています。)
(2) できれば上記のBoneArms.csを、適切な場所であるScripts\Items\Equipment\Armor\内に移動する。
(3) 逆に、Scripts\Items\Equipment\Armor\内に、DaemonArms.csとDaemonHelm.csがあるので、これらはScripts\Items\Artifacts\Equipment\Armor\Sets\DaemonBone\内に移動した方が良いかも。


アイテムのランク評価が適切でない件→適用済

変だと思う例

(1) 強度475の指輪が「マジックアイテム (上級)」
(2) 強度562の指輪が「マジックアイテム (最上級)」

参考記事

パブリッシュ73の記事によると
http://www.uoguide.com/Publish_73
"Lesser Artifact (this is approximately equivalent to an item Imbued to the max)"
「アーティファクト(低級)は最大まで練成したアイテムとほぼ同程度の強度」

原因

[Scripts\Services\RunicReforging\RunicReforging.cs] 2015++行目付近
 public static ItemPower GetItemPower(Item item, bool playermade) // アイテム強度評価を返す関数
●2017++行目付近
   double max = Imbuing.GetMaxWeight(item) + 50; // ←★+50不要
●2021++行目付近
   double preArty = (max + 50); // ←★+50不要かも?

修正前

480~600「マジックアイテム(最上級)」
601~719「アーティファクト (低級)」

修正後

400~500「マジックアイテム (最上級)」
501~659「アーティファクト (低級)」

なお、ちょっと変わりすぎかな?ということでしたら、2017++行目付近の方の+50だけを削除すれば、
preArty = 550 になり
440~550「マジックアイテム (最上級)」
551~689「アーティファクト (低級)」
となりますので、これくらいでもいいのかもしれません。

スキルプロパティーの錬成において必要な特殊素材数が異なる問題の簡易的応急処置

[Scripts\Skills\Imbuing\Core\Imbuing.cs]
●GetSpecialAmount()メソッド内 862行目あたり
(2017/4/22現在、ServUO最新masterビルドでもまだ修正されていないようです。)
 else if (MWeight - currentIntensity >= 1 && currentIntensity > 90 )
 {
     // ----★追加ここから★----
     if (mod >= 151 && mod <=183)  // Skills
     {
         if (value <= 13) return 0;
         if (value == 14) return 3;
     }
     // ----★追加ここまで★----
 
     if (Max < 10)
         return 0;
     else if (Max >= 16 && Max <= 89)
         return 5;
     else if (Max > 90 && Max <= 100)
         return (int)currentIntensity - 90;
     else
         return 3;
 }

タグ:

+ タグ編集
  • タグ:

このサイトはreCAPTCHAによって保護されており、Googleの プライバシーポリシー利用規約 が適用されます。

最終更新:2017年04月22日 03:09