Spell T0 traits, recategorize magic (#540)

* move to gurps magic types

* spell traits, categorize spells

* Update TraitSystem.cs

* magic spells item provider

* Update twoHandedStaffs.yml

* Update CP14MagicManacostModifySystem.cs

* Update CP14SpellStorageSystem.cs
This commit is contained in:
Ed
2024-11-06 18:02:37 +03:00
committed by GitHub
parent 0f091b4cdf
commit 7e4fb90e02
31 changed files with 202 additions and 86 deletions

View File

@@ -1,4 +1,6 @@
using Content.Server.Actions;
using Content.Server.GameTicking; using Content.Server.GameTicking;
using Content.Shared.Actions;
using Content.Shared.Hands.Components; using Content.Shared.Hands.Components;
using Content.Shared.Hands.EntitySystems; using Content.Shared.Hands.EntitySystems;
using Content.Shared.Roles; using Content.Shared.Roles;
@@ -14,6 +16,7 @@ public sealed class TraitSystem : EntitySystem
[Dependency] private readonly IPrototypeManager _prototypeManager = default!; [Dependency] private readonly IPrototypeManager _prototypeManager = default!;
[Dependency] private readonly SharedHandsSystem _sharedHandsSystem = default!; [Dependency] private readonly SharedHandsSystem _sharedHandsSystem = default!;
[Dependency] private readonly EntityWhitelistSystem _whitelistSystem = default!; [Dependency] private readonly EntityWhitelistSystem _whitelistSystem = default!;
[Dependency] private readonly ActionsSystem _action = default!; //CP14
public override void Initialize() public override void Initialize()
{ {
@@ -45,8 +48,16 @@ public sealed class TraitSystem : EntitySystem
_whitelistSystem.IsBlacklistPass(traitPrototype.Blacklist, args.Mob)) _whitelistSystem.IsBlacklistPass(traitPrototype.Blacklist, args.Mob))
continue; continue;
// CP14 start - add all spells to player mind
foreach (var spell in traitPrototype.Actions)
{
_action.AddAction(args.Mob, spell);
}
//CP14 end
// Add all components required by the prototype // Add all components required by the prototype
EntityManager.AddComponents(args.Mob, traitPrototype.Components, false); if (traitPrototype.Components.Count > 0) //CP14 added check
EntityManager.AddComponents(args.Mob, traitPrototype.Components, false);
// Add item required by the trait // Add item required by the trait
if (traitPrototype.TraitGear == null) if (traitPrototype.TraitGear == null)

View File

@@ -41,7 +41,7 @@ public sealed partial class TraitPrototype : IPrototype
/// The components that get added to the player, when they pick this trait. /// The components that get added to the player, when they pick this trait.
/// </summary> /// </summary>
[DataField] [DataField]
public ComponentRegistry Components { get; private set; } = default!; public ComponentRegistry Components { get; private set; } = new(); //CP14 new()
/// <summary> /// <summary>
/// Gear that is given to the player, when they pick this trait. /// Gear that is given to the player, when they pick this trait.
@@ -60,4 +60,10 @@ public sealed partial class TraitPrototype : IPrototype
/// </summary> /// </summary>
[DataField] [DataField]
public ProtoId<TraitCategoryPrototype>? Category; public ProtoId<TraitCategoryPrototype>? Category;
/// <summary>
/// CP14 - adding permanent spells into players mind
/// </summary>
[DataField]
public List<EntProtoId> Actions = new();
} }

View File

