Advertisement
Krythic

RunewordManager

Nov 25th, 2019
313
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 3.75 KB | None | 0 0
  1. using System.Collections.Generic;
  2. using System.Linq;
  3. using VoidwalkerEngine.Framework.Collections;
  4. using VoidwalkerEngine.Framework.DataTypes;
  5. using VoidwalkerEngine.Framework.Logic;
  6. using VoidwalkerEngine.Framework.Systems.Items.Augmentations;
  7. using VoidwalkerEngine.Framework.Systems.Items.Templates;
  8.  
  9. namespace VoidwalkerEngine.Framework.Systems.Items.Runewords
  10. {
  11.     public static class RunewordManager
  12.     {
  13.  
  14.         public static List<RunewordTemplate> Runewords;
  15.  
  16.         static RunewordManager()
  17.         {
  18.             InitializeRunewords();
  19.         }
  20.  
  21.         public static RunewordTemplate GetRuneword(List<Rune> runes, ItemConstraint itemCandidate)
  22.         {
  23.             if(runes == null)
  24.             {
  25.                 return null;
  26.             }
  27.             List<RuneType> runeTypes = new List<RuneType>();
  28.             foreach(Rune rune in runes)
  29.             {
  30.                 runeTypes.Add(rune.RuneType);
  31.             }
  32.             foreach (RunewordTemplate template in Runewords)
  33.             {
  34.                 if (template.ItemConstraints.Contains(itemCandidate))
  35.                 {
  36.                     if (Enumerable.SequenceEqual(template.RuneRequirements, runeTypes))
  37.                     {
  38.                         return template;
  39.                     }
  40.                 }
  41.             }
  42.             return null;
  43.         }
  44.  
  45.         private static void InitializeRunewords()
  46.         {
  47.             Runewords = new List<RunewordTemplate>
  48.             {
  49.                 /**
  50.                  * Weapon Runewords
  51.                  */
  52.                 new RunewordTemplate() {
  53.                     Header = "Harbinger",
  54.                     RuneRequirements = new List<RuneType>(){
  55.                         RuneType.Loken,  // Chaos
  56.                         RuneType.Quarm,  // Destruction
  57.                         RuneType.Dakk }, // Darkness
  58.                     ItemConstraints = new List<ItemConstraint>()
  59.                     {
  60.                         ItemConstraint.OneHandedSword,
  61.                         ItemConstraint.TwoHandedSword,
  62.                         ItemConstraint.OneHandedAxe,
  63.                         ItemConstraint.TwoHandedAxe,
  64.                         ItemConstraint.OneHandedMace,
  65.                         ItemConstraint.TwoHandedMace
  66.                     },
  67.                     Modifiers = new ItemModifierList()
  68.                     {
  69.                         new ItemModifier(ItemModifierTrait.EnhancedWeaponDamage,40),
  70.                         new ItemModifier(ItemModifierTrait.Strength,10),
  71.                         new ItemModifier(ItemModifierTrait.ShadowDamage,50),
  72.                         new ItemModifier(ItemModifierTrait.Mobility,1),
  73.                         new ItemModifier(ItemModifierTrait.HealthOnKill,4),
  74.                     }
  75.                 },
  76.  
  77.                 new RunewordTemplate() {
  78.                     Header = "Exile's End",
  79.                     RuneRequirements = new List<RuneType>()
  80.                     {
  81.                         RuneType.Ith, // Grief
  82.                         RuneType.Poth  // Guidance
  83.                     },
  84.                     ItemConstraints = new List<ItemConstraint>()
  85.                     {
  86.                         ItemConstraint.LightFootwear,
  87.                         ItemConstraint.MediumFootwear,
  88.                         ItemConstraint.HeavyFootwear
  89.                     },
  90.                     Modifiers = new ItemModifierList()
  91.                     {
  92.                         new ItemModifier(ItemModifierTrait.EnhancedArmorRating,25),
  93.                         new ItemModifier(ItemModifierTrait.EnhancedDurability,25),
  94.                         new ItemModifier(ItemModifierTrait.ExperienceGained,10)
  95.                     }
  96.                 }
  97.  
  98.             };
  99.         }
  100.  
  101.  
  102.     }
  103. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement