From db0d1f626f5bc8cc6a6f4762900a3b7a888c1978 Mon Sep 17 00:00:00 2001 From: Zack Backmen Date: Fri, 9 Feb 2024 20:12:11 +0300 Subject: [PATCH] upd --- .../Backmen/Vampiric/BloodSuckerSystem.cs | 2 +- .../Vampiric/BkmVampireLevelingSystem.cs | 179 ++++++++++++++++++ .../Backmen/Vampiric/BloodSuckerSystem.cs | 42 ++-- .../Vampiric/RequireParentListingCondition.cs | 25 +++ .../Backmen/Vampiric/Role/VampireRole.cs | 3 + .../Backmen/Vampiric/BkmVampireComponent.cs | 9 + .../Vampiric/SharedBloodSuckerSystem.cs | 14 ++ .../Backmen/Vampiric/VampireStoreEvent.cs | 40 ++++ Content.Shared/Store/ListingPrototype.cs | 5 +- .../Prototypes/Backmen/Actions/vampire.yml | 12 +- .../Backmen/Polymorphs/polymorph.yml | 14 +- .../Backmen/Store/Vampir/baseStore.yml | 66 +++++++ .../Backmen/Store/Vampir/vampierT1.yml | 85 +++++++++ .../Backmen/Store/Vampir/vampierT2.yml | 121 ++++++++++++ 14 files changed, 602 insertions(+), 15 deletions(-) create mode 100644 Content.Server/Backmen/Vampiric/BkmVampireLevelingSystem.cs create mode 100644 Content.Server/Backmen/Vampiric/RequireParentListingCondition.cs create mode 100644 Content.Shared/Backmen/Vampiric/SharedBloodSuckerSystem.cs create mode 100644 Content.Shared/Backmen/Vampiric/VampireStoreEvent.cs create mode 100644 Resources/Prototypes/Backmen/Store/Vampir/baseStore.yml create mode 100644 Resources/Prototypes/Backmen/Store/Vampir/vampierT1.yml create mode 100644 Resources/Prototypes/Backmen/Store/Vampir/vampierT2.yml diff --git a/Content.Client/Backmen/Vampiric/BloodSuckerSystem.cs b/Content.Client/Backmen/Vampiric/BloodSuckerSystem.cs index bf7e5a53059..b246d6b2827 100644 --- a/Content.Client/Backmen/Vampiric/BloodSuckerSystem.cs +++ b/Content.Client/Backmen/Vampiric/BloodSuckerSystem.cs @@ -6,7 +6,7 @@ namespace Content.Client.Backmen.Vampiric; -public sealed class BloodSuckerSystem : EntitySystem +public sealed class BloodSuckerSystem : SharedBloodSuckerSystem { public override void Initialize() { diff --git a/Content.Server/Backmen/Vampiric/BkmVampireLevelingSystem.cs b/Content.Server/Backmen/Vampiric/BkmVampireLevelingSystem.cs new file mode 100644 index 00000000000..96bc792bfca --- /dev/null +++ b/Content.Server/Backmen/Vampiric/BkmVampireLevelingSystem.cs @@ -0,0 +1,179 @@ +using Content.Server.Backmen.Vampiric.Role; +using Content.Server.Mind; +using Content.Server.Polymorph.Components; +using Content.Server.Polymorph.Systems; +using Content.Server.Store.Components; +using Content.Server.Store.Systems; +using Content.Shared.Actions; +using Content.Shared.Administration.Logs; +using Content.Shared.Backmen.Abilities.Psionics; +using Content.Shared.Backmen.Vampiric; +using Content.Shared.Database; +using Content.Shared.FixedPoint; +using Content.Shared.Movement.Components; +using Content.Shared.Movement.Systems; +using Content.Shared.Polymorph; +using Content.Shared.Slippery; +using Robust.Shared.Prototypes; + +namespace Content.Server.Backmen.Vampiric; + +public sealed class BkmVampireLevelingSystem : EntitySystem +{ + [Dependency] private readonly StoreSystem _store = default!; + [Dependency] private readonly SharedActionsSystem _actions = default!; + [Dependency] private readonly MindSystem _mindSystem = default!; + [Dependency] private readonly ISharedAdminLogManager _adminLogger = default!; + [Dependency] private readonly PolymorphSystem _polymorph = default!; + [Dependency] private readonly MovementSpeedModifierSystem _speedModifier = default!; + + public override void Initialize() + { + base.Initialize(); + + SubscribeLocalEvent(OnOpenShop); + SubscribeLocalEvent(OnShopBuyPerk); + SubscribeLocalEvent(OnApplySprint); + } + + private void OnApplySprint(Entity ent, ref RefreshMovementSpeedModifiersEvent args) + { + if (ent.Comp.SprintLevel == 0) + { + return; + } + + switch (ent.Comp.SprintLevel) + { + case 1: + args.ModifySpeed(2f, 1f); + break; + case 2: + args.ModifySpeed(3f, 1f); + break; + case 3: + args.ModifySpeed(3.4f,1f); + break; + case 4: + args.ModifySpeed(3.8f,1f); + break; + case 5: + args.ModifySpeed(4.2f,1f); + break; + } + } + + private void OnOpenShop(Entity ent, ref VampireShopActionEvent args) + { + if (!TryComp(ent, out var store)) + return; + _store.ToggleUi(ent, ent, store); + } + + [ValidatePrototypeId] private const string VmpShop = "VmpShop"; + + public void InitShop(Entity ent) + { + _actions.AddAction(ent, VmpShop); + var store = EnsureComp(ent); + store.RefundAllowed = false; + store.Categories.Add("VapmireT0"); + store.CurrencyWhitelist.Add(ent.Comp.CurrencyPrototype); + } + + [ValidatePrototypeId] + private const string BVampieBat = "BVampieBat"; + + [ValidatePrototypeId] + private const string BVampieMouse = "BVampieMouse"; + + private void OnShopBuyPerk(Entity ent, ref VampireStoreEvent args) + { + _adminLogger.Add(LogType.StorePurchase, LogImpact.Medium, + $"{ToPrettyString(ent):entity} vpm leveling buy {args.BuyType}"); + switch (args.BuyType) + { + case VampireStoreType.Tier1Upgrade: + UnlockTier(ent, 1); + break; + case VampireStoreType.Tier2Upgrade: + UnlockTier(ent, 2); + break; + case VampireStoreType.Tier3Upgrade: + UnlockTier(ent, 3); + break; + case VampireStoreType.MakeNewVamp: + _actions.AddAction(ent, ref ent.Comp.ActionNewVamp, ent.Comp.NewVamp); +#if !DEBUG + _actions.SetCooldown(ent.Comp.ActionNewVamp, TimeSpan.FromMinutes(5)); +#endif + break; + case VampireStoreType.SkillMouse1: + _polymorph.CreatePolymorphAction(BVampieBat, (ent, EnsureComp(ent))); + break; + case VampireStoreType.SkillMouse2: + _polymorph.CreatePolymorphAction(BVampieMouse, (ent, EnsureComp(ent))); + break; + case VampireStoreType.Sprint1: + ent.Comp.SprintLevel = 1; + _speedModifier.RefreshMovementSpeedModifiers(ent); + break; + case VampireStoreType.Sprint2: + ent.Comp.SprintLevel = 2; + _speedModifier.RefreshMovementSpeedModifiers(ent); + break; + case VampireStoreType.Sprint3: + ent.Comp.SprintLevel = 3; + _speedModifier.RefreshMovementSpeedModifiers(ent); + break; + case VampireStoreType.Sprint4: + ent.Comp.SprintLevel = 4; + _speedModifier.RefreshMovementSpeedModifiers(ent); + break; + case VampireStoreType.Sprint5: + ent.Comp.SprintLevel = 5; + _speedModifier.RefreshMovementSpeedModifiers(ent); + break; + case VampireStoreType.NoSlip: + EnsureComp(ent); + break; + case VampireStoreType.DispelPower: + EnsureComp(ent); + break; + case VampireStoreType.IgnitePower: + EnsureComp(ent); + break; + case VampireStoreType.RegenPower: + EnsureComp(ent); + break; + case VampireStoreType.ZapPower: + EnsureComp(ent); + break; + case VampireStoreType.PsiInvisPower: + EnsureComp(ent); + break; + } + } + + + public void UnlockTier(Entity ent, int tier) + { + var store = EnsureComp(ent); + store.Categories.Add("VapmireT" + tier); + + if (!_mindSystem.TryGetMind(ent, out var mindId, out var mind) || + !TryComp(mindId, out var vmpRole)) + { + return; // no mind? skip; + } + + vmpRole.Tier = Math.Max(vmpRole.Tier, tier); + } + + public void AddCurrency(Entity ent, FixedPoint2 va) + { + _store.TryAddCurrency(new Dictionary + { { ent.Comp.CurrencyPrototype, va } }, + ent); + } +} diff --git a/Content.Server/Backmen/Vampiric/BloodSuckerSystem.cs b/Content.Server/Backmen/Vampiric/BloodSuckerSystem.cs index efed8d4d447..fd97ce72062 100644 --- a/Content.Server/Backmen/Vampiric/BloodSuckerSystem.cs +++ b/Content.Server/Backmen/Vampiric/BloodSuckerSystem.cs @@ -21,6 +21,8 @@ using Content.Server.Polymorph.Components; using Content.Server.Polymorph.Systems; using Content.Server.Roles; +using Content.Server.Store.Components; +using Content.Server.Store.Systems; using Content.Shared.Actions; using Content.Shared.Backmen.Spider.Components; using Content.Shared.Body.Components; @@ -29,6 +31,8 @@ using Content.Shared.Chemistry.Components; using Content.Shared.Chemistry.EntitySystems; using Content.Shared.Chemistry.Reagent; +using Content.Shared.FixedPoint; +using Content.Shared.Mind; using Content.Shared.Mobs.Systems; using Content.Shared.Nutrition.Components; using Content.Shared.Nutrition.EntitySystems; @@ -36,6 +40,7 @@ using Content.Shared.Polymorph; using Content.Shared.Roles; using Content.Shared.Roles.Jobs; +using Content.Shared.Store; using Content.Shared.Stunnable; using Robust.Shared.Audio; using Robust.Shared.Prototypes; @@ -46,7 +51,7 @@ namespace Content.Server.Backmen.Vampiric; -public sealed class BloodSuckerSystem : EntitySystem +public sealed class BloodSuckerSystem : SharedBloodSuckerSystem { [Dependency] private readonly BodySystem _bodySystem = default!; [Dependency] private readonly SolutionContainerSystem _solutionSystem = default!; @@ -60,7 +65,6 @@ public sealed class BloodSuckerSystem : EntitySystem [Dependency] private readonly SharedInteractionSystem _interactionSystem = default!; [Dependency] private readonly ReactiveSystem _reactiveSystem = default!; [Dependency] private readonly SharedAudioSystem _audio = default!; - [Dependency] private readonly PolymorphSystem _polymorph = default!; [Dependency] private readonly HungerSystem _hunger = default!; [Dependency] private readonly RoleSystem _roleSystem = default!; [Dependency] private readonly MindSystem _mindSystem = default!; @@ -72,6 +76,7 @@ public sealed class BloodSuckerSystem : EntitySystem [Dependency] private readonly SharedDoAfterSystem _doAfterSystem = default!; [Dependency] private readonly SharedStunSystem _stun = default!; [Dependency] private readonly MobStateSystem _mobStateSystem = default!; + [Dependency] private readonly BkmVampireLevelingSystem _leveling = default!; [ValidatePrototypeId] private const string BloodsuckerAntagRole = "Bloodsucker"; @@ -84,7 +89,9 @@ public override void Initialize() SubscribeLocalEvent(OnDamageChanged); SubscribeLocalEvent(OnDoAfter); + SubscribeLocalEvent(OnInitVmp); + SubscribeLocalEvent(OnAttachedVampireMind); SubscribeLocalEvent(OnVampireExamined); SubscribeLocalEvent(OnUseNewVamp); @@ -100,6 +107,10 @@ public override void Initialize() SubscribeLocalEvent(OnDrinkAfterAssigned); } + + + + private void OnUseNewVampAfter(Entity ent, ref InnateNewVampierDoAfterEvent args) { if (args.Cancelled || args.Target == null || TerminatingOrDeleted(args.Target.Value)) @@ -182,10 +193,7 @@ private void OnUseNewVamp(Entity ent, ref InnateNewVampierA private void OnInitVmp(Entity ent, ref MapInitEvent args) { - _actions.AddAction(ent, ref ent.Comp.ActionNewVamp, ent.Comp.NewVamp); -#if !DEBUG - _actions.SetCooldown(ent.Comp.ActionNewVamp, TimeSpan.FromMinutes(5)); -#endif + _leveling.InitShop(ent); } private void OnVampireExamined(Entity ent, ref HealthBeingExaminedEvent args) @@ -287,15 +295,13 @@ private void OnAttachedVampireMind(Entity ent, ref PlayerAt private void OnPolymorphActionEvent(Entity ent, ref PolymorphActionEvent args) { - _hunger.ModifyHunger(ent, -30); + if(TryComp(ent, out var hungerComponent)) + _hunger.ModifyHunger(ent, -30, hungerComponent); } [ValidatePrototypeId] private const string OrganVampiricHumanoidStomach = "OrganVampiricHumanoidStomach"; - [ValidatePrototypeId] - private const string BVampieBat = "BVampieBat"; - [ValidatePrototypeId] private const string BloodSuckerToxin = "BloodSuckerToxin"; @@ -334,7 +340,7 @@ public void ConvertToVampire(EntityUid uid) var stomach = Spawn(OrganVampiricHumanoidStomach); _bodySystem.InsertOrgan(bodyComponent.RootContainer.ContainedEntity.Value, stomach, "stomach", bodyPartComponent); - _polymorph.CreatePolymorphAction(BVampieBat, (uid,EnsureComp(uid))); + EnsureComp(uid); if ( @@ -344,6 +350,13 @@ public void ConvertToVampire(EntityUid uid) TryComp(bloodsucked.BloodSuckerMindId.Value, out var bloodsucker) ) { + var masterUid = CompOrNull(bloodsucked.BloodSuckerMindId.Value)?.CurrentEntity; + if (TryComp(masterUid, out var master)) + { + _leveling.AddCurrency((masterUid.Value,master), 10 * (bloodsucker.Tier + 1)); + } + + bloodsucker.Converted += 1; } @@ -533,6 +546,11 @@ public bool TrySucc(EntityUid bloodsucker, EntityUid victim, BloodSuckerComponen if (TryComp(bloodsuckermidId, out var vpm)) { vpm.Drink += unitsToDrain; + + if (TryComp(bloodsucker, out var bkmVampireComponent)) + { + _leveling.AddCurrency((bloodsucker,bkmVampireComponent), 1 * (vpm.Tier + 1)); + } } } else @@ -541,6 +559,8 @@ public bool TrySucc(EntityUid bloodsucker, EntityUid victim, BloodSuckerComponen } + + var bloodSolution = bloodstream.BloodSolution.Value; // Make everything actually ingest. var temp = _solutionSystem.SplitSolution(bloodSolution, unitsToDrain); diff --git a/Content.Server/Backmen/Vampiric/RequireParentListingCondition.cs b/Content.Server/Backmen/Vampiric/RequireParentListingCondition.cs new file mode 100644 index 00000000000..9a40cffafac --- /dev/null +++ b/Content.Server/Backmen/Vampiric/RequireParentListingCondition.cs @@ -0,0 +1,25 @@ +using System.Linq; +using Content.Server.Store.Components; +using Content.Server.Store.Systems; +using Content.Shared.Store; +using Robust.Shared.Prototypes; + +namespace Content.Server.Backmen.Vampiric; + +public sealed partial class RequireParentListingCondition : ListingCondition +{ + [DataField("parent", required: true)] + public ProtoId ParentId; + public override bool Condition(ListingConditionArgs args) + { + if (!args.StoreEntity.HasValue) + return false; + + var parent = args.EntityManager.EnsureComponent(args.StoreEntity.Value).Listings.FirstOrDefault(x=>x.ID == ParentId); + + if (parent == null) + return false; + + return parent.PurchaseAmount > 0; + } +} diff --git a/Content.Server/Backmen/Vampiric/Role/VampireRole.cs b/Content.Server/Backmen/Vampiric/Role/VampireRole.cs index 54ab6b655bf..fce8a57db02 100644 --- a/Content.Server/Backmen/Vampiric/Role/VampireRole.cs +++ b/Content.Server/Backmen/Vampiric/Role/VampireRole.cs @@ -8,6 +8,9 @@ public sealed partial class VampireRoleComponent : AntagonistRoleComponent { public EntityUid? MasterVampire; + [ViewVariables(VVAccess.ReadWrite)] + public int Tier = 0; + [ViewVariables(VVAccess.ReadWrite)] public float Drink = 0; diff --git a/Content.Shared/Backmen/Vampiric/BkmVampireComponent.cs b/Content.Shared/Backmen/Vampiric/BkmVampireComponent.cs index 1848fa0d014..7f883ef3a34 100644 --- a/Content.Shared/Backmen/Vampiric/BkmVampireComponent.cs +++ b/Content.Shared/Backmen/Vampiric/BkmVampireComponent.cs @@ -3,9 +3,11 @@ using Content.Shared.DoAfter; using Content.Shared.FixedPoint; using Content.Shared.StatusIcon; +using Content.Shared.Store; using Robust.Shared.GameStates; using Robust.Shared.Prototypes; using Robust.Shared.Serialization; +using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype; namespace Content.Shared.Backmen.Vampiric; @@ -13,9 +15,16 @@ namespace Content.Shared.Backmen.Vampiric; [NetworkedComponent] public sealed partial class BkmVampireComponent : Component, IAntagStatusIconComponent { + [DataField("currencyPrototype", customTypeSerializer: typeof(PrototypeIdSerializer))] + public string CurrencyPrototype = "BloodEssence"; + public ProtoId StatusIcon { get; set; } = "VampireFaction"; public bool IconVisibleToGhost { get; set; } = true; + + [ViewVariables(VVAccess.ReadWrite)] + public int SprintLevel = 0; + public EntityUid? ActionNewVamp; public ProtoId NewVamp = "ActionConvertToVampier"; } diff --git a/Content.Shared/Backmen/Vampiric/SharedBloodSuckerSystem.cs b/Content.Shared/Backmen/Vampiric/SharedBloodSuckerSystem.cs new file mode 100644 index 00000000000..291d3cd09a4 --- /dev/null +++ b/Content.Shared/Backmen/Vampiric/SharedBloodSuckerSystem.cs @@ -0,0 +1,14 @@ +using JetBrains.Annotations; + +namespace Content.Shared.Backmen.Vampiric; + +[UsedImplicitly] +public abstract class SharedBloodSuckerSystem : EntitySystem +{ + public override void Initialize() + { + base.Initialize(); + + } + +} diff --git a/Content.Shared/Backmen/Vampiric/VampireStoreEvent.cs b/Content.Shared/Backmen/Vampiric/VampireStoreEvent.cs new file mode 100644 index 00000000000..0f028ece52d --- /dev/null +++ b/Content.Shared/Backmen/Vampiric/VampireStoreEvent.cs @@ -0,0 +1,40 @@ +using Content.Shared.Actions; +using Content.Shared.DoAfter; +using Robust.Shared.Serialization; + +namespace Content.Shared.Backmen.Vampiric; + +public enum VampireStoreType +{ + None, + Tier1Upgrade, + Tier2Upgrade, + Tier3Upgrade, + MakeNewVamp, + SkillMouse1, + SkillMouse2, + Sprint1, + Sprint2, + Sprint3, + Sprint4, + Sprint5, + NoSlip, + DispelPower, + RegenPower, + ZapPower, + PsiInvisPower, + IgnitePower +} + +[Serializable, NetSerializable] +[ImplicitDataDefinitionForInheritors] +public sealed partial class VampireStoreEvent : EntityEventArgs +{ + [DataField("buyType")] + public VampireStoreType BuyType; +} + +public sealed partial class VampireShopActionEvent : InstantActionEvent +{ + +} diff --git a/Content.Shared/Store/ListingPrototype.cs b/Content.Shared/Store/ListingPrototype.cs index 7f3a9e5e53d..8b42c171fd3 100644 --- a/Content.Shared/Store/ListingPrototype.cs +++ b/Content.Shared/Store/ListingPrototype.cs @@ -115,13 +115,16 @@ public bool Equals(ListingData? listing) if (listing == null) return false; + //simple conditions + if (ID != listing.ID) + return false; + //simple conditions if (Priority != listing.Priority || Name != listing.Name || Description != listing.Description || ProductEntity != listing.ProductEntity || ProductAction != listing.ProductAction || - ProductEvent != listing.ProductEvent || RestockTime != listing.RestockTime) return false; diff --git a/Resources/Prototypes/Backmen/Actions/vampire.yml b/Resources/Prototypes/Backmen/Actions/vampire.yml index 6eb931788b3..b9893e6e264 100644 --- a/Resources/Prototypes/Backmen/Actions/vampire.yml +++ b/Resources/Prototypes/Backmen/Actions/vampire.yml @@ -1,3 +1,13 @@ +- type: entity + id: VmpShop + name: Evolution Shop + description: Here you can purchase active skills and passive enhancements. + noSpawn: true + components: + - type: InstantAction + icon: Interface/Actions/fleshCultistShop.png + event: !type:VampireShopActionEvent + - type: entity id: ActionConvertToVampier name: vampire-action-convert-name @@ -13,4 +23,4 @@ checkCanAccess: true checkCanInteract: true priority: -1 - range: 3 \ No newline at end of file + range: 3 diff --git a/Resources/Prototypes/Backmen/Polymorphs/polymorph.yml b/Resources/Prototypes/Backmen/Polymorphs/polymorph.yml index 281e95c0e26..1f9ae7f74d3 100644 --- a/Resources/Prototypes/Backmen/Polymorphs/polymorph.yml +++ b/Resources/Prototypes/Backmen/Polymorphs/polymorph.yml @@ -8,4 +8,16 @@ cooldown: 30 delay: 5 allowRepeatedMorphs: true - revertOnEat: true \ No newline at end of file + revertOnEat: true + +- type: polymorph + id: BVampieMouse + configuration: + entity: MobMouse + revertOnCrit: true + revertOnDeath: true + transferName: true + cooldown: 30 + delay: 5 + allowRepeatedMorphs: true + revertOnEat: true diff --git a/Resources/Prototypes/Backmen/Store/Vampir/baseStore.yml b/Resources/Prototypes/Backmen/Store/Vampir/baseStore.yml new file mode 100644 index 00000000000..95e1e4400dc --- /dev/null +++ b/Resources/Prototypes/Backmen/Store/Vampir/baseStore.yml @@ -0,0 +1,66 @@ +- type: storeCategory + id: VapmireT0 + name: T0 + +- type: storeCategory + id: VapmireT1 + name: T1 + +- type: storeCategory + id: VapmireT2 + name: T2 + +- type: storeCategory + id: VapmireT3 + name: T3 + +- type: currency + id: BloodEssence + displayName: Кровь + canWithdraw: false + +- type: listing + id: vmpt0tot1 + name: Update to 1 tier + description: Unlock new shop items + productEvent: !type:VampireStoreEvent + buyType: Tier1Upgrade + cost: + BloodEssence: 10 + categories: + - VapmireT0 + conditions: + - !type:ListingLimitedStockCondition + stock: 1 + +- type: listing + id: vmpt1tot2 + name: Update to 2 tier + description: Unlock new shop items + productEvent: !type:VampireStoreEvent + buyType: Tier2Upgrade + cost: + BloodEssence: 100 + categories: + - VapmireT0 + conditions: + - !type:RequireParentListingCondition + parent: vmpt0tot1 + - !type:ListingLimitedStockCondition + stock: 1 + +- type: listing + id: vmpt2tot3 + name: Update to 3 tier + description: Unlock new shop items + productEvent: !type:VampireStoreEvent + buyType: Tier3Upgrade + cost: + BloodEssence: 1000 + categories: + - VapmireT0 + conditions: + - !type:RequireParentListingCondition + parent: vmpt1tot2 + - !type:ListingLimitedStockCondition + stock: 1 diff --git a/Resources/Prototypes/Backmen/Store/Vampir/vampierT1.yml b/Resources/Prototypes/Backmen/Store/Vampir/vampierT1.yml new file mode 100644 index 00000000000..414da030f41 --- /dev/null +++ b/Resources/Prototypes/Backmen/Store/Vampir/vampierT1.yml @@ -0,0 +1,85 @@ + + +- type: listing + id: vmpSkillConv + name: Обратить в вампира + description: тбд + productEvent: !type:VampireStoreEvent + buyType: MakeNewVamp + cost: + BloodEssence: 10 + categories: + - VapmireT1 + conditions: + - !type:ListingLimitedStockCondition + stock: 1 + +- type: listing + id: vmpSkillMouse1 + name: Обратится в мышку (Мышь) + description: тбд + productEvent: !type:VampireStoreEvent + buyType: SkillMouse2 + cost: + BloodEssence: 10 + categories: + - VapmireT1 + conditions: + - !type:ListingLimitedStockCondition + stock: 1 + +- type: listing + id: vmpSkillMouse2 + name: Обратится в мышку (Ремилия) + description: тбд + productEvent: !type:VampireStoreEvent + buyType: SkillMouse1 + cost: + BloodEssence: 10 + categories: + - VapmireT1 + conditions: + - !type:ListingLimitedStockCondition + stock: 1 + +- type: listing + id: vmpDispelPower + name: Рассеять + description: тбд + productEvent: !type:VampireStoreEvent + buyType: DispelPower + cost: + BloodEssence: 10 + categories: + - VapmireT1 + conditions: + - !type:ListingLimitedStockCondition + stock: 1 + +- type: listing + id: vmpRegenPower + name: Исцеление + description: тбд + productEvent: !type:VampireStoreEvent + buyType: RegenPower + cost: + BloodEssence: 10 + categories: + - VapmireT1 + conditions: + - !type:ListingLimitedStockCondition + stock: 1 + +- type: listing + id: vmpZapPower + name: Молния + description: тбд + productEvent: !type:VampireStoreEvent + buyType: ZapPower + cost: + BloodEssence: 10 + categories: + - VapmireT1 + conditions: + - !type:ListingLimitedStockCondition + stock: 1 diff --git a/Resources/Prototypes/Backmen/Store/Vampir/vampierT2.yml b/Resources/Prototypes/Backmen/Store/Vampir/vampierT2.yml new file mode 100644 index 00000000000..18104a6cf62 --- /dev/null +++ b/Resources/Prototypes/Backmen/Store/Vampir/vampierT2.yml @@ -0,0 +1,121 @@ + + +- type: listing + id: vmpSkillSprint1 + name: Спринт ур1 + description: на шифт спринт вместо медленнного шага + productEvent: !type:VampireStoreEvent + buyType: Sprint1 + cost: + BloodEssence: 10 + categories: + - VapmireT2 + conditions: + - !type:ListingLimitedStockCondition + stock: 1 + +- type: listing + id: vmpSkillSprint2 + name: Спринт ур2 + description: на шифт спринт вместо медленнного шага + productEvent: !type:VampireStoreEvent + buyType: Sprint2 + cost: + BloodEssence: 10 + categories: + - VapmireT2 + conditions: + - !type:RequireParentListingCondition + parent: vmpSkillSprint1 + - !type:ListingLimitedStockCondition + stock: 1 + +- type: listing + id: vmpSkillSprint3 + name: Спринт ур3 + description: на шифт спринт вместо медленнного шага + productEvent: !type:VampireStoreEvent + buyType: Sprint3 + cost: + BloodEssence: 10 + categories: + - VapmireT2 + conditions: + - !type:RequireParentListingCondition + parent: vmpSkillSprint2 + - !type:ListingLimitedStockCondition + stock: 1 + +- type: listing + id: vmpSkillSprint4 + name: Спринт ур4 + description: на шифт спринт вместо медленнного шага + productEvent: !type:VampireStoreEvent + buyType: Sprint4 + cost: + BloodEssence: 10 + categories: + - VapmireT2 + conditions: + - !type:RequireParentListingCondition + parent: vmpSkillSprint3 + - !type:ListingLimitedStockCondition + stock: 1 + +- type: listing + id: vmpSkillSprint5 + name: Спринт ур5 + description: на шифт спринт вместо медленнного шага + productEvent: !type:VampireStoreEvent + buyType: Sprint5 + cost: + BloodEssence: 10 + categories: + - VapmireT2 + conditions: + - !type:RequireParentListingCondition + parent: vmpSkillSprint4 + - !type:ListingLimitedStockCondition + stock: 1 + +- type: listing + id: vmpSkillNoSlip + name: Устойчивость + description: Вы больше не подскальзываетесь + productEvent: !type:VampireStoreEvent + buyType: NoSlip + cost: + BloodEssence: 10 + categories: + - VapmireT2 + conditions: + - !type:ListingLimitedStockCondition + stock: 1 + +- type: listing + id: vmpIgnitePower + name: Поджечь + description: тбд + productEvent: !type:VampireStoreEvent + buyType: IgnitePower + cost: + BloodEssence: 10 + categories: + - VapmireT2 + conditions: + - !type:ListingLimitedStockCondition + stock: 1 + +- type: listing + id: vmpPsiInvisPower + name: Невидимость + description: тбд + productEvent: !type:VampireStoreEvent + buyType: PsiInvisPower + cost: + BloodEssence: 10 + categories: + - VapmireT2 + conditions: + - !type:ListingLimitedStockCondition + stock: 1