@@ -2,13 +2,13 @@ using Content.Shared._CP14.MagicRitual.Prototypes;
using Content.Shared.FixedPoint; using Content.Shared.FixedPoint;
using Robust.Shared.Prototypes; using Robust.Shared.Prototypes;
namespace Content.Shared._CP14.MagicClothing; namespace Content.Shared._CP14.MagicManacostModify;
/// <summary> /// <summary>
/// Changes the manacost of spells for the bearer /// Changes the manacost of spells for the bearer
/// </summary> /// </summary>
[RegisterComponent, Access(typeof(CP14MagicClothingSystem))] [RegisterComponent, Access(typeof(CP14MagicManacostModifySystem))]
public sealed partial class CP14MagicClothingManacostModifyComponent : Component public sealed partial class CP14MagicManacostModifyComponent : Component
{ {
[DataField] [DataField]
public Dictionary<ProtoId<CP14MagicTypePrototype>, FixedPoint2> Modifiers = new(); public Dictionary<ProtoId<CP14MagicTypePrototype>, FixedPoint2> Modifiers = new();

View File

@@ -2,15 +2,14 @@
using Content.Shared._CP14.MagicRitual.Prototypes; using Content.Shared._CP14.MagicRitual.Prototypes;
using Content.Shared._CP14.MagicSpell.Events; using Content.Shared._CP14.MagicSpell.Events;
using Content.Shared.Examine; using Content.Shared.Examine;
using Content.Shared.FixedPoint;
using Content.Shared.Inventory; using Content.Shared.Inventory;
using Content.Shared.Verbs; using Content.Shared.Verbs;
using Robust.Shared.Prototypes; using Robust.Shared.Prototypes;
using Robust.Shared.Utility; using Robust.Shared.Utility;
namespace Content.Shared._CP14.MagicClothing; namespace Content.Shared._CP14.MagicManacostModify;
public sealed partial class CP14MagicClothingSystem : EntitySystem public sealed partial class CP14MagicManacostModifySystem : EntitySystem
{ {
[Dependency] private readonly ExamineSystemShared _examine = default!; [Dependency] private readonly ExamineSystemShared _examine = default!;
[Dependency] private readonly IPrototypeManager _proto = default!; [Dependency] private readonly IPrototypeManager _proto = default!;
@@ -18,11 +17,12 @@ public sealed partial class CP14MagicClothingSystem : EntitySystem
{ {
base.Initialize(); base.Initialize();
SubscribeLocalEvent<CP14MagicClothingManacostModifyComponent, InventoryRelayedEvent<CP14CalculateManacostEvent>>(OnCalculateManacost); SubscribeLocalEvent<CP14MagicManacostModifyComponent, InventoryRelayedEvent<CP14CalculateManacostEvent>>(OnCalculateManacost);
SubscribeLocalEvent<CP14MagicClothingManacostModifyComponent, GetVerbsEvent<ExamineVerb>>(OnVerbExamine); SubscribeLocalEvent<CP14MagicManacostModifyComponent, CP14CalculateManacostEvent>(OnCalculateManacost);
SubscribeLocalEvent<CP14MagicManacostModifyComponent, GetVerbsEvent<ExamineVerb>>(OnVerbExamine);
} }
private void OnVerbExamine(Entity<CP14MagicClothingManacostModifyComponent> ent, ref GetVerbsEvent<ExamineVerb> args) private void OnVerbExamine(Entity<CP14MagicManacostModifyComponent> ent, ref GetVerbsEvent<ExamineVerb> args)
{ {
if (!args.CanInteract || !args.CanAccess) if (!args.CanInteract || !args.CanAccess)
return; return;
@@ -37,7 +37,7 @@ public sealed partial class CP14MagicClothingSystem : EntitySystem
Loc.GetString("armor-examinable-verb-message")); Loc.GetString("armor-examinable-verb-message"));
} }
private FormattedMessage GetMagicClothingExamine(CP14MagicClothingManacostModifyComponent comp) private FormattedMessage GetMagicClothingExamine(CP14MagicManacostModifyComponent comp)
{ {
var msg = new FormattedMessage(); var msg = new FormattedMessage();
msg.AddMarkupOrThrow(Loc.GetString("cp14-clothing-magic-examine")); msg.AddMarkupOrThrow(Loc.GetString("cp14-clothing-magic-examine"));
@@ -65,13 +65,18 @@ public sealed partial class CP14MagicClothingSystem : EntitySystem
return msg; return msg;
} }
private void OnCalculateManacost(Entity<CP14MagicClothingManacostModifyComponent> ent, ref InventoryRelayedEvent<CP14CalculateManacostEvent> args) private void OnCalculateManacost(Entity<CP14MagicManacostModifyComponent> ent, ref InventoryRelayedEvent<CP14CalculateManacostEvent> args)
{ {
args.Args.Multiplier += (float)ent.Comp.GlobalModifier; OnCalculateManacost(ent, ref args.Args);
}
if (args.Args.MagicType is not null && ent.Comp.Modifiers.TryGetValue(args.Args.MagicType.Value, out var modifier)) private void OnCalculateManacost(Entity<CP14MagicManacostModifyComponent> ent, ref CP14CalculateManacostEvent args)
{
args.Multiplier += (float)ent.Comp.GlobalModifier;
if (args.MagicType is not null && ent.Comp.Modifiers.TryGetValue(args.MagicType.Value, out var modifier))
{ {
args.Args.Multiplier *= (float)modifier; args.Multiplier *= (float)modifier;
} }
} }
} }

