Skip to content

Commit aad6bb7

Browse files
committed
Buff/Debuff Removal Bug
1 parent 2fff601 commit aad6bb7

File tree

6 files changed

+33
-63
lines changed

6 files changed

+33
-63
lines changed

Zolian.Server.Base/GameScripts/Monsters/TrainingDummy.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -72,13 +72,13 @@ public override void OnDeath(WorldClient client = null)
7272
foreach (var debuff in Monster.Debuffs.Values)
7373
{
7474
if (debuff != null)
75-
Monster.Debuffs.TryRemove(debuff.Name, out _);
75+
Monster.RemoveDebuff(debuff.Name);
7676
}
7777

7878
foreach (var debuff in Monster.Buffs.Values)
7979
{
8080
if (debuff != null)
81-
Monster.Buffs.TryRemove(debuff.Name, out _);
81+
Monster.RemoveBuff(debuff.Name);
8282
}
8383

8484
Monster.Skulled = false;
@@ -139,13 +139,13 @@ public override void OnDeath(WorldClient client = null)
139139
foreach (var debuff in Monster.Debuffs.Values)
140140
{
141141
if (debuff != null)
142-
Monster.Debuffs.TryRemove(debuff.Name, out _);
142+
Monster.RemoveDebuff(debuff.Name);
143143
}
144144

145145
foreach (var debuff in Monster.Buffs.Values)
146146
{
147147
if (debuff != null)
148-
Monster.Buffs.TryRemove(debuff.Name, out _);
148+
Monster.RemoveBuff(debuff.Name);
149149
}
150150

151151
Monster.Skulled = false;

Zolian.Server.Base/GameScripts/Skills/BerserkerSkillTree.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -319,10 +319,10 @@ protected override void OnSuccess(Sprite sprite)
319319
}
320320

321321
if (damageable.HasDebuff("Beag Suain"))
322-
damageable.Debuffs.TryRemove("Beag Suain", out _);
322+
damageable.RemoveDebuff("Beag Suain");
323323

324324
if (damageable.HasDebuff("Silence"))
325-
damageable.Debuffs.TryRemove("Silence", out _);
325+
damageable.RemoveDebuff("Silence");
326326

327327
damageable.ApplyDamage(damageDealer, 0, Skill);
328328
damageable.SendAnimationNearby(Skill.Template.TargetAnimation, null, damageable.Serial);

Zolian.Server.Base/GameScripts/Skills/DefenderSkillTree.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -60,10 +60,10 @@ protected override void OnSuccess(Sprite sprite)
6060
}
6161

6262
if (damageable.HasDebuff("Beag Suain"))
63-
damageable.Debuffs.TryRemove("Beag Suain", out _);
63+
damageable.RemoveDebuff("Beag Suain");
6464

6565
if (damageable.HasDebuff("Silence"))
66-
damageable.Debuffs.TryRemove("Silence", out _);
66+
damageable.RemoveDebuff("Silence");
6767

6868
damageable.ApplyDamage(damageDealer, 0, Skill);
6969
damageable.SendAnimationNearby(Skill.Template.TargetAnimation, null, damageable.Serial);

Zolian.Server.Base/GameScripts/Skills/GlobalSkillMethods.cs

Lines changed: 3 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -149,21 +149,9 @@ public static bool OnUse(Aisling aisling, Skill skill)
149149
(skill.Template.PostQualifiers.QualifierFlagIsSet(PostQualifier.BreakInvisible) ||
150150
skill.Template.PostQualifiers.QualifierFlagIsSet(PostQualifier.Both)))
151151
{
152-
if (client.Aisling.Buffs.TryRemove("Hide", out var hide))
153-
{
154-
hide.OnEnded(client.Aisling, hide);
155-
}
156-
157-
if (client.Aisling.Buffs.TryRemove("Shadowfade", out var shadowFade))
158-
{
159-
shadowFade.OnEnded(client.Aisling, shadowFade);
160-
}
161-
162-
if (client.Aisling.Buffs.TryRemove("Blend", out var blend))
163-
{
164-
blend.OnEnded(client.Aisling, blend);
165-
}
166-
152+
aisling.RemoveBuff("Hide");
153+
aisling.RemoveBuff("Shadowfade");
154+
aisling.RemoveBuff("Blend");
167155
client.UpdateDisplay();
168156
return Attempt(client, skill);
169157
}

Zolian.Server.Base/Sprites/Entity/Aisling.cs

Lines changed: 3 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -312,21 +312,9 @@ public void CastSpell(Spell spell, CastInfo info)
312312
{
313313
if (IsInvisible && (spell.Template.PostQualifiers.QualifierFlagIsSet(PostQualifier.BreakInvisible) || spell.Template.PostQualifiers.QualifierFlagIsSet(PostQualifier.Both)))
314314
{
315-
if (Buffs.TryRemove("Hide", out var hide))
316-
{
317-
hide.OnEnded(Client.Aisling, hide);
318-
}
319-
320-
if (Buffs.TryRemove("Shadowfade", out var shadowFade))
321-
{
322-
shadowFade.OnEnded(Client.Aisling, shadowFade);
323-
}
324-
325-
if (Buffs.TryRemove("Blend", out var blend))
326-
{
327-
blend.OnEnded(Client.Aisling, blend);
328-
}
329-
315+
RemoveBuff("Hide");
316+
RemoveBuff("Shadowfade");
317+
RemoveBuff("Blend");
330318
Client.UpdateDisplay();
331319
}
332320

Zolian.Server.Base/Sprites/Sprite.cs

Lines changed: 19 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -509,26 +509,23 @@ private void RemoveAllDebuffs()
509509
RemoveDebuff(debuff.Key);
510510
}
511511

512-
private bool RemoveBuff(string buff)
512+
public bool RemoveBuff(string buff)
513513
{
514514
if (!HasBuff(buff)) return false;
515515

516-
lock (Buffs)
516+
try
517517
{
518-
try
518+
var buffObj = Buffs.TryGetValue(buff, out var foundBuff);
519+
if (buffObj)
519520
{
520-
var buffObj = Buffs.TryGetValue(buff, out var foundBuff);
521-
if (buffObj)
522-
{
523-
if (foundBuff.Name.Contains("XP")) return false;
524-
foundBuff.OnEnded(this, foundBuff);
525-
}
526-
}
527-
catch
528-
{
529-
// ignored
521+
if (foundBuff.Name.Contains("XP")) return false;
522+
foundBuff.OnEnded(this, foundBuff);
530523
}
531524
}
525+
catch
526+
{
527+
// ignored
528+
}
532529

533530
return true;
534531
}
@@ -544,22 +541,19 @@ public bool RemoveDebuff(string debuff, bool cancelled = false)
544541
if (!cancelled && debuff == "Skulled") return true;
545542
if (!HasDebuff(debuff)) return false;
546543

547-
lock (Debuffs)
544+
try
548545
{
549-
try
546+
var debuffObj = Debuffs.TryGetValue(debuff, out var foundDebuff);
547+
if (debuffObj)
550548
{
551-
var debuffObj = Debuffs.TryGetValue(debuff, out var foundDebuff);
552-
if (debuffObj)
553-
{
554-
foundDebuff.Cancelled = cancelled;
555-
foundDebuff.OnEnded(this, foundDebuff);
556-
}
557-
}
558-
catch
559-
{
560-
// ignored
549+
foundDebuff.Cancelled = cancelled;
550+
foundDebuff.OnEnded(this, foundDebuff);
561551
}
562552
}
553+
catch
554+
{
555+
// ignored
556+
}
563557

564558
return true;
565559
}

0 commit comments

Comments
 (0)