예제 #1
0
		protected internal override void CheckInitialize(SpellCast creatingCast, ObjectReference casterReference, Unit target, ref SpellFailedReason failReason)
		{
			Caster = casterReference.Object as Unit;
			if (Caster == null || Caster is Vehicle)
			{
				log.Warn("Invalid SpellCaster \"{0}\" for Spell: {1}", Caster, SpellEffect.Spell);
				failReason = SpellFailedReason.Error;
				return;
			}

			Vehicle = target as Vehicle;
			if (Vehicle == null)
			{
				failReason = SpellFailedReason.BadTargets;
			}
			else
			{
				Seat = Vehicle.GetSeatFor(Caster);
				if (Seat == null)
				{
					// must never happen since Vehicle is unclickable when full
					failReason = SpellFailedReason.BadTargets;
				}
			}
		}
예제 #2
0
        protected internal override void CheckInitialize(SpellCast creatingCast, ObjectReference casterRef, Unit target, ref SpellFailedReason failReason)
        {
            if (!(target is NPC))
            {
                failReason = SpellFailedReason.BadTargets;
            }

            if (casterRef != null && casterRef.Object is Unit)
            {
                var caster = (Unit)casterRef.Object;
                //if (target.Target == caster)
                //{
                //    failReason = SpellFailedReason.NoValidTargets;
                //}
                //else
                {
                    var spell = m_aura.Spell;
                    var hasSingleFriendTarget = spell.HasBeneficialEffects && !spell.IsAreaSpell && spell.HasTargets;
                    if (hasSingleFriendTarget && caster.Target != null && caster.IsFriendlyWith(caster.Target))
                    {
                        // taunting a friend, means we want to taunt his attackers
                        // needed for Righteous defense, amongst others
                        if (target.Target != caster.Target)
                        {
                            failReason = SpellFailedReason.NoValidTargets;
                        }
                    }
                }
            }
        }
예제 #3
0
		protected internal override void CheckInitialize(SpellCast creatingCast, ObjectReference casterReference, Unit target, ref SpellFailedReason failReason)
		{
			if (target.MaxPower == 0 || target.PowerType != (PowerType)m_spellEffect.MiscValue)
			{
				failReason = SpellFailedReason.BadTargets;
			}
		}
예제 #4
0
파일: Summon.cs 프로젝트: NVN/WCell
		public SummonEffectHandler(SpellCast cast, SpellEffect effect)
			: base(cast, effect)
		{
			// MiscValueB:
			// 41 -> NonCombat Companion
			// 
		}
예제 #5
0
 protected internal override void CheckInitialize(SpellCast creatingCast, ObjectReference casterRef, Unit target, ref SpellFailedReason failReason)
 {
     var caster = creatingCast.CasterReference.Object as Unit;
     if (caster == null)
     {
         failReason = SpellFailedReason.BadTargets;
     }
     else
     {
         if (caster.Charm != null)
         {
             failReason = SpellFailedReason.AlreadyHaveCharm;
         }
         else if (target.HasMaster)
         {
             failReason = SpellFailedReason.CantDoThatRightNow;
         }
         else if (caster.HasMaster)
         {
             failReason = SpellFailedReason.Possessed;
         }
         else if (caster is Character)
         {
             if (((Character)caster).ActivePet != null)
             {
                 failReason = SpellFailedReason.AlreadyHaveSummon;
             }
         }
     }
 }
예제 #6
0
 protected internal override void CheckInitialize(SpellCast creatingCast, ObjectReference casterReference, Unit target, ref SpellFailedReason failReason)
 {
     if (!(target is Character))
     {
         failReason = SpellFailedReason.TargetNotPlayer;
     }
 }
		protected internal override void CheckInitialize(SpellCast creatingCast, ObjectReference casterReference, Unit target, ref SpellFailedReason failReason)
		{
			if (m_spellEffect.TriggerSpell == null)
			{
				failReason = SpellFailedReason.Error;
				log.Warn("Tried to cast Spell \"{0}\" which has invalid TriggerSpellId {1}", m_spellEffect.Spell, m_spellEffect.TriggerSpellId);
			}
		}
    // Use this for initialization
    void Start()
    {
        longc = GameObject.Find ("LongCast");
        spellcast1 = longc.GetComponent<SpellCast> ();

        _sih = GameObject.Find ("Sihir");
        mc = _sih.GetComponent<Encolhimento> ();
    }