View File

@@ -4,7 +4,9 @@ using Content.Shared._CP14.MagicEnergy.Components;
using Content.Shared._CP14.MagicSpell.Components; using Content.Shared._CP14.MagicSpell.Components;
using Content.Shared._CP14.MagicSpell.Events; using Content.Shared._CP14.MagicSpell.Events;
using Content.Shared._CP14.MagicSpell.Spells; using Content.Shared._CP14.MagicSpell.Spells;
using Content.Shared._CP14.MagicSpellStorage;
using Content.Shared.DoAfter; using Content.Shared.DoAfter;
using Content.Shared.FixedPoint;
using Content.Shared.Hands.Components; using Content.Shared.Hands.Components;
using Content.Shared.Popups; using Content.Shared.Popups;
using Content.Shared.Speech.Muting; using Content.Shared.Speech.Muting;
@@ -50,7 +52,6 @@ public partial class CP14SharedMagicSystem : EntitySystem
private void OnMagicEffectInit(Entity<CP14MagicEffectComponent> ent, ref MapInitEvent args) private void OnMagicEffectInit(Entity<CP14MagicEffectComponent> ent, ref MapInitEvent args)
{ {
var meta = MetaData(ent); var meta = MetaData(ent);
var sb = new StringBuilder(); var sb = new StringBuilder();
@@ -62,6 +63,16 @@ public partial class CP14SharedMagicSystem : EntitySystem
sb.Append($"\n {Loc.GetString("cp14-magic-magic-type")}: [color={indexedMagic.Color.ToHex()}]{Loc.GetString(indexedMagic.Name)}[/color]"); sb.Append($"\n {Loc.GetString("cp14-magic-magic-type")}: [color={indexedMagic.Color.ToHex()}]{Loc.GetString(indexedMagic.Name)}[/color]");
} }
if (TryComp<CP14MagicEffectVerbalAspectComponent>(ent, out var verbal))
{
sb.Append("\n" + Loc.GetString("cp14-magic-verbal-aspect"));
}
if (TryComp<CP14MagicEffectSomaticAspectComponent>(ent, out var somatic))
{
sb.Append("\n" + Loc.GetString("cp14-magic-somatic-aspect") + " " + somatic.FreeHandRequired);
}
_meta.SetEntityDescription(ent, sb.ToString()); _meta.SetEntityDescription(ent, sb.ToString());
} }
@@ -73,14 +84,7 @@ public partial class CP14SharedMagicSystem : EntitySystem
return; return;
} }
var manaCost = ent.Comp.ManaCost; var manaCost = CalculateManacost(ent, args.Caster);
if (ent.Comp.CanModifyManacost)
{
var manaEv = new CP14CalculateManacostEvent(args.Caster, ent.Comp.ManaCost, ent.Comp.MagicType);
RaiseLocalEvent(args.Caster, manaEv);
manaCost = manaEv.GetManacost();
}
if (!_magicEnergy.HasEnergy(args.Caster, manaCost, magicContainer, ent.Comp.Safe)) if (!_magicEnergy.HasEnergy(args.Caster, manaCost, magicContainer, ent.Comp.Safe))
{ {
@@ -283,15 +287,25 @@ public partial class CP14SharedMagicSystem : EntitySystem
return; return;
var manaCost = CalculateManacost(ent, args.Caster.Value);
_magicEnergy.TryConsumeEnergy(args.Caster.Value, manaCost, safe: ent.Comp.Safe);
}
private FixedPoint2 CalculateManacost(Entity<CP14MagicEffectComponent> ent, EntityUid caster)
{
var manaCost = ent.Comp.ManaCost; var manaCost = ent.Comp.ManaCost;
if (ent.Comp.CanModifyManacost) if (ent.Comp.CanModifyManacost)
{ {
var manaEv = new CP14CalculateManacostEvent(args.Caster.Value, ent.Comp.ManaCost, ent.Comp.MagicType); var manaEv = new CP14CalculateManacostEvent(caster, ent.Comp.ManaCost, ent.Comp.MagicType);
RaiseLocalEvent(args.Caster.Value, manaEv); RaiseLocalEvent(caster, manaEv);
if (TryComp<CP14ProvidedBySpellStorageComponent>(ent, out var provided) && provided.SpellStorage is not null)
RaiseLocalEvent(provided.SpellStorage.Value, manaEv);
manaCost = manaEv.GetManacost(); manaCost = manaEv.GetManacost();
} }
_magicEnergy.TryConsumeEnergy(args.Caster.Value, manaCost, safe: ent.Comp.Safe); return manaCost;
} }
} }

