Compare commits
12 Commits
des-fishin
...
master
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
5b6108377e | ||
|
|
95b4b05574 | ||
|
|
9152f270a5 | ||
|
|
1606ff154d | ||
|
|
0ecbc0ac35 | ||
|
|
bbbaa9cbfa | ||
|
|
ccf58f664c | ||
|
|
33a02ffcef | ||
|
|
ade45ee8e3 | ||
|
|
0fdc56c796 | ||
|
|
ecd5bf3019 | ||
|
|
b6f31ad49f |
38
.github/workflows/cla.yml
vendored
38
.github/workflows/cla.yml
vendored
@@ -1,38 +0,0 @@
|
||||
name: "CLA Assistant"
|
||||
on:
|
||||
issue_comment:
|
||||
types: [created]
|
||||
pull_request_target:
|
||||
types: [opened,closed,synchronize]
|
||||
paths:
|
||||
- '**CP14**'
|
||||
|
||||
# explicitly configure permissions, in case your GITHUB_TOKEN workflow permissions are set to read-only in repository settings
|
||||
permissions:
|
||||
actions: write
|
||||
contents: write # this can be 'read' if the signatures are in remote repository
|
||||
pull-requests: write
|
||||
statuses: write
|
||||
|
||||
jobs:
|
||||
CLAAssistant:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: "CLA Assistant"
|
||||
if: ((github.event.comment.body == 'recheck' || github.event.comment.body == 'I have read the CLA Document and I hereby sign the CLA') || github.event_name == 'pull_request_target') && github.actor != 'TheShuEd'
|
||||
uses: contributor-assistant/github-action@v2.6.1
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
# the below token should have repo scope and must be manually added by you in the repository's secret
|
||||
# This token is required only if you have configured to store the signatures in a remote repository/organization
|
||||
# PERSONAL_ACCESS_TOKEN: ${{ secrets.PERSONAL_ACCESS_TOKEN }}
|
||||
with:
|
||||
path-to-signatures: 'signatures/version1/cla.json'
|
||||
path-to-document: 'https://github.com/crystallpunk-14/crystall-punk-14/blob/master/CLA.md' # e.g. a CLA or a DCO document
|
||||
# branch should not be protected
|
||||
branch: 'master'
|
||||
allowlist: TheShuEd,bot*
|
||||
|
||||
# the followings are the optional inputs - If the optional inputs are not given, then default values will be taken
|
||||
#custom-pr-sign-comment: 'The signature to be committed in order to sign the CLA'
|
||||
#custom-allsigned-prcomment: 'pull request comment when all contributors has signed, defaults to **CLA Assistant Lite bot** All Contributors have signed the CLA.'
|
||||
@@ -83,6 +83,10 @@ public sealed partial class ChatUIController : UIController
|
||||
{SharedChatSystem.OOCPrefix, ChatSelectChannel.OOC},
|
||||
{SharedChatSystem.EmotesPrefix, ChatSelectChannel.Emotes},
|
||||
{SharedChatSystem.EmotesAltPrefix, ChatSelectChannel.Emotes},
|
||||
// CrystallEdge alternative emotes prefix
|
||||
{SharedChatSystem.CEEmotesPrefix, ChatSelectChannel.Emotes},
|
||||
{SharedChatSystem.CEEmotesAltPrefix, ChatSelectChannel.Emotes},
|
||||
// CrystallEdge End
|
||||
{SharedChatSystem.AdminPrefix, ChatSelectChannel.Admin},
|
||||
{SharedChatSystem.RadioCommonPrefix, ChatSelectChannel.Radio},
|
||||
{SharedChatSystem.DeadPrefix, ChatSelectChannel.Dead}
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
using System.Numerics;
|
||||
using Content.Shared._CP14.MagicVision;
|
||||
using Content.Shared.Examine;
|
||||
using Content.Shared.StatusEffectNew;
|
||||
using Robust.Client.GameObjects;
|
||||
using Robust.Client.Graphics;
|
||||
using Robust.Client.Player;
|
||||
@@ -21,14 +22,16 @@ public sealed class CP14ClientMagicVisionSystem : CP14SharedMagicVisionSystem
|
||||
[Dependency] private readonly SharedTransformSystem _transform = default!;
|
||||
[Dependency] private readonly IOverlayManager _overlayMan = default!;
|
||||
[Dependency] private readonly SharedAudioSystem _audio = default!;
|
||||
[Dependency] private readonly StatusEffectsSystem _status = default!;
|
||||
|
||||
|
||||
private CP14MagicVisionOverlay? _overlay;
|
||||
private CP14MagicVisionNoirOverlay? _overlay2;
|
||||
|
||||
private TimeSpan _nextUpdate = TimeSpan.Zero;
|
||||
|
||||
private SoundSpecifier _startSound = new SoundPathSpecifier(new ResPath("/Audio/Effects/eye_open.ogg"));
|
||||
private SoundSpecifier _endSound = new SoundPathSpecifier(new ResPath("/Audio/Effects/eye_close.ogg"));
|
||||
private readonly SoundSpecifier _startSound = new SoundPathSpecifier(new ResPath("/Audio/Effects/eye_open.ogg"));
|
||||
private readonly SoundSpecifier _endSound = new SoundPathSpecifier(new ResPath("/Audio/Effects/eye_close.ogg"));
|
||||
|
||||
public override void Initialize()
|
||||
{
|
||||
@@ -36,71 +39,52 @@ public sealed class CP14ClientMagicVisionSystem : CP14SharedMagicVisionSystem
|
||||
|
||||
SubscribeLocalEvent<CP14MagicVisionMarkerComponent, AfterAutoHandleStateEvent>(OnHandleStateMarker);
|
||||
|
||||
SubscribeLocalEvent<CP14MagicVisionComponent, LocalPlayerAttachedEvent>(OnPlayerAttached);
|
||||
SubscribeLocalEvent<CP14MagicVisionComponent, LocalPlayerDetachedEvent>(OnPlayerDetached);
|
||||
SubscribeLocalEvent<CP14MagicVisionStatusEffectComponent, StatusEffectRelayedEvent<LocalPlayerAttachedEvent>>(OnPlayerAttached);
|
||||
SubscribeLocalEvent<CP14MagicVisionStatusEffectComponent, StatusEffectRelayedEvent<LocalPlayerDetachedEvent>>(OnPlayerDetached);
|
||||
|
||||
SubscribeLocalEvent<CP14MagicVisionStatusEffectComponent, StatusEffectAppliedEvent>(OnStatusEffectApplied);
|
||||
SubscribeLocalEvent<CP14MagicVisionStatusEffectComponent, StatusEffectRemovedEvent>(OnStatusEffectRemoved);
|
||||
|
||||
SubscribeLocalEvent<CP14MagicVisionComponent, ComponentInit>(OnComponentInit);
|
||||
SubscribeLocalEvent<CP14MagicVisionComponent, ComponentShutdown>(OnComponentShutdown);
|
||||
}
|
||||
|
||||
private void OnComponentShutdown(Entity<CP14MagicVisionComponent> ent, ref ComponentShutdown args)
|
||||
private void OnPlayerAttached(Entity<CP14MagicVisionStatusEffectComponent> ent, ref StatusEffectRelayedEvent<LocalPlayerAttachedEvent> args)
|
||||
{
|
||||
if (_player.LocalEntity != ent)
|
||||
return;
|
||||
if (_overlay != null)
|
||||
{
|
||||
_overlayMan.RemoveOverlay(_overlay);
|
||||
_overlay = null;
|
||||
}
|
||||
if (_overlay2 != null)
|
||||
{
|
||||
_overlayMan.RemoveOverlay(_overlay2);
|
||||
_overlay2 = null;
|
||||
}
|
||||
|
||||
_audio.PlayGlobal(_endSound, ent);
|
||||
}
|
||||
|
||||
private void OnComponentInit(Entity<CP14MagicVisionComponent> ent, ref ComponentInit args)
|
||||
{
|
||||
if (_player.LocalEntity != ent)
|
||||
if (args.Args.Entity != _player.LocalEntity)
|
||||
return;
|
||||
|
||||
_overlay = new CP14MagicVisionOverlay();
|
||||
_overlayMan.AddOverlay(_overlay);
|
||||
_overlay.StartOverlay = _timing.CurTime;
|
||||
|
||||
_overlay2 = new CP14MagicVisionNoirOverlay();
|
||||
_overlayMan.AddOverlay(_overlay2);
|
||||
|
||||
_audio.PlayGlobal(_startSound, ent);
|
||||
ApplyOverlay(ent);
|
||||
}
|
||||
|
||||
private void OnPlayerAttached(Entity<CP14MagicVisionComponent> ent, ref LocalPlayerAttachedEvent args)
|
||||
private void OnStatusEffectApplied(Entity<CP14MagicVisionStatusEffectComponent> ent, ref StatusEffectAppliedEvent args)
|
||||
{
|
||||
_overlay = new CP14MagicVisionOverlay();
|
||||
_overlayMan.AddOverlay(_overlay);
|
||||
_overlay.StartOverlay = _timing.CurTime;
|
||||
if (args.Target != _player.LocalEntity)
|
||||
return;
|
||||
|
||||
_overlay2 = new CP14MagicVisionNoirOverlay();
|
||||
_overlayMan.AddOverlay(_overlay2);
|
||||
//Prevents it from being applied twice
|
||||
if (_timing.IsFirstTimePredicted)
|
||||
return;
|
||||
|
||||
_audio.PlayGlobal(_startSound, ent);
|
||||
ApplyOverlay(ent);
|
||||
}
|
||||
|
||||
private void OnPlayerDetached(Entity<CP14MagicVisionComponent> ent, ref LocalPlayerDetachedEvent args)
|
||||
private void OnPlayerDetached(Entity<CP14MagicVisionStatusEffectComponent> ent, ref StatusEffectRelayedEvent<LocalPlayerDetachedEvent> args)
|
||||
{
|
||||
if (_overlay != null)
|
||||
{
|
||||
_overlayMan.RemoveOverlay(_overlay);
|
||||
_overlay = null;
|
||||
}
|
||||
if (_overlay2 != null)
|
||||
{
|
||||
_overlayMan.RemoveOverlay(_overlay2);
|
||||
_overlay2 = null;
|
||||
}
|
||||
_audio.PlayGlobal(_endSound, ent);
|
||||
if (args.Args.Entity != _player.LocalEntity)
|
||||
return;
|
||||
|
||||
RemoveOverlay(ent);
|
||||
}
|
||||
|
||||
private void OnStatusEffectRemoved(Entity<CP14MagicVisionStatusEffectComponent> ent, ref StatusEffectRemovedEvent args)
|
||||
{
|
||||
if (args.Target != _player.LocalEntity)
|
||||
return;
|
||||
|
||||
//Prevents it from beeing removed twice
|
||||
if (_timing.IsFirstTimePredicted)
|
||||
return;
|
||||
|
||||
RemoveOverlay(ent);
|
||||
}
|
||||
|
||||
protected override void OnExamined(Entity<CP14MagicVisionMarkerComponent> ent, ref ExaminedEvent args)
|
||||
@@ -154,6 +138,38 @@ public sealed class CP14ClientMagicVisionSystem : CP14SharedMagicVisionSystem
|
||||
{
|
||||
var progress = Math.Clamp((_timing.CurTime.TotalSeconds - ent.Comp.SpawnTime.TotalSeconds) / (ent.Comp.EndTime.TotalSeconds - ent.Comp.SpawnTime.TotalSeconds), 0, 1);
|
||||
var alpha = 1 - progress;
|
||||
_sprite.SetColor(ent.Owner, Color.White.WithAlpha((float)alpha));
|
||||
_sprite.SetColor((ent.Owner, sprite), Color.White.WithAlpha((float)alpha));
|
||||
}
|
||||
|
||||
private void ApplyOverlay(Entity<CP14MagicVisionStatusEffectComponent> ent)
|
||||
{
|
||||
_overlay = new CP14MagicVisionOverlay();
|
||||
_overlayMan.AddOverlay(_overlay);
|
||||
_overlay.StartOverlay = _timing.CurTime;
|
||||
|
||||
_overlay2 = new CP14MagicVisionNoirOverlay();
|
||||
_overlayMan.AddOverlay(_overlay2);
|
||||
|
||||
_audio.PlayGlobal(_startSound, ent);
|
||||
}
|
||||
|
||||
private void RemoveOverlay(Entity<CP14MagicVisionStatusEffectComponent> ent)
|
||||
{
|
||||
// Check if it is the last Magic Vision Status Effect
|
||||
if (_status.HasEffectComp<CP14MagicVisionStatusEffectComponent>(_player.LocalEntity))
|
||||
return;
|
||||
|
||||
if (_overlay != null)
|
||||
{
|
||||
_overlayMan.RemoveOverlay(_overlay);
|
||||
_overlay = null;
|
||||
}
|
||||
if (_overlay2 != null)
|
||||
{
|
||||
_overlayMan.RemoveOverlay(_overlay2);
|
||||
_overlay2 = null;
|
||||
}
|
||||
|
||||
_audio.PlayGlobal(_endSound, ent);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -44,9 +44,6 @@ public sealed class CP14MagicVisionOverlay : Overlay
|
||||
if (playerEntity == null)
|
||||
return;
|
||||
|
||||
if (!_entityManager.HasComponent<CP14MagicVisionComponent>(playerEntity))
|
||||
return;
|
||||
|
||||
var curTime = _timing.CurTime;
|
||||
var timeLeft = (float)(curTime - StartOverlay).TotalSeconds;
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
using Content.Shared._CP14.MagicVision;
|
||||
using Content.Shared.Eye;
|
||||
using Robust.Shared.Timing;
|
||||
using Content.Shared.StatusEffectNew;
|
||||
|
||||
namespace Content.Server._CP14.MagicVision;
|
||||
|
||||
@@ -13,26 +13,19 @@ public sealed class CP14MagicVisionSystem : CP14SharedMagicVisionSystem
|
||||
{
|
||||
base.Initialize();
|
||||
|
||||
SubscribeLocalEvent<MetaDataComponent, CP14MagicVisionToggleActionEvent>(OnMagicVisionToggle);
|
||||
SubscribeLocalEvent<CP14MagicVisionComponent, GetVisMaskEvent>(OnGetVisMask);
|
||||
SubscribeLocalEvent<CP14MagicVisionStatusEffectComponent, StatusEffectRelayedEvent<GetVisMaskEvent>>(OnGetVisMask);
|
||||
|
||||
SubscribeLocalEvent<CP14MagicVisionStatusEffectComponent, StatusEffectAppliedEvent>(OnApplied);
|
||||
SubscribeLocalEvent<CP14MagicVisionStatusEffectComponent, StatusEffectRemovedEvent>(OnRemoved);
|
||||
}
|
||||
|
||||
private void OnGetVisMask(Entity<CP14MagicVisionComponent> ent, ref GetVisMaskEvent args)
|
||||
private void OnGetVisMask(Entity<CP14MagicVisionStatusEffectComponent> ent, ref StatusEffectRelayedEvent<GetVisMaskEvent> args)
|
||||
{
|
||||
args.VisibilityMask |= (int)VisibilityFlags.CP14MagicVision;
|
||||
}
|
||||
var appliedMask = (int)CP14MagicVisionStatusEffectComponent.VisibilityMask;
|
||||
var newArgs = args.Args;
|
||||
|
||||
private void OnMagicVisionToggle(Entity<MetaDataComponent> ent, ref CP14MagicVisionToggleActionEvent args)
|
||||
{
|
||||
if (!HasComp<CP14MagicVisionComponent>(ent))
|
||||
{
|
||||
AddComp<CP14MagicVisionComponent>(ent);
|
||||
}
|
||||
else
|
||||
{
|
||||
RemComp<CP14MagicVisionComponent>(ent);
|
||||
}
|
||||
_eye.RefreshVisibilityMask(ent.Owner);
|
||||
newArgs.VisibilityMask |= appliedMask;
|
||||
args = args with { Args = newArgs };
|
||||
}
|
||||
|
||||
public override void Update(float frameTime)
|
||||
@@ -51,4 +44,14 @@ public sealed class CP14MagicVisionSystem : CP14SharedMagicVisionSystem
|
||||
QueueDel(uid);
|
||||
}
|
||||
}
|
||||
|
||||
private void OnApplied(Entity<CP14MagicVisionStatusEffectComponent> ent, ref StatusEffectAppliedEvent args)
|
||||
{
|
||||
_eye.RefreshVisibilityMask(args.Target);
|
||||
}
|
||||
|
||||
private void OnRemoved(Entity<CP14MagicVisionStatusEffectComponent> ent, ref StatusEffectRemovedEvent args)
|
||||
{
|
||||
_eye.RefreshVisibilityMask(args.Target);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,38 @@
|
||||
using Content.Shared._CP14.StatusEffect;
|
||||
using Content.Shared.StatusEffectNew;
|
||||
using Content.Shared.StatusEffectNew.Components;
|
||||
using Robust.Shared.Timing;
|
||||
|
||||
namespace Content.Server._CP14.StatusEffect;
|
||||
|
||||
public sealed partial class CP14EntityEffectsStatusEffectSystem : EntitySystem
|
||||
{
|
||||
[Dependency] private readonly IGameTiming _timing = default!;
|
||||
[Dependency] private readonly EntityManager _entityManager = default!;
|
||||
|
||||
public override void Update(float frameTime)
|
||||
{
|
||||
base.Update(frameTime);
|
||||
var query = EntityQueryEnumerator<CP14EntityEffectsStatusEffectComponent, StatusEffectComponent>();
|
||||
while (query.MoveNext(out var ent, out var entityEffect, out var statusEffect))
|
||||
{
|
||||
if (entityEffect.NextUpdateTime > _timing.CurTime)
|
||||
continue;
|
||||
|
||||
if (statusEffect.AppliedTo is not EntityUid targetUid)
|
||||
continue;
|
||||
|
||||
entityEffect.NextUpdateTime = _timing.CurTime + entityEffect.Frequency;
|
||||
foreach (var effect in entityEffect.Effects)
|
||||
{
|
||||
//Apply Effect on target
|
||||
effect.Effect(new(targetUid, _entityManager));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public override void Initialize()
|
||||
{
|
||||
base.Initialize();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,29 @@
|
||||
using Content.Shared.EntityEffects;
|
||||
|
||||
namespace Content.Server._CP14.StatusEffect;
|
||||
|
||||
/// <summary>
|
||||
/// Applies Entity Effects at a given frequency
|
||||
/// </summary>
|
||||
[RegisterComponent, AutoGenerateComponentState, Access(typeof(CP14EntityEffectsStatusEffectSystem))]
|
||||
|
||||
public sealed partial class CP14EntityEffectsStatusEffectComponent : Component
|
||||
{
|
||||
/// <summary>
|
||||
/// List of Effects that will be applied
|
||||
/// </summary>
|
||||
[DataField]
|
||||
public List<EntityEffect> Effects = [];
|
||||
|
||||
/// <summary>
|
||||
/// How often objects will try to apply <see cref="Effects"/>. In Seconds.
|
||||
/// </summary>
|
||||
[DataField]
|
||||
public TimeSpan Frequency = TimeSpan.FromSeconds(5);
|
||||
|
||||
/// <summary>
|
||||
/// The time of the next Effect trigger
|
||||
/// </summary>
|
||||
[DataField]
|
||||
public TimeSpan NextUpdateTime { get; set; } = TimeSpan.Zero;
|
||||
}
|
||||
@@ -24,6 +24,10 @@ public abstract class SharedChatSystem : EntitySystem
|
||||
public const char AdminPrefix = ']';
|
||||
public const char WhisperPrefix = ',';
|
||||
public const char DefaultChannelKey = 'h';
|
||||
// CrystallEdge # and % emotes prefix
|
||||
public const char CEEmotesPrefix = '%';
|
||||
public const char CEEmotesAltPrefix = '#';
|
||||
// CrystallEdge End
|
||||
|
||||
public const int VoiceRange = 10; // how far voice goes in world units
|
||||
public const int WhisperClearRange = 2; // how far whisper goes while still being understandable, in world units
|
||||
|
||||
@@ -7,6 +7,7 @@ using Content.Shared.Speech;
|
||||
using Content.Shared.StatusEffectNew.Components;
|
||||
using Content.Shared.Stunnable;
|
||||
using Robust.Shared.Player;
|
||||
using Content.Shared.Mobs;
|
||||
|
||||
namespace Content.Shared.StatusEffectNew;
|
||||
|
||||
@@ -16,6 +17,8 @@ public sealed partial class StatusEffectsSystem
|
||||
{
|
||||
//CP14 Zone
|
||||
SubscribeLocalEvent<StatusEffectContainerComponent, DamageModifyEvent>(RelayStatusEffectEvent);
|
||||
SubscribeLocalEvent<StatusEffectContainerComponent, GetVisMaskEvent>(RefRelayStatusEffectEvent);
|
||||
SubscribeLocalEvent<StatusEffectContainerComponent, MobStateChangedEvent>(RefRelayStatusEffectEvent);
|
||||
//CP14 Zone end
|
||||
|
||||
SubscribeLocalEvent<StatusEffectContainerComponent, LocalPlayerAttachedEvent>(RelayStatusEffectEvent);
|
||||
|
||||
@@ -0,0 +1,24 @@
|
||||
using Content.Shared.StatusEffectNew;
|
||||
using Robust.Shared.Prototypes;
|
||||
|
||||
namespace Content.Shared._CP14.MagicSpell.Spells;
|
||||
|
||||
public sealed partial class CP14SpellToggleStatusEffect : CP14SpellEffect
|
||||
{
|
||||
[DataField(required: true)]
|
||||
public EntProtoId StatusEffect = default;
|
||||
|
||||
public override void Effect(EntityManager entManager, CP14SpellEffectBaseArgs args)
|
||||
{
|
||||
if (args.Target is null)
|
||||
return;
|
||||
|
||||
var effectSys = entManager.System<StatusEffectsSystem>();
|
||||
|
||||
if (!effectSys.HasStatusEffect(args.Target.Value, StatusEffect))
|
||||
effectSys.TrySetStatusEffectDuration(args.Target.Value, StatusEffect);
|
||||
else
|
||||
effectSys.TryRemoveStatusEffect(args.Target.Value, StatusEffect);
|
||||
|
||||
}
|
||||
}
|
||||
@@ -4,6 +4,7 @@ using Content.Shared._CP14.AuraDNA;
|
||||
using Content.Shared._CP14.MagicVision.Components;
|
||||
using Content.Shared.Actions;
|
||||
using Content.Shared.Examine;
|
||||
using Content.Shared.Mobs;
|
||||
using Content.Shared.StatusEffectNew;
|
||||
using Robust.Shared.Map;
|
||||
using Robust.Shared.Network;
|
||||
@@ -27,6 +28,15 @@ public abstract class CP14SharedMagicVisionSystem : EntitySystem
|
||||
base.Initialize();
|
||||
|
||||
SubscribeLocalEvent<CP14MagicVisionMarkerComponent, ExaminedEvent>(OnExamined);
|
||||
SubscribeLocalEvent<CP14MagicVisionStatusEffectComponent, StatusEffectRelayedEvent<MobStateChangedEvent>>(OnMobStateChange);
|
||||
}
|
||||
|
||||
private void OnMobStateChange(Entity<CP14MagicVisionStatusEffectComponent> ent, ref StatusEffectRelayedEvent<MobStateChangedEvent> args)
|
||||
{
|
||||
if (args.Args.NewMobState == MobState.Alive) return;
|
||||
|
||||
//Removes MagicVisionStatusEffect entity when MobState is Crit,Dead or Invalid
|
||||
TryQueueDel(ent);
|
||||
}
|
||||
|
||||
protected virtual void OnExamined(Entity<CP14MagicVisionMarkerComponent> ent, ref ExaminedEvent args)
|
||||
@@ -148,7 +158,3 @@ public abstract class CP14SharedMagicVisionSystem : EntitySystem
|
||||
Dirty(ent, markerComp);
|
||||
}
|
||||
}
|
||||
|
||||
public sealed partial class CP14MagicVisionToggleActionEvent : InstantActionEvent
|
||||
{
|
||||
}
|
||||
|
||||
@@ -1,11 +0,0 @@
|
||||
using Robust.Shared.GameStates;
|
||||
|
||||
namespace Content.Shared._CP14.MagicVision;
|
||||
|
||||
/// <summary>
|
||||
/// Allows to see magic vision trace entities
|
||||
/// </summary>
|
||||
[RegisterComponent, NetworkedComponent]
|
||||
public sealed partial class CP14MagicVisionComponent : Component
|
||||
{
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
using Content.Shared.Eye;
|
||||
using Robust.Shared.GameStates;
|
||||
|
||||
namespace Content.Shared._CP14.MagicVision;
|
||||
|
||||
/// <summary>
|
||||
/// Allows to see magic vision trace entities
|
||||
/// Use only in conjunction with <see cref="StatusEffectComponent"/>, on the status effect entity.
|
||||
/// </summary>
|
||||
[RegisterComponent, NetworkedComponent]
|
||||
public sealed partial class CP14MagicVisionStatusEffectComponent : Component
|
||||
{
|
||||
/// <summary>
|
||||
/// VisionMask to see Magic Vision layer
|
||||
/// </summary>
|
||||
public const VisibilityFlags VisibilityMask = VisibilityFlags.CP14MagicVision;
|
||||
}
|
||||
@@ -1,15 +0,0 @@
|
||||
All rights reserved.
|
||||
|
||||
Copyright (c) 2025 CrystallEdge
|
||||
|
||||
This source code is the exclusive of TheShuEd and is protected by copyright law.
|
||||
|
||||
You granted no rights or permissions to use, modify, distribute, sublicense,
|
||||
or reproduce this source code in any form, in whole or in part,
|
||||
without the express written consent of TheShuEd.
|
||||
|
||||
Any unauthorized use or reproduction of this source code
|
||||
is strictly prohibited and may result in legal action.
|
||||
|
||||
For inquiries or licensing requests,
|
||||
please contact TheShuEd at Discord (https://discord.gg/Sud2DMfhCC).
|
||||
16
README.md
16
README.md
@@ -5,10 +5,6 @@ CrystallEdge is a build running on the [RobustToolbox](https://github.com/space-
|
||||
## Links
|
||||
[Discord](https://discord.gg/Sud2DMfhCC) | [Steam](https://store.steampowered.com/app/1255460/Space_Station_14/) | [Boosty](https://boosty.to/theshued)
|
||||
|
||||
## Contributing
|
||||
|
||||
We welcome any support from the community in the development of the game! Join our discord to find out how you can help the project, or check out [Issues](https://github.com/crystallpunk-14/crystall-punk-14/issues) on Github.
|
||||
|
||||
## Building
|
||||
|
||||
1. Clone this repo.
|
||||
@@ -17,13 +13,11 @@ We welcome any support from the community in the development of the game! Join o
|
||||
|
||||
[More detailed instructions on building the project.](https://docs.spacestation14.com/en/general-development/setup.html)
|
||||
|
||||
## Licensing/Attriibution
|
||||
## License
|
||||
|
||||
These are just the most important points, Please read [Legal.md](https://github.com/crystallpunk-14/crystall-punk-14/blob/master/Legal.md) for the specifics around licensing/attribution/copyright.
|
||||
- Unless specified otherwise, all Source Code, inside any _CP14 or CP14 folders, fall under the terms specified in LICENSE_CE.TXT (all right reserved) with Exhibit B enforced and the CrystallEdge CLA. All assets/content in those folders falls under CC-BY-SA 4.0 unless otherwise specified.
|
||||
- Any content from SpaceWizards/SpaceStation14 without specified licensing of any code is licensed under MIT (LICENSE.txt). Any Space Wizards content licensed under CC-BY-SA 3.0 to Space Wizards Federation & Contributors.
|
||||
- You may not use CrystallEdge code in other projects without specific permission from the CrystallEdge author (TheShuEd)
|
||||
All code for the content repository is licensed under the [MIT license](https://github.com/crystallpunk-14/crystall-punk-14/blob/master/LICENSE.TXT).
|
||||
|
||||
## Forking CrystallEdge
|
||||
Most assets are licensed under [CC-BY-SA 3.0](https://creativecommons.org/licenses/by-sa/3.0/) unless stated otherwise. Assets have their license and copyright specified in the metadata file. For example, see the [metadata for a crowbar](https://github.com/crystallpunk-14/crystall-punk-14/blob/master/Resources/Textures/Objects/Tools/crowbar.rsi/meta.json).
|
||||
|
||||
You cannot create forks of CrystallEdge to open your own public servers. You can copy a build for educational purposes, code research and contributing to the main build.
|
||||
> [!NOTE]
|
||||
> Some assets are licensed under the non-commercial [CC-BY-NC-SA 3.0](https://creativecommons.org/licenses/by-nc-sa/3.0/) or similar non-commercial licenses and will need to be removed if you wish to use this project commercially.
|
||||
|
||||
@@ -2395,3 +2395,33 @@
|
||||
id: 8288
|
||||
time: '2025-10-24T18:17:19.0000000+00:00'
|
||||
url: https://github.com/crystallpunk-14/crystall-punk-14/pull/1837
|
||||
- author: oldschool_otaku
|
||||
changes:
|
||||
- message: Added halloween pumpkins and jack-o'lanterns!
|
||||
type: Add
|
||||
id: 8289
|
||||
time: '2025-10-29T17:15:13.0000000+00:00'
|
||||
url: https://github.com/crystallpunk-14/crystall-punk-14/pull/1822
|
||||
- author: kin98
|
||||
changes:
|
||||
- message: Magical Vision drains Mana now
|
||||
type: Tweak
|
||||
id: 8290
|
||||
time: '2025-10-31T18:11:15.0000000+00:00'
|
||||
url: https://github.com/crystallpunk-14/crystall-punk-14/pull/1832
|
||||
- author: TheShuEd
|
||||
changes:
|
||||
- message: fixed bug with toggling mana vision for entire server
|
||||
type: Fix
|
||||
id: 8291
|
||||
time: '2025-11-01T13:56:03.0000000+00:00'
|
||||
url: https://github.com/crystallpunk-14/crystall-punk-14/pull/1842
|
||||
- author: Minokaa
|
||||
changes:
|
||||
- message: Change emote prefix from @ to %.
|
||||
type: Tweak
|
||||
- message: Added custom age to different races.
|
||||
type: Tweak
|
||||
id: 8292
|
||||
time: '2025-11-17T08:38:44.0000000+00:00'
|
||||
url: https://github.com/crystallpunk-14/crystall-punk-14/pull/1835
|
||||
|
||||
@@ -6152,3 +6152,23 @@ ent-CP14WindowFrameWooden = деревянная оконная рама
|
||||
ent-CP14WindowWoodenBroken = разбитое деревянное окно
|
||||
.desc = { ent-CP14BaseWindowFrameBroken.desc }
|
||||
|
||||
ent-CP14HalloweenPumpkin = страшная тыква
|
||||
.desc = Когда-то это была обычная тыква... А теперь это страшная тыква!
|
||||
|
||||
ent-CP14HalloweenPumpkinEmmisiveBase = тыквенный фонарь
|
||||
.desc = Ууууу! Страшная!
|
||||
|
||||
ent-CP14JackOLanternVariant1 = { ent-CP14HalloweenPumpkinEmmisiveBase }
|
||||
.desc = { ent-CP14HalloweenPumpkinEmmisiveBase.desc }
|
||||
|
||||
ent-CP14JackOLanternVariant2 = { ent-CP14HalloweenPumpkinEmmisiveBase }
|
||||
.desc = { ent-CP14HalloweenPumpkinEmmisiveBase.desc }
|
||||
|
||||
ent-CP14JackOLanternVariant3 = { ent-CP14HalloweenPumpkinEmmisiveBase }
|
||||
.desc = { ent-CP14HalloweenPumpkinEmmisiveBase.desc }
|
||||
|
||||
ent-CP14JackOLanternVariant4 = { ent-CP14HalloweenPumpkinEmmisiveBase }
|
||||
.desc = { ent-CP14HalloweenPumpkinEmmisiveBase.desc }
|
||||
|
||||
ent-CP14JackOLantern = спавнер тыквенного фонаря
|
||||
.desc = { ent-CP14HalloweenPumpkinEmmisiveBase.desc }
|
||||
|
||||
@@ -4,8 +4,8 @@ meta:
|
||||
engineVersion: 266.0.0
|
||||
forkId: ""
|
||||
forkVersion: ""
|
||||
time: 09/30/2025 17:24:34
|
||||
entityCount: 5610
|
||||
time: 11/05/2025 15:54:43
|
||||
entityCount: 5606
|
||||
maps:
|
||||
- 1
|
||||
grids:
|
||||
@@ -1432,6 +1432,13 @@ entities:
|
||||
parent: 1
|
||||
- proto: CP14Bucket
|
||||
entities:
|
||||
- uid: 2134
|
||||
components:
|
||||
- type: Transform
|
||||
parent: 4
|
||||
- type: Physics
|
||||
canCollide: False
|
||||
- type: InsideEntityStorage
|
||||
- uid: 7155
|
||||
components:
|
||||
- type: Transform
|
||||
@@ -2450,6 +2457,12 @@ entities:
|
||||
rot: -1.5707963267948966 rad
|
||||
pos: 16.595049,-36.47414
|
||||
parent: 1
|
||||
- uid: 2132
|
||||
components:
|
||||
- type: Transform
|
||||
rot: -1.5707963267948966 rad
|
||||
pos: -13.966419,-3.1013632
|
||||
parent: 1
|
||||
- uid: 4469
|
||||
components:
|
||||
- type: Transform
|
||||
@@ -2537,18 +2550,6 @@ entities:
|
||||
- type: Transform
|
||||
pos: 33.559635,16.54992
|
||||
parent: 1
|
||||
- uid: 7344
|
||||
components:
|
||||
- type: Transform
|
||||
rot: 1.5707963267948966 rad
|
||||
pos: -14.326934,-2.433626
|
||||
parent: 1
|
||||
- uid: 7345
|
||||
components:
|
||||
- type: Transform
|
||||
rot: -1.5707963267948966 rad
|
||||
pos: -12.6811,-2.433626
|
||||
parent: 1
|
||||
- uid: 7346
|
||||
components:
|
||||
- type: Transform
|
||||
@@ -5043,6 +5044,13 @@ entities:
|
||||
- type: Transform
|
||||
pos: 18.484926,19.120111
|
||||
parent: 1
|
||||
- uid: 2133
|
||||
components:
|
||||
- type: Transform
|
||||
parent: 4
|
||||
- type: Physics
|
||||
canCollide: False
|
||||
- type: InsideEntityStorage
|
||||
- proto: CP14OpenSign
|
||||
entities:
|
||||
- uid: 1843
|
||||
@@ -5833,18 +5841,6 @@ entities:
|
||||
rot: -1.5707963267948966 rad
|
||||
pos: 3.5,-9.5
|
||||
parent: 1
|
||||
- uid: 9144
|
||||
components:
|
||||
- type: Transform
|
||||
rot: -1.5707963267948966 rad
|
||||
pos: -10.5,-2.5
|
||||
parent: 1
|
||||
- uid: 9145
|
||||
components:
|
||||
- type: Transform
|
||||
rot: -1.5707963267948966 rad
|
||||
pos: -11.5,-2.5
|
||||
parent: 1
|
||||
- uid: 9146
|
||||
components:
|
||||
- type: Transform
|
||||
@@ -5857,12 +5853,6 @@ entities:
|
||||
rot: -1.5707963267948966 rad
|
||||
pos: -14.5,-0.5
|
||||
parent: 1
|
||||
- uid: 9149
|
||||
components:
|
||||
- type: Transform
|
||||
rot: -1.5707963267948966 rad
|
||||
pos: -13.5,-1.5
|
||||
parent: 1
|
||||
- uid: 9150
|
||||
components:
|
||||
- type: Transform
|
||||
@@ -25550,6 +25540,11 @@ entities:
|
||||
- type: Transform
|
||||
pos: 5.5,-39.5
|
||||
parent: 1
|
||||
- uid: 2131
|
||||
components:
|
||||
- type: Transform
|
||||
pos: -14.5,-3.5
|
||||
parent: 1
|
||||
- uid: 11591
|
||||
components:
|
||||
- type: Transform
|
||||
@@ -25560,12 +25555,6 @@ entities:
|
||||
- type: Transform
|
||||
pos: 33.5,15.5
|
||||
parent: 1
|
||||
- uid: 11598
|
||||
components:
|
||||
- type: Transform
|
||||
rot: 3.141592653589793 rad
|
||||
pos: -13.5,-2.5
|
||||
parent: 1
|
||||
- uid: 11599
|
||||
components:
|
||||
- type: Transform
|
||||
@@ -26205,16 +26194,6 @@ entities:
|
||||
- type: Transform
|
||||
pos: -10.5,-4.5
|
||||
parent: 1
|
||||
- uid: 11731
|
||||
components:
|
||||
- type: Transform
|
||||
pos: -11.5,-3.5
|
||||
parent: 1
|
||||
- uid: 11732
|
||||
components:
|
||||
- type: Transform
|
||||
pos: -10.5,-3.5
|
||||
parent: 1
|
||||
- uid: 11733
|
||||
components:
|
||||
- type: Transform
|
||||
@@ -35599,6 +35578,18 @@ entities:
|
||||
- type: Transform
|
||||
pos: -14.5,-14.5
|
||||
parent: 1
|
||||
- type: ContainerContainer
|
||||
containers:
|
||||
entity_storage: !type:Container
|
||||
showEnts: False
|
||||
occludes: True
|
||||
ents:
|
||||
- 2133
|
||||
- 2134
|
||||
paper_label: !type:ContainerSlot
|
||||
showEnts: False
|
||||
occludes: True
|
||||
ent: null
|
||||
- uid: 834
|
||||
components:
|
||||
- type: Transform
|
||||
|
||||
@@ -5,16 +5,20 @@
|
||||
description: You focus on magical flows to track recent events and scan the aura imprints of other living beings.
|
||||
components:
|
||||
- type: Action
|
||||
useDelay: 5
|
||||
useDelay: 0.5
|
||||
itemIconStyle: BigAction
|
||||
checkCanInteract: false
|
||||
checkConsciousness: true
|
||||
sound: !type:SoundPathSpecifier
|
||||
path: /Audio/Magic/rumble.ogg
|
||||
icon:
|
||||
sprite: _CP14/Actions/Spells/meta.rsi
|
||||
state: magic_vision
|
||||
- type: InstantAction
|
||||
event: !type:CP14MagicVisionToggleActionEvent
|
||||
event: !type:CP14InstantModularEffectEvent
|
||||
effects:
|
||||
- !type:CP14SpellToggleStatusEffect
|
||||
statusEffect: CP14MetaMagicVisionSpellStatusEffect
|
||||
|
||||
- type: entity
|
||||
id: CP14ManaVisionPointer
|
||||
@@ -51,4 +55,4 @@
|
||||
color: "#42a4f5"
|
||||
- type: Clickable
|
||||
- type: Visibility
|
||||
layer: 16 #magic vision only
|
||||
layer: 16 #magic vision only
|
||||
|
||||
@@ -0,0 +1,148 @@
|
||||
- type: entity
|
||||
parent: CP14FoodPumpkin
|
||||
id: CP14HalloweenPumpkin
|
||||
name: scary pumpkin
|
||||
description: It was a normal pumpkin one day... Now it's a scary pumpkin!
|
||||
components:
|
||||
- type: Sprite
|
||||
sprite: _CP14/Objects/Misc/halloween_pumpkin.rsi
|
||||
layers:
|
||||
- state: base1
|
||||
map: [ "random" ]
|
||||
- type: RandomSprite
|
||||
available:
|
||||
- random:
|
||||
base1: ""
|
||||
base2: ""
|
||||
base3: ""
|
||||
base4: ""
|
||||
- type: Clothing
|
||||
quickEquip: false
|
||||
sprite: _CP14/Clothing/Head/halloween_pumpkin_helmet.rsi
|
||||
equippedPrefix: 0
|
||||
slots:
|
||||
- HEAD
|
||||
|
||||
- type: entity
|
||||
parent: FoodInjectableBase
|
||||
id: CP14HalloweenPumpkinEmmisiveBase
|
||||
name: jack-o lantern
|
||||
description: Oooh! Scary!
|
||||
abstract: true
|
||||
components:
|
||||
- type: Sprite
|
||||
sprite: _CP14/Objects/Misc/halloween_pumpkin.rsi
|
||||
- type: PointLight
|
||||
radius: 2.1
|
||||
energy: 0.9
|
||||
color: "#FEE68E"
|
||||
castShadows: true
|
||||
- type: Item
|
||||
size: Normal
|
||||
- type: StaticPrice
|
||||
price: 6
|
||||
- type: FlavorProfile
|
||||
flavors:
|
||||
- pumpkin
|
||||
- type: SolutionContainerManager
|
||||
solutions:
|
||||
food:
|
||||
maxVol: 30
|
||||
reagents:
|
||||
- ReagentId: PumpkinFlesh
|
||||
Quantity: 10
|
||||
- ReagentId: Vitamin
|
||||
Quantity: 2
|
||||
- type: SliceableFood
|
||||
count: 5
|
||||
sliceTime: 2
|
||||
slice: CP14FoodPumpkinSlice
|
||||
- type: Tag
|
||||
tags:
|
||||
- CP14FarmFood
|
||||
- CP14Vegetable
|
||||
- CP14Pumpkin
|
||||
|
||||
|
||||
- type: entity
|
||||
parent: CP14HalloweenPumpkinEmmisiveBase
|
||||
id: CP14JackOLanternVariant1
|
||||
suffix: Variant 1
|
||||
categories: [ HideSpawnMenu ]
|
||||
components:
|
||||
- type: Sprite
|
||||
layers:
|
||||
- state: base1
|
||||
- state: light-base1
|
||||
shader: unshaded
|
||||
- state: light-base1
|
||||
shader: shaded
|
||||
|
||||
- type: entity
|
||||
parent: CP14HalloweenPumpkinEmmisiveBase
|
||||
id: CP14JackOLanternVariant2
|
||||
suffix: Variant 2
|
||||
categories: [ HideSpawnMenu ]
|
||||
components:
|
||||
- type: Sprite
|
||||
layers:
|
||||
- state: base2
|
||||
- state: light-base2
|
||||
shader: unshaded
|
||||
- state: light-base2
|
||||
shader: shaded
|
||||
|
||||
- type: entity
|
||||
parent: CP14HalloweenPumpkinEmmisiveBase
|
||||
id: CP14JackOLanternVariant3
|
||||
suffix: Variant 3
|
||||
categories: [ HideSpawnMenu ]
|
||||
components:
|
||||
- type: Sprite
|
||||
layers:
|
||||
- state: base3
|
||||
- state: light-base3
|
||||
shader: unshaded
|
||||
- state: light-base3
|
||||
shader: shaded
|
||||
|
||||
- type: entity
|
||||
parent: CP14HalloweenPumpkinEmmisiveBase
|
||||
id: CP14JackOLanternVariant4
|
||||
suffix: Variant 4
|
||||
categories: [ HideSpawnMenu ]
|
||||
components:
|
||||
- type: Sprite
|
||||
layers:
|
||||
- state: base4
|
||||
- state: light-base4
|
||||
shader: unshaded
|
||||
- state: light-base4
|
||||
shader: shaded
|
||||
|
||||
- type: entity
|
||||
id: CP14JackOLantern
|
||||
name: jack-o lantern spawner
|
||||
description: Oooh! Scary!
|
||||
parent: MarkerBase
|
||||
categories: [ ForkFiltered ]
|
||||
components:
|
||||
- type: Sprite
|
||||
layers:
|
||||
- state: green
|
||||
- sprite: _CP14/Objects/Misc/halloween_pumpkin.rsi
|
||||
state: base2
|
||||
- sprite: _CP14/Objects/Misc/halloween_pumpkin.rsi
|
||||
state: light-base2
|
||||
- type: EntityTableSpawner
|
||||
table: !type:NestedSelector
|
||||
tableId: CP14JackOLanternTable
|
||||
|
||||
- type: entityTable
|
||||
id: CP14JackOLanternTable
|
||||
table: !type:GroupSelector
|
||||
children:
|
||||
- id: CP14JackOLanternVariant1
|
||||
- id: CP14JackOLanternVariant2
|
||||
- id: CP14JackOLanternVariant3
|
||||
- id: CP14JackOLanternVariant4
|
||||
@@ -0,0 +1,18 @@
|
||||
- type: entity
|
||||
id: CP14MagicVisionStatusEffect
|
||||
parent: MobStatusEffectBase
|
||||
name: Magical vision
|
||||
components:
|
||||
- type: StatusEffect
|
||||
- type: CP14MagicVisionStatusEffect
|
||||
|
||||
- type: entity
|
||||
id: CP14MetaMagicVisionSpellStatusEffect
|
||||
parent: CP14MagicVisionStatusEffect
|
||||
name: Magical vision spell
|
||||
components:
|
||||
- type: CP14EntityEffectsStatusEffect
|
||||
effects:
|
||||
- !type:CP14ManaChange
|
||||
manaDelta: -5
|
||||
safe: false
|
||||
@@ -39,3 +39,13 @@
|
||||
protoId: CP14FoodDoughMedium
|
||||
count: 1
|
||||
result: CP14FoodDoughMediumFlat
|
||||
|
||||
- type: CP14Recipe
|
||||
id: CP14HalloweenPumpkin
|
||||
tag: CP14RecipeCooking
|
||||
craftTime: 1
|
||||
requirements:
|
||||
- !type:ProtoIdResource
|
||||
protoId: CP14FoodPumpkin
|
||||
count: 1
|
||||
result: CP14HalloweenPumpkin
|
||||
|
||||
@@ -250,4 +250,17 @@
|
||||
- !type:StackResource
|
||||
stack: CP14Cloth
|
||||
count: 2
|
||||
result: CP14Rope
|
||||
result: CP14Rope
|
||||
|
||||
- type: CP14Recipe
|
||||
id: CP14JackOLantern
|
||||
tag: CP14RecipeWorkbench
|
||||
craftTime: 2
|
||||
requirements:
|
||||
- !type:ProtoIdResource
|
||||
protoId: CP14HalloweenPumpkin
|
||||
count: 1
|
||||
- !type:ProtoIdResource
|
||||
protoId: CP14Candle
|
||||
count: 1
|
||||
result: CP14JackOLanternVariant2
|
||||
|
||||
@@ -11,6 +11,10 @@
|
||||
maleFirstNames: CP14_Names_Carcat_First
|
||||
femaleFirstNames: CP14_Names_Carcat_First
|
||||
naming: First
|
||||
minAge: 18
|
||||
maxAge: 110
|
||||
youngAge: 20
|
||||
oldAge: 80
|
||||
|
||||
- type: speciesBaseSprites
|
||||
id: CP14MobCarcatSprites
|
||||
|
||||
@@ -10,6 +10,10 @@
|
||||
maleFirstNames: CP14_Names_Dwarf_Male_First #TODO
|
||||
femaleFirstNames: CP14_Names_Dwarf_Female_First #TODO
|
||||
lastNames: CP14_Names_Dwarf_Last #TODO
|
||||
minAge: 18
|
||||
maxAge: 350
|
||||
youngAge: 100
|
||||
oldAge: 175
|
||||
|
||||
- type: speciesBaseSprites
|
||||
id: CP14MobDwarfSprites
|
||||
|
||||
@@ -10,6 +10,10 @@
|
||||
maleFirstNames: CP14_Names_Elf_Male_First
|
||||
femaleFirstNames: CP14_Names_Elf_Female_First
|
||||
lastNames: CP14_Names_Elf_Last
|
||||
minAge: 18
|
||||
maxAge: 900
|
||||
youngAge: 100
|
||||
oldAge: 700
|
||||
|
||||
- type: speciesBaseSprites
|
||||
id: CP14MobElfSprites
|
||||
|
||||
@@ -11,6 +11,10 @@
|
||||
maleFirstNames: CP14_Names_Goblin_Male_First
|
||||
femaleFirstNames: CP14_Names_Goblin_Female_First
|
||||
naming: First
|
||||
minAge: 18
|
||||
maxAge: 70
|
||||
youngAge: 25
|
||||
oldAge: 55
|
||||
|
||||
- type: speciesBaseSprites
|
||||
id: CP14MobGoblinSprites
|
||||
|
||||
@@ -11,6 +11,10 @@
|
||||
maleFirstNames: CP14_Names_Silva_Male_First
|
||||
femaleFirstNames: CP14_Names_Silva_Female_First
|
||||
naming: First
|
||||
minAge: 18
|
||||
maxAge: 500
|
||||
youngAge: 100
|
||||
oldAge: 300
|
||||
|
||||
- type: speciesBaseSprites
|
||||
id: CP14MobSilvaSprites
|
||||
|
||||
@@ -10,6 +10,10 @@
|
||||
maleFirstNames: CP14_Names_Tiefling_Male_First
|
||||
femaleFirstNames: CP14_Names_Tiefling_Female_First
|
||||
lastNames: CP14_Names_Tiefling_Last
|
||||
minAge: 18
|
||||
maxAge: 120
|
||||
youngAge: 50
|
||||
oldAge: 80
|
||||
|
||||
# The lack of a layer means that
|
||||
# this person cannot have round-start anything
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
"x": 32,
|
||||
"y": 32
|
||||
},
|
||||
"license": "All right reserved",
|
||||
"license": "CC-BY-SA-4.0",
|
||||
"copyright": "Created by TheShuEd",
|
||||
"states": [
|
||||
{
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
"x": 32,
|
||||
"y": 32
|
||||
},
|
||||
"license": "All right reserved",
|
||||
"license": "CC-BY-SA-4.0",
|
||||
"copyright": "Created by TheShuEd",
|
||||
"states": [
|
||||
{
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
"x": 32,
|
||||
"y": 32
|
||||
},
|
||||
"license": "All right reserved",
|
||||
"license": "CC-BY-SA-4.0",
|
||||
"copyright": "Created by TheShuEd. Shadow step and Shadow grab created by .kreks. Shadow swap created by TornadoTech.",
|
||||
"states": [
|
||||
{
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
"x": 32,
|
||||
"y": 32
|
||||
},
|
||||
"license": "All right reserved",
|
||||
"license": "CC-BY-SA-4.0",
|
||||
"copyright": "Created by TheShuEd",
|
||||
"states": [
|
||||
{
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
"x": 32,
|
||||
"y": 32
|
||||
},
|
||||
"license": "All right reserved",
|
||||
"license": "CC-BY-SA-4.0",
|
||||
"copyright": "Created by TheShuEd, electric_trap by nimfar11",
|
||||
"states": [
|
||||
{
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
"x": 32,
|
||||
"y": 32
|
||||
},
|
||||
"license": "All right reserved",
|
||||
"license": "CC-BY-SA-4.0",
|
||||
"copyright": "Created by .kreks., tiefling_revenge, fire_music, firewave by TheShuEd, fire_trap by nimfar11",
|
||||
"states": [
|
||||
{
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
"x": 32,
|
||||
"y": 32
|
||||
},
|
||||
"license": "All right reserved",
|
||||
"license": "CC-BY-SA-4.0",
|
||||
"copyright": "Created by TheShuEd, cure_wounds created by .kreks.",
|
||||
"states": [
|
||||
{
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
"x": 32,
|
||||
"y": 32
|
||||
},
|
||||
"license": "All right reserved",
|
||||
"license": "CC-BY-SA-4.0",
|
||||
"copyright": "Created by .kreks., signal_light_blue, signal_light_red, signal_light_yellow by TheShuEd",
|
||||
"states": [
|
||||
{
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
"x": 32,
|
||||
"y": 32
|
||||
},
|
||||
"license": "All right reserved",
|
||||
"license": "CC-BY-SA-4.0",
|
||||
"copyright": "Created by TheShuEd",
|
||||
"states": [
|
||||
{
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
"x": 32,
|
||||
"y": 32
|
||||
},
|
||||
"license": "All right reserved",
|
||||
"license": "CC-BY-SA-4.0",
|
||||
"copyright": "Created by TheShuEd",
|
||||
"states": [
|
||||
{
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
"x": 32,
|
||||
"y": 32
|
||||
},
|
||||
"license": "All right reserved",
|
||||
"license": "CC-BY-SA-4.0",
|
||||
"copyright": "Created by TheShuEd, vulnerability by Sable",
|
||||
"states": [
|
||||
{
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
"x": 32,
|
||||
"y": 32
|
||||
},
|
||||
"license": "All right reserved",
|
||||
"license": "CC-BY-SA-4.0",
|
||||
"copyright": "Created by TheShuEd",
|
||||
"states": [
|
||||
{
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
"x": 32,
|
||||
"y": 32
|
||||
},
|
||||
"license": "All right reserved",
|
||||
"license": "CC-BY-SA-4.0",
|
||||
"copyright": "Created by Nimfar11",
|
||||
"states": [
|
||||
{
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
"x": 32,
|
||||
"y": 32
|
||||
},
|
||||
"license": "All right reserved",
|
||||
"license": "CC-BY-SA-4.0",
|
||||
"copyright": "Created by TheShuEd",
|
||||
"states": [
|
||||
{
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
"x": 32,
|
||||
"y": 32
|
||||
},
|
||||
"license": "All right reserved",
|
||||
"license": "CC-BY-SA-4.0",
|
||||
"copyright": "Created by TheShuEd, ice_dagger by .kreks., ice_trap by nimfar11",
|
||||
"states": [
|
||||
{
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
"x": 32,
|
||||
"y": 32
|
||||
},
|
||||
"license": "All right reserved",
|
||||
"license": "CC-BY-SA-4.0",
|
||||
"copyright": "Created by TheShuEd",
|
||||
"states": [
|
||||
{
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"version": 1,
|
||||
"license": "All right reserved",
|
||||
"license": "CC-BY-SA-4.0",
|
||||
"copyright": "Created by Ell_Good (icon) and PhantomRU (equiped, recolor, inhand)",
|
||||
"size": {
|
||||
"x": 32,
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"version": 1,
|
||||
"license": "All right reserved",
|
||||
"license": "CC-BY-SA-4.0",
|
||||
"copyright": "Created by Ell_Good (icon) and PhantomRU (equiped, recolor, inhand)",
|
||||
"size": {
|
||||
"x": 32,
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"version": 1,
|
||||
"license": "All right reserved",
|
||||
"license": "CC-BY-SA-4.0",
|
||||
"copyright": "Created by Ell_Good (icon) and PhantomRU (equiped, recolor, inhand)",
|
||||
"size": {
|
||||
"x": 32,
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"version": 1,
|
||||
"license": "All right reserved",
|
||||
"license": "CC-BY-SA-4.0",
|
||||
"copyright": "Created by Ell_Good (icon) and PhantomRU (equiped, recolor, inhand) & resprite omsoyk",
|
||||
"size": {
|
||||
"x": 32,
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"version": 1,
|
||||
"license": "All right reserved",
|
||||
"license": "CC-BY-SA-4.0",
|
||||
"copyright": "Created by Ell_Good (icon) and PhantomRU (equiped, recolor, inhand)",
|
||||
"size": {
|
||||
"x": 32,
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"version": 1,
|
||||
"license": "All right reserved",
|
||||
"license": "CC-BY-SA-4.0",
|
||||
"copyright": "Created by Ell_Good (icon) and PhantomRU (equiped, recolor, inhand)",
|
||||
"size": {
|
||||
"x": 32,
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"version": 1,
|
||||
"license": "All right reserved",
|
||||
"license": "CC-BY-SA-4.0",
|
||||
"copyright": "Created by Ell_Good (icon) and PhantomRU (equiped, recolor, inhand) & resprite omsoyk",
|
||||
"size": {
|
||||
"x": 32,
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"version": 1,
|
||||
"license": "All right reserved",
|
||||
"license": "CC-BY-SA-4.0",
|
||||
"copyright": "Created by Ell_Good (icon) and PhantomRU (equiped, recolor, inhand) & resprite omsoyk",
|
||||
"size": {
|
||||
"x": 32,
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"version": 1,
|
||||
"license": "All right reserved",
|
||||
"license": "CC-BY-SA-4.0",
|
||||
"copyright": "Created by Ell_Good (icon) and PhantomRU (equiped, recolor, inhand) & resprite omsoyk",
|
||||
"size": {
|
||||
"x": 32,
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"version": 1,
|
||||
"license": "All right reserved",
|
||||
"license": "CC-BY-SA-4.0",
|
||||
"copyright": "Created by Ell_Good (icon) and PhantomRU (equiped, recolor, inhand) & resprite omsoyk",
|
||||
"size": {
|
||||
"x": 32,
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"version": 1,
|
||||
"license": "All right reserved",
|
||||
"license": "CC-BY-SA-4.0",
|
||||
"copyright": "Created by Ell_Good (icon) and PhantomRU (equiped, recolor, inhand) & resprite omsoyk",
|
||||
"size": {
|
||||
"x": 32,
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"version": 1,
|
||||
"license": "All right reserved",
|
||||
"license": "CC-BY-SA-4.0",
|
||||
"copyright": "Created by creamy",
|
||||
"size": {
|
||||
"x": 32,
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"version": 1,
|
||||
"license": "All right reserved",
|
||||
"license": "CC-BY-SA-4.0",
|
||||
"copyright": "Created by creamy",
|
||||
"size": {
|
||||
"x": 32,
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"version": 1,
|
||||
"license": "All right reserved",
|
||||
"license": "CC-BY-SA-4.0",
|
||||
"copyright": "Created by creamy",
|
||||
"size": {
|
||||
"x": 32,
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"version": 1,
|
||||
"license": "All right reserved",
|
||||
"license": "CC-BY-SA-4.0",
|
||||
"copyright": "Created by creamy",
|
||||
"size": {
|
||||
"x": 32,
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"version": 1,
|
||||
"license": "All right reserved",
|
||||
"license": "CC-BY-SA-4.0",
|
||||
"copyright": "Created by Jaraten",
|
||||
"size": {
|
||||
"x": 32,
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"version": 1,
|
||||
"license": "All right reserved",
|
||||
"license": "CC-BY-SA-4.0",
|
||||
"copyright": "Created by Jaraten",
|
||||
"size": {
|
||||
"x": 32,
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"version": 1,
|
||||
"license": "All right reserved",
|
||||
"license": "CC-BY-SA-4.0",
|
||||
"copyright": "Created by creamy",
|
||||
"size": {
|
||||
"x": 32,
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"version": 1,
|
||||
"license": "All right reserved",
|
||||
"license": "CC-BY-SA-4.0",
|
||||
"copyright": "Created by Lucson1337",
|
||||
"size": {
|
||||
"x": 32,
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"version": 1,
|
||||
"license": "All right reserved",
|
||||
"license": "CC-BY-SA-4.0",
|
||||
"copyright": "Created by creamy",
|
||||
"size": {
|
||||
"x": 32,
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"version": 1,
|
||||
"license": "All right reserved",
|
||||
"license": "CC-BY-SA-4.0",
|
||||
"copyright": "Created by creamy",
|
||||
"size": {
|
||||
"x": 32,
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"version": 1,
|
||||
"license": "All right reserved",
|
||||
"license": "CC-BY-SA-4.0",
|
||||
"copyright": "Created by creamy",
|
||||
"size": {
|
||||
"x": 32,
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"version": 1,
|
||||
"license": "All right reserved",
|
||||
"license": "CC-BY-SA-4.0",
|
||||
"copyright": "Created by creamy, recolored by Dinazewwr",
|
||||
"size": {
|
||||
"x": 32,
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"version": 1,
|
||||
"license": "All right reserved",
|
||||
"license": "CC-BY-SA-4.0",
|
||||
"copyright": "Created by Jaraten",
|
||||
"size": {
|
||||
"x": 32,
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"version": 1,
|
||||
"license": "All right reserved",
|
||||
"license": "CC-BY-SA-4.0",
|
||||
"copyright": "Created by Jaraten",
|
||||
"size": {
|
||||
"x": 32,
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"version": 1,
|
||||
"license": "All right reserved",
|
||||
"license": "CC-BY-SA-4.0",
|
||||
"copyright": "Created by creamy",
|
||||
"size": {
|
||||
"x": 32,
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"version": 1,
|
||||
"license": "All right reserved",
|
||||
"license": "CC-BY-SA-4.0",
|
||||
"copyright": "Created by Lucson1337",
|
||||
"size": {
|
||||
"x": 32,
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"version": 1,
|
||||
"license": "All right reserved",
|
||||
"license": "CC-BY-SA-4.0",
|
||||
"copyright": "Created by Jaraten (discord/GitHub)",
|
||||
"size": {
|
||||
"x": 32,
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"version": 1,
|
||||
"license": "All right reserved",
|
||||
"license": "CC-BY-SA-4.0",
|
||||
"copyright": "Created by creamy",
|
||||
"size": {
|
||||
"x": 32,
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"version": 1,
|
||||
"license": "All right reserved",
|
||||
"license": "CC-BY-SA-4.0",
|
||||
"copyright": "Created by KBAS5",
|
||||
"size": {
|
||||
"x": 32,
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"version": 1,
|
||||
"license": "All right reserved",
|
||||
"license": "CC-BY-SA-4.0",
|
||||
"copyright": "Created by creamy",
|
||||
"size": {
|
||||
"x": 32,
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"version": 1,
|
||||
"license": "All right reserved",
|
||||
"license": "CC-BY-SA-4.0",
|
||||
"copyright": "Created by creamy",
|
||||
"size": {
|
||||
"x": 48,
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"version": 1,
|
||||
"license": "All right reserved",
|
||||
"license": "CC-BY-SA-4.0",
|
||||
"copyright": "Created by creamy",
|
||||
"size": {
|
||||
"x": 48,
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"version": 1,
|
||||
"license": "All right reserved",
|
||||
"license": "CC-BY-SA-4.0",
|
||||
"copyright": "Created by creamy",
|
||||
"size": {
|
||||
"x": 48,
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"version": 1,
|
||||
"license": "All right reserved",
|
||||
"license": "CC-BY-SA-4.0",
|
||||
"copyright": "Created by creamy",
|
||||
"size": {
|
||||
"x": 48,
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"version": 1,
|
||||
"license": "All right reserved",
|
||||
"license": "CC-BY-SA-4.0",
|
||||
"copyright": "Created by creamy",
|
||||
"size": {
|
||||
"x": 48,
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"version": 1,
|
||||
"license": "All right reserved",
|
||||
"license": "CC-BY-SA-4.0",
|
||||
"copyright": "Created by creamy",
|
||||
"size": {
|
||||
"x": 48,
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"version": 1,
|
||||
"license": "All right reserved",
|
||||
"license": "CC-BY-SA-4.0",
|
||||
"copyright": "Created by Frogoo",
|
||||
"size": {
|
||||
"x": 48,
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"version": 1,
|
||||
"license": "All right reserved",
|
||||
"license": "CC-BY-SA-4.0",
|
||||
"copyright": "Created by creamy",
|
||||
"size": {
|
||||
"x": 48,
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"version": 1,
|
||||
"license": "All right reserved",
|
||||
"license": "CC-BY-SA-4.0",
|
||||
"copyright": "Created by creamy",
|
||||
"size": {
|
||||
"x": 48,
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"version": 1,
|
||||
"license": "All right reserved",
|
||||
"license": "CC-BY-SA-4.0",
|
||||
"copyright": "Created by creamy",
|
||||
"size": {
|
||||
"x": 48,
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"version": 1,
|
||||
"license": "All right reserved",
|
||||
"license": "CC-BY-SA-4.0",
|
||||
"copyright": "Created by creamy",
|
||||
"size": {
|
||||
"x": 48,
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"version": 1,
|
||||
"license": "All right reserved",
|
||||
"license": "CC-BY-SA-4.0",
|
||||
"copyright": "Created by creamy",
|
||||
"size": {
|
||||
"x": 48,
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"version": 1,
|
||||
"license": "All right reserved",
|
||||
"license": "CC-BY-SA-4.0",
|
||||
"copyright": "Created by creamy",
|
||||
"size": {
|
||||
"x": 48,
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"version": 1,
|
||||
"license": "All right reserved",
|
||||
"license": "CC-BY-SA-4.0",
|
||||
"copyright": "Created by creamy",
|
||||
"size": {
|
||||
"x": 48,
|
||||
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 1.6 KiB |
@@ -0,0 +1,15 @@
|
||||
{
|
||||
"version": 1,
|
||||
"license": "CC-BY-SA-4.0",
|
||||
"copyright": "equipped-HELMET created by Dinazewwr",
|
||||
"size": {
|
||||
"x": 48,
|
||||
"y": 48
|
||||
},
|
||||
"states": [
|
||||
{
|
||||
"name": "0-equipped-HELMET",
|
||||
"directions": 4
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"version": 1,
|
||||
"license": "All right reserved",
|
||||
"license": "CC-BY-SA-4.0",
|
||||
"copyright": "Created by creamy",
|
||||
"size": {
|
||||
"x": 32,
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"version": 1,
|
||||
"license": "All right reserved",
|
||||
"license": "CC-BY-SA-4.0",
|
||||
"copyright": "Created by mutemaid (Discord)",
|
||||
"size": {
|
||||
"x": 32,
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"version": 1,
|
||||
"license": "All right reserved",
|
||||
"license": "CC-BY-SA-4.0",
|
||||
"copyright": "Created by creamy",
|
||||
"size": {
|
||||
"x": 32,
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"version": 1,
|
||||
"license": "All right reserved",
|
||||
"license": "CC-BY-SA-4.0",
|
||||
"copyright": "Created by creamy",
|
||||
"size": {
|
||||
"x": 32,
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"version": 1,
|
||||
"license": "All right reserved",
|
||||
"license": "CC-BY-SA-4.0",
|
||||
"copyright": "Made by Agoichi",
|
||||
"size": {
|
||||
"x": 32,
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"version": 1,
|
||||
"license": "All right reserved",
|
||||
"license": "CC-BY-SA-4.0",
|
||||
"copyright": "Changed by creamy",
|
||||
"size": {
|
||||
"x": 32,
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"version": 1,
|
||||
"license": "All right reserved",
|
||||
"license": "CC-BY-SA-4.0",
|
||||
"copyright": "Changed by creamy",
|
||||
"size": {
|
||||
"x": 32,
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"version": 1,
|
||||
"license": "All right reserved",
|
||||
"license": "CC-BY-SA-4.0",
|
||||
"copyright": "Changed by creamy",
|
||||
"size": {
|
||||
"x": 32,
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user