Silva species gameplay difference (#701)
* plant growth spell, silva photosyntesis * playable species guidebook * fixes
This commit is contained in:
@@ -0,0 +1,47 @@
|
||||
using System.Text;
|
||||
using Content.Shared._CP14.Farming;
|
||||
using Content.Shared.EntityEffects;
|
||||
using JetBrains.Annotations;
|
||||
using Robust.Shared.Prototypes;
|
||||
|
||||
namespace Content.Server._CP14.Chemistry.ReagentEffect;
|
||||
|
||||
[UsedImplicitly]
|
||||
[DataDefinition]
|
||||
public sealed partial class CP14PlantResourceModify : EntityEffect
|
||||
{
|
||||
[DataField]
|
||||
public float Energy = 0f;
|
||||
|
||||
[DataField]
|
||||
public float Resourse = 0f;
|
||||
|
||||
protected override string? ReagentEffectGuidebookText(IPrototypeManager prototype, IEntitySystemManager entSys)
|
||||
{
|
||||
var sb = new StringBuilder();
|
||||
if (Energy != 0)
|
||||
sb.Append(Loc.GetString(Energy > 0 ? "cp14-reagent-effect-guidebook-plant-add-energy" : "cp14-reagent-effect-guidebook-plant-remove-energy", ("amount", Energy), ("chance", Probability)));
|
||||
if (Resourse != 0)
|
||||
sb.Append(Loc.GetString(Resourse > 0 ? "cp14-reagent-effect-guidebook-plant-add-resource" : "cp14-reagent-effect-guidebook-plant-remove-resource", ("amount", Resourse), ("chance", Probability)));
|
||||
|
||||
return sb.ToString();
|
||||
}
|
||||
|
||||
public override void Effect(EntityEffectBaseArgs args)
|
||||
{
|
||||
var scale = 1f;
|
||||
|
||||
if (args is EntityEffectReagentArgs reagentArgs)
|
||||
{
|
||||
scale = reagentArgs.Quantity.Float() * reagentArgs.Scale.Float();
|
||||
}
|
||||
|
||||
if (!args.EntityManager.TryGetComponent<CP14PlantComponent>(args.TargetEntity, out var plantComp))
|
||||
return;
|
||||
|
||||
var plantSystem = args.EntityManager.System<CP14SharedFarmingSystem>();
|
||||
|
||||
plantSystem.AffectEnergy((args.TargetEntity, plantComp), Energy * scale);
|
||||
plantSystem.AffectResource((args.TargetEntity, plantComp), Resourse * scale);
|
||||
}
|
||||
}
|
||||
@@ -1,24 +1,16 @@
|
||||
using System.Numerics;
|
||||
using Content.Server._CP14.MagicEnergy.Components;
|
||||
using Content.Shared._CP14.DayCycle;
|
||||
using Content.Shared._CP14.MagicEnergy.Components;
|
||||
|
||||
namespace Content.Server._CP14.MagicEnergy;
|
||||
|
||||
public partial class CP14MagicEnergySystem
|
||||
{
|
||||
[Dependency] private readonly CP14SharedDayCycleSystem _dayCycle = default!;
|
||||
|
||||
private void InitializeDraw()
|
||||
{
|
||||
SubscribeLocalEvent<CP14MagicEnergyDrawComponent, MapInitEvent>(OnDrawMapInit);
|
||||
SubscribeLocalEvent<CP14RandomAuraNodeComponent, MapInitEvent>(OnRandomRangeMapInit);
|
||||
}
|
||||
|
||||
private void OnRandomRangeMapInit(Entity<CP14RandomAuraNodeComponent> random, ref MapInitEvent args)
|
||||
{
|
||||
if (!TryComp<CP14AuraNodeComponent>(random, out var draw))
|
||||
return;
|
||||
|
||||
draw.Energy = _random.NextFloat(random.Comp.MinDraw, random.Comp.MaxDraw);
|
||||
draw.Range = _random.NextFloat(random.Comp.MinRange, random.Comp.MaxRange);
|
||||
}
|
||||
|
||||
private void OnDrawMapInit(Entity<CP14MagicEnergyDrawComponent> ent, ref MapInitEvent args)
|
||||
@@ -30,7 +22,6 @@ public partial class CP14MagicEnergySystem
|
||||
{
|
||||
UpdateEnergyContainer();
|
||||
UpdateEnergyCrystalSlot();
|
||||
UpdateEnergyRadiusDraw();
|
||||
}
|
||||
|
||||
private void UpdateEnergyContainer()
|
||||
@@ -38,12 +29,26 @@ public partial class CP14MagicEnergySystem
|
||||
var query = EntityQueryEnumerator<CP14MagicEnergyDrawComponent, CP14MagicEnergyContainerComponent>();
|
||||
while (query.MoveNext(out var uid, out var draw, out var magicContainer))
|
||||
{
|
||||
if (!draw.Enable)
|
||||
continue;
|
||||
|
||||
if (draw.NextUpdateTime >= _gameTiming.CurTime)
|
||||
continue;
|
||||
|
||||
draw.NextUpdateTime = _gameTiming.CurTime + TimeSpan.FromSeconds(draw.Delay);
|
||||
|
||||
ChangeEnergy(uid, magicContainer, draw.Energy, safe: draw.Safe);
|
||||
ChangeEnergy(uid, magicContainer, draw.Energy, draw.Safe);
|
||||
}
|
||||
|
||||
var query2 = EntityQueryEnumerator<CP14MagicEnergyPhotosynthesisComponent, CP14MagicEnergyContainerComponent>();
|
||||
while (query2.MoveNext(out var uid, out var draw, out var magicContainer))
|
||||
{
|
||||
if (draw.NextUpdateTime >= _gameTiming.CurTime)
|
||||
continue;
|
||||
|
||||
draw.NextUpdateTime = _gameTiming.CurTime + TimeSpan.FromSeconds(draw.Delay);
|
||||
|
||||
ChangeEnergy(uid, magicContainer, _dayCycle.TryDaylightThere(uid) ? draw.DaylightEnergy : draw.DarknessEnergy, true);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -66,28 +71,4 @@ public partial class CP14MagicEnergySystem
|
||||
ChangeEnergy(energyEnt.Value, energyComp, draw.Energy, draw.Safe);
|
||||
}
|
||||
}
|
||||
|
||||
private void UpdateEnergyRadiusDraw()
|
||||
{
|
||||
var query = EntityQueryEnumerator<CP14AuraNodeComponent>();
|
||||
while (query.MoveNext(out var uid, out var draw))
|
||||
{
|
||||
if (!draw.Enable)
|
||||
continue;
|
||||
|
||||
if (draw.NextUpdateTime >= _gameTiming.CurTime)
|
||||
continue;
|
||||
|
||||
draw.NextUpdateTime = _gameTiming.CurTime + TimeSpan.FromSeconds(draw.Delay);
|
||||
|
||||
var containers = _lookup.GetEntitiesInRange<CP14MagicEnergyContainerComponent>(Transform(uid).Coordinates, draw.Range);
|
||||
foreach (var container in containers)
|
||||
{
|
||||
var distance = Vector2.Distance(_transform.GetWorldPosition(uid), _transform.GetWorldPosition(container));
|
||||
var energyDraw = draw.Energy * (1 - distance / draw.Range);
|
||||
|
||||
ChangeEnergy(container, container.Comp, energyDraw, true);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -17,8 +17,6 @@ public partial class CP14MagicEnergySystem
|
||||
SubscribeLocalEvent<CP14MagicEnergyExaminableComponent, ExaminedEvent>(OnExamined);
|
||||
SubscribeLocalEvent<CP14MagicEnergyScannerComponent, CP14MagicEnergyScanEvent>(OnMagicScanAttempt);
|
||||
SubscribeLocalEvent<CP14MagicEnergyScannerComponent, InventoryRelayedEvent<CP14MagicEnergyScanEvent>>((e, c, ev) => OnMagicScanAttempt(e, c, ev.Args));
|
||||
|
||||
SubscribeLocalEvent<CP14AuraScannerComponent, UseInHandEvent>(OnAuraScannerUseInHand);
|
||||
}
|
||||
|
||||
private void OnMagicScanAttempt(EntityUid uid, CP14MagicEnergyScannerComponent component, CP14MagicEnergyScanEvent args)
|
||||
@@ -42,22 +40,4 @@ public partial class CP14MagicEnergySystem
|
||||
|
||||
args.PushMarkup(GetEnergyExaminedText(ent, magicContainer));
|
||||
}
|
||||
|
||||
private void OnAuraScannerUseInHand(Entity<CP14AuraScannerComponent> scanner, ref UseInHandEvent args)
|
||||
{
|
||||
FixedPoint2 sumDraw = 0f;
|
||||
var query = EntityQueryEnumerator<CP14AuraNodeComponent, TransformComponent>();
|
||||
while (query.MoveNext(out var auraUid, out var node, out var xform))
|
||||
{
|
||||
if (xform.MapUid != Transform(scanner).MapUid)
|
||||
continue;
|
||||
|
||||
var distance = Vector2.Distance(_transform.GetWorldPosition(auraUid), _transform.GetWorldPosition(scanner));
|
||||
if (distance > node.Range)
|
||||
continue;
|
||||
|
||||
sumDraw += node.Energy * (1 - distance / node.Range);
|
||||
}
|
||||
_popup.PopupCoordinates(Loc.GetString("cp14-magic-scanner", ("power", sumDraw)), Transform(scanner).Coordinates, args.User);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,50 +0,0 @@
|
||||
using Content.Shared.FixedPoint;
|
||||
|
||||
namespace Content.Server._CP14.MagicEnergy.Components;
|
||||
|
||||
[RegisterComponent, Access(typeof(CP14MagicEnergySystem))]
|
||||
public sealed partial class CP14AuraNodeComponent : Component
|
||||
{
|
||||
[DataField]
|
||||
public bool Enable = true;
|
||||
|
||||
[DataField]
|
||||
public FixedPoint2 Energy = 1f;
|
||||
|
||||
[DataField]
|
||||
public float Range = 10f;
|
||||
|
||||
/// <summary>
|
||||
/// If not safe, restoring or drawing power across boundaries call dangerous events, that may destroy crystals
|
||||
/// </summary>
|
||||
[DataField]
|
||||
public bool Safe = true;
|
||||
|
||||
/// <summary>
|
||||
/// how often objects will try to change magic energy. In Seconds
|
||||
/// </summary>
|
||||
[DataField]
|
||||
public float Delay = 5f;
|
||||
|
||||
/// <summary>
|
||||
/// the time of the next magic energy change
|
||||
/// </summary>
|
||||
[DataField]
|
||||
public TimeSpan NextUpdateTime { get; set; } = TimeSpan.Zero;
|
||||
}
|
||||
|
||||
[RegisterComponent, Access(typeof(CP14MagicEnergySystem))]
|
||||
public sealed partial class CP14RandomAuraNodeComponent : Component
|
||||
{
|
||||
[DataField]
|
||||
public float MinDraw = -2f;
|
||||
|
||||
[DataField]
|
||||
public float MaxDraw = 2f;
|
||||
|
||||
[DataField]
|
||||
public float MinRange = 5f;
|
||||
|
||||
[DataField]
|
||||
public float MaxRange = 10f;
|
||||
}
|
||||
@@ -1,6 +1,7 @@
|
||||
using Content.Shared._CP14.DayCycle.Components;
|
||||
using Content.Shared._CP14.DayCycle.Prototypes;
|
||||
using Content.Shared.Maps;
|
||||
using Content.Shared.Weather;
|
||||
using Robust.Shared.Map;
|
||||
using Robust.Shared.Map.Components;
|
||||
using Robust.Shared.Prototypes;
|
||||
@@ -13,27 +14,42 @@ public abstract class CP14SharedDayCycleSystem : EntitySystem
|
||||
|
||||
[Dependency] private readonly SharedMapSystem _maps = default!;
|
||||
[Dependency] private readonly ITileDefinitionManager _tileDefManager = default!;
|
||||
[Dependency] private readonly SharedWeatherSystem _weather = default!;
|
||||
|
||||
private EntityQuery<MapGridComponent> _mapGridQuery;
|
||||
|
||||
public override void Initialize()
|
||||
{
|
||||
base.Initialize();
|
||||
|
||||
_mapGridQuery = GetEntityQuery<MapGridComponent>();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Checks to see if the specified entity is on the map where it's daytime.
|
||||
/// </summary>
|
||||
/// <param name="target">An entity being tested to see if it is in daylight</param>
|
||||
/// <param name="checkRoof">Checks if the tile covers the weather (the only "roof" factor at the moment)</param>
|
||||
public bool TryDaylightThere(EntityUid target, bool checkRoof)
|
||||
public bool TryDaylightThere(EntityUid target, bool checkRoof = true)
|
||||
{
|
||||
var xform = Transform(target);
|
||||
if (!TryComp<CP14DayCycleComponent>(xform.MapUid, out var dayCycle))
|
||||
return false;
|
||||
|
||||
var day = dayCycle.CurrentPeriod == DayPeriod;
|
||||
if (!checkRoof || !TryComp<MapGridComponent>(xform.GridUid, out var mapGrid))
|
||||
return dayCycle.CurrentPeriod == DayPeriod;
|
||||
return day;
|
||||
|
||||
var tileRef = _maps.GetTileRef(xform.GridUid.Value, mapGrid, xform.Coordinates);
|
||||
var tileDef = (ContentTileDefinition) _tileDefManager[tileRef.Tile.TypeId];
|
||||
var grid = xform.GridUid;
|
||||
if (grid is null)
|
||||
return day;
|
||||
|
||||
if (!tileDef.Weather)
|
||||
if (!_mapGridQuery.TryComp(grid, out var gridComp))
|
||||
return day;
|
||||
|
||||
if (!_weather.CanWeatherAffect(grid.Value, gridComp, _maps.GetTileRef(xform.GridUid.Value, mapGrid, xform.Coordinates)))
|
||||
return false;
|
||||
|
||||
return dayCycle.CurrentPeriod == DayPeriod;
|
||||
return day;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,31 @@
|
||||
using Content.Shared.FixedPoint;
|
||||
using Content.Shared.Guidebook;
|
||||
|
||||
namespace Content.Shared._CP14.MagicEnergy.Components;
|
||||
|
||||
/// <summary>
|
||||
/// Restores mana if the entity is in the sun, and wastes it if not
|
||||
/// </summary>
|
||||
[RegisterComponent, Access(typeof(SharedCP14MagicEnergySystem))]
|
||||
public sealed partial class CP14MagicEnergyPhotosynthesisComponent : Component
|
||||
{
|
||||
[DataField]
|
||||
[GuidebookData]
|
||||
public FixedPoint2 DaylightEnergy = 2f;
|
||||
|
||||
[DataField]
|
||||
[GuidebookData]
|
||||
public FixedPoint2 DarknessEnergy = -2f;
|
||||
|
||||
/// <summary>
|
||||
/// how often objects will try to change magic energy. In Seconds
|
||||
/// </summary>
|
||||
[DataField]
|
||||
public float Delay = 3f;
|
||||
|
||||
/// <summary>
|
||||
/// the time of the next magic energy change
|
||||
/// </summary>
|
||||
[DataField]
|
||||
public TimeSpan NextUpdateTime { get; set; } = TimeSpan.Zero;
|
||||
}
|
||||
@@ -42,22 +42,24 @@ public sealed partial class CP14SpellStorageSystem : EntitySystem
|
||||
/// <summary>
|
||||
/// When we initialize, we create action entities, and add them to this item.
|
||||
/// </summary>
|
||||
private void OnMagicStorageInit(Entity<CP14SpellStorageComponent> mStorage, ref MapInitEvent args)
|
||||
private void OnMagicStorageInit(Entity<CP14SpellStorageComponent> storage, ref MapInitEvent args)
|
||||
{
|
||||
if (_net.IsClient)
|
||||
return;
|
||||
|
||||
foreach (var spell in mStorage.Comp.Spells)
|
||||
foreach (var spell in storage.Comp.Spells)
|
||||
{
|
||||
var spellEnt = _actionContainer.AddAction(mStorage, spell);
|
||||
var spellEnt = _actionContainer.AddAction(storage, spell);
|
||||
if (spellEnt is null)
|
||||
continue;
|
||||
|
||||
var provided = EntityManager.EnsureComponent<CP14MagicEffectComponent>(spellEnt.Value);
|
||||
provided.SpellStorage = mStorage;
|
||||
provided.SpellStorage = storage;
|
||||
|
||||
mStorage.Comp.SpellEntities.Add(spellEnt.Value);
|
||||
storage.Comp.SpellEntities.Add(spellEnt.Value);
|
||||
}
|
||||
if (storage.Comp.GrantAccessToSelf)
|
||||
_actions.GrantActions(storage, storage.Comp.SpellEntities, storage);
|
||||
}
|
||||
|
||||
private void OnMagicStorageShutdown(Entity<CP14SpellStorageComponent> mStorage, ref ComponentShutdown args)
|
||||
|
||||
@@ -8,6 +8,12 @@ namespace Content.Shared._CP14.MagicSpellStorage.Components;
|
||||
[RegisterComponent, Access(typeof(CP14SpellStorageSystem))]
|
||||
public sealed partial class CP14SpellStorageComponent : Component
|
||||
{
|
||||
/// <summary>
|
||||
/// Set true when giving starting abilities to creatures in this way
|
||||
/// </summary>
|
||||
[DataField]
|
||||
public bool GrantAccessToSelf = false;
|
||||
|
||||
/// <summary>
|
||||
/// list of spell prototypes used for initialization.
|
||||
/// </summary>
|
||||
|
||||
@@ -20,4 +20,28 @@ cp14-reagent-effect-guidebook-mana-remove =
|
||||
{ $chance ->
|
||||
[1] Burns off {$amount} mana
|
||||
*[other] to burn {$amount} mana
|
||||
}
|
||||
|
||||
cp14-reagent-effect-guidebook-plant-add-resource =
|
||||
{ $chance ->
|
||||
[1] Restores {$amount} plant resource
|
||||
*[other] to restore {$amount} plant resource
|
||||
}
|
||||
|
||||
cp14-reagent-effect-guidebook-plant-remove-resource =
|
||||
{ $chance ->
|
||||
[1] Absorbes {$amount} plant resource
|
||||
*[other] to abrorb {$amount} plant resource
|
||||
}
|
||||
|
||||
cp14-reagent-effect-guidebook-plant-add-energy =
|
||||
{ $chance ->
|
||||
[1] Restores {$amount} plant energy
|
||||
*[other] to restore {$amount} plant energy
|
||||
}
|
||||
|
||||
cp14-reagent-effect-guidebook-plant-remove-energy =
|
||||
{ $chance ->
|
||||
[1] Absorbes {$amount} plant energy
|
||||
*[other] to abrorb {$amount} plant energy
|
||||
}
|
||||
@@ -20,4 +20,28 @@ cp14-reagent-effect-guidebook-mana-remove =
|
||||
{ $chance ->
|
||||
[1] Выжигает {$amount} единиц маны
|
||||
*[other] выжечь {$amount} единиц маны
|
||||
}
|
||||
|
||||
cp14-reagent-effect-guidebook-plant-add-resource =
|
||||
{ $chance ->
|
||||
[1] Восстанавливает {$amount} ресурсов растения
|
||||
*[other] восстановить {$amount} ресурсов растения
|
||||
}
|
||||
|
||||
cp14-reagent-effect-guidebook-plant-remove-resource =
|
||||
{ $chance ->
|
||||
[1] Поглощает {$amount} ресурсов растения
|
||||
*[other] поглотить {$amount} ресурсов растения
|
||||
}
|
||||
|
||||
cp14-reagent-effect-guidebook-plant-add-energy =
|
||||
{ $chance ->
|
||||
[1] Восстанавливает {$amount} энергии растения
|
||||
*[other] восстановить {$amount} энергии растения
|
||||
}
|
||||
|
||||
cp14-reagent-effect-guidebook-plant-remove-energy =
|
||||
{ $chance ->
|
||||
[1] Поглощает {$amount} энергии растения
|
||||
*[other] поглотить {$amount} энергии растения
|
||||
}
|
||||
@@ -0,0 +1,113 @@
|
||||
- type: entity
|
||||
id: CP14ActionSpellPlantGrowth
|
||||
name: Plant growth
|
||||
description: You restore health and internal resources to the selected plant.
|
||||
components:
|
||||
- type: Sprite
|
||||
sprite: _CP14/Effects/Magic/spells_icons.rsi
|
||||
state: plant_growth
|
||||
- type: CP14MagicEffectCastSlowdown
|
||||
speedMultiplier: 0.8
|
||||
- type: CP14MagicEffectManaCost
|
||||
manaCost: 5
|
||||
- type: CP14MagicEffect
|
||||
magicType: Healing
|
||||
telegraphyEffects:
|
||||
- !type:CP14SpellSpawnEntityOnTarget
|
||||
spawns:
|
||||
- CP14ImpactEffectPlantGrowth
|
||||
effects:
|
||||
- !type:CP14SpellSpawnEntityOnTarget
|
||||
spawns:
|
||||
- CP14ImpactEffectCureWounds
|
||||
- !type:CP14SpellApplyEntityEffect
|
||||
effects:
|
||||
- !type:HealthChange
|
||||
damage:
|
||||
types:
|
||||
Asphyxiation: -1
|
||||
Bloodloss: -1
|
||||
Blunt: -1
|
||||
Cellular: -0.1
|
||||
Caustic: -1
|
||||
Cold: -1
|
||||
Heat: -1
|
||||
Piercing: -1
|
||||
Poison: -1
|
||||
Radiation: -1
|
||||
Shock: -1
|
||||
Slash: -1
|
||||
- !type:SatiateThirst
|
||||
factor: 3
|
||||
- !type:SatiateHunger
|
||||
factor: 3
|
||||
- !type:CP14PlantResourceModify
|
||||
energy: 3
|
||||
resourse: 3
|
||||
- !type:Jitter
|
||||
- type: CP14MagicEffectVerbalAspect
|
||||
startSpeech: "Plantae durant..."
|
||||
- type: CP14MagicEffectCastingVisual
|
||||
proto: CP14RunePlantGrowth
|
||||
- type: EntityTargetAction
|
||||
whitelist:
|
||||
components:
|
||||
- CP14Plant
|
||||
- CP14MagicEnergyPhotosynthesis
|
||||
range: 2
|
||||
itemIconStyle: BigAction
|
||||
interactOnMiss: false
|
||||
sound: !type:SoundPathSpecifier
|
||||
path: /Audio/Magic/rumble.ogg
|
||||
icon:
|
||||
sprite: _CP14/Effects/Magic/spells_icons.rsi
|
||||
state: plant_growth
|
||||
event: !type:CP14ToggleableEntityTargetActionEvent
|
||||
cooldown: 15
|
||||
castTime: 10
|
||||
breakOnMove: true
|
||||
|
||||
- type: entity
|
||||
parent: CP14ActionSpellPlantGrowth
|
||||
id: CP14ActionSpellPlantGrowthSilva
|
||||
name: Blessing of silvas
|
||||
components:
|
||||
- type: CP14MagicEffectManaCost
|
||||
manaCost: 3
|
||||
|
||||
# Scrolls
|
||||
|
||||
- type: entity
|
||||
parent: CP14BaseSpellScrollHealing
|
||||
id: CP14SpellScrollPlantGrowth
|
||||
name: plant growth spell scroll
|
||||
components:
|
||||
- type: CP14SpellStorage
|
||||
spells:
|
||||
- CP14ActionSpellPlantGrowth
|
||||
|
||||
# Effects
|
||||
|
||||
- type: entity
|
||||
id: CP14ImpactEffectPlantGrowth
|
||||
parent: CP14BaseMagicImpact
|
||||
categories: [ HideSpawnMenu ]
|
||||
components:
|
||||
- type: Sprite
|
||||
layers:
|
||||
- state: wave_up
|
||||
color: "#5096d4"
|
||||
shader: unshaded
|
||||
|
||||
- type: entity
|
||||
id: CP14RunePlantGrowth
|
||||
parent: CP14BaseMagicRune
|
||||
categories: [ HideSpawnMenu ]
|
||||
components:
|
||||
- type: PointLight
|
||||
color: "#328643"
|
||||
- type: Sprite
|
||||
layers:
|
||||
- state: medium_circle
|
||||
color: "#79b330"
|
||||
shader: unshaded
|
||||
@@ -43,6 +43,7 @@
|
||||
event: !type:CP14ToggleableEntityTargetActionEvent
|
||||
cooldown: 5
|
||||
castTime: 10
|
||||
breakOnMove: true
|
||||
|
||||
- type: entity
|
||||
id: CP14RuneManaGift
|
||||
|
||||
@@ -46,6 +46,7 @@
|
||||
- id: CP14SpellScrollEarthWall
|
||||
- id: CP14SpellScrollFlashLight
|
||||
- id: CP14SpellScrollWaterCreation
|
||||
- id: CP14SpellScrollPlantGrowth
|
||||
- id: CP14EnergyCrystalSmall
|
||||
- id: CP14BaseSharpeningStone
|
||||
- id: CP14GlassShard
|
||||
|
||||
@@ -1,14 +0,0 @@
|
||||
- type: entity
|
||||
id: CP14AuraNodeBase
|
||||
parent: MarkerBase
|
||||
name: aura node
|
||||
description: An energy node that affects the elemental energy in the surrounding space.
|
||||
categories: [ ForkFiltered ]
|
||||
components:
|
||||
- type: Sprite
|
||||
layers:
|
||||
- state: green
|
||||
- sprite: Mobs/Animals/mouse.rsi
|
||||
state: icon-2 #TODO lol
|
||||
- type: CP14AuraNode
|
||||
- type: CP14RandomAuraNode
|
||||
@@ -64,6 +64,13 @@
|
||||
spawned:
|
||||
- id: FoodMeatHuman
|
||||
amount: 5
|
||||
- type: CP14MagicEnergyPhotosynthesis # Silva special feature
|
||||
- type: CP14SpellStorage
|
||||
grantAccessToSelf: true
|
||||
spells:
|
||||
- CP14ActionSpellPlantGrowthSilva
|
||||
- type: CP14MagicEnergyDraw
|
||||
enable: false
|
||||
- type: Body
|
||||
prototype: CP14Silva
|
||||
requiredLegs: 2
|
||||
|
||||
@@ -1,24 +1,3 @@
|
||||
- type: entity
|
||||
id: CP14AuraScanner
|
||||
parent: BaseItem
|
||||
name: aura scanner
|
||||
description: Scans the polarity of the elemental energy flows in this place.
|
||||
categories: [ ForkFiltered ]
|
||||
components:
|
||||
- type: Sprite
|
||||
sprite: _CP14/Objects/Specific/Thaumaturgy/aura_scanner.rsi
|
||||
state: icon
|
||||
- type: Item
|
||||
sprite: _CP14/Objects/Specific/Thaumaturgy/aura_scanner.rsi
|
||||
- type: CP14AuraScanner
|
||||
- type: EmitSoundOnUse
|
||||
sound:
|
||||
path: /Audio/_CP14/Effects/aura_scanner.ogg
|
||||
params:
|
||||
variation: 0.03
|
||||
- type: UseDelay
|
||||
delay: 4
|
||||
|
||||
- type: entity
|
||||
id: CP14RitualChalk
|
||||
parent: BaseItem
|
||||
|
||||
@@ -35,3 +35,19 @@
|
||||
name: Imperial laws
|
||||
text: "/ServerInfo/_CP14/Guidebook_EN/ImperialLaws.xml"
|
||||
filterEnabled: True
|
||||
|
||||
- type: guideEntry
|
||||
crystallPunkAllowed: true
|
||||
id: CP14_EN_Species
|
||||
name: Playable species
|
||||
text: "/ServerInfo/_CP14/Guidebook_EN/Species.xml"
|
||||
children:
|
||||
- CP14_EN_Silva
|
||||
filterEnabled: True
|
||||
|
||||
- type: guideEntry
|
||||
crystallPunkAllowed: true
|
||||
id: CP14_EN_Silva
|
||||
name: Silva
|
||||
text: "/ServerInfo/_CP14/Guidebook_EN/SpeciesTabs/Silva.xml"
|
||||
filterEnabled: True
|
||||
@@ -35,3 +35,19 @@
|
||||
name: Имперские законы
|
||||
text: "/ServerInfo/_CP14/Guidebook_RU/ImperialLaws.xml"
|
||||
filterEnabled: True
|
||||
|
||||
- type: guideEntry
|
||||
crystallPunkAllowed: true
|
||||
id: CP14_RU_Species
|
||||
name: Играбельные расы
|
||||
text: "/ServerInfo/_CP14/Guidebook_RU/Species.xml"
|
||||
children:
|
||||
- CP14_RU_Silva
|
||||
filterEnabled: True
|
||||
|
||||
- type: guideEntry
|
||||
crystallPunkAllowed: true
|
||||
id: CP14_RU_Silva
|
||||
name: Сильва
|
||||
text: "/ServerInfo/_CP14/Guidebook_RU/SpeciesTabs/Silva.xml"
|
||||
filterEnabled: True
|
||||
@@ -5,6 +5,7 @@
|
||||
name: Welcome to CrystallEdge
|
||||
text: "/ServerInfo/_CP14/Guidebook_EN/Welcome.xml"
|
||||
children:
|
||||
- CP14_EN_Species
|
||||
- CP14_EN_Alchemy
|
||||
- CP14_EN_Demiplanes
|
||||
- CP14_EN_Imperial_Laws
|
||||
@@ -16,6 +17,7 @@
|
||||
name: Добро пожаловать в CrystallEdge
|
||||
text: "/ServerInfo/_CP14/Guidebook_RU/Welcome.xml"
|
||||
children:
|
||||
- CP14_RU_Species
|
||||
- CP14_RU_Alchemy
|
||||
- CP14_RU_Demiplanes
|
||||
- CP14_RU_Imperial_Laws
|
||||
|
||||
@@ -438,6 +438,7 @@
|
||||
- CP14ActionSpellWaterCreation
|
||||
- CP14ActionSpellBeerCreation
|
||||
- CP14ActionSpellSprint
|
||||
- CP14ActionSpellPlantGrowth
|
||||
|
||||
- type: loadout
|
||||
id: CP14ActionSpellFlameCreation
|
||||
@@ -514,4 +515,17 @@
|
||||
id: CP14ActionSpellSprint
|
||||
dummyEntity: CP14ActionSpellSprint
|
||||
actions:
|
||||
- CP14ActionSpellSprint
|
||||
- CP14ActionSpellSprint
|
||||
|
||||
- type: loadout
|
||||
id: CP14ActionSpellPlantGrowth
|
||||
dummyEntity: CP14ActionSpellPlantGrowth
|
||||
actions:
|
||||
- CP14ActionSpellPlantGrowth
|
||||
effects:
|
||||
- !type:JobRequirementLoadoutEffect
|
||||
requirement:
|
||||
!type:SpeciesRequirement
|
||||
species:
|
||||
- CP14Silva
|
||||
inverted: true # Silvas cannot take this spell, thwy have buffed version by default
|
||||
6
Resources/ServerInfo/_CP14/Guidebook_EN/Species.xml
Normal file
6
Resources/ServerInfo/_CP14/Guidebook_EN/Species.xml
Normal file
@@ -0,0 +1,6 @@
|
||||
<Document>
|
||||
# Playable species
|
||||
|
||||
TODO
|
||||
|
||||
</Document>
|
||||
@@ -0,0 +1,22 @@
|
||||
<Document>
|
||||
# Silva
|
||||
|
||||
<Box>
|
||||
<GuideEntityEmbed Entity="CP14MobSilva" Caption="Silva"/>
|
||||
</Box>
|
||||
|
||||
Silvas - Don't have a lore description of the race in the guidebook yet. We await the text from the Wanderer.
|
||||
|
||||
## Magical photosynthesis
|
||||
|
||||
Silvas regenerate [protodata="CP14MobSilva" comp="CP14MagicEnergyPhotosynthesis" member="DaylightEnergy"/] mana while in sunlight, but without it they gradually lose [protodata="CP14MobSilva" comp="CP14MagicEnergyPhotosynthesis" member="DarknessEnergy"/] mana.
|
||||
|
||||
## Blessing of the silvas
|
||||
|
||||
Silvas cannot take the Plant Growth spell, but they have an improved version of it that uses less mana. Silvas are considered plants for these spells, so you can use them to restore hunger, thirst, and health to silvas just like you can restore health and resources to regular plants.
|
||||
|
||||
<Box>
|
||||
<GuideEntityEmbed Entity="CP14ActionSpellPlantGrowthSilva"/>
|
||||
</Box>
|
||||
|
||||
</Document>
|
||||
6
Resources/ServerInfo/_CP14/Guidebook_RU/Species.xml
Normal file
6
Resources/ServerInfo/_CP14/Guidebook_RU/Species.xml
Normal file
@@ -0,0 +1,6 @@
|
||||
<Document>
|
||||
# Игровые расы
|
||||
|
||||
TODO
|
||||
|
||||
</Document>
|
||||
@@ -0,0 +1,22 @@
|
||||
<Document>
|
||||
# Сильвы
|
||||
|
||||
<Box>
|
||||
<GuideEntityEmbed Entity="CP14MobSilva" Caption="Сильва"/>
|
||||
</Box>
|
||||
|
||||
Сильвы - пока что не имеют лорное описание расы в гайдбуке. Ждем текста от летописи.
|
||||
|
||||
## Магический фотосинтез
|
||||
|
||||
Сильвы регенерируют [protodata="CP14MobSilva" comp="CP14MagicEnergyPhotosynthesis" member="DaylightEnergy"/] маны находясь под солнечным светом, но без него постепенно теряют [protodata="CP14MobSilva" comp="CP14MagicEnergyPhotosynthesis" member="DarknessEnergy"/] маны.
|
||||
|
||||
## Благословение сильв
|
||||
|
||||
Сильвы не могут взять заклинание "Взращивание растений", но они имеют его улучшенную версию, которая затрачивает меньшее количество маны. Сильвы считаются растениями для этих заклинаний, так что с их помощью вы можете восстанавливать голод, жажду и здоровье сильв, как и восстанавливать здоровье и ресурсы обычных растений.
|
||||
|
||||
<Box>
|
||||
<GuideEntityEmbed Entity="CP14ActionSpellPlantGrowthSilva"/>
|
||||
</Box>
|
||||
|
||||
</Document>
|
||||
@@ -5,7 +5,7 @@
|
||||
"y": 32
|
||||
},
|
||||
"license": "CLA",
|
||||
"copyright": "Created by .kreks., cure_poison, cure_burn, mana_gift, water creation, beer creation, sprint and resurrection by TheShuEd",
|
||||
"copyright": "Created by .kreks., cure_poison, cure_burn, mana_gift, water creation, plant_growth, beer creation, sprint and resurrection by TheShuEd",
|
||||
"states": [
|
||||
{
|
||||
"name": "beer_creation"
|
||||
@@ -43,6 +43,9 @@
|
||||
{
|
||||
"name": "mana_gift"
|
||||
},
|
||||
{
|
||||
"name": "plant_growth"
|
||||
},
|
||||
{
|
||||
"name": "resurrection"
|
||||
},
|
||||
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 406 B |
@@ -208,6 +208,10 @@ CP14BaseBroom: null
|
||||
CP14DemiplanKey: CP14DemiplaneKeyT1
|
||||
CP14SpawnerExpeditionLootCommon: CP14SpawnerDemiplaneLootT1
|
||||
|
||||
#2024-06-01
|
||||
CP14AuraNodeBase: null
|
||||
CP14AuraScanner: null
|
||||
|
||||
# <---> CrystallEdge migration zone end
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user