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" + } + ] +}