Beispiel #1
0
 public BloodFlow(IPlayer player, string args = null)
 {
     WeaponType = WeaponType.Blood;
     SpellTypes.Add(typeof(Rupture));
     // If Corruption(Gimmick) is > 60 we do a dot, dealing 0.36*CP/sec for 6 seconds.
     // Causes next 4 blood attacks to deal additional 1.93 * CP extra.
 }
Beispiel #2
0
 public Flay()
 {
     WeaponType = WeaponType.Blood;
     SpellTypes.Add(typeof(Maleficium));
     BaseDamage       = 0.11; // TODO: Make sure it's 0.11 BaseDamage and not 0.11 BaseDamageModifier...
     ModelledInWeapon = true;
 }
Beispiel #3
0
        public PlayerSpell(int attackCount, int[] damage, float[] timeBtwAttack, DamageTypes[] damageType, SpellTypes type, SpellUseTypes useType, float timeToUse /*, int energyCost*/, float castTime, float cooldown, Vector2[] damageRange, Element element, Vector2[] forceDirection, float[] castDistance, float[] shellLifeTime)
        {
            this.attackCount   = attackCount;
            this.damage        = damage;
            this.timeBtwAttack = timeBtwAttack;
            this.damageType    = damageType;
            this.type          = type;
            //this.energyCost = energyCost;
            this.castTime       = castTime;
            this.cooldown       = cooldown;
            this.damageRange    = damageRange;
            this.element        = element;
            this.forceDirection = forceDirection;
            this.castDistance   = castDistance;
            this.timeToUse      = timeToUse;
            this.useType        = useType;
            this.shellLifeTime  = shellLifeTime;

            icon             = null;
            waitingIcon      = null;
            castAnimation    = null;
            attackAnimations = null;
            audioCast        = null;
            audioImpact      = null;
            audioAttacks     = null;
            particle         = null;
            spellPrefab      = null;
            shellClip        = null;
        }
Beispiel #4
0
 public Superconductor(IPlayer player, string args = null)
 {
     WeaponType = WeaponType.Elemental;
     SpellTypes.Add(typeof(Mjolnir));
     //Mjolnir can't miss.
     BaseDamageCritModifier = 0.32;
 }
Beispiel #5
0
 public HardenedBlade()
 {
     WeaponType = WeaponType.Blade;
     SpellTypes.Add(typeof(SwallowCut));
     ModelledInWeapon = true;
     // Has 30% chance to not consume a spirit blade attackcharge when used.
 }
Beispiel #6
0
 public Passive3()
 {
     WeaponType = WeaponType.Hammer;
     SpellTypes.Add(typeof(Spell1));
     BaseDamageModifier     = 1;
     BaseDamageCritModifier = 2;
 }
Beispiel #7
0
 public EyeOfTheRuinStorm(IPlayer player, string args = null)
 {
     WeaponType = WeaponType.Chaos;
     SpellTypes.Add(typeof(Weapons.Chaos.Singularity));
     BaseDamage = 1.68;
     // Singularity Base Damage increased to 4.35
 }
Beispiel #8
0
        public static int SpellNumber(SpellTypes s)
        {
            int num = Info(s).SpellNumber;

            Debug.Assert(num >= MIN_SPELL_NUM && num <= MAX_SPELL_NUM);
            return(num);
        }
Beispiel #9
0
 public Duality(IPlayer player, string args = null)
 {
     WeaponType = WeaponType.Chaos;
     SpellTypes.Add(typeof(TumultousWhisper));
     // If TumultousWHisper causes us to exceed 8 paradoxes... We get a Doppleganger();
     // See chaos weapon modeling. (Weapons.Chaos.Doppleganger)
 }
        public void SetSpellCooldown(SpellTypes spell, TimeSpan cooldown)
        {
            var castInfo = SpellCastInfo(spell);

            castInfo.Cooldown = cooldown;
            castInfo.TimeLeft = cooldown;
        }
Beispiel #11
0
		public bool IsOnCooldown(SpellTypes spell)
		{
			TimeSpan lastUse = TimeOfLastSpellUse(spell);
			return lastUse == TimeSpan.Zero ? false : 
				lastUse.TotalSeconds + SpellsHelper.Info(spell).Cooldown.TotalSeconds > 
					Server.Instance.GetTime().TotalSeconds;
		}
