コード例 #1
0
        /// <summary>
        /// Applique les effets du sorts à l'entité touchée.
        /// </summary>
        public override void OnCollide(EntityBase entity)
        {
            // Si le sort n'est pas encore prêt à toucher l'entité.
            if (!m_canTouch)
            {
                return;
            }

            // On fait en sorte que cette méthode ne soit appelée
            // qu'une seule fois pour chaque entité.
            if (m_entityIgnoreList.Contains(entity))
            {
                return;
            }
            else
            {
                m_entityIgnoreList.Add(entity);
            }


            // Vérifie que le sort fonctionne sur l'entité
            if (!SourceSpell.HasEffectOn(entity, m_castInfo))
            {
                return;
            }


            // Détruit le sort si il doit être détruit.
            if (SourceSpell.Description.TargetType.DieOnCollision)
            {
                IsDisposing = true;
            }

            // Ajoute les altérations d'état au héros.
            foreach (StateAlterationModel alteration in SourceSpell.Description.OnHitEffects)
            {
                string altId = "spell-active-" + SourceSpell.Name + "-" + entity.ID;
                entity.StateAlterations.EndAlterations(altId);
                entity.AddAlteration(new StateAlteration(altId,
                                                         SourceSpell.SourceCaster,
                                                         alteration,
                                                         m_castInfo.AlterationParameters,
                                                         StateAlterationSource.SpellActive));
            }
        }