78
18
            {
18
            {
19
                // L'effet est un poison
19
                // L'effet est un poison
20
                CastInfos.IsPoison = true;
20
                CastInfos.IsPoison = true;
 
 
21
 
 
 
22
                foreach (var Target in CastInfos.Targets)
 
 
23
                {
 
 
24
                    Target.Buffs.AddBuff(new BuffDamage(CastInfos, Target));
 
 
25
                }
21
            }
26
            }
22
            else // Dommage direct
27
            else // Dommage direct
23
            {
28
            {
...
 
...
 
43
        {
48
        {
44
            var Caster = CastInfos.Caster;
49
            var Caster = CastInfos.Caster;
45
 
50
 
 
 
51
            // Perd l'invisibilité s'il frappe directement
 
 
52
            if (!CastInfos.IsPoison && !CastInfos.IsTrap && !CastInfos.IsReflect)
 
 
53
                Caster.States.RemoveState(FighterStateEnum.STATE_INVISIBLE);
 
 
54
 
46
            // Recalcul du jet chez le lanceur et la cible
55
            // Recalcul du jet chez le lanceur et la cible
47
            if (Caster.Buffs.OnAttackPostJet(CastInfos, ref DamageJet) == -3) return -3;
56
            if (!CastInfos.IsPoison && !CastInfos.IsReflect)
48
            if (Target.Buffs.OnAttackedPostJet(CastInfos, ref DamageJet) == -3) return -3;
57
            {
 
 
58
                if (Caster.Buffs.OnAttackPostJet(CastInfos, ref DamageJet) == -3) return -3;
 
 
59
                if (Target.Buffs.OnAttackedPostJet(CastInfos, ref DamageJet) == -3) return -3;
 
 
60
            }
49
 
61
 
50
            // Calcul jet
62
            // Calcul jet
51
            Caster.CalculDamages(CastInfos.EffectType, ref DamageJet);
63
            Caster.CalculDamages(CastInfos.EffectType, ref DamageJet);
...
 
...
 
52
            // Calcul resistances
64
            // Calcul resistances
53
            Target.CalculReduceDamages(CastInfos.EffectType, ref DamageJet);
65
            Target.CalculReduceDamages(CastInfos.EffectType, ref DamageJet);
54
 
66
 
 
 
67
            if (DamageJet > 0)
 
 
68
            {
 
 
69
                // Armure ?
 
 
70
                if (!CastInfos.IsPoison && !CastInfos.IsReflect)
 
 
71
                {
 
 
72
                    // Recuperation armure par effet
 
 
73
                    var Armor = Target.CalculArmor(CastInfos.EffectType);
 
 
74
 
 
 
75
                    // Aucune armure
 
 
76
                    if (Armor != 0)
 
 
77
                    {
 
 
78
                        // Reduction des dommages
 
 
79
                        Target.Fight.SendToFight(new GameActionMessage((int)GameActionTypeEnum.FIGHT_ARMOR, Target.ActorId, Target.ActorId + "," +
Armor));
 
 
80
 
 
 
81
                        DamageJet -= Armor;
 
 
82
 
 
 
83
                        if (DamageJet < 0) DamageJet = 0;
 
 
84
                    }
 
 
85
                }
 
 
86
            }
 
 
87
 
55
            // Recalcul chez le lanceur et la cible
88
            // Recalcul chez le lanceur et la cible
56
            if (Caster.Buffs.OnAttackAfterJet(CastInfos, ref DamageJet) == -3) return -3;
89
            if (!CastInfos.IsPoison && !CastInfos.IsReflect)
57
            if (Target.Buffs.OnAttackedAfterJet(CastInfos, ref DamageJet) == -3) return -3;
90
            {
 
 
91
                if (Caster.Buffs.OnAttackAfterJet(CastInfos, ref DamageJet) == -3) return -3;
 
 
92
                if (Target.Buffs.OnAttackedAfterJet(CastInfos, ref DamageJet) == -3) return -3;
 
 
93
            }
58
 
94
 
59
            // TODO Renvoie de dommages et armure ?
95
            // S'il subit des dommages
 
 
96
            if (DamageJet > 0)
 
 
97
            {
 
 
98
                // Si c'est pas un poison ou un renvoi on applique le renvoie
 
 
99
                if (!CastInfos.IsPoison && !CastInfos.IsReflect)
 
 
100
                {
 
 
101
                    var ReflectDamage = Target.ReflectDamage;
60
 
102
 
 
 
103
                    // Si du renvoi
 
 
104
                    if (ReflectDamage > 0)
 
 
105
                    {
 
 
106
                        Target.Fight.SendToFight(new GameActionMessage((int)EffectEnum.AddRenvoiDamage, Target.ActorId, Target.ActorId + "," +
ReflectDamage));
 
 
107
 
 
 
108
                        // Trop de renvois
 
 
109
                        if (ReflectDamage > DamageJet) ReflectDamage = DamageJet;
 
 
110
 
 
 
111
                        var SubInfos = new EffectCast(EffectEnum.DamageBrut, 0, 0, 0, 0, 0, 0, 0, Target, null);
 
 
112
                        SubInfos.IsReflect = true;
 
 
113
 
 
 
114
                        if (EffectDamage.ApplyDamages(SubInfos, Caster, ref ReflectDamage) == -3)
 
 
115
                            return -3;
 
 
116
 
 
 
117
                        DamageJet -= ReflectDamage;
 
 
118
                    }
 
 
119
                }
 
 
120
            }
 
 
121
 
 
 
122
            // Peu pas etre en dessous de 0
 
 
123
            if (DamageJet < 0) DamageJet = 0;
 
 
124
 
61
            // Dommages superieur a la vie de la cible
125
            // Dommages superieur a la vie de la cible
62
            if (DamageJet > Target.Life)
126
            if (DamageJet > Target.Life)
63
                DamageJet = Target.Life;
127
                DamageJet = Target.Life;