Wizard: Repulse Spell (#35377)
This commit is contained in:
@@ -0,0 +1,8 @@
|
||||
using Content.Shared.Actions;
|
||||
|
||||
namespace Content.Shared.RepulseAttract.Events;
|
||||
|
||||
// Action event to repulse/attract
|
||||
// TODO: Give speech support later for wizard
|
||||
// TODO: When actions are refactored, give action targeting data (to change between single target, all around, etc)
|
||||
public sealed partial class RepulseAttractActionEvent : InstantActionEvent;
|
||||
@@ -7,6 +7,7 @@ using Content.Shared.Wieldable;
|
||||
using Robust.Shared.Map;
|
||||
using Robust.Shared.Physics.Components;
|
||||
using System.Numerics;
|
||||
using Content.Shared.RepulseAttract.Events;
|
||||
using Content.Shared.Weapons.Melee;
|
||||
|
||||
namespace Content.Shared.RepulseAttract;
|
||||
@@ -28,7 +29,9 @@ public sealed class RepulseAttractSystem : EntitySystem
|
||||
_physicsQuery = GetEntityQuery<PhysicsComponent>();
|
||||
|
||||
SubscribeLocalEvent<RepulseAttractComponent, MeleeHitEvent>(OnMeleeAttempt, before: [typeof(UseDelayOnMeleeHitSystem)], after: [typeof(SharedWieldableSystem)]);
|
||||
SubscribeLocalEvent<RepulseAttractComponent, RepulseAttractActionEvent>(OnRepulseAttractAction);
|
||||
}
|
||||
|
||||
private void OnMeleeAttempt(Entity<RepulseAttractComponent> ent, ref MeleeHitEvent args)
|
||||
{
|
||||
if (_delay.IsDelayed(ent.Owner))
|
||||
@@ -37,6 +40,15 @@ public sealed class RepulseAttractSystem : EntitySystem
|
||||
TryRepulseAttract(ent, args.User);
|
||||
}
|
||||
|
||||
private void OnRepulseAttractAction(Entity<RepulseAttractComponent> ent, ref RepulseAttractActionEvent args)
|
||||
{
|
||||
if (args.Handled)
|
||||
return;
|
||||
|
||||
var position = _xForm.GetMapCoordinates(args.Performer);
|
||||
args.Handled = TryRepulseAttract(position, args.Performer, ent.Comp.Speed, ent.Comp.Range, ent.Comp.Whitelist, ent.Comp.CollisionMask);
|
||||
}
|
||||
|
||||
public bool TryRepulseAttract(Entity<RepulseAttractComponent> ent, EntityUid user)
|
||||
{
|
||||
var position = _xForm.GetMapCoordinates(ent.Owner);
|
||||
|
||||
@@ -9,9 +9,12 @@ spellbook-voidapplause-name = Void Applause
|
||||
spellbook-voidapplause-desc = Swap places with the target, doesn't it make you want to do the boogie?
|
||||
|
||||
spellbook-force-wall-name = Force Wall
|
||||
spellbook-force-wall-desc = Make three walls of pure force that you can pass through, but other's can't.
|
||||
spellbook-force-wall-desc = Make three walls of pure force that you can pass through, but others can't.
|
||||
|
||||
spellbook-polymoprh-spider-name = Spider Polymoprh
|
||||
spellbook-repulse-name = Repulse
|
||||
spellbook-repulse-desc = Tell people to GITTAH`WEIGH and push 'em away from you.
|
||||
|
||||
spellbook-polymorph-spider-name = Spider Polymorph
|
||||
spellbook-polymorph-spider-desc = Transforms you into a spider, man!
|
||||
|
||||
spellbook-polymorph-rod-name = Rod Polymorph
|
||||
|
||||
@@ -75,11 +75,27 @@
|
||||
WizCoin: 3
|
||||
categories:
|
||||
- SpellbookDefensive
|
||||
conditions:
|
||||
- !type:ListingLimitedStockCondition
|
||||
stock: 1
|
||||
|
||||
- type: listing
|
||||
id: SpellbookRepulse
|
||||
name: spellbook-repulse-name
|
||||
description: spellbook-repulse-desc
|
||||
productAction: ActionRepulse
|
||||
cost:
|
||||
WizCoin: 2
|
||||
categories:
|
||||
- SpellbookDefensive
|
||||
conditions:
|
||||
- !type:ListingLimitedStockCondition
|
||||
stock: 1
|
||||
|
||||
# Utility
|
||||
- type: listing
|
||||
id: SpellbookPolymorphSpider
|
||||
name: spellbook-polymoprh-spider-name
|
||||
name: spellbook-polymorph-spider-name
|
||||
description: spellbook-polymorph-spider-desc
|
||||
productAction: ActionPolymorphWizardSpider
|
||||
cost:
|
||||
|
||||
20
Resources/Prototypes/Magic/repulse_spell.yml
Normal file
20
Resources/Prototypes/Magic/repulse_spell.yml
Normal file
@@ -0,0 +1,20 @@
|
||||
- type: entity
|
||||
id: ActionRepulse
|
||||
name: Repulse
|
||||
description: Pushes entities away from the user.
|
||||
components:
|
||||
- type: RepulseAttract
|
||||
speed: 10
|
||||
range: 5
|
||||
whitelist:
|
||||
components:
|
||||
- MobMover
|
||||
- Item
|
||||
- type: InstantAction
|
||||
useDelay: 40
|
||||
raiseOnAction: true
|
||||
itemIconStyle: BigAction
|
||||
icon:
|
||||
sprite: Objects/Magic/magicactions.rsi
|
||||
state: repulse
|
||||
event: !type:RepulseAttractActionEvent
|
||||
@@ -33,6 +33,9 @@
|
||||
},
|
||||
{
|
||||
"name": "item_recall"
|
||||
},
|
||||
{
|
||||
"name": "repulse"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
BIN
Resources/Textures/Objects/Magic/magicactions.rsi/repulse.png
Normal file
BIN
Resources/Textures/Objects/Magic/magicactions.rsi/repulse.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 245 B |
Reference in New Issue
Block a user