7 | 8 | ||
---|---|---|---|
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; |