diff --git a/Content.Server/Imperial/Medieval/Magic/Other/Spells/MedievalFoliantToHandTeleporter/FoliantToHandTeleporterComponent.cs b/Content.Server/Imperial/Medieval/Magic/Other/Spells/MedievalFoliantToHandTeleporter/FoliantToHandTeleporterComponent.cs
new file mode 100644
index 00000000000..f92729d56b6
--- /dev/null
+++ b/Content.Server/Imperial/Medieval/Magic/Other/Spells/MedievalFoliantToHandTeleporter/FoliantToHandTeleporterComponent.cs
@@ -0,0 +1,16 @@
+namespace Content.Server.Imperial.Medieval.Magic.MedievalFoliantToHandTeleporter;
+///
+/// Компонент телепортирует предмет по UID к пользователю в свободную руку при активации триггера.
+///
+///
+/// Вообще планируется использовать этот компонент для телепорта не только гримуара, но и других предметов.
+///
+[RegisterComponent, Access(typeof(FoliantToHandTeleporterSystem))]
+public sealed partial class FoliantToHandTeleporterComponent : Component
+{
+ [ViewVariables]
+ public EntityUid? ItemUid;
+
+ [DataField]
+ public string? KeyIn = "UseInHand";
+}
diff --git a/Content.Server/Imperial/Medieval/Magic/Other/Spells/MedievalFoliantToHandTeleporter/FoliantToHandTeleporterSystem.cs b/Content.Server/Imperial/Medieval/Magic/Other/Spells/MedievalFoliantToHandTeleporter/FoliantToHandTeleporterSystem.cs
new file mode 100644
index 00000000000..4d33ac21c1b
--- /dev/null
+++ b/Content.Server/Imperial/Medieval/Magic/Other/Spells/MedievalFoliantToHandTeleporter/FoliantToHandTeleporterSystem.cs
@@ -0,0 +1,32 @@
+using Content.Server.Imperial.Medieval.Magic.BindStoreOnEquip;
+using Content.Shared.Imperial.Medieval.Magic;
+using Content.Shared.Hands.EntitySystems;
+
+namespace Content.Server.Imperial.Medieval.Magic.MedievalFoliantToHandTeleporter;
+public sealed partial class FoliantToHandTeleporterSystem : EntitySystem
+{
+ [Dependency] private readonly SharedHandsSystem _handsSystem = default!;
+
+ public override void Initialize()
+ {
+ base.Initialize();
+ SubscribeLocalEvent(FindFoliant);
+ }
+
+ private void FindFoliant(EntityUid uid, FoliantToHandTeleporterComponent component, MedievalAfterSpawnEntityBySpellEvent args)
+ {
+ EntityUid playerUid = args.Performer;
+ var query = EntityQueryEnumerator();
+
+ while(query.MoveNext(out var folliantUID, out var bindComp))
+ {
+ if(bindComp.BindedEntity != playerUid) continue;
+ else TeleportItemToHand(playerUid, folliantUID); break;
+ }
+ }
+
+ private void TeleportItemToHand(EntityUid playerUid, EntityUid itemUid)
+ {
+ _handsSystem.TryForcePickupAnyHand(playerUid, itemUid);
+ }
+}
diff --git a/Content.Server/Imperial/Medieval/Magic/Other/Spells/MedievalFoliantToHandTeleporter/license.txt b/Content.Server/Imperial/Medieval/Magic/Other/Spells/MedievalFoliantToHandTeleporter/license.txt
new file mode 100644
index 00000000000..55b826b8d76
--- /dev/null
+++ b/Content.Server/Imperial/Medieval/Magic/Other/Spells/MedievalFoliantToHandTeleporter/license.txt
@@ -0,0 +1,2 @@
+license: This content is under ICLA. Copyright holder: Zakvielian (discord) (Read more on: https://wiki.imperialspace.net/ru/icla)
+copyright: "Zakvielian (discord)"
diff --git a/Content.Shared/Actions/SharedActionsSystem.cs b/Content.Shared/Actions/SharedActionsSystem.cs
index 9bb15c9fe08..55702d4b9e4 100644
--- a/Content.Shared/Actions/SharedActionsSystem.cs
+++ b/Content.Shared/Actions/SharedActionsSystem.cs
@@ -689,7 +689,7 @@ public bool AddAction(Entity performer,
return AddActionDirect(performer, (ent, ent));
}
- ///
+ /// 1
/// Adds a pre-existing action. This also bypasses the requirement that the given action must be stored in a
/// valid action container.
///
diff --git a/Resources/Locale/ru-RU/Imperial/Medieval/Magic/Spells/earth.ftl b/Resources/Locale/ru-RU/Imperial/Medieval/Magic/Spells/earth.ftl
index 533fb5d0806..7c4ae16701c 100644
--- a/Resources/Locale/ru-RU/Imperial/Medieval/Magic/Spells/earth.ftl
+++ b/Resources/Locale/ru-RU/Imperial/Medieval/Magic/Spells/earth.ftl
@@ -69,3 +69,10 @@ medieval-store-spells-earth-obelisk-middle-desc = Создайте в указа
medieval-store-spells-earth-obelisk-senior-name = Обелиск
medieval-store-spells-earth-obelisk-senior-desc = Создайте в указанном месте разрушаемый обелиск, который будет создавать волны шипов с каждым ударом.
+
+# Earth bed
+
+medieval-spell-speach-earth-bed = L̰ͧe͉ͩc̰̍ṭ̛ựs̰̅ ̰ͩT̰ͤe͉ͩṛ̛ṛ̛a̰ͤḛ̅
+
+medieval-store-spells-earth-bed-beginner-name = Ложе из земли
+medieval-store-spells-earth-bed-beginner-desc = Создайте в указаном месте не особо удобное место для сна. Стоимость 45 маны
diff --git a/Resources/Locale/ru-RU/Imperial/Medieval/Magic/Spells/light.ftl b/Resources/Locale/ru-RU/Imperial/Medieval/Magic/Spells/light.ftl
index 0c093b95dd6..ae0456a21fe 100644
--- a/Resources/Locale/ru-RU/Imperial/Medieval/Magic/Spells/light.ftl
+++ b/Resources/Locale/ru-RU/Imperial/Medieval/Magic/Spells/light.ftl
@@ -93,3 +93,10 @@ medieval-store-spells-light-sunstrike-senior-name = Солнечный луч
medieval-store-spells-light-sunstrike-senior-desc = Ускоренная версия солнечного луча. Стоимость 60 маны
MagicSpark = Магическая искра
+
+# Summon Foliant
+
+medieval-spell-speach-summon-foliant = E̸V͢O̸CÁ͠T͢IÓ̵ G̡RÍ̛M͢O̸I͜RÍÍ͠
+
+medieval-store-spells-magic-light-summon-foliant-beginner-name = Призыв гримура
+medieval-store-spells-light-summon-foliant-beginner-desc = Призывает связанный с вами гримуар. Стоимость 25 маны
diff --git a/Resources/Locale/ru-RU/Imperial/Medieval/Magic/Spells/vodka.ftl b/Resources/Locale/ru-RU/Imperial/Medieval/Magic/Spells/vodka.ftl
index 952e62796c1..27f3719bf42 100644
--- a/Resources/Locale/ru-RU/Imperial/Medieval/Magic/Spells/vodka.ftl
+++ b/Resources/Locale/ru-RU/Imperial/Medieval/Magic/Spells/vodka.ftl
@@ -59,3 +59,10 @@ medieval-store-spells-vodka-ice-dagger-middle-desc = Конвертируйте
medieval-store-spells-vodka-ice-dagger-senior-name = Совершенный ледяной кинжал
medieval-store-spells-vodka-ice-dagger-senior-desc = Конвертируйте манну в жидкость и охладите ее в руке для создания ледяного кинжала, который значительно острее обычного кинжала и исчезнет через 30 секунд. Стоимость 12 маны, перезарядка 1.5 секунды.
+
+# Water Orb
+
+medieval-spell-speach-water-orb = S̰ͧp̝ͥh̼ͨa̰ͤe͉ͩṛ̛a̰̍ ̰ͩA̰ͥq̰ͮựa̰ͤḛ̅
+
+medieval-store-spells-vodka-water-orb-beginner-name = Шарик воды
+medieval-store-spells-vodka-water-orb-beginner-desc = Небольшое количество воды, заточенное в сферу из тонкого льда. Стоимость 10 маны
diff --git a/Resources/Locale/ru-RU/Imperial/Medieval/medieval.ftl b/Resources/Locale/ru-RU/Imperial/Medieval/medieval.ftl
index 8bf96f46ec3..39547d5b396 100644
--- a/Resources/Locale/ru-RU/Imperial/Medieval/medieval.ftl
+++ b/Resources/Locale/ru-RU/Imperial/Medieval/medieval.ftl
@@ -5819,6 +5819,12 @@ ent-IceDaggerSenior = совершенный ледяной кинжал
ent-SparkBeginner = магическая искра
.desc = Огонёк скоро потухнет
.suffix = { "Средневековье" }
+ent-WaterOrbBeginner = Водяной шарик
+ .desc = Скорлупа скоро растает
+ .suffix = { "Средневековье" }
+ent-MedievalEarthBedBeginner = Ложе из земли
+ .desc = Говорят спать на твердой поверхности полезно
+ .suffix = { "Средневековье" }
ent-MedievalMagicLightningRune = грозовая руна
.desc = Используйте, чтобы изучить заклинание грозовой руны.
.suffix = { "СКИН, Средневековье" }
diff --git a/Resources/Prototypes/Imperial/Medieval/Magic/Spells/Earth/EarthBed/actions.yml b/Resources/Prototypes/Imperial/Medieval/Magic/Spells/Earth/EarthBed/actions.yml
new file mode 100644
index 00000000000..cf755f8512b
--- /dev/null
+++ b/Resources/Prototypes/Imperial/Medieval/Magic/Spells/Earth/EarthBed/actions.yml
@@ -0,0 +1,56 @@
+# Beginner
+
+- type: entity
+ id: MedievalActionEarthBedBeginner
+ name: medieval-store-spells-earth-bed-beginner-name
+ description: medieval-store-spells-earth-bed-beginner-desc
+ components:
+ - type: CastTraining
+ trainingResults:
+ - !type:AddMagicEssence
+ essenceAddProbability: 0.0007
+ bonusAddProbability: 1
+ addedEssences:
+ MagicMedievalVodka: 1
+ bonusEssences:
+ MagicMedievalVodka: 1
+ - type: ManaDrainSpell
+ manaDrain: 45
+ canUseWithoutMana: true
+ manaLowMessage: medieval-spell-speach-not-enough-mana-fire-spell
+ damageOnUseWithoutMana:
+ groups:
+ Burn: 20
+ - type: SpellCastEffect
+ effectProto: EarthBedSpellCastEffectBeginner
+ - type: MedievalTargetSpell
+ - type: Action
+ useDelay: 120
+ itemIconStyle: BigAction
+ sound: !type:SoundPathSpecifier
+ path: /Audio/Imperial/Medieval/mob_spawn_effect.ogg
+ icon:
+ sprite: Imperial/Medieval/Magic/Earth/EarthBed/icons.rsi
+ state: beginner
+ - type: TargetAction
+ checkCanAccess: false
+ targetingIndicator: false
+ range: 5
+ - type: WorldTargetAction
+ event: !type:MedievalSpawnSpellEvent
+ spawnedEntityPrototype: MedievalEarthBedBeginner
+ spawnType: SpawnOnMousePosition
+ speechPoints:
+ 0:
+ speech: medieval-spell-speach-earth-bed
+ color: "#838275"
+ hideChat: true
+ - type: ShowSpawnedEntity
+ sprites:
+ - drawedSprite:
+ sprite: Imperial/Medieval/Magic/Earth/EarthBed/projectiles.rsi
+ state: beginner
+ alwaysRender: true
+ spriteColor: "#574242"
+ outOfRangeColor: "#650000"
+ range: 5
diff --git a/Resources/Prototypes/Imperial/Medieval/Magic/Spells/Earth/EarthBed/effect.yml b/Resources/Prototypes/Imperial/Medieval/Magic/Spells/Earth/EarthBed/effect.yml
new file mode 100644
index 00000000000..e6d22faaf7c
--- /dev/null
+++ b/Resources/Prototypes/Imperial/Medieval/Magic/Spells/Earth/EarthBed/effect.yml
@@ -0,0 +1,19 @@
+#Beginner
+
+- type: entity
+ id: EarthBedSpellCastEffectBeginner
+ components:
+ - type: Sprite
+ sprite: Imperial/Medieval/SpellCastEffects/fire/nova.rsi
+ color: "#838275"
+ noRot: true
+ layers:
+ - state: beginner
+ shader: unshaded
+ - type: PointLight
+ radius: 2
+ energy: 2
+ color: "#838275"
+ - type: TimedDespawn
+ lifetime: 0.5
+
diff --git a/Resources/Prototypes/Imperial/Medieval/Magic/Spells/Earth/EarthBed/projectiles.yml b/Resources/Prototypes/Imperial/Medieval/Magic/Spells/Earth/EarthBed/projectiles.yml
new file mode 100644
index 00000000000..d22bb159896
--- /dev/null
+++ b/Resources/Prototypes/Imperial/Medieval/Magic/Spells/Earth/EarthBed/projectiles.yml
@@ -0,0 +1,50 @@
+# Base
+
+- type: entity
+ parent: Bed
+ id: MedievalEarthBed
+ name: Earth Bed
+ abstract: true
+ components:
+ - type: Destructible
+ thresholds:
+ - trigger:
+ !type:DamageTrigger
+ damage: 60
+ behaviors:
+ - !type:DoActsBehavior
+ acts: ["Destruction"]
+ - type: Strap
+ buckleTime: 0.5
+ unbuckleTime: 0.5
+ buckleSound:
+ path: /Audio/Imperial/Medieval/Effects/lay_on_bed1.ogg
+ unbuckleSound:
+ path: /Audio/Imperial/Medieval/Effects/lay_on_bed2.ogg
+ - type: Buckle
+ - type: BloodRegenBed
+ bloodRegenMultiplier: 2.0
+ - type: HealOnBuckle
+ damage:
+ groups:
+ Brute: -0.1
+ Burn: -0.1
+ Airloss: -0.1
+ types:
+ Poison: -0.1
+ Caustic: -0.1
+ Radiation: -0.1
+ - type: MedievalPlagueHealStrapped
+
+# Beginner
+
+- type: entity
+ id: MedievalEarthBedBeginner
+ parent: MedievalEarthBed
+ name: Earth Bed
+ components:
+ - type: Sprite
+ sprite: Imperial/Medieval/Magic/Earth/EarthBed/projectiles.rsi
+ state: beginner
+ - type: TimedDespawn
+ lifetime: 60
diff --git a/Resources/Prototypes/Imperial/Medieval/Magic/Spells/Earth/EarthBed/store.yml b/Resources/Prototypes/Imperial/Medieval/Magic/Spells/Earth/EarthBed/store.yml
new file mode 100644
index 00000000000..7e33e711780
--- /dev/null
+++ b/Resources/Prototypes/Imperial/Medieval/Magic/Spells/Earth/EarthBed/store.yml
@@ -0,0 +1,18 @@
+# Beginner
+
+- type: imperialListing
+ id: MedievalSpellEarthBedBeginner
+ name: medieval-store-spells-earth-bed-beginner-name
+ description: medieval-store-spells-earth-bed-beginner-desc
+ productAction: MedievalActionEarthBedBeginner
+ priority: 7
+ icon:
+ sprite: Imperial/Medieval/Magic/Earth/EarthBed/icons.rsi
+ state: beginner
+ cost:
+ MagicMedievalEarth: 60
+ categories:
+ - MedievalEarthSpells
+ conditions:
+ - !type:ImperialListingLimitedStockCondition
+ stock: 1
diff --git a/Resources/Prototypes/Imperial/Medieval/Magic/Spells/Light/MagicLight/actions.yml b/Resources/Prototypes/Imperial/Medieval/Magic/Spells/Light/MagicLight/actions.yml
index 19ae9a4279e..141bcf2794c 100644
--- a/Resources/Prototypes/Imperial/Medieval/Magic/Spells/Light/MagicLight/actions.yml
+++ b/Resources/Prototypes/Imperial/Medieval/Magic/Spells/Light/MagicLight/actions.yml
@@ -43,3 +43,92 @@
Burn: 5
- type: SpellCastEffect
effectProto: MagicLightSpellCastEffectBeginner
+ - type: ActionUpgrade
+ effectedLevels:
+ 2: MedievalActionMagicLightStationaryMiddle
+ 3: MedievalActionMagicLightFollowerMiddle
+
+
+# Middle
+
+- type: entity
+ id: MedievalActionMagicLightStationaryMiddle
+ name: medieval-store-spells-magic-light-flash-stationary-middle-name #
+ description: medieval-store-spells-light-magic-light-stationary-middle-desc #
+ components:
+ - type: MedievalInstantSpell
+ - type: Action
+ useDelay: 60
+ itemIconStyle: BigAction
+ sound: !type:SoundPathSpecifier
+ path: /Audio/Imperial/Medieval/lightsphere_cast.ogg
+ icon:
+ sprite: Imperial/Medieval/Magic/Light/MagicLight/icons.rsi
+ state: middleStationary
+ - type: InstantAction
+ event: !type:MedievalInstantSpawnEvent
+ spawnedEntityPrototype: MedievalProjectileLightStationarMiddle #
+ speechPoints:
+ 0:
+ speech: medieval-spell-speach-magic-light
+ color: "#FFE57E"
+ hideChat: true
+ - type: CastTraining
+ trainingResults:
+ - !type:AddMagicEssence
+ essenceAddProbability: 0.0004
+ bonusAddProbability: 1
+ addedEssences:
+ MagicMedievalLight: 1
+ bonusEssences:
+ MagicMedievalLight: 1
+ - type: ManaDrainSpell
+ manaDrain: 40
+ canUseWithoutMana: true
+ manaLowMessage: medieval-spell-speach-not-enough-mana-fire-spell
+ damageOnUseWithoutMana:
+ groups:
+ Burn: 10
+ - type: SpellCastEffect
+ effectProto: MagicLightSpellCastEffectBeginner
+
+- type: entity
+ id: MedievalActionMagicLightFollowerMiddle
+ name: medieval-store-spells-magic-light-flash-follower-middle-name #
+ description: medieval-store-spells-light-magic-light-follower-middle-desc #
+ components:
+ - type: MedievalInstantSpell
+ - type: Action
+ useDelay: 20
+ itemIconStyle: BigAction
+ sound: !type:SoundPathSpecifier
+ path: /Audio/Imperial/Medieval/lightsphere_cast.ogg
+ icon:
+ sprite: Imperial/Medieval/Magic/Light/MagicLight/icons.rsi
+ state: middleFollower #
+ - type: InstantAction
+ event: !type:MedievalInstantSpawnEvent
+ spawnedEntityPrototype: MedievalProjectileLightFollowerMiddle #
+ speechPoints:
+ 0:
+ speech: medieval-spell-speach-magic-light
+ color: "#FFE57E"
+ hideChat: true
+ - type: CastTraining
+ trainingResults:
+ - !type:AddMagicEssence
+ essenceAddProbability: 0.0004
+ bonusAddProbability: 1
+ addedEssences:
+ MagicMedievalLight: 1
+ bonusEssences:
+ MagicMedievalLight: 1
+ - type: ManaDrainSpell
+ manaDrain: 30
+ canUseWithoutMana: true
+ manaLowMessage: medieval-spell-speach-not-enough-mana-fire-spell
+ damageOnUseWithoutMana:
+ groups:
+ Burn: 7
+ - type: SpellCastEffect
+ effectProto: MagicLightSpellCastEffectBeginner
diff --git a/Resources/Prototypes/Imperial/Medieval/Magic/Spells/Light/MagicLight/projectiles.yml b/Resources/Prototypes/Imperial/Medieval/Magic/Spells/Light/MagicLight/projectiles.yml
index 4ef86d1e6b1..2a23e19f122 100644
--- a/Resources/Prototypes/Imperial/Medieval/Magic/Spells/Light/MagicLight/projectiles.yml
+++ b/Resources/Prototypes/Imperial/Medieval/Magic/Spells/Light/MagicLight/projectiles.yml
@@ -65,10 +65,122 @@
- type: MedievalProjectilePlayerFollower
activateTime: 0.3
- type: TimedDespawn
- lifetime: 120
+ lifetime: 12 #
- type: SpawnOnDespawn
prototype: MedievalLightSphereDespawnEffect
+# Middle
+
+- type: entity
+ id: MedievalProjectileLightStationarMiddle
+ components:
+ - type: CargoSellBlacklist
+ - type: Sprite
+ sprite: Objects/Fun/pondering_orb.rsi
+ state: icon
+ - type: MedievalParticles
+ color: cyan
+ speed: 2.0
+ particlesCount: 32
+ gravity: 0
+ inverted: true
+ collapseOnMinDistance: true
+ - type: PointLight
+ color: cyan
+ energy: 4
+ radius: 10
+ - type: Fixtures
+ fixtures:
+ fix1:
+ shape:
+ !type:PhysShapeCircle
+ radius: 0.35
+ density: 15
+ mask:
+ - GhostImpassable
+ - type: Physics
+ bodyType: KinematicController
+ bodyStatus: InAir
+ - type: Tag
+ tags:
+ - BypassInteractionRangeChecks
+ - LightningBlacklist
+ - type: TimedDespawn
+ lifetime: 12 #
+ - type: SpawnOnDespawn
+ prototype: MedievalLightSphereDespawnEffect
+
+- type: entity
+ id: MedievalProjectileLightFollowerMiddle
+ components:
+ - type: CargoSellBlacklist
+ - type: Sprite
+ sprite: Objects/Fun/pondering_orb.rsi
+ state: icon
+ - type: MedievalParticles
+ color: cyan
+ speed: 2.0
+ particlesCount: 32
+ gravity: 0
+ inverted: true
+ collapseOnMinDistance: true
+ - type: PointLight
+ color: cyan
+ energy: 3
+ radius: 6
+ - type: ContentEye
+ maxZoom: 1.44,1.44
+ - type: Fixtures
+ fixtures:
+ fix1:
+ shape:
+ !type:PhysShapeCircle
+ radius: 0.35
+ density: 15
+ mask:
+ - GhostImpassable
+ - type: Eye
+ drawFov: false
+ - type: Input
+ context: "ghost"
+ - type: Examiner
+ skipChecks: true
+ - type: GhostHearing
+ - type: MovementSpeedModifier
+ baseSprintSpeed: 5.6
+ baseWalkSpeed: 3.2
+ - type: MovementIgnoreGravity
+ - type: IntrinsicRadioReceiver
+ - type: ActiveRadio
+ receiveAllChannels: true
+ globalReceive: true
+ - type: Physics
+ bodyType: KinematicController
+ bodyStatus: InAir
+ - type: CanMoveInAir
+ - type: Tag
+ tags:
+ - BypassInteractionRangeChecks
+ - LightningBlacklist
+ - type: InputMover
+ - type: MobMover
+ - type: HTN # Паттерн поведения обычного нейтрального моба
+ rootTask:
+ task: FollowCompound
+ blackboard:
+ FollowCloseRange: !type:Single
+ 0.5
+ FollowRange: !type:Single
+ 0.0
+ - type: MedievalProjectilePlayerFollower
+ activateTime: 0.3
+ - type: TimedDespawn
+ lifetime: 12 #
+ - type: SpawnOnDespawn
+ prototype: MedievalLightSphereDespawnEffect
+
+# Effects
+
- type: entity
id: MedievalLightSphereDespawnEffect
components:
diff --git a/Resources/Prototypes/Imperial/Medieval/Magic/Spells/Light/MagicLight/store.yml b/Resources/Prototypes/Imperial/Medieval/Magic/Spells/Light/MagicLight/store.yml
index 854f55e2c4f..8ac13b017b6 100644
--- a/Resources/Prototypes/Imperial/Medieval/Magic/Spells/Light/MagicLight/store.yml
+++ b/Resources/Prototypes/Imperial/Medieval/Magic/Spells/Light/MagicLight/store.yml
@@ -6,6 +6,9 @@
description: medieval-store-spells-light-magic-light-beginner-desc
productAction: MedievalActionMagicLightBeginner
priority: 5
+ productUpgradeId:
+ - MedievalSpellMagicLightStationaryMiddle
+ - MedievalSpellMagicLightFollowerMiddle
icon:
sprite: Imperial/Medieval/Magic/Light/MagicLight/icons.rsi
state: beginner
@@ -16,3 +19,49 @@
conditions:
- !type:ImperialListingLimitedStockCondition
stock: 1
+
+# Middle
+
+- type: imperialListing
+ id: MedievalSpellMagicLightStationaryMiddle
+ name: medieval-store-spells-magic-light-flash-stationary-middle-name #
+ description: medieval-store-spells-light-magic-light-stationary-middle-desc #
+ productAction: MedievalActionMagicLightStationaryMiddle
+ priority: 5
+ icon:
+ sprite: Imperial/Medieval/Magic/Light/MagicLight/icons.rsi
+ state: middleStationary
+ cost:
+ MagicMedievalLight: 30
+ categories:
+ - MedievalLightSpells
+ conditions:
+ - !type:ImperialListingLimitedStockCondition
+ stock: 1
+ - !type:ImperialBuyBeforeCondition
+ whitelist:
+ - MedievalSpellMagicLightBeginner
+ blacklist:
+ - MedievalSpellMagicLightFollowerMiddle
+
+- type: imperialListing
+ id: MedievalSpellMagicLightFollowerMiddle
+ name: medieval-store-spells-magic-light-flash-follower-middle-name #
+ description: medieval-store-spells-light-magic-light-follower-middle-desc #
+ productAction: MedievalActionMagicLightFollowerMiddle
+ priority: 5
+ icon:
+ sprite: Imperial/Medieval/Magic/Light/MagicLight/icons.rsi
+ state: middleFollower
+ cost:
+ MagicMedievalLight: 30
+ categories:
+ - MedievalLightSpells
+ conditions:
+ - !type:ImperialListingLimitedStockCondition
+ stock: 1
+ - !type:ImperialBuyBeforeCondition
+ whitelist:
+ - MedievalSpellMagicLightBeginner
+ blacklist:
+ - MedievalSpellMagicLightStationaryMiddle
diff --git a/Resources/Prototypes/Imperial/Medieval/Magic/Spells/Light/SummonFoliant/actions.yml b/Resources/Prototypes/Imperial/Medieval/Magic/Spells/Light/SummonFoliant/actions.yml
new file mode 100644
index 00000000000..32f98def132
--- /dev/null
+++ b/Resources/Prototypes/Imperial/Medieval/Magic/Spells/Light/SummonFoliant/actions.yml
@@ -0,0 +1,42 @@
+# Beginner
+
+- type: entity
+ id: MedievalActionSummonFoliantBeginner
+ name: medieval-store-spells-magic-light-summon-foliant-beginner-name
+ description: medieval-store-spells-light-summon-foliant-beginner-desc
+ components:
+ - type: MedievalInstantSpell
+ - type: Action
+ useDelay: 60
+ itemIconStyle: BigAction
+ sound: !type:SoundPathSpecifier
+ path: /Audio/Weapons/Guns/Gunshots/Magic/staff_healing.ogg
+ icon:
+ sprite: Imperial/Medieval/Magic/Light/SummonFoliant/icon.rsi
+ state: beginner
+ - type: InstantAction
+ event: !type:MedievalInstantSpawnEvent
+ spawnedEntityPrototype: MedievalProjectileSummonFoliantBeginner
+ speechPoints:
+ 0:
+ speech: medieval-spell-speach-summon-foliant
+ color: "#FFE57E"
+ hideChat: true
+ - type: CastTraining
+ trainingResults:
+ - !type:AddMagicEssence
+ essenceAddProbability: 0.0004
+ bonusAddProbability: 1
+ addedEssences:
+ MagicMedievalLight: 1
+ bonusEssences:
+ MagicMedievalLight: 1
+ - type: ManaDrainSpell
+ manaDrain: 25
+ canUseWithoutMana: true
+ manaLowMessage: medieval-spell-speach-not-enough-mana-fire-spell
+ damageOnUseWithoutMana:
+ groups:
+ Burn: 10
+ - type: SpellCastEffect
+ effectProto: SummonFoliantSpellCastEffectBeginner
diff --git a/Resources/Prototypes/Imperial/Medieval/Magic/Spells/Light/SummonFoliant/effect.yml b/Resources/Prototypes/Imperial/Medieval/Magic/Spells/Light/SummonFoliant/effect.yml
new file mode 100644
index 00000000000..3873ea643ba
--- /dev/null
+++ b/Resources/Prototypes/Imperial/Medieval/Magic/Spells/Light/SummonFoliant/effect.yml
@@ -0,0 +1,18 @@
+#Beginner
+
+- type: entity
+ id: SummonFoliantSpellCastEffectBeginner
+ components:
+ - type: Sprite
+ sprite: Imperial/Medieval/SpellCastEffects/light/magic_light.rsi
+ color: "#FFE57E"
+ noRot: true
+ layers:
+ - state: beginner
+ shader: unshaded
+ - type: PointLight
+ radius: 2
+ energy: 1
+ color: "#FFE57E"
+ - type: TimedDespawn
+ lifetime: 0.5
diff --git a/Resources/Prototypes/Imperial/Medieval/Magic/Spells/Light/SummonFoliant/projectiles.yml b/Resources/Prototypes/Imperial/Medieval/Magic/Spells/Light/SummonFoliant/projectiles.yml
new file mode 100644
index 00000000000..33404cf72f4
--- /dev/null
+++ b/Resources/Prototypes/Imperial/Medieval/Magic/Spells/Light/SummonFoliant/projectiles.yml
@@ -0,0 +1,22 @@
+# Beginner
+
+- type: entity
+ id: MedievalProjectileSummonFoliantBeginner
+ components:
+ - type: CargoSellBlacklist
+ - type: PointLight
+ color: white
+ energy: 5
+ radius: 3
+ - type: Fixtures
+ fixtures:
+ fix1:
+ shape:
+ !type:PhysShapeCircle
+ radius: 0.35
+ density: 15
+ mask:
+ - GhostImpassable
+ - type: TimedDespawn
+ lifetime: 0.5
+ - type: FoliantToHandTeleporter
diff --git a/Resources/Prototypes/Imperial/Medieval/Magic/Spells/Light/SummonFoliant/store.yml b/Resources/Prototypes/Imperial/Medieval/Magic/Spells/Light/SummonFoliant/store.yml
new file mode 100644
index 00000000000..85a2fb92334
--- /dev/null
+++ b/Resources/Prototypes/Imperial/Medieval/Magic/Spells/Light/SummonFoliant/store.yml
@@ -0,0 +1,18 @@
+# Beginner
+
+- type: imperialListing
+ id: MedievalSpellSummonFoliantBeginner
+ name: medieval-store-spells-magic-light-summon-foliant-beginner-name
+ description: medieval-store-spells-light-summon-foliant-beginner-desc
+ productAction: MedievalActionSummonFoliantBeginner
+ priority: 9
+ icon:
+ sprite: Imperial/Medieval/Magic/Light/SummonFoliant/icon.rsi
+ state: beginner
+ cost:
+ MagicMedievalLight: 10
+ categories:
+ - MedievalLightSpells
+ conditions:
+ - !type:ImperialListingLimitedStockCondition
+ stock: 1
diff --git a/Resources/Prototypes/Imperial/Medieval/Magic/Spells/Vodka/WaterOrb/actions.yml b/Resources/Prototypes/Imperial/Medieval/Magic/Spells/Vodka/WaterOrb/actions.yml
new file mode 100644
index 00000000000..ffd4e4cbeea
--- /dev/null
+++ b/Resources/Prototypes/Imperial/Medieval/Magic/Spells/Vodka/WaterOrb/actions.yml
@@ -0,0 +1,51 @@
+#Beginner
+
+- type: entity
+ id: MedievalActionWaterOrbBeginner
+ name: medieval-store-spells-vodka-water-orb-beginner-name
+ description: medieval-store-spells-vodka-water-orb-beginner-desc
+ components:
+ - type: CastTraining
+ trainingResults:
+ - !type:AddMagicEssence
+ essenceAddProbability: 0.0001
+ bonusAddProbability: 1
+ addedEssences:
+ MagicMedievalVodka: 1
+ bonusEssences:
+ MagicMedievalVodka: 1
+ - type: MedievalInstantSpell
+ - type: Action
+ useDelay: 20
+ itemIconStyle: BigAction
+ sound: !type:SoundPathSpecifier
+ path: /Audio/Imperial/Medieval/icewall_cast.ogg
+ icon:
+ sprite: Imperial/Medieval/Magic/Vodka/WaterOrb/icons.rsi
+ state: beginner
+ - type: InstantAction
+ event: !type:MedievalSpawnInHandSpellEvent
+ spawnedEntityPrototype: WaterOrbBeginner
+ spellCastDoAfter:
+ delay: 0.5
+ breakOnDropItem: false
+ breakOnWeightlessMove: false
+ breakOnMove: false
+ needHand: true
+ breakOnDamage: true
+ speedModifier: 1
+ speechPoints:
+ 0:
+ speech: medieval-spell-speach-water-orb
+ color: "#78C6ED"
+ hideChat: true
+ - type: MedievalSpawnOnlyInFreeHands
+ - type: ManaDrainSpell
+ manaDrain: 10
+ canUseWithoutMana: true
+ manaLowMessage: medieval-spell-speach-not-enough-mana-fire-spell
+ damageOnUseWithoutMana:
+ groups:
+ Burn: 5
+ - type: SpellCastEffect
+ effectProto: IceDaggerSpellCastEffectBeginner
diff --git a/Resources/Prototypes/Imperial/Medieval/Magic/Spells/Vodka/WaterOrb/effect.yml b/Resources/Prototypes/Imperial/Medieval/Magic/Spells/Vodka/WaterOrb/effect.yml
new file mode 100644
index 00000000000..fbebd6c1e99
--- /dev/null
+++ b/Resources/Prototypes/Imperial/Medieval/Magic/Spells/Vodka/WaterOrb/effect.yml
@@ -0,0 +1,14 @@
+#Beginner
+
+- type: entity
+ id: WaterOrbSpellCastEffectBeginner
+ components:
+ - type: Sprite
+ sprite: Imperial/Medieval/SpellCastEffects/vodka/dagger.rsi
+ color: "#41b4ee"
+ noRot: true
+ layers:
+ - state: beginner
+ shader: unshaded
+ - type: TimedDespawn
+ lifetime: 0.5
diff --git a/Resources/Prototypes/Imperial/Medieval/Magic/Spells/Vodka/WaterOrb/projectiles.yml b/Resources/Prototypes/Imperial/Medieval/Magic/Spells/Vodka/WaterOrb/projectiles.yml
new file mode 100644
index 00000000000..172f7756f6c
--- /dev/null
+++ b/Resources/Prototypes/Imperial/Medieval/Magic/Spells/Vodka/WaterOrb/projectiles.yml
@@ -0,0 +1,97 @@
+# Beginner
+
+- type: entity
+ parent: BaseItem
+ id: WaterOrbBeginner
+ components:
+ - type: Sprite
+ sprite: Imperial/Medieval/Magic/Vodka/WaterOrb/projectiles.rsi
+ state: beginner
+ - type: TimedDespawn
+ lifetime: 6
+ - type: Fixtures
+ fixtures:
+ fix1:
+ shape:
+ !type:PhysShapeCircle
+ radius: 0.15
+ density: 10
+ mask:
+ - ItemMask
+ restitution: 0
+ friction: 1
+ - type: ThrowingAngle
+ angle: 0
+ - type: Item
+ size: Ginormous
+ - type: Physics
+ bodyType: Dynamic
+ fixedRotation: false
+ - type: SolutionContainerManager
+ solutions:
+ waterorb:
+ maxVol: 5
+ reagents:
+ - ReagentId: Water
+ Quantity: 5
+ - type: Spillable
+ solution: waterorb
+ - type: SpillWhenWorn
+ solution: waterorb
+ - type: MeleeWeapon
+ soundNoDamage:
+ path: "/Audio/Effects/Fluids/splat.ogg"
+ damage:
+ types:
+ Blunt: 0
+ - type: DrainableSolution
+ solution: waterorb
+ - type: DrawableSolution
+ solution: waterorb
+ - type: SolutionItemStatus
+ solution: waterorb
+ - type: SolutionTransfer
+ canChangeTransferAmount: true
+ - type: UserInterface
+ destroyOnEmpty: true
+ interfaces:
+ enum.TransferAmountUiKey.Key:
+ type: TransferAmountBoundUserInterface
+ - type: Edible
+ edible: Drink
+ solution: waterorb
+ destroyOnEmpty: false
+ utensil: None
+ - type: Damageable
+ damageContainer: Inorganic
+ - type: DamageOnHit
+ damage:
+ types:
+ Blunt: 10
+ - type: DamageOnLand
+ damage:
+ types:
+ Blunt: 10
+ - type: Destructible
+ thresholds:
+ - trigger:
+ !type:DamageTrigger
+ damage: 5
+ behaviors:
+ - !type:PlaySoundBehavior
+ sound:
+ collection: GlassBreak
+ params:
+ volume: -10
+ - !type:SpillBehavior { }
+ - !type:DoActsBehavior
+ acts: [ "Destruction" ]
+ - type: TriggerOnGotEquippedHand
+ - type: TimerTrigger
+ delay: 5
+ - type: DamageOnTrigger
+ keysIn:
+ - timer
+ damage:
+ types:
+ Blunt: 10
diff --git a/Resources/Prototypes/Imperial/Medieval/Magic/Spells/Vodka/WaterOrb/store.yml b/Resources/Prototypes/Imperial/Medieval/Magic/Spells/Vodka/WaterOrb/store.yml
new file mode 100644
index 00000000000..a5b5a66eb31
--- /dev/null
+++ b/Resources/Prototypes/Imperial/Medieval/Magic/Spells/Vodka/WaterOrb/store.yml
@@ -0,0 +1,19 @@
+# Beginner
+
+- type: imperialListing
+ id: MedievalSpellWaterOrbBeginner
+ name: medieval-store-spells-vodka-water-orb-beginner-name
+ description: medieval-store-spells-vodka-water-orb-beginner-desc
+ productAction: MedievalActionWaterOrbBeginner
+ priority: 6
+ icon:
+ sprite: Imperial/Medieval/Magic/Vodka/WaterOrb/icons.rsi
+ state: beginner
+ cost:
+ MagicMedievalVodka: 10
+ categories:
+ - MedievalVodkaSpells
+ conditions:
+ - !type:ImperialListingLimitedStockCondition
+ stock: 1
+
diff --git a/Resources/Textures/Imperial/Medieval/Magic/Earth/EarthBed/icons.rsi/beginner.png b/Resources/Textures/Imperial/Medieval/Magic/Earth/EarthBed/icons.rsi/beginner.png
new file mode 100644
index 00000000000..fda0f1346eb
Binary files /dev/null and b/Resources/Textures/Imperial/Medieval/Magic/Earth/EarthBed/icons.rsi/beginner.png differ
diff --git a/Resources/Textures/Imperial/Medieval/Magic/Earth/EarthBed/icons.rsi/meta.json b/Resources/Textures/Imperial/Medieval/Magic/Earth/EarthBed/icons.rsi/meta.json
new file mode 100644
index 00000000000..61c2d4f07e1
--- /dev/null
+++ b/Resources/Textures/Imperial/Medieval/Magic/Earth/EarthBed/icons.rsi/meta.json
@@ -0,0 +1,14 @@
+{
+ "version": 1,
+ "license": "this content is under ICLA licence, read more on https://wiki.imperialspace.net/icla",
+ "copyright": "by discord: Zakvielian",
+ "size": {
+ "x": 32,
+ "y": 32
+ },
+ "states": [
+ {
+ "name": "beginner"
+ }
+ ]
+}
diff --git a/Resources/Textures/Imperial/Medieval/Magic/Earth/EarthBed/projectiles.rsi/beginner.png b/Resources/Textures/Imperial/Medieval/Magic/Earth/EarthBed/projectiles.rsi/beginner.png
new file mode 100644
index 00000000000..885334cf59f
Binary files /dev/null and b/Resources/Textures/Imperial/Medieval/Magic/Earth/EarthBed/projectiles.rsi/beginner.png differ
diff --git a/Resources/Textures/Imperial/Medieval/Magic/Earth/EarthBed/projectiles.rsi/meta.json b/Resources/Textures/Imperial/Medieval/Magic/Earth/EarthBed/projectiles.rsi/meta.json
new file mode 100644
index 00000000000..61c2d4f07e1
--- /dev/null
+++ b/Resources/Textures/Imperial/Medieval/Magic/Earth/EarthBed/projectiles.rsi/meta.json
@@ -0,0 +1,14 @@
+{
+ "version": 1,
+ "license": "this content is under ICLA licence, read more on https://wiki.imperialspace.net/icla",
+ "copyright": "by discord: Zakvielian",
+ "size": {
+ "x": 32,
+ "y": 32
+ },
+ "states": [
+ {
+ "name": "beginner"
+ }
+ ]
+}
diff --git a/Resources/Textures/Imperial/Medieval/Magic/Light/MagicLight/icons.rsi/meta.json b/Resources/Textures/Imperial/Medieval/Magic/Light/MagicLight/icons.rsi/meta.json
index b63cf1e65fa..9ccb31c1b5d 100644
--- a/Resources/Textures/Imperial/Medieval/Magic/Light/MagicLight/icons.rsi/meta.json
+++ b/Resources/Textures/Imperial/Medieval/Magic/Light/MagicLight/icons.rsi/meta.json
@@ -1,7 +1,7 @@
{
"version": 1,
"license": "this content is under ICLA licence, read more on https://wiki.imperialspace.net/icla",
- "copyright": "by discord: fortengamer",
+ "copyright": "by discord: fortengamer || middleSpells: discord: Zakvielian",
"size": {
"x": 32,
"y": 32
@@ -9,6 +9,13 @@
"states": [
{
"name": "beginner"
+ },
+ {
+ "name": "middleStationary"
+ },
+ {
+ "name": "middleFollower"
}
]
}
+
diff --git a/Resources/Textures/Imperial/Medieval/Magic/Light/MagicLight/icons.rsi/middleFollower.png b/Resources/Textures/Imperial/Medieval/Magic/Light/MagicLight/icons.rsi/middleFollower.png
new file mode 100644
index 00000000000..278c2231b39
Binary files /dev/null and b/Resources/Textures/Imperial/Medieval/Magic/Light/MagicLight/icons.rsi/middleFollower.png differ
diff --git a/Resources/Textures/Imperial/Medieval/Magic/Light/MagicLight/icons.rsi/middleStationary.png b/Resources/Textures/Imperial/Medieval/Magic/Light/MagicLight/icons.rsi/middleStationary.png
new file mode 100644
index 00000000000..d7d7ce6895c
Binary files /dev/null and b/Resources/Textures/Imperial/Medieval/Magic/Light/MagicLight/icons.rsi/middleStationary.png differ
diff --git a/Resources/Textures/Imperial/Medieval/Magic/Light/SummonFoliant/icon.rsi/beginner.png b/Resources/Textures/Imperial/Medieval/Magic/Light/SummonFoliant/icon.rsi/beginner.png
new file mode 100644
index 00000000000..d1115e1f78e
Binary files /dev/null and b/Resources/Textures/Imperial/Medieval/Magic/Light/SummonFoliant/icon.rsi/beginner.png differ
diff --git a/Resources/Textures/Imperial/Medieval/Magic/Light/SummonFoliant/icon.rsi/meta.json b/Resources/Textures/Imperial/Medieval/Magic/Light/SummonFoliant/icon.rsi/meta.json
new file mode 100644
index 00000000000..61c2d4f07e1
--- /dev/null
+++ b/Resources/Textures/Imperial/Medieval/Magic/Light/SummonFoliant/icon.rsi/meta.json
@@ -0,0 +1,14 @@
+{
+ "version": 1,
+ "license": "this content is under ICLA licence, read more on https://wiki.imperialspace.net/icla",
+ "copyright": "by discord: Zakvielian",
+ "size": {
+ "x": 32,
+ "y": 32
+ },
+ "states": [
+ {
+ "name": "beginner"
+ }
+ ]
+}
diff --git a/Resources/Textures/Imperial/Medieval/Magic/Vodka/WaterOrb/icons.rsi/beginner.png b/Resources/Textures/Imperial/Medieval/Magic/Vodka/WaterOrb/icons.rsi/beginner.png
new file mode 100644
index 00000000000..9244c37acb7
Binary files /dev/null and b/Resources/Textures/Imperial/Medieval/Magic/Vodka/WaterOrb/icons.rsi/beginner.png differ
diff --git a/Resources/Textures/Imperial/Medieval/Magic/Vodka/WaterOrb/icons.rsi/meta.json b/Resources/Textures/Imperial/Medieval/Magic/Vodka/WaterOrb/icons.rsi/meta.json
new file mode 100644
index 00000000000..61c2d4f07e1
--- /dev/null
+++ b/Resources/Textures/Imperial/Medieval/Magic/Vodka/WaterOrb/icons.rsi/meta.json
@@ -0,0 +1,14 @@
+{
+ "version": 1,
+ "license": "this content is under ICLA licence, read more on https://wiki.imperialspace.net/icla",
+ "copyright": "by discord: Zakvielian",
+ "size": {
+ "x": 32,
+ "y": 32
+ },
+ "states": [
+ {
+ "name": "beginner"
+ }
+ ]
+}
diff --git a/Resources/Textures/Imperial/Medieval/Magic/Vodka/WaterOrb/projectiles.rsi/beginner.png b/Resources/Textures/Imperial/Medieval/Magic/Vodka/WaterOrb/projectiles.rsi/beginner.png
new file mode 100644
index 00000000000..5e5cef52f79
Binary files /dev/null and b/Resources/Textures/Imperial/Medieval/Magic/Vodka/WaterOrb/projectiles.rsi/beginner.png differ
diff --git a/Resources/Textures/Imperial/Medieval/Magic/Vodka/WaterOrb/projectiles.rsi/meta.json b/Resources/Textures/Imperial/Medieval/Magic/Vodka/WaterOrb/projectiles.rsi/meta.json
new file mode 100644
index 00000000000..61c2d4f07e1
--- /dev/null
+++ b/Resources/Textures/Imperial/Medieval/Magic/Vodka/WaterOrb/projectiles.rsi/meta.json
@@ -0,0 +1,14 @@
+{
+ "version": 1,
+ "license": "this content is under ICLA licence, read more on https://wiki.imperialspace.net/icla",
+ "copyright": "by discord: Zakvielian",
+ "size": {
+ "x": 32,
+ "y": 32
+ },
+ "states": [
+ {
+ "name": "beginner"
+ }
+ ]
+}