예제 #9
0
		protected internal override void CheckInitialize(SpellCast creatingCast, ObjectReference casterReference, Unit target, ref SpellFailedReason failReason)
		{
			if (target.Class != ClassId.Hunter)
			{
				failReason = SpellFailedReason.BadTargets;
				return;
			}
		}
예제 #10
0
 protected internal override void CheckInitialize(SpellCast creatingCast, ObjectReference casterReference, Unit target, ref SpellFailedReason failReason)
 {
     if (!(target is Character)) return;
     var chr = (Character)target;
     if (chr.Class != ClassId.Hunter)
     {
         failReason = SpellFailedReason.BadTargets;
     }
 }
예제 #11
0
		protected internal override void Remove(bool cancelled)
		{
			if (cast != null && cast.IsChanneling)
			{
				cast.Cancel(SpellFailedReason.Ok);
				cast.Dispose();
				cast = null;
			}
		}
예제 #12
0
		public NotImplementedEffect(SpellCast cast, SpellEffect effect)
			: base(cast, effect)
		{
			if (cast.Caster is Character)
			{
				(cast.Caster as Character).SendSystemMessage(
					"Spell {0} ({1}) has not implemented Effect {2}. Please report this to the developers",
					cast.Spell.Name, cast.Spell.Id, effect.EffectType);
			}
		}
    // Use this for initialization
    void Start()
    {
        //Os gameobjects a seguir sao inicializados para conseguir componentes de outros scripts utilizando
        //as variaveis ja declaradas.
         longc = GameObject.Find ("SpellCast");
        spellcast1 = longc.GetComponent<SpellCast> ();

        GameObject u = GameObject.Find ("UnObj");
        un = u.GetComponent<Unlockeds> ();
    }
예제 #14
0
파일: Fly.cs 프로젝트: ebakkedahl/WCell
 protected internal override void CheckInitialize(SpellCast creatingCast, ObjectReference casterReference, Unit target, ref SpellFailedReason failReason)
 {
     if (target is Character)
     {
         var chr = (Character)target;
         if (!chr.CanFly)
         {
             failReason = SpellFailedReason.NotHere;
         }
     }
 }
예제 #15
0
 public SpellCast Cast(double crit_chance, double haste, int spell_power, double hit_chance = 0.99, double mana_cost_modifier = 1, double casting_time_modifier = 0)
 {
     SpellCast result = new SpellCast();
     result.IsResisted = r.NextDouble() < hit_chance ? false : true;
     result.IsCrit = can_crit && !result.IsResisted && r.NextDouble() < crit_chance ? true : false;
     int min = (int)Math.Floor((min_base_dmg + spell_power * spell_power_coeff) * (1 + (result.IsCrit ? crit_bonus_dmg : 0)) * dmg_multiplier);
     int max = (int)Math.Ceiling((max_base_dmg + spell_power * spell_power_coeff) * (1 + (result.IsCrit ? crit_bonus_dmg : 0)) * dmg_multiplier);
     result.Damage = r.Next(min, max + 1);
     result.ManaUsed = result.IsResisted ? 0 : (int)Math.Round(mana_cost * mana_cost_modifier);
     result.CastTime = (casting_time - casting_time_modifier) / (1 + haste);
     return result;
 }
예제 #16
0
    void Start()
    {
        //Os gameobjects a seguir sao inicializados para conseguir componentes de outros scripts utilizando
        //as variaveis ja declaradas.
        GameObject s = GameObject.Find ("SpellCast");
        castspell = s.GetComponent<SpellCast> ();
        DesoxField = GameObject.Find ("desoxfield");
        GameObject h = GameObject.Find ("Sihir");
        hp = h.GetComponent<Hpsih> ();
        trsihir = GameObject.Find ("Sihir");

        GameObject a = GameObject.Find ("Sihir");
        SihirSounds = a.GetComponent <SihirSounds> ();
    }