View File

@@ -0,0 +1,11 @@
namespace Content.Shared._CP14.MagicSpellStorage;
/// <summary>
/// Located on the action entity, stores a reference to the object from which the action was created.
/// </summary>
[RegisterComponent, Access(typeof(CP14SpellStorageSystem))]
public sealed partial class CP14ProvidedBySpellStorageComponent : Component
{
[DataField]
public Entity<CP14SpellStorageComponent>? SpellStorage;
}

View File

@@ -5,6 +5,7 @@ using Content.Shared.Clothing.Components;
using Content.Shared.Hands; using Content.Shared.Hands;
using Content.Shared.Hands.EntitySystems; using Content.Shared.Hands.EntitySystems;
using Content.Shared.Mind; using Content.Shared.Mind;
using Robust.Shared.Network;
namespace Content.Shared._CP14.MagicSpellStorage; namespace Content.Shared._CP14.MagicSpellStorage;
@@ -18,10 +19,12 @@ public sealed partial class CP14SpellStorageSystem : EntitySystem
[Dependency] private readonly SharedMindSystem _mind = default!; [Dependency] private readonly SharedMindSystem _mind = default!;
[Dependency] private readonly CP14SharedMagicAttuningSystem _attuning = default!; [Dependency] private readonly CP14SharedMagicAttuningSystem _attuning = default!;
[Dependency] private readonly SharedHandsSystem _hands = default!; [Dependency] private readonly SharedHandsSystem _hands = default!;
[Dependency] private readonly INetManager _net = default!;
public override void Initialize() public override void Initialize()
{ {
SubscribeLocalEvent<CP14SpellStorageComponent, MapInitEvent>(OnMagicStorageInit); SubscribeLocalEvent<CP14SpellStorageComponent, MapInitEvent>(OnMagicStorageInit);
SubscribeLocalEvent<CP14SpellStorageComponent, ComponentShutdown>(OnMagicStorageShutdown);
SubscribeLocalEvent<CP14SpellStorageAccessHoldingComponent, GotEquippedHandEvent>(OnEquippedHand); SubscribeLocalEvent<CP14SpellStorageAccessHoldingComponent, GotEquippedHandEvent>(OnEquippedHand);
SubscribeLocalEvent<CP14SpellStorageAccessHoldingComponent, AddedAttuneToMindEvent>(OnHandAddedAttune); SubscribeLocalEvent<CP14SpellStorageAccessHoldingComponent, AddedAttuneToMindEvent>(OnHandAddedAttune);
@@ -38,16 +41,33 @@ public sealed partial class CP14SpellStorageSystem : EntitySystem
/// </summary> /// </summary>
private void OnMagicStorageInit(Entity<CP14SpellStorageComponent> mStorage, ref MapInitEvent args) private void OnMagicStorageInit(Entity<CP14SpellStorageComponent> mStorage, ref MapInitEvent args)
{ {
if (_net.IsClient)
return;
foreach (var spell in mStorage.Comp.Spells) foreach (var spell in mStorage.Comp.Spells)
{ {
var spellEnt = _actionContainer.AddAction(mStorage, spell); var spellEnt = _actionContainer.AddAction(mStorage, spell);
if (spellEnt is null) if (spellEnt is null)
continue; continue;
var provided = EntityManager.EnsureComponent<CP14ProvidedBySpellStorageComponent>(spellEnt.Value);
provided.SpellStorage = mStorage;
mStorage.Comp.SpellEntities.Add(spellEnt.Value); mStorage.Comp.SpellEntities.Add(spellEnt.Value);
} }
} }
private void OnMagicStorageShutdown(Entity<CP14SpellStorageComponent> mStorage, ref ComponentShutdown args)
{
if (_net.IsClient)
return;
foreach (var spell in mStorage.Comp.SpellEntities)
{
QueueDel(spell);
}
}
private void OnEquippedHand(Entity<CP14SpellStorageAccessHoldingComponent> ent, ref GotEquippedHandEvent args) private void OnEquippedHand(Entity<CP14SpellStorageAccessHoldingComponent> ent, ref GotEquippedHandEvent args)
{ {
if (!TryComp<CP14SpellStorageComponent>(ent, out var spellStorage)) if (!TryComp<CP14SpellStorageComponent>(ent, out var spellStorage))

View File

@@ -710,6 +710,7 @@ public $TYPE$ $NAME$;</s:String>
<s:Boolean x:Key="/Default/UserDictionary/Words/=loadout/@EntryIndexedValue">True</s:Boolean> <s:Boolean x:Key="/Default/UserDictionary/Words/=loadout/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=LOOC/@EntryIndexedValue">True</s:Boolean> <s:Boolean x:Key="/Default/UserDictionary/Words/=LOOC/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=Magboots/@EntryIndexedValue">True</s:Boolean> <s:Boolean x:Key="/Default/UserDictionary/Words/=Magboots/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=Manacost/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=metabolizable/@EntryIndexedValue">True</s:Boolean> <s:Boolean x:Key="/Default/UserDictionary/Words/=metabolizable/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=metagaming/@EntryIndexedValue">True</s:Boolean> <s:Boolean x:Key="/Default/UserDictionary/Words/=metagaming/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=mommi/@EntryIndexedValue">True</s:Boolean> <s:Boolean x:Key="/Default/UserDictionary/Words/=mommi/@EntryIndexedValue">True</s:Boolean>

View File

@@ -1,11 +1,14 @@
cp14-magic-type-abjuration = Abjuration cp14-magic-type-fire = Fire
cp14-magic-type-conjuration = Conjuration cp14-magic-type-water = Water
cp14-magic-type-divination = Divination cp14-magic-type-earth = Earth
cp14-magic-type-enchantment = Enchantment cp14-magic-type-healing = Healing
cp14-magic-type-evocation = Evocation cp14-magic-type-light-darkness = Light and darkness
cp14-magic-type-illusion = Illusion cp14-magic-type-meta = Metamagic
cp14-magic-type-necromancy = Necromancy cp14-magic-type-gate = Gate
cp14-magic-type-transmutation = Transmutation cp14-magic-type-movement = Movement
cp14-magic-manacost = Manacost cp14-magic-manacost = Manacost
cp14-magic-magic-type = Magic type cp14-magic-magic-type = Magic type
cp14-magic-verbal-aspect = Requires the ability to speak
cp14-magic-somatic-aspect = Requires a free hand:

View File

@@ -1,6 +1,7 @@
cp14-trait-category-physical = Physical features cp14-trait-category-physical = Physical features
cp14-trait-category-background = Background cp14-trait-category-background = Background
cp14-trait-category-speech = Speech peculiarities cp14-trait-category-speech = Speech peculiarities
cp14-trait-category-magic = Known spells
# Physical # Physical
@@ -19,6 +20,14 @@ cp14-trait-muted-desc = All you can do is mumble incoherently. The benefits of v
cp14-trait-snoring-name = Loud snoring cp14-trait-snoring-name = Loud snoring
cp14-trait-snoring-desc = It is simply impossible to sleep next to you because you snore terribly loudly at everything. cp14-trait-snoring-desc = It is simply impossible to sleep next to you because you snore terribly loudly at everything.
# Magic spells
cp14-trait-spell-flamecreation-name = flame creation
cp14-trait-spell-flamecreation-desc = A artificial flame forms in your hand, illuminating your surroundings. You can throw it to use it as a disposable weapon.
cp14-trait-spell-managift-name = mana gift
cp14-trait-spell-managift-desc = You can transfer a small amount of your magical energy to a target entity or magical object.
# Backgrounds # Backgrounds
cp14-trait-bg-entertainer-name = Entertainer cp14-trait-bg-entertainer-name = Entertainer

View File

@@ -1,11 +1,14 @@
cp14-magic-type-abjuration = Ограждение cp14-magic-type-fire = Огонь
cp14-magic-type-conjuration = Призыв cp14-magic-type-water = Вода
cp14-magic-type-divination = Прорицание cp14-magic-type-earth = Земля
cp14-magic-type-enchantment = Очарование cp14-magic-type-healing = Исцеление
cp14-magic-type-evocation = Воплощение cp14-magic-type-light-darkness = Свет и тьма
cp14-magic-type-illusion = Иллюзии cp14-magic-type-meta = Метамагия
cp14-magic-type-necromancy = Некромантия cp14-magic-type-gate = Пространство
cp14-magic-type-transmutation = Трансмутация cp14-magic-type-movement = Движение
cp14-magic-manacost = Затраты маны cp14-magic-manacost = Затраты маны
cp14-magic-magic-type = Тип магии cp14-magic-magic-type = Тип магии
cp14-magic-verbal-aspect = Требуется возможность говорить
cp14-magic-somatic-aspect = Требуются свободные руки:

View File

@@ -1,6 +1,7 @@
cp14-trait-category-physical = Физические особенности cp14-trait-category-physical = Физические особенности
cp14-trait-category-background = Предыстория cp14-trait-category-background = Предыстория
cp14-trait-category-speech = Особенности речи cp14-trait-category-speech = Особенности речи
cp14-trait-category-magic = Известные заклинания
# Physical # Physical
@@ -19,6 +20,14 @@ cp14-trait-muted-desc = Все что вы можете - бессвязно м
cp14-trait-snoring-name = Громкий храп cp14-trait-snoring-name = Громкий храп
cp14-trait-snoring-desc = Спать рядом с вами просто невозможно, потому что во все вы жутко громко храпите. cp14-trait-snoring-desc = Спать рядом с вами просто невозможно, потому что во все вы жутко громко храпите.
# Magic spells
cp14-trait-spell-flamecreation-name = создание пламени
cp14-trait-spell-flamecreation-desc = A artificial flame forms in your hand, illuminating your surroundings. You can throw it to use it as a disposable weapon.
cp14-trait-spell-managift-name = передача маны
cp14-trait-spell-managift-desc = You can transfer a small amount of your magical energy to a target entity or magical object.
# Backgrounds # Backgrounds
cp14-trait-bg-entertainer-name = Артист cp14-trait-bg-entertainer-name = Артист

View File

@@ -6,7 +6,7 @@
- type: CP14MagicEffectCastSlowdown - type: CP14MagicEffectCastSlowdown
speedMultiplier: -0.9 speedMultiplier: -0.9
- type: CP14MagicEffect - type: CP14MagicEffect
magicType: Evocation magicType: Earth
manaCost: 15 manaCost: 15
telegraphyEffects: telegraphyEffects:
- !type:CP14SpellSpawnEntityOnTarget - !type:CP14SpellSpawnEntityOnTarget

View File

@@ -4,7 +4,7 @@
description: A artificial flame forms in your hand, illuminating your surroundings. You can throw it to use it as a disposable weapon. description: A artificial flame forms in your hand, illuminating your surroundings. You can throw it to use it as a disposable weapon.
components: components:
- type: CP14MagicEffect - type: CP14MagicEffect
magicType: Conjuration magicType: Fire
manaCost: 5 manaCost: 5
effects: effects:
- !type:CP14SpellSpawnEntityOnTarget - !type:CP14SpellSpawnEntityOnTarget

View File

@@ -6,7 +6,7 @@
- type: CP14MagicEffectCastSlowdown - type: CP14MagicEffectCastSlowdown
speedMultiplier: -0.7 speedMultiplier: -0.7
- type: CP14MagicEffect - type: CP14MagicEffect
magicType: Evocation magicType: Fire
manaCost: 20 manaCost: 20
effects: effects:
- !type:CP14SpellSpawnEntityOnUser - !type:CP14SpellSpawnEntityOnUser

View File

@@ -6,7 +6,7 @@
- type: CP14MagicEffectCastSlowdown - type: CP14MagicEffectCastSlowdown
speedMultiplier: -0.4 speedMultiplier: -0.4
- type: CP14MagicEffect - type: CP14MagicEffect
magicType: Conjuration magicType: Gate
manaCost: 20 manaCost: 20
telegraphyEffects: telegraphyEffects:
- !type:CP14SpellSpawnEntityOnTarget - !type:CP14SpellSpawnEntityOnTarget

View File

@@ -6,7 +6,7 @@
- type: CP14MagicEffectCastSlowdown - type: CP14MagicEffectCastSlowdown
speedMultiplier: -0.5 speedMultiplier: -0.5
- type: CP14MagicEffect - type: CP14MagicEffect
magicType: Evocation magicType: Healing
manaCost: 20 manaCost: 20
telegraphyEffects: telegraphyEffects:
- !type:CP14SpellSpawnEntityOnTarget - !type:CP14SpellSpawnEntityOnTarget

View File

@@ -4,7 +4,7 @@
description: Creates a flash of bright, blinding light. description: Creates a flash of bright, blinding light.
components: components:
- type: CP14MagicEffect - type: CP14MagicEffect
magicType: Abjuration magicType: LightDarkness
manaCost: 10 manaCost: 10
telegraphyEffects: telegraphyEffects:
- !type:CP14SpellSpawnEntityOnTarget - !type:CP14SpellSpawnEntityOnTarget

View File

@@ -4,7 +4,7 @@
description: Materialization of a bright and safe light source. description: Materialization of a bright and safe light source.
components: components:
- type: CP14MagicEffect - type: CP14MagicEffect
magicType: Conjuration magicType: LightDarkness
manaCost: 10 manaCost: 10
effects: effects:
- !type:CP14SpellSpawnEntityOnTarget - !type:CP14SpellSpawnEntityOnTarget

View File

@@ -4,7 +4,7 @@
description: You can transfer a small amount of your magical energy to a target entity or magical object. description: You can transfer a small amount of your magical energy to a target entity or magical object.
components: components:
- type: CP14MagicEffect - type: CP14MagicEffect
magicType: Necromancy magicType: Meta
manaCost: 12 manaCost: 12
canModifyManacost: false canModifyManacost: false
telegraphyEffects: telegraphyEffects:

View File

@@ -4,7 +4,7 @@
description: You attract a ghostly hand that draws an object or entity to you description: You attract a ghostly hand that draws an object or entity to you
components: components:
- type: CP14MagicEffect - type: CP14MagicEffect
magicType: Transmutation magicType: Movement
manaCost: 10 manaCost: 10
telegraphyEffects: telegraphyEffects:
- !type:CP14SpellSpawnEntityOnTarget - !type:CP14SpellSpawnEntityOnTarget

View File

@@ -4,7 +4,7 @@
description: Materialization of a temporary sharp ice throwing dagger description: Materialization of a temporary sharp ice throwing dagger
components: components:
- type: CP14MagicEffect - type: CP14MagicEffect
magicType: Evocation magicType: Water
manaCost: 15 manaCost: 15
effects: effects:
- !type:CP14SpellSpawnEntityOnTarget - !type:CP14SpellSpawnEntityOnTarget

View File

@@ -6,7 +6,7 @@
- type: CP14MagicEffectCastSlowdown - type: CP14MagicEffectCastSlowdown
speedMultiplier: -0.25 speedMultiplier: -0.25
- type: CP14MagicEffect - type: CP14MagicEffect
magicType: Evocation magicType: Water
manaCost: 5 manaCost: 5
effects: effects:
- !type:CP14SpellProjectile - !type:CP14SpellProjectile

View File

@@ -125,7 +125,7 @@
sprite: _CP14/Clothing/Head/Roles/General/triangularhat.rsi sprite: _CP14/Clothing/Head/Roles/General/triangularhat.rsi
- type: Clothing - type: Clothing
sprite: _CP14/Clothing/Head/Roles/General/triangularhat.rsi sprite: _CP14/Clothing/Head/Roles/General/triangularhat.rsi
- type: CP14MagicClothingManacostModify - type: CP14MagicManacostModify
globalModifier: 0.8 globalModifier: 0.8
- type: entity - type: entity
@@ -138,5 +138,5 @@
sprite: _CP14/Clothing/Head/Roles/General/triangularhat_golden.rsi sprite: _CP14/Clothing/Head/Roles/General/triangularhat_golden.rsi
- type: Clothing - type: Clothing
sprite: _CP14/Clothing/Head/Roles/General/triangularhat_golden.rsi sprite: _CP14/Clothing/Head/Roles/General/triangularhat_golden.rsi
- type: CP14MagicClothingManacostModify - type: CP14MagicManacostModify
globalModifier: 0.8 globalModifier: 0.8

View File

@@ -103,7 +103,6 @@
- type: CP14MagicEffectCastSlowdown - type: CP14MagicEffectCastSlowdown
speedMultiplier: -1.0 speedMultiplier: -1.0
- type: CP14MagicEffect - type: CP14MagicEffect
magicType: Conjuration
manaCost: 5 manaCost: 5
telegraphyEffects: telegraphyEffects:
- !type:CP14SpellSpawnEntityOnTarget - !type:CP14SpellSpawnEntityOnTarget

View File

@@ -43,4 +43,7 @@
- type: CP14SpellStorageAccessHolding - type: CP14SpellStorageAccessHolding
- type: CP14SpellStorage - type: CP14SpellStorage
spells: spells:
- CP14ActionSpellCureWounds - CP14ActionSpellCureWounds
- type: CP14MagicManacostModify
modifiers:
Healing: 1.1

View File

@@ -1,39 +1,39 @@
- type: magicType - type: magicType
id: Abjuration id: Fire
name: cp14-magic-type-abjuration #Ограждение name: cp14-magic-type-fire
color: "#c94328" color: "#d9741c"
- type: magicType - type: magicType
id: Conjuration id: Water
name: cp14-magic-type-conjuration #Призыв name: cp14-magic-type-water
color: "#8e28c9" color: "#1c94d9"
- type: magicType - type: magicType
id: Divination id: Earth
name: cp14-magic-type-divination #Прорицание name: cp14-magic-type-earth
color: "#81d3e3" color: "#70533f"
- type: magicType - type: magicType
id: Enchantment id: Healing
name: cp14-magic-type-enchantment #Очарование name: cp14-magic-type-healing
color: "#7147a1" color: "#89e04f"
- type: magicType - type: magicType
id: Evocation id: LightDarkness
name: cp14-magic-type-evocation #Воплощение name: cp14-magic-type-light-darkness
color: "#47a14a" color: "#ba97b8"
- type: magicType - type: magicType
id: Illusion id: Meta
name: cp14-magic-type-illusion #Иллюзия name: cp14-magic-type-meta
color: "#cc1275" color: "#dcffdb"
- type: magicType - type: magicType
id: Necromancy id: Gate
name: cp14-magic-type-necromancy #Некромантия name: cp14-magic-type-gate
color: "#4dc4a4" color: "#32597d"
- type: magicType - type: magicType
id: Transmutation id: Movement
name: cp14-magic-type-transmutation #Трансмутация name: cp14-magic-type-movement
color: "#3333d4" color: "#63ceff"

View File

@@ -1,3 +1,8 @@
- type: traitCategory
id: CP14Magic
name: cp14-trait-category-magic
maxTraitPoints: 1
- type: traitCategory - type: traitCategory
id: CP14PhysicalTraits id: CP14PhysicalTraits
name: cp14-trait-category-physical name: cp14-trait-category-physical

View File

@@ -0,0 +1,17 @@
- type: trait
id: CP14MagicFlameCreation
name: cp14-trait-spell-flamecreation-name
description: cp14-trait-spell-flamecreation-desc
cost: 1
category: CP14Magic
actions:
- CP14ActionSpellFlameCreation
- type: trait
id: CP14MagicManaGift
name: cp14-trait-spell-managift-name
description: cp14-trait-spell-managift-desc
cost: 1
category: CP14Magic
actions:
- CP14ActionSpellManaGift

View File

@@ -5,7 +5,7 @@
"y": 32 "y": 32
}, },
"license": "CLA", "license": "CLA",
"copyright": "Created by Nimfar11 (github)", "copyright": "Created by TheShuEd (github)",
"states": [ "states": [
{ {
"name": "subterranean_leap" "name": "subterranean_leap"

Binary file not shown.

Before

Width:  |  Height:  |  Size: 950 B

After

Width:  |  Height:  |  Size: 381 B