From 16a0b99daf8a54bd76f50012d0f47d168f7949bc Mon Sep 17 00:00:00 2001 From: Ed <96445749+TheShuEd@users.noreply.github.com> Date: Mon, 4 Nov 2024 00:55:15 +0300 Subject: [PATCH] Magic crystal lanterns + Aftertest balance (#532) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * lamp visual update * deleete ice floor spell * mana gift spell * magic lantern * wallmount crystal lamps * QoL * crafting * Update StyleNano.cs * examining simplify * rings name * remove snakes modifier * trinkets update * remove snakes, add boars and rabbits to demiplans * Update flashlight.yml * fix * Update test.yml * Update migration.yml * ыы --- Content.Client/Stylesheets/StyleNano.cs | 2 +- .../Chemistry/ReagentEffect/CP14ManaChange.cs | 8 ++ .../CP14MagicEnergyCrystalSlotSystem.cs | 28 ++--- .../CP14MagicEnergySystem.Scanner.cs | 11 +- .../MagicLantern/CP14MagicLanternComponent.cs | 10 ++ .../MagicLantern/CP14MagicLanternSystem.cs | 25 ++++ .../Entities/Markers/construction_ghost.yml | 1 + .../Spells/{ice_floor.yml => mana_gift.yml} | 67 ++++++----- .../_CP14/Entities/Clothing/Rings/ring.yml | 58 +++++----- .../Markers/Spawners/Random/Loot/spawners.yml | 4 +- .../Spawners/Random/battle_royale_temp.yml | 84 -------------- .../_CP14/Entities/Mobs/Species/base.yml | 2 +- .../Entities/Objects/Tools/flashlight.yml | 107 +++++++++++++++--- .../Structures/Furniture/wallmount.yml | 32 ------ .../Structures/Furniture/wallmount_lamp.yml | 91 +++++++++++++++ .../_CP14/Loadouts/Jobs/general.yml | 81 +++++++++++-- .../Procedural/Demiplane/Modifiers/test.yml | 62 ++++++++-- .../Construction/Graphs/Furniture/bonfire.yml | 19 ++++ .../_CP14/Recipes/Construction/furniture.yml | 20 ++++ .../_CP14/Guidebook_EN/Demiplanes.xml | 2 +- .../_CP14/Guidebook_RU/Demiplanes.xml | 2 +- .../_CP14/Effects/LightMasks/crystal_cone.png | Bin 0 -> 22127 bytes .../Magic/spells_icons.rsi/ice_floor.png | Bin 415 -> 0 bytes .../Magic/spells_icons.rsi/mana_gift.png | Bin 0 -> 461 bytes .../Effects/Magic/spells_icons.rsi/meta.json | 20 ++-- .../Tools/crystal_lamp.rsi/equipped-BELT1.png | Bin 0 -> 399 bytes .../Tools/crystal_lamp.rsi/equipped-BELT2.png | Bin 0 -> 399 bytes .../Objects/Tools/crystal_lamp.rsi/icon.png | Bin 0 -> 356 bytes .../Tools/crystal_lamp.rsi/inhand-left.png | Bin 0 -> 581 bytes .../Tools/crystal_lamp.rsi/inhand-right.png | Bin 0 -> 587 bytes .../crystal_lamp.rsi/light_equipped-BELT1.png | Bin 0 -> 263 bytes .../crystal_lamp.rsi/light_equipped-BELT2.png | Bin 0 -> 270 bytes .../Tools/crystal_lamp.rsi/light_icon.png | Bin 0 -> 204 bytes .../crystal_lamp.rsi/light_inhand-left.png | Bin 0 -> 311 bytes .../crystal_lamp.rsi/light_inhand-right.png | Bin 0 -> 313 bytes .../Objects/Tools/crystal_lamp.rsi/meta.json | 49 ++++++++ .../Tools/magic-lamp.rsi/inhand-left.png | Bin 687 -> 0 bytes .../Tools/magic-lamp.rsi/inhand-right.png | Bin 682 -> 0 bytes .../Objects/Tools/magic-lamp.rsi/lamp.png | Bin 606 -> 0 bytes .../Objects/Tools/magic-lamp.rsi/meta.json | 23 ---- .../Wallmount/wallmount_lamp.rsi/base.png | Bin 932 -> 957 bytes .../Wallmount/wallmount_lamp.rsi/crystal.png | Bin 0 -> 330 bytes .../Wallmount/wallmount_lamp.rsi/meta.json | 4 + .../Wallmount/wallmount_lamp.rsi/on.png | Bin 688 -> 536 bytes Resources/migration.yml | 5 + 45 files changed, 543 insertions(+), 274 deletions(-) create mode 100644 Content.Shared/_CP14/MagicLantern/CP14MagicLanternComponent.cs create mode 100644 Content.Shared/_CP14/MagicLantern/CP14MagicLanternSystem.cs rename Resources/Prototypes/_CP14/Entities/Actions/Spells/{ice_floor.yml => mana_gift.yml} (50%) delete mode 100644 Resources/Prototypes/_CP14/Entities/Markers/Spawners/Random/battle_royale_temp.yml create mode 100644 Resources/Prototypes/_CP14/Entities/Structures/Furniture/wallmount_lamp.yml create mode 100644 Resources/Textures/_CP14/Effects/LightMasks/crystal_cone.png delete mode 100644 Resources/Textures/_CP14/Effects/Magic/spells_icons.rsi/ice_floor.png create mode 100644 Resources/Textures/_CP14/Effects/Magic/spells_icons.rsi/mana_gift.png create mode 100644 Resources/Textures/_CP14/Objects/Tools/crystal_lamp.rsi/equipped-BELT1.png create mode 100644 Resources/Textures/_CP14/Objects/Tools/crystal_lamp.rsi/equipped-BELT2.png create mode 100644 Resources/Textures/_CP14/Objects/Tools/crystal_lamp.rsi/icon.png create mode 100644 Resources/Textures/_CP14/Objects/Tools/crystal_lamp.rsi/inhand-left.png create mode 100644 Resources/Textures/_CP14/Objects/Tools/crystal_lamp.rsi/inhand-right.png create mode 100644 Resources/Textures/_CP14/Objects/Tools/crystal_lamp.rsi/light_equipped-BELT1.png create mode 100644 Resources/Textures/_CP14/Objects/Tools/crystal_lamp.rsi/light_equipped-BELT2.png create mode 100644 Resources/Textures/_CP14/Objects/Tools/crystal_lamp.rsi/light_icon.png create mode 100644 Resources/Textures/_CP14/Objects/Tools/crystal_lamp.rsi/light_inhand-left.png create mode 100644 Resources/Textures/_CP14/Objects/Tools/crystal_lamp.rsi/light_inhand-right.png create mode 100644 Resources/Textures/_CP14/Objects/Tools/crystal_lamp.rsi/meta.json delete mode 100644 Resources/Textures/_CP14/Objects/Tools/magic-lamp.rsi/inhand-left.png delete mode 100644 Resources/Textures/_CP14/Objects/Tools/magic-lamp.rsi/inhand-right.png delete mode 100644 Resources/Textures/_CP14/Objects/Tools/magic-lamp.rsi/lamp.png delete mode 100644 Resources/Textures/_CP14/Objects/Tools/magic-lamp.rsi/meta.json create mode 100644 Resources/Textures/_CP14/Structures/Wallmount/wallmount_lamp.rsi/crystal.png diff --git a/Content.Client/Stylesheets/StyleNano.cs b/Content.Client/Stylesheets/StyleNano.cs index 673a14a2ac..ef7bed49d4 100644 --- a/Content.Client/Stylesheets/StyleNano.cs +++ b/Content.Client/Stylesheets/StyleNano.cs @@ -100,7 +100,7 @@ namespace Content.Client.Stylesheets public static readonly Color ButtonColorDefaultRed = Color.FromHex("#D43B3B"); public static readonly Color ButtonColorHovered = Color.FromHex("#7f6357"); public static readonly Color ButtonColorHoveredRed = Color.FromHex("#DF6B6B"); - public static readonly Color ButtonColorPressed = Color.FromHex("#6c4a3e"); + public static readonly Color ButtonColorPressed = Color.FromHex("#4a332b"); public static readonly Color ButtonColorDisabled = Color.FromHex("#3c3330"); public static readonly Color ButtonColorCautionDefault = Color.FromHex("#ab3232"); diff --git a/Content.Server/_CP14/Chemistry/ReagentEffect/CP14ManaChange.cs b/Content.Server/_CP14/Chemistry/ReagentEffect/CP14ManaChange.cs index 1d9aa1fab5..0b4537d580 100644 --- a/Content.Server/_CP14/Chemistry/ReagentEffect/CP14ManaChange.cs +++ b/Content.Server/_CP14/Chemistry/ReagentEffect/CP14ManaChange.cs @@ -1,4 +1,5 @@ using Content.Server._CP14.MagicEnergy; +using Content.Shared._CP14.MagicEnergy.Components; using Content.Shared.EntityEffects; using Content.Shared.FixedPoint; using JetBrains.Annotations; @@ -34,5 +35,12 @@ public sealed partial class CP14ManaChange : EntityEffect var magicSystem = args.EntityManager.System(); magicSystem.ChangeEnergy(args.TargetEntity, ManaDelta * scale, Safe); + + if (args.EntityManager.TryGetComponent(args.TargetEntity, + out var crystalSlot)) + { + var slotSystem = args.EntityManager.System(); + slotSystem.TryChangeEnergy(args.TargetEntity, ManaDelta * scale, crystalSlot); + } } } diff --git a/Content.Server/_CP14/MagicEnergy/CP14MagicEnergyCrystalSlotSystem.cs b/Content.Server/_CP14/MagicEnergy/CP14MagicEnergyCrystalSlotSystem.cs index 0c4db51092..81a0f6bd07 100644 --- a/Content.Server/_CP14/MagicEnergy/CP14MagicEnergyCrystalSlotSystem.cs +++ b/Content.Server/_CP14/MagicEnergy/CP14MagicEnergyCrystalSlotSystem.cs @@ -57,12 +57,15 @@ public sealed partial class CP14MagicEnergyCrystalSlotSystem : SharedCP14MagicEn if (!TryGetEnergyCrystalFromSlot(ent, out var crystalUid, out var crystalComp, ent.Comp)) return; - var scanEvent = new CP14MagicEnergyScanEvent(); - RaiseLocalEvent(args.Examiner, scanEvent); - - if (!scanEvent.CanScan) + if (!args.IsInDetailsRange) return; + //var scanEvent = new CP14MagicEnergyScanEvent(); + //RaiseLocalEvent(args.Examiner, scanEvent); +// + //if (!scanEvent.CanScan) + // return; + args.PushMarkup(_magicEnergy.GetEnergyExaminedText(crystalUid.Value, crystalComp)); } @@ -119,7 +122,8 @@ public sealed partial class CP14MagicEnergyCrystalSlotSystem : SharedCP14MagicEn return true; } - public bool TryUseEnergy(EntityUid uid, + + public bool TryChangeEnergy(EntityUid uid, FixedPoint2 energy, CP14MagicEnergyCrystalSlotComponent? component = null, EntityUid? user = null, @@ -128,22 +132,12 @@ public sealed partial class CP14MagicEnergyCrystalSlotSystem : SharedCP14MagicEn if (!TryGetEnergyCrystalFromSlot(uid, out var energyEnt, out var energyComp, component)) { if (user != null) - _popup.PopupEntity(Loc.GetString("cp14-magic-energy-no-crystal"), uid,user.Value); - - return false; - } - - if (_magicEnergy.TryConsumeEnergy(energyEnt.Value, energy, energyComp, safe)) - { - if (user != null) - _popup.PopupEntity( - Loc.GetString(safe ? "cp14-magic-energy-insufficient" : "cp14-magic-energy-insufficient-unsafe"), - uid, - user.Value); + _popup.PopupEntity(Loc.GetString("cp14-magic-energy-no-crystal"), uid, user.Value); return false; } + _magicEnergy.ChangeEnergy(energyEnt.Value, energyComp, energy, safe); return true; } } diff --git a/Content.Server/_CP14/MagicEnergy/CP14MagicEnergySystem.Scanner.cs b/Content.Server/_CP14/MagicEnergy/CP14MagicEnergySystem.Scanner.cs index 389845d73b..2246ef1370 100644 --- a/Content.Server/_CP14/MagicEnergy/CP14MagicEnergySystem.Scanner.cs +++ b/Content.Server/_CP14/MagicEnergy/CP14MagicEnergySystem.Scanner.cs @@ -31,12 +31,15 @@ public partial class CP14MagicEnergySystem if (!TryComp(ent, out var magicContainer)) return; - var scanEvent = new CP14MagicEnergyScanEvent(); - RaiseLocalEvent(args.Examiner, scanEvent); - - if (!scanEvent.CanScan) + if (!args.IsInDetailsRange) return; + //var scanEvent = new CP14MagicEnergyScanEvent(); + //RaiseLocalEvent(args.Examiner, scanEvent); +// + //if (!scanEvent.CanScan) + // return; + args.PushMarkup(GetEnergyExaminedText(ent, magicContainer)); } diff --git a/Content.Shared/_CP14/MagicLantern/CP14MagicLanternComponent.cs b/Content.Shared/_CP14/MagicLantern/CP14MagicLanternComponent.cs new file mode 100644 index 0000000000..0bf48bd0c5 --- /dev/null +++ b/Content.Shared/_CP14/MagicLantern/CP14MagicLanternComponent.cs @@ -0,0 +1,10 @@ +namespace Content.Shared._CP14.MagicLantern; + +/// +/// Controls the object's glow based on magical energy +/// +[RegisterComponent, Access(typeof(CP14MagicLanternSystem))] +public sealed partial class CP14MagicLanternComponent : Component +{ + +} diff --git a/Content.Shared/_CP14/MagicLantern/CP14MagicLanternSystem.cs b/Content.Shared/_CP14/MagicLantern/CP14MagicLanternSystem.cs new file mode 100644 index 0000000000..5f8b1d4d11 --- /dev/null +++ b/Content.Shared/_CP14/MagicLantern/CP14MagicLanternSystem.cs @@ -0,0 +1,25 @@ +using Content.Shared._CP14.MagicEnergy.Components; + +namespace Content.Shared._CP14.MagicLantern; + +public partial class CP14MagicLanternSystem : EntitySystem +{ + + [Dependency] private readonly SharedPointLightSystem _pointLight = default!; + + public override void Initialize() + { + base.Initialize(); + + SubscribeLocalEvent(OnSlotPowerChanged); + } + + private void OnSlotPowerChanged(Entity ent, ref CP14SlotCrystalPowerChangedEvent args) + { + SharedPointLightComponent? pointLight = null; + if (_pointLight.ResolveLight(ent, ref pointLight)) + { + _pointLight.SetEnabled(ent, args.Powered, pointLight); + } + } +} diff --git a/Resources/Prototypes/Entities/Markers/construction_ghost.yml b/Resources/Prototypes/Entities/Markers/construction_ghost.yml index 04a8a09502..60650792ec 100644 --- a/Resources/Prototypes/Entities/Markers/construction_ghost.yml +++ b/Resources/Prototypes/Entities/Markers/construction_ghost.yml @@ -4,6 +4,7 @@ categories: [ HideSpawnMenu ] components: - type: Sprite + drawdepth: Mobs #CP14 color: '#3F38' - type: ConstructionGhost - type: Clickable diff --git a/Resources/Prototypes/_CP14/Entities/Actions/Spells/ice_floor.yml b/Resources/Prototypes/_CP14/Entities/Actions/Spells/mana_gift.yml similarity index 50% rename from Resources/Prototypes/_CP14/Entities/Actions/Spells/ice_floor.yml rename to Resources/Prototypes/_CP14/Entities/Actions/Spells/mana_gift.yml index 97f3b1ba0a..b235a903d6 100644 --- a/Resources/Prototypes/_CP14/Entities/Actions/Spells/ice_floor.yml +++ b/Resources/Prototypes/_CP14/Entities/Actions/Spells/mana_gift.yml @@ -1,71 +1,68 @@ - type: entity - id: CP14ActionSpellIceFloor - name: Ice floor - description: Covers a specified area of land with slippery ice. + id: CP14ActionSpellManaGift + name: Mana transfer + description: You can transfer a small amount of your magical energy to a target entity or magical object. components: - type: CP14MagicEffect - manaCost: 10 + manaCost: 12 telegraphyEffects: - !type:CP14SpellSpawnEntityOnTarget spawns: - - CP14ImpactEffectIceFloor + - CP14ImpactEffectManaGift effects: - !type:CP14SpellSpawnEntityOnTarget spawns: - - CP14IceFloor + - CP14ImpactEffectManaGift + - !type:CP14SpellApplyEntityEffect + effects: + - !type:CP14ManaChange + manaDelta: 10 + safe: false - type: CP14MagicEffectVerbalAspect - startSpeech: "Humus deorsum..." - endSpeech: "operietur glacie" + startSpeech: "Energia..." + endSpeech: "te reficit" + - type: CP14MagicEffectSomaticAspect - type: CP14MagicEffectCastingVisual - proto: CP14RuneIceFloor + proto: CP14RuneManaGift - type: EntityWorldTargetAction + whitelist: + components: + - CP14MagicEnergyContainer + - CP14MagicEnergyCrystalSlot useDelay: 5 - range: 5 itemIconStyle: BigAction + interactOnMiss: false sound: !type:SoundPathSpecifier path: /Audio/Magic/rumble.ogg icon: sprite: _CP14/Effects/Magic/spells_icons.rsi - state: ice_floor + state: mana_gift event: !type:CP14DelayedEntityWorldTargetActionEvent - delay: 1 - breakOnMove: false + delay: 2 - type: entity - id: CP14RuneIceFloor + id: CP14RuneManaGift parent: CP14BaseMagicRune categories: [ HideSpawnMenu ] components: - type: PointLight - color: "#5eabeb" + color: "#5096d4" - type: Sprite layers: - - state: medium_circle - color: "#5eabeb" + - state: medium_line + color: "#5096d4" + shader: unshaded + - state: double_outer + color: "#5096d4" shader: unshaded - type: entity - id: CP14ImpactEffectIceFloor + id: CP14ImpactEffectManaGift parent: CP14BaseMagicImpact categories: [ HideSpawnMenu ] components: - type: Sprite layers: - state: particles_up - color: "#5eabeb" - shader: unshaded - -- type: entity - id: CP14IceFloor - parent: IceCrust - name: ice crust - description: It's cold and slippery. - categories: [ ForkFiltered ] - components: - - type: Slippery - paralyzeTime: 1 - launchForwardsMultiplier: 1.5 - - type: StepTrigger - intersectRatio: 0.2 - - type: CollisionWake - enabled: false + color: "#5096d4" + shader: unshaded \ No newline at end of file diff --git a/Resources/Prototypes/_CP14/Entities/Clothing/Rings/ring.yml b/Resources/Prototypes/_CP14/Entities/Clothing/Rings/ring.yml index ce8b637ffb..948f4768d9 100644 --- a/Resources/Prototypes/_CP14/Entities/Clothing/Rings/ring.yml +++ b/Resources/Prototypes/_CP14/Entities/Clothing/Rings/ring.yml @@ -15,7 +15,7 @@ - type: entity id: CP14ClothingRingIceDagger parent: CP14ClothingRingBase - name: conductive ring + name: ice dagger conductive ring suffix: Ice Dagger description: A standard mana-conductive ring that allows the user to summon ice daggers. components: @@ -30,10 +30,28 @@ 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: CP14SpellStorageRequireAttune + - type: CP14MagicAttuningItem + - type: CP14SpellStorageAccessWearing + - type: CP14SpellStorage + spells: + - CP14ActionSpellManaGift + - type: entity id: CP14ClothingRingIceShards parent: CP14ClothingRingBase - name: conductive ring + name: ice shards conductive ring suffix: Ice Shards description: A standard mana-conductive ring that allows the user to summon ice shards. components: @@ -51,7 +69,7 @@ - type: entity id: CP14ClothingRingFlameCreation parent: CP14ClothingRingBase - name: conductive ring + name: flame creation conductive ring description: A standard mana-conductive ring that allows the user to summon artificial flames. suffix: Flame creation components: @@ -69,7 +87,7 @@ - type: entity id: CP14ClothingRingFireball parent: CP14ClothingRingBase - name: conductive ring + name: fireball conductive ring description: A standard mana-conductive ring that allows the user to summon fireballs. suffix: Fireball components: @@ -87,7 +105,7 @@ - type: entity id: CP14ClothingRingCureWounds parent: CP14ClothingRingBase - name: conductive ring + name: cure wounds conductive ring description: A standard mana-conductive ring that allows the user to heal physical injuries. suffix: Cure Wounds components: @@ -105,7 +123,7 @@ - type: entity id: CP14ClothingRingShadowStep parent: CP14ClothingRingBase - name: conductive ring + name: shadow step conductive ring description: A standard mana-conductive ring that allows the user to step throught shadows. suffix: Shadow step components: @@ -123,7 +141,7 @@ - type: entity id: CP14ClothingRingShadowGrab parent: CP14ClothingRingBase - name: conductive ring + name: shadow grab conductive ring description: A standard mana-conductive ring that allows the user to summon grabbing shadow hand. suffix: Shadow grab components: @@ -141,8 +159,8 @@ - type: entity id: CP14ClothingRingEarthWall parent: CP14ClothingRingBase - name: conductive ring - description: A standard mana-conductive ring that allows the user to heal physical injuries. + 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 @@ -156,28 +174,10 @@ spells: - CP14ActionSpellEarthWall -- type: entity - id: CP14ClothingRingIceFloor - parent: CP14ClothingRingBase - name: conductive ring - description: A standard mana-conductive ring that allows the user to heal physical injuries. - suffix: Ice floor - components: - - type: Sprite - layers: - - state: brass_ring - - state: saphhire_stone_small - - type: CP14SpellStorageRequireAttune - - type: CP14MagicAttuningItem - - type: CP14SpellStorageAccessWearing - - type: CP14SpellStorage - spells: - - CP14ActionSpellIceFloor - - type: entity id: CP14ClothingRingSphereOfLight parent: CP14ClothingRingBase - name: conductive ring + 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: @@ -195,7 +195,7 @@ - type: entity id: CP14ClothingRingFlashLight parent: CP14ClothingRingBase - name: conductive ring + name: flash conductive ring description: A standard mana-conductive ring that allows the user to create a bright flash of light that blinds enemies. suffix: Flash Light components: 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 23f2f5bc3e..9e931e9eef 100644 --- a/Resources/Prototypes/_CP14/Entities/Markers/Spawners/Random/Loot/spawners.yml +++ b/Resources/Prototypes/_CP14/Entities/Markers/Spawners/Random/Loot/spawners.yml @@ -42,7 +42,7 @@ - id: CP14DyeBlack - id: CP14EnergyCrystalSmall - id: CP14Bucket - - id: CP14OldLantern + - id: CP14CrystalLampBlueEmpty - id: CP14Scissors - id: CP14BaseSharpeningStone - id: CP14Rope @@ -78,7 +78,7 @@ - id: CP14ClothingRingShadowStep - id: CP14ClothingRingShadowGrab - id: CP14ClothingRingEarthWall - - id: CP14ClothingRingIceFloor + - id: CP14ClothingRingManaGift - id: CP14ClothingRingSphereOfLight - id: CP14ClothingRingFlashLight - !type:GroupSelector diff --git a/Resources/Prototypes/_CP14/Entities/Markers/Spawners/Random/battle_royale_temp.yml b/Resources/Prototypes/_CP14/Entities/Markers/Spawners/Random/battle_royale_temp.yml deleted file mode 100644 index 2b942f2117..0000000000 --- a/Resources/Prototypes/_CP14/Entities/Markers/Spawners/Random/battle_royale_temp.yml +++ /dev/null @@ -1,84 +0,0 @@ -- type: entity - id: CP14RandomSpawnerBattleRoyaleLootWeapon - name: Loot - suffix: Weapon - description: lol - parent: MarkerBase - categories: [ ForkFiltered ] - components: - - type: Sprite - layers: - - state: red - - sprite: _CP14/Objects/Weapons/Melee/BattleHammer/battleHammer.rsi - state: icon - - type: RandomSpawner - prototypes: - - CP14BaseBattleHammer - - CP14BaseBattleStaff - - CP14BaseDagger - - CP14BaseDagger - - CP14BaseTwoHandedSword - - CP14TwoHandedSwordScythe - - CP14BaseSharpeningStone - - CP14OldLantern - - ClothingBackpackCargo - - ClothingBackpackCargo - - ClothingBackpackCargo - - ClothingBackpackCargo - - CP14CopperCoin5 - - CP14CopperCoin5 - - CP14CopperCoin5 - - CP14CopperCoin5 - - CP14CopperCoin1 - - CP14CopperCoin1 - - CP14CopperCoin1 - - CP14SilverCoin1 - - CP14SilverCoin1 - - CP14SilverCoin1 - - CP14AuraNodeBase - - CP14AuraNodeBase - - CP14AuraNodeBase - - CP14AuraNodeBase - -- type: entity - id: CP14RandomSpawnerBattleRoyaleLootTools - name: Loot - suffix: Tools - description: lol - parent: MarkerBase - categories: [ ForkFiltered ] - components: - - type: Sprite - layers: - - state: red - - sprite: _CP14/Clothing/Cloak/Armor/redguardarmor.rsi - state: icon - - type: RandomSpawner - prototypes: - - CP14DirtBlock10 - - CP14StoneBlock10 - - CP14WoodLog - - CP14WoodenPlanks10 - - CP14Nail1 - - CP14Nail10 - - CP14Cauldron - - CP14Pestle - - CP14AlchemyNormalizer - - CP14CopperCoin5 - - CP14CopperCoin5 - - CP14CopperCoin5 - - CP14CopperCoin5 - - CP14CopperCoin1 - - CP14CopperCoin1 - - CP14CopperCoin1 - - CP14SilverCoin1 - - CP14SilverCoin1 - - CP14SilverCoin1 - - CP14AuraNodeBase - - CP14AuraNodeBase - - CP14AuraNodeBase - - CP14AuraNodeBase - - CP14String - - CP14String - - CP14String - - CP14Cloth10 \ No newline at end of file diff --git a/Resources/Prototypes/_CP14/Entities/Mobs/Species/base.yml b/Resources/Prototypes/_CP14/Entities/Mobs/Species/base.yml index 2bef2e3186..a59f93a7ba 100644 --- a/Resources/Prototypes/_CP14/Entities/Mobs/Species/base.yml +++ b/Resources/Prototypes/_CP14/Entities/Mobs/Species/base.yml @@ -213,7 +213,7 @@ energy: 100 - type: CP14MagicEnergyDraw energy: 1 - delay: 6 # 10m to full restore + delay: 3 # 5m to full restore - type: CP14MagicUnsafeDamage - type: CP14MagicUnsafeSleep - type: CP14MagicAttuningMind diff --git a/Resources/Prototypes/_CP14/Entities/Objects/Tools/flashlight.yml b/Resources/Prototypes/_CP14/Entities/Objects/Tools/flashlight.yml index 72db5e3d76..59dd5b3d3b 100644 --- a/Resources/Prototypes/_CP14/Entities/Objects/Tools/flashlight.yml +++ b/Resources/Prototypes/_CP14/Entities/Objects/Tools/flashlight.yml @@ -1,19 +1,20 @@ - type: entity - parent: BaseItem - id: CP14OldLantern - name: old lantern - description: Relic of the Techomagic's past. Large, weighty, unpractical. At least feels good to crack some skulls with it. + parent: + - BaseItem + - CP14BaseCrystalSlot + id: CP14CrystalLamp + abstract: true + name: crystal lamp + description: A device that converts energy from crystals into a source of directional light. Convenient for traveling categories: [ ForkFiltered ] components: - type: Sprite - sprite: _CP14/Objects/Tools/magic-lamp.rsi + sprite: _CP14/Objects/Tools/crystal_lamp.rsi noRot: false - layers: - - state: lamp - type: Clothing equipDelay: 0.25 unequipDelay: 0.25 - sprite: _CP14/Objects/Tools/magic-lamp.rsi + sprite: _CP14/Objects/Tools/crystal_lamp.rsi quickEquip: false breakOnMove: false slots: @@ -24,7 +25,7 @@ wideAnimation: CP14WeaponArcSlash damage: types: - Blunt: 8 + Blunt: 3 soundHit: collection: MetalThud cPAnimationLength: 0.25 @@ -32,13 +33,89 @@ sound: path: /Audio/Items/toolbox_drop.ogg - type: Item - sprite: _CP14/Objects/Tools/magic-lamp.rsi - storedRotation: -90 + size: Normal + shape: + - 0, 0, 1, 1 + sprite: _CP14/Objects/Tools/crystal_lamp.rsi - type: Rotatable - type: PointLight - color: "#47F8FFFF" + enabled: false + color: "#FFFFFF" + mask: /Textures/_CP14/Effects/LightMasks/crystal_cone.png autoRot: true - energy: 4 - radius: 4 - netsync: false + energy: 3 + radius: 6 - type: Appearance + - type: GenericVisualizer + visuals: + enum.CP14MagicSlotVisuals.Inserted: + crystal: + True: { visible: true } + False: { visible: false } + enum.CP14MagicSlotVisuals.Powered: + light: + True: { visible: true } + False: { visible: false } + - type: CP14MagicLantern + - type: CP14MagicEnergyDraw + energy: -0.1 + delay: 3 + - type: ItemSlots + slots: + crystal_slot: + insertSound: + path: /Audio/_CP14/Items/crystal_insert.ogg + params: + variation: 0.05 + ejectSound: + path: /Audio/_CP14/Items/crystal_eject.ogg + params: + variation: 0.05 + ejectOnInteract: false + name: cp14-magic-energy-crystal-slot-name + whitelist: + components: + - CP14MagicEnergyCrystal + +- type: entity + parent: CP14CrystalLamp + id: CP14CrystalLampBlueEmpty + name: blue crystal lamp + suffix: Blue, Empty + components: + - type: Sprite + layers: + - state: icon + - state: light_icon + color: "#47F8FF" + visible: false + map: ["crystal"] + - state: light_icon + color: "#47F8FF" + visible: false + map: ["light"] + shader: unshaded + - type: PointLight + color: "#47F8FF" + +- type: entity + parent: CP14CrystalLamp + id: CP14CrystalLampOrangeEmpty + name: orange crystal lamp + suffix: Orange, Empty + components: + - type: Sprite + layers: + - state: icon + - state: light_icon + color: "#d68f4d" + map: ["crystal"] + visible: false + - state: light_icon + color: "#d68f4d" + map: ["light"] + visible: false + shader: unshaded + - type: PointLight + color: "#d68f4d" + energy: 5 \ No newline at end of file diff --git a/Resources/Prototypes/_CP14/Entities/Structures/Furniture/wallmount.yml b/Resources/Prototypes/_CP14/Entities/Structures/Furniture/wallmount.yml index 80b03c4783..3f6f029c7e 100644 --- a/Resources/Prototypes/_CP14/Entities/Structures/Furniture/wallmount.yml +++ b/Resources/Prototypes/_CP14/Entities/Structures/Furniture/wallmount.yml @@ -103,38 +103,6 @@ range: 5 sound: path: /Audio/Ambience/Objects/fireplace.ogg - - -- type: entity - id: CP14WallmountLamp - name: eternal flame lamp - parent: CP14BaseWallmount - description: A fragile eternal blue fire as proof of the superiority of magic over nature. - components: - - type: Sprite - sprite: _CP14/Structures/Wallmount/wallmount_lamp.rsi - layers: - - state: base - - state: on - shader: unshaded - map: [ "light" ] - - type: PointLight - energy: 2 - radius: 8 - netsync: false - color: "#b0eaf6" - - type: Appearance - #TODO toggleable - - type: Damageable - damageContainer: Inorganic - - type: Destructible - thresholds: - - trigger: - !type:DamageTrigger - damage: 40 - behaviors: - - !type:DoActsBehavior - acts: [ "Destruction" ] - type: entity id: CP14WallmountBarShelfA diff --git a/Resources/Prototypes/_CP14/Entities/Structures/Furniture/wallmount_lamp.yml b/Resources/Prototypes/_CP14/Entities/Structures/Furniture/wallmount_lamp.yml new file mode 100644 index 0000000000..104826fe69 --- /dev/null +++ b/Resources/Prototypes/_CP14/Entities/Structures/Furniture/wallmount_lamp.yml @@ -0,0 +1,91 @@ +- type: entity + id: CP14WallmountLampEmpty + name: crystal wall lamp + suffix: Empty + parent: + - CP14BaseWallmount + - CP14BaseCrystalSlot + description: A simple wallmount magical device that converts crystal energy into bright light. + components: + - type: Sprite + sprite: _CP14/Structures/Wallmount/wallmount_lamp.rsi + layers: + - state: base + - state: crystal + map: [ "crystal" ] + visible: false + - state: on + color: "#b2ceeb" + shader: unshaded + map: [ "light" ] + visible: false + - type: PointLight + energy: 2 + radius: 8 + color: "#b2ceeb" + enabled: false + - type: Appearance + - type: GenericVisualizer + visuals: + enum.CP14MagicSlotVisuals.Inserted: + crystal: + True: { visible: true } + False: { visible: false } + enum.CP14MagicSlotVisuals.Powered: + light: + True: { visible: true } + False: { visible: false } + - type: Damageable + damageContainer: Inorganic + - type: Destructible + thresholds: + - trigger: + !type:DamageTrigger + damage: 40 + behaviors: + - !type:DoActsBehavior + acts: [ "Destruction" ] + - type: CP14MagicLantern + - type: CP14MagicEnergyDraw + energy: -0.1 + delay: 6 + - type: Construction + graph: CP14WallmountLampEmpty + node: CP14WallmountLampEmpty + +- type: entity + id: CP14WallmountLamp + suffix: Small crystal + parent: CP14WallmountLampEmpty + components: + - type: Sprite + sprite: _CP14/Structures/Wallmount/wallmount_lamp.rsi + layers: + - state: base + - state: crystal + map: [ "crystal" ] + visible: true + - state: on + color: "#b2ceeb" + shader: unshaded + map: [ "light" ] + visible: true + - type: PointLight + enabled: true + - type: ItemSlots + slots: + crystal_slot: + startingItem: CP14EnergyCrystalSmall + insertSound: + path: /Audio/_CP14/Items/crystal_insert.ogg + params: + variation: 0.05 + ejectSound: + path: /Audio/_CP14/Items/crystal_eject.ogg + params: + variation: 0.05 + ejectOnInteract: false + name: cp14-magic-energy-crystal-slot-name + whitelist: + components: + - CP14MagicEnergyCrystal \ No newline at end of file diff --git a/Resources/Prototypes/_CP14/Loadouts/Jobs/general.yml b/Resources/Prototypes/_CP14/Loadouts/Jobs/general.yml index aab45a1f2b..f75c85e422 100644 --- a/Resources/Prototypes/_CP14/Loadouts/Jobs/general.yml +++ b/Resources/Prototypes/_CP14/Loadouts/Jobs/general.yml @@ -297,10 +297,19 @@ maxLimit: 2 loadouts: - CP14ClothingRingCureWounds + - CP14ClothingRingManaGift + - CP14EnergyCrystalSmall + - CP14CrystalLampOrangeEmpty + - CP14BaseSharpeningStone + - CP14Scissors + - CP14Bucket + - CP14Rope - CP14PenFeather - - CP14Paper - - CP14CopperCoin10 - - CP14BaseCrowbar + - CP14PaperFolderBlue + - CP14SilverCoin5 + - CP14BaseDagger + - CP14BaseSickle + - CP14BasePickaxe - type: loadout id: CP14ClothingRingCureWounds @@ -308,6 +317,48 @@ back: - CP14ClothingRingCureWounds +- type: loadout + id: CP14ClothingRingManaGift + storage: + back: + - CP14ClothingRingManaGift + +- type: loadout + id: CP14EnergyCrystalSmall + storage: + back: + - CP14EnergyCrystalSmall + +- type: loadout + id: CP14CrystalLampOrangeEmpty + storage: + back: + - CP14CrystalLampOrangeEmpty + +- type: loadout + id: CP14BaseSharpeningStone + storage: + back: + - CP14BaseSharpeningStone + +- type: loadout + id: CP14Scissors + storage: + back: + - CP14Scissors + +- type: loadout + id: CP14Bucket + storage: + back: + - CP14Bucket + +- type: loadout + id: CP14Rope + storage: + back: + - CP14Rope + - type: loadout id: CP14PenFeather storage: @@ -315,19 +366,31 @@ - CP14PenFeather - type: loadout - id: CP14Paper + id: CP14PaperFolderBlue storage: back: - - CP14Paper + - CP14PaperFolderBlue - type: loadout - id: CP14CopperCoin10 + id: CP14SilverCoin5 storage: back: - - CP14CopperCoin + - CP14SilverCoin5 - type: loadout - id: CP14BaseCrowbar + id: CP14BaseDagger storage: back: - - CP14BaseCrowbar \ No newline at end of file + - CP14BaseDagger + +- type: loadout + id: CP14BaseSickle + storage: + back: + - CP14BaseSickle + +- type: loadout + id: CP14BasePickaxe + storage: + back: + - CP14BasePickaxe \ No newline at end of file diff --git a/Resources/Prototypes/_CP14/Procedural/Demiplane/Modifiers/test.yml b/Resources/Prototypes/_CP14/Procedural/Demiplane/Modifiers/test.yml index ad32bd28ef..9fbe68433f 100644 --- a/Resources/Prototypes/_CP14/Procedural/Demiplane/Modifiers/test.yml +++ b/Resources/Prototypes/_CP14/Procedural/Demiplane/Modifiers/test.yml @@ -295,6 +295,7 @@ difficulty: 0.5 requiredTags: - CP14DemiplaneOpenSky + - CP14DemiplaneGrass layers: - !type:MobsDunGen minCount: 3 @@ -304,19 +305,31 @@ amount: 1 - type: cp14DemiplaneModifier - id: EnemySnakes - difficulty: 0.7 + id: SmallHydra + difficulty: 0.5 + requiredTags: + - CP14DemiplaneGrass layers: - !type:MobsDunGen - minCount: 1 - maxCount: 2 + minCount: 3 + maxCount: 6 groups: - - id: CP14MobPurpleSnake - amount: 1 - - id: CP14MobSmallPurpleSnake - amount: 1 - - id: CP14MobSpaceCobra - amount: 1 + - id: CP14MobDinoSmallHydra + amount: 3 + + +- type: cp14DemiplaneModifier + id: MonsterMole + difficulty: 0.5 + requiredTags: + - CP14DemiplaneUnderground + layers: + - !type:MobsDunGen + minCount: 3 + maxCount: 6 + groups: + - id: CP14MobMonsterMole + amount: 3 - type: cp14DemiplaneModifier id: EnemyMagmawind @@ -330,6 +343,35 @@ - id: CP14MobWatcherMagmawing amount: 1 +- type: cp14DemiplaneModifier + id: Rabbits + reward: 0.2 + generationWeight: 0.4 + requiredTags: + - CP14DemiplaneGrass + layers: + - !type:MobsDunGen + minCount: 1 + maxCount: 2 + groups: + - id: CP14MobRabbit + amount: 3 + +- type: cp14DemiplaneModifier + id: Boar + reward: 0.2 + difficulty: 0.2 + generationWeight: 0.4 + requiredTags: + - CP14DemiplaneGrass + layers: + - !type:MobsDunGen + minCount: 1 + maxCount: 3 + groups: + - id: CP14MobBoar + amount: 2 + - type: cp14DemiplaneModifier id: Chasm difficulty: 0.2 diff --git a/Resources/Prototypes/_CP14/Recipes/Construction/Graphs/Furniture/bonfire.yml b/Resources/Prototypes/_CP14/Recipes/Construction/Graphs/Furniture/bonfire.yml index 9dd540fdf7..cbcb88a292 100644 --- a/Resources/Prototypes/_CP14/Recipes/Construction/Graphs/Furniture/bonfire.yml +++ b/Resources/Prototypes/_CP14/Recipes/Construction/Graphs/Furniture/bonfire.yml @@ -35,3 +35,22 @@ - node: CP14WallmountTorch entity: CP14WallmountTorch + + +- type: constructionGraph + id: CP14WallmountLampEmpty + start: start + graph: + - node: start + actions: + - !type:DestroyEntity {} + edges: + - to: CP14WallmountLampEmpty + steps: + - material: CP14CopperBar + amount: 3 + doAfter: 3 + + - node: CP14WallmountLampEmpty + entity: CP14WallmountLampEmpty + diff --git a/Resources/Prototypes/_CP14/Recipes/Construction/furniture.yml b/Resources/Prototypes/_CP14/Recipes/Construction/furniture.yml index e56c67a528..7a8c2fd019 100644 --- a/Resources/Prototypes/_CP14/Recipes/Construction/furniture.yml +++ b/Resources/Prototypes/_CP14/Recipes/Construction/furniture.yml @@ -108,6 +108,26 @@ - !type:TileNotBlocked - !type:CP14WallRequired +- type: construction + crystallPunkAllowed: true + name: Crystal wall lamp + description: A simple wallmount magical device that converts crystal energy into bright light. + id: CP14WallmountLampEmpty + graph: CP14WallmountLampEmpty + startNode: start + targetNode: CP14WallmountLampEmpty + category: construction-category-furniture + icon: + sprite: _CP14/Structures/Wallmount/wallmount_lamp.rsi + state: base + objectType: Structure + placementMode: SnapgridCenter + canBuildInImpassable: true + canRotate: true + conditions: + - !type:TileNotBlocked + - !type:CP14WallRequired + - type: construction crystallPunkAllowed: true name: Wooden chest diff --git a/Resources/ServerInfo/_CP14/Guidebook_EN/Demiplanes.xml b/Resources/ServerInfo/_CP14/Guidebook_EN/Demiplanes.xml index 9e8a4e215e..bb1bd24754 100644 --- a/Resources/ServerInfo/_CP14/Guidebook_EN/Demiplanes.xml +++ b/Resources/ServerInfo/_CP14/Guidebook_EN/Demiplanes.xml @@ -33,7 +33,7 @@ When you decide to leave the demiplane after finding the portal, you must touch - + diff --git a/Resources/ServerInfo/_CP14/Guidebook_RU/Demiplanes.xml b/Resources/ServerInfo/_CP14/Guidebook_RU/Demiplanes.xml index b0377b72c2..ae50b207a7 100644 --- a/Resources/ServerInfo/_CP14/Guidebook_RU/Demiplanes.xml +++ b/Resources/ServerInfo/_CP14/Guidebook_RU/Demiplanes.xml @@ -33,7 +33,7 @@ - + diff --git a/Resources/Textures/_CP14/Effects/LightMasks/crystal_cone.png b/Resources/Textures/_CP14/Effects/LightMasks/crystal_cone.png new file mode 100644 index 0000000000000000000000000000000000000000..3f30cf545839351953250cf018e3768c9dba95a8 GIT binary patch literal 22127 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 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 2e66d5b755..66981a14e9 100644 --- a/Resources/Textures/_CP14/Effects/Magic/spells_icons.rsi/meta.json +++ b/Resources/Textures/_CP14/Effects/Magic/spells_icons.rsi/meta.json @@ -5,17 +5,23 @@ "y": 32 }, "license": "CLA", - "copyright": "Created by .kreks.", + "copyright": "Created by .kreks., mana_gift by TheShuEd", "states": [ { "name": "cure_wounds" }, { - "name": "flame_creation" + "name": "earth_wall" }, { "name": "fireball" }, + { + "name": "flame_creation" + }, + { + "name": "flash_light" + }, { "name": "ice_dagger" }, @@ -23,22 +29,16 @@ "name": "ice_shards" }, { - "name": "shadow_step" + "name": "mana_gift" }, { "name": "shadow_grab" }, { - "name": "ice_floor" - }, - { - "name": "earth_wall" + "name": "shadow_step" }, { "name": "sphere_of_light" - }, - { - "name": "flash_light" } ] } \ No newline at end of file diff --git a/Resources/Textures/_CP14/Objects/Tools/crystal_lamp.rsi/equipped-BELT1.png b/Resources/Textures/_CP14/Objects/Tools/crystal_lamp.rsi/equipped-BELT1.png new file mode 100644 index 0000000000000000000000000000000000000000..5e390940699f80bc4b886062beb5285c8b12664b GIT binary patch literal 399 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D%zJw06NG7Me6=+94-?L+iQ0 zzP{%*R=D20>s!8PL+k$FFaP2rV^7~Y>ozSt_Ok8;@Auq)xe8@Yem`~U^L;~Ehl`Vz qtllE>?Y&x$_WAYCZZR=56n^8>UmxVQJi|>39@@c85E1-=gHoeNp5 zIo=k{y|e0xnfdmn`}`@pEx#W>x&NUH3(x`}h%-5lvGd~W zj`AO}zuRKcx%E?Mo{HUOU*t;-Hj>F+yZ%mt&S}>@wKILa-v*eaM(%sb0kIoM zt~gt0`?&e$sl^-Tzc}~!^^20<$G)$=+R%P-aaNApekYOEM^?FuO`~7Wd%?bN*LfZk2EJ+pfRv^0X75L^Zp&>rVc9E$={1 rl-I>qfA3fBd0e%s^SlrP!?zknZ%JRp&Mdz5AV+w*`njxgN@xNAAyBbA literal 0 HcmV?d00001 diff --git a/Resources/Textures/_CP14/Objects/Tools/crystal_lamp.rsi/icon.png b/Resources/Textures/_CP14/Objects/Tools/crystal_lamp.rsi/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..8e0c78f88b954da2a9b6d10d83b1a20f0521b5d1 GIT binary patch literal 356 zcmV-q0h|7bP)Px$9!W$&R9J=Wl`%`hKp2LfirB3~LO?u|(ewv6se`B$6goP#O9u!21+E4Eg;Rfm zf5F8mpvz_G(h#r>Ewo#^oP#84ap@Nb4)-j__rmwxd&j*TSS%Kcr38b1*9`hyQ)Wi3 z%;v9e9{}t%>O4F>i)V?rzqu?<{@81aZ(&Q)q=L}os|rFB4JUb~?9=vpE2#XV=xn5Fkkt z{KKoF);g}vz-*eK^>>}eP=fdaS&yP5f)Px$|4BqaRCt{2+CNX*Ko|z_CslW(L=jMPSs20)50;R+c!>B@sYr|gWyq8vOQ)(I zfQbpQF?L36KR}1BX(l8OEHP3t#In@H0ueS?u9GWJDT#CMg;srjQicro_;PuD%liUE zL_|bHL_|bH#%k5q`ftv=?}d%f#o_`0^NpwL(>xo*55Osv^)MO3^?cpwUmIn0`qywh zUk{TpoKo3J6}*%V+~2EX#aV)ie*gfYIMQEEKjyOL)ap&G90dTs@{W%VME42+nKw4c zWB*h<2s1xNDrXY$S0G;~;_mha@gU6I-QFNyC_Zb>B;p5fb(sJF4x79B{`cp~nZ!y3 zG#V`gy%DM#J4O{y-Pl3U8==u?S*rl?OAr8}ID%S#3jpYL!|wX$UFlT7CbL=PYygt^Z5woyko zE7LiGf4<}DdcNM?+(LBr6tJ!EuBYDj{5&90N@+}5zX!=h_B1E T83>=m00000NkvXXu0mjfCEo-p literal 0 HcmV?d00001 diff --git a/Resources/Textures/_CP14/Objects/Tools/crystal_lamp.rsi/inhand-right.png b/Resources/Textures/_CP14/Objects/Tools/crystal_lamp.rsi/inhand-right.png new file mode 100644 index 0000000000000000000000000000000000000000..3f82b6fc63c38a181bf4002924953b9e36bf2f84 GIT binary patch literal 587 zcmV-R0<`^!P)Px%1xZ9fRCt{2+A(X}Ko|z#Hzj+)Ml{X!ymXL;Y7hjvXfPoZ63FNj51u?^$yE9S zGGz+MFX-H%YqmC<jAC>ZZwd@QgO!B^X%tWu8mru>KP?NlmDMV%gnpd~*gHUzTAwJ*l6dhX`=gKs}pz^_bgEq4}th0>!0-rt~s%|=5^v~+eV>Pmf zlB*^koAVm&06z#-rCL{$I|F_YF02TJqBCuH+LYNE`5OsQ3TYrnRdt+^0qgP;=cLqGq1zx|i-ljJyz%uU) zv|4R6FB;aHoko-SL8v^>1#W&pZfxWG`43!1ja+wMjn05UKZO)qxx6!=W4wCoy%W*@ ZRU~nNyuzKA&rnN%$GF8*ea)KBB`lI!J_u38Wr|*Pp=07H;aK-&< zd-)RCnNrzIFg*|2|Gv%turbo|?4!!HOJZhceQUh0;O3)Rw_>w{_{QgDxihRA8AF1e zz1ksuEj6wzx2Kv>eWuxVqfKeSreAaz7gTe~DWM4fdj(~Y literal 0 HcmV?d00001 diff --git a/Resources/Textures/_CP14/Objects/Tools/crystal_lamp.rsi/light_equipped-BELT2.png b/Resources/Textures/_CP14/Objects/Tools/crystal_lamp.rsi/light_equipped-BELT2.png new file mode 100644 index 0000000000000000000000000000000000000000..f9308dbf57259fbbfbae9ab1898da39241f049fd GIT binary patch literal 270 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D$|PI$UFhE&XX zd()8Xkb%gtj{#hKT&;PfA6RVLroVh*8dJr(uzPtyL3x>0he(sc(k|Jgm8N`sdP`L{ z9{z9Me*Adz^rym1KyyH#K|X7L%uA(?&m~Q||24i(WU2gC2 zp3XMkp}f*$``xe~lPfcgCS)J}&+s+q?#G$00-mvb23lQi_xrh%U-~TjRUn6Wy85}S Ib4q9e09W*D#{d8T literal 0 HcmV?d00001 diff --git a/Resources/Textures/_CP14/Objects/Tools/crystal_lamp.rsi/light_icon.png b/Resources/Textures/_CP14/Objects/Tools/crystal_lamp.rsi/light_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..724a00e142606a91cdd1f5e1ee92d2af4865d7a2 GIT binary patch literal 204 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE0wix1Z>k4UjKx9jP7LeL$-D$|+B{txLp(Z@ z6C_v{Cy4YgX)(IhO#1f!tVD=}MAHp^wLOQIwsCI%7CY$@PbAMBp7LuOH#`n&J&67=#EzG7XqQJZM*VmV4mD{>`{3R>uC#5=^nC-dU{wvqKhx>nhww6nOR4B{L z?7aEP`u{xh>;Am>*Bvh_7vOxLE6{*T0tgsx9gw@S>-^5&Ko>E1y85}Sb4q9e0DF#0 At^fc4 literal 0 HcmV?d00001 diff --git a/Resources/Textures/_CP14/Objects/Tools/crystal_lamp.rsi/light_inhand-left.png b/Resources/Textures/_CP14/Objects/Tools/crystal_lamp.rsi/light_inhand-left.png new file mode 100644 index 0000000000000000000000000000000000000000..fbc6ecc1ecadbecc26ac9ff5a2bfdca5c148f171 GIT binary patch literal 311 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I0wfs{c7_5;#^NA%Cx&(BWL^R}A3a?hLoyoQ zUbp9CbQEFxaDKmw^HRap7qm2vFvd77yqLFAa=JkKgdNSo3#Ryr2p#Rx5saJ|aH8Xh zWuu|l?$#&2w|+ibtv@qU&cOu){wGC+J@WQHvvS^#MJZ9+*3aI?`z(Oz0pA(Ta)v1r zHoxy*llx(jZO8=vvnz{tw6{0;B{2M5VP5w4(X}~NdHIijx!Av9KXHRideW}+u*1EU zrq(6b&R-7I-}gsU2?Q2#)C4Y?^W$}t{_^52yFPCJpJ@K&LQG%NeQAy5ZyDY$5PO)X zGiC7+@vnv9Tk4u#MBTNVCGRgRpCGblnp}YIF8+)EtC%-^b4r_bTT}`ZAfB#%F6*2U FngGs3gzW$T literal 0 HcmV?d00001 diff --git a/Resources/Textures/_CP14/Objects/Tools/crystal_lamp.rsi/light_inhand-right.png b/Resources/Textures/_CP14/Objects/Tools/crystal_lamp.rsi/light_inhand-right.png new file mode 100644 index 0000000000000000000000000000000000000000..61d9ef69e5e173e1d2547f6a4ef75810cfeaede9 GIT binary patch literal 313 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I0wfs{c7_5;#^NA%Cx&(BWL^R}pFLe1LoyoQ zUbp9CbQEFxaC}n63X`N52gipjdJ8XPOr2H8S;%qn-a*a)jTGTl7sE&KE*&jSZYutZ zBiGzbRq1+veecYZ=K7VFc?3Z=F#MUWr9CYt{fzo;$&+2H|Ll+}o&J?AaMq(|@0VLF zeg8Ahuzcs;vnLlWF}r^t&U(tyBj=Vke*JReT=|!qHO#-}=%2}2`SS6ur+T|rfBLb> z^2NW)YxadcIB`_~+FmEdm z(>?#BK}CC-&e7?H`)u3;mdH)j+Q0ALUFj2+C9*X}3=AC4*(P0c(d|j&0C}Im)78&q Iol`;+0BWm+oB#j- literal 0 HcmV?d00001 diff --git a/Resources/Textures/_CP14/Objects/Tools/crystal_lamp.rsi/meta.json b/Resources/Textures/_CP14/Objects/Tools/crystal_lamp.rsi/meta.json new file mode 100644 index 0000000000..f2bf31c997 --- /dev/null +++ b/Resources/Textures/_CP14/Objects/Tools/crystal_lamp.rsi/meta.json @@ -0,0 +1,49 @@ +{ + "version": 1, + "license": "CLA", + "copyright": "Created by jaraten (Github/discord) for CrystallPunk", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "icon" + }, + { + "name": "inhand-left", + "directions": 4 + }, + { + "name": "inhand-right", + "directions": 4 + }, + { + "name": "equipped-BELT1", + "directions": 4 + }, + { + "name": "equipped-BELT2", + "directions": 4 + }, + { + "name": "light_icon" + }, + { + "name": "light_inhand-left", + "directions": 4 + }, + { + "name": "light_inhand-right", + "directions": 4 + }, + { + "name": "light_equipped-BELT1", + "directions": 4 + }, + { + "name": "light_equipped-BELT2", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/_CP14/Objects/Tools/magic-lamp.rsi/inhand-left.png b/Resources/Textures/_CP14/Objects/Tools/magic-lamp.rsi/inhand-left.png deleted file mode 100644 index fccae91ce9fa8216e8081df2e9ca43f8f7a809e4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 687 zcmV;g0#N;lP)Px%X-PyuRCt{2+CNAeaTEve@7Y9B>=2AmYfURbJg~YL1hGqT$`Ax`E*F17NnsdIusjP9Hs0|3Yp=2}5o001~T1!}tWICJ7NAkbLi?(%n8DtNt@AHKJ_5#$ zr5Bz6HVaTLDA+uv$gDB?0vI|L?2X_zwrs^4icR3g`yIP!HAP+kW5>z`#a66RQ9<@u ziXf}z$O~ZX*idW&JDb+;;`#hXOJAQ?LHY*K=)HyyKCQSA#u#IaF~%5Uj4{Ss^j~j> z0YFpj?E+ef^vBA|Qq(tcADwC*R+pl!MEVH`j8DU-hqNWf}bgqjks4jv#3P^u52E;C9Nu7ua53gFbjrciijPx%WJyFpRCt{2+COL$Q5*;GZ#0&mK>{JQ79)~s4_fMwvr_Ellpz#KW^oY2MKqg> z6$fX9E_Dwc)whSPx=5zpfeCuMU)2zDHqg0XUIY(0(5v2hummXmWjzJ0KivWM^sUO73+G_007|dm&veFrtlQ_eXV_v`vnq; zg0tslF)=x1tp2*C?=xVK`vo?N1$0h-lJeU^0i@NOUXQ1Yy#n6_VZVSKp#X-DpF|x$ z%|QU~wm;ygtgZ$~D1d~b;KZr(e;jWgX$@?@KX1@#*gcb z+e>qSxDCo&j||L{pe+A=076q>r%^??$3^H%BN&?|tO#EN_G+6l`ylejH&iyVde<8y QBme*a07*qoM6N<$f+#OLQ2+n{ diff --git a/Resources/Textures/_CP14/Objects/Tools/magic-lamp.rsi/lamp.png b/Resources/Textures/_CP14/Objects/Tools/magic-lamp.rsi/lamp.png deleted file mode 100644 index a87d17e841643309a626c55384a62d03c719482b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 606 zcmV-k0-^nhP)Px%7)eAyRCt{2+P_QOU>FDRuRp6*>_O3_Qfm=WP`V@tg8#q`hs(`QH#^)P;3&8` z+~nZw)J;l35FJVfF-wV4PQ-9(-TW0UsQnc`FRYy ze1(O@929`3;0M&mBe0)%J^!5l_Wg&BF-g9t0PfKNZl;{JvDf~MWGay~^TkhroH2=w zy&Y`q?I34NN~aMs%;{#nVNQ$Zkr%+6iage3*f1lH;}YKlAFt{-dHQ>-TUzD_fp z`wPi5@)Pw3)I1lv>sC+AbG7f$XPw{H9}x9jcfPa$qMe~|Pd@w%(rR=%hJ6K~!DXy2c&`qvnfOeR$IuRHn!!ga+V?hkk|W@2HneN*zM zrXGQ){(x{iZoarbAeg=H7$5Y$N~X&+U;GsKU$6jKFCc58dqCs1j{eJU9pm3`^)yPP snJ?}T`E}(hd6dfvfHf0!iU(bj2xmDPmiNRs=Z#2_p{S1J4y=)>;ubW+gir>-&KP zYu77wM#F!X8ThRP000000G3T5&q;^%Z6is){c#~ldiA0vNq_qF_rG&}-?vnBJ)!Yz z(@4_h`qOlu{o5Y%iPJ9@H<~6GbR|jEN{}}EtT#}1cr8h~ep*%Q^o=(oVa4U2*VZF- zx*xR@K2djgt?sa&9;;RYwUaAFKSz?@Ec!a{jPozG6^2HVcETr_{q5vRlJp@-y!rK| z95o=S@9O;Wi+|e5Rc1TC{GzD7dl%Pur<^-rBYH0Bwj-t+ZjbrIdAQnJ;CW$9?bfLz zX(w)I!%XUdZ?{5ffa?jzsq~U0+xE8A4>!kbpy^i8qsNra=we@J>7kQWFs(%6Y>CZj{N&eM<+!t#*!t$-* z000000C?!IzHNe_WP+e%>_lxI&U1p_gTwl^nO&RA+X>!HVr+$>u`|-sYm?GsX4-XP z#>)|4r{B(cgG}S|@M;9aji&jh`%#s0NyE`NbIk7hq56~4>a#XMcMKM5tMG%BP!)mX1}cg5B@f2hyHLh&TM%XXT9ry>BZUE z8eosP@TvpiM$`P?;;ifHv{xN4{TvVsx{7O|;tpDkV>ca{9(*lG-+}NJ<;O zET-GKVn2K>r}LqzluKzR6r=j?QZ-(>%_NQLyDIj3ow@S(d^4R#*za{zY`0Fmeqo}k z=}gjg>vR&Qw-G&`Wc0l|`KA|lANuc3Z4}qSv?B`kUBP)XIejymNm`sYlhZe|nWV*e zGdX=Tn@O6f0n2bJw3(#T0Gms^cW`88^EsEnRv1pQ$bEZB>LM+3+W`Oo0000000000 h00000004N%{sSG(x+keDDuDn1002ovPDHLkV1m5X!>0fM delta 896 zcmV-`1AqLz2c!p(F@Ii3L_t(|obBDgN*h5O$MK(0Laag3lLuGmMhjKzX)g&qdGX*? z=>zx}J+%+w3-l!l?ZIAhX>5C_Hiv8|v4t!WO0eMeu*|v}3hiuSWz6>j3uY%9cK&Yu zyP1LiNB{r;003at%oRE4d1EVa^wlBBcVK$7(O{ii~ocYl{kwg)tyY~(th{oAy; z#3}$mb2pZxZgiFY*QMkN=tft$_qbxg=FKaszB=76+VPgvjjq&<`f1x*t*mxCLpy^VV2@XE!}BmZTkTIk&$ZUP_WahoMt>z&Z!`jXj-T{7^f*%x&ivKjb&|ZsQzp zm308t{cTA%fq%$$+_bsG`f@e5!1K8kwOc2Wq@AFt^*G4~uH6dB0k#KZb3k$@xSE|D z5Hxq=!RcE`Ng!HZL$$t!X~zerZ=HJ%unNG+s;_7`Qc(BQ?{(7s{a!~w-BUCiX=T-) z`bplViE@B>`ZEtfl6yIz@X4A$7_N0300000Fw30%34dz_XN{tRu}%iyd1EWi&P__m z^jwi3SPzQcH8T)1J~x?dv*BC-q?;l5v)&->yxC{VsjooL+>L*Bzo=HNC>oA(ZD!wt zwa03my!q#TIduh?5$9+)QmtCaZ6+YDjY?bFKRk-d)JDvkfn+>M|5Hxq=zfI2C&Q3cOfb4TXdC*l*_Y~AU zl?UCz&jHRQL4(Oz000000000000000000000Dk}g000000059QXKHi0wm{OPOutJ~ zvR>eegJ(`Hk28rE2hY-)q-i0gv)-UkO-|QrdS0BZN4g*-oiAFG(?!|7E|?d8s?&L2 z)vA>=2qnL1=juT zqgAGV-xtR*07>k44ofy`glX(ebvv|5VhE&XX zd&e+~$x(#uLFX}Vj>d$iibob#blJ9Cou@RnH}q79SacMtVnXJ|ux>{trO8T97z(HJ zysnA2|8URV_-eB_6VTN9@DN|0SZC>Gv-a*)otsatSRFMfL-c^{4$Fr7x9`8vPuytr z?U(eOH7jOW=)bm^%?{MU!0<0ry!d2X|FN{mfv*LsWF5q-qz@#O_RRjfbaMEG=+B$_ zZkq9f6`~TB(Ruzi^;BZ={0j|a`Gc=dJX2!B(|q@#)U~gcyTdoEJ6~A7qwVi{1(*bo8Gi%-0017)t&IQx00DDSM?wIu&K&6g00GiTL_t(|obB7aY8ycm zhT(61ye0yX!r<0P;U=gvxXL96a;>@qLt3|Pqt2~igH~QVGbv2G&5jrlM3a#1 zQuz7yMad?BuLMxmpnT;Y{6oGPl$9+`uLp3+y@vZT?zLAL!@YZTCKXV91@9rWi)%?c z867UwZy>nKi$~WfD7fz8(OtS=6QEXvk_N>^+(>Uf1{s}R4^T$+ewDBHl6>!1rPp}U z0C`l>vm4xbXrOYc{?-z&O1+l9t?)6A)R`h2dL&ySf?0000000000fb;qTcn0+HGy`aj00000 MNkvXXt^-0~f@VJVr2qf` literal 688 zcmeAS@N?(olHy`uVBq!ia0vp^4nTZ>gAGV-xtR*07>k44ofy`glX=O&z?9|b;uumf z=k48tUeb;d2R{CPleW0+h#brMZ;#fR9}JdXc!B-nz4jM-`5!5ZRDG4*f4=HXJy3Nd@5B2$(<3|n zzW?ycr%k8M!>3U;A<#i*H-n2tcrHU;!|%M5!~ljQ>4u|z2Y(*!>fdjhUxc9&O^MU1gulmlI?F-|HjB$)ScrEW_q~Hu84bCa93A>_;!VZRA zecBrH$DeP8?KwvA*%O$Rt{m_c{js6t?`=KykcD%*-=0tS`$xXmrkQDj&lLxq2kD&O zRb?2D90_e%EqZ5Cq+Z1(*Xp9VUJ18&GxmS|bvw__zX9U?TOpBu`>ovyzj?M!oNnY+ zXttW6CveVLErw)~^vzrcB#z!(!?fYsoTE1#k6xT^29noK=y{YA#wfAaVs>5T|Q7b*+0|D?Pt&d&b`V-E6Op#D#vSExP%nHsO&#t*xhe zZ2Y+#exI7I CrystallPunk migration zone end