Advertisement
orikalin

Untitled

Jan 20th, 2022
1,127
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4.  
  5. public class SpellList : MonoBehaviour
  6. {
  7.     public int preppedSpellLimit;
  8.     public Dictionary<string, string> spellList = new Dictionary<string, string>();
  9.     public Dictionary<string, string> spellComboList = new Dictionary<string, string>();
  10.     List<string> level1Spells = new List<string>();
  11.     List<string> level2Spells = new List<string>();
  12.     List<string> homingSpells = new List<string>();
  13.     List<string> areaSpells = new List<string>();
  14.     [HideInInspector] public List<string> preparedSpells = new List<string>();
  15.     AudioSource source;
  16.     public AudioClip spellPrepAudio;
  17.     public AudioClip badSpell;
  18.     DrawSpellLine drawSpellLine;
  19.     public PreparedSpellsPanel spellsPanel;
  20.     [SerializeField] SpellCasting spellCasting;
  21.     [HideInInspector] public float preparedSpellCost = 0;
  22.  
  23.     private void Start()
  24.     {
  25.         spellCasting = GetComponentInParent<SpellCasting>();
  26.         drawSpellLine = GetComponent<DrawSpellLine>();
  27.         source = GetComponentInParent<AudioSource>();
  28.         //quick spells
  29.         spellList.Add("1.1.1.", "lightningBolt");
  30.         spellList.Add("2.2.2.", "windVortex");
  31.         spellList.Add("3.3.3.", "iceSpike");
  32.         spellList.Add("4.4.4.", "fireball");
  33.         //spellList.Add("4.1.2.", "earthSpike");
  34.         //spellList.Add("2.4.2.", "windDash");
  35.         //spellList.Add("3.3.3.", "murderIce");
  36.  
  37.         //complex spells
  38.         spellList.Add("3.4.1.2.3.", "heal");
  39.         spellList.Add("3.1.4.2.1.", "windJump");
  40.         spellList.Add("1.2.4.3.", "lightningBoltComplex");
  41.         spellList.Add("2.4.3.1.", "windVortexComplex");
  42.         spellList.Add("3.1.4.1.", "iceSpikeComplex");
  43.         spellList.Add("4.2.3.2.", "fireballComplex");
  44.  
  45.         //spell modifiers
  46.         spellList.Add("4.3.1.3.2.", "homing");
  47.         spellList.Add("1.4.2.4.3.", "burst");
  48.         spellList.Add("3.2.1.4.3.", "area");
  49.  
  50.         //non readied spells
  51.         spellList.Add("1.4.3.1.2.3.", "superArmor");
  52.  
  53.         //-------------------------------------------------------------------------------------------
  54.         //-------------------------------------------------------------------------------------------
  55.         spellComboList.Add("lightningBolticeSpikeComplex", "IceElecCombo");
  56.         spellComboList.Add("lightningBolt_Level2iceSpikeComplex", "IceElecCombo");
  57.         spellComboList.Add("iceSpikelightningBoltComplex", "IceElecCombo");
  58.         spellComboList.Add("iceSpike_Level2lightningBoltComplex", "IceElecCombo");
  59.         spellComboList.Add("windVortexlightningBoltComplex", "WindElecCombo");
  60.         spellComboList.Add("windVortex_Level2lightningBoltComplex", "WindElecCombo");
  61.         spellComboList.Add("lightningBoltwindVortexComplex", "WindElecCombo");
  62.         spellComboList.Add("lightningBolt_Level2windVortexComplex", "WindElecCombo");
  63.         spellComboList.Add("lightningBoltlightningBolt", "lightningBolt_Level2");
  64.         spellComboList.Add("lightningBoltlightningBoltComplex", "lightningBolt_Level2");
  65.         spellComboList.Add("windVortexwindVortex", "windVortex_Level2");
  66.         spellComboList.Add("windVortexwindVortexComplex", "windVortex_Level2");
  67.         spellComboList.Add("iceSpikeiceSpike", "iceSpike_Level2");
  68.         spellComboList.Add("iceSpikeiceSpikeComplex", "iceSpike_Level2");
  69.         spellComboList.Add("fireballfireball", "fireball_Level2");
  70.         spellComboList.Add("fireballfireballComplex", "fireball_Level2");
  71.         //spell combo mod keys
  72.         spellComboList.Add("fireballhoming", "HomingFire");
  73.         spellComboList.Add("homingfireball", "HomingFire");
  74.         spellComboList.Add("fireball_Level2homing", "HomingFire");
  75.         spellComboList.Add("iceSpikehoming", "murderIce");
  76.         spellComboList.Add("homingiceSpike", "murderIce");
  77.         spellComboList.Add("iceSpike_Level2homing", "murderIce");
  78.         spellComboList.Add("windVortexhoming", "HomingWind");
  79.         spellComboList.Add("homingwindVortex", "HomingWind");
  80.         spellComboList.Add("windVortex_Level2homing", "HomingWind");
  81.         spellComboList.Add("lightningBolthoming", "HomingLightning");
  82.         spellComboList.Add("hominglightningBolt", "HomingLightning");
  83.         spellComboList.Add("lightningBolt_Level2homing", "HomingLightning");
  84.  
  85.  
  86.         //------------------------------------------------------------------------------
  87.         // Mana cost tiers
  88.         //------------------------------------------------------------------------------
  89.         level1Spells.Add("lightningBolt");
  90.         level1Spells.Add("windVortex");
  91.         level1Spells.Add("iceSpike");
  92.         level1Spells.Add("fireball");
  93.  
  94.         level2Spells.Add("lightningBolt_Level2");
  95.         level2Spells.Add("windVortex_Level2");
  96.         level2Spells.Add("iceSpike_Level2");
  97.         level2Spells.Add("fireball_Level2");
  98.  
  99.         homingSpells.Add("HomingFire");
  100.         homingSpells.Add("murderIce");
  101.         homingSpells.Add("HomingWind");
  102.         homingSpells.Add("HomingLightning");
  103.     }
  104.  
  105.     public bool CompareInput(ref string spellInput)
  106.     {
  107.         bool goodParse = false;
  108.         foreach (string spellKey in spellList.Keys)
  109.         {
  110.             if (spellKey.StartsWith(spellInput))
  111.                 goodParse = true;
  112.             else
  113.                 goodParse = false;
  114.  
  115.             if (goodParse)
  116.                 break;
  117.         }
  118.         if (!goodParse) //if the current input doesn't lead to any successful spells, end the casting as a failure
  119.         {
  120.             //drawSpellLine.RejectedSpell(); // change this to some new effect for a rejected spell
  121.             GameMaster.i.player.CastFail();
  122.             return true;
  123.         }
  124.         if (spellList.ContainsKey(spellInput)) //if the current input matches with a spell, do the success animation with the line and push the spell into the prepared list
  125.         {
  126.             if (preparedSpells.Count > 0 && spellComboList.ContainsKey(preparedSpells[0] + spellList[spellInput]))
  127.             {
  128.                 CombineSpells(preparedSpells[0], spellList[spellInput]);
  129.             }
  130.             else
  131.                 PrepareSpell(spellList[spellInput]); //passing the value for the key in []
  132.             //drawSpellLine.AcceptedSpell(); // new animation for accepted spell
  133.             return true;
  134.         }
  135.         else
  136.         {
  137.             return false;
  138.         }
  139.     }
  140.     public void PrepareSpell(string spell)
  141.     {
  142.         string mod = default;
  143.         switch (spell) //if a complex spell is entered with no spells in queue, change to level 2
  144.         {
  145.             case "lightningBoltComplex":
  146.                 spell = "lightningBolt_Level2";
  147.                 preparedSpellCost = 0.32f;
  148.                 break;
  149.             case "windVortexComplex":
  150.                 spell = "windVortex_Level2";
  151.                 preparedSpellCost = 0.32f;
  152.                 break;
  153.             case "iceSpikeComplex":
  154.                 spell = "iceSpike_Level2";
  155.                 preparedSpellCost = 0.32f;
  156.                 break;
  157.             case "fireballComplex":
  158.                 spell = "fireball_Level2";
  159.                 preparedSpellCost = 0.32f;
  160.                 break;
  161.             default:
  162.                 preparedSpellCost = 0.2f;
  163.                 break;
  164.         }
  165.         switch (spell)
  166.         {
  167.             case level2Spells.Contains(spell):
  168.  
  169.             default:
  170.                 break;
  171.         }
  172.            
  173.         preparedSpells.Add(spell);
  174.         source.PlayOneShot(spellPrepAudio);
  175.         if (preparedSpells.Count > preppedSpellLimit)
  176.         {
  177.             preparedSpells.RemoveAt(0);
  178.             spellsPanel.RemoveOldestSpell();
  179.         }
  180.         spellsPanel.ChangeSpellIcon(preparedSpells);
  181.     }
  182.     public void CastElementalSpell()
  183.     {
  184.         if (preparedSpells.Count > 0 && SpellCasting.magicList.ContainsKey(preparedSpells[0]))
  185.         {
  186.             spellCasting.ProceedWithSpell(preparedSpells[0]);
  187.         }
  188.         else
  189.             RemoveReadiedSpell();
  190.     }
  191.     public void OverchargeCastSpell()
  192.     {
  193.         if (level1Spells.Contains(preparedSpells[0]))
  194.         {
  195.             switch (preparedSpells[0])
  196.             {
  197.                 case "lightningBolt":
  198.                     spellCasting.ProceedWithSpell("lightningBolt_Level2");
  199.                     break;
  200.                 case "windVortex":
  201.                     spellCasting.ProceedWithSpell("windVortex_Level2");
  202.                     break;
  203.                 case "iceSpike":
  204.                     spellCasting.ProceedWithSpell("iceSpike_Level2");
  205.                     break;
  206.                 case "fireball":
  207.                     spellCasting.ProceedWithSpell("fireball_Level2");
  208.                     break;
  209.  
  210.                 default:
  211.                     spellCasting.ProceedWithSpell(preparedSpells[0]);
  212.                     break;
  213.             }
  214.         }
  215.         else
  216.             spellCasting.ProceedWithSpell(preparedSpells[0]);
  217.     }
  218.  
  219.     public void CombineSpells(string spell1, string spell2)
  220.     {
  221.         string combinedString = spell1 + spell2;
  222.         if (spellComboList.ContainsKey(combinedString))
  223.         {
  224.             source.PlayOneShot(spellPrepAudio);
  225.             preparedSpells.RemoveAt(0);
  226.             preparedSpells.Add(spellComboList[combinedString]);
  227.             spellsPanel.RemoveOldestSpell();
  228.             spellsPanel.ChangeSpellIcon(preparedSpells);
  229.             Debug.Log(spellComboList[combinedString]);
  230.             if (level2Spells.Contains(spellComboList[combinedString]))
  231.                 preparedSpellCost = 0.32f;
  232.             else
  233.                 preparedSpellCost = 0.48f;
  234.         }
  235.     }
  236.     public void RemoveReadiedSpell()
  237.     {
  238.         if(preparedSpells.Count > 0)
  239.         {
  240.             preparedSpells.RemoveAt(0);
  241.             spellsPanel.RemoveOldestSpell();
  242.             preparedSpellCost = 0;
  243.         }
  244.     }
  245.  
  246. }
  247.  
Advertisement
Advertisement
Advertisement
RAW Paste Data Copied
Advertisement