예제 #17
0
		protected internal override void CheckInitialize(SpellCast creatingCast, ObjectReference casterReference, Unit target, ref SpellFailedReason failReason)
		{
			form = (ShapeshiftForm)SpellEffect.MiscValue;
			if (target.ShapeshiftForm == form)
			{
				// stances can't be undone:
				if (form != ShapeshiftForm.BattleStance &&
					form != ShapeshiftForm.BerserkerStance &&
					form != ShapeshiftForm.DefensiveStance)
				{
					target.Auras.RemoveWhere(aura => aura.Spell.Id == m_aura.Spell.Id);
					failReason = SpellFailedReason.DontReport;
				}
			}
		}
    // Use this for initialization
    void Start()
    {
        //Os gameobjects a seguir sao inicializados para conseguir componentes de outros scripts utilizando
        //as variaveis ja declaradas.
        GameObject s = GameObject.Find ("SpellCast");
        castspell = s.GetComponent<SpellCast> ();

        esferar = GameObject.Find ("boladear2");

        GameObject t = GameObject.Find ("Sihir");
        tr = t.GetComponent<TrueSihir> ();

        GameObject h = GameObject.Find ("Sihir");
        hp = h.GetComponent<Hpsih> ();

        trsih = GameObject.Find ("Sihir");

        GameObject a = GameObject.Find ("Sihir");
        SihirSounds = a.GetComponent <SihirSounds> ();
    }
예제 #19
0
		protected internal override void CheckInitialize(SpellCast creatingCast, ObjectReference casterRef, Unit target, ref SpellFailedReason failReason)
		{
			var caster = creatingCast.CasterReference.Object as Unit;
			if (caster == null)
			{
				failReason = SpellFailedReason.BadTargets;
			}
			else
			{
				if (!(target is NPC))
				{
					LogManager.GetCurrentClassLogger().Warn("{0} tried to Charm {1} which is not an NPC, but Player charming is not yet supported.", caster, target);
					failReason = SpellFailedReason.BadTargets;
				}
				if (caster.Charm != null)
				{
					failReason = SpellFailedReason.AlreadyHaveCharm;
				}
				else if (target.HasMaster)
				{
					failReason = SpellFailedReason.CantBeCharmed;
				}
				//else if (caster.Level < EffectValue)
				//{
				//    failReason = SpellFailedReason.Highlevel;
				//}
				else if (caster.HasMaster)
				{
					failReason = SpellFailedReason.Charmed;
				}
				else if (caster is Character)
				{
					if (((Character)caster).ActivePet != null)
					{
						failReason = SpellFailedReason.AlreadyHaveSummon;
					}
				}
			}
		}
예제 #20
0
    void Update()
    {
        float a;//teste
        bool ativo = false;//controle, o objeto esta inativo.

        /*Caso a variavel da classe SpellCast chamada selo receba esses parametros, ele ira criar o objeto
         *e adicionara uma força para que o mesmo va para frente. Ao ser instanciado, o mesmo solta um som. Ele
         *reseta a variavel da classe SpellCast, reduz 1/8 da vida maxima da personagem, e manda a mensagem
         *para a classe TrueSihir, executando o metodo "Attack" que aciona a animaçao dos dados, bursts e etc.
         *Depois de tres segundos o gameobject desse script e destruido*/
        if (castspell.selo == "01" || castspell.selo == "D R ") {

            GameObject s = GameObject.Find ("SpellCast");
            castspell = s.GetComponent<SpellCast> ();
            target = GameObject.Find ("Sihir/SpellCast").transform;

            GameObject obj = Instantiate (DesoxField, target.position, target.rotation) as GameObject;
            obj.rigidbody.AddForce(target.forward * 50);

            #region Atack Sound Switch
            if (AtackSound)
            {
                SihirSounds.PlaySound (0);
                AtackSound = false;
            }
            else
            {
                SihirSounds.PlaySound (1);
                AtackSound = true;
            }
            #endregion

            castspell.selo = "";
            hp.curHealth -= hp.maxHealth/8;
            trsihir.SendMessage("Attack", SendMessageOptions.DontRequireReceiver);
            Destroy(obj, 3);

        }
    }