Beispiel #12
0
        public bool IsCastingSpell(ChampionTypes champ, PlayerActionType action)
        {
            SpellTypes spell = ChampionTypesHelper.GetSpellFromAction(champ, action);

            return(TimeOfLastSpellUse(spell).TotalSeconds +
                   SpellsHelper.Info(spell).CastingTime.TotalSeconds >= Server.Instance.GetTime().TotalSeconds);
        }
Beispiel #13
0
 public Glaciate(IPlayer player, string args = null)
 {
     WeaponType = WeaponType.Elemental;
     SpellTypes.Add(typeof(IceBeam));
     //Attacks against the target with Ice Beam debuff ( 5seconds)
     //Deal 0.5 * CP extra.
 }
Beispiel #14
0
 public KeenEdge()
 {
     WeaponType = WeaponType.Blade;
     SpellTypes.Add(typeof(Hone));
     BaseDamageCritModifier = 0.4;
     // Adds 40% critpower buff during hone
 }
Beispiel #15
0
 public Outrage()
 {
     WeaponType = WeaponType.Hammer;
     SpellTypes.Add(typeof(Seethe));
     PrimaryGimmickGain = 38;
     // Using Seethe generating 38 Rage
 }
Beispiel #16
0
        /// <summary>
        /// Get animations for current spellcast.
        /// This happens the first time a spell is cast and stored for re-casting.
        /// It's likely player will use a wide variety of spell types in normal play.
        /// </summary>
        void SetCurrentAnims(SpellTypes spellType, int border = 0, bool dilate = false)
        {
            // Attempt to get current anims
            if (castAnims.ContainsKey(spellType))
            {
                currentAnimType = spellType;
                currentAnims    = castAnims[spellType];
                return;
            }

            // Load spellcast file
            string     filename = WeaponBasics.GetSpellAnimFilename(spellType);
            string     path     = Path.Combine(DaggerfallUnity.Instance.Arena2Path, filename);
            CifRciFile cifFile  = new CifRciFile();

            if (!cifFile.Load(path, FileUsage.UseMemory, true))
            {
                throw new Exception(string.Format("Could not load spell anims file {0}", path));
            }

            // Load CIF palette
            cifFile.Palette.Load(Path.Combine(DaggerfallUnity.Instance.Arena2Path, cifFile.PaletteName));

            // Load textures - spells have a single frame per record unlike weapons
            Texture2D[] frames = new Texture2D[cifFile.RecordCount];
            for (int record = 0; record < cifFile.RecordCount; record++)
            {
                Texture2D texture = null;

                // Get Color32 array
                DFSize    sz;
                Color32[] colors = cifFile.GetColor32(record, 0, 0, border, out sz);

                // Dilate edges
                if (border > 0 && dilate)
                {
                    ImageProcessing.DilateColors(ref colors, sz);
                }

                // Create Texture2D
                texture = new Texture2D(sz.Width, sz.Height, TextureFormat.RGBA32, false);
                texture.SetPixels32(colors);
                texture.Apply(true);

                // Set filter mode and store in frames array
                if (texture)
                {
                    texture.filterMode = (FilterMode)DaggerfallUnity.Settings.MainFilterMode;
                    frames[record]     = texture;
                }
            }

            // Add frames array to dictionary
            castAnims.Add(spellType, frames);

            // Use as current anims
            currentAnimType = spellType;
            currentAnims    = frames;
        }
 public Character(double level, double magic, SpellTypes spell, bool serenity)
 {
     _level        = level;
     _magic        = magic;
     _spell        = spell;
     _spellPower   = (double)_spell;
     _serenityMult = serenity ? SerenityBoost : NoSerenityBoost;
 }
Beispiel #18
0
 public FocusedFire()
 {
     WeaponType         = WeaponType.Pistol;
     SpellType          = SpellType.Passive;
     BaseDamageModifier = 3.47;
     // If no matching chambers gain Double White, BaseDamage of Kill Blind increased to 3,47CP
     SpellTypes.Add(typeof(KillBlind));
 }
Beispiel #19
0
 // TODO: Test
 public BulletEcho()
 {
     WeaponType = WeaponType.Pistol;
     SpellTypes.Add(typeof(Ricochet));
     BaseDamage        = 0.32;
     PassiveBonusSpell = this;
     // When Ricochet expires Pistol attacks chain to nearby enemies 0,32CP damage 4s duration
 }
