diff --git a/Content.Client/_CP14/Religion/CP14ClientReligionGodSystem.cs b/Content.Client/_CP14/Religion/CP14ClientReligionGodSystem.cs index 3be4e03fdb..d2beb082c0 100644 --- a/Content.Client/_CP14/Religion/CP14ClientReligionGodSystem.cs +++ b/Content.Client/_CP14/Religion/CP14ClientReligionGodSystem.cs @@ -25,7 +25,7 @@ public sealed partial class CP14ClientReligionGodSystem : CP14SharedReligionGodS SubscribeLocalEvent(OnOverlayRemove); } - protected override void SendMessageToGods(ProtoId religion, string msg, EntityUid source) { } + public override void SendMessageToGods(ProtoId religion, string msg, EntityUid source) { } public override void Shutdown() { diff --git a/Content.Server/_CP14/Religion/CP14ReligionSystem.UI.cs b/Content.Server/_CP14/Religion/CP14ReligionSystem.UI.cs index d1dbd762b9..4d46b02b5c 100644 --- a/Content.Server/_CP14/Religion/CP14ReligionSystem.UI.cs +++ b/Content.Server/_CP14/Religion/CP14ReligionSystem.UI.cs @@ -78,6 +78,6 @@ public sealed partial class CP14ReligionGodSystem manaPercentage = manaContainerComponent.Energy / manaContainerComponent.MaxEnergy; } - _userInterface.SetUiState(ent.Owner, CP14ReligionEntityUiKey.Key, new CP14ReligionEntityUiState(altars, followers, followerPercentage, (float)manaPercentage)); + _userInterface.SetUiState(ent.Owner, CP14ReligionEntityUiKey.Key, new CP14ReligionEntityUiState(altars, followers, followerPercentage, manaPercentage)); } } diff --git a/Content.Server/_CP14/Religion/CP14ReligionSystem.cs b/Content.Server/_CP14/Religion/CP14ReligionSystem.cs index 35284d3701..53857f0d1f 100644 --- a/Content.Server/_CP14/Religion/CP14ReligionSystem.cs +++ b/Content.Server/_CP14/Religion/CP14ReligionSystem.cs @@ -7,6 +7,7 @@ using Content.Shared._CP14.Religion.Components; using Content.Shared._CP14.Religion.Prototypes; using Content.Shared._CP14.Religion.Systems; using Content.Shared.Chat; +using Content.Shared.FixedPoint; using Robust.Server.GameStates; using Robust.Shared.Network; using Robust.Shared.Player; @@ -140,7 +141,7 @@ public sealed partial class CP14ReligionGodSystem : CP14SharedReligionGodSystem SendMessageToGods(ent.Comp.Religion.Value, wrappedMessage, args.Source); } - protected override void SendMessageToGods(ProtoId religion, string msg, EntityUid source) + public override void SendMessageToGods(ProtoId religion, string msg, EntityUid source) { var gods = GetGods(religion); @@ -156,7 +157,7 @@ public sealed partial class CP14ReligionGodSystem : CP14SharedReligionGodSystem _chat.ChatMessageToMany(ChatChannel.Notifications, msg, msg, source, false, true, channels, colorOverride: Color.Aqua); } - public float GetFollowerPercentage(Entity god) + public FixedPoint2 GetFollowerPercentage(Entity god) { var total = 0; var followers = 0; @@ -177,7 +178,7 @@ public sealed partial class CP14ReligionGodSystem : CP14SharedReligionGodSystem if (total == 0) return 0f; - return (float)followers / total; + return followers / total; } private void AddPvsOverrides(Entity ent) diff --git a/Content.Shared/_CP14/MagicSpell/CP14SharedMagicSystem.InstantActions.cs b/Content.Shared/_CP14/MagicSpell/CP14SharedMagicSystem.InstantActions.cs index 747f2ea102..ab77d55096 100644 --- a/Content.Shared/_CP14/MagicSpell/CP14SharedMagicSystem.InstantActions.cs +++ b/Content.Shared/_CP14/MagicSpell/CP14SharedMagicSystem.InstantActions.cs @@ -10,6 +10,7 @@ public abstract partial class CP14SharedMagicSystem { SubscribeLocalEvent(OnMagicInstantAction); SubscribeLocalEvent(OnMagicEntityWorldTargetAction); + SubscribeLocalEvent(OnMagicWorldTargetAction); SubscribeLocalEvent(OnMagicEntityTargetAction); } @@ -47,6 +48,23 @@ public abstract partial class CP14SharedMagicSystem _action.CP14StartCustomDelay(args.Action, args.Cooldown); } + private void OnMagicWorldTargetAction(CP14WorldTargetActionEvent args) + { + if (args.Handled) + return; + + if (!TryComp(args.Action, out var magicEffect)) + return; + + var spellArgs = new CP14SpellEffectBaseArgs(args.Performer, magicEffect.SpellStorage, null, args.Target); + + if (!CanCastSpell((args.Action, magicEffect), spellArgs)) + return; + + CastSpell((args.Action, magicEffect), spellArgs); + _action.CP14StartCustomDelay(args.Action, args.Cooldown); + } + private void OnMagicEntityTargetAction(CP14EntityTargetActionEvent args) { if (args.Handled) diff --git a/Content.Shared/_CP14/MagicSpell/Events/CP14ActionsEvents.cs b/Content.Shared/_CP14/MagicSpell/Events/CP14ActionsEvents.cs index 5bc14516f5..9669dd32eb 100644 --- a/Content.Shared/_CP14/MagicSpell/Events/CP14ActionsEvents.cs +++ b/Content.Shared/_CP14/MagicSpell/Events/CP14ActionsEvents.cs @@ -13,6 +13,12 @@ public sealed partial class CP14EntityWorldTargetActionEvent : EntityWorldTarget public TimeSpan Cooldown { get; private set; } = TimeSpan.FromSeconds(1f); } +public sealed partial class CP14WorldTargetActionEvent : WorldTargetActionEvent, ICP14MagicEffect +{ + [DataField] + public TimeSpan Cooldown { get; private set; } = TimeSpan.FromSeconds(1f); +} + public sealed partial class CP14EntityTargetActionEvent : EntityTargetActionEvent, ICP14MagicEffect { [DataField] diff --git a/Content.Shared/_CP14/MagicSpell/Spells/CP14SpellSendMessageToGod.cs b/Content.Shared/_CP14/MagicSpell/Spells/CP14SpellSendMessageToGod.cs new file mode 100644 index 0000000000..2298a3116e --- /dev/null +++ b/Content.Shared/_CP14/MagicSpell/Spells/CP14SpellSendMessageToGod.cs @@ -0,0 +1,25 @@ +using Content.Shared._CP14.Religion.Components; +using Content.Shared._CP14.Religion.Systems; + +namespace Content.Shared._CP14.MagicSpell.Spells; + +public sealed partial class CP14SpellSendMessageToGod : CP14SpellEffect +{ + [DataField] + public LocId? Message; + + public override void Effect(EntityManager entManager, CP14SpellEffectBaseArgs args) + { + if (!entManager.TryGetComponent(args.User, out var follower)) + return; + if (!entManager.TryGetComponent(args.User, out var metaData)) + return; + + if (follower.Religion is null) + return; + + var religionSys = entManager.System(); + + religionSys.SendMessageToGods(follower.Religion.Value, Loc.GetString("cp14-call-follower-message", ("name", metaData.EntityName)) + " " + Loc.GetString(Message?? ""), args.User.Value); + } +} diff --git a/Content.Shared/_CP14/MagicSpell/Spells/CP14SpellTransferManaToGod.cs b/Content.Shared/_CP14/MagicSpell/Spells/CP14SpellTransferManaToGod.cs new file mode 100644 index 0000000000..4a8803979b --- /dev/null +++ b/Content.Shared/_CP14/MagicSpell/Spells/CP14SpellTransferManaToGod.cs @@ -0,0 +1,37 @@ +using Content.Shared._CP14.MagicEnergy; +using Content.Shared._CP14.Religion.Components; +using Content.Shared._CP14.Religion.Systems; +using Content.Shared.FixedPoint; + +namespace Content.Shared._CP14.MagicSpell.Spells; + +public sealed partial class CP14SpellTransferManaToGod : CP14SpellEffect +{ + [DataField] + public FixedPoint2 Amount = 10f; + + [DataField] + public bool Safe = false; + + public override void Effect(EntityManager entManager, CP14SpellEffectBaseArgs args) + { + if (args.User is null) + return; + + if (!entManager.TryGetComponent(args.User, out var follower)) + return; + + if (follower.Religion is null) + return; + + var religionSys = entManager.System(); + var magicEnergySys = entManager.System(); + + var gods = religionSys.GetGods(follower.Religion.Value); + var manaAmount = Amount / gods.Count; + foreach (var god in gods) + { + magicEnergySys.TransferEnergy(args.User.Value, god.Owner, manaAmount, out _, out _, safe: Safe); + } + } +} diff --git a/Content.Shared/_CP14/Religion/Components/CP14ReligionFollowerComponent.cs b/Content.Shared/_CP14/Religion/Components/CP14ReligionFollowerComponent.cs index bd54272429..2f9a4d1c93 100644 --- a/Content.Shared/_CP14/Religion/Components/CP14ReligionFollowerComponent.cs +++ b/Content.Shared/_CP14/Religion/Components/CP14ReligionFollowerComponent.cs @@ -21,9 +21,15 @@ public sealed partial class CP14ReligionFollowerComponent : Component [DataField] public EntProtoId RenounceActionProto = "CP14ActionRenounceFromGod"; + [DataField] + public EntProtoId AppealToGofProto = "CP14ActionAppealToGod"; + [DataField] public EntityUid? RenounceAction; + [DataField] + public EntityUid? AppealAction; + /// /// how much energy does the entity transfer to its god /// diff --git a/Content.Shared/_CP14/Religion/Systems/CP14SharedReligionGodSystem.Altars.cs b/Content.Shared/_CP14/Religion/Systems/CP14SharedReligionGodSystem.Altars.cs index 135b587c12..a653d63f48 100644 --- a/Content.Shared/_CP14/Religion/Systems/CP14SharedReligionGodSystem.Altars.cs +++ b/Content.Shared/_CP14/Religion/Systems/CP14SharedReligionGodSystem.Altars.cs @@ -1,4 +1,3 @@ - using Content.Shared._CP14.Religion.Components; using Content.Shared._CP14.Religion.Prototypes; using Content.Shared.DoAfter; @@ -13,15 +12,9 @@ public abstract partial class CP14SharedReligionGodSystem [Dependency] private readonly SharedDoAfterSystem _doAfter = default!; private void InitializeAltars() { - SubscribeLocalEvent>(GetBaseVerb); SubscribeLocalEvent>(GetAltVerb); } - private void GetBaseVerb(Entity ent, ref GetVerbsEvent args) - { - - } - private void GetAltVerb(Entity ent, ref GetVerbsEvent args) { if (ent.Comp.Religion is null) diff --git a/Content.Shared/_CP14/Religion/Systems/CP14SharedReligionGodSystem.Followers.cs b/Content.Shared/_CP14/Religion/Systems/CP14SharedReligionGodSystem.Followers.cs index da7a10a3e9..981f2f3ee5 100644 --- a/Content.Shared/_CP14/Religion/Systems/CP14SharedReligionGodSystem.Followers.cs +++ b/Content.Shared/_CP14/Religion/Systems/CP14SharedReligionGodSystem.Followers.cs @@ -3,7 +3,10 @@ using Content.Shared._CP14.Religion.Components; using Content.Shared._CP14.Religion.Prototypes; using Content.Shared.Actions; using Content.Shared.Alert; +using Content.Shared.Follower; using Content.Shared.Mind; +using Content.Shared.Mobs; +using Content.Shared.Verbs; using Robust.Shared.Prototypes; namespace Content.Shared._CP14.Religion.Systems; @@ -13,6 +16,8 @@ public abstract partial class CP14SharedReligionGodSystem [Dependency] private readonly AlertsSystem _alerts = default!; [Dependency] private readonly SharedActionsSystem _actions = default!; [Dependency] protected readonly SharedMindSystem Mind = default!; + [Dependency] private readonly FollowerSystem _follower = default!; + private void InitializeFollowers() { SubscribeLocalEvent(OnPendingFollowerInit); @@ -23,6 +28,43 @@ public abstract partial class CP14SharedReligionGodSystem SubscribeLocalEvent(OnOfferDoAfter); SubscribeLocalEvent(OnRenounceFromGod); + SubscribeLocalEvent>(OnGetAltVerbs); + SubscribeLocalEvent(OnFollowerStateChange); + } + + private void OnFollowerStateChange(Entity ent, ref MobStateChangedEvent args) + { + if (ent.Comp.Religion is null) + return; + + switch (args.NewMobState) + { + case MobState.Critical: + SendMessageToGods(ent.Comp.Religion.Value, Loc.GetString("cp14-critical-follower-message", ("name", MetaData(ent).EntityName)), ent); + break; + + case MobState.Dead: + SendMessageToGods(ent.Comp.Religion.Value, Loc.GetString("cp14-dead-follower-message", ("name", MetaData(ent).EntityName)), ent); + break; + } + } + + private void OnGetAltVerbs(EntityUid uid, CP14ReligionFollowerComponent component, GetVerbsEvent args) + { + if (!TryComp(args.User, out var god)) + return; + + if (god.Religion != component.Religion) + return; + + args.Verbs.Add(new AlternativeVerb + { + Text = Loc.GetString("admin-player-actions-follow"), + Act = () => + { + _follower.StartFollowingEntity(args.User, uid); + }, + }); } private void OnRenounceFromGod(Entity ent, ref CP14RenounceFromGodEvent args) @@ -78,6 +120,9 @@ public abstract partial class CP14SharedReligionGodSystem EnsureComp(target, out var follower); + if (follower.Religion is not null) + return false; + return !follower.RejectedReligions.Contains(religion); } @@ -118,6 +163,7 @@ public abstract partial class CP14SharedReligionGodSystem SendMessageToGods(pending.Comp.Religion.Value, Loc.GetString("cp14-become-follower-message", ("name", MetaData(pending).EntityName)), pending); _actions.AddAction(pending, ref follower.RenounceAction, follower.RenounceActionProto); + _actions.AddAction(pending, ref follower.AppealAction, follower.AppealToGofProto); return true; } @@ -146,6 +192,7 @@ public abstract partial class CP14SharedReligionGodSystem Dirty(target, follower); _actions.RemoveAction(target, follower.RenounceAction); + _actions.RemoveAction(target, follower.AppealAction); } } diff --git a/Content.Shared/_CP14/Religion/Systems/CP14SharedReligionGodSystem.UI.cs b/Content.Shared/_CP14/Religion/Systems/CP14SharedReligionGodSystem.UI.cs index bd465d5bf5..bc5d83c6f6 100644 --- a/Content.Shared/_CP14/Religion/Systems/CP14SharedReligionGodSystem.UI.cs +++ b/Content.Shared/_CP14/Religion/Systems/CP14SharedReligionGodSystem.UI.cs @@ -1,3 +1,4 @@ +using Content.Shared.FixedPoint; using Robust.Shared.Serialization; namespace Content.Shared._CP14.Religion.Systems; @@ -9,12 +10,12 @@ public enum CP14ReligionEntityUiKey } [Serializable, NetSerializable] -public sealed class CP14ReligionEntityUiState(Dictionary altars, Dictionary followers, float followerPercentage, float manaPercentage) : BoundUserInterfaceState +public sealed class CP14ReligionEntityUiState(Dictionary altars, Dictionary followers, FixedPoint2 followerPercentage, FixedPoint2 manaPercentage) : BoundUserInterfaceState { public Dictionary Altars = altars; public Dictionary Followers = followers; - public float FollowerPercentage = followerPercentage; - public float ManaPercentage = manaPercentage; + public FixedPoint2 FollowerPercentage = followerPercentage; + public FixedPoint2 ManaPercentage = manaPercentage; } [Serializable, NetSerializable] diff --git a/Content.Shared/_CP14/Religion/Systems/CP14SharedReligionGodSystem.cs b/Content.Shared/_CP14/Religion/Systems/CP14SharedReligionGodSystem.cs index 9f38e06caa..88e49d8402 100644 --- a/Content.Shared/_CP14/Religion/Systems/CP14SharedReligionGodSystem.cs +++ b/Content.Shared/_CP14/Religion/Systems/CP14SharedReligionGodSystem.cs @@ -33,7 +33,7 @@ public abstract partial class CP14SharedReligionGodSystem : EntitySystem return gods; } - protected abstract void SendMessageToGods(ProtoId religion, string msg, EntityUid source); + public abstract void SendMessageToGods(ProtoId religion, string msg, EntityUid source); } /// diff --git a/Resources/Locale/en-US/_CP14/religion/altar.ftl b/Resources/Locale/en-US/_CP14/religion/altar.ftl index fd0691d6b5..3f8301ee75 100644 --- a/Resources/Locale/en-US/_CP14/religion/altar.ftl +++ b/Resources/Locale/en-US/_CP14/religion/altar.ftl @@ -3,6 +3,9 @@ cp14-offer-soul-god-message = [bold]{$name}[/bold] [color=green]wants to become cp14-unoffer-soul-god-message = [bold]{$name}[/bold] [color=red]has changed his mind about becoming your follower.[/color] cp14-become-follower-message = [bold]{$name}[/bold] [color=green]becomes your follower[/color]! cp14-remove-follower-message = [bold]{$name}[/bold] [color=red]rejects you and will never be able to return to you![/color] +cp14-call-follower-message = [bold]{$name}[/bold] appeals to you! +cp14-critical-follower-message = [bold]{$name}[/bold] is falling into critical condition! +cp14-dead-follower-message = [bold]{$name}[/bold] is dead! cp14-renounce-action-popup = YOU ARE RENOUNCING YOUR PATRON! To confirm, perform the action again. cp-renounce-action-god-popup = YOU ARE REJECTING YOUR FOLLOWER! To confirm, perform the action again. diff --git a/Resources/Locale/ru-RU/_CP14/religion/altar.ftl b/Resources/Locale/ru-RU/_CP14/religion/altar.ftl index 32628eabad..df2322485d 100644 --- a/Resources/Locale/ru-RU/_CP14/religion/altar.ftl +++ b/Resources/Locale/ru-RU/_CP14/religion/altar.ftl @@ -3,6 +3,9 @@ cp14-offer-soul-god-message = [bold]{$name}[/bold] [color=green]хочет ст cp14-unoffer-soul-god-message = [bold]{$name}[/bold] [color=red]передумал становиться вашим последователем.[/color] cp14-become-follower-message = [bold]{$name}[/bold] [color=green]становится вашим последователем[/color]! cp14-remove-follower-message = [bold]{$name}[/bold] [color=red]отвергает вас, и больше никогда не сможет вернться к вам![/color] +cp14-call-follower-message = [bold]{$name}[/bold] взывает к вам! +cp14-critical-follower-message = [bold]{$name}[/bold] падает в критическое состояние! +cp14-dead-follower-message = [bold]{$name}[/bold] погибает! cp14-renounce-action-popup = ВЫ ОТРЕКАЕТЕСЬ ОТ ПОКРОВИТЕЛЯ! Для подтверждения выполните действие еще раз. cp-renounce-action-god-popup = ВЫ ОТВЕРГАЕТЕ СВОЕГО ПОСЛЕДОВАТЕЛЯ! Для подтверждения выполните действие еще раз. diff --git a/Resources/Prototypes/_CP14/Entities/Actions/Spells/Demigods/Lumera/darkmist.yml b/Resources/Prototypes/_CP14/Entities/Actions/Spells/Demigods/Lumera/darkmist.yml new file mode 100644 index 0000000000..8673a34bc7 --- /dev/null +++ b/Resources/Prototypes/_CP14/Entities/Actions/Spells/Demigods/Lumera/darkmist.yml @@ -0,0 +1,73 @@ +- type: entity + id: CP14ActionSpellGodLumeraDarkmist + name: Impenetrable darkness + description: You summon a thick fog that obscures vision and disorients mortals. + components: + - type: CP14MagicEffectReligionRestricted + - type: CP14MagicEffectManaCost + manaCost: 10 + - type: CP14MagicEffect + telegraphyEffects: + - !type:CP14SpellSpawnEntityOnTarget + spawns: + - CP14ImpactEffectFlashLight + effects: + - !type:CP14SpellSpawnEntityOnTarget + spawns: + - CP14LumeraDarkMist + - type: WorldTargetAction + repeat: true + checkCanAccess: false + range: 100 + itemIconStyle: BigAction + sound: !type:SoundPathSpecifier + path: /Audio/Magic/Eldritch/voidblink.ogg + icon: + sprite: _CP14/Actions/DemigodSpells/lumera.rsi + state: mist + event: !type:CP14WorldTargetActionEvent + cooldown: 0.15 + +- type: entity + parent: + - BaseStructure + - BaseShadow + id: CP14LumeraDarkMist + categories: [ HideSpawnMenu ] + components: + - type: SyncSprite + - type: TimedDespawn + lifetime: 60 + - type: Occluder + - type: Sprite + drawdepth: Effects + sprite: Effects/spookysmoke.rsi + layers: + - state: spookysmoke + color: "#3266a8" + map: [base] + - type: OptionsVisualizer + visuals: + base: + - options: Default + data: { state: spookysmoke } + - options: ReducedMotion + data: { state: spookysmoke_static } + - type: Physics + bodyType: Static + canCollide: false + - type: Fixtures + fixtures: + fix1: + shape: + !type:PhysShapeAabb + bounds: "-0.5,-0.5,0.5,0.5" + layer: + - SlipLayer + mask: + - ItemMask + density: 1000 + hard: false + - type: Tag + tags: + - HideContextMenu diff --git a/Resources/Prototypes/_CP14/Entities/Actions/Spells/Demigods/generic.yml b/Resources/Prototypes/_CP14/Entities/Actions/Spells/Demigods/generic.yml index 1f3db51599..39c3318f20 100644 --- a/Resources/Prototypes/_CP14/Entities/Actions/Spells/Demigods/generic.yml +++ b/Resources/Prototypes/_CP14/Entities/Actions/Spells/Demigods/generic.yml @@ -10,4 +10,30 @@ priority: -8 event: !type:CP14RenounceFromGodEvent - type: ConfirmableAction - popup: cp14-renounce-action-popup \ No newline at end of file + popup: cp14-renounce-action-popup + +- type: entity + id: CP14ActionAppealToGod + name: Appeal to god + description: You call upon your patron! He will hear your call wherever he may be. + components: + - type: CP14MagicEffect + effects: + - !type:CP14SpellSpawnEntityOnTarget + spawns: + - CP14ImpactEffectSphereOfLight + - !type:CP14SpellTransferManaToGod + amount: 20 + safe: false + - !type:CP14SpellSendMessageToGod + - type: InstantAction + sound: !type:SoundPathSpecifier + path: /Audio/Magic/rumble.ogg + icon: + sprite: _CP14/Actions/DemigodSpells/generic.rsi + state: appeal + priority: -8 + event: !type:CP14DelayedInstantActionEvent + cooldown: 15 + castDelay: 1.5 + breakOnMove: true \ No newline at end of file diff --git a/Resources/Prototypes/_CP14/Skill/Demigods/lumera.yml b/Resources/Prototypes/_CP14/Skill/Demigods/lumera.yml index 4aa20b8d1c..71040be411 100644 --- a/Resources/Prototypes/_CP14/Skill/Demigods/lumera.yml +++ b/Resources/Prototypes/_CP14/Skill/Demigods/lumera.yml @@ -57,6 +57,21 @@ - !type:GodFollowerPercentage percentage: 0.3 +- type: cp14Skill + id: LumeraDarkMist + skillUiPosition: 6, 3 + tree: GodLumera + learnCost: 1.0 + icon: + sprite: _CP14/Actions/DemigodSpells/lumera.rsi + state: mist + effects: + - !type:AddAction + action: CP14ActionSpellGodLumeraDarkmist + restrictions: + - !type:NeedPrerequisite + prerequisite: LumeraT2 + # T3 - type: cp14Skill diff --git a/Resources/Textures/_CP14/Actions/DemigodSpells/generic.rsi/appeal.png b/Resources/Textures/_CP14/Actions/DemigodSpells/generic.rsi/appeal.png new file mode 100644 index 0000000000..905788b6f2 Binary files /dev/null and b/Resources/Textures/_CP14/Actions/DemigodSpells/generic.rsi/appeal.png differ diff --git a/Resources/Textures/_CP14/Actions/DemigodSpells/generic.rsi/meta.json b/Resources/Textures/_CP14/Actions/DemigodSpells/generic.rsi/meta.json new file mode 100644 index 0000000000..70a3e715dd --- /dev/null +++ b/Resources/Textures/_CP14/Actions/DemigodSpells/generic.rsi/meta.json @@ -0,0 +1,14 @@ +{ + "version": 1, + "size": { + "x": 32, + "y": 32 + }, + "license": "All right reserved", + "copyright": "Created by TheShuEd", + "states": [ + { + "name": "appeal" + } + ] +} \ No newline at end of file diff --git a/Resources/Textures/_CP14/Actions/DemigodSpells/lumera.rsi/meta.json b/Resources/Textures/_CP14/Actions/DemigodSpells/lumera.rsi/meta.json index 9e51bb79c9..c43657ae34 100644 --- a/Resources/Textures/_CP14/Actions/DemigodSpells/lumera.rsi/meta.json +++ b/Resources/Textures/_CP14/Actions/DemigodSpells/lumera.rsi/meta.json @@ -16,6 +16,9 @@ { "name": "renounce" }, + { + "name": "mist" + }, { "name": "t1" }, diff --git a/Resources/Textures/_CP14/Actions/DemigodSpells/lumera.rsi/mist.png b/Resources/Textures/_CP14/Actions/DemigodSpells/lumera.rsi/mist.png new file mode 100644 index 0000000000..78491c7003 Binary files /dev/null and b/Resources/Textures/_CP14/Actions/DemigodSpells/lumera.rsi/mist.png differ