Crystals Update (#925)

* portal frame

* resprited sharpening stone

* portal frame entity

* darkness -> dimension magic type

* thaumaturgy platforms, some refactor

* magic energy refactor

* Update AirlockPryingTest.cs

* transfering tweaks

* fixed magic manipulation
This commit is contained in:
Ed
2025-02-25 23:37:05 +03:00
committed by GitHub
parent 4e62a0efcc
commit ba901d5e0e
48 changed files with 340 additions and 409 deletions

View File

@@ -7,6 +7,7 @@ using Content.Shared._CP14.MagicSpell;
using Content.Shared._CP14.MagicSpell.Components;
using Content.Shared._CP14.MagicSpell.Events;
using Content.Shared._CP14.MagicSpell.Spells;
using Content.Shared.FixedPoint;
using Content.Shared.Projectiles;
using Content.Shared.Throwing;
using Content.Shared.Weapons.Melee.Events;
@@ -123,29 +124,24 @@ public sealed partial class CP14MagicSystem : CP14SharedMagicSystem
var requiredMana = CalculateManacost(ent, args.Performer);
if (magicEffect.SpellStorage is not null &&
TryComp<CP14MagicEnergyContainerComponent>(magicEffect.SpellStorage, out var magicStorage))
//First - used object
if (magicEffect.SpellStorage is not null && TryComp<CP14MagicEnergyContainerComponent>(magicEffect.SpellStorage, out var magicStorage))
{
var spellEv = new CP14SpellFromSpellStorageUsedEvent(args.Performer, (ent, magicEffect), requiredMana);
RaiseLocalEvent(magicEffect.SpellStorage.Value, ref spellEv);
if (magicStorage.Energy > 0)
{
var cashedEnergy = magicStorage.Energy;
if (_magicEnergy.TryConsumeEnergy(magicEffect.SpellStorage.Value, requiredMana, magicStorage, false))
requiredMana = MathF.Max(0, (float)(requiredMana - cashedEnergy));
}
_magicEnergy.ChangeEnergy(magicEffect.SpellStorage.Value, -requiredMana, out var changedEnergy, out var overloadedEnergy, magicStorage, safe: false);
requiredMana -= FixedPoint2.Abs(changedEnergy + overloadedEnergy);
}
//Second - action user
if (requiredMana > 0 &&
TryComp<CP14MagicEnergyContainerComponent>(args.Performer, out var playerMana))
{
_magicEnergy.TryConsumeEnergy(args.Performer.Value, requiredMana, safe: false);
_magicEnergy.ChangeEnergy(args.Performer.Value, -requiredMana, out _, out _, playerMana, safe: false);
}
}
private void OnMusicCheck(Entity<CP14MagicEffectRequiredMusicToolComponent> ent, ref CP14CastMagicEffectAttemptEvent args)
{
var passed = false;