From 35303d7d805910272421bb51b39268fa34fe9952 Mon Sep 17 00:00:00 2001 From: Ed <96445749+TheShuEd@users.noreply.github.com> Date: Wed, 5 Feb 2025 22:52:50 +0300 Subject: [PATCH] Guildmaster 2 spells (#842) * merge movement and gate magic types into darkness new * demiplane infiltration spell * Update CP14SharedDemiplanSytem.cs * finish * locale --- .../_CP14/Demiplane/CP14DemiplaneSystem.cs | 32 +++++--- .../CP14DemiplaneTravelingSystem.cs | 67 ++++++++++++++++ .../Demiplane/CP14SharedDemiplanSytem.cs | 14 +++- .../CP14MonolithTimedPasswayComponent.cs | 29 +++++++ .../Spells/CP14SpellDemiplaneInfiltration.cs | 26 ++++++ .../Locale/en-US/_CP14/loadouts/loadout.ftl | 3 +- .../Locale/en-US/_CP14/magicTypes/magic.ftl | 2 - .../Locale/ru-RU/_CP14/loadouts/loadout.ftl | 3 +- .../Locale/ru-RU/_CP14/magicTypes/magic.ftl | 2 - .../Darkness/T0_demiplane_infiltration.yml | 63 +++++++++++++++ .../Spells/Darkness/T0_monolith_warp.yml | 75 ++++++++++++++++++ .../T1_shadow_grab.yml} | 4 +- .../{Gate => Darkness}/T2_shadow_step.yml | 5 +- .../_CP14/Entities/Actions/Spells/scrolls.yml | 16 +--- .../Clothing/Cloak/Roles/guard_commander.yml | 12 +-- .../_CP14/Loadouts/Jobs/guildmaster.yml | 25 +++++- .../_CP14/Loadouts/role_loadouts.yml | 1 + .../Prototypes/_CP14/MagicTypes/magic.yml | 10 --- .../Magic/spells_icons.rsi/demi_arrow.png | Bin 0 -> 703 bytes .../Effects/Magic/spells_icons.rsi/meta.json | 11 ++- .../Magic/spells_icons.rsi/rift_arrow.png | Bin 0 -> 621 bytes .../Magic/spells_icons.rsi/rift_shield.png | Bin 0 -> 650 bytes 22 files changed, 339 insertions(+), 61 deletions(-) create mode 100644 Content.Shared/_CP14/DemiplaneTraveling/CP14MonolithTimedPasswayComponent.cs create mode 100644 Content.Shared/_CP14/MagicSpell/Spells/CP14SpellDemiplaneInfiltration.cs create mode 100644 Resources/Prototypes/_CP14/Entities/Actions/Spells/Darkness/T0_demiplane_infiltration.yml create mode 100644 Resources/Prototypes/_CP14/Entities/Actions/Spells/Darkness/T0_monolith_warp.yml rename Resources/Prototypes/_CP14/Entities/Actions/Spells/{Movement/T0_shadow_grab.yml => Darkness/T1_shadow_grab.yml} (96%) rename Resources/Prototypes/_CP14/Entities/Actions/Spells/{Gate => Darkness}/T2_shadow_step.yml (94%) create mode 100644 Resources/Textures/_CP14/Effects/Magic/spells_icons.rsi/demi_arrow.png create mode 100644 Resources/Textures/_CP14/Effects/Magic/spells_icons.rsi/rift_arrow.png create mode 100644 Resources/Textures/_CP14/Effects/Magic/spells_icons.rsi/rift_shield.png diff --git a/Content.Server/_CP14/Demiplane/CP14DemiplaneSystem.cs b/Content.Server/_CP14/Demiplane/CP14DemiplaneSystem.cs index ed61a5d576..e64cb94ce7 100644 --- a/Content.Server/_CP14/Demiplane/CP14DemiplaneSystem.cs +++ b/Content.Server/_CP14/Demiplane/CP14DemiplaneSystem.cs @@ -6,6 +6,7 @@ using Content.Shared._CP14.Demiplane; using Content.Shared._CP14.Demiplane.Components; using Content.Shared.Popups; using Robust.Server.Audio; +using Robust.Shared.Audio; using Robust.Shared.Map; using Robust.Shared.Prototypes; using Robust.Shared.Random; @@ -82,7 +83,7 @@ public sealed partial class CP14DemiplaneSystem : CP14SharedDemiplaneSystem /// The demiplane the entity will be teleported to /// The entity to be teleported /// - public bool TryTeleportIntoDemiplane(Entity demiplane, EntityUid? entity) + public override bool TryTeleportIntoDemiplane(Entity demiplane, EntityUid? entity) { if (entity is null) return false; @@ -93,21 +94,34 @@ public sealed partial class CP14DemiplaneSystem : CP14SharedDemiplaneSystem return false; } - var targetCoord = Transform(entryPoint.Value).Coordinates; - _flash.Flash(entity.Value, null, null, 3000f, 0.5f); - _transform.SetCoordinates(entity.Value, targetCoord); - _audio.PlayGlobal(demiplane.Comp.ArrivalSound, entity.Value); + TeleportEntityToCoordinate(entity.Value, Transform(entryPoint.Value).Coordinates, demiplane.Comp.ArrivalSound); return true; } + /// + /// Simple teleportation, with common special effects for all the game's teleportation mechanics + /// + /// + /// + /// + public void TeleportEntityToCoordinate(EntityUid? entity, EntityCoordinates coordinates, SoundSpecifier? sound = null) + { + if (entity is null) + return; + + _flash.Flash(entity.Value, null, null, 3000f, 0.5f); + _transform.SetCoordinates(entity.Value, coordinates); + _audio.PlayGlobal(sound, entity.Value); + } + /// /// Teleports an entity from the demiplane to the real world, to one of the random exit points in the real world. /// /// The demiplane from which the entity will be teleported /// An entity that will be teleported into the real world. This entity must be in the demiplane, otherwise the function will not work. /// - public bool TryTeleportOutDemiplane(Entity demiplane, EntityUid? entity) + public override bool TryTeleportOutDemiplane(Entity demiplane, EntityUid? entity) { if (entity is null) return false; @@ -121,11 +135,7 @@ public sealed partial class CP14DemiplaneSystem : CP14SharedDemiplaneSystem return false; } - var targetCoord = Transform(connection.Value).Coordinates; - _flash.Flash(entity.Value, null, null, 3000f, 0.5f); - _transform.SetCoordinates(entity.Value, targetCoord); - _audio.PlayGlobal(demiplane.Comp.DepartureSound, entity.Value); - + TeleportEntityToCoordinate(entity.Value, Transform(connection.Value).Coordinates, demiplane.Comp.DepartureSound); return true; } diff --git a/Content.Server/_CP14/DemiplaneTraveling/CP14DemiplaneTravelingSystem.cs b/Content.Server/_CP14/DemiplaneTraveling/CP14DemiplaneTravelingSystem.cs index 0fbdc19e80..e5deef3203 100644 --- a/Content.Server/_CP14/DemiplaneTraveling/CP14DemiplaneTravelingSystem.cs +++ b/Content.Server/_CP14/DemiplaneTraveling/CP14DemiplaneTravelingSystem.cs @@ -1,4 +1,5 @@ using Content.Server._CP14.Demiplane; +using Content.Server._CP14.RoundEnd; using Content.Server.Interaction; using Content.Server.Mind; using Content.Server.Popups; @@ -28,13 +29,74 @@ public sealed partial class CP14DemiplaneTravelingSystem : EntitySystem base.Initialize(); SubscribeLocalEvent(RadiusMapInit); + SubscribeLocalEvent(MonolithMapInit); SubscribeLocalEvent(OnOpenRiftInteractDoAfter); } + // !!!SHITCODE WARNING!!! + // This whole module is saturated with shieldcode, code duplication and other delights. Why? Because. + //TODO: Refactor this shitcode public override void Update(float frameTime) { base.Update(frameTime); + DemiplaneTeleportUpdate(); + + var query = EntityQueryEnumerator(); + while (query.MoveNext(out var uid, out var passWay)) + { + if (_timing.CurTime < passWay.NextTimeTeleport) + continue; + + passWay.NextTimeTeleport = _timing.CurTime + passWay.Delay; + + //Get all teleporting entities + HashSet teleportedEnts = new(); + var nearestEnts = _lookup.GetEntitiesInRange(uid, passWay.Radius); + foreach (var ent in nearestEnts) + { + if (HasComp(ent)) + continue; + + if (!_mind.TryGetMind(ent, out var mindId, out var mind)) + continue; + + if (!_interaction.InRangeUnobstructed(ent, uid)) + continue; + + teleportedEnts.Add(ent); + } + + while (teleportedEnts.Count > passWay.MaxEntities) + { + teleportedEnts.Remove(_random.Pick(teleportedEnts)); + } + + //Aaaand teleport it + var monoliths = EntityQueryEnumerator(); + while (monoliths.MoveNext(out var monolithUid, out var monolith)) + { + var coord = Transform(monolithUid).Coordinates; + + //Shitcode select first one + foreach (var ent in teleportedEnts) + { + if (TryComp(ent, out var puller)) + _demiplan.TeleportEntityToCoordinate(puller.Pulling, coord); + + _demiplan.TeleportEntityToCoordinate(ent, coord); + _audio.PlayPvs(passWay.ArrivalSound, ent); + } + break; + } + + _audio.PlayPvs(passWay.DepartureSound, Transform(uid).Coordinates); + QueueDel(uid); + } + } + + private void DemiplaneTeleportUpdate() + { //Radius passway var query = EntityQueryEnumerator(); while (query.MoveNext(out var uid, out var passWay, out var rift)) @@ -111,6 +173,11 @@ public sealed partial class CP14DemiplaneTravelingSystem : EntitySystem radiusPassWay.Comp.NextTimeTeleport = _timing.CurTime + radiusPassWay.Comp.Delay; } + private void MonolithMapInit(Entity radiusPassWay, ref MapInitEvent args) + { + radiusPassWay.Comp.NextTimeTeleport = _timing.CurTime + radiusPassWay.Comp.Delay; + } + private void OnOpenRiftInteractDoAfter(Entity passWay, ref CP14DemiplanPasswayUseDoAfter args) { diff --git a/Content.Shared/_CP14/Demiplane/CP14SharedDemiplanSytem.cs b/Content.Shared/_CP14/Demiplane/CP14SharedDemiplanSytem.cs index caeedfffc6..13d3fcf7ab 100644 --- a/Content.Shared/_CP14/Demiplane/CP14SharedDemiplanSytem.cs +++ b/Content.Shared/_CP14/Demiplane/CP14SharedDemiplanSytem.cs @@ -14,10 +14,10 @@ public abstract partial class CP14SharedDemiplaneSystem : EntitySystem { base.Initialize(); - SubscribeLocalEvent(OnDemiplanPasswayInteract); + SubscribeLocalEvent(OnDemiplanePasswayInteract); } - private void OnDemiplanPasswayInteract(Entity passway, ref InteractHandEvent args) + private void OnDemiplanePasswayInteract(Entity passway, ref InteractHandEvent args) { _doAfter.TryStartDoAfter(new DoAfterArgs(EntityManager, args.User, @@ -33,6 +33,16 @@ public abstract partial class CP14SharedDemiplaneSystem : EntitySystem MovementThreshold = 0.2f, }); } + + public virtual bool TryTeleportIntoDemiplane(Entity demiplane, EntityUid? entity) + { + return true; + } + + public virtual bool TryTeleportOutDemiplane(Entity demiplane, EntityUid? entity) + { + return true; + } } [Serializable, NetSerializable] diff --git a/Content.Shared/_CP14/DemiplaneTraveling/CP14MonolithTimedPasswayComponent.cs b/Content.Shared/_CP14/DemiplaneTraveling/CP14MonolithTimedPasswayComponent.cs new file mode 100644 index 0000000000..f12cb8944a --- /dev/null +++ b/Content.Shared/_CP14/DemiplaneTraveling/CP14MonolithTimedPasswayComponent.cs @@ -0,0 +1,29 @@ +using Robust.Shared.Audio; + +namespace Content.Shared._CP14.DemiplaneTraveling; + +/// +/// teleports a certain number of entities to coordinate with a delay +/// +[RegisterComponent, AutoGenerateComponentPause] +public sealed partial class CP14MonolithTimedPasswayComponent : Component +{ + [DataField] + public int MaxEntities = 3; + + [DataField] + public TimeSpan Delay = TimeSpan.FromSeconds(10f); + + [DataField] + public float Radius = 3f; + + [DataField] + [AutoPausedField] + public TimeSpan NextTimeTeleport = TimeSpan.Zero; + + [DataField("arrivalSound")] + public SoundSpecifier ArrivalSound = new SoundPathSpecifier("/Audio/Effects/teleport_arrival.ogg"); + + [DataField("departureSound")] + public SoundSpecifier DepartureSound = new SoundPathSpecifier("/Audio/Effects/teleport_departure.ogg"); +} diff --git a/Content.Shared/_CP14/MagicSpell/Spells/CP14SpellDemiplaneInfiltration.cs b/Content.Shared/_CP14/MagicSpell/Spells/CP14SpellDemiplaneInfiltration.cs new file mode 100644 index 0000000000..6a87d5fa67 --- /dev/null +++ b/Content.Shared/_CP14/MagicSpell/Spells/CP14SpellDemiplaneInfiltration.cs @@ -0,0 +1,26 @@ +using Content.Shared._CP14.Demiplane; +using Content.Shared._CP14.Demiplane.Components; + +namespace Content.Shared._CP14.MagicSpell.Spells; + +public sealed partial class CP14SpellDemiplaneInfiltration : CP14SpellEffect +{ + public override void Effect(EntityManager entManager, CP14SpellEffectBaseArgs args) + { + if (args.User is null) + return; + + if (!entManager.TryGetComponent(args.Target, out var rift)) + return; + + if (rift.Demiplane is null) + return; + + if (!entManager.TryGetComponent(rift.Demiplane.Value, out var demiplane)) + return; + + var demiplaneSystem = entManager.System(); + + demiplaneSystem.TryTeleportIntoDemiplane((rift.Demiplane.Value, demiplane), args.User.Value); + } +} diff --git a/Resources/Locale/en-US/_CP14/loadouts/loadout.ftl b/Resources/Locale/en-US/_CP14/loadouts/loadout.ftl index 3bd93f6065..367aa8e994 100644 --- a/Resources/Locale/en-US/_CP14/loadouts/loadout.ftl +++ b/Resources/Locale/en-US/_CP14/loadouts/loadout.ftl @@ -52,4 +52,5 @@ cp14-loadout-bank-shoes = Bank Employee shoes cp14-loadout-guildmaster-cloak = Guildmaster cloak cp14-loadout-guildmaster-shirt = Guildmaster shirt cp14-loadout-guildmaster-pants = Guildmaster pants -cp14-loadout-guildmaster-shoes = Guildmaster shoes \ No newline at end of file +cp14-loadout-guildmaster-shoes = Guildmaster shoes +cp14-loadout-guildmaster-spells = Guildmaster spells \ No newline at end of file diff --git a/Resources/Locale/en-US/_CP14/magicTypes/magic.ftl b/Resources/Locale/en-US/_CP14/magicTypes/magic.ftl index 990907879e..d10e75a3e5 100644 --- a/Resources/Locale/en-US/_CP14/magicTypes/magic.ftl +++ b/Resources/Locale/en-US/_CP14/magicTypes/magic.ftl @@ -5,8 +5,6 @@ cp14-magic-type-healing = Healing cp14-magic-type-light = Light cp14-magic-type-darkness = Darkness cp14-magic-type-meta = Metamagic -cp14-magic-type-gate = Gate -cp14-magic-type-movement = Movement cp14-magic-type-necro = Necromancy cp14-magic-manacost = Manacost diff --git a/Resources/Locale/ru-RU/_CP14/loadouts/loadout.ftl b/Resources/Locale/ru-RU/_CP14/loadouts/loadout.ftl index 60677bec31..7289919e0a 100644 --- a/Resources/Locale/ru-RU/_CP14/loadouts/loadout.ftl +++ b/Resources/Locale/ru-RU/_CP14/loadouts/loadout.ftl @@ -54,4 +54,5 @@ cp14-loadout-bank-shoes = Ботинки работника банка cp14-loadout-guildmaster-cloak = Накидка гильдмастера cp14-loadout-guildmaster-shirt = Рубашка гильдмастера cp14-loadout-guildmaster-pants = Штаны гильдмастера -cp14-loadout-guildmaster-shoes = Ботинки гильдмастера \ No newline at end of file +cp14-loadout-guildmaster-shoes = Ботинки гильдмастера +cp14-loadout-guildmaster-spells = Заклинания гильдмастера \ No newline at end of file diff --git a/Resources/Locale/ru-RU/_CP14/magicTypes/magic.ftl b/Resources/Locale/ru-RU/_CP14/magicTypes/magic.ftl index dae3b2fe4f..3766d6d9da 100644 --- a/Resources/Locale/ru-RU/_CP14/magicTypes/magic.ftl +++ b/Resources/Locale/ru-RU/_CP14/magicTypes/magic.ftl @@ -5,8 +5,6 @@ cp14-magic-type-healing = Исцеление cp14-magic-type-light = Свет cp14-magic-type-darkness = Тьма cp14-magic-type-meta = Метамагия -cp14-magic-type-gate = Пространство -cp14-magic-type-movement = Движение cp14-magic-type-necro = Некромантия cp14-magic-manacost = Затраты маны diff --git a/Resources/Prototypes/_CP14/Entities/Actions/Spells/Darkness/T0_demiplane_infiltration.yml b/Resources/Prototypes/_CP14/Entities/Actions/Spells/Darkness/T0_demiplane_infiltration.yml new file mode 100644 index 0000000000..3ef4a3b31b --- /dev/null +++ b/Resources/Prototypes/_CP14/Entities/Actions/Spells/Darkness/T0_demiplane_infiltration.yml @@ -0,0 +1,63 @@ +- type: entity + id: CP14ActionSpellDemiplaneInfiltration + name: Demiplane infiltration + description: Mastery of demiplane space magic allows you to reach inside any open demiplanes + components: + - type: Sprite + sprite: _CP14/Effects/Magic/spells_icons.rsi + state: rift_arrow + - type: CP14MagicEffectManaCost + manaCost: 50 + - type: CP14MagicEffect + magicType: Darkness + telegraphyEffects: + - !type:CP14SpellSpawnEntityOnTarget + spawns: + - CP14ImpactEffectShadowStep + effects: + - !type:CP14SpellDemiplaneInfiltration + - type: CP14MagicEffectVerbalAspect + startSpeech: "Ego intrabo et..." + endSpeech: "salvabo socios meos" + - type: CP14MagicEffectCastingVisual + proto: CP14RuneDemiplaneInfiltration + - type: EntityTargetAction + whitelist: + components: + - CP14DemiplaneRift + canTargetSelf: false + checkCanAccess: true + range: 3 + itemIconStyle: BigAction + sound: !type:SoundPathSpecifier + path: /Audio/Magic/rumble.ogg + icon: + sprite: _CP14/Effects/Magic/spells_icons.rsi + state: rift_arrow + event: !type:CP14DelayedEntityTargetActionEvent + cooldown: 50 + castDelay: 5 + entityDistance: 3 + breakOnMove: true + +- type: entity + id: CP14RuneDemiplaneInfiltration + parent: CP14BaseMagicRune + categories: [ HideSpawnMenu ] + components: + - type: PointLight + color: "#5e427e" + - type: Sprite + layers: + - state: sun + color: "#5e427e" + shader: unshaded + +- type: entity + parent: CP14BaseSpellScrollDarkness + id: CP14SpellScrollDemiplaneInfiltration + name: demiplane infiltration spell scroll + components: + - type: CP14SpellStorage + spells: + - CP14ActionSpellDemiplaneInfiltration \ No newline at end of file diff --git a/Resources/Prototypes/_CP14/Entities/Actions/Spells/Darkness/T0_monolith_warp.yml b/Resources/Prototypes/_CP14/Entities/Actions/Spells/Darkness/T0_monolith_warp.yml new file mode 100644 index 0000000000..5a5857c21c --- /dev/null +++ b/Resources/Prototypes/_CP14/Entities/Actions/Spells/Darkness/T0_monolith_warp.yml @@ -0,0 +1,75 @@ +- type: entity + id: CP14ActionSpellMonolithWarp + name: Monolith warp + description: You open a dimensional rift that transports the creatures around it to the demiplane link crystal + components: + - type: Sprite + sprite: _CP14/Effects/Magic/spells_icons.rsi + state: demi_arrow + - type: CP14MagicEffectManaCost + manaCost: 50 + - type: CP14MagicEffect + magicType: Darkness + telegraphyEffects: + - !type:CP14SpellSpawnEntityOnTarget + spawns: + - CP14ImpactEffectShadowStep + effects: + - !type:CP14SpellSpawnEntityOnTarget + spawns: + - CP14GuildmaterTimedTeleport + - type: CP14MagicEffectVerbalAspect + startSpeech: "Crystal, ego..." + endSpeech: "vado ad vos" + - type: CP14MagicEffectCastingVisual + proto: CP14RuneDemiplaneInfiltration + - type: EntityWorldTargetAction + range: 7 + itemIconStyle: BigAction + sound: !type:SoundPathSpecifier + path: /Audio/Magic/rumble.ogg + icon: + sprite: _CP14/Effects/Magic/spells_icons.rsi + state: demi_arrow + event: !type:CP14DelayedEntityWorldTargetActionEvent + cooldown: 50 + +- type: entity + id: CP14GuildmaterTimedTeleport + categories: [ ForkFiltered ] + name: pulsating demiplane rift + description: This rift is gaining strength, and will trap all nearby creatures in a demiplane in a second! + components: + - type: Transform + anchored: True + - type: Clickable + - type: Physics + canCollide: false + bodyType: Static + - type: Sprite + drawdepth: Effects + sprite: /Textures/_CP14/Structures/Dungeon/demiplan_rift.rsi + layers: + - state: pulse + shader: unshaded + - type: PointLight + radius: 8 + color: "#5e427e" + - type: SingularityDistortion + falloffPower: 1.5 + intensity: 50 + - type: AmbientSound + volume: -3 + range: 7 + sound: + path: /Audio/Ambience/Objects/gravity_gen_hum.ogg + - type: CP14MonolithTimedPassway + +- type: entity + parent: CP14BaseSpellScrollDarkness + id: CP14SpellScrollMonolithWarp + name: demiplane link spell scroll + components: + - type: CP14SpellStorage + spells: + - CP14ActionSpellMonolithWarp \ No newline at end of file diff --git a/Resources/Prototypes/_CP14/Entities/Actions/Spells/Movement/T0_shadow_grab.yml b/Resources/Prototypes/_CP14/Entities/Actions/Spells/Darkness/T1_shadow_grab.yml similarity index 96% rename from Resources/Prototypes/_CP14/Entities/Actions/Spells/Movement/T0_shadow_grab.yml rename to Resources/Prototypes/_CP14/Entities/Actions/Spells/Darkness/T1_shadow_grab.yml index 81424f1577..f0831ca93a 100644 --- a/Resources/Prototypes/_CP14/Entities/Actions/Spells/Movement/T0_shadow_grab.yml +++ b/Resources/Prototypes/_CP14/Entities/Actions/Spells/Darkness/T1_shadow_grab.yml @@ -9,7 +9,7 @@ - type: CP14MagicEffectManaCost manaCost: 10 - type: CP14MagicEffect - magicType: Movement + magicType: Darkness telegraphyEffects: - !type:CP14SpellSpawnEntityOnTarget spawns: @@ -54,7 +54,7 @@ color: "#5e427e" - type: entity - parent: CP14BaseSpellScrollMovement + parent: CP14BaseSpellScrollDarkness id: CP14SpellScrollShadowGrab name: shadow grab spell scroll components: diff --git a/Resources/Prototypes/_CP14/Entities/Actions/Spells/Gate/T2_shadow_step.yml b/Resources/Prototypes/_CP14/Entities/Actions/Spells/Darkness/T2_shadow_step.yml similarity index 94% rename from Resources/Prototypes/_CP14/Entities/Actions/Spells/Gate/T2_shadow_step.yml rename to Resources/Prototypes/_CP14/Entities/Actions/Spells/Darkness/T2_shadow_step.yml index aa17fe2d74..a08a333114 100644 --- a/Resources/Prototypes/_CP14/Entities/Actions/Spells/Gate/T2_shadow_step.yml +++ b/Resources/Prototypes/_CP14/Entities/Actions/Spells/Darkness/T2_shadow_step.yml @@ -11,7 +11,7 @@ - type: CP14MagicEffectManaCost manaCost: 20 - type: CP14MagicEffect - magicType: Gate + magicType: Darkness telegraphyEffects: - !type:CP14SpellSpawnEntityOnTarget spawns: @@ -23,7 +23,6 @@ - type: CP14MagicEffectSomaticAspect - type: EntityWorldTargetAction range: 7 - checkCanAccess: false itemIconStyle: BigAction sound: !type:SoundPathSpecifier path: /Audio/Magic/rumble.ogg @@ -46,7 +45,7 @@ color: "#5e427e" - type: entity - parent: CP14BaseSpellScrollGate + parent: CP14BaseSpellScrollDarkness id: CP14SpellScrollShadowStep name: shadow step spell scroll components: diff --git a/Resources/Prototypes/_CP14/Entities/Actions/Spells/scrolls.yml b/Resources/Prototypes/_CP14/Entities/Actions/Spells/scrolls.yml index 8673a81d32..a6e07394bd 100644 --- a/Resources/Prototypes/_CP14/Entities/Actions/Spells/scrolls.yml +++ b/Resources/Prototypes/_CP14/Entities/Actions/Spells/scrolls.yml @@ -87,18 +87,6 @@ shader: unshaded color: "#d9741c" -- type: entity - abstract: true - id: CP14BaseSpellScrollGate - parent: CP14BaseSpellScroll - components: - - type: Sprite - layers: - - state: paper_filled - - state: magic - shader: unshaded - color: "#32597d" - - type: entity abstract: true id: CP14BaseSpellScrollHealing @@ -137,7 +125,7 @@ - type: entity abstract: true - id: CP14BaseSpellScrollMovement + id: CP14BaseSpellScrollDarkness parent: CP14BaseSpellScroll components: - type: Sprite @@ -145,7 +133,7 @@ - state: paper_filled - state: magic shader: unshaded - color: "#63ceff" + color: "#5e427e" - type: entity abstract: true diff --git a/Resources/Prototypes/_CP14/Entities/Clothing/Cloak/Roles/guard_commander.yml b/Resources/Prototypes/_CP14/Entities/Clothing/Cloak/Roles/guard_commander.yml index 1303433161..69bbf90b28 100644 --- a/Resources/Prototypes/_CP14/Entities/Clothing/Cloak/Roles/guard_commander.yml +++ b/Resources/Prototypes/_CP14/Entities/Clothing/Cloak/Roles/guard_commander.yml @@ -7,14 +7,4 @@ - type: Sprite sprite: _CP14/Clothing/Cloak/Roles/Guard/guard_commander_cloak.rsi - type: Clothing - sprite: _CP14/Clothing/Cloak/Roles/Guard/guard_commander_cloak.rsi - - type: Armor - modifiers: - coefficients: - Blunt: 0.6 - Slash: 0.6 - Piercing: 0.6 - Heat: 0.7 - - type: ClothingSpeedModifier - walkModifier: 0.9 - sprintModifier: 0.9 \ No newline at end of file + sprite: _CP14/Clothing/Cloak/Roles/Guard/guard_commander_cloak.rsi \ No newline at end of file diff --git a/Resources/Prototypes/_CP14/Loadouts/Jobs/guildmaster.yml b/Resources/Prototypes/_CP14/Loadouts/Jobs/guildmaster.yml index 3df029e356..366dbe30d2 100644 --- a/Resources/Prototypes/_CP14/Loadouts/Jobs/guildmaster.yml +++ b/Resources/Prototypes/_CP14/Loadouts/Jobs/guildmaster.yml @@ -47,4 +47,27 @@ id: CP14GuildmasterShoes name: cp14-loadout-guildmaster-shoes loadouts: - - CP14ShoesAristocraticBlack \ No newline at end of file + - CP14ShoesAristocraticBlack + +# Spells + +- type: loadoutGroup + id: CP14GuildmasterSpells + name: cp14-loadout-guildmaster-spells + minLimit: 2 + maxLimit: 2 + loadouts: + - CP14ActionSpellDemiplaneInfiltration + - CP14ActionSpellMonolithWarp + +- type: loadout + id: CP14ActionSpellDemiplaneInfiltration + dummyEntity: CP14ActionSpellDemiplaneInfiltration + actions: + - CP14ActionSpellDemiplaneInfiltration + +- type: loadout + id: CP14ActionSpellMonolithWarp + dummyEntity: CP14ActionSpellMonolithWarp + actions: + - CP14ActionSpellMonolithWarp \ No newline at end of file diff --git a/Resources/Prototypes/_CP14/Loadouts/role_loadouts.yml b/Resources/Prototypes/_CP14/Loadouts/role_loadouts.yml index ea09f61a3c..465c7f9f4e 100644 --- a/Resources/Prototypes/_CP14/Loadouts/role_loadouts.yml +++ b/Resources/Prototypes/_CP14/Loadouts/role_loadouts.yml @@ -126,6 +126,7 @@ - CP14GuildmasterShoes - CP14GeneralBack - CP14GeneralTrinkets + - CP14GuildmasterSpells - type: roleLoadout id: JobCP14Banker diff --git a/Resources/Prototypes/_CP14/MagicTypes/magic.yml b/Resources/Prototypes/_CP14/MagicTypes/magic.yml index 63396e38aa..04eca1e96f 100644 --- a/Resources/Prototypes/_CP14/MagicTypes/magic.yml +++ b/Resources/Prototypes/_CP14/MagicTypes/magic.yml @@ -8,11 +8,6 @@ name: cp14-magic-type-fire color: "#d9741c" -- type: magicType - id: Gate - name: cp14-magic-type-gate - color: "#32597d" - - type: magicType id: Healing name: cp14-magic-type-healing @@ -33,11 +28,6 @@ name: cp14-magic-type-meta color: "#dcffdb" -- type: magicType - id: Movement - name: cp14-magic-type-movement - color: "#63ceff" - - type: magicType id: Water name: cp14-magic-type-water diff --git a/Resources/Textures/_CP14/Effects/Magic/spells_icons.rsi/demi_arrow.png b/Resources/Textures/_CP14/Effects/Magic/spells_icons.rsi/demi_arrow.png new file mode 100644 index 0000000000000000000000000000000000000000..1a3dc522f23509828e9afa6fbeeee7b093795548 GIT binary patch literal 703 zcmV;w0zmzVP)Px%c}YY;R9J=Wmp^C|Q5?s=Cyt_GgQ$T>h~$yM(j`MlAUQ)7E_5j7CJ8u52MZ#Y zZbzVMLA2)}bO{x*Uls|eV(Fhiw?L^`TB(29q74*NI%IKr4&goTF1gEH?_8wc>GIz1 zz3=Du`@MHufK&ZXDo?Lcw` z)TQAe0Km}rWg#RLg>F_A)EYU2g9P7ye(qVHjaNX#1VU2L@^x%k0cI{hNX;*;VKgrz8?PA3&dguG zylRMd1poj$vs+YvkYW&xh(+Dy#@MKI05lp l?dl=jncZ^zkLOfQ^#{ov0~y%w*hv5Y002ovPDHLkV1ibOJ!Jp@ literal 0 HcmV?d00001 diff --git a/Resources/Textures/_CP14/Effects/Magic/spells_icons.rsi/meta.json b/Resources/Textures/_CP14/Effects/Magic/spells_icons.rsi/meta.json index 14bdc67b34..62094c7bc0 100644 --- a/Resources/Textures/_CP14/Effects/Magic/spells_icons.rsi/meta.json +++ b/Resources/Textures/_CP14/Effects/Magic/spells_icons.rsi/meta.json @@ -5,7 +5,7 @@ "y": 32 }, "license": "All right reserved", - "copyright": "Created by .kreks., cure_poison, cure_burn, mana_gift, water creation, plant_growth, beer creation, sprint, tiefling_revenge, signal_light_blue, signal_light_red, signal_light_yellow and resurrection by TheShuEd", + "copyright": "Created by .kreks., cure_poison, cure_burn, mana_gift, water creation, plant_growth, beer creation, sprint, tiefling_revenge, demi_arrow, rift_shield, rift_arrow, signal_light_blue, signal_light_red, signal_light_yellow and resurrection by TheShuEd", "states": [ { "name": "beer_creation" @@ -19,6 +19,9 @@ { "name": "cure_wounds" }, + { + "name": "demi_arrow" + }, { "name": "earth_wall" }, @@ -49,6 +52,12 @@ { "name": "resurrection" }, + { + "name": "rift_arrow" + }, + { + "name": "rift_shield" + }, { "name": "shadow_grab" }, diff --git a/Resources/Textures/_CP14/Effects/Magic/spells_icons.rsi/rift_arrow.png b/Resources/Textures/_CP14/Effects/Magic/spells_icons.rsi/rift_arrow.png new file mode 100644 index 0000000000000000000000000000000000000000..c3d32270ba68fe11d615b54687663a3295ba3da3 GIT binary patch literal 621 zcmV-z0+RiSP)Px%CrLy>R9J=GS3PU$P#Atv?k}jNU>!tCZ|G9{0|JJMW9d?VLbJFCy=$k7W5LBG zF5Pu0j-pK=KcJREh$51~D@fD7aPCmva17=oC)SqsnGQK0?{l8_>je1e=oka*%M6q8 zPbI+{27tQWW+D>5KGHA%RL!zZhPB^^u*Xy3K4n{m376)X(lG`W&4-a%fpvy!6%8YA z0ed_}lG~?7*vFHG!~EWo)%7;JIQqlrTX^j{NGm{clGMd~7OlRG*_{gjDCAVsDjHgS zJJESNvIN3t^=-`N?#j2_lMI^HmC*O82~^Fp-Z2JN)4Ey-VE5Gl0MsfP{@&gvK5ruh zDA?Rr2kPE23ON-365l>GfhZMZe7_L^9>shXz`F}Z-a>l+#sqdxGQpT!@~H#>K;1h| zy?0{*551Ql_-1n#_IQe}F=P}cTPI+Tr>Ir5)caEth{^=n9w02mB;jfPphUrzIp0@k zj!N>#TLg8Wn9s&`Kpv3_kZ}b{snxevs#~}p(2Z}dFFvjgRL!zpHOo2!d!*EQd-hk> zkn!2vMIoo+?b(;Af*R{6iXlpcoow00UPx%L`g(JR9J=Gm$7QwP!xtgl{`U`CGlV!fkcKT-K{|+cr0C-M~D_LfzCxPnFCp} zI7@eX2_1u74e|rD6oLe{$zZyqeFb%>j!+#*zPdJr_FrT!^7+4W@44q*!T+d%H|nXr zYb*~8y>YTpnkBvMpFHzi8(`p#diks`+}lLPSH<3{3aa4krq4i(9m^z)r}BSS;+*wQ z3*(gn)G?mKGvBdH9LoftZ5@0_-w9R)dZA$~frCjr^ItXheaRZgo~o)d17gf1p84I5 z!^!KHTwdKVUqrMTHpk695)$R?>j1c<89SCqx8rbgA2R(;iUZh$B0pO;^l_`390HE7(xV*Yk_0$5$6vk5=%OrYwz}`Ki)v$qj zm9GmBP%sO!_PVM)0|3X(J>d5ee0lt?ZLSTleYBJPmL>VC008#xp|Y9KSuXZ-%%o6YxusyYyJIRSru{ZZKktJc31psEgJ-{((2 z6_v#-U4nvH2uKT1AkyPkJNrt265gMg8%>k literal 0 HcmV?d00001