Skip to content

Commit 5ecf879

Browse files
committed
Step -in & -out Refactor
1 parent 511da9a commit 5ecf879

File tree

15 files changed

+271
-114
lines changed

15 files changed

+271
-114
lines changed

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

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -569,7 +569,7 @@ public class Shadow_Step(Skill skill) : SkillScript(skill)
569569

570570
protected override void OnFailed(Sprite sprite) => GlobalSkillMethods.OnFailed(sprite, Skill, _target);
571571

572-
protected override void OnSuccess(Sprite sprite)
572+
protected override async void OnSuccess(Sprite sprite)
573573
{
574574
if (sprite is Aisling aisling)
575575
aisling.ActionUsed = "Shadow Step";
@@ -599,10 +599,17 @@ protected override void OnSuccess(Sprite sprite)
599599
var dmgCalc = DamageCalc(damageDealer);
600600
if (damageDealer.IsInvisible)
601601
dmgCalc *= 2;
602-
GlobalSkillMethods.Step(damageDealer, targetPos.X, targetPos.Y);
602+
var stepped = await damageDealer.StepAndRemove(damageDealer, targetPos.X, targetPos.Y);
603+
604+
if (!stepped)
605+
{
606+
OnFailed(sprite);
607+
return;
608+
}
609+
603610
damageDealer.Facing(_target.X, _target.Y, out var direction);
604611
damageDealer.Direction = (byte)direction;
605-
damageDealer.Turn();
612+
damageDealer.StepAddAndUpdateDisplay(damageDealer);
606613
GlobalSkillMethods.OnSuccess(_target, damageDealer, Skill, dmgCalc, _crit, action);
607614
}
608615
catch

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

Lines changed: 49 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -164,7 +164,7 @@ public class Blitz(Skill skill) : SkillScript(skill)
164164

165165
protected override void OnFailed(Sprite sprite) => GlobalSkillMethods.OnFailed(sprite, Skill, _target);
166166

167-
protected override void OnSuccess(Sprite sprite)
167+
protected override async void OnSuccess(Sprite sprite)
168168
{
169169
if (sprite is Aisling aisling)
170170
aisling.ActionUsed = "Blitz";
@@ -189,10 +189,17 @@ protected override void OnSuccess(Sprite sprite)
189189
}
190190

191191
var dmgCalc = DamageCalc(sprite);
192-
GlobalSkillMethods.Step(damageDealer, targetPos.X, targetPos.Y);
192+
var stepped = await damageDealer.StepAndRemove(damageDealer, targetPos.X, targetPos.Y);
193+
194+
if (!stepped)
195+
{
196+
OnFailed(sprite);
197+
return;
198+
}
199+
193200
damageDealer.Facing(_target.X, _target.Y, out var direction);
194201
damageDealer.Direction = (byte)direction;
195-
damageDealer.Turn();
202+
damageDealer.StepAddAndUpdateDisplay(damageDealer);
196203
GlobalSkillMethods.OnSuccess(_target, damageDealer, Skill, dmgCalc, _crit, action);
197204
}
198205
catch
@@ -634,7 +641,7 @@ protected override void OnFailed(Sprite sprite)
634641
GlobalSkillMethods.OnFailed(sprite, Skill, _target);
635642
}
636643