Beispiel #20
0
 public PassiveBonusSpell()
 {
     WeaponType = WeaponType.Hammer;
     SpellTypes.Add(typeof(Spell1));
     BaseDamage        = 0.81;
     PassiveBonusSpell = this;
     // Critical Hits with Dual Shot deal an additional 0,81CP BaseDamage
 }
Beispiel #21
0
 public ElementalForce(IPlayer player, string args = null)
 {
     WeaponType = WeaponType.Elemental;
     SpellTypes.Add(typeof(Overload));
     //Heat reduction increased by 10 (so total -40)
     //Creates 0.42 * CP attack
     //Creates 0.14 * CP dot for 6 seconds
 }
Beispiel #22
0
 public Annihilate()
 {
     WeaponType = WeaponType.Hammer;
     SpellTypes.Add(typeof(EruptionRage));
     BaseDamage         = 7.12; // Damage increased to 12.72 * CombatPower Instead of 5.6 Base..
     PrimaryGimmickCost = 50;   // Total of 50
     PrimaryGimmickGain = -7;
 }
Beispiel #23
0
 public Obliterate()
 {
     WeaponType = WeaponType.Hammer;
     SpellTypes.Add(typeof(Demolish));
     SpellTypes.Add(typeof(DemolishRage));
     BaseDamageCritModifier = 0.35;
     // +35% Demolish BaseDamage on crit
 }
Beispiel #24
0
 public Defilement()
 {
     WeaponType = WeaponType.Blood;
     SpellTypes.Add(typeof(Desecrate));
     ModelledInWeapon = true;
     // Corrution gain during Desecrate is increased by 20%
     // If at max corruption we gain 16.5% blood ability damage.
 }
Beispiel #25
0
 public UnerringAccuracy()
 {
     WeaponType = WeaponType.Rifle;
     SpellTypes.Add(typeof(RedMist));
     BaseDamageCritModifier = 0.68;
     // Critical hits deal 68 % more damage
     // TODO: Test and add: Can no longer glance or evade
 }
Beispiel #26
0
 public SlowBurn(IPlayer player, string args = null)
 {
     WeaponType = WeaponType.Rifle;
     SpellTypes.Add(typeof(IncendiaryGrenade));
     DotDuration = 3;
     // TODO: Test
     // Increasing duration to 11s from 8s
 }
Beispiel #27
0
 public Basic_spell(byte cost, string name, string _description, SpellTypes type, SpellElement elem)
 {
     spellCost   = cost;
     spellName   = name;
     description = _description;
     spellType   = type;
     spellElem   = elem;
 }
Beispiel #28
0
 public PointBlankShot()
 {
     WeaponType = WeaponType.Shotgun;
     SpellTypes.Add(typeof(RagingShot));
     BaseDamage = 0.58;
     // TODO: Test and implement range???
     // Increase damage to 4.00 to targets within 3m
 }
Beispiel #29
0
 public SalvageExpert()
 {
     WeaponType = WeaponType.Shotgun;
     SpellTypes.Add(typeof(ShellSalvage));
     SecondaryGain = 5;
     // TODO: offer to reload the same type of shell
     // Always offer to reload the same type of shell.
 }
Beispiel #30
0
        public bool IsOnCooldown(SpellTypes spell)
        {
            TimeSpan lastUse = TimeOfLastSpellUse(spell);

            return(lastUse == TimeSpan.Zero ? false :
                   lastUse.TotalSeconds + SpellsHelper.Info(spell).Cooldown.TotalSeconds >
                   Server.Instance.GetTime().TotalSeconds);
        }
Beispiel #31
0
 public ExtendedMagazine()
 {
     WeaponType = WeaponType.Rifle;
     SpellTypes.Add(typeof(FullAuto));
     ChannelTicks = 1;
     // TODO: Test
     // Increase number of hits to 5 from 4
 }
Beispiel #32
0
		public void UsedSpell(SpellTypes spell)
		{
			float time = (float)Server.Instance.GetTime().TotalSeconds;
			if (LastSpellUses.ContainsKey(spell))
				LastSpellUses[spell] = time;
			else
				LastSpellUses.Add(spell, time);
		}