예제 #21
0
		protected internal override void Apply()
		{
			if (spell == null)
			{
				var channel = m_aura.Controller as SpellChannel;
				if (channel != null)
				{
					origCast = channel.Cast;
				}
				else
				{
					origCast = m_aura.Auras.Owner.SpellCast;
				}

				if (origCast == null)
				{
					return;
					//throw new Exception("Cannot apply a Periodic Trigger Spell Aura on anyone but the Caster");
				}

				spell = m_spellEffect.TriggerSpell;
				if (spell == null)
				{
					LogManager.GetCurrentClassLogger().Warn("Found invalid periodic TriggerSpell in Spell {0} ({1}) ",
						m_spellEffect.Spell, 
						(uint)m_spellEffect.TriggerSpellId);
					return;
				}
			}

			cast = SpellCast.ObtainPooledCast(origCast.Caster);
			cast.TargetLoc = origCast.TargetLoc;
			cast.Selected = origCast.Selected;
			//cast.Start(spell, m_spellEffect, true);
			cast.Start(spell, true);
		}
예제 #22
0
 public ClearCastingAndPresenceOfMindHandler(SpellCast cast, SpellEffect effect)
     : base(cast, effect)
 {
 }
예제 #23
0
 public DualWeildEffectHandler(SpellCast cast, SpellEffect effect)
     : base(cast, effect)
 {
 }
 public PortalTeleportEffectHandler(SpellCast cast, SpellEffect effect)
     : base(cast, effect)
 {
 }
예제 #25
0
 public ApplyAreaAura2EffectHandler(SpellCast cast, SpellEffect effect)
     : base(cast, effect)
 {
 }
예제 #26
0
 public SummonDeadPetEffectHandler(SpellCast cast, SpellEffect effect)
     : base(cast, effect)
 {
 }
 public bool ProcSpell(Unit creator, Unit triggerer, IUnitAction action)
 {
     SpellCast.ValidateAndTriggerNew(this.Spell, creator, (WorldObject)triggerer, (SpellChannel)null,
                                     (Item)null, action, (SpellEffect)null);
     return(false);
 }
예제 #28
0
파일: Heal.cs 프로젝트: WCellFR/WCellFR
		public HealEffectHandler(SpellCast cast, SpellEffect effect)
			: base(cast, effect)
		{
		}
예제 #29
0
 public SummonObjectSlot4Handler(SpellCast cast, SpellEffect effect)
     : base(cast, effect)
 {
 }
예제 #30
0
파일: Milling.cs 프로젝트: ray2006/WCell
		public MillingEffectHandler(SpellCast cast, SpellEffect effect)
			: base(cast, effect)
		{
		}
예제 #31
0
		public DismissPetEffectHandler(SpellCast cast, SpellEffect effect)
			: base(cast, effect)
		{
		}
예제 #32
0
 public WeaponDiseaseDamageHalfPercentHandler(SpellCast cast, SpellEffect effect)
     : base(cast, effect)
 {
 }
예제 #33
0
 public DistractEffectHandler(SpellCast cast, SpellEffect effect) : base(cast, effect)
 {
 }
예제 #34
0
 public ObliterateStrikeHandler(SpellCast cast, SpellEffect effect)
     : base(cast, effect)
 {
 }
 public TriggerRitualOfSummoningEffectHandler(SpellCast cast, SpellEffect effect)
     : base(cast, effect)
 {
 }
예제 #36
0
		public InstantKillEffectHandler(SpellCast cast, SpellEffect effect)
			: base(cast, effect)
		{
		}
예제 #37
0
 public SendEventEffectHandler(SpellCast cast, SpellEffect effect)
     : base(cast, effect)
 {
     uint questId = (uint)effect.MiscValue;
 }
예제 #38
0
파일: Dummy.cs 프로젝트: 0xFh/Asda2-Project
 public DummyEffectHandler(SpellCast cast, SpellEffect effect)
     : base(cast, effect)
 {
 }
예제 #39
0
 public ThreatHandler(SpellCast cast, SpellEffect effect)
     : base(cast, effect)
 {
 }
예제 #40
0
 public WMORepair(SpellCast cast, SpellEffect effect)
     : base(cast, effect)
 {
 }
예제 #41
0
 public static SpellCheckCastResult SPELL_EFFECT_DUMMY(SpellCast Spell, List <WorldObject> Targets, int Index, Item Item)
 {
     return(SpellCheckCastResult.SPELL_CAST_OK);
 }
예제 #42
0
 public WanderingPlagueDamageHandler(SpellCast cast, SpellEffect effect)
     : base(cast, effect)
 {
 }
예제 #43
0
 public ClearSpellCooldownHandler(SpellCast cast, SpellEffect effect) : base(cast, effect)
 {
 }
