選択できるのは25トピックまでです。 トピックは、先頭が英数字で、英数字とダッシュ('-')を使用した35文字以内のものにしてください。

80 行
1.8 KiB

  1. define([
  2. 'security/io',
  3. 'config/skins'
  4. ], function (
  5. io,
  6. configSkins
  7. ) {
  8. return {
  9. fixCharacter: function (player) {
  10. var inv = player.components.find(c => (c.type == 'inventory'));
  11. if ((inv) && (inv.items))
  12. this.fixItems(inv.items);
  13. },
  14. fixStash: function (stash) {
  15. this.fixItems(stash);
  16. },
  17. fixItems: function (items) {
  18. items
  19. .filter(i => ((i.name == 'Cowl of Obscurity') && (!i.factions)))
  20. .forEach(function (i) {
  21. i.factions = [{
  22. id: 'gaekatla',
  23. tier: 7
  24. }];
  25. });
  26. items
  27. .filter(i => (i.name == `Steelclaw's Bite`))
  28. .forEach(function (i) {
  29. var effect = i.effects[0];
  30. if (!effect.properties) {
  31. effect.properties = {
  32. element: 'poison'
  33. };
  34. } else if (!effect.properties.element)
  35. effect.properties.element = 'poison';
  36. });
  37. items
  38. .filter(f => ((f.effects) && (f.effects[0].factionId == 'akarei') && (!f.effects[0].properties)))
  39. .forEach(function (i) {
  40. var effect = i.effects[0];
  41. var chance = parseFloat(effect.text.split(' ')[0].replace('%', ''));
  42. effect.properties = {
  43. chance: chance
  44. };
  45. });
  46. items
  47. .filter(f => ((f.stats) && (f.stats.dmgPercent)))
  48. .forEach(function (i) {
  49. i.stats.physicalPercent = i.stats.dmgPercent;
  50. delete i.stats.dmgPercent;
  51. if ((i.enchantedStats) && (i.enchantedStats.dmgPercent)) {
  52. i.enchantedStats.physicalPercent = i.enchantedStats.dmgPercent;
  53. delete i.enchantedStats.dmgPercent;
  54. }
  55. });
  56. },
  57. fixSkins: function (username, skins) {
  58. var length = skins.length;
  59. skins = skins.filter(s => !!configSkins.getBlueprint(s));
  60. if (length != skins.length) {
  61. io.set({
  62. ent: username,
  63. field: 'skins',
  64. value: JSON.stringify(skins)
  65. });
  66. }
  67. }
  68. };
  69. });