Beispiel #33
0
	public SpellTypes Combination(SpellTypes spell1, SpellTypes spell2){
		int result = FSM.getCombination ((int)spell1, (int)spell2);


		if (result == -1)	// No existe esa combinación.
			return SpellTypes.NULL;

		SpellTypes parsedResult = (SpellTypes) result;
		return parsedResult;
	}
		public ClientLinearSpell(ulong id, SpellTypes type, Vec2 pos, float time, Vec2 velocity, float range, float width)
        {
			ID = id;
			Type = type;
			StartingPosition = pos;
			Position = StartingPosition;
			Velocity = velocity;
			Time = Math.Max(0f, (float)Client.Instance.GetTime().TotalSeconds - time);
			Active = true;
			Range = range;
			Width = width;
        }
Beispiel #35
0
		public LinearSpell(ulong id, Teams team, Vec2 position, Vec2 target, SpellTypes type, ICharacter owner)
			: base(id, position,
			       SpellsHelper.Info(type).Speed, 
			       SpellsHelper.Info(type).Width, SpellsHelper.Info(type).Width)
        {
			Info = SpellsHelper.Info(type);

			IsSolid = Info.Solid;

			Type = type;
			Velocity = Vec2.Normalize(target - position) * MoveSpeed;
			StartPosition = (Vec2)position.Clone();
			Team = team;
			Owner = owner;
        }
Beispiel #36
0
		public static int SpellNumber(SpellTypes s)
		{
			int num = Info(s).SpellNumber;
			Debug.Assert(num >= MIN_SPELL_NUM && num <= MAX_SPELL_NUM);
			return num;
		}
Beispiel #37
0
		public static SpellInfo Info(SpellTypes s)
		{
			if (Spells.ContainsKey(s))
				return Spells[s];
			else {
				ILogger.Log("Spell not implemented: " + s + ".");
				return Spells[SpellTypes.ManMega_RocketRampage]; // just a default value that is not relevant
			}
		}
 public Spell(SpellTypes spellType, string infoText, string pathToImage)
     : base(infoText, pathToImage)
 {
     this.SpellType = spellType;
 }
Beispiel #39
0
 public SpellData(float engy, SpellResponseDelegate dDelegate)
 {
     ResetRally = false;
     SpellType = SpellTypes.Normal;
     EnergyCost = engy;
     Function = dDelegate;
     WoodCost = 0;
     AppleCost = 0;
     GlueCost = 0;
     CastTime = 0;
     SupplyCost = 0;
 }
		public void SetSpellCooldown(SpellTypes spell, TimeSpan cooldown)
		{
			var castInfo = SpellCastInfo(spell);
			castInfo.Cooldown = cooldown;
			castInfo.TimeLeft = cooldown;
		}
		private SpellCastInfo SpellCastInfo(SpellTypes spell)
		{
			int spellNum = SpellsHelper.SpellNumber(spell);
			switch (spellNum) {
				case SpellsHelper.SPELL_1: return Spell1;
				case SpellsHelper.SPELL_2: return Spell2;
				case SpellsHelper.SPELL_3: return Spell3;
				case SpellsHelper.SPELL_4: return Spell4;
				default:
					throw new NotImplementedException("Spell number not supported.");
			}
		}
Beispiel #42
0
		public SpellCastEventData(ulong id, ulong owner, SpellTypes type, float time, Vec2 pos, 
		                          Vec2 vel, TimeSpan cooldown, float range, float width)
			: base(ServerCommand.SpellCast)
		{
			ID = id;
			OwnerID = owner;
			Type = type;
			Time = time;
			Position = pos;
			Velocity = vel;
			Cooldown = cooldown;
			Range = range;
			Width = width;
		}
Beispiel #43
0
		TimeSpan TimeOfLastSpellUse(SpellTypes spell)
		{
			return TimeSpan.FromSeconds(LastSpellUses.ContainsKey(spell) ? LastSpellUses[spell] : 0f);
		}
Beispiel #44
0
	private void addSpell(SpellTypes spell){
		if (currentSpells.Count >= maxSpells) {
			return;
		}

		currentSpells.Add (spell);

		if (currentSpells.Count == 1) {
			SkillGUIManager.Singleton.UpdateGraphics (currentSpells);
			return;
		}

		int index = 0;
		while (index < currentSpells.Count - 1) {
			SpellTypes result = SpellManager.instance.Combination (currentSpells[index], currentSpells[index+1] );
			if( result != SpellTypes.NULL){
				currentSpells.RemoveAt(index);
				currentSpells.RemoveAt(index);
				currentSpells.Insert(index, result);
                index = 0;
			} else {
				index++;
			}
		}

		SkillGUIManager.Singleton.UpdateGraphics (currentSpells);
	}
