diff --git a/Content.Client/Lobby/UI/Loadouts/LoadoutContainer.xaml.cs b/Content.Client/Lobby/UI/Loadouts/LoadoutContainer.xaml.cs index 36f0772d78..2ab40fb37d 100644 --- a/Content.Client/Lobby/UI/Loadouts/LoadoutContainer.xaml.cs +++ b/Content.Client/Lobby/UI/Loadouts/LoadoutContainer.xaml.cs @@ -36,17 +36,18 @@ public sealed partial class LoadoutContainer : BoxContainer if (_protoManager.TryIndex(proto, out var loadProto)) { - var ent = _entManager.System().GetFirstOrNull(loadProto); + var ent = loadProto.DummyEntity ?? _entManager.System().GetFirstOrNull(loadProto); - if (ent != null) - { - _entity = _entManager.SpawnEntity(ent, MapCoordinates.Nullspace); - Sprite.SetEntity(_entity); + if (ent == null) + return; - var spriteTooltip = new Tooltip(); - spriteTooltip.SetMessage(FormattedMessage.FromUnformatted(_entManager.GetComponent(_entity.Value).EntityDescription)); - TooltipSupplier = _ => spriteTooltip; - } + _entity = _entManager.SpawnEntity(ent, MapCoordinates.Nullspace); + Sprite.SetEntity(_entity); + + var spriteTooltip = new Tooltip(); + spriteTooltip.SetMessage(FormattedMessage.FromUnformatted(_entManager.GetComponent(_entity.Value).EntityDescription)); + + TooltipSupplier = _ => spriteTooltip; } } diff --git a/Content.Server/Traits/TraitSystem.cs b/Content.Server/Traits/TraitSystem.cs index 600555b37b..38b6d2df47 100644 --- a/Content.Server/Traits/TraitSystem.cs +++ b/Content.Server/Traits/TraitSystem.cs @@ -16,7 +16,6 @@ public sealed class TraitSystem : EntitySystem [Dependency] private readonly IPrototypeManager _prototypeManager = default!; [Dependency] private readonly SharedHandsSystem _sharedHandsSystem = default!; [Dependency] private readonly EntityWhitelistSystem _whitelistSystem = default!; - [Dependency] private readonly ActionsSystem _action = default!; //CP14 public override void Initialize() { @@ -48,13 +47,6 @@ public sealed class TraitSystem : EntitySystem _whitelistSystem.IsBlacklistPass(traitPrototype.Blacklist, args.Mob)) continue; - // CP14 start - add all spells to player mind - foreach (var spell in traitPrototype.Actions) - { - _action.AddAction(args.Mob, spell); - } - //CP14 end - // Add all components required by the prototype if (traitPrototype.Components.Count > 0) //CP14 added check EntityManager.AddComponents(args.Mob, traitPrototype.Components, false); diff --git a/Content.Shared/Clothing/LoadoutSystem.cs b/Content.Shared/Clothing/LoadoutSystem.cs index 2a686efd4f..93b0abfd82 100644 --- a/Content.Shared/Clothing/LoadoutSystem.cs +++ b/Content.Shared/Clothing/LoadoutSystem.cs @@ -90,6 +90,9 @@ public sealed class LoadoutSystem : EntitySystem public string GetName(LoadoutPrototype loadout) { + if (loadout.DummyEntity is not null && _protoMan.TryIndex(loadout.DummyEntity, out var proto)) + return proto.Name; + if (_protoMan.TryIndex(loadout.StartingGear, out var gear)) { return GetName(gear); diff --git a/Content.Shared/Damage/Systems/PassiveDamageSystem.cs b/Content.Shared/Damage/Systems/PassiveDamageSystem.cs index e750863e24..216667189f 100644 --- a/Content.Shared/Damage/Systems/PassiveDamageSystem.cs +++ b/Content.Shared/Damage/Systems/PassiveDamageSystem.cs @@ -11,10 +11,14 @@ public sealed class PassiveDamageSystem : EntitySystem [Dependency] private readonly DamageableSystem _damageable = default!; [Dependency] private readonly IGameTiming _timing = default!; + private EntityQuery _mobStateQuery; //CP14 + public override void Initialize() { base.Initialize(); + _mobStateQuery = GetEntityQuery(); //CP14 + SubscribeLocalEvent(OnPendingMapInit); } @@ -30,8 +34,8 @@ public sealed class PassiveDamageSystem : EntitySystem var curTime = _timing.CurTime; // Go through every entity with the component - var query = EntityQueryEnumerator(); - while (query.MoveNext(out var uid, out var comp, out var damage, out var mobState)) + var query = EntityQueryEnumerator(); + while (query.MoveNext(out var uid, out var comp, out var damage /*, out var mobState*/)) { // Make sure they're up for a damage tick if (comp.NextDamage > curTime) @@ -43,12 +47,27 @@ public sealed class PassiveDamageSystem : EntitySystem // Set the next time they can take damage comp.NextDamage = curTime + TimeSpan.FromSeconds(1f); - // Damage them - foreach (var allowedState in comp.AllowedStates) + //CP14 logic replacement + // + //// Damage them + //foreach (var allowedState in comp.AllowedStates) + //{ + // if(allowedState == mobState.CurrentState) + // _damageable.TryChangeDamage(uid, comp.Damage, true, false, damage); + //} + if (comp.AllowedStates.Count > 0 && _mobStateQuery.TryComp(uid, out var mobState)) { - if(allowedState == mobState.CurrentState) - _damageable.TryChangeDamage(uid, comp.Damage, true, false, damage); + foreach (var allowedState in comp.AllowedStates) + { + if(allowedState == mobState.CurrentState) + _damageable.TryChangeDamage(uid, comp.Damage, true, false, damage); + } } + else + { + _damageable.TryChangeDamage(uid, comp.Damage, true, false, damage); + } + //CP14 logic replacement end } } } diff --git a/Content.Shared/Preferences/Loadouts/LoadoutPrototype.cs b/Content.Shared/Preferences/Loadouts/LoadoutPrototype.cs index a570b61d89..5c3a68245a 100644 --- a/Content.Shared/Preferences/Loadouts/LoadoutPrototype.cs +++ b/Content.Shared/Preferences/Loadouts/LoadoutPrototype.cs @@ -17,6 +17,12 @@ public sealed partial class LoadoutPrototype : IPrototype, IEquipmentLoadout * You can either use an existing StartingGearPrototype or specify it inline to avoid bloating yaml. */ + /// + /// An entity whose sprite, name and description is used for display in the interface. If null, tries to get the proto of the item from gear (if it is a single item). + /// + [DataField] + public EntProtoId? DummyEntity; + [DataField] public ProtoId? StartingGear; @@ -38,4 +44,10 @@ public sealed partial class LoadoutPrototype : IPrototype, IEquipmentLoadout /// [DataField] public Dictionary> Storage { get; set; } = new(); + + /// + /// CP14 - it is possible to give action spells or spells to players who have taken this loadout + /// + [DataField] + public List Actions { get; set; } = new(); } diff --git a/Content.Shared/Station/SharedStationSpawningSystem.cs b/Content.Shared/Station/SharedStationSpawningSystem.cs index ad264cd22a..4a3cc1b06b 100644 --- a/Content.Shared/Station/SharedStationSpawningSystem.cs +++ b/Content.Shared/Station/SharedStationSpawningSystem.cs @@ -1,4 +1,5 @@ using System.Linq; +using Content.Shared.Actions; using Content.Shared.Hands.Components; using Content.Shared.Hands.EntitySystems; using Content.Shared.Inventory; @@ -22,6 +23,7 @@ public abstract class SharedStationSpawningSystem : EntitySystem [Dependency] private readonly MetaDataSystem _metadata = default!; [Dependency] private readonly SharedStorageSystem _storage = default!; [Dependency] private readonly SharedTransformSystem _xformSystem = default!; + [Dependency] private readonly SharedActionsSystem _action = default!; //CP14 private EntityQuery _handsQuery; private EntityQuery _inventoryQuery; @@ -82,6 +84,15 @@ public abstract class SharedStationSpawningSystem : EntitySystem { EquipStartingGear(entity, loadout.StartingGear, raiseEvent); EquipStartingGear(entity, (IEquipmentLoadout) loadout, raiseEvent); + CP14EquipStartingActions(entity, loadout); + } + + private void CP14EquipStartingActions(EntityUid entity, LoadoutPrototype loadout) + { + foreach (var action in loadout.Actions) + { + _action.AddAction(entity, action); + } } /// diff --git a/Content.Shared/Traits/TraitPrototype.cs b/Content.Shared/Traits/TraitPrototype.cs index f699b80b15..f556918a2a 100644 --- a/Content.Shared/Traits/TraitPrototype.cs +++ b/Content.Shared/Traits/TraitPrototype.cs @@ -60,10 +60,4 @@ public sealed partial class TraitPrototype : IPrototype /// [DataField] public ProtoId? Category; - - /// - /// CP14 - adding permanent spells into players mind - /// - [DataField] - public List Actions = new(); } diff --git a/Content.Shared/_CP14/MagicSpell/CP14SharedMagicSystem.Actions.cs b/Content.Shared/_CP14/MagicSpell/CP14SharedMagicSystem.Actions.cs index 0e8d8ac4df..9e2408c54f 100644 --- a/Content.Shared/_CP14/MagicSpell/CP14SharedMagicSystem.Actions.cs +++ b/Content.Shared/_CP14/MagicSpell/CP14SharedMagicSystem.Actions.cs @@ -48,7 +48,7 @@ public abstract partial class CP14SharedMagicSystem RaiseLocalEvent(args.Action, ref evStart); var spellArgs = - new CP14SpellEffectBaseArgs(args.Performer, args.Performer, Transform(args.Performer).Coordinates); + new CP14SpellEffectBaseArgs(args.Performer, magicEffect.SpellStorage, args.Performer, Transform(args.Performer).Coordinates); CastTelegraphy((args.Action, magicEffect), spellArgs); @@ -93,7 +93,7 @@ public abstract partial class CP14SharedMagicSystem RaiseLocalEvent(args.Action, ref evStart); var spellArgs = - new CP14SpellEffectBaseArgs(args.Performer, args.Entity, args.Coords); + new CP14SpellEffectBaseArgs(args.Performer, magicEffect.SpellStorage, args.Entity, args.Coords); CastTelegraphy((args.Action, magicEffect), spellArgs); @@ -136,7 +136,7 @@ public abstract partial class CP14SharedMagicSystem RaiseLocalEvent(args.Action, ref evStart); var spellArgs = - new CP14SpellEffectBaseArgs(args.Performer, args.Target, Transform(args.Target).Coordinates); + new CP14SpellEffectBaseArgs(args.Performer, magicEffect.SpellStorage, args.Target, Transform(args.Target).Coordinates); CastTelegraphy((args.Action, magicEffect), spellArgs); @@ -158,7 +158,7 @@ public abstract partial class CP14SharedMagicSystem if (args.Cancelled || args.Handled) return; - CastSpell(ent, new CP14SpellEffectBaseArgs(args.User, args.User, Transform(args.User).Coordinates), args.Cooldown ?? 0); + CastSpell(ent, new CP14SpellEffectBaseArgs(args.User, args.Used, args.User, Transform(args.User).Coordinates), args.Cooldown ?? 0); args.Handled = true; } @@ -178,7 +178,7 @@ public abstract partial class CP14SharedMagicSystem var targetPos = EntityManager.GetCoordinates(args.TargetPosition); EntityManager.TryGetEntity(args.TargetEntity, out var targetEnt); - CastSpell(ent, new CP14SpellEffectBaseArgs(args.User, targetEnt, targetPos), args.Cooldown ?? 0); + CastSpell(ent, new CP14SpellEffectBaseArgs(args.User, args.Used, targetEnt, targetPos), args.Cooldown ?? 0); args.Handled = true; } @@ -198,7 +198,7 @@ public abstract partial class CP14SharedMagicSystem EntityCoordinates? targetPos = null; if (targetEnt is not null) { targetPos = Transform(targetEnt.Value).Coordinates; } - CastSpell(ent, new CP14SpellEffectBaseArgs(args.User, targetEnt, targetPos), args.Cooldown ?? 0); + CastSpell(ent, new CP14SpellEffectBaseArgs(args.User, args.Used, targetEnt, targetPos), args.Cooldown ?? 0); args.Handled = true; } diff --git a/Content.Shared/_CP14/MagicSpell/Spells/CP14SpellConsumeMana.cs b/Content.Shared/_CP14/MagicSpell/Spells/CP14SpellConsumeMana.cs new file mode 100644 index 0000000000..a88062fc93 --- /dev/null +++ b/Content.Shared/_CP14/MagicSpell/Spells/CP14SpellConsumeMana.cs @@ -0,0 +1,61 @@ +using Content.Shared._CP14.MagicEnergy; +using Content.Shared._CP14.MagicEnergy.Components; +using Content.Shared.FixedPoint; + +namespace Content.Shared._CP14.MagicSpell.Spells; + +public sealed partial class CP14SpellConsumeManaEffect : CP14SpellEffect +{ + [DataField] + public FixedPoint2 Mana = 0; + + [DataField] + public bool Safe = false; + + [DataField] + public float LossMultiplier = 0.8f; + + public override void Effect(EntityManager entManager, CP14SpellEffectBaseArgs args) + { + if (args.Target is null) + return; + + var targetEntity = args.Target.Value; + + if (!entManager.TryGetComponent(targetEntity, out var magicContainer)) + return; + + var magicEnergy = entManager.System(); + + var currentMana = magicContainer.Energy; + FixedPoint2 manaBuffer = MathF.Min(Mana.Float(), currentMana.Float()) * LossMultiplier; + + if (!magicEnergy.TryConsumeEnergy(targetEntity, Mana, magicContainer, Safe)) + return; + + //OK, we consume mana (or health?) from target, and now we put it in used object or caster + + + //First - used object + if (manaBuffer > 0 && entManager.TryGetComponent(args.Used, out var usedMagicStorage)) + { + var freeSpace = usedMagicStorage.MaxEnergy - usedMagicStorage.Energy; + if (freeSpace < manaBuffer) + { + magicEnergy.ChangeEnergy(args.Used.Value, usedMagicStorage, freeSpace, true); + manaBuffer -= freeSpace; + } + else + { + magicEnergy.ChangeEnergy(args.Used.Value, usedMagicStorage, manaBuffer, true); + manaBuffer = 0; + } + } + + //Second - action user + if (manaBuffer > 0 && entManager.TryGetComponent(args.User, out var userMagicStorage)) + { + magicEnergy.ChangeEnergy(args.User.Value, userMagicStorage, manaBuffer, Safe); + } + } +} diff --git a/Content.Shared/_CP14/MagicSpell/Spells/CP14SpellEffect.cs b/Content.Shared/_CP14/MagicSpell/Spells/CP14SpellEffect.cs index c7b034045c..768badd03a 100644 --- a/Content.Shared/_CP14/MagicSpell/Spells/CP14SpellEffect.cs +++ b/Content.Shared/_CP14/MagicSpell/Spells/CP14SpellEffect.cs @@ -13,12 +13,14 @@ public abstract partial class CP14SpellEffect public record class CP14SpellEffectBaseArgs { public EntityUid? User; + public EntityUid? Used; public EntityUid? Target; public EntityCoordinates? Position; - public CP14SpellEffectBaseArgs(EntityUid? user, EntityUid? target, EntityCoordinates? position) + public CP14SpellEffectBaseArgs(EntityUid? user, EntityUid? used, EntityUid? target, EntityCoordinates? position) { User = user; + Used = used; Target = target; Position = position; } diff --git a/Resources/Locale/en-US/_CP14/loadouts/loadout.ftl b/Resources/Locale/en-US/_CP14/loadouts/loadout.ftl index ac3df01699..4ed4c38dc2 100644 --- a/Resources/Locale/en-US/_CP14/loadouts/loadout.ftl +++ b/Resources/Locale/en-US/_CP14/loadouts/loadout.ftl @@ -10,6 +10,7 @@ cp14-loadout-general-shirt = Shirt cp14-loadout-general-shoes = Shoes cp14-loadout-general-back = Back cp14-loadout-general-trinkets = Trinkets +cp14-loadout-general-spells = Spells # Alchemist diff --git a/Resources/Locale/en-US/_CP14/traits/trait.ftl b/Resources/Locale/en-US/_CP14/traits/trait.ftl index fc2d30dcf9..1aa92ff174 100644 --- a/Resources/Locale/en-US/_CP14/traits/trait.ftl +++ b/Resources/Locale/en-US/_CP14/traits/trait.ftl @@ -20,14 +20,6 @@ cp14-trait-muted-desc = All you can do is mumble incoherently. The benefits of v cp14-trait-snoring-name = Loud snoring cp14-trait-snoring-desc = It is simply impossible to sleep next to you because you snore terribly loudly at everything. -# Magic spells - -cp14-trait-spell-flamecreation-name = flame creation -cp14-trait-spell-flamecreation-desc = A artificial flame forms in your hand, illuminating your surroundings. You can throw it to use it as a disposable weapon. - -cp14-trait-spell-managift-name = mana gift -cp14-trait-spell-managift-desc = You can transfer a small amount of your magical energy to a target entity or magical object. - # Backgrounds cp14-trait-bg-entertainer-name = Entertainer diff --git a/Resources/Locale/ru-RU/_CP14/loadouts/loadout.ftl b/Resources/Locale/ru-RU/_CP14/loadouts/loadout.ftl index 136a76d4d3..5bb774c419 100644 --- a/Resources/Locale/ru-RU/_CP14/loadouts/loadout.ftl +++ b/Resources/Locale/ru-RU/_CP14/loadouts/loadout.ftl @@ -10,6 +10,7 @@ cp14-loadout-general-shirt = Рубашка cp14-loadout-general-shoes = Обувь cp14-loadout-general-back = Спина cp14-loadout-general-trinkets = Безделушки +cp14-loadout-general-spells = Заклинания # Alchemist diff --git a/Resources/Locale/ru-RU/_CP14/traits/trait.ftl b/Resources/Locale/ru-RU/_CP14/traits/trait.ftl index 4ef41e864c..0d354ccec3 100644 --- a/Resources/Locale/ru-RU/_CP14/traits/trait.ftl +++ b/Resources/Locale/ru-RU/_CP14/traits/trait.ftl @@ -20,14 +20,6 @@ cp14-trait-muted-desc = Все что вы можете - бессвязно м cp14-trait-snoring-name = Громкий храп cp14-trait-snoring-desc = Спать рядом с вами просто невозможно, потому что во все вы жутко громко храпите. -# Magic spells - -cp14-trait-spell-flamecreation-name = создание пламени -cp14-trait-spell-flamecreation-desc = A artificial flame forms in your hand, illuminating your surroundings. You can throw it to use it as a disposable weapon. - -cp14-trait-spell-managift-name = передача маны -cp14-trait-spell-managift-desc = You can transfer a small amount of your magical energy to a target entity or magical object. - # Backgrounds cp14-trait-bg-entertainer-name = Артист diff --git a/Resources/Prototypes/_CP14/Catalog/Fills/crates.yml b/Resources/Prototypes/_CP14/Catalog/Fills/crates.yml index e4f0d59a78..e7707eaa7f 100644 --- a/Resources/Prototypes/_CP14/Catalog/Fills/crates.yml +++ b/Resources/Prototypes/_CP14/Catalog/Fills/crates.yml @@ -44,9 +44,12 @@ children: - !type:GroupSelector children: - - id: CP14Scissors - id: CP14BaseCrowbar + weight: 2 - id: CP14BaseWrench + weight: 2 + - id: CP14Scissors + - id: CP14ManaOperationGlove - id: CP14BaseShovel - id: CP14BaseMop - id: CP14BaseBroom diff --git a/Resources/Prototypes/_CP14/Entities/Actions/Spells/Earth/T1_earth_wall.yml b/Resources/Prototypes/_CP14/Entities/Actions/Spells/Earth/T1_earth_wall.yml index f187df596e..d8be6fbde0 100644 --- a/Resources/Prototypes/_CP14/Entities/Actions/Spells/Earth/T1_earth_wall.yml +++ b/Resources/Prototypes/_CP14/Entities/Actions/Spells/Earth/T1_earth_wall.yml @@ -3,6 +3,9 @@ name: Earth wall description: Raises a solid wall of earth from the bowels. components: + - type: Sprite + sprite: _CP14/Effects/Magic/spells_icons.rsi + state: earth_wall - type: CP14MagicEffectCastSlowdown speedMultiplier: 0.3 - type: CP14MagicEffect diff --git a/Resources/Prototypes/_CP14/Entities/Actions/Spells/Fire/T0_flame_creation.yml b/Resources/Prototypes/_CP14/Entities/Actions/Spells/Fire/T0_flame_creation.yml index e44a814e1e..c3088bb389 100644 --- a/Resources/Prototypes/_CP14/Entities/Actions/Spells/Fire/T0_flame_creation.yml +++ b/Resources/Prototypes/_CP14/Entities/Actions/Spells/Fire/T0_flame_creation.yml @@ -3,6 +3,9 @@ name: Flame creation description: A artificial flame forms in your hand, illuminating your surroundings. You can throw it to use it as a disposable weapon. components: + - type: Sprite + sprite: _CP14/Effects/Magic/spells_icons.rsi + state: flame_creation - type: CP14MagicEffect magicType: Fire manaCost: 5 @@ -73,7 +76,7 @@ - state: inhand-right shader: unshaded - type: TimedDespawn - lifetime: 300 # 5 min + lifetime: 60 # 1 min - type: Sprite sprite: _CP14/Objects/Misc/artificial_flame.rsi layers: diff --git a/Resources/Prototypes/_CP14/Entities/Actions/Spells/Fire/T1_fireball.yml b/Resources/Prototypes/_CP14/Entities/Actions/Spells/Fire/T1_fireball.yml index 8be4bc8fdf..975d53dd0b 100644 --- a/Resources/Prototypes/_CP14/Entities/Actions/Spells/Fire/T1_fireball.yml +++ b/Resources/Prototypes/_CP14/Entities/Actions/Spells/Fire/T1_fireball.yml @@ -3,6 +3,9 @@ name: Fireball description: An effective method of destruction - an explosive fireball components: + - type: Sprite + sprite: _CP14/Effects/Magic/spells_icons.rsi + state: fireball - type: CP14MagicEffectCastSlowdown speedMultiplier: 0.3 - type: CP14MagicEffect diff --git a/Resources/Prototypes/_CP14/Entities/Actions/Spells/Gate/T2_shadow_step.yml b/Resources/Prototypes/_CP14/Entities/Actions/Spells/Gate/T2_shadow_step.yml index 649d1b82b1..302a2b5919 100644 --- a/Resources/Prototypes/_CP14/Entities/Actions/Spells/Gate/T2_shadow_step.yml +++ b/Resources/Prototypes/_CP14/Entities/Actions/Spells/Gate/T2_shadow_step.yml @@ -3,6 +3,9 @@ name: Shadow step description: A step through the gash of reality that allows you to cover a small of distance quickly components: + - type: Sprite + sprite: _CP14/Effects/Magic/spells_icons.rsi + state: shadow_step - type: CP14MagicEffectCastSlowdown speedMultiplier: 0.8 - type: CP14MagicEffect diff --git a/Resources/Prototypes/_CP14/Entities/Actions/Spells/Healing/T1_cure_wounds.yml b/Resources/Prototypes/_CP14/Entities/Actions/Spells/Healing/T1_cure_wounds.yml index 77ddb91e6a..d3405cca15 100644 --- a/Resources/Prototypes/_CP14/Entities/Actions/Spells/Healing/T1_cure_wounds.yml +++ b/Resources/Prototypes/_CP14/Entities/Actions/Spells/Healing/T1_cure_wounds.yml @@ -3,6 +3,9 @@ name: Cure wounds description: You touch the creature, healing its body from physical damage components: + - type: Sprite + sprite: _CP14/Effects/Magic/spells_icons.rsi + state: cure_wounds - type: CP14MagicEffectCastSlowdown speedMultiplier: 0.5 - type: CP14MagicEffect diff --git a/Resources/Prototypes/_CP14/Entities/Actions/Spells/LightDarkness/T1_sphere_of_light.yml b/Resources/Prototypes/_CP14/Entities/Actions/Spells/LightDarkness/T0_sphere_of_light.yml similarity index 95% rename from Resources/Prototypes/_CP14/Entities/Actions/Spells/LightDarkness/T1_sphere_of_light.yml rename to Resources/Prototypes/_CP14/Entities/Actions/Spells/LightDarkness/T0_sphere_of_light.yml index 51446503c3..70abee99b9 100644 --- a/Resources/Prototypes/_CP14/Entities/Actions/Spells/LightDarkness/T1_sphere_of_light.yml +++ b/Resources/Prototypes/_CP14/Entities/Actions/Spells/LightDarkness/T0_sphere_of_light.yml @@ -3,6 +3,9 @@ name: Sphere of Light description: Materialization of a bright and safe light source. components: + - type: Sprite + sprite: _CP14/Effects/Magic/spells_icons.rsi + state: sphere_of_light - type: CP14MagicEffect magicType: LightDarkness manaCost: 10 @@ -63,7 +66,7 @@ categories: [ ForkFiltered ] components: - type: TimedDespawn - lifetime: 300 # 5 min + lifetime: 180 # 3 min - type: Sprite sprite: _CP14/Effects/Magic/sphere_of_light.rsi noRot: true @@ -90,8 +93,8 @@ - type: LandAtCursor - type: MovementIgnoreGravity - type: PointLight - radius: 6.0 - energy: 2 + radius: 5.0 + energy: 1 color: "#efedff" - type: Damageable - type: EmitSoundOnLand diff --git a/Resources/Prototypes/_CP14/Entities/Actions/Spells/LightDarkness/T1_flash_light.yml b/Resources/Prototypes/_CP14/Entities/Actions/Spells/LightDarkness/T1_flash_light.yml index 878f589c87..926d18ba10 100644 --- a/Resources/Prototypes/_CP14/Entities/Actions/Spells/LightDarkness/T1_flash_light.yml +++ b/Resources/Prototypes/_CP14/Entities/Actions/Spells/LightDarkness/T1_flash_light.yml @@ -3,6 +3,9 @@ name: Flash Light description: Creates a flash of bright, blinding light. components: + - type: Sprite + sprite: _CP14/Effects/Magic/spells_icons.rsi + state: flash_light - type: CP14MagicEffect magicType: LightDarkness manaCost: 10 diff --git a/Resources/Prototypes/_CP14/Entities/Actions/Spells/Meta/T0_mana_consume.yml b/Resources/Prototypes/_CP14/Entities/Actions/Spells/Meta/T0_mana_consume.yml new file mode 100644 index 0000000000..6f47950e11 --- /dev/null +++ b/Resources/Prototypes/_CP14/Entities/Actions/Spells/Meta/T0_mana_consume.yml @@ -0,0 +1,67 @@ +- type: entity + id: CP14ActionSpellManaConsume + name: Mana consume + description: You absorb a small amount of mana from the target. + components: + - type: Sprite + sprite: _CP14/Effects/Magic/spells_icons.rsi + state: mana_consume + - type: CP14MagicEffect + magicType: Meta + manaCost: 0 + canModifyManacost: false + telegraphyEffects: + - !type:CP14SpellSpawnEntityOnTarget + spawns: + - CP14ImpactEffectManaConsume + effects: + - !type:CP14SpellSpawnEntityOnTarget + spawns: + - CP14ImpactEffectManaConsume + - !type:CP14SpellConsumeManaEffect + mana: 10 + - type: CP14MagicEffectSomaticAspect + - type: CP14MagicEffectCastingVisual + proto: CP14RuneManaConsume + - type: EntityTargetAction + whitelist: + components: + - CP14MagicEnergyContainer + itemIconStyle: BigAction + interactOnMiss: false + sound: !type:SoundPathSpecifier + path: /Audio/Magic/rumble.ogg + icon: + sprite: _CP14/Effects/Magic/spells_icons.rsi + state: mana_consume + event: !type:CP14DelayedEntityTargetActionEvent + cooldown: 1 + castDelay: 2 + breakOnMove: true + +- type: entity + id: CP14RuneManaConsume + parent: CP14BaseMagicRune + categories: [ HideSpawnMenu ] + components: + - type: PointLight + color: "#5096d4" + - type: Sprite + layers: + - state: medium_line + color: "#5096d4" + shader: unshaded + - state: double_outer + color: "#5096d4" + shader: unshaded + +- type: entity + id: CP14ImpactEffectManaConsume + parent: CP14BaseMagicImpact + categories: [ HideSpawnMenu ] + components: + - type: Sprite + layers: + - state: particles_down + color: "#5096d4" + shader: unshaded \ No newline at end of file diff --git a/Resources/Prototypes/_CP14/Entities/Actions/Spells/Meta/T0_mana_gift.yml b/Resources/Prototypes/_CP14/Entities/Actions/Spells/Meta/T0_mana_gift.yml index de1d2033bf..8a5fb20cb3 100644 --- a/Resources/Prototypes/_CP14/Entities/Actions/Spells/Meta/T0_mana_gift.yml +++ b/Resources/Prototypes/_CP14/Entities/Actions/Spells/Meta/T0_mana_gift.yml @@ -3,6 +3,9 @@ name: Mana transfer description: You can transfer a small amount of your magical energy to a target entity or magical object. components: + - type: Sprite + sprite: _CP14/Effects/Magic/spells_icons.rsi + state: mana_gift - type: CP14MagicEffect magicType: Meta manaCost: 12 @@ -20,9 +23,6 @@ - !type:CP14ManaChange manaDelta: 10 safe: false - - type: CP14MagicEffectVerbalAspect - startSpeech: "Energia..." - endSpeech: "te reficit" - type: CP14MagicEffectSomaticAspect - type: CP14MagicEffectCastingVisual proto: CP14RuneManaGift diff --git a/Resources/Prototypes/_CP14/Entities/Actions/Spells/Movement/T1_shadow_grab.yml b/Resources/Prototypes/_CP14/Entities/Actions/Spells/Movement/T0_shadow_grab.yml similarity index 94% rename from Resources/Prototypes/_CP14/Entities/Actions/Spells/Movement/T1_shadow_grab.yml rename to Resources/Prototypes/_CP14/Entities/Actions/Spells/Movement/T0_shadow_grab.yml index df482b4e20..7cf26e96c0 100644 --- a/Resources/Prototypes/_CP14/Entities/Actions/Spells/Movement/T1_shadow_grab.yml +++ b/Resources/Prototypes/_CP14/Entities/Actions/Spells/Movement/T0_shadow_grab.yml @@ -3,6 +3,9 @@ name: Shadow grab description: You attract a ghostly hand that draws an object or entity to you components: + - type: Sprite + sprite: _CP14/Effects/Magic/spells_icons.rsi + state: shadow_grab - type: CP14MagicEffect magicType: Movement manaCost: 10 diff --git a/Resources/Prototypes/_CP14/Entities/Actions/Spells/Necromancy/T1_resurrection.yml b/Resources/Prototypes/_CP14/Entities/Actions/Spells/Necromancy/T1_resurrection.yml index cec0191ddf..846dddf120 100644 --- a/Resources/Prototypes/_CP14/Entities/Actions/Spells/Necromancy/T1_resurrection.yml +++ b/Resources/Prototypes/_CP14/Entities/Actions/Spells/Necromancy/T1_resurrection.yml @@ -3,6 +3,9 @@ name: Resurrection description: You're trying to put the soul back into the body. components: + - type: Sprite + sprite: _CP14/Effects/Magic/spells_icons.rsi + state: resurrection - type: CP14MagicEffectCastSlowdown speedMultiplier: 0.2 - type: CP14MagicEffect diff --git a/Resources/Prototypes/_CP14/Entities/Actions/Spells/Water/T1_ice_dagger.yml b/Resources/Prototypes/_CP14/Entities/Actions/Spells/Water/T0_ice_dagger.yml similarity index 96% rename from Resources/Prototypes/_CP14/Entities/Actions/Spells/Water/T1_ice_dagger.yml rename to Resources/Prototypes/_CP14/Entities/Actions/Spells/Water/T0_ice_dagger.yml index 19d390445b..a422b41705 100644 --- a/Resources/Prototypes/_CP14/Entities/Actions/Spells/Water/T1_ice_dagger.yml +++ b/Resources/Prototypes/_CP14/Entities/Actions/Spells/Water/T0_ice_dagger.yml @@ -3,6 +3,9 @@ name: Ice dagger description: Materialization of a temporary sharp ice throwing dagger components: + - type: Sprite + sprite: _CP14/Effects/Magic/spells_icons.rsi + state: ice_dagger - type: CP14MagicEffect magicType: Water manaCost: 15 diff --git a/Resources/Prototypes/_CP14/Entities/Actions/Spells/Water/T0_water_creation.yml b/Resources/Prototypes/_CP14/Entities/Actions/Spells/Water/T0_water_creation.yml new file mode 100644 index 0000000000..67e90d2807 --- /dev/null +++ b/Resources/Prototypes/_CP14/Entities/Actions/Spells/Water/T0_water_creation.yml @@ -0,0 +1,147 @@ +- type: entity + id: CP14ActionSpellWaterCreation + name: Water creation + description: Creating a clot of water that is held in a floating balloon shape for some time + components: + - type: Sprite + sprite: _CP14/Effects/Magic/spells_icons.rsi + state: water_creation + - type: CP14MagicEffect + magicType: Water + manaCost: 10 + effects: + - !type:CP14SpellSpawnEntityOnTarget + spawns: + - CP14ImpactEffectWaterCreation + - !type:CP14SpellSpawnInHandEntity + spawns: + - CP14LiquidDropWater + - type: CP14MagicEffectSomaticAspect + - type: CP14MagicEffectCastingVisual + proto: CP14RuneWaterCreation + - type: InstantAction + itemIconStyle: BigAction + sound: !type:SoundPathSpecifier + path: /Audio/Magic/rumble.ogg + icon: + sprite: _CP14/Effects/Magic/spells_icons.rsi + state: water_creation + event: !type:CP14DelayedInstantActionEvent + cooldown: 10 + castDelay: 0.8 + breakOnMove: false + +- type: entity + id: CP14RuneWaterCreation + parent: CP14BaseMagicRune + categories: [ HideSpawnMenu ] + components: + - type: PointLight + color: "#5eabeb" + - type: Sprite + layers: + - state: medium_line + color: "#5eabeb" + shader: unshaded + +- type: entity + id: CP14LiquidDropWater + parent: BaseItem + name: floating liquid drop + description: A clot of liquid held in the shape of a ball by magic + categories: [ ForkFiltered ] + components: + - type: Item + size: Ginormous + - type: BadFood + - type: SolutionContainerManager + solutions: + drop: + maxVol: 10 + reagents: + - ReagentId: Water + Quantity: 10 + - type: CP14MeleeSelfDamage + damageToSelf: + types: + Blunt: 1 # 1 hits + - type: LandAtCursor + - type: DamageOnHighSpeedImpact + minimumSpeed: 0.1 + damage: + types: + Blunt: 1 + - type: MeleeWeapon + attackRate: 1.8 + wideAnimationRotation: 225 + wideAnimation: CP14WeaponArcSlash + damage: + types: + Blunt: 0 + - type: Destructible + thresholds: + - trigger: + !type:DamageTrigger + damage: 1 + behaviors: + - !type:PlaySoundBehavior + sound: + collection: desecration + - !type:SpillBehavior + solution: drop + - !type:DoActsBehavior + acts: [ "Destruction" ] + - type: PassiveDamage # Around 8 damage a minute healed + damage: + groups: + Brute: 0.016 # ~ 1 minute + - type: Damageable + damageContainer: Biological + - type: Food + solution: drop + useSound: /Audio/Items/drink.ogg + eatMessage: drink-component-try-use-drink-success-slurp + delay: 0.5 + forceFeedDelay: 1.5 + - type: ExaminableSolution + solution: drop + - type: RefillableSolution + solution: drop + - type: InjectableSolution + solution: drop + - type: FitsInDispenser + solution: drop + - type: MixableSolution + solution: drop + - type: CP14SolutionTemperature + - type: Appearance + - type: Sprite + sprite: _CP14/Objects/Misc/liquid_drop.rsi + layers: + - state: liq-1 + map: ["enum.SolutionContainerLayers.Fill"] + - type: SolutionContainerVisuals + maxFillLevels: 1 + fillBaseName: liq- + inHandsMaxFillLevels: 1 + inHandsFillBaseName: -fill + +- type: entity + id: CP14ImpactEffectWaterCreation + parent: CP14BaseMagicImpact + categories: [ HideSpawnMenu ] + components: + - type: Sprite + layers: + - state: particles_up + color: "#5eabeb" + shader: unshaded + +- type: entity + parent: CP14BaseSpellScrollWater + id: CP14SpellScrollWaterCreation + name: water creation spell scroll + components: + - type: CP14SpellStorage + spells: + - CP14ActionSpellWaterCreation \ No newline at end of file diff --git a/Resources/Prototypes/_CP14/Entities/Actions/Spells/Water/T1_beer_creation.yml b/Resources/Prototypes/_CP14/Entities/Actions/Spells/Water/T1_beer_creation.yml new file mode 100644 index 0000000000..50be53a0cc --- /dev/null +++ b/Resources/Prototypes/_CP14/Entities/Actions/Spells/Water/T1_beer_creation.yml @@ -0,0 +1,87 @@ +- type: entity + id: CP14ActionSpellBeerCreation + name: Beer creation + description: A secret spell that materializes beer from pure mana. + components: + - type: Sprite + sprite: _CP14/Effects/Magic/spells_icons.rsi + state: beer_creation + - type: CP14MagicEffect + magicType: Water + manaCost: 50 + effects: + - !type:CP14SpellSpawnEntityOnTarget + spawns: + - CP14ImpactEffectBeerCreation + - !type:CP14SpellSpawnInHandEntity + spawns: + - CP14LiquidDropBeer + - type: CP14MagicEffectVerbalAspect + startSpeech: "beer..." + endSpeech: "Arriva la birra" + - type: CP14MagicEffectSomaticAspect + - type: CP14MagicEffectCastingVisual + proto: CP14RuneBeerCreation + - type: InstantAction + itemIconStyle: BigAction + sound: !type:SoundPathSpecifier + path: /Audio/Magic/rumble.ogg + icon: + sprite: _CP14/Effects/Magic/spells_icons.rsi + state: beer_creation + event: !type:CP14DelayedInstantActionEvent + cooldown: 60 + castDelay: 5 + breakOnMove: true + +- type: entity + id: CP14RuneBeerCreation + parent: CP14BaseMagicRune + categories: [ HideSpawnMenu ] + components: + - type: PointLight + color: "#5eabeb" + - type: Sprite + layers: + - state: medium_line + color: "#9e522c" + shader: unshaded + - state: medium_circle + color: "#5eabeb" + shader: unshaded + +- type: entity + id: CP14LiquidDropBeer + parent: CP14LiquidDropWater + categories: [ ForkFiltered ] + components: + - type: SolutionContainerManager + solutions: + drop: + maxVol: 10 + reagents: + - ReagentId: Beer + Quantity: 10 + +- type: entity + id: CP14ImpactEffectBeerCreation + parent: CP14BaseMagicImpact + categories: [ HideSpawnMenu ] + components: + - type: Sprite + layers: + - state: particles_up + color: "#5eabeb" + shader: unshaded + - state: particles_down + color: "#9e522c" + shader: unshaded + +- type: entity + parent: CP14BaseSpellScrollWater + id: CP14SpellScrollBeerCreation + name: beer creation spell scroll + components: + - type: CP14SpellStorage + spells: + - CP14ActionSpellBeerCreation \ No newline at end of file diff --git a/Resources/Prototypes/_CP14/Entities/Actions/Spells/Water/T1_ice_shards.yml b/Resources/Prototypes/_CP14/Entities/Actions/Spells/Water/T1_ice_shards.yml index 06f9007856..103ca0380e 100644 --- a/Resources/Prototypes/_CP14/Entities/Actions/Spells/Water/T1_ice_shards.yml +++ b/Resources/Prototypes/_CP14/Entities/Actions/Spells/Water/T1_ice_shards.yml @@ -3,6 +3,9 @@ name: Ice Shards description: Fast ice needles, for rapid shooting of targets. components: + - type: Sprite + sprite: _CP14/Effects/Magic/spells_icons.rsi + state: ice_shards - type: CP14MagicEffectCastSlowdown speedMultiplier: 0.75 - type: CP14MagicEffect diff --git a/Resources/Prototypes/_CP14/Entities/Clothing/Rings/ring.yml b/Resources/Prototypes/_CP14/Entities/Clothing/Rings/ring.yml index 76869416ac..d945d2fdce 100644 --- a/Resources/Prototypes/_CP14/Entities/Clothing/Rings/ring.yml +++ b/Resources/Prototypes/_CP14/Entities/Clothing/Rings/ring.yml @@ -12,38 +12,6 @@ - type: Sprite sprite: _CP14/Clothing/Rings/rings.rsi -- type: entity - id: CP14ClothingRingIceDagger - parent: CP14ClothingRingBase - name: ice dagger conductive ring - suffix: Ice Dagger - description: A standard mana-conductive ring that allows the user to summon ice daggers. - components: - - type: Sprite - layers: - - state: brass_ring - - state: saphhire_stone_small - - type: CP14SpellStorageAccessWearing - - type: CP14SpellStorage - spells: - - CP14ActionSpellIceDagger - -- type: entity - id: CP14ClothingRingManaGift - parent: CP14ClothingRingBase - name: mana transfering conductive ring - suffix: Mana gift - description: A standard mana-conductive ring that allows you to transfer some of your magical energy to other objects. - components: - - type: Sprite - layers: - - state: brass_ring - - state: saphhire_stone_small - - type: CP14SpellStorageAccessWearing - - type: CP14SpellStorage - spells: - - CP14ActionSpellManaGift - - type: entity id: CP14ClothingRingIceShards parent: CP14ClothingRingBase @@ -60,22 +28,6 @@ spells: - CP14ActionSpellIceShards -- type: entity - id: CP14ClothingRingFlameCreation - parent: CP14ClothingRingBase - name: flame creation conductive ring - description: A standard mana-conductive ring that allows the user to summon artificial flames. - suffix: Flame creation - components: - - type: Sprite - layers: - - state: brass_ring - - state: ruby_stone_small - - type: CP14SpellStorageAccessWearing - - type: CP14SpellStorage - spells: - - CP14ActionSpellFlameCreation - - type: entity id: CP14ClothingRingFireball parent: CP14ClothingRingBase @@ -92,54 +44,6 @@ spells: - CP14ActionSpellFireball -- type: entity - id: CP14ClothingRingShadowGrab - parent: CP14ClothingRingBase - name: shadow grab conductive ring - description: A standard mana-conductive ring that allows the user to summon grabbing shadow hand. - suffix: Shadow grab - components: - - type: Sprite - layers: - - state: brass_ring - - state: amethyst_stone_small - - type: CP14SpellStorageAccessWearing - - type: CP14SpellStorage - spells: - - CP14ActionSpellShadowGrab - -- type: entity - id: CP14ClothingRingEarthWall - parent: CP14ClothingRingBase - name: earth wall conductive ring - description: A standard mana-conductive ring that allows you to lift a piece of earth rock. - suffix: Earth wall - components: - - type: Sprite - layers: - - state: brass_ring - - state: berill_stone_small - - type: CP14SpellStorageAccessWearing - - type: CP14SpellStorage - spells: - - CP14ActionSpellEarthWall - -- type: entity - id: CP14ClothingRingSphereOfLight - parent: CP14ClothingRingBase - name: light sphere conductive ring - description: A standard mana-conductive ring that allows the user to create a sphere of light. - suffix: Sphere of Light - components: - - type: Sprite - layers: - - state: brass_ring - - state: citrine_stone_small - - type: CP14SpellStorageAccessWearing - - type: CP14SpellStorage - spells: - - CP14ActionSpellSphereOfLight - - type: entity id: CP14ClothingRingFlashLight parent: CP14ClothingRingBase diff --git a/Resources/Prototypes/_CP14/Entities/Markers/Spawners/Random/Loot/spawners.yml b/Resources/Prototypes/_CP14/Entities/Markers/Spawners/Random/Loot/spawners.yml index d26bf85eac..35793b1a93 100644 --- a/Resources/Prototypes/_CP14/Entities/Markers/Spawners/Random/Loot/spawners.yml +++ b/Resources/Prototypes/_CP14/Entities/Markers/Spawners/Random/Loot/spawners.yml @@ -45,6 +45,8 @@ - id: CP14SpellScrollFlameCreation - id: CP14SpellScrollEarthWall - id: CP14SpellScrollFlashLight + - id: CP14SpellScrollWaterCreation + - id: CP14SpellScrollBeerCreation - id: CP14EnergyCrystalSmall - id: CP14BaseSharpeningStone - id: CP14GlassShard @@ -75,16 +77,10 @@ # remove this when players can create their own magic items - !type:GroupSelector children: - - id: CP14ClothingRingIceDagger - id: CP14ClothingRingIceShards - - id: CP14ClothingRingFlameCreation - id: CP14ClothingRingFireball - - id: CP14MagicHealingStaff - - id: CP14ClothingRingShadowGrab - - id: CP14ClothingRingEarthWall - - id: CP14ClothingRingManaGift - - id: CP14ClothingRingSphereOfLight - id: CP14ClothingRingFlashLight + - id: CP14MagicHealingStaff - id: CP14SpellScrollResurrection # Rare standard village crates loot - !type:NestedSelector diff --git a/Resources/Prototypes/_CP14/Entities/Objects/Specific/Thaumaturgy/tools.yml b/Resources/Prototypes/_CP14/Entities/Objects/Specific/Thaumaturgy/tools.yml index f94bf9ea71..ab95a75681 100644 --- a/Resources/Prototypes/_CP14/Entities/Objects/Specific/Thaumaturgy/tools.yml +++ b/Resources/Prototypes/_CP14/Entities/Objects/Specific/Thaumaturgy/tools.yml @@ -30,4 +30,49 @@ sprite: _CP14/Objects/Specific/Thaumaturgy/ritual_chalk.rsi state: icon - type: Item - sprite: _CP14/Objects/Specific/Thaumaturgy/ritual_chalk.rsi \ No newline at end of file + sprite: _CP14/Objects/Specific/Thaumaturgy/ritual_chalk.rsi + +- type: entity + id: CP14ManaOperationGlove + parent: + - BaseItem + - CP14BaseWeaponLight + - CP14BaseWeaponShort + name: mana glove + description: "An unsophisticated but aesthetically pleasing blend of technology and magic crystals that allows you to operate with raw mana: siphoning it from some objects and pumping it into others." + categories: [ ForkFiltered ] + components: + - type: Sprite + sprite: _CP14/Objects/Specific/Thaumaturgy/powerline_gauntlet.rsi + state: icon + - type: Item + size: Normal + shape: + - 0,0,0,1 + storedRotation: -45 + sprite: _CP14/Objects/Specific/Thaumaturgy/powerline_gauntlet.rsi + - type: CP14MagicEnergyContainer + magicAlert: CP14MagicEnergy + maxEnergy: 50 + energy: 0 + - type: CP14MagicEnergyExaminable + - type: CP14SpellStorageAccessHolding + - type: CP14SpellStorage + spells: + - CP14ActionSpellManaGift + - CP14ActionSpellManaConsume + - type: ThrowingAngle #Fun + angle: 225 + - type: MeleeWeapon + angle: 0 + attackRate: 1.2 + range: 1.2 + wideAnimationRotation: 225 + wideAnimation: CP14WeaponArcThrust + damage: + types: + Blunt: 5 + soundHit: + collection: MetalThud + cPAnimationLength: 0.25 + cPAnimationOffset: -1.3 \ No newline at end of file diff --git a/Resources/Prototypes/_CP14/Entities/Objects/Weapons/Magic/twoHandedStaffs.yml b/Resources/Prototypes/_CP14/Entities/Objects/Weapons/Magic/twoHandedStaffs.yml index 6a342dc656..ac48c57bc8 100644 --- a/Resources/Prototypes/_CP14/Entities/Objects/Weapons/Magic/twoHandedStaffs.yml +++ b/Resources/Prototypes/_CP14/Entities/Objects/Weapons/Magic/twoHandedStaffs.yml @@ -24,7 +24,7 @@ - type: IncreaseDamageOnWield damage: types: - Blunt: 3 + Blunt: 4 - type: MeleeWeapon angle: 100 attackRate: 1.3 @@ -33,7 +33,7 @@ wideAnimation: CP14WeaponArcSlash damage: types: - Blunt: 2 + Blunt: 4 soundHit: collection: MetalThud cPAnimationLength: 0.3 diff --git a/Resources/Prototypes/_CP14/Loadouts/Jobs/general.yml b/Resources/Prototypes/_CP14/Loadouts/Jobs/general.yml index c0e9b3fa1d..31ed3c1b89 100644 --- a/Resources/Prototypes/_CP14/Loadouts/Jobs/general.yml +++ b/Resources/Prototypes/_CP14/Loadouts/Jobs/general.yml @@ -291,7 +291,7 @@ maxLimit: 2 loadouts: - CP14MagicHealingStaff - - CP14ClothingRingManaGift + - CP14ManaOperationGlove - CP14EnergyCrystalSmall - CP14CrystalLampOrangeEmpty - CP14BaseSharpeningStone @@ -307,15 +307,14 @@ - type: loadout id: CP14MagicHealingStaff - storage: - neck: - - CP14MagicHealingStaff + inhand: + - CP14MagicHealingStaff - type: loadout - id: CP14ClothingRingManaGift + id: CP14ManaOperationGlove storage: back: - - CP14ClothingRingManaGift + - CP14ManaOperationGlove - type: loadout id: CP14EnergyCrystalSmall @@ -387,4 +386,87 @@ id: CP14BasePickaxe storage: back: - - CP14BasePickaxe \ No newline at end of file + - CP14BasePickaxe + +# Spells + +- type: loadoutGroup + id: CP14GeneralSpells + name: cp14-loadout-general-spells + minLimit: 0 + maxLimit: 2 + loadouts: + - CP14ActionSpellFlameCreation + - CP14ActionSpellCureWounds + - CP14ActionSpellSphereOfLight + - CP14ActionSpellManaConsume + - CP14ActionSpellManaGift + - CP14ActionSpellShadowGrab + - CP14ActionSpellIceDagger + - CP14ActionSpellWaterCreation + - CP14ActionSpellBeerCreation + +- type: loadout + id: CP14ActionSpellFlameCreation + dummyEntity: CP14ActionSpellFlameCreation + actions: + - CP14ActionSpellFlameCreation + +- type: loadout + id: CP14ActionSpellCureWounds + dummyEntity: CP14ActionSpellCureWounds + actions: + - CP14ActionSpellCureWounds + +- type: loadout + id: CP14ActionSpellSphereOfLight + dummyEntity: CP14ActionSpellSphereOfLight + actions: + - CP14ActionSpellSphereOfLight + +- type: loadout + id: CP14ActionSpellManaConsume + dummyEntity: CP14ActionSpellManaConsume + actions: + - CP14ActionSpellManaConsume + +- type: loadout + id: CP14ActionSpellManaGift + dummyEntity: CP14ActionSpellManaGift + actions: + - CP14ActionSpellManaGift + +- type: loadout + id: CP14ActionSpellShadowGrab + dummyEntity: CP14ActionSpellShadowGrab + actions: + - CP14ActionSpellShadowGrab + +- type: loadout + id: CP14ActionSpellIceDagger + dummyEntity: CP14ActionSpellIceDagger + actions: + - CP14ActionSpellIceDagger + +- type: loadout + id: CP14ActionSpellWaterCreation + dummyEntity: CP14ActionSpellWaterCreation + actions: + - CP14ActionSpellWaterCreation + +- type: loadout + id: CP14ActionSpellBeerCreation + dummyEntity: CP14ActionSpellBeerCreation + actions: + - CP14ActionSpellBeerCreation + effects: + - !type:JobRequirementLoadoutEffect + requirement: + !type:SpeciesRequirement + species: + - CP14Dwarf + - !type:JobRequirementLoadoutEffect + requirement: + !type:RoleTimeRequirement + role: CP14JobInnkeeper + time: 7200 # 2 hour \ 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 21d67ab62b..5506ffbe05 100644 --- a/Resources/Prototypes/_CP14/Loadouts/role_loadouts.yml +++ b/Resources/Prototypes/_CP14/Loadouts/role_loadouts.yml @@ -1,6 +1,7 @@ - type: roleLoadout id: JobCP14Adventurer groups: + - CP14GeneralSpells - CP14GeneralHead - CP14GeneralEyes - CP14GeneralMask @@ -15,6 +16,7 @@ - type: roleLoadout id: JobCP14Alchemist groups: + - CP14GeneralSpells - CP14AlchemistHead # - CP14AlchemistEyes # - CP14GeneralMask @@ -29,6 +31,7 @@ - type: roleLoadout id: JobCP14Innkeeper groups: + - CP14GeneralSpells - CP14GeneralHead - CP14GeneralEyes - CP14GeneralMask @@ -43,6 +46,7 @@ - type: roleLoadout id: JobCP14Blacksmith groups: + - CP14GeneralSpells - CP14GeneralHead - CP14GeneralEyes - CP14GeneralMask @@ -57,6 +61,7 @@ - type: roleLoadout id: JobCP14Captain groups: + - CP14GeneralSpells - CP14CaptainHead # - CP14GeneralEyes - CP14GeneralMask @@ -71,6 +76,7 @@ - type: roleLoadout id: JobCP14GuardCommander groups: + - CP14GeneralSpells - CP14GeneralHead - CP14GeneralEyes - CP14GeneralMask @@ -85,6 +91,7 @@ - type: roleLoadout id: JobCP14Commandant groups: + - CP14GeneralSpells - CP14CommandantHead - CP14GeneralEyes - CP14CommandantCloak @@ -97,6 +104,7 @@ - type: roleLoadout id: JobCP14Banker groups: + - CP14GeneralSpells - CP14BankHead - CP14GeneralEyes - CP14BankShirt diff --git a/Resources/Prototypes/_CP14/Traits/categories.yml b/Resources/Prototypes/_CP14/Traits/categories.yml index cd2ef80ba1..187f0f3722 100644 --- a/Resources/Prototypes/_CP14/Traits/categories.yml +++ b/Resources/Prototypes/_CP14/Traits/categories.yml @@ -1,8 +1,3 @@ -- type: traitCategory - id: CP14Magic - name: cp14-trait-category-magic - maxTraitPoints: 1 - - type: traitCategory id: CP14PhysicalTraits name: cp14-trait-category-physical diff --git a/Resources/Prototypes/_CP14/Traits/spells.yml b/Resources/Prototypes/_CP14/Traits/spells.yml deleted file mode 100644 index f0b8d4e169..0000000000 --- a/Resources/Prototypes/_CP14/Traits/spells.yml +++ /dev/null @@ -1,17 +0,0 @@ -- type: trait - id: CP14MagicFlameCreation - name: cp14-trait-spell-flamecreation-name - description: cp14-trait-spell-flamecreation-desc - cost: 1 - category: CP14Magic - actions: - - CP14ActionSpellFlameCreation - -- type: trait - id: CP14MagicManaGift - name: cp14-trait-spell-managift-name - description: cp14-trait-spell-managift-desc - cost: 1 - category: CP14Magic - actions: - - CP14ActionSpellManaGift \ No newline at end of file diff --git a/Resources/Textures/_CP14/Effects/Magic/cast_impact.rsi/meta.json b/Resources/Textures/_CP14/Effects/Magic/cast_impact.rsi/meta.json index c51b654c84..e5aa1b1ed9 100644 --- a/Resources/Textures/_CP14/Effects/Magic/cast_impact.rsi/meta.json +++ b/Resources/Textures/_CP14/Effects/Magic/cast_impact.rsi/meta.json @@ -7,6 +7,21 @@ "license": "CLA", "copyright": "Created by TheShuEd", "states": [ + { + "name": "particles_down", + "delays": [ + [ + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.2 + ] + ] + }, { "name": "particles_up", "delays": [ diff --git a/Resources/Textures/_CP14/Effects/Magic/cast_impact.rsi/particles_down.png b/Resources/Textures/_CP14/Effects/Magic/cast_impact.rsi/particles_down.png new file mode 100644 index 0000000000..eb143a87e0 Binary files /dev/null and b/Resources/Textures/_CP14/Effects/Magic/cast_impact.rsi/particles_down.png differ diff --git a/Resources/Textures/_CP14/Effects/Magic/spells_icons.rsi/beer_creation.png b/Resources/Textures/_CP14/Effects/Magic/spells_icons.rsi/beer_creation.png new file mode 100644 index 0000000000..c31c59fdc9 Binary files /dev/null and b/Resources/Textures/_CP14/Effects/Magic/spells_icons.rsi/beer_creation.png differ diff --git a/Resources/Textures/_CP14/Effects/Magic/spells_icons.rsi/mana_consume.png b/Resources/Textures/_CP14/Effects/Magic/spells_icons.rsi/mana_consume.png new file mode 100644 index 0000000000..96085f5404 Binary files /dev/null and b/Resources/Textures/_CP14/Effects/Magic/spells_icons.rsi/mana_consume.png differ diff --git a/Resources/Textures/_CP14/Effects/Magic/spells_icons.rsi/mana_gift.png b/Resources/Textures/_CP14/Effects/Magic/spells_icons.rsi/mana_gift.png index 075826fdd3..9f045020dc 100644 Binary files a/Resources/Textures/_CP14/Effects/Magic/spells_icons.rsi/mana_gift.png and b/Resources/Textures/_CP14/Effects/Magic/spells_icons.rsi/mana_gift.png differ 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 20af02057e..6800802532 100644 --- a/Resources/Textures/_CP14/Effects/Magic/spells_icons.rsi/meta.json +++ b/Resources/Textures/_CP14/Effects/Magic/spells_icons.rsi/meta.json @@ -7,6 +7,9 @@ "license": "CLA", "copyright": "Created by .kreks., mana_gift and resurrection by TheShuEd", "states": [ + { + "name": "beer_creation" + }, { "name": "cure_wounds" }, @@ -28,6 +31,9 @@ { "name": "ice_shards" }, + { + "name": "mana_consume" + }, { "name": "mana_gift" }, @@ -42,6 +48,9 @@ }, { "name": "sphere_of_light" + }, + { + "name": "water_creation" } ] } \ No newline at end of file diff --git a/Resources/Textures/_CP14/Effects/Magic/spells_icons.rsi/water_creation.png b/Resources/Textures/_CP14/Effects/Magic/spells_icons.rsi/water_creation.png new file mode 100644 index 0000000000..e60eaabb81 Binary files /dev/null and b/Resources/Textures/_CP14/Effects/Magic/spells_icons.rsi/water_creation.png differ diff --git a/Resources/Textures/_CP14/Objects/Misc/liquid_drop.rsi/inhand-left-fill1.png b/Resources/Textures/_CP14/Objects/Misc/liquid_drop.rsi/inhand-left-fill1.png new file mode 100644 index 0000000000..d02366351d Binary files /dev/null and b/Resources/Textures/_CP14/Objects/Misc/liquid_drop.rsi/inhand-left-fill1.png differ diff --git a/Resources/Textures/_CP14/Objects/Misc/liquid_drop.rsi/inhand-right-fill1.png b/Resources/Textures/_CP14/Objects/Misc/liquid_drop.rsi/inhand-right-fill1.png new file mode 100644 index 0000000000..8a4be2be69 Binary files /dev/null and b/Resources/Textures/_CP14/Objects/Misc/liquid_drop.rsi/inhand-right-fill1.png differ diff --git a/Resources/Textures/_CP14/Objects/Misc/liquid_drop.rsi/liq-1.png b/Resources/Textures/_CP14/Objects/Misc/liquid_drop.rsi/liq-1.png new file mode 100644 index 0000000000..8b5b4cfb6a Binary files /dev/null and b/Resources/Textures/_CP14/Objects/Misc/liquid_drop.rsi/liq-1.png differ diff --git a/Resources/Textures/_CP14/Objects/Misc/liquid_drop.rsi/meta.json b/Resources/Textures/_CP14/Objects/Misc/liquid_drop.rsi/meta.json new file mode 100644 index 0000000000..b5bca40acc --- /dev/null +++ b/Resources/Textures/_CP14/Objects/Misc/liquid_drop.rsi/meta.json @@ -0,0 +1,82 @@ +{ + "version": 1, + "size": { + "x": 32, + "y": 32 + }, + "license": "CLA", + "copyright": "Created by TheShuEd", + "states": [ + { + "name": "liq-1", + "delays": [ + [ + 0.2, + 0.2, + 0.2, + 0.2 + ] + ] + }, + { + "name": "inhand-left-fill1", + "directions": 4, + "delays": [ + [ + 0.2, + 0.2, + 0.2, + 0.2 + ], + [ + 0.2, + 0.2, + 0.2, + 0.2 + ], + [ + 0.2, + 0.2, + 0.2, + 0.2 + ], + [ + 0.2, + 0.2, + 0.2, + 0.2 + ] + ] + }, + { + "name": "inhand-right-fill1", + "directions": 4, + "delays": [ + [ + 0.2, + 0.2, + 0.2, + 0.2 + ], + [ + 0.2, + 0.2, + 0.2, + 0.2 + ], + [ + 0.2, + 0.2, + 0.2, + 0.2 + ], + [ + 0.2, + 0.2, + 0.2, + 0.2 + ] + ] + } + ] +} diff --git a/Resources/migration.yml b/Resources/migration.yml index ad8b42096c..74e6a49605 100644 --- a/Resources/migration.yml +++ b/Resources/migration.yml @@ -122,11 +122,11 @@ CP14FlowersYellow: CP14Dayflin #2024-11-03 CP14OldLantern: CP14CrystalLampBlueEmpty -CP14ClothingRingIceFloor: CP14ClothingRingManaGift +CP14ClothingRingIceFloor: CP14ManaOperationGlove #2024-11-05 CP14ClothingRingCureWounds: CP14MagicHealingStaff -CP14ClothingRingShadowStep: CP14ClothingRingManaGift +CP14ClothingRingShadowStep: null #2024-11-11 CP14BlueVial: CP14BlueBottle @@ -146,6 +146,14 @@ CP14KeyBankSafe4: CP14KeyBankSafe CP14KeyBankSafe5: CP14KeyBankSafe CP14KeyBankSafe6: CP14KeyBankSafe +#2024-19-11 +CP14ClothingRingManaGift: CP14ManaOperationGlove +CP14ClothingRingIceDagger: CP14ManaOperationGlove +CP14ClothingRingFlameCreation: null +CP14ClothingRingShadowGrab: null +CP14ClothingRingEarthWall: null +CP14ClothingRingSphereOfLight: null + # <---> CrystallEdge migration zone end