예제 #44
0
        public void DealSpellDamage(SpellCast spell, int damage, SpellDamageType type, int index)
        {
            bool isHeal = false;
            bool isDot  = false;

            Unit caster = spell.Caster;

            switch (type)
            {
            case SpellDamageType.SPELL_TYPE_HEAL:
                isHeal = true;
                break;

            case SpellDamageType.SPELL_TYPE_HEALDOT:
                isHeal = true;
                isDot  = true;
                break;

            case SpellDamageType.SPELL_TYPE_DOT:
                isDot = true;
                break;
            }

            int benefit = 0;

            if (caster.IsTypeOf(ObjectTypes.TYPE_PLAYER))
            {
                int penalty     = 0;
                int effectcount = 0;
                for (uint i = 0; i < 3; i++)
                {
                    if (spell.Spell.Effect[i] != 0)
                    {
                        effectcount++;
                    }
                }

                if (effectcount > 1)
                {
                    penalty = 5;
                }

                int spelldamage = 0;
                //TODO
                //        If IsHeal Then
                //            SpellDamage = CType(Caster, CharacterObject).healing.Value
                //        Else
                //            SpellDamage = CType(Caster, CharacterObject).spellDamage(DamageType).Value
                //        End If

                if (isDot)
                {
                    int tickamt = (int)(spell.Duration / spell.Spell.EffectAmplitude[index]);
                    if (tickamt < 5)
                    {
                        tickamt = 5;
                    }

                    benefit = spelldamage / tickamt;
                }
                else
                {
                    int casttime = spell.CastTime?.m_base ?? 0;
                    if (casttime < 1500)
                    {
                        casttime = 1500;
                    }
                    else if (casttime > 3500)
                    {
                        casttime = 3500;
                    }

                    benefit = (int)Math.Truncate(spelldamage * (casttime / 1000f) * ((100 - penalty) / 100) / 3.5f);
                }
            }

            damage += benefit;
        }
예제 #45
0
 public ForgetSpecializationEffectHandler(SpellCast cast, SpellEffect effect)
     : base(cast, effect)
 {
 }
예제 #46
0
 public RemoveImpairingEffectsHandler(SpellCast cast, SpellEffect effect)
     : base(cast, effect)
 {
 }
예제 #47
0
 public StealthEffectHandler(SpellCast cast, SpellEffect effect)
     : base(cast, effect)
 {
 }
예제 #48
0
 public RestoreHealthPercentEffectHandler(SpellCast cast, SpellEffect effect)
     : base(cast, effect)
 {
 }
예제 #49
0
 public SkillStepEffectHandler(SpellCast cast, SpellEffect effect)
     : base(cast, effect)
 {
 }
예제 #50
0
 public SpreadPestilenceHandler(SpellCast cast, SpellEffect effect)
     : base(cast, effect)
 {
 }
예제 #51
0
		public AddExtraAttacksEffectHandler(SpellCast cast, SpellEffect effect)
			: base(cast, effect)
		{
		}
예제 #52
0
 public EnergizePctEffectHandler(SpellCast cast, SpellEffect effect)
     : base(cast, effect)
 {
 }
예제 #53
0
		public DisenchantEffectHandler(SpellCast cast, SpellEffect effect)
			: base(cast, effect)
		{
		}
예제 #54
0
 public ApplyStatAuraPercentEffectHandler(SpellCast cast, SpellEffect effect)
     : base(cast, effect)
 {
 }
예제 #55
0
		public StealBeneficialBuffEffectHandler(SpellCast cast, SpellEffect effect)
			: base(cast, effect)
		{
		}
 public TriggerSpellFromTargetWithCasterAsTargetHandler(SpellCast cast, SpellEffect effect)
     : base(cast, effect)
 {
 }
예제 #57
0
		public SkillStepEffectHandler(SpellCast cast, SpellEffect effect)
			: base(cast, effect)
		{
		}
예제 #58
0
 public AddComboPointsEffectHandler(SpellCast cast, SpellEffect effect)
     : base(cast, effect)
 {
 }
예제 #59
0
 public EnchantItemTemporaryEffectHandler(SpellCast cast, SpellEffect effect)
     : base(cast, effect)
 {
 }
예제 #60
0
 public ApplyPetAuraEffectHandler(SpellCast cast, SpellEffect effect)
     : base(cast, effect)
 {
 }