Beispiel #45
0
	public GameObject getGraphic(SpellTypes Spell, SpellTypes Type){
		 switch (Spell) {
		
			case SpellTypes.FIRE : {
				if(Type == SpellTypes.SHIELD)
					return Prefabs[3];

				if(Type == SpellTypes.THROW || Type == SpellTypes.DROP)
					return Prefabs[0];

                if (Type == SpellTypes.RAY)
                    return Prefabs[14];

				break;
			}

			case SpellTypes.FIRE1 : {
				if(Type == SpellTypes.SHIELD)
					return Prefabs[3];

                if (Type == SpellTypes.THROW || Type == SpellTypes.DROP)
					return Prefabs[1];

                if (Type == SpellTypes.RAY)
                    return Prefabs[14];
				break;
			}

			case SpellTypes.FIRE2 : {
				if(Type == SpellTypes.SHIELD)
					return Prefabs[3];

                if (Type == SpellTypes.THROW || Type == SpellTypes.DROP)
					return Prefabs[2];

                if (Type == SpellTypes.RAY)
                    return Prefabs[14];
				break;
			}

			case SpellTypes.WATER : {
				if(Type == SpellTypes.SHIELD)
					return Prefabs[13];

                if (Type == SpellTypes.THROW || Type == SpellTypes.DROP)
					return Prefabs[5];

                if (Type == SpellTypes.RAY)
                    return Prefabs[20];
				break;
			}

			case SpellTypes.WATER2:

			case SpellTypes.WATER1 : {
				if(Type == SpellTypes.SHIELD)
					return Prefabs[13];

                if (Type == SpellTypes.THROW || Type == SpellTypes.DROP)
					return Prefabs[10];

                if (Type == SpellTypes.RAY)
                    return Prefabs[20];
				break;
			}


			case SpellTypes.ROCK : {
				if(Type == SpellTypes.SHIELD)
					return Prefabs[12];

                if (Type == SpellTypes.THROW || Type == SpellTypes.DROP)
					return Prefabs[6];

                if (Type == SpellTypes.RAY)
                    return Prefabs[21];
				break;
			}
				
			case SpellTypes.ROCK2:
				
			case SpellTypes.ROCK1 : {
				if(Type == SpellTypes.SHIELD)
					return Prefabs[12];

                if (Type == SpellTypes.THROW || Type == SpellTypes.DROP)
					return Prefabs[9];

                if (Type == SpellTypes.RAY)
                    return Prefabs[21];
				break;
			}

			case SpellTypes.AIR : {
				if(Type == SpellTypes.SHIELD)
					return Prefabs[11];

                if (Type == SpellTypes.THROW || Type == SpellTypes.DROP)
					return Prefabs[8];

                if (Type == SpellTypes.RAY)
                    return Prefabs[18];
				break;
			}
				
			case SpellTypes.AIR2:
				
			case SpellTypes.AIR1 : {
				if(Type == SpellTypes.SHIELD)
					return Prefabs[11];

                if (Type == SpellTypes.THROW || Type == SpellTypes.DROP)
					return Prefabs[7];

                if (Type == SpellTypes.RAY)
                    return Prefabs[18];
				break;
			}

            case SpellTypes.ARCANE: {
                    if (Type == SpellTypes.SHIELD)
                        return Prefabs[27];

                    if (Type == SpellTypes.THROW || Type == SpellTypes.DROP)
                        return Prefabs[24];

                    if (Type == SpellTypes.RAY)
                        return Prefabs[28];
                    break;
            }

            case SpellTypes.ARCANE1:  {
                    if (Type == SpellTypes.SHIELD)
                        return Prefabs[27];

                    if (Type == SpellTypes.THROW || Type == SpellTypes.DROP)
                        return Prefabs[25];

                    if (Type == SpellTypes.RAY)
                        return Prefabs[28];
                    break;
            }

            case SpellTypes.ARCANE2: {
                    if (Type == SpellTypes.SHIELD)
                        return Prefabs[27];

                    if (Type == SpellTypes.THROW || Type == SpellTypes.DROP)
                        return Prefabs[26];

                    if (Type == SpellTypes.RAY)
                        return Prefabs[28];
                    break;
            }

            case SpellTypes.LIGHT:

            case SpellTypes.LIGHT1:
                {
                    if (Type == SpellTypes.SHIELD)
                        return Prefabs[30];

                    if (Type == SpellTypes.THROW || Type == SpellTypes.DROP)
                        return Prefabs[31];

                    if (Type == SpellTypes.RAY)
                        return Prefabs[29];
                    break;
                }

            case SpellTypes.LIGHT2:
                {
                    if (Type == SpellTypes.SHIELD)
                        return Prefabs[30];

                    if (Type == SpellTypes.THROW || Type == SpellTypes.DROP)
                        return Prefabs[33];

                    if (Type == SpellTypes.RAY)
                        return Prefabs[29];
                    break;
                }

            case SpellTypes.LIGHTNING:
                {
                    if (Type == SpellTypes.SHIELD)
                        return Prefabs[36];

                    if (Type == SpellTypes.THROW || Type == SpellTypes.DROP)
                        return Prefabs[33];

                    if (Type == SpellTypes.RAY)
                        return Prefabs[37];
                    break;
                }

            case SpellTypes.LIGHTNING1:
                {
                    if (Type == SpellTypes.SHIELD)
                        return Prefabs[36];

                    if (Type == SpellTypes.THROW || Type == SpellTypes.DROP)
                        return Prefabs[34];

                    if (Type == SpellTypes.RAY)
                        return Prefabs[37];
                    break;
                }

            case SpellTypes.LIGHTNING2:
                {
                    if (Type == SpellTypes.SHIELD)
                        return Prefabs[36];

                    if (Type == SpellTypes.THROW || Type == SpellTypes.DROP)
                        return Prefabs[35];

                    if (Type == SpellTypes.RAY)
                        return Prefabs[37];
                    break;
                }
            case SpellTypes.LIFE:
            case SpellTypes.LIFE1:{
                    if (Type == SpellTypes.SHIELD)
                        return Prefabs[39];

                    if (Type == SpellTypes.THROW || Type == SpellTypes.DROP)
                        return Prefabs[40];

                    if (Type == SpellTypes.RAY)
                        return Prefabs[38];
                    break;
           }
            case SpellTypes.LIFE2: {
                if (Type == SpellTypes.SHIELD)
                    return Prefabs[39];

                if (Type == SpellTypes.THROW || Type == SpellTypes.DROP)
                    return Prefabs[41];

                if (Type == SpellTypes.RAY)
                    return Prefabs[38];
                break;
            }

             case SpellTypes.SHADOW:
             case SpellTypes.SHADOW1: {
                     if (Type == SpellTypes.SHIELD)
                         return Prefabs[45];

                     if (Type == SpellTypes.THROW || Type == SpellTypes.DROP)
                         return Prefabs[42];

                     if (Type == SpellTypes.RAY)
                         return Prefabs[44];
                     break;
                 }
             case SpellTypes.SHADOW2: {
                     if (Type == SpellTypes.SHIELD)
                         return Prefabs[45];

                     if (Type == SpellTypes.THROW || Type == SpellTypes.DROP)
                         return Prefabs[43];

                     if (Type == SpellTypes.RAY)
                         return Prefabs[44];
                     break;
           }
             case SpellTypes.FROST:
             case SpellTypes.FROST1: {
                     if (Type == SpellTypes.SHIELD)
                         return Prefabs[46];

                     if (Type == SpellTypes.THROW || Type == SpellTypes.DROP)
                         return Prefabs[48];

                     if (Type == SpellTypes.RAY)
                         return Prefabs[47];
                     break;
            }
             case SpellTypes.FROST2: {
                     if (Type == SpellTypes.SHIELD)
                         return Prefabs[46];

                     if (Type == SpellTypes.THROW || Type == SpellTypes.DROP)
                         return Prefabs[49];

                     if (Type == SpellTypes.RAY)
                         return Prefabs[47];
                     break;
            }
		}

		return null;

	}
Beispiel #46
0
	void setTypeSpell(SpellTypes type){
		if (type == CurrentTypeSpell || isShooting)
			return;

		Debug.Log ("SWITCHING TO " + type);
		cleanSpells ();

		CurrentTypeSpell = type;
	}