Krythic

sfsdf

Oct 28th, 2021
646
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. using System;
  2. using System.Collections.Generic;
  3.  
  4. namespace VoidwalkerEngine.Framework.Game.Systems.GameItems
  5. {
  6.  
  7.     #region MagicPropertyType
  8.     public enum MagicPropertyType
  9.     {
  10.         None,
  11.  
  12.         Replenish_Health,
  13.         Replenish_Mana,
  14.         Replenish_Energy,
  15.  
  16.         Attackpower_Modifier,
  17.         Spellpower_Modifier,
  18.  
  19.         Attackpower_Multiplier,
  20.         Spellpower_Multiplier,
  21.  
  22.         MagicFind,
  23.  
  24.         BaseArmor_Modifier,
  25.         BaseArmor_Multiplier,
  26.         BaseWeaponDamage_Modifier,
  27.         BaseWeaponDamage_Multiplier,
  28.         BaseBlockChance_Modifier,
  29.         BaseBlockChance_Multiplier,
  30.         BaseDurability_Modifier,
  31.         BaseDurability_Multiplier,
  32.  
  33.         DamageReduction_Physical,
  34.         DamageReduction_Magical,
  35.  
  36.         DamageVs_Humanoid,
  37.         DamageVs_Aberration,
  38.         DamageVs_Celestial,
  39.         DamageVs_Beast,
  40.         DamageVs_Construct,
  41.         DamageVs_Demons,
  42.         DamageVs_Dragonkin,
  43.         DamageVs_Elemental,
  44.         DamageVs_Magical,
  45.         DamageVs_Undead,
  46.  
  47.         Resist_All,
  48.         Resist_Fire,
  49.         Resist_Cold,
  50.         Resist_Shock,
  51.         Resist_Poison,
  52.         Resist_Arcane,
  53.         Resist_Shadow,
  54.         Resist_Holy,
  55.  
  56.         Absorb_Fire,
  57.         Absorb_Cold,
  58.         Absorb_Shock,
  59.         Absorb_Poison,
  60.         Absorb_Arcane,
  61.         Absorb_Shadow,
  62.         Absorb_Holy,
  63.  
  64.         Reflect_Fire,
  65.         Reflect_Cold,
  66.         Reflect_Shock,
  67.         Reflect_Poison,
  68.         Reflect_Arcane,
  69.         Reflect_Shadow,
  70.         Reflect_Holy,
  71.  
  72.         ExtraDamage_Fire,
  73.         ExtraDamage_Cold,
  74.         ExtraDamage_Shock,
  75.         ExtraDamage_Poison,
  76.         ExtraDamage_Arcane,
  77.         ExtraDamage_Shadow,
  78.         ExtraDamage_Holy,
  79.  
  80.         Thorns_Fire,
  81.         Thorns_Cold,
  82.         Thorns_Shock,
  83.         Thorns_Poison,
  84.         Thorns_Arcane,
  85.         Thorns_Shadow,
  86.         Thorns_Holy,
  87.  
  88.         Mastery_Fire,
  89.         Mastery_Cold,
  90.         Mastery_Shock,
  91.         Mastery_Poison,
  92.         Mastery_Arcane,
  93.         Mastery_Shadow,
  94.         Mastery_Holy,
  95.  
  96.         Restore_Health_OnKill,
  97.         Restore_Mana_OnKill,
  98.         Restore_Energy_OnKill,
  99.  
  100.         Steal_Health,
  101.         Steal_Mana,
  102.         Steal_Energy,
  103.  
  104.         ExperienceGained_OnKill,
  105.         MoneyFind,
  106.  
  107.         PierceArmor_Modifier,
  108.         PierceArmor_Multiplier,
  109.  
  110.         PierceResistance_Fire,
  111.         PierceResistance_Cold,
  112.         PierceResistance_Shock,
  113.         PierceResistance_Poison,
  114.         PierceResistance_Arcane,
  115.         PierceResistance_Shadow,
  116.         PierceResistance_Holy,
  117.  
  118.  
  119.         Maximum_Health_Modifier,
  120.         Maximum_Energy_Modifier,
  121.         Maximum_Mana_Modifier,
  122.  
  123.         Maximum_Health_Multiplier,
  124.         Maximum_Energy_Multiplier,
  125.         Maximum_Mana_Multiplier,
  126.  
  127.         Stat_Strength_Modifier,
  128.         Stat_Defense_Modifier,
  129.         Stat_Stamina_Modifier,
  130.         Stat_Intellect_Modifier,
  131.         Stat_Wisdom_Modifier,
  132.         Stat_Spirit_Modifier,
  133.  
  134.         Stat_Strength_Multiplier,
  135.         Stat_Defense_Multiplier,
  136.         Stat_Stamina_Multiplier,
  137.         Stat_Intellect_Multiplier,
  138.         Stat_Wisdom_Multiplier,
  139.         Stat_Spirit_Multiplier,
  140.  
  141.         ArmorMastery_Cloth,
  142.         ArmorMastery_Leather,
  143.         ArmorMastery_Plate,
  144.  
  145.         WeaponMastery_Bows,
  146.         WeaponMastery_Daggers,
  147.         WeaponMastery_Axes,
  148.         WeaponMastery_Maces,
  149.         WeaponMastery_Swords,
  150.         WeaponMastery_Staves,
  151.         WeaponMastery_Wands,
  152.  
  153.         /**
  154.          * Keyword Effects
  155.          */
  156.         Omniproof,
  157.         Burnproof,
  158.         Freezeproof,
  159.         Paralyzeproof,
  160.         Dreamproof,
  161.         Muteproof,
  162.         Blindproof,
  163.         Deafproof,
  164.         Poisonproof,
  165.         Diseaseproof,
  166.         Hexproof,
  167.  
  168.         Ghoststrike,
  169.         Deadlystrike,
  170.         Surestrike,
  171.         RepairDurability,
  172.         Indestructible,
  173.         Soulbound,
  174.         Ethereal,
  175.     }
  176.     #endregion
  177.  
  178.     public class MagicProperty
  179.     {
  180.         public MagicPropertyType Property { get; set; }
  181.         public int Magnitude { get; set; }
  182.  
  183.         public MagicProperty()
  184.         {
  185.  
  186.         }
  187.  
  188.         public MagicProperty(MagicPropertyType property, int maginitude)
  189.         {
  190.             this.Property = property;
  191.             this.Magnitude = maginitude;
  192.         }
  193.  
  194.         private string GetSign()
  195.         {
  196.             return Magnitude > 0 ? "+" : "-";
  197.         }
  198.  
  199.         #region TooltipDescription
  200.         public string GetTooltipDescription()
  201.         {
  202.             switch (Property)
  203.             {
  204.  
  205.                 case MagicPropertyType.None:
  206.                     return "???";
  207.  
  208.                 case MagicPropertyType.Replenish_Health:
  209.                     return "Replenish " + Magnitude + " Health";
  210.                 case MagicPropertyType.Replenish_Mana:
  211.                     return "Replenish " + Magnitude + " Mana";
  212.                 case MagicPropertyType.Replenish_Energy:
  213.                     return "Replenish " + Magnitude + " Energy";
  214.  
  215.                 case MagicPropertyType.Attackpower_Multiplier:
  216.                     return GetSign() + Magnitude + "% Attackpower";
  217.                 case MagicPropertyType.Spellpower_Multiplier:
  218.                     return GetSign() + Magnitude + "% Spellpower";
  219.  
  220.                 case MagicPropertyType.Attackpower_Modifier:
  221.                     return GetSign() + Magnitude + " Attackpower";
  222.                 case MagicPropertyType.Spellpower_Modifier:
  223.                     return GetSign() + Magnitude + " Spellpower";
  224.  
  225.                 case MagicPropertyType.MagicFind:
  226.                     return GetSign() + Magnitude + "% Magic Find";
  227.  
  228.                 case MagicPropertyType.BaseArmor_Multiplier:
  229.                     return GetSign() + Magnitude + "% Enhanced Armor";
  230.                 case MagicPropertyType.BaseWeaponDamage_Multiplier:
  231.                     return GetSign() + Magnitude + "% Enhanced Weapon Damage";
  232.                 case MagicPropertyType.BaseBlockChance_Multiplier:
  233.                     return GetSign() + Magnitude + "% Enhanced Block Chance";
  234.                 case MagicPropertyType.BaseDurability_Multiplier:
  235.                     return GetSign() + Magnitude + "% Enhanced Durability";
  236.  
  237.                 case MagicPropertyType.BaseWeaponDamage_Modifier:
  238.                     return GetSign() + Magnitude + " Weapon Damage";
  239.                 case MagicPropertyType.BaseArmor_Modifier:
  240.                     return GetSign() + Magnitude + " Armor";
  241.  
  242.                 case MagicPropertyType.DamageReduction_Physical:
  243.                     return "Physical damage reduced by " + Magnitude;
  244.                 case MagicPropertyType.DamageReduction_Magical:
  245.                     return "Magical damage reduced by " + Magnitude;
  246.  
  247.  
  248.                 case MagicPropertyType.DamageVs_Humanoid:
  249.                     return GetSign() + Magnitude + "% Damage vs Humans";
  250.                 case MagicPropertyType.DamageVs_Aberration:
  251.                     return GetSign() + Magnitude + "% Damage vs Aberrations";
  252.                 case MagicPropertyType.DamageVs_Celestial:
  253.                     return GetSign() + Magnitude + "% Damage vs Celestials";
  254.                 case MagicPropertyType.DamageVs_Beast:
  255.                     return GetSign() + Magnitude + "% Damage vs Beasts";
  256.                 case MagicPropertyType.DamageVs_Construct:
  257.                     return GetSign() + Magnitude + "% Damage vs Constructs";
  258.                 case MagicPropertyType.DamageVs_Demons:
  259.                     return GetSign() + Magnitude + "% Damage vs Demons";
  260.                 case MagicPropertyType.DamageVs_Dragonkin:
  261.                     return GetSign() + Magnitude + "% Damage vs Dragons";
  262.                 case MagicPropertyType.DamageVs_Elemental:
  263.                     return GetSign() + Magnitude + "% Damage vs Elementals";
  264.                 case MagicPropertyType.DamageVs_Magical:
  265.                     return GetSign() + Magnitude + "% Damage vs Magicals";
  266.                 case MagicPropertyType.DamageVs_Undead:
  267.                     return GetSign() + Magnitude + "% Damage vs Undead";
  268.  
  269.                 case MagicPropertyType.Resist_All:
  270.                     return GetSign() + Magnitude + "% Resist All";
  271.                 case MagicPropertyType.Resist_Fire:
  272.                     return GetSign() + Magnitude + "% Fire Resist";
  273.                 case MagicPropertyType.Resist_Cold:
  274.                     return GetSign() + Magnitude + "% Cold Resist";
  275.                 case MagicPropertyType.Resist_Shock:
  276.                     return GetSign() + Magnitude + "% Shock Resist";
  277.                 case MagicPropertyType.Resist_Poison:
  278.                     return GetSign() + Magnitude + "% Poison Resist";
  279.                 case MagicPropertyType.Resist_Arcane:
  280.                     return GetSign() + Magnitude + "% Arcane Resist";
  281.                 case MagicPropertyType.Resist_Shadow:
  282.                     return GetSign() + Magnitude + "% Shadow Resist";
  283.                 case MagicPropertyType.Resist_Holy:
  284.                     return GetSign() + Magnitude + "% Holy Resist";
  285.  
  286.                 case MagicPropertyType.Absorb_Fire:
  287.                     return "Absorb " + Magnitude + "% Fire Damage";
  288.                 case MagicPropertyType.Absorb_Cold:
  289.                     return "Absorb " + Magnitude + "% Cold Damage";
  290.                 case MagicPropertyType.Absorb_Shock:
  291.                     return "Absorb " + Magnitude + "% Shock Damage";
  292.                 case MagicPropertyType.Absorb_Poison:
  293.                     return "Absorb " + Magnitude + "% Poison Damage";
  294.                 case MagicPropertyType.Absorb_Arcane:
  295.                     return "Absorb " + Magnitude + "% Arcane Damage";
  296.                 case MagicPropertyType.Absorb_Shadow:
  297.                     return "Absorb " + Magnitude + "% Shadow Damage";
  298.                 case MagicPropertyType.Absorb_Holy:
  299.                     return "Absorb " + Magnitude + "% Holy Damage";
  300.  
  301.                 case MagicPropertyType.Reflect_Fire:
  302.                     return "Reflect " + Magnitude + "% Fire Damage";
  303.                 case MagicPropertyType.Reflect_Cold:
  304.                     return "Reflect " + Magnitude + "% Cold Damage";
  305.                 case MagicPropertyType.Reflect_Shock:
  306.                     return "Reflect " + Magnitude + "% Shock Damage";
  307.                 case MagicPropertyType.Reflect_Poison:
  308.                     return "Reflect " + Magnitude + "% Poison Damage";
  309.                 case MagicPropertyType.Reflect_Arcane:
  310.                     return "Reflect " + Magnitude + "% Arcane Damage";
  311.                 case MagicPropertyType.Reflect_Shadow:
  312.                     return "Reflect " + Magnitude + "% Shadow Damage";
  313.                 case MagicPropertyType.Reflect_Holy:
  314.                     return "Reflect " + Magnitude + "% Holy Damage";
  315.  
  316.                 case MagicPropertyType.ExtraDamage_Fire:
  317.                     return "Adds " + this.Magnitude + " Fire Damage";
  318.                 case MagicPropertyType.ExtraDamage_Cold:
  319.                     return "Adds " + this.Magnitude + " Cold Damage";
  320.                 case MagicPropertyType.ExtraDamage_Shock:
  321.                     return "Adds " + this.Magnitude + " Shock Damage";
  322.                 case MagicPropertyType.ExtraDamage_Poison:
  323.                     return "Adds " + this.Magnitude + " Poison Damage";
  324.                 case MagicPropertyType.ExtraDamage_Arcane:
  325.                     return "Adds " + this.Magnitude + " Arcane Damage";
  326.                 case MagicPropertyType.ExtraDamage_Shadow:
  327.                     return "Adds " + this.Magnitude + " Shadow Damage";
  328.                 case MagicPropertyType.ExtraDamage_Holy:
  329.                     return "Adds " + this.Magnitude + " Holy Damage";
  330.  
  331.                 case MagicPropertyType.Thorns_Fire:
  332.                     return "Attacker takes " + this.Magnitude + " Fire Damage";
  333.                 case MagicPropertyType.Thorns_Cold:
  334.                     return "Attacker takes " + this.Magnitude + " Cold Damage";
  335.                 case MagicPropertyType.Thorns_Shock:
  336.                     return "Attacker takes " + this.Magnitude + " Shock Damage";
  337.                 case MagicPropertyType.Thorns_Poison:
  338.                     return "Attacker takes " + this.Magnitude + " Poison Damage";
  339.                 case MagicPropertyType.Thorns_Arcane:
  340.                     return "Attacker takes " + this.Magnitude + " Arcane Damage";
  341.                 case MagicPropertyType.Thorns_Shadow:
  342.                     return "Attacker takes " + this.Magnitude + " Shadow Damage";
  343.                 case MagicPropertyType.Thorns_Holy:
  344.                     return "Attacker takes " + this.Magnitude + " Holy Damage";
  345.  
  346.                 case MagicPropertyType.Mastery_Fire:
  347.                     return GetSign() + Magnitude + "% Fire Damage";
  348.                 case MagicPropertyType.Mastery_Cold:
  349.                     return GetSign() + Magnitude + "% Cold Damage";
  350.                 case MagicPropertyType.Mastery_Shock:
  351.                     return GetSign() + Magnitude + "% Shock Damage";
  352.                 case MagicPropertyType.Mastery_Poison:
  353.                     return GetSign() + Magnitude + "% Poison Damage";
  354.                 case MagicPropertyType.Mastery_Arcane:
  355.                     return GetSign() + Magnitude + "% Arcane Damage";
  356.                 case MagicPropertyType.Mastery_Shadow:
  357.                     return GetSign() + Magnitude + "% Shadow Damage";
  358.                 case MagicPropertyType.Mastery_Holy:
  359.                     return GetSign() + Magnitude + "% Holy Damage";
  360.  
  361.  
  362.                 case MagicPropertyType.Restore_Health_OnKill:
  363.                     return "Gain " + this.Magnitude + " Health on Kill";
  364.                 case MagicPropertyType.Restore_Mana_OnKill:
  365.                     return "Gain " + this.Magnitude + " Mana on Kill";
  366.                 case MagicPropertyType.Restore_Energy_OnKill:
  367.                     return "Gain " + this.Magnitude + " Energy on Kill";
  368.  
  369.                 case MagicPropertyType.ExperienceGained_OnKill:
  370.                     return GetSign() + Magnitude + "% Experience Gained";
  371.  
  372.                 case MagicPropertyType.MoneyFind:
  373.                     return GetSign() + Magnitude + "% Money Found";
  374.  
  375.                 case MagicPropertyType.Maximum_Energy_Modifier:
  376.                     return GetSign() + Magnitude + " Maximum Energy";
  377.                 case MagicPropertyType.Maximum_Mana_Modifier:
  378.                     return GetSign() + Magnitude + " Maximum Mana";
  379.  
  380.                 case MagicPropertyType.Stat_Strength_Modifier:
  381.                     return GetSign() + Magnitude + " Strength";
  382.                 case MagicPropertyType.Stat_Defense_Modifier:
  383.                     return GetSign() + Magnitude + " Defense";
  384.                 case MagicPropertyType.Stat_Stamina_Modifier:
  385.                     return GetSign() + Magnitude + " Stamina";
  386.                 case MagicPropertyType.Stat_Intellect_Modifier:
  387.                     return GetSign() + Magnitude + " Intellect";
  388.                 case MagicPropertyType.Stat_Wisdom_Modifier:
  389.                     return GetSign() + Magnitude + " Wisdom";
  390.                 case MagicPropertyType.Stat_Spirit_Modifier:
  391.                     return GetSign() + Magnitude + " Spirit";
  392.  
  393.                 case MagicPropertyType.Stat_Strength_Multiplier:
  394.                     return GetSign() + Magnitude + "% Strength";
  395.                 case MagicPropertyType.Stat_Defense_Multiplier:
  396.                     return GetSign() + Magnitude + "% Defense";
  397.                 case MagicPropertyType.Stat_Stamina_Multiplier:
  398.                     return GetSign() + Magnitude + "% Stamina";
  399.                 case MagicPropertyType.Stat_Intellect_Multiplier:
  400.                     return GetSign() + Magnitude + "% Intellect";
  401.                 case MagicPropertyType.Stat_Wisdom_Multiplier:
  402.                     return GetSign() + Magnitude + "% Wisdom";
  403.                 case MagicPropertyType.Stat_Spirit_Multiplier:
  404.                     return GetSign() + Magnitude + "% Spirit";
  405.  
  406.                 case MagicPropertyType.Steal_Health:
  407.                     return Magnitude + "% Health Stolen Per Hit";
  408.                 case MagicPropertyType.Steal_Mana:
  409.                     return Magnitude + " Mana Stolen Per Hit";
  410.                 case MagicPropertyType.Steal_Energy:
  411.                     return Magnitude + " Energy Stolen Per Hit";
  412.  
  413.                 case MagicPropertyType.WeaponMastery_Bows:
  414.                     return GetSign() + Magnitude + "% Bow Mastery";
  415.                 case MagicPropertyType.WeaponMastery_Daggers:
  416.                     return GetSign() + Magnitude + "% Dagger Mastery";
  417.                 case MagicPropertyType.WeaponMastery_Axes:
  418.                     return GetSign() + Magnitude + "% Axe Mastery";
  419.                 case MagicPropertyType.WeaponMastery_Maces:
  420.                     return GetSign() + Magnitude + "% Mace Mastery";
  421.                 case MagicPropertyType.WeaponMastery_Swords:
  422.                     return GetSign() + Magnitude + "% Sword Mastery";
  423.                 case MagicPropertyType.WeaponMastery_Staves:
  424.                     return GetSign() + Magnitude + "% Staff Mastery";
  425.                 case MagicPropertyType.WeaponMastery_Wands:
  426.                     return GetSign() + Magnitude + "% Wand Mastery";
  427.  
  428.                 case MagicPropertyType.RepairDurability:
  429.                     if (this.Magnitude >= 100)
  430.                     {
  431.                         return "Repairs Durability";
  432.                     }
  433.                     return this.Magnitude + "% Chance to Repair Durability";
  434.                 case MagicPropertyType.Omniproof:
  435.                     return "Omniproof";
  436.                 case MagicPropertyType.Burnproof:
  437.                     return "Burnproof";
  438.                 case MagicPropertyType.Freezeproof:
  439.                     return "Freezeproof";
  440.                 case MagicPropertyType.Paralyzeproof:
  441.                     return "Paralyzeproof";
  442.                 case MagicPropertyType.Dreamproof:
  443.                     return "Dreamproof";
  444.                 case MagicPropertyType.Muteproof:
  445.                     return "Muteproof";
  446.                 case MagicPropertyType.Blindproof:
  447.                     return "Blindproof";
  448.                 case MagicPropertyType.Deafproof:
  449.                     return "Deafproof";
  450.                 case MagicPropertyType.Poisonproof:
  451.                     return "Poisonproof";
  452.                 case MagicPropertyType.Diseaseproof:
  453.                     return "Diseaseproof";
  454.                 case MagicPropertyType.Hexproof:
  455.                     return "Hexproof";
  456.  
  457.                 case MagicPropertyType.Ghoststrike:
  458.                     return this.Magnitude + "% Chance of Ghoststrike";
  459.                 case MagicPropertyType.Deadlystrike:
  460.                     return this.Magnitude + "% Chance of Deadlystrike";
  461.                 case MagicPropertyType.Surestrike:
  462.                     return this.Magnitude + "% Chance of Surestrike";
  463.  
  464.                 case MagicPropertyType.ArmorMastery_Cloth:
  465.                     return GetSign() + Magnitude + "% Cloth Armor Mastery";
  466.                 case MagicPropertyType.ArmorMastery_Leather:
  467.                     return GetSign() + Magnitude + "% Leather Armor Mastery";
  468.                 case MagicPropertyType.ArmorMastery_Plate:
  469.                     return GetSign() + Magnitude + "% Plate Armor Mastery";
  470.  
  471.                 case MagicPropertyType.Indestructible:
  472.                     return "Indestructible";
  473.                 case MagicPropertyType.Soulbound:
  474.                     return "Soulbound";
  475.                 case MagicPropertyType.Ethereal:
  476.                     return "Ethereal";
  477.                 case MagicPropertyType.BaseDurability_Modifier:
  478.                     return GetSign() + Magnitude + " Durability";
  479.                 case MagicPropertyType.Maximum_Health_Modifier:
  480.                     return GetSign() + Magnitude + " Health";
  481.                 case MagicPropertyType.Maximum_Health_Multiplier:
  482.                     return GetSign() + Magnitude + "% Health";
  483.                 case MagicPropertyType.Maximum_Energy_Multiplier:
  484.                     return GetSign() + Magnitude + "% Energy";
  485.                 case MagicPropertyType.Maximum_Mana_Multiplier:
  486.                     return GetSign() + Magnitude + " % Mana";
  487.                 case MagicPropertyType.BaseBlockChance_Modifier:
  488.                     return GetSign() + Magnitude + "% Block Chance";
  489.                 default:
  490.                     throw new System.Exception("Unable to create Tooltip for: " + Property);
  491.             }
  492.         }
  493.         #endregion
  494.  
  495.         public void Copy(MagicProperty other)
  496.         {
  497.             this.Property = other.Property;
  498.             this.Magnitude = other.Magnitude;
  499.         }
  500.  
  501.     }
  502.  
  503.     public static class GamePropertyTypeHelper
  504.     {
  505.  
  506.         private static Dictionary<string, MagicPropertyType> _propertyIdentifierCache;
  507.  
  508.         public static MagicPropertyType ParseGameProperty(string text)
  509.         {
  510.             if (_propertyIdentifierCache == null)
  511.             {
  512.                 _propertyIdentifierCache = new Dictionary<string, MagicPropertyType>();
  513.                 MagicPropertyType[] types = (MagicPropertyType[])Enum.GetValues(typeof(MagicPropertyType));
  514.                 foreach (MagicPropertyType type in types)
  515.                 {
  516.                     _propertyIdentifierCache.Add(type.ToIdentifier(), type);
  517.                 }
  518.             }
  519.             if (_propertyIdentifierCache.ContainsKey(text))
  520.             {
  521.                 return _propertyIdentifierCache[text];
  522.             }
  523.             else
  524.             {
  525.                 throw new Exception("Could not parse: '" + text + "' to MagicPropertyType!");
  526.             }
  527.         }
  528.  
  529.         /// <summary>
  530.         /// These String Identifiers are used by the game engine to parse
  531.         /// Affixes and GameItem definitions from text files. They form a
  532.         /// sort of keyword api, of sorts.
  533.         /// </summary>
  534.         /// <param name="property"></param>
  535.         /// <returns></returns>
  536.         public static string ToIdentifier(this MagicPropertyType property)
  537.         {
  538.             return property switch
  539.             {
  540.                 MagicPropertyType.None => "None",
  541.                 MagicPropertyType.Replenish_Health => "Replenish_Health",
  542.                 MagicPropertyType.Replenish_Mana => "Replenish_Mana",
  543.                 MagicPropertyType.Replenish_Energy => "Replenish_Energy",
  544.                 MagicPropertyType.Attackpower_Multiplier => "Attackpower_Mult",
  545.                 MagicPropertyType.Spellpower_Multiplier => "Spellpower_Mult",
  546.                 MagicPropertyType.Attackpower_Modifier => "Attackpower_Mod",
  547.                 MagicPropertyType.Spellpower_Modifier => "Spellpower_Mod",
  548.                 MagicPropertyType.MagicFind => "MagicFind",
  549.                 MagicPropertyType.BaseArmor_Multiplier => "BaseArmor_Mult",
  550.                 MagicPropertyType.BaseArmor_Modifier => "BaseArmor_Mod",
  551.                 MagicPropertyType.BaseWeaponDamage_Multiplier => "BaseWeaponDamage_Mult",
  552.                 MagicPropertyType.BaseBlockChance_Multiplier => "BaseBlockChance_Mult",
  553.                 MagicPropertyType.BaseBlockChance_Modifier => "BaseBlockChance_Mod",
  554.                 MagicPropertyType.BaseDurability_Multiplier => "BaseDurability_Mult",
  555.                 MagicPropertyType.BaseDurability_Modifier => "BaseDurability_Mod",
  556.                 MagicPropertyType.BaseWeaponDamage_Modifier => "BaseWeaponDamage_Mod",
  557.                 MagicPropertyType.DamageReduction_Physical => "DamageReduction_Physical",
  558.                 MagicPropertyType.DamageReduction_Magical => "DamageReduction_Magical",
  559.                 MagicPropertyType.DamageVs_Humanoid => "DamageVs_Humanoid",
  560.                 MagicPropertyType.DamageVs_Aberration => "DamageVs_Aberration",
  561.                 MagicPropertyType.DamageVs_Celestial => "DamageVs_Celestial",
  562.                 MagicPropertyType.DamageVs_Beast => "DamageVs_Beasts",
  563.                 MagicPropertyType.DamageVs_Construct => "DamageVs_Construct",
  564.                 MagicPropertyType.DamageVs_Demons => "DamageVs_Demons",
  565.                 MagicPropertyType.DamageVs_Dragonkin => "DamageVs_Dragonkin",
  566.                 MagicPropertyType.DamageVs_Elemental => "DamageVs_Elemental",
  567.                 MagicPropertyType.DamageVs_Magical => "DamageVs_Magical",
  568.                 MagicPropertyType.DamageVs_Undead => "DamageVs_Undead",
  569.                 MagicPropertyType.Resist_All => "Resist_All",
  570.                 MagicPropertyType.Resist_Fire => "Resist_Fire",
  571.                 MagicPropertyType.Resist_Cold => "Resist_Cold",
  572.                 MagicPropertyType.Resist_Shock => "Resist_Shock",
  573.                 MagicPropertyType.Resist_Poison => "Resist_Poison",
  574.                 MagicPropertyType.Resist_Arcane => "Resist_Arcane",
  575.                 MagicPropertyType.Resist_Shadow => "Resist_Shadow",
  576.                 MagicPropertyType.Resist_Holy => "Resist_Holy",
  577.                 MagicPropertyType.Absorb_Fire => "Absorb_Fire",
  578.                 MagicPropertyType.Absorb_Cold => "Absorb_Cold",
  579.                 MagicPropertyType.Absorb_Shock => "Absorb_Shock",
  580.                 MagicPropertyType.Absorb_Poison => "Absorb_Poison",
  581.                 MagicPropertyType.Absorb_Arcane => "Absorb_Arcane",
  582.                 MagicPropertyType.Absorb_Shadow => "Absorb_Shadow",
  583.                 MagicPropertyType.Absorb_Holy => "Absorb_Holy",
  584.                 MagicPropertyType.Reflect_Fire => "Reflect_Fire",
  585.                 MagicPropertyType.Reflect_Cold => "Reflect_Cold",
  586.                 MagicPropertyType.Reflect_Shock => "Reflect_Shock",
  587.                 MagicPropertyType.Reflect_Poison => "Reflect_Poison",
  588.                 MagicPropertyType.Reflect_Arcane => "Reflect_Arcane",
  589.                 MagicPropertyType.Reflect_Shadow => "Reflect_Shadow",
  590.                 MagicPropertyType.Reflect_Holy => "Reflect_Holy",
  591.                 MagicPropertyType.ExtraDamage_Fire => "ExtraDamage_Fire",
  592.                 MagicPropertyType.ExtraDamage_Cold => "ExtraDamage_Cold",
  593.                 MagicPropertyType.ExtraDamage_Shock => "ExtraDamage_Shock",
  594.                 MagicPropertyType.ExtraDamage_Poison => "ExtraDamage_Poison",
  595.                 MagicPropertyType.ExtraDamage_Arcane => "ExtraDamage_Arcane",
  596.                 MagicPropertyType.ExtraDamage_Shadow => "ExtraDamage_Shadow",
  597.                 MagicPropertyType.ExtraDamage_Holy => "ExtraDamage_Holy",
  598.                 MagicPropertyType.Thorns_Fire => "Thorns_Fire",
  599.                 MagicPropertyType.Thorns_Cold => "Thorns_Cold",
  600.                 MagicPropertyType.Thorns_Shock => "Thorns_Shock",
  601.                 MagicPropertyType.Thorns_Poison => "Thorns_Poison",
  602.                 MagicPropertyType.Thorns_Arcane => "Thorns_Arcane",
  603.                 MagicPropertyType.Thorns_Shadow => "Thorns_Shadow",
  604.                 MagicPropertyType.Thorns_Holy => "Thorns_Holy",
  605.                 MagicPropertyType.Mastery_Fire => "Mastery_Fire",
  606.                 MagicPropertyType.Mastery_Cold => "Mastery_Cold",
  607.                 MagicPropertyType.Mastery_Shock => "Mastery_Shock",
  608.                 MagicPropertyType.Mastery_Poison => "Mastery_Poison",
  609.                 MagicPropertyType.Mastery_Arcane => "Mastery_Arcane",
  610.                 MagicPropertyType.Mastery_Shadow => "Mastery_Shadow",
  611.                 MagicPropertyType.Mastery_Holy => "Mastery_Holy",
  612.                 MagicPropertyType.Restore_Mana_OnKill => "Restore_Mana_OnKill",
  613.                 MagicPropertyType.Restore_Energy_OnKill => "Restore_Energy_OnKill",
  614.                 MagicPropertyType.Steal_Health => "Steal_Health",
  615.                 MagicPropertyType.Steal_Mana => "Steal_Mana",
  616.                 MagicPropertyType.Steal_Energy => "Steal_Energy",
  617.                 MagicPropertyType.ExperienceGained_OnKill => "ExperienceGained_OnKill",
  618.                 MagicPropertyType.MoneyFind => "MoneyFind",
  619.                 MagicPropertyType.Maximum_Energy_Modifier => "Maximum_Energy",
  620.                 MagicPropertyType.Maximum_Mana_Modifier => "Maximum_Mana",
  621.                 MagicPropertyType.Maximum_Health_Modifier => "Maximum_Health_Mod",
  622.                 MagicPropertyType.Stat_Strength_Modifier => "Stat_Strength_Mod",
  623.                 MagicPropertyType.Stat_Defense_Modifier => "Stat_Defense_Mod",
  624.                 MagicPropertyType.Stat_Stamina_Modifier => "Stat_Stamina_Mod",
  625.                 MagicPropertyType.Stat_Intellect_Modifier => "Stat_Intellect_Mod",
  626.                 MagicPropertyType.Stat_Wisdom_Modifier => "Stat_Wisdom_Mod",
  627.                 MagicPropertyType.Stat_Spirit_Modifier => "Stat_Spirit_Mod",
  628.                 MagicPropertyType.Stat_Strength_Multiplier => "Stat_Strength_Mult",
  629.                 MagicPropertyType.Stat_Defense_Multiplier => "Stat_Defense_Mult",
  630.                 MagicPropertyType.Stat_Stamina_Multiplier => "Stat_Stamina_Mult",
  631.                 MagicPropertyType.Stat_Intellect_Multiplier => "Stat_Intellect_Mult",
  632.                 MagicPropertyType.Stat_Wisdom_Multiplier => "Stat_Wisdom_Mult",
  633.                 MagicPropertyType.Stat_Spirit_Multiplier => "Stat_Spirit_Mult",
  634.                 MagicPropertyType.ArmorMastery_Cloth => "ArmorMastery_Light",
  635.                 MagicPropertyType.ArmorMastery_Leather => "ArmorMastery_Medium",
  636.                 MagicPropertyType.ArmorMastery_Plate => "ArmorMastery_Heavy",
  637.                 MagicPropertyType.WeaponMastery_Bows => "WeaponMastery_Bows",
  638.                 MagicPropertyType.WeaponMastery_Daggers => "WeaponMastery_Daggers",
  639.                 MagicPropertyType.WeaponMastery_Axes => "WeaponMastery_Axes",
  640.                 MagicPropertyType.WeaponMastery_Maces => "WeaponMastery_Maces",
  641.                 MagicPropertyType.WeaponMastery_Swords => "WeaponMastery_Swords",
  642.                 MagicPropertyType.WeaponMastery_Staves => "WeaponMastery_Staves",
  643.                 MagicPropertyType.WeaponMastery_Wands => "WeaponMastery_Wands",
  644.                 MagicPropertyType.Omniproof => "Omniproof",
  645.                 MagicPropertyType.Burnproof => "Burnproof",
  646.                 MagicPropertyType.Freezeproof => "Freezeproof",
  647.                 MagicPropertyType.Paralyzeproof => "Paralyzeproof",
  648.                 MagicPropertyType.Dreamproof => "Dreamproof",
  649.                 MagicPropertyType.Muteproof => "Muteproof",
  650.                 MagicPropertyType.Blindproof => "Blindproof",
  651.                 MagicPropertyType.Deafproof => "Deafproof",
  652.                 MagicPropertyType.Poisonproof => "Poisonproof",
  653.                 MagicPropertyType.Diseaseproof => "Diseaseproof",
  654.                 MagicPropertyType.Hexproof => "Hexproof",
  655.                 MagicPropertyType.Ghoststrike => "Ghoststrike",
  656.                 MagicPropertyType.Deadlystrike => "Deadlystrike",
  657.                 MagicPropertyType.Surestrike => "Surestrike",
  658.                 MagicPropertyType.RepairDurability => "RepairDurability",
  659.                 MagicPropertyType.Indestructible => "Indestructible",
  660.                 MagicPropertyType.Soulbound => "Soulbound",
  661.                 MagicPropertyType.Ethereal => "Ethereal",
  662.                 MagicPropertyType.Maximum_Health_Multiplier => "Max_Health_Mult",
  663.                 MagicPropertyType.Maximum_Energy_Multiplier => "Max_Energy_Mult",
  664.                 MagicPropertyType.Maximum_Mana_Multiplier => "Max_Mana_Mult",
  665.                 _ => throw new Exception("Could not convert " + property + " to Identifier!"),
  666.             };
  667.         }
  668.     }
  669.  
  670. }
RAW Paste Data