637-
protected override void OnSuccess(Sprite sprite)
644+
protected override async void OnSuccess(Sprite sprite)
638645
{
639646
if (sprite is Aisling aisling)
640647
{
@@ -680,7 +687,15 @@ protected override void OnSuccess(Sprite sprite)
680687

681688
if (damageDealer.Position != position)
682689
{
683-
GlobalSkillMethods.Step(damageDealer, position.X, position.Y);
690+
var stepped = await damageDealer.StepAndRemove(damageDealer, position.X, position.Y);
691+
692+
if (!stepped)
693+
{
694+
OnFailed(sprite);
695+
return;
696+
}
697+
698+
damageDealer.StepAddAndUpdateDisplay(damageDealer);
684699
}
685700

686701
if (_target is not Damageable damageable) return;
@@ -692,7 +707,15 @@ protected override void OnSuccess(Sprite sprite)
692707
}
693708
else
694709
{
695-
GlobalSkillMethods.Step(damageDealer, wallPosition.X, wallPosition.Y);
710+
var stepped = await damageDealer.StepAndRemove(damageDealer, wallPosition.X, wallPosition.Y);
711+
712+
if (!stepped)
713+
{
714+
OnFailed(sprite);
715+
return;
716+
}
717+
718+
damageDealer.StepAddAndUpdateDisplay(damageDealer);
696719
var stunned = new DebuffBeagsuain();
697720
GlobalSkillMethods.ApplyPhysicalDebuff(damageDealer, stunned, damageDealer, Skill);
698721
damageDealer.SendAnimationNearby(208, null, damageDealer.Serial);
@@ -747,7 +770,7 @@ private long DamageCalc(Sprite sprite)
747770
return critCheck.Item2;
748771
}
749772

750-
private void Target(Sprite sprite)
773+
private async void Target(Sprite sprite)
751774
{
752775
if (sprite is not Damageable damageable) return;
753776

@@ -771,7 +794,15 @@ private void Target(Sprite sprite)
771794

772795
if (damageable.Position != wallPosition)
773796
{
774-
GlobalSkillMethods.Step(damageable, wallPosition.X, wallPosition.Y);
797+
var stepped = await damageable.StepAndRemove(damageable, wallPosition.X, wallPosition.Y);
798+
799+
if (!stepped)
800+
{
801+
OnFailed(sprite);
802+
return;
803+
}
804+
805+
damageable.StepAddAndUpdateDisplay(damageable);
775806
}
776807

777808
if (wallPos <= 2)
@@ -957,7 +988,7 @@ public class Sneak_Attack(Skill skill) : SkillScript(skill)
957988

958989
protected override void OnFailed(Sprite sprite) => GlobalSkillMethods.OnFailed(sprite, Skill, _target);
959990

960-
protected override void OnSuccess(Sprite sprite)
991+
protected override async void OnSuccess(Sprite sprite)
961992
{
962993
if (sprite is Aisling aisling)
963994
aisling.ActionUsed = "Sneak Attack";
@@ -982,10 +1013,17 @@ protected override void OnSuccess(Sprite sprite)
9821013
}
9831014

9841015
var dmgCalc = DamageCalc(damageDealer);
985-
GlobalSkillMethods.Step(damageDealer, targetPos.X, targetPos.Y);
1016+
var stepped = await damageDealer.StepAndRemove(damageDealer, targetPos.X, targetPos.Y);
1017+
1018+
if (!stepped)
1019+
{
1020+
OnFailed(sprite);
1021+
return;
1022+
}
1023+
9861024
damageDealer.Facing(_target.X, _target.Y, out var direction);
9871025
damageDealer.Direction = (byte)direction;
988-
damageDealer.Turn();
1026+
damageDealer.StepAddAndUpdateDisplay(damageDealer);
9891027
GlobalSkillMethods.OnSuccess(_target, damageDealer, Skill, dmgCalc, _crit, action);
9901028
}
9911029
catch

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

Lines changed: 29 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -310,7 +310,7 @@ protected override void OnFailed(Sprite sprite)
310310
GlobalSkillMethods.OnFailed(sprite, Skill, _target);
311311
}
312312

313-
protected override void OnSuccess(Sprite sprite)
313+
protected override async void OnSuccess(Sprite sprite)
314314
{
315315
if (sprite is Aisling aisling)
316316
{
@@ -356,7 +356,15 @@ protected override void OnSuccess(Sprite sprite)
356356

357357
if (damageDealer.Position != position)
358358
{
359-
GlobalSkillMethods.Step(damageDealer, position.X, position.Y);
359+
var stepped = await damageDealer.StepAndRemove(damageDealer, position.X, position.Y);
360+
361+
if (!stepped)
362+
{
363+
OnFailed(sprite);
364+
return;
365+
}
366+
367+
damageDealer.StepAddAndUpdateDisplay(damageDealer);
360368
}
361369

362370
if (_target is not Damageable damageable) return;
@@ -368,7 +376,15 @@ protected override void OnSuccess(Sprite sprite)
368376
}
369377
else
370378
{
371-
GlobalSkillMethods.Step(damageDealer, wallPosition.X, wallPosition.Y);
379+
var stepped = await damageDealer.StepAndRemove(damageDealer, wallPosition.X, wallPosition.Y);
380+
381+
if (!stepped)
382+
{
383+
OnFailed(sprite);
384+
return;
385+
}
386+
387+
damageDealer.StepAddAndUpdateDisplay(damageDealer);
372388
var stunned = new DebuffBeagsuain();
373389
GlobalSkillMethods.ApplyPhysicalDebuff(damageDealer, stunned, damageDealer, Skill);
374390
damageDealer.SendAnimationNearby(208, null, damageDealer.Serial);
@@ -423,7 +439,7 @@ private long DamageCalc(Sprite sprite)
423439
return critCheck.Item2;
424440
}
425441

426-
private void Target(Sprite sprite)
442+
private async void Target(Sprite sprite)
427443
{
428444
if (sprite is not Damageable damageable) return;
429445

@@ -447,7 +463,15 @@ private void Target(Sprite sprite)
447463

448464
if (damageable.Position != wallPosition)
449465
{
450-
GlobalSkillMethods.Step(damageable, wallPosition.X, wallPosition.Y);
466+
var stepped = await damageable.StepAndRemove(damageable, wallPosition.X, wallPosition.Y);
467+
468+
if (!stepped)
469+
{
470+
OnFailed(sprite);
471+
return;
472+
}
473+
474+
damageable.StepAddAndUpdateDisplay(damageable);
451475
}
452476

453477
if (wallPos <= 2)

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

Lines changed: 0 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -135,25 +135,6 @@ public static void ApplyPhysicalBuff(Sprite target, Buff buff)
135135
}
136136
}
137137

138-
public static void Step(Sprite sprite, int savedXStep, int savedYStep)
139-
{
140-
try
141-
{
142-
if (sprite is not Aisling damageDealingSprite) return;
143-
var warpPos = new Position(savedXStep, savedYStep);
144-
damageDealingSprite.Client.WarpTo(warpPos);
145-
damageDealingSprite.Client.CheckWarpTransitions(damageDealingSprite.Client, savedXStep, savedYStep);
146-
damageDealingSprite.Client.SendRemoveObject(damageDealingSprite.Serial);
147-
damageDealingSprite.Client.UpdateDisplay();
148-
damageDealingSprite.Client.LastMovement = DateTime.UtcNow;
149-
}
150-
catch
151-
{
152-
ServerSetup.EventsLogger($"Issue with Step called from {new System.Diagnostics.StackTrace().GetFrame(1)?.GetMethod()?.Name ?? "Unknown"}");
153-
SentrySdk.CaptureMessage($"Issue with Step called from {new System.Diagnostics.StackTrace().GetFrame(1)?.GetMethod()?.Name ?? "Unknown"}", SentryLevel.Error);
154-
}
155-
}
156-
157138
public static void Train(WorldClient client, Skill skill) => client?.TrainSkill(skill);
158139

159140
public static bool OnUse(Aisling aisling, Skill skill)

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

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ public class Ambush(Skill skill) : SkillScript(skill)
2020

2121
protected override void OnFailed(Sprite sprite) => GlobalSkillMethods.OnFailed(sprite, Skill, _target);
2222

23-
protected override void OnSuccess(Sprite sprite)
23+
protected override async void OnSuccess(Sprite sprite)
2424
{
2525
if (sprite is Aisling aisling)
2626
aisling.ActionUsed = "Ambush";
@@ -45,10 +45,17 @@ protected override void OnSuccess(Sprite sprite)
4545
}
4646

4747
var dmgCalc = DamageCalc(sprite);
48-
GlobalSkillMethods.Step(damageDealer, targetPos.X, targetPos.Y);
48+
var stepped = await damageDealer.StepAndRemove(damageDealer, targetPos.X, targetPos.Y);
49+
50+
if (!stepped)
51+
{
52+
OnFailed(sprite);
53+
return;
54+
}
55+
4956
damageDealer.Facing(_target.X, _target.Y, out var direction);
5057
damageDealer.Direction = (byte)direction;
51-
damageDealer.Turn();
58+
damageDealer.StepAddAndUpdateDisplay(damageDealer);
5259
GlobalSkillMethods.OnSuccess(_target, damageDealer, Skill, dmgCalc, _crit, action);
5360
}
5461
catch

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

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,12 @@
22

33
using Darkages.Enums;
44
using Darkages.GameScripts.Affects;
5-
using Darkages.GameScripts.Spells;
65
using Darkages.Network.Server;
76
using Darkages.ScriptingBase;
87
using Darkages.Sprites;
98
using Darkages.Sprites.Entity;
109
using Darkages.Types;
1110

12-
using System.Diagnostics;
13-
1411
using MapFlags = Darkages.Enums.MapFlags;
1512

1613
namespace Darkages.GameScripts.Skills;

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

Lines changed: 29 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1696,7 +1696,7 @@ protected override void OnFailed(Sprite sprite)
16961696
GlobalSkillMethods.OnFailed(sprite, Skill, _target);
16971697
}
16981698

1699-
protected override void OnSuccess(Sprite sprite)
1699+
protected override async void OnSuccess(Sprite sprite)
17001700
{
17011701
if (sprite is Aisling aisling)
17021702
{
@@ -1742,7 +1742,15 @@ protected override void OnSuccess(Sprite sprite)
17421742

17431743
if (damageDealer.Position != position)
17441744
{
1745-
GlobalSkillMethods.Step(damageDealer, position.X, position.Y);
1745+
var stepped = await damageDealer.StepAndRemove(damageDealer, position.X, position.Y);
1746+
1747+
if (!stepped)
1748+
{
1749+
OnFailed(sprite);
1750+
return;
1751+
}
1752+
1753+
damageDealer.StepAddAndUpdateDisplay(damageDealer);
17461754
}
17471755

17481756
if (_target is not Damageable damageable) return;
@@ -1754,7 +1762,15 @@ protected override void OnSuccess(Sprite sprite)
17541762
}
17551763
else
17561764
{
1757-
GlobalSkillMethods.Step(damageDealer, wallPosition.X, wallPosition.Y);
1765+
var stepped = await damageDealer.StepAndRemove(damageDealer, wallPosition.X, wallPosition.Y);
1766+
1767+
if (!stepped)
1768+
{
1769+
OnFailed(sprite);
1770+
return;
1771+
}
1772+
1773+
damageDealer.StepAddAndUpdateDisplay(damageDealer);
17581774
var stunned = new DebuffBeagsuain();
17591775
GlobalSkillMethods.ApplyPhysicalDebuff(damageDealer, stunned, damageDealer, Skill);
17601776
damageDealer.SendAnimationNearby(208, null, damageDealer.Serial);
@@ -1809,7 +1825,7 @@ private long DamageCalc(Sprite sprite)
18091825
return critCheck.Item2;
18101826
}
18111827

1812-
private void Target(Sprite sprite)
1828+
private async void Target(Sprite sprite)
18131829
{
18141830
if (sprite is not Damageable damageable) return;
18151831

@@ -1833,7 +1849,15 @@ private void Target(Sprite sprite)
18331849

18341850
if (damageable.Position != wallPosition)
18351851
{
1836-
GlobalSkillMethods.Step(damageable, wallPosition.X, wallPosition.Y);
1852+
var stepped = await damageable.StepAndRemove(damageable, wallPosition.X, wallPosition.Y);
1853+
1854+
if (!stepped)
1855+
{
1856+
OnFailed(sprite);
1857+
return;
1858+
}
1859+
1860+
damageable.StepAddAndUpdateDisplay(damageable);
18371861
}
18381862

18391863
if (wallPos <= 2)

0 commit comments

Comments
 (0)