/// <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)); } }