diff --git a/.github/workflows/auto-cl-update-atd.yml b/.github/workflows/auto-cl-update-atd.yml
index 22b330c4b88..ae590f799da 100644
--- a/.github/workflows/auto-cl-update-atd.yml
+++ b/.github/workflows/auto-cl-update-atd.yml
@@ -34,7 +34,7 @@ jobs:
- name: Run post-merge script
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- run: python Tools/ATD/auto_cl.py "${{ env.GITHUB_TOKEN }}" "${{ github.repository }}"
+ run: python Tools/ADT/auto_cl.py "${{ env.GITHUB_TOKEN }}" "${{ github.repository }}"
- name: Configure Git
run: |
diff --git a/Content.Server/ADT/SizeAttribute/SizeAttributeWhitelistComponent.cs b/Content.Server/ADT/SizeAttribute/SizeAttributeWhitelistComponent.cs
new file mode 100644
index 00000000000..3816ce8b7ab
--- /dev/null
+++ b/Content.Server/ADT/SizeAttribute/SizeAttributeWhitelistComponent.cs
@@ -0,0 +1,40 @@
+using Robust.Shared.Physics.Collision.Shapes;
+
+namespace Content.Server.SizeAttribute
+{
+ [RegisterComponent]
+ public sealed partial class SizeAttributeWhitelistComponent : Component
+ {
+ // Short
+ [DataField("short")]
+ public bool Short = false;
+
+ [DataField("shortscale")]
+ public float ShortScale = 0f;
+
+ [DataField("shortDensity")]
+ public float ShortDensity = 0f;
+
+ [DataField("shortPseudoItem")]
+ public bool ShortPseudoItem = false;
+
+ [DataField("shortCosmeticOnly")]
+ public bool ShortCosmeticOnly = true;
+
+ // Tall
+ [DataField("tall")]
+ public bool Tall = false;
+
+ [DataField("tallscale")]
+ public float TallScale = 0f;
+
+ [DataField("tallDensity")]
+ public float TallDensity = 0f;
+
+ [DataField("tallPseudoItem")]
+ public bool TallPseudoItem = false;
+
+ [DataField("tallCosmeticOnly")]
+ public bool TallCosmeticOnly = true;
+ }
+}
diff --git a/Content.Server/ADT/Speech/DeutschAccentComponent.cs b/Content.Server/ADT/Speech/Component/DeutschAccentComponent.cs
similarity index 100%
rename from Content.Server/ADT/Speech/DeutschAccentComponent.cs
rename to Content.Server/ADT/Speech/Component/DeutschAccentComponent.cs
diff --git a/Content.Server/ADT/Speech/Component/RoarAccentComponent.cs b/Content.Server/ADT/Speech/Component/RoarAccentComponent.cs
new file mode 100644
index 00000000000..e2edb585c39
--- /dev/null
+++ b/Content.Server/ADT/Speech/Component/RoarAccentComponent.cs
@@ -0,0 +1,10 @@
+namespace Content.Server.Speech.Components;
+
+///
+/// Roar!
+///
+[RegisterComponent]
+public sealed partial class RoarAccentComponent : Component
+{
+
+}
diff --git a/Content.Server/ADT/Speech/EntitySystems/RoarAccentSystem.cs b/Content.Server/ADT/Speech/EntitySystems/RoarAccentSystem.cs
new file mode 100644
index 00000000000..fb89eaa7df0
--- /dev/null
+++ b/Content.Server/ADT/Speech/EntitySystems/RoarAccentSystem.cs
@@ -0,0 +1,36 @@
+using System.Text.RegularExpressions;
+using Content.Server.Speech.Components;
+using Robust.Shared.Random;
+
+namespace Content.Server.Speech.EntitySystems;
+
+public sealed class RoarAccentSystem : EntitySystem
+{
+ [Dependency] private readonly IRobustRandom _random = default!;
+
+ public override void Initialize()
+ {
+ base.Initialize();
+ SubscribeLocalEvent(OnAccent);
+ }
+
+ private void OnAccent(EntityUid uid, RoarAccentComponent component, AccentGetEvent args)
+ {
+ var message = args.Message;
+
+ // roarrr
+ message = Regex.Replace(message, "r+", "rrr");
+ // roarRR
+ message = Regex.Replace(message, "R+", "RRR");
+
+ // ADT-Localization-Start
+ // р => ррр
+ message = Regex.Replace(
+ message,
+ "р+",
+ _random.Pick(new List() { "рр", "ррр" })
+ );
+ // ADT-Localization-End
+ args.Message = message;
+ }
+}
diff --git a/Content.Shared/Speech/Components/VocalComponent.cs b/Content.Server/Speech/Components/VocalComponent.cs
similarity index 85%
rename from Content.Shared/Speech/Components/VocalComponent.cs
rename to Content.Server/Speech/Components/VocalComponent.cs
index e5d2c9997fa..b77a5258d4f 100644
--- a/Content.Shared/Speech/Components/VocalComponent.cs
+++ b/Content.Server/Speech/Components/VocalComponent.cs
@@ -1,3 +1,4 @@
+using Content.Server.Speech.EntitySystems;
using Content.Shared.Chat.Prototypes;
using Content.Shared.Humanoid;
using Robust.Shared.Audio;
@@ -6,13 +7,13 @@
using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype;
using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype.Dictionary;
-namespace Content.Shared.Speech.Components;
+namespace Content.Server.Speech.Components; //ADT Tweak
///
/// Component required for entities to be able to do vocal emotions.
///
-[RegisterComponent, NetworkedComponent]
-[AutoGenerateComponentState]
+[RegisterComponent] //ADT Tweak
+[Access(typeof(VocalSystem))] //ADT Tweak
public sealed partial class VocalComponent : Component
{
///
@@ -20,27 +21,21 @@ public sealed partial class VocalComponent : Component
/// Entities without considered to be .
///
[DataField("sounds", customTypeSerializer: typeof(PrototypeIdValueDictionarySerializer))]
- [AutoNetworkedField]
public Dictionary? Sounds;
[DataField("screamId", customTypeSerializer: typeof(PrototypeIdSerializer))]
- [AutoNetworkedField]
public string ScreamId = "Scream";
[DataField("wilhelm")]
- [AutoNetworkedField]
public SoundSpecifier Wilhelm = new SoundPathSpecifier("/Audio/Voice/Human/wilhelm_scream.ogg");
[DataField("wilhelmProbability")]
- [AutoNetworkedField]
public float WilhelmProbability = 0.0002f;
[DataField("screamAction", customTypeSerializer: typeof(PrototypeIdSerializer))]
- [AutoNetworkedField]
public string ScreamAction = "ActionScream";
[DataField("screamActionEntity")]
- [AutoNetworkedField]
public EntityUid? ScreamActionEntity;
///
@@ -48,6 +43,5 @@ public sealed partial class VocalComponent : Component
/// Null if no valid prototype for entity sex was found.
///
[ViewVariables]
- [AutoNetworkedField]
public EmoteSoundsPrototype? EmoteSounds = null;
-}
+}
\ No newline at end of file
diff --git a/Content.Server/Speech/EntitySystems/VocalSystem.cs b/Content.Server/Speech/EntitySystems/VocalSystem.cs
index 7c8ec21a94b..5b50a880bb5 100644
--- a/Content.Server/Speech/EntitySystems/VocalSystem.cs
+++ b/Content.Server/Speech/EntitySystems/VocalSystem.cs
@@ -99,4 +99,4 @@ private void LoadSounds(EntityUid uid, VocalComponent component, Sex? sex = null
return;
_proto.TryIndex(protoId, out component.EmoteSounds);
}
-}
+}
\ No newline at end of file
diff --git a/Resources/Audio/ADT/Voice/Doge/attributions.yml b/Resources/Audio/ADT/Voice/Doge/attributions.yml
new file mode 100644
index 00000000000..e45ab8b34bf
--- /dev/null
+++ b/Resources/Audio/ADT/Voice/Doge/attributions.yml
@@ -0,0 +1,29 @@
+- files: ["dog_bark1.ogg", "dog_bark2.ogg", "dog_bark3.ogg"]
+ license: "CC0-1.0"
+ copyright: "Original sound by https://freesound.org/people/abhisheky948/sounds/625497/"
+ source: "https://freesound.org/people/abhisheky948/sounds/625497/"
+
+ files: ["dog_bark2.ogg"]
+ license: "CC0-1.0"
+ copyright: "Original sound by https://freesound.org/people/michael_grinnell/sounds/464400/"
+ source: "https://freesound.org/people/michael_grinnell/sounds/464400/"
+
+ files: ["dog_bark3.ogg"]
+ license: "CC0-1.0"
+ copyright: "Original sound by https://freesound.org/people/Geoff-Bremner-Audio/sounds/688201/"
+ source: "https://freesound.org/people/Geoff-Bremner-Audio/sounds/688201/"
+
+- files: ["dog_growl1.ogg", "dog_growl2.ogg", "dog_growl3.ogg"]
+ license: "CC0-1.0"
+ copyright: "Original sound by https://freesound.org/people/Glitchedtones/sounds/372533/ - cut out three clips of dog growling, cleaned up, converted to ogg"
+ source: "https://freesound.org/people/Glitchedtones/sounds/372533/"
+
+- files: ["dog_snarl1.ogg", "dog_snarl2.ogg", "dog_snarl3.ogg"]
+ license: "CC0-1.0"
+ copyright: "Original sound by https://freesound.org/people/strongbot/sounds/341090/ - cut out three clips of dog snarling, cleaned up, converted to ogg"
+ source: "https://freesound.org/people/strongbot/sounds/341090/"
+
+ files: ["dog_whine.ogg"]
+ license: "CC0-1.0"
+ copyright: "Original sound by https://freesound.org/people/Sruddi1/sounds/34878/ - cleaned up, converted to ogg"
+ source: "https://freesound.org/people/Sruddi1/sounds/34878/"
diff --git a/Resources/Audio/ADT/Voice/Doge/dog_bark1.ogg b/Resources/Audio/ADT/Voice/Doge/dog_bark1.ogg
new file mode 100644
index 00000000000..8f3b8fe5bff
Binary files /dev/null and b/Resources/Audio/ADT/Voice/Doge/dog_bark1.ogg differ
diff --git a/Resources/Audio/ADT/Voice/Doge/dog_bark2.ogg b/Resources/Audio/ADT/Voice/Doge/dog_bark2.ogg
new file mode 100644
index 00000000000..ed4d7bc7868
Binary files /dev/null and b/Resources/Audio/ADT/Voice/Doge/dog_bark2.ogg differ
diff --git a/Resources/Audio/ADT/Voice/Doge/dog_bark3.ogg b/Resources/Audio/ADT/Voice/Doge/dog_bark3.ogg
new file mode 100644
index 00000000000..13aab8edd40
Binary files /dev/null and b/Resources/Audio/ADT/Voice/Doge/dog_bark3.ogg differ
diff --git a/Resources/Audio/ADT/Voice/Doge/dog_growl1.ogg b/Resources/Audio/ADT/Voice/Doge/dog_growl1.ogg
new file mode 100644
index 00000000000..d2c99e97e7e
Binary files /dev/null and b/Resources/Audio/ADT/Voice/Doge/dog_growl1.ogg differ
diff --git a/Resources/Audio/ADT/Voice/Doge/dog_growl2.ogg b/Resources/Audio/ADT/Voice/Doge/dog_growl2.ogg
new file mode 100644
index 00000000000..3eb018413a5
Binary files /dev/null and b/Resources/Audio/ADT/Voice/Doge/dog_growl2.ogg differ
diff --git a/Resources/Audio/ADT/Voice/Doge/dog_growl3.ogg b/Resources/Audio/ADT/Voice/Doge/dog_growl3.ogg
new file mode 100644
index 00000000000..84b505442d2
Binary files /dev/null and b/Resources/Audio/ADT/Voice/Doge/dog_growl3.ogg differ
diff --git a/Resources/Audio/ADT/Voice/Doge/dog_snarl1.ogg b/Resources/Audio/ADT/Voice/Doge/dog_snarl1.ogg
new file mode 100644
index 00000000000..4493be060cc
Binary files /dev/null and b/Resources/Audio/ADT/Voice/Doge/dog_snarl1.ogg differ
diff --git a/Resources/Audio/ADT/Voice/Doge/dog_snarl2.ogg b/Resources/Audio/ADT/Voice/Doge/dog_snarl2.ogg
new file mode 100644
index 00000000000..6529e4e05d0
Binary files /dev/null and b/Resources/Audio/ADT/Voice/Doge/dog_snarl2.ogg differ
diff --git a/Resources/Audio/ADT/Voice/Doge/dog_snarl3.ogg b/Resources/Audio/ADT/Voice/Doge/dog_snarl3.ogg
new file mode 100644
index 00000000000..fb9e4c7ec7b
Binary files /dev/null and b/Resources/Audio/ADT/Voice/Doge/dog_snarl3.ogg differ
diff --git a/Resources/Audio/ADT/Voice/Doge/dog_whine.ogg b/Resources/Audio/ADT/Voice/Doge/dog_whine.ogg
new file mode 100644
index 00000000000..47f2e8200d7
Binary files /dev/null and b/Resources/Audio/ADT/Voice/Doge/dog_whine.ogg differ
diff --git a/Resources/Audio/ADT/Voice/Doge/license.txt b/Resources/Audio/ADT/Voice/Doge/license.txt
new file mode 100644
index 00000000000..7604e4dfc25
--- /dev/null
+++ b/Resources/Audio/ADT/Voice/Doge/license.txt
@@ -0,0 +1,10 @@
+dog_bark1.ogg licensed under CC0 1.0 taken from abhisheky948 at https://freesound.org/people/abhisheky948/sounds/625497/
+dog_bark2.ogg licensed under CC0 1.0 taken from michael_grinnell at https://freesound.org/people/michael_grinnell/sounds/464400/
+dog_bark3.ogg licensed under CC0 1.0 taken from Geoff-Bremner-Audio at https://freesound.org/people/Geoff-Bremner-Audio/sounds/688201/
+dog_growl1.ogg licensed under CC0 1.0 taken from GlitchedTones at https://freesound.org/people/Glitchedtones/sounds/372533/
+dog_growl2.ogg licensed under CC0 1.0 taken from GlitchedTones at https://freesound.org/people/Glitchedtones/sounds/372533/
+dog_growl3.ogg licensed under CC0 1.0 taken from GlitchedTones at https://freesound.org/people/Glitchedtones/sounds/372533/
+dog_snarl1.ogg licensed under CC0 1.0 taken from strongbot at https://freesound.org/people/strongbot/sounds/341090/
+dog_snarl2.ogg licensed under CC0 1.0 taken from strongbot at https://freesound.org/people/strongbot/sounds/341090/
+dog_snarl3.ogg licensed under CC0 1.0 taken from strongbot at https://freesound.org/people/strongbot/sounds/341090/
+dog_whine.ogg licensed under CC SAMPLING+ 1.0 DEED taken from Sruddil at https://freesound.org/people/Sruddi1/sounds/34878/
\ No newline at end of file
diff --git a/Resources/Audio/ADT/Voice/Vulpkanin/bark.ogg b/Resources/Audio/ADT/Voice/Vulpkanin/bark.ogg
new file mode 100644
index 00000000000..e0e77281d82
Binary files /dev/null and b/Resources/Audio/ADT/Voice/Vulpkanin/bark.ogg differ
diff --git a/Resources/Audio/ADT/Voice/Vulpkanin/growl1.ogg b/Resources/Audio/ADT/Voice/Vulpkanin/growl1.ogg
new file mode 100644
index 00000000000..d5152d9c057
Binary files /dev/null and b/Resources/Audio/ADT/Voice/Vulpkanin/growl1.ogg differ
diff --git a/Resources/Audio/ADT/Voice/Vulpkanin/growl2.ogg b/Resources/Audio/ADT/Voice/Vulpkanin/growl2.ogg
new file mode 100644
index 00000000000..5c48053ac68
Binary files /dev/null and b/Resources/Audio/ADT/Voice/Vulpkanin/growl2.ogg differ
diff --git a/Resources/Audio/ADT/Voice/Vulpkanin/growl3.ogg b/Resources/Audio/ADT/Voice/Vulpkanin/growl3.ogg
new file mode 100644
index 00000000000..bcacf2442f0
Binary files /dev/null and b/Resources/Audio/ADT/Voice/Vulpkanin/growl3.ogg differ
diff --git a/Resources/Audio/ADT/Voice/Vulpkanin/howl.ogg b/Resources/Audio/ADT/Voice/Vulpkanin/howl.ogg
new file mode 100644
index 00000000000..778fd6b2483
Binary files /dev/null and b/Resources/Audio/ADT/Voice/Vulpkanin/howl.ogg differ
diff --git a/Resources/Audio/ADT/Voice/Vulpkanin/license.txt b/Resources/Audio/ADT/Voice/Vulpkanin/license.txt
new file mode 100644
index 00000000000..40e76cd1fec
--- /dev/null
+++ b/Resources/Audio/ADT/Voice/Vulpkanin/license.txt
@@ -0,0 +1,3 @@
+all taken from
+https://github.com/new-frontiers-14/frontier-station-14/tree/master/Resources/Audio/_NF/Vulpikanin
+licensed under CC BY-NC-SA 3.0
diff --git a/Resources/Audio/ADT/Voice/Vulpkanin/scream1.ogg b/Resources/Audio/ADT/Voice/Vulpkanin/scream1.ogg
new file mode 100644
index 00000000000..8c5cf335a4a
Binary files /dev/null and b/Resources/Audio/ADT/Voice/Vulpkanin/scream1.ogg differ
diff --git a/Resources/Audio/ADT/Voice/Vulpkanin/scream2.ogg b/Resources/Audio/ADT/Voice/Vulpkanin/scream2.ogg
new file mode 100644
index 00000000000..0ff2ac25ce4
Binary files /dev/null and b/Resources/Audio/ADT/Voice/Vulpkanin/scream2.ogg differ
diff --git a/Resources/Audio/ADT/Voice/Vulpkanin/vulpkanin_hekaet1.ogg b/Resources/Audio/ADT/Voice/Vulpkanin/vulpkanin_hekaet1.ogg
new file mode 100644
index 00000000000..46329ad28d7
Binary files /dev/null and b/Resources/Audio/ADT/Voice/Vulpkanin/vulpkanin_hekaet1.ogg differ
diff --git a/Resources/Audio/ADT/Voice/Vulpkanin_Talk/license.txt b/Resources/Audio/ADT/Voice/Vulpkanin_Talk/license.txt
new file mode 100644
index 00000000000..117cf54003a
--- /dev/null
+++ b/Resources/Audio/ADT/Voice/Vulpkanin_Talk/license.txt
@@ -0,0 +1,6 @@
+pug.ogg (Renamed to vulp.ogg)
+pug_ask.ogg (Renamed to vulp_ask.ogg)
+pug_exclaim.ogg (Renamed to vulp_exclaim.ogg)
+all taken from
+https://github.com/goonstation/goonstation/commit/da7c8965c4552ca53af367e6c83a83da2affe790
+licensed under CC BY-NC-SA 3.0
diff --git a/Resources/Audio/ADT/Voice/Vulpkanin_Talk/vulp.ogg b/Resources/Audio/ADT/Voice/Vulpkanin_Talk/vulp.ogg
new file mode 100644
index 00000000000..86d50225a52
Binary files /dev/null and b/Resources/Audio/ADT/Voice/Vulpkanin_Talk/vulp.ogg differ
diff --git a/Resources/Audio/ADT/Voice/Vulpkanin_Talk/vulp_ask.ogg b/Resources/Audio/ADT/Voice/Vulpkanin_Talk/vulp_ask.ogg
new file mode 100644
index 00000000000..4cdf1c8a5e3
Binary files /dev/null and b/Resources/Audio/ADT/Voice/Vulpkanin_Talk/vulp_ask.ogg differ
diff --git a/Resources/Audio/ADT/Voice/Vulpkanin_Talk/vulp_exclaim.ogg b/Resources/Audio/ADT/Voice/Vulpkanin_Talk/vulp_exclaim.ogg
new file mode 100644
index 00000000000..ed47bcf1c6e
Binary files /dev/null and b/Resources/Audio/ADT/Voice/Vulpkanin_Talk/vulp_exclaim.ogg differ
diff --git a/Resources/Changelog/ChangelogADT.yml b/Resources/Changelog/ChangelogADT.yml
index 8cfa4770612..b33040568ce 100644
--- a/Resources/Changelog/ChangelogADT.yml
+++ b/Resources/Changelog/ChangelogADT.yml
@@ -2051,3 +2051,37 @@ Entries:
- {message: 'Upstream 27.06.24, подтянуты коммиты с корвакса.', type: Tweak}
time: '2024-06-27T17:32:38Z'
id: 214
+ - author: Darki255
+ changes:
+ - {message: Добавлен немецкий акцент, type: Add}
+ time: '2024-07-09T18:58:31Z'
+ id: 215
+ - author: Ratyyy
+ changes:
+ - {message: Изменены многие спрайты., type: Tweak}
+ time: '2024-07-14T08:59:33Z'
+ id: 216
+ - author: Шрёдька
+ changes:
+ - {message: 'Upstream 12.07.24, подтянуты коммиты с корвакса.', type: Tweak}
+ time: '2024-07-15T13:36:26Z'
+ id: 217
+ - author: Крыска
+ changes:
+ - {message: НТ начало поставлять новое снаряжение для ОБР., type: Add}
+ - {message: 'После собрания акционеров, было принято решение сформировать отдельные
+ отряды для борьбы с бунтами.', type: Add}
+ - {message: 'Величайшие умы НТ пришли к выводу, что в m-90 можно заряжать гранаты
+ в подствольный гранатомёт!', type: Add}
+ time: '2024-07-25T10:57:24Z'
+ id: 218
+ - author: Шрёдька
+ changes:
+ - {message: 'Подтянуты изменения с корвакса, 21.07.24.', type: Tweak}
+ time: '2024-07-26T23:39:11Z'
+ id: 219
+ - author: Шрёдька
+ changes:
+ - {message: 'Подтянуты коммиты с корвакса, 27.07.24', type: Tweak}
+ time: '2024-07-27T16:15:51Z'
+ id: 220
diff --git a/Resources/Locale/ru-RU/ADT/Entities/Objects/Misc/identification_cards.ftl b/Resources/Locale/ru-RU/ADT/Entities/Objects/Misc/identification_cards.ftl
deleted file mode 100644
index 0da4fda6bba..00000000000
--- a/Resources/Locale/ru-RU/ADT/Entities/Objects/Misc/identification_cards.ftl
+++ /dev/null
@@ -1,2 +0,0 @@
-ent-ADTRoboticistIDCard = ID карта робототехника
- .desc = { ent-IDCardStandard.desc }
diff --git a/Resources/Locale/ru-RU/ADT/Actions/language-menu.ftl b/Resources/Locale/ru-RU/ADT/prototypes/Actions/language-menu.ftl
similarity index 100%
rename from Resources/Locale/ru-RU/ADT/Actions/language-menu.ftl
rename to Resources/Locale/ru-RU/ADT/prototypes/Actions/language-menu.ftl
diff --git a/Resources/Locale/ru-RU/ADT/Body/Organs/demon.ftl b/Resources/Locale/ru-RU/ADT/prototypes/Body/Organs/demon.ftl
similarity index 100%
rename from Resources/Locale/ru-RU/ADT/Body/Organs/demon.ftl
rename to Resources/Locale/ru-RU/ADT/prototypes/Body/Organs/demon.ftl
diff --git a/Resources/Locale/ru-RU/ADT/Body/Organs/drask.ftl b/Resources/Locale/ru-RU/ADT/prototypes/Body/Organs/drask.ftl
similarity index 100%
rename from Resources/Locale/ru-RU/ADT/Body/Organs/drask.ftl
rename to Resources/Locale/ru-RU/ADT/prototypes/Body/Organs/drask.ftl
diff --git a/Resources/Locale/ru-RU/ADT/Body/Parts/demon.ftl b/Resources/Locale/ru-RU/ADT/prototypes/Body/Parts/demon.ftl
similarity index 100%
rename from Resources/Locale/ru-RU/ADT/Body/Parts/demon.ftl
rename to Resources/Locale/ru-RU/ADT/prototypes/Body/Parts/demon.ftl
diff --git a/Resources/Locale/ru-RU/ADT/Body/Parts/drask.ftl b/Resources/Locale/ru-RU/ADT/prototypes/Body/Parts/drask.ftl
similarity index 100%
rename from Resources/Locale/ru-RU/ADT/Body/Parts/drask.ftl
rename to Resources/Locale/ru-RU/ADT/prototypes/Body/Parts/drask.ftl
diff --git a/Resources/Locale/ru-RU/ADT/Catalog/store/bobr.ftl b/Resources/Locale/ru-RU/ADT/prototypes/Catalog/store/bobr.ftl
similarity index 100%
rename from Resources/Locale/ru-RU/ADT/Catalog/store/bobr.ftl
rename to Resources/Locale/ru-RU/ADT/prototypes/Catalog/store/bobr.ftl
diff --git a/Resources/Locale/ru-RU/ADT/Chemistry/metabolizer-types.ftl b/Resources/Locale/ru-RU/ADT/prototypes/Chemistry/metabolizer-types.ftl
similarity index 100%
rename from Resources/Locale/ru-RU/ADT/Chemistry/metabolizer-types.ftl
rename to Resources/Locale/ru-RU/ADT/prototypes/Chemistry/metabolizer-types.ftl
diff --git a/Resources/Locale/ru-RU/ADT/Entities/Mobs/Player/demon.ftl b/Resources/Locale/ru-RU/ADT/prototypes/Entities/Mobs/Player/demon.ftl
similarity index 100%
rename from Resources/Locale/ru-RU/ADT/Entities/Mobs/Player/demon.ftl
rename to Resources/Locale/ru-RU/ADT/prototypes/Entities/Mobs/Player/demon.ftl
diff --git a/Resources/Locale/ru-RU/ADT/Entities/Mobs/Player/drask.ftl b/Resources/Locale/ru-RU/ADT/prototypes/Entities/Mobs/Player/drask.ftl
similarity index 100%
rename from Resources/Locale/ru-RU/ADT/Entities/Mobs/Player/drask.ftl
rename to Resources/Locale/ru-RU/ADT/prototypes/Entities/Mobs/Player/drask.ftl
diff --git a/Resources/Locale/ru-RU/ADT/Entities/Mobs/Player/humanoid.ftl b/Resources/Locale/ru-RU/ADT/prototypes/Entities/Mobs/Player/humanoid.ftl
similarity index 100%
rename from Resources/Locale/ru-RU/ADT/Entities/Mobs/Player/humanoid.ftl
rename to Resources/Locale/ru-RU/ADT/prototypes/Entities/Mobs/Player/humanoid.ftl
diff --git a/Resources/Locale/ru-RU/ADT/prototypes/Entities/Mobs/Player/vulpkanin.ftl b/Resources/Locale/ru-RU/ADT/prototypes/Entities/Mobs/Player/vulpkanin.ftl
new file mode 100644
index 00000000000..b348af9953e
--- /dev/null
+++ b/Resources/Locale/ru-RU/ADT/prototypes/Entities/Mobs/Player/vulpkanin.ftl
@@ -0,0 +1,2 @@
+ent-MobVulpkanin = Урист МакВульпканин
+ .desc = { ent-BaseMobVulpkanin.desc }
diff --git a/Resources/Locale/ru-RU/ADT/Entities/Mobs/Species/demon.ftl b/Resources/Locale/ru-RU/ADT/prototypes/Entities/Mobs/Species/demon.ftl
similarity index 100%
rename from Resources/Locale/ru-RU/ADT/Entities/Mobs/Species/demon.ftl
rename to Resources/Locale/ru-RU/ADT/prototypes/Entities/Mobs/Species/demon.ftl
diff --git a/Resources/Locale/ru-RU/ADT/Entities/Mobs/Species/drask.ftl b/Resources/Locale/ru-RU/ADT/prototypes/Entities/Mobs/Species/drask.ftl
similarity index 100%
rename from Resources/Locale/ru-RU/ADT/Entities/Mobs/Species/drask.ftl
rename to Resources/Locale/ru-RU/ADT/prototypes/Entities/Mobs/Species/drask.ftl
diff --git a/Resources/Locale/ru-RU/ADT/Entities/Objects/Device/pda.ftl b/Resources/Locale/ru-RU/ADT/prototypes/Entities/Objects/Device/pda.ftl
similarity index 100%
rename from Resources/Locale/ru-RU/ADT/Entities/Objects/Device/pda.ftl
rename to Resources/Locale/ru-RU/ADT/prototypes/Entities/Objects/Device/pda.ftl
diff --git a/Resources/Locale/ru-RU/ADT/Entities/Objects/Device/translators.ftl b/Resources/Locale/ru-RU/ADT/prototypes/Entities/Objects/Device/translators.ftl
similarity index 100%
rename from Resources/Locale/ru-RU/ADT/Entities/Objects/Device/translators.ftl
rename to Resources/Locale/ru-RU/ADT/prototypes/Entities/Objects/Device/translators.ftl
diff --git a/Resources/Locale/ru-RU/ADT/Entities/Objects/Misc/implanters.ftl b/Resources/Locale/ru-RU/ADT/prototypes/Entities/Objects/Misc/implanters.ftl
similarity index 100%
rename from Resources/Locale/ru-RU/ADT/Entities/Objects/Misc/implanters.ftl
rename to Resources/Locale/ru-RU/ADT/prototypes/Entities/Objects/Misc/implanters.ftl
diff --git a/Resources/Locale/ru-RU/ADT/Objects/Weapons/Guns/Guns.ftl b/Resources/Locale/ru-RU/ADT/prototypes/Entities/Objects/Weapons/Guns/Guns.ftl
similarity index 100%
rename from Resources/Locale/ru-RU/ADT/Objects/Weapons/Guns/Guns.ftl
rename to Resources/Locale/ru-RU/ADT/prototypes/Entities/Objects/Weapons/Guns/Guns.ftl
diff --git a/Resources/Locale/ru-RU/ADT/Entities/Objects/Weapons/Melee/melee.ftl b/Resources/Locale/ru-RU/ADT/prototypes/Entities/Objects/Weapons/Melee/melee.ftl
similarity index 100%
rename from Resources/Locale/ru-RU/ADT/Entities/Objects/Weapons/Melee/melee.ftl
rename to Resources/Locale/ru-RU/ADT/prototypes/Entities/Objects/Weapons/Melee/melee.ftl
diff --git a/Resources/Locale/ru-RU/ADT/Research/translators.ftl b/Resources/Locale/ru-RU/ADT/prototypes/Research/translators.ftl
similarity index 100%
rename from Resources/Locale/ru-RU/ADT/Research/translators.ftl
rename to Resources/Locale/ru-RU/ADT/prototypes/Research/translators.ftl
diff --git a/Resources/Locale/ru-RU/ADT/Species/demon.ftl b/Resources/Locale/ru-RU/ADT/prototypes/Species/demon.ftl
similarity index 100%
rename from Resources/Locale/ru-RU/ADT/Species/demon.ftl
rename to Resources/Locale/ru-RU/ADT/prototypes/Species/demon.ftl
diff --git a/Resources/Locale/ru-RU/ADT/Species/drask.ftl b/Resources/Locale/ru-RU/ADT/prototypes/Species/drask.ftl
similarity index 100%
rename from Resources/Locale/ru-RU/ADT/Species/drask.ftl
rename to Resources/Locale/ru-RU/ADT/prototypes/Species/drask.ftl
diff --git a/Resources/Locale/ru-RU/ADT/Species/kobolt.ftl b/Resources/Locale/ru-RU/ADT/prototypes/Species/kobolt.ftl
similarity index 100%
rename from Resources/Locale/ru-RU/ADT/Species/kobolt.ftl
rename to Resources/Locale/ru-RU/ADT/prototypes/Species/kobolt.ftl
diff --git a/Resources/Locale/ru-RU/ss14-ru/prototypes/corvax/entities/mobs/player/vulpkanin.ftl b/Resources/Locale/ru-RU/ss14-ru/prototypes/corvax/entities/mobs/player/vulpkanin.ftl
index c91bc8b9d2e..b2bc163e6b3 100644
--- a/Resources/Locale/ru-RU/ss14-ru/prototypes/corvax/entities/mobs/player/vulpkanin.ftl
+++ b/Resources/Locale/ru-RU/ss14-ru/prototypes/corvax/entities/mobs/player/vulpkanin.ftl
@@ -1,2 +1,2 @@
-ent-MobVulpkanin = Урист МакВульп
- .desc = { ent-BaseMobVulpkanin.desc }
+### ent-MobVulpkanin = Урист МакВульп
+### .desc = { ent-BaseMobVulpkanin.desc }
diff --git a/Resources/Prototypes/ADT/Body/Organs/Vulpkanin.yml b/Resources/Prototypes/ADT/Body/Organs/Vulpkanin.yml
new file mode 100644
index 00000000000..c95f24c9071
--- /dev/null
+++ b/Resources/Prototypes/ADT/Body/Organs/Vulpkanin.yml
@@ -0,0 +1,38 @@
+- type: entity
+ id: OrganVulpkaninStomach
+ parent: OrganAnimalStomach
+ noSpawn: true
+ components:
+ - type: Stomach
+ - type: SolutionContainerManager
+ solutions:
+ stomach:
+ maxVol: 50.0
+
+- type: entity
+ id: ADTOrganVulpkaninAnimalLiver
+ parent: BaseAnimalOrgan
+ name: liver
+ #noSpawn: true
+ components:
+ - type: Sprite
+ state: liver
+ - type: Organ
+ - type: Metabolizer
+ maxReagents: 1
+ metabolizerTypes: [ Animal ]
+ groups:
+ - id: Alcohol
+ rateModifier: 0.1
+
+- type: entity
+ id: OrganVulpkaninHeart
+ parent: OrganAnimalHeart
+ components:
+ - type: Metabolizer
+ maxReagents: 2
+ metabolizerTypes: [ Vulpkanin, Animal ]
+ groups:
+ - id: Medicine
+ - id: Poison
+ - id: Narcotic
diff --git a/Resources/Prototypes/ADT/Body/Parts/Vulpkanin.yml b/Resources/Prototypes/ADT/Body/Parts/Vulpkanin.yml
new file mode 100644
index 00000000000..830cc43a2aa
--- /dev/null
+++ b/Resources/Prototypes/ADT/Body/Parts/Vulpkanin.yml
@@ -0,0 +1,205 @@
+# TODO: Add descriptions (many)
+# TODO BODY: Part damage
+- type: entity
+ id: PartVulpkanin
+ parent: BaseItem
+ name: "Вульпканин части тела"
+ abstract: true
+ components:
+ - type: Damageable
+ damageContainer: Biological
+ - type: BodyPart
+ - type: ContainerContainer
+ containers:
+ bodypart: !type:Container
+ ents: []
+
+- type: entity
+ id: TorsoVulpkanin
+ name: "тело вульпканина"
+ parent: PartVulpkanin
+ components:
+ - type: Sprite
+ netsync: false
+ sprite: ADT/Mobs/Species/Vulpkanin/parts.rsi
+ state: "torso_m"
+ - type: Icon
+ sprite: ADT/Mobs/Species/Vulpkanin/parts.rsi
+ state: "torso_m"
+ - type: BodyPart
+ partType: Torso
+
+- type: entity
+ id: HeadVulpkanin
+ name: "голова вульпканина"
+ parent: PartVulpkanin
+ components:
+ - type: Sprite
+ netsync: false
+ sprite: ADT/Mobs/Species/Vulpkanin/parts.rsi
+ state: "head_m"
+ - type: Icon
+ sprite: ADT/Mobs/Species/Vulpkanin/parts.rsi
+ state: "head_m"
+ - type: BodyPart
+ partType: Head
+ vital: true
+ - type: Input
+ context: "ghost"
+ - type: MovementSpeedModifier
+ baseWalkSpeed: 0
+ baseSprintSpeed: 0
+ - type: InputMover
+ - type: GhostOnMove
+ - type: Tag
+ tags:
+ - Head
+
+- type: entity
+ id: LeftArmVulpkanin
+ name: "левая рука вульпканина"
+ parent: PartVulpkanin
+ components:
+ - type: Sprite
+ netsync: false
+ sprite: ADT/Mobs/Species/Vulpkanin/parts.rsi
+ state: "l_arm"
+ - type: Icon
+ sprite: ADT/Mobs/Species/Vulpkanin/parts.rsi
+ state: "l_arm"
+ - type: BodyPart
+ partType: Arm
+ symmetry: Left
+
+- type: entity
+ id: RightArmVulpkanin
+ name: "правая рука вульпканина"
+ parent: PartVulpkanin
+ components:
+ - type: Sprite
+ netsync: false
+ sprite: ADT/Mobs/Species/Vulpkanin/parts.rsi
+ state: "r_arm"
+ - type: Icon
+ sprite: ADT/Mobs/Species/Vulpkanin/parts.rsi
+ state: "r_arm"
+ - type: BodyPart
+ partType: Arm
+ symmetry: Right
+
+- type: entity
+ id: LeftHandVulpkanin
+ name: "левая кисть вульпканина"
+ parent: PartVulpkanin
+ components:
+ - type: Sprite
+ netsync: false
+ sprite: ADT/Mobs/Species/Vulpkanin/parts.rsi
+ state: "l_hand"
+ - type: Icon
+ sprite: ADT/Mobs/Species/Vulpkanin/parts.rsi
+ state: "l_hand"
+ - type: BodyPart
+ partType: Hand
+ symmetry: Left
+
+- type: entity
+ id: RightHandVulpkanin
+ name: "правая кисть вульпканина"
+ parent: PartVulpkanin
+ components:
+ - type: Sprite
+ netsync: false
+ sprite: ADT/Mobs/Species/Vulpkanin/parts.rsi
+ state: "r_hand"
+ - type: Icon
+ sprite: ADT/Mobs/Species/Vulpkanin/parts.rsi
+ state: "r_hand"
+ - type: BodyPart
+ partType: Hand
+ symmetry: Right
+
+- type: entity
+ id: TailVulpkanin
+ name: "хвост вульпканина"
+ parent: PartVulpkanin
+ components:
+ - type: Sprite
+ netsync: false
+ sprite: ADT/Mobs/Species/Vulpkanin/parts.rsi
+ state: "tail_m"
+ - type: Icon
+ sprite: ADT/Mobs/Species/Vulpkanin/parts.rsi
+ state: "tail_m"
+ - type: BodyPart
+ partType: Tail
+
+- type: entity
+ id: LeftLegVulpkanin
+ name: "левая нога вульпканина"
+ parent: PartVulpkanin
+ components:
+ - type: Sprite
+ netsync: false
+ sprite: ADT/Mobs/Species/Vulpkanin/parts.rsi
+ state: "l_leg"
+ - type: Icon
+ sprite: ADT/Mobs/Species/Vulpkanin/parts.rsi
+ state: "l_leg"
+ - type: BodyPart
+ partType: Leg
+ symmetry: Left
+ - type: MovementBodyPart
+ walkSpeed: 2.7
+ sprintSpeed: 4.6
+
+- type: entity
+ id: RightLegVulpkanin
+ name: "правая нога вульпканина"
+ parent: PartVulpkanin
+ components:
+ - type: Sprite
+ netsync: false
+ sprite: ADT/Mobs/Species/Vulpkanin/parts.rsi
+ state: "r_leg"
+ - type: Icon
+ sprite: ADT/Mobs/Species/Vulpkanin/parts.rsi
+ state: "r_leg"
+ - type: BodyPart
+ partType: Leg
+ symmetry: Right
+ - type: MovementBodyPart
+ walkSpeed: 2.7
+ sprintSpeed: 4.6
+
+- type: entity
+ id: LeftFootVulpkanin
+ name: "левая ступня вульпканина"
+ parent: PartVulpkanin
+ components:
+ - type: Sprite
+ netsync: false
+ sprite: ADT/Mobs/Species/Vulpkanin/parts.rsi
+ state: "l_foot"
+ - type: Icon
+ sprite: ADT/Mobs/Species/Vulpkanin/parts.rsi
+ state: "l_foot"
+ - type: BodyPart
+ partType: Foot
+ symmetry: Left
+
+- type: entity
+ id: RightFootVulpkanin
+ name: "правая ступня вульпканина"
+ parent: PartVulpkanin
+ components:
+ - type: Sprite
+ netsync: false
+ sprite: ADT/Mobs/Species/Vulpkanin/parts.rsi
+ state: "r_foot"
+ - type: Icon
+ sprite: ADT/Mobs/Species/Vulpkanin/parts.rsi
+ state: "r_foot"
+ - type: BodyPart
+ partType: Foot
+ symmetry: Right
\ No newline at end of file
diff --git a/Resources/Prototypes/ADT/Body/Prototypes/Vulpkanin.yml b/Resources/Prototypes/ADT/Body/Prototypes/Vulpkanin.yml
new file mode 100644
index 00000000000..2cb6043ae4b
--- /dev/null
+++ b/Resources/Prototypes/ADT/Body/Prototypes/Vulpkanin.yml
@@ -0,0 +1,53 @@
+- type: body
+ id: VulpkaninBody
+ name: "vulpkanin"
+ root: torso
+ slots:
+ head:
+ part: HeadVulpkanin
+ connections:
+ - torso
+ organs:
+ brain: OrganHumanBrain
+ eyes: OrganHumanEyes
+ torso:
+ part: TorsoVulpkanin
+ organs:
+ heart: OrganVulpkaninHeart
+ lungs: OrganHumanLungs
+ stomach: OrganVulpkaninStomach
+ liver: ADTOrganVulpkaninAnimalLiver #Печень вульпы
+ kidneys: OrganHumanKidneys
+ connections:
+ - left arm
+ - right arm
+ - left leg
+ - right leg
+ - tail
+ right arm:
+ part: RightArmVulpkanin
+ connections:
+ - right hand
+ left arm:
+ part: LeftArmVulpkanin
+ connections:
+ - left hand
+ right hand:
+ part: RightHandVulpkanin
+ left hand:
+ part: LeftHandVulpkanin
+ right leg:
+ part: RightLegVulpkanin
+ connections:
+ - right foot
+ left leg:
+ part: LeftLegVulpkanin
+ connections:
+ - left foot
+ right foot:
+ part: RightFootVulpkanin
+ left foot:
+ part: LeftFootVulpkanin
+ tail:
+ part: TailVulpkanin
+
diff --git a/Resources/Prototypes/ADT/Datasets/Names/fill.txt b/Resources/Prototypes/ADT/Datasets/Names/fill.txt
deleted file mode 100644
index b4954caf47d..00000000000
--- a/Resources/Prototypes/ADT/Datasets/Names/fill.txt
+++ /dev/null
@@ -1 +0,0 @@
-# Данный файл существует по причине того что Githab плохо дружит с пустыми папками, при работе с этой папкой этот файл можно спокойно удалить
\ No newline at end of file
diff --git a/Resources/Prototypes/ADT/Datasets/Names/first_female_vulp.yml b/Resources/Prototypes/ADT/Datasets/Names/first_female_vulp.yml
new file mode 100644
index 00000000000..c143a65de9d
--- /dev/null
+++ b/Resources/Prototypes/ADT/Datasets/Names/first_female_vulp.yml
@@ -0,0 +1,407 @@
+- type: dataset
+ id: firstFemaleVulp
+ values:
+ - Айко
+ - Зита
+ - Ванда
+ - Лииси
+ - Фанни
+ - Зсузса
+ - Вильма
+ - Клара
+ - Эсти
+ - Элин
+ - Фрида
+ - Кайа
+ - Эева
+ - Ильдико
+ - Линнеа
+ - Мия
+ - Нора
+ - Ханна
+ - Лена
+ - Сара
+ - Эмма
+ - Хильма
+ - Альма
+ - Эбба
+ - Инга
+ - Кайя
+ - Леена
+ - Сельма
+ - Туули
+ - Кира
+ - Дора
+ - Лаура
+ - Раиса
+ - Анни
+ - Инка
+ - Хайди
+ - Хельми
+ - Илона
+ - Джемима
+ - Лотта
+ - Паула
+ - Реетта
+ - Рооса
+ - Суви
+ - Тийна
+ - Зара
+ - Улла
+ - Виви
+ - Ясмина
+
+
+
+
+
+
+
+
+
+
+ # - Эбби
+ # - Аканта
+ # - Аддилин
+ # - Адела
+ # - Адель
+ # - Адерин
+ # - Адли
+ # - Адриана
+ # - Аэрона
+ # - Эйлин
+ # - Аланис
+ # - Альберта
+ # - Алекс
+ # - Александра
+ # - Алиса
+ # - Альма
+ # - Амалия
+ # - Андромеда
+ # - Ангел
+ # - Анна
+ # - Анна
+ # - Энн
+ # - Энни
+ # - Ариэль
+ # - Арья
+ # - Астрея
+ # - Астрид
+ # - Афина
+ # - Одра
+ # - Аура
+ # - Аврора
+ # - Вице
+ # - Бейли
+ # - Барбара
+ # - Беатрикс
+ # - Белинда
+ # - Беллатрикс
+ # - Белль
+ # - Бьянка
+ # - Брелинн
+ # - Бреа
+ # - Бри
+ # - Брук
+ # - Брунгильда
+ # - Кейтлин
+ # - Каллисто
+ # - Камден
+ # - Камилла
+ # - Чандра
+ # - Карина
+ # - Карлетта
+ # - Карлайн
+ # - Карман
+ # - Кэролайн
+ # - Кэрис
+ # - Кассандра
+ # - Кассиопея
+ # - Кэтлин
+ # - Селеста
+ # - Селина
+ # - Церера
+ # - Цериан
+ # - Шарлотта
+ # - Шелле
+ # - Хлоя
+ # - Сисели
+ # - Клара
+ # - Клариса
+ # - Клаудия
+ # - Корделия
+ # - Корнелия
+ # - Крессида
+ # - Кибела
+ # - Дагмар
+ # - Дейзи
+ # - Дакота
+ # - Дафна
+ # - Дарья
+ # - Дарла
+ # - Рассвет
+ # - Дейдра
+ # - Дежа
+ # - Делайла
+ # - Дельфина
+ # - Делит
+ # - Деметра
+ # - Дезра
+ # - Дина
+ # - Дора
+ # - Эффи
+ # - Эйдвен
+ # - Элейн
+ # - Элара
+ # - Элеонора
+ # - Элиана
+ # - Элиза
+ # - Эллен
+ # - Эльза
+ # - Эмилия
+ # - Эмили
+ # - Эмма
+ # - Эмми
+ # - Эмми
+ # - Эстер
+ # - Эстер
+ # - Ева
+ # - Фадила
+ # - Фаррен
+ # - Фэй
+ # - Фелита
+ # - Фелиция
+ # - Фенелла
+ # - Флер
+ # - Франческа
+ # - Фрейя
+ # - Гранат
+ # - Имбирь
+ # - Милость
+ # - Грейси
+ # - Гвен
+ # - Хэдли
+ # - Хафрен
+ # - Галлей
+ # - Ханна
+ # - Харлин
+ # - Гармония
+ # - Харпер
+ # - Хейзел
+ # - Хелен
+ # - Елена
+ # - Элен
+ # - Хильда
+ # - Холли
+ # - Медовый
+ # - Надеяться
+ # - Идонея
+ # - Игна
+ # - Имоджен
+ # - Ина
+ # - Иона
+ # - Ирэн
+ # - Ирма
+ # - Изабель
+ # - Изабелла
+ # - Иви
+ # - Жаклин
+ # - Джейлин
+ # - Яна
+ # - Дженис
+ # - Янис
+ # - Джейн
+ # - Джазлин
+ # - Джин
+ # - Дженнет
+ # - Дженнифер
+ # - Джилл
+ # - Джо
+ # - Джоанна
+ # - Джослин
+ # - Юлиана
+ # - Джульетта
+ # - Июнь
+ # - Кайя
+ # - Кали
+ # - Карлин
+ # - Кэтрин
+ # - Кенна
+ # - Кира
+ # - Кайли
+ # - Кимберли
+ # - Кивела
+ # - Лейси
+ # - Лашель
+ # - Лейси
+ # - Лариса
+ # - Лаура
+ # - Лейла
+ # - Лена
+ # - Леонор
+ # - Лесли
+ # - Лекси
+ # - Лиана
+ # - Лиани
+ # - Лианна
+ # - Лизель
+ # - Лили
+ # - Лиливен
+ # - Лилли
+ # - Линда
+ # - Лола
+ # - Лона
+ # - Лорелай
+ # - Лорелей
+ # - Луиза
+ # - Лулу
+ # - Луна
+ # - Ликия
+ # - Лин
+ # - Мабин
+ # - Мадлен
+ # - Мейв
+ # - Магдалина
+ # - Мэгги
+ # - Майя
+ # - Марагарет
+ # - Маргарет
+ # - Мэрайя
+ # - Мариам
+ # - Мэрилин
+ # - Марина
+ # - Марисоль
+ # - Маривел
+ # - Марли
+ # - Марни
+ # - Маррин
+ # - Мартина
+ # - Мэри
+ # - Мазелина
+ # - Меда
+ # - Медея
+ # - Мэй
+ # - Мелания
+ # - Мелани
+ # - Мелодия
+ # - Мерседес
+ # - Мерль
+ # - Мерил
+ # - Миа
+ # - Мишель
+ # - Мила
+ # - Милли
+ # - Минди
+ # - Миранда
+ # - Мисси
+ # - Мисти
+ # - Мона
+ # - Морган
+ # - Моргана
+ # - Морриган
+ # - Мортиша
+ # - Надя
+ # - Надин
+ # - Несса
+ # - Ниа
+ # - Николь
+ # - Никки
+ # - Нима
+ # - Нина
+ # - Норма
+ # - Новая звезда
+ # - Оливковое
+ # - Оливия
+ # - Опалайн
+ # - Офелия
+ # - Ориана
+ # - Пейсли
+ # - Палома
+ # - Пэм
+ # - Полина
+ # - Пас
+ # - Пенелопа
+ # - Пенни
+ # - Фиби
+ # - Пайпер
+ # - Порция
+ # - Прия
+ # - Рэйчел
+ # - Райна
+ # - Раура
+ # - Ворон
+ # - Рейна
+ # - Рейн
+ # - Ребекка
+ # - Регина
+ # - Рене
+ # - Рея
+ # - Рина
+ # - Робин
+ # - Розалинда
+ # - Рози
+ # - Роуэн
+ # - Ровена
+ # - Ройс
+ # - Краснуха
+ # - Рубин
+ # - Рю
+ # - Рут
+ # - Сабрина
+ # - Сэди
+ # - Сахара
+ # - Сандра
+ # - Савина
+ # - Сойер
+ # - Селена
+ # - Сена
+ # - Серафина
+ # - Серафина
+ # - Шеба
+ # - Шейла
+ # - Сиа
+ # - Сибилла
+ # - Софи
+ # - Сонет
+ # - София
+ # - Стасия
+ # - Стейси
+ # - Стефани
+ # - Стелла
+ # - Сури
+ # - Сиден
+ # - Сильвия
+ # - Тала
+ # - Таша
+ # - Тася
+ # - Татум
+ # - Тайли
+ # - Тиган
+ # - Тереза
+ # - Тесс
+ # - Тесса
+ # - Тесси
+ # - Тейя
+ # - Титания
+ # - Триша
+ # - Трикси
+ # - Труди
+ # - Ума
+ # - Урсула
+ # - Валения
+ # - Валентина
+ # - Вега
+ # - Вера
+ # - Верена
+ # - Вики
+ # - Виктория
+ # - Уиллоу
+ # - Винни
+ # - Ясмин
+ # - Иветт
+ # - Ивонн
+ # - Зия
+ # - Цинния
+ # - Зива
+ # - Зои
+ # - Зури
\ No newline at end of file
diff --git a/Resources/Prototypes/ADT/Datasets/Names/first_male_vulp.yml b/Resources/Prototypes/ADT/Datasets/Names/first_male_vulp.yml
new file mode 100644
index 00000000000..6ed332f6aa8
--- /dev/null
+++ b/Resources/Prototypes/ADT/Datasets/Names/first_male_vulp.yml
@@ -0,0 +1,431 @@
+- type: dataset
+ id: firstMaleVulp
+ values:
+ - Виз
+ - Эсо
+ - Юкерсторм
+ - Айоэльмс
+ - Визраун
+ - Эрельсторм
+ - Линцфельд
+ - Касарибер
+ - Юкерэль
+ - Айотор
+ - Визмонд
+ - Касарист
+ - Виндвехтер
+ - Шаттенфлюг
+ - Штурмалптраум
+ - Флюскланг
+ - Туулисонг
+ - Переншторм
+ - Яренкорн
+ - Аскоуальд
+ - Лиринвехтер
+ - Элимер
+ - Рейлинвальд
+ - Зафиркланг
+ - Имерлихт
+ - Фенюмонд
+ - Элиринзеелен
+ - Юкерэльмс
+ - Мисзель
+ - Касариэль
+ - Эрельзаун
+ - Касари
+ - Юкер
+ - Вези'Виз
+ - Айо
+ - Виз
+ - Эсо
+ - Эрель
+ - Мисзерел
+ - Тайвас
+ - Эйик
+ - Уйсзасз
+ - Йаист
+ - Туулвинд
+ - Арминирель
+ - Линзабель
+ - Эйлан
+ - Валерия
+ - Финвульф
+ - Винтерсол
+ - Свенсгард
+ - Тальвус
+ - Лирикаво
+ - Мейкара
+ - Нординне
+ - Клараал
+ - Фехерсол
+ - Роземир
+ - Аленар
+ - Магделайн
+ - Мирослава
+ - Кристиан
+ - Весперия
+ - Элрикссон
+ - Альвинссон
+ - Туулссон
+ - Виндервальд
+ - Хесселин
+ - Фрейяр
+ - Асгрим
+ - Иселин
+ - Никодим
+ - Стеллан
+ - Хедвиг
+
+
+
+
+
+
+
+
+
+ # - Аарон
+ # - Абэ
+ # - Авраам
+ # - Адельгер
+ # - Адолар
+ # - Альбуин
+ # - Александр
+ # - Альхазред
+ # - Амрен
+ # - Андре
+ # - Андреас
+ # - аневрин
+ # - Анджело
+ # - Ансель
+ # - Арес
+ # - Армон
+ # - Арнет
+ # - Аррик
+ # - Эш
+ # - Аспен
+ # - Атлас
+ # - Август
+ # - Аксель
+ # - Баральд
+ # - Барретт
+ # - Бэзил
+ # - Бастиан
+ # - Бакстер
+ # - Бен
+ # - Бенджамин
+ # - Бенни
+ # - Бертольд
+ # - Блейк
+ # - Бо
+ # - Болган
+ # - Боше
+ # - Брут
+ # - Бак
+ # - Каден
+ # - Кадог
+ # - Целум
+ # - Кальвин
+ # - Камю
+ # - Карадок
+ # - Картер
+ # - Кейси
+ # - Каспар
+ # - Кастор
+ # - Кайо
+ # - Седрик
+ # - Чендлер
+ # - Чарльз
+ # - Чарли
+ # - Харон
+ # - Крайст
+ # - Клод
+ # - Клейтон
+ # - Клифтон
+ # - Клайв
+ # - Клайд
+ # - Колби
+ # - Коул
+ # - Колин
+ # - Колтон
+ # - Коннер
+ # - Коннор
+ # - Конор
+ # - Купер
+ # - Крейг
+ # - Кертис
+ # - Дейн
+ # - Даннан
+ # - Деймос
+ # - Деннис
+ # - Дерек
+ # - Дерион
+ # - Деррик
+ # - Дэрин
+ # - Десмонд
+ # - Дитмар
+ # - Панихида
+ # - Доминик
+ # - Дон
+ # - Дрейвен
+ # - Дуэйн
+ # - герцог
+ # - Дунстан
+ # - Дилан
+ # - Экхард
+ # - Экхарт
+ # - Эдгар
+ # - Эльфин
+ # - Эмануэль
+ # - Эмбри
+ # - Эмери
+ # - Эрик
+ # - Эрнст
+ # - Фердинанд
+ # - Финч
+ # - Финн
+ # - флик
+ # - Флинт
+ # - Флориан
+ # - Флойд
+ # - Фрэнсис
+ # - Франц
+ # - Финн
+ # - Гай
+ # - Гаррет
+ # - Гарске
+ # - Гэри
+ # - Гэвин
+ # - Гэвнер
+ # - Жером
+ # - Геррант
+ # - Гирахим
+ # - Джиллиан
+ # - Глен
+ # - Гордон
+ # - Горудо
+ # - Грант
+ # - Грифон
+ # - Грум
+ # - Хэл
+ # - Ханклин
+ # - Харальд
+ # - Харли
+ # - Хаузер
+ # - Хит
+ # - Гектор
+ # - Хериберт
+ # - Гермес
+ # - Хадсон
+ # - Хьюго
+ # - Охотник
+ # - Хиуэл
+ # - Ингольф
+ # - Иниго
+ # - Иоанн
+ # - Ирвинг
+ # - Исаак
+ # - Исаак
+ # - Ивайло
+ # - Ивер
+ # - Джейкоб
+ # - Хайме
+ # - Джейк
+ # - Джаник
+ # - Джаред
+ # - Джаром
+ # - Ярвальд
+ # - Джейсон
+ # - Хавьер
+ # - Иеремия
+ # - Джером
+ # - Джесси
+ # - Джетт
+ # - Джим
+ # - Джимба
+ # - Джимми
+ # - Джо
+ # - Иона
+ # - Джонс
+ # - Джошуа
+ # - Джошуа
+ # - Джулиан
+ # - Кай
+ # - Калеб
+ # - Кир
+ # - Кеннет
+ # - Кенуэй
+ # - Кеньон
+ # - Кевин
+ # - Кирк
+ # - Клаус
+ # - Кодан
+ # - Конрад
+ # - Кортан
+ # - Курт
+ # - Кайл
+ # - Лэнс
+ # - Приземляться
+ # - Ларк
+ # - Ларри
+ # - Ларс
+ # - Леандер
+ # - Леннард
+ # - Лео
+ # - Лиам
+ # - Линус
+ # - Логан
+ # - Локи
+ # - Лопе
+ # - Лоренц
+ # - Лу
+ # - Луи
+ # - Ловел
+ # - Люк
+ # - Лукас
+ # - Лука
+ # - Люк
+ # - Ликаон
+ # - Магнус
+ # - Майк
+ # - Мануэль
+ # - Марк
+ # - Марион
+ # - Маристон
+ # - Марлоу
+ # - Мармон
+ # - Маршалл
+ # - Мартин
+ # - Мартин
+ # - Марвин
+ # - Мейсон
+ # - Матиас
+ # - Мейнорд
+ # - Мейк
+ # - Мельхиор
+ # - Мейер
+ # - Мика
+ # - Майкл
+ # - Митчелл
+ # - Мо
+ # - Мордехай
+ # - Мортен
+ # - Моргент
+ # - Натаниэль
+ # - Нерон
+ # - Ник
+ # - Николя
+ # - Нико
+ # - Нильс
+ # - Ной
+ # - Оберон
+ # - Оле
+ # - Оскар
+ # - Осирис
+ # - Осмон
+ # - Остер
+ # - Отсоа
+ # - Отто
+ # - Паркер
+ # - Павел
+ # - Павел
+ # - Перри
+ # - Персей
+ # - Филип
+ # - Филипп
+ # - Пирс
+ # - Портье
+ # - Престон
+ # - Квелии
+ # - Ральф
+ # - Рэндалл
+ # - Рэндольф
+ # - Ранульф
+ # - Рауль
+ # - Рауль
+ # - Читать
+ # - Красный
+ # - Рейн
+ # - Райдиан
+ # - Ридвин
+ # - Рис
+ # - Рико
+ # - Ригель
+ # - Роб
+ # - Робин
+ # - Рокки
+ # - Родерик
+ # - Роджер
+ # - Роланд
+ # - Ролэйн
+ # - Ронистон
+ # - Ронне
+ # - Роско
+ # - Рой
+ # - Руди
+ # - Рукхейм
+ # - Руперт
+ # - Рассел
+ # - Райан
+ # - Самуэль
+ # - Сойер
+ # - Скотт
+ # - Северин
+ # - Шило
+ # - Серебряный
+ # - Сильвестр
+ # - Сириус
+ # - Сланец
+ # - Сол
+ # - Срисколл
+ # - Стефан
+ # - Стивен
+ # - Стерлинг
+ # - Стивен
+ # - Камень
+ # - Салливан
+ # - Тейлор
+ # - Тед
+ # - Тедди
+ # - Терри
+ # - Фемида
+ # - Тео
+ # - Теодор
+ # - Тириус
+ # - Тибарн
+ # - Тим
+ # - Тициан
+ # - Торбен
+ # - Торстен
+ # - Тревор
+ # - Трион
+ # - Тристан
+ # - Троя
+ # - Тристан
+ # - Тернер
+ # - Тибальт
+ # - Тир
+ # - Ульбрехт
+ # - Ульрик
+ # - Валентина
+ # - Валлин
+ # - Файт
+ # - Велвел
+ # - Веспер
+ # - Виктор
+ # - Винсент
+ # - Винзенц
+ # - Вук
+ # - Уолтер
+ # - Уэйн
+ # - Вайцен
+ # - Будут
+ # - Уильям
+ # - Вульфрун
+ # - Ксавер
+ # - Янник
+ # - Йорк
+ # - Зак
+ # - Захария
+ # - Зеб
+ # - Зеграт
\ No newline at end of file
diff --git a/Resources/Prototypes/ADT/Datasets/Names/last_vulp.yml b/Resources/Prototypes/ADT/Datasets/Names/last_vulp.yml
new file mode 100644
index 00000000000..e59e020aaa1
--- /dev/null
+++ b/Resources/Prototypes/ADT/Datasets/Names/last_vulp.yml
@@ -0,0 +1,145 @@
+- type: dataset
+ id: VulpLast
+ values:
+ - Аррейдрим
+ - Линз
+ - Веси Фон Линз
+ - Аррей
+ - Фон Аррей
+ - Линзфлейм
+ - Эсовальд
+ - Эрельхарт
+ - Линзморген
+ - Тайвальд
+ - Эйикорн
+ - Уйсзасмонд
+ - Йаистфойер
+ - Аррейвальд
+ - Туулизильбер
+ - Виндцэль
+ - Вальдгерц
+ - Шаттенфлюгель
+ - Штурммелодие
+ - Вальдшаттен
+ - Виндкланг
+ - Мисзерелюр
+ - Флюсслихт
+ - Нахтзееле
+ - Юкервинд
+ - Айотандер
+ - Визрун
+ - Эсофайр
+ - Эрельсторм
+ - Мисзерелстоун
+ - Касарихок
+ - Тайвашадоу
+ - Эйиклайт
+ - Уйсзасмун
+ - Йаистарт
+ - Фельс
+ - Штарк
+ - Химмель
+ - Штилле
+ - Вурз Фон Хели
+ - Ауге Фон Винд
+ - Флюгель Фон Нахт
+ - Зеель Фон Лихт
+ - Вечтер Фон Флюс
+ - Герц Фон Линд
+ - Шаттен Фон Траум
+ - Волкенфлюг
+ - Доннерлихт
+ - Зонненшаттен
+ - Дэммерунгстраум
+ - Штиллес Вассер
+ - Визенлихт
+ - Гейстеркланг
+ - Небелатем
+ - Дэммерунгсфалл
+ - Штерненпфад
+ - Зильбермонд
+ - Блютенхерц
+ - Вассерфалл
+ - Штерненфлюг
+ - Моргендэммерунг
+ - Шаттенлихт
+ - Гольдфлямме
+ - Мондшаттен
+ - Фойер Флямме
+ - Фон Лихт
+ - Химмель Вехтер
+ - Флюсс Герц
+ - Траумтэнцер
+ - Зонненвинд
+ - Небельфлюсс
+ - Лихтйегер
+ - Штернентраум
+ - Блаттштурм
+ - Зонненлихт
+ - Нахтгесанг
+ - Фойершвинген
+ - Траумфлюсс
+ - Фон Мессер
+ - Зонненкланг
+ - Фламменхерц
+ - Мондшайн
+ - Шаттенвинд
+ - Небеллихт
+ - Флюссфойер
+ - Вальдхерц
+ - Фон Вальдхерц
+ - Виндтэнцер
+ - Нахтзаубер
+ - Моргентау
+ - Зонненфлюгель
+ - Фон Зонненфлюгель
+ - Волкенхерц
+ - Фон Волкенхерц
+ - Шаттентанц
+ - Нахтвинд
+ - Фойершаттен
+ - Троймертанц
+ - Мондшпигель
+ - Зильберлихт
+ - Касаров
+ - Эйиков
+ - Уйсзасзов
+ - Мисзерелов
+ - Арреиов
+ - Тайвасов
+ - Эсоов
+ - Линзов
+ - Айоов
+ - Визов
+ - Эрелов
+ - Йаистов
+ - Фон Мессер
+ - Вонов
+ - Фон Вонов
+ - Хелиов
+ - Туульвинд
+ - Туульиов
+ - Виндов
+ - Туульмессер
+ - Веси'Визов
+ - Мисзелов
+ - Вурзов
+ - Веси'Визвон
+ - Мисзелвурз
+ - Веси'Визмессер
+ - Мисзелхели
+ - Вурзвон
+ - Мессерхели
+ - Фон Мессерхели
+ - Вурзмессер
+ - Фон Вурзмессер
+ - Веси'Визвонмессер
+ - Мисзелвуржели
+ - Веси'Визвонхели
+ - Мисзелвурзмессер
+ - Веси'Визвонвурз
+ - Мисзелвонмессер
+ - Веси'Визвонвурз
+ - Мисзелвонхели
+ - Веси'Визвонхели
+ - Мисзелвонвурз
\ No newline at end of file
diff --git a/Resources/Prototypes/ADT/Entities/Mobs/Species/Vulpkanin.yml b/Resources/Prototypes/ADT/Entities/Mobs/Species/Vulpkanin.yml
new file mode 100644
index 00000000000..80c7f570178
--- /dev/null
+++ b/Resources/Prototypes/ADT/Entities/Mobs/Species/Vulpkanin.yml
@@ -0,0 +1,74 @@
+- type: entity
+ save: false
+ name: Vulpkanin McHands
+ parent: BaseMobSpeciesOrganic
+ id: BaseMobVulpkanin
+ abstract: true
+ components:
+ - type: HumanoidAppearance
+ species: VulpkaninSpecies
+ - type: Body
+ prototype: VulpkaninBody
+ requiredLegs: 2
+ - type: RoarAccent
+ - type: Hunger
+ - type: Thirst
+ - type: Speech
+ speechSounds: Vulpa
+ - type: Vocal
+ sounds:
+ Male: NesMaleVulpa
+ Female: NesFemaleVulpa
+ Unsexed: NesFemaleVulpa
+ - type: Icon
+ sprite: ADT/Mobs/Species/Vulpkanin/parts.rsi
+ state: vulpkanin_m
+ - type: Damageable
+ damageContainer: Biological
+ damageModifierSet: Fur
+ - type: MeleeWeapon
+ hidden: true
+ soundHit:
+ path: /Audio/Weapons/pierce.ogg
+ angle: 30
+ animation: WeaponArcPunch
+ damage:
+ types:
+ Piercing: 5
+ - type: Temperature
+ heatDamageThreshold: 400
+ coldDamageThreshold: 200
+ currentTemperature: 310.15
+ specificHeat: 46
+ coldDamage:
+ types:
+ Cold : 0.1 #per second, scales with temperature & other constants
+ heatDamage:
+ types:
+ Heat : 0.1 #per second, scales with temperature & other constants
+ - type: MovementSpeedModifier
+ baseWalkSpeed : 2.7
+ baseSprintSpeed : 4.6
+ - type: Perishable
+ - type: Sprite
+ netsync: false
+ noRot: true
+ drawdepth: Mobs
+ scale: 0.95, 0.95
+
+- type: entity
+ save: false
+ name: Vulpkanin McHands
+ parent: MobHumanDummy
+ id: MobVulpkaninDummy
+ noSpawn: true
+ description: A dummy vulpkanin meant to be used in character setup.
+ components:
+ - type: HumanoidAppearance
+ species: VulpkaninSpecies
+ - type: Sprite
+ netsync: false
+ noRot: true
+ drawdepth: Mobs
+ scale: 0.95, 0.95
+
diff --git a/Resources/Prototypes/ADT/Entities/Mobs/player/Vulpkanin.yml b/Resources/Prototypes/ADT/Entities/Mobs/player/Vulpkanin.yml
new file mode 100644
index 00000000000..11ef0de7388
--- /dev/null
+++ b/Resources/Prototypes/ADT/Entities/Mobs/player/Vulpkanin.yml
@@ -0,0 +1,51 @@
+- type: entity
+ save: false
+ name: "Вульпканин"
+ parent: BaseMobVulpkanin
+ id: MobVulpkanin
+ components:
+ - type: Inventory
+ speciesId: vulp
+ - type: CombatMode
+ - type: InteractionPopup
+ successChance: 1
+ interactSuccessString: hugging-success-generic
+ interactSuccessSound: /Audio/Effects/thudswoosh.ogg
+ messagePerceivedByOthers: hugging-success-generic-others
+ - type: MindContainer
+ showExamineInfo: true
+ - type: Input
+ context: "human"
+ - type: MobMover
+ - type: InputMover
+ #- type: Vocal
+ # maleScream: /Audio/Voice/Human/malescream_1.ogg
+ #femaleScream: /Audio/Voice/Human/femalescream_2.ogg
+ - type: Alerts
+ - type: Eye
+ - type: CameraRecoil
+ - type: Examiner
+ - type: CanHostGuardian
+ - type: NpcFactionMember
+ factions:
+ - NanoTrasen
+ - type: Respirator
+ damage:
+ types:
+ Asphyxiation: 1.0
+ damageRecovery:
+ types:
+ Asphyxiation: -1.0
+ # Frontier - languages mechanic
+ - type: LanguageSpeaker
+ speaks:
+ - GalacticCommon
+ - Canilunzt
+ understands:
+ - GalacticCommon
+ - Canilunzt
+ - type: SizeAttributeWhitelist # Frontier
+ tall: true
+ tallscale: 1.1
+ short: true
+ shortscale: 0.9
diff --git a/Resources/Prototypes/ADT/Polymorphs/polymorphs.yml b/Resources/Prototypes/ADT/Polymorphs/polymorphs.yml
new file mode 100644
index 00000000000..f781310f7b7
--- /dev/null
+++ b/Resources/Prototypes/ADT/Polymorphs/polymorphs.yml
@@ -0,0 +1,10 @@
+- type: polymorph
+ id: ADTWizardForcedVulpkanin
+ configuration:
+ entity: MobVulpkanin
+ forced: true
+ inventory: None
+ transferName: true
+ transferDamage: true
+ revertOnCrit: false
+ revertOnDeath: true
\ No newline at end of file
diff --git a/Resources/Prototypes/ADT/Species/Vulpkanin.yml b/Resources/Prototypes/ADT/Species/Vulpkanin.yml
new file mode 100644
index 00000000000..c1f871930c4
--- /dev/null
+++ b/Resources/Prototypes/ADT/Species/Vulpkanin.yml
@@ -0,0 +1,146 @@
+- type: species
+ id: VulpkaninSpecies
+ name: species-name-vulpkanin
+ roundStart: true #can player role
+ prototype: MobVulpkanin
+ sprites: MobVulpkaninSprites
+ markingLimits: MobVulpkaninMarkingLimits
+ dollPrototype: MobVulpkaninDummy
+ skinColoration: Hues
+ maleFirstNames: firstMaleVulp # ADT-LastnameGender
+ femaleFirstNames: firstFemaleVulp # ADT-LastnameGender
+ maleLastNames: VulpLast # ADT-LastnameGender
+ femaleLastNames: VulpLast # ADT-LastnameGender
+ naming: firstlast
+
+- type: speciesBaseSprites
+ id: MobVulpkaninSprites
+ sprites:
+ Head: MobVulpkaninHead
+ Hair: MobHumanoidAnyMarking
+ FacialHair: MobHumanoidAnyMarking
+ Chest: MobVulpkaninTorso
+ Eyes: MobVulpkaninEyes
+ LArm: MobVulpkaninLArm
+ RArm: MobVulpkaninRArm
+ LHand: MobVulpkaninLHand
+ RHand: MobVulpkaninRHand
+ LLeg: MobVulpkaninLLeg
+ RLeg: MobVulpkaninRLeg
+ LFoot: MobVulpkaninLFoot
+ RFoot: MobVulpkaninRFoot
+ Tail: MobVulpkaninTail
+
+- type: markingPoints
+ id: MobVulpkaninMarkingLimits
+ onlyWhitelisted: true
+ points:
+ Hair:
+ points: 1
+ required: false
+ Chest:
+ points: 1
+ required: false
+ Tail:
+ points: 1
+ required: false
+ Head:
+ points: 4
+ required: false
+- type: humanoidBaseSprite
+ id: MobVulpkaninEyes
+ baseSprite:
+ sprite: ADT/Mobs/Customization/Vulpkanin/vulp_eyes.rsi
+ state: vulpkanin_eyes_s
+
+- type: humanoidBaseSprite
+ id: MobVulpkaninTail
+ baseSprite:
+ sprite: ADT/Mobs/Species/Vulpkanin/parts.rsi
+ state: tail_m
+
+- type: humanoidBaseSprite
+ id: MobVulpkaninHead
+ baseSprite:
+ sprite: ADT/Mobs/Species/Vulpkanin/parts.rsi
+ state: head_m
+
+- type: humanoidBaseSprite
+ id: MobVulpkaninHeadMale
+ baseSprite:
+ sprite: ADT/Mobs/Species/Vulpkanin/parts.rsi
+ state: head_m
+
+- type: humanoidBaseSprite
+ id: MobVulpkaninHeadFemale
+ baseSprite:
+ sprite: ADT/Mobs/Species/Vulpkanin/parts.rsi
+ state: head_f
+
+- type: humanoidBaseSprite
+ id: MobVulpkaninTorso
+ baseSprite:
+ sprite: ADT/Mobs/Species/Vulpkanin/parts.rsi
+ state: torso_m
+
+- type: humanoidBaseSprite
+ id: MobVulpkaninTorsoMale
+ baseSprite:
+ sprite: ADT/Mobs/Species/Vulpkanin/parts.rsi
+ state: torso_m
+
+- type: humanoidBaseSprite
+ id: MobVulpkaninTorsoFemale
+ baseSprite:
+ sprite: ADT/Mobs/Species/Vulpkanin/parts.rsi
+ state: torso_f
+
+- type: humanoidBaseSprite
+ id: MobVulpkaninLLeg
+ baseSprite:
+ sprite: ADT/Mobs/Species/Vulpkanin/parts.rsi
+ state: l_leg
+
+- type: humanoidBaseSprite
+ id: MobVulpkaninLArm
+ baseSprite:
+ sprite: ADT/Mobs/Species/Vulpkanin/parts.rsi
+ state: l_arm
+
+- type: humanoidBaseSprite
+ id: MobVulpkaninLHand
+ baseSprite:
+ sprite: ADT/Mobs/Species/Vulpkanin/parts.rsi
+ state: l_hand
+
+- type: humanoidBaseSprite
+ id: MobVulpkaninLFoot
+ baseSprite:
+ sprite: ADT/Mobs/Species/Vulpkanin/parts.rsi
+ state: l_foot
+
+- type: humanoidBaseSprite
+ id: MobVulpkaninRLeg
+ baseSprite:
+ sprite: ADT/Mobs/Species/Vulpkanin/parts.rsi
+ state: r_leg
+
+- type: humanoidBaseSprite
+ id: MobVulpkaninRArm
+ baseSprite:
+ sprite: ADT/Mobs/Species/Vulpkanin/parts.rsi
+ state: r_arm
+
+- type: humanoidBaseSprite
+ id: MobVulpkaninRHand
+ baseSprite:
+ sprite: ADT/Mobs/Species/Vulpkanin/parts.rsi
+ state: r_hand
+
+- type: humanoidBaseSprite
+ id: MobVulpkaninRFoot
+ baseSprite:
+ sprite: ADT/Mobs/Species/Vulpkanin/parts.rsi
+ state: r_foot
+
+#
\ No newline at end of file
diff --git a/Resources/Prototypes/ADT/Species/fill.txt b/Resources/Prototypes/ADT/Species/fill.txt
deleted file mode 100644
index b4954caf47d..00000000000
--- a/Resources/Prototypes/ADT/Species/fill.txt
+++ /dev/null
@@ -1 +0,0 @@
-# Данный файл существует по причине того что Githab плохо дружит с пустыми папками, при работе с этой папкой этот файл можно спокойно удалить
\ No newline at end of file
diff --git a/Resources/Prototypes/Corvax/Body/Organs/vulpkanin.yml b/Resources/Prototypes/Corvax/Body/Organs/vulpkanin.yml
index 90eb4e6deaa..b4c6e43d4db 100644
--- a/Resources/Prototypes/Corvax/Body/Organs/vulpkanin.yml
+++ b/Resources/Prototypes/Corvax/Body/Organs/vulpkanin.yml
@@ -1,10 +1,10 @@
-- type: entity
- id: OrganVulpkaninStomach
- parent: OrganAnimalStomach
- noSpawn: true
- components:
- - type: Stomach
- - type: SolutionContainerManager
- solutions:
- stomach:
- maxVol: 50.0
+#- type: entity
+# id: OrganVulpkaninStomach
+# parent: OrganAnimalStomach
+# noSpawn: true
+# components:
+# - type: Stomach
+# - type: SolutionContainerManager
+# solutions:
+# stomach:
+# maxVol: 50.0
diff --git a/Resources/Prototypes/Corvax/Body/Parts/vulpkanin.yml b/Resources/Prototypes/Corvax/Body/Parts/vulpkanin.yml
index 5dc4bcef418..0553ccfe3ce 100644
--- a/Resources/Prototypes/Corvax/Body/Parts/vulpkanin.yml
+++ b/Resources/Prototypes/Corvax/Body/Parts/vulpkanin.yml
@@ -1,125 +1,125 @@
-# TODO: Add descriptions (many)
-# TODO BODY: Part damage
-- type: entity
- id: PartVulpkanin
- parent: [BaseItem, BasePart]
- name: "vulpkanin body part"
- abstract: true
- components:
- - type: Extractable
- juiceSolution:
- reagents:
- - ReagentId: Fat
- Quantity: 3
- - ReagentId: Blood
- Quantity: 10
+# # TODO: Add descriptions (many) ADT Comment
+# # TODO BODY: Part damage
+# - type: entity
+# id: PartVulpkanin
+# parent: [BaseItem, BasePart]
+# name: "vulpkanin body part"
+# abstract: true
+# components:
+# - type: Extractable
+# juiceSolution:
+# reagents:
+# - ReagentId: Fat
+# Quantity: 3
+# - ReagentId: Blood
+# Quantity: 10
-- type: entity
- id: TorsoVulpkanin
- name: "vulpkanin torso"
- parent: [PartVulpkanin, BaseTorso]
- components:
- - type: Sprite
- sprite: Corvax/Mobs/Species/Vulpkanin/parts.rsi
- state: "torso_m"
- - type: Extractable
- juiceSolution:
- reagents:
- - ReagentId: Fat
- Quantity: 10
- - ReagentId: Blood
- Quantity: 20
+# - type: entity
+# id: TorsoVulpkanin
+# name: "vulpkanin torso"
+# parent: [PartVulpkanin, BaseTorso]
+# components:
+# - type: Sprite
+# sprite: Corvax/Mobs/Species/Vulpkanin/parts.rsi
+# state: "torso_m"
+# - type: Extractable
+# juiceSolution:
+# reagents:
+# - ReagentId: Fat
+# Quantity: 10
+# - ReagentId: Blood
+# Quantity: 20
-- type: entity
- id: HeadVulpkanin
- name: "vulpkanin head"
- parent: [PartVulpkanin, BaseHead]
- components:
- - type: Sprite
- sprite: Corvax/Mobs/Species/Vulpkanin/parts.rsi
- state: "head_m"
- - type: Extractable
- juiceSolution:
- reagents:
- - ReagentId: Fat
- Quantity: 5
- - ReagentId: Blood
- Quantity: 10
+# - type: entity
+# id: HeadVulpkanin
+# name: "vulpkanin head"
+# parent: [PartVulpkanin, BaseHead]
+# components:
+# - type: Sprite
+# sprite: Corvax/Mobs/Species/Vulpkanin/parts.rsi
+# state: "head_m"
+# - type: Extractable
+# juiceSolution:
+# reagents:
+# - ReagentId: Fat
+# Quantity: 5
+# - ReagentId: Blood
+# Quantity: 10
-- type: entity
- id: LeftArmVulpkanin
- name: "left vulpkanin arm"
- parent: [PartVulpkanin, BaseLeftArm]
- components:
- - type: Sprite
- sprite: Corvax/Mobs/Species/Vulpkanin/parts.rsi
- state: "l_arm"
+# - type: entity
+# id: LeftArmVulpkanin
+# name: "left vulpkanin arm"
+# parent: [PartVulpkanin, BaseLeftArm]
+# components:
+# - type: Sprite
+# sprite: Corvax/Mobs/Species/Vulpkanin/parts.rsi
+# state: "l_arm"
-- type: entity
- id: RightArmVulpkanin
- name: "right vulpkanin arm"
- parent: [PartVulpkanin, BaseRightArm]
- components:
- - type: Sprite
- sprite: Corvax/Mobs/Species/Vulpkanin/parts.rsi
- state: "r_arm"
+# - type: entity
+# id: RightArmVulpkanin
+# name: "right vulpkanin arm"
+# parent: [PartVulpkanin, BaseRightArm]
+# components:
+# - type: Sprite
+# sprite: Corvax/Mobs/Species/Vulpkanin/parts.rsi
+# state: "r_arm"
-- type: entity
- id: LeftHandVulpkanin
- name: "left vulpkanin hand"
- parent: [PartVulpkanin, BaseLeftHand]
- components:
- - type: Sprite
- sprite: Corvax/Mobs/Species/Vulpkanin/parts.rsi
- state: "l_hand"
+# - type: entity
+# id: LeftHandVulpkanin
+# name: "left vulpkanin hand"
+# parent: [PartVulpkanin, BaseLeftHand]
+# components:
+# - type: Sprite
+# sprite: Corvax/Mobs/Species/Vulpkanin/parts.rsi
+# state: "l_hand"
-- type: entity
- id: RightHandVulpkanin
- name: "right vulpkanin hand"
- parent: [PartVulpkanin, BaseRightHand]
- components:
- - type: Sprite
- sprite: Corvax/Mobs/Species/Vulpkanin/parts.rsi
- state: "r_hand"
+# - type: entity
+# id: RightHandVulpkanin
+# name: "right vulpkanin hand"
+# parent: [PartVulpkanin, BaseRightHand]
+# components:
+# - type: Sprite
+# sprite: Corvax/Mobs/Species/Vulpkanin/parts.rsi
+# state: "r_hand"
-- type: entity
- id: LeftLegVulpkanin
- name: "left vulpkanin leg"
- parent: [PartVulpkanin, BaseLeftLeg]
- components:
- - type: Sprite
- sprite: Corvax/Mobs/Species/Vulpkanin/parts.rsi
- state: "l_leg"
- - type: MovementBodyPart
- walkSpeed : 2.7
- sprintSpeed : 4.5
+# - type: entity
+# id: LeftLegVulpkanin
+# name: "left vulpkanin leg"
+# parent: [PartVulpkanin, BaseLeftLeg]
+# components:
+# - type: Sprite
+# sprite: Corvax/Mobs/Species/Vulpkanin/parts.rsi
+# state: "l_leg"
+# - type: MovementBodyPart
+# walkSpeed : 2.7
+# sprintSpeed : 4.5
-- type: entity
- id: RightLegVulpkanin
- name: "right vulpkanin leg"
- parent: [PartVulpkanin, BaseRightLeg]
- components:
- - type: Sprite
- sprite: Corvax/Mobs/Species/Vulpkanin/parts.rsi
- state: "r_leg"
- - type: MovementBodyPart
- walkSpeed : 2.7
- sprintSpeed : 4.5
+# - type: entity
+# id: RightLegVulpkanin
+# name: "right vulpkanin leg"
+# parent: [PartVulpkanin, BaseRightLeg]
+# components:
+# - type: Sprite
+# sprite: Corvax/Mobs/Species/Vulpkanin/parts.rsi
+# state: "r_leg"
+# - type: MovementBodyPart
+# walkSpeed : 2.7
+# sprintSpeed : 4.5
-- type: entity
- id: LeftFootVulpkanin
- name: "left vulpkanin foot"
- parent: [PartVulpkanin, BaseLeftFoot]
- components:
- - type: Sprite
- sprite: Corvax/Mobs/Species/Vulpkanin/parts.rsi
- state: "l_foot"
+# - type: entity
+# id: LeftFootVulpkanin
+# name: "left vulpkanin foot"
+# parent: [PartVulpkanin, BaseLeftFoot]
+# components:
+# - type: Sprite
+# sprite: Corvax/Mobs/Species/Vulpkanin/parts.rsi
+# state: "l_foot"
-- type: entity
- id: RightFootVulpkanin
- name: "right vulpkanin foot"
- parent: [PartVulpkanin, BaseRightFoot]
- components:
- - type: Sprite
- sprite: Corvax/Mobs/Species/Vulpkanin/parts.rsi
- state: "r_foot"
+# - type: entity
+# id: RightFootVulpkanin
+# name: "right vulpkanin foot"
+# parent: [PartVulpkanin, BaseRightFoot]
+# components:
+# - type: Sprite
+# sprite: Corvax/Mobs/Species/Vulpkanin/parts.rsi
+# state: "r_foot"
diff --git a/Resources/Prototypes/Corvax/Body/Prototypes/vulpkanin.yml b/Resources/Prototypes/Corvax/Body/Prototypes/vulpkanin.yml
index df3f5d708d4..7f404702b6a 100644
--- a/Resources/Prototypes/Corvax/Body/Prototypes/vulpkanin.yml
+++ b/Resources/Prototypes/Corvax/Body/Prototypes/vulpkanin.yml
@@ -1,49 +1,49 @@
-- type: body
- name: "vulpkanin"
- id: Vulpkanin
- root: torso
- slots:
- head:
- part: HeadVulpkanin
- connections:
- - torso
- organs:
- brain: OrganHumanBrain
- eyes: OrganHumanEyes
- torso:
- part: TorsoVulpkanin
- organs:
- heart: OrganAnimalHeart
- lungs: OrganHumanLungs
- stomach: OrganVulpkaninStomach
- liver: OrganAnimalLiver
- kidneys: OrganHumanKidneys
- connections:
- - right_arm
- - left_arm
- - right_leg
- - left_leg
- right_arm:
- part: RightArmVulpkanin
- connections:
- - right_hand
- left_arm:
- part: LeftArmVulpkanin
- connections:
- - left_hand
- right_hand:
- part: RightHandVulpkanin
- left_hand:
- part: LeftHandVulpkanin
- right_leg:
- part: RightLegVulpkanin
- connections:
- - right_foot
- left_leg:
- part: LeftLegVulpkanin
- connections:
- - left_foot
- right_foot:
- part: RightFootVulpkanin
- left_foot:
- part: LeftFootVulpkanin
+#- type: body ADT Comment
+# name: "vulpkanin"
+# id: Vulpkanin
+# root: torso
+# slots:
+# head:
+# part: HeadVulpkanin
+# connections:
+# - torso
+# organs:
+# brain: OrganHumanBrain
+# eyes: OrganHumanEyes
+# torso:
+# part: TorsoVulpkanin
+# organs:
+# heart: OrganAnimalHeart
+# lungs: OrganHumanLungs
+# stomach: OrganVulpkaninStomach
+# liver: OrganAnimalLiver
+# kidneys: OrganHumanKidneys
+# connections:
+# - right_arm
+# - left_arm
+# - right_leg
+# - left_leg
+# right_arm:
+# part: RightArmVulpkanin
+# connections:
+# - right_hand
+# left_arm:
+# part: LeftArmVulpkanin
+# connections:
+# - left_hand
+# right_hand:
+# part: RightHandVulpkanin
+# left_hand:
+# part: LeftHandVulpkanin
+# right_leg:
+# part: RightLegVulpkanin
+# connections:
+# - right_foot
+# left_leg:
+# part: LeftLegVulpkanin
+# connections:
+# - left_foot
+# right_foot:
+# part: RightFootVulpkanin
+# left_foot:
+# part: LeftFootVulpkanin
diff --git a/Resources/Prototypes/Corvax/Entities/Mobs/Player/vulpkanin.yml b/Resources/Prototypes/Corvax/Entities/Mobs/Player/vulpkanin.yml
index e917e972700..6162e1733b8 100644
--- a/Resources/Prototypes/Corvax/Entities/Mobs/Player/vulpkanin.yml
+++ b/Resources/Prototypes/Corvax/Entities/Mobs/Player/vulpkanin.yml
@@ -1,5 +1,5 @@
-- type: entity
- save: false
- name: Urist McVulp
- parent: [BaseMobVulpkanin, BaseMob]
- id: MobVulpkanin
+#- type: entity
+ # save: false
+ #name: Urist McVulp
+ #parent: [BaseMobVulpkanin, BaseMob]
+ #id: MobVulpkanin
diff --git a/Resources/Prototypes/Corvax/Entities/Mobs/Species/vulpkanin.yml b/Resources/Prototypes/Corvax/Entities/Mobs/Species/vulpkanin.yml
index 3e18d5ec777..da673a32d07 100644
--- a/Resources/Prototypes/Corvax/Entities/Mobs/Species/vulpkanin.yml
+++ b/Resources/Prototypes/Corvax/Entities/Mobs/Species/vulpkanin.yml
@@ -1,74 +1,74 @@
-- type: entity
- save: false
- name: Urist McVulp
- parent: BaseMobSpeciesOrganic
- id: BaseMobVulpkanin
- abstract: true
- components:
- - type: HumanoidAppearance
- species: Vulpkanin
- - type: Hunger # on 1.5x more
- thresholds:
- Overfed: 250
- Okay: 200
- Peckish: 150
- Starving: 100
- Dead: 0
- baseDecayRate: 0.02
- - type: Thirst # on 1.5x more
- thresholds:
- OverHydrated: 650
- Okay: 500
- Thirsty: 350
- Parched: 200
- Dead: 0
- baseDecayRate: 0.15
- - type: Icon
- sprite: Corvax/Mobs/Species/Vulpkanin/parts.rsi
- state: full
- - type: Body
- prototype: Vulpkanin
- requiredLegs: 2
- - type: Inventory
- speciesId: reptilian # whyyy
- - type: ContentEye
- targetZoom: "1.125, 1.125"
- maxZoom: "1.125, 1.125"
- - type: Speech
- allowedEmotes: ['Howl', 'Growl']
- - type: Vocal
- sounds:
- Male: MaleVulpkanin
- Female: FemaleVulpkanin
- Unsexed: MaleVulpkanin
- - type: GrowlingAccent
- - type: MeleeWeapon
- animation: WeaponArcClaw
- soundHit:
- collection: AlienClaw
- damage:
- types:
- Slash: 5
- - type: LightweightDrunk
- - type: Damageable
- damageContainer: Biological
- damageModifierSet: Vulpkanin
- - type: Respirator
- damage:
- types:
- Asphyxiation: 2.0
- damageRecovery:
- types:
- Asphyxiation: -2.0
- - type: Wagging
+#- type: entity
+ # save: false
+ # name: Urist McVulp
+ # parent: BaseMobSpeciesOrganic
+ # id: BaseMobVulpkanin
+ # abstract: true
+ # components:
+ # - type: HumanoidAppearance
+ # species: Vulpkanin
+ # - type: Hunger # on 1.5x more
+ # thresholds:
+ # Overfed: 250
+ # Okay: 200
+ # Peckish: 150
+ # Starving: 100
+ # Dead: 0
+ # baseDecayRate: 0.02
+ # - type: Thirst # on 1.5x more
+ # thresholds:
+ # OverHydrated: 650
+ # Okay: 500
+ # Thirsty: 350
+ # Parched: 200
+ # Dead: 0
+ # baseDecayRate: 0.15
+ # - type: Icon
+ # sprite: Corvax/Mobs/Species/Vulpkanin/parts.rsi
+ # state: full
+ # - type: Body
+ # prototype: Vulpkanin
+ # requiredLegs: 2
+ # - type: Inventory
+ # speciesId: reptilian # whyyy
+ # - type: ContentEye
+ # targetZoom: "1.125, 1.125"
+ # maxZoom: "1.125, 1.125"
+ # - type: Speech
+ # allowedEmotes: ['Howl', 'Growl']
+ # - type: Vocal
+ # sounds:
+ # Male: MaleVulpkanin
+ # Female: FemaleVulpkanin
+ # Unsexed: MaleVulpkanin
+ # - type: GrowlingAccent
+ # - type: MeleeWeapon
+ # animation: WeaponArcClaw
+ # soundHit:
+ # collection: AlienClaw
+ # damage:
+ # types:
+ # Slash: 5
+ #- type: LightweightDrunk
+ #- type: Damageable
+ # damageContainer: Biological
+ # damageModifierSet: Vulpkanin
+ #- type: Respirator
+ # damage:
+ # types:
+ # Asphyxiation: 2.0
+ # damageRecovery:
+ # types:
+ # Asphyxiation: -2.0
+ #- type: Wagging
-- type: entity
- save: false
- name: Urist McHands
- parent: MobHumanDummy
- id: MobVulpkaninDummy
- noSpawn: true
- description: A dummy vulpkanin meant to be used in character setup.
- components:
- - type: HumanoidAppearance
- species: Vulpkanin
+#- type: entity
+# save: false
+# name: Urist McHands
+# parent: MobHumanDummy
+# id: MobVulpkaninDummy
+# noSpawn: true
+# description: A dummy vulpkanin meant to be used in character setup.
+# components:
+# - type: HumanoidAppearance
+# species: Vulpkanin
diff --git a/Resources/Prototypes/Corvax/Species/vulpkanin.yml b/Resources/Prototypes/Corvax/Species/vulpkanin.yml
index b58098a379f..b4b41995b35 100644
--- a/Resources/Prototypes/Corvax/Species/vulpkanin.yml
+++ b/Resources/Prototypes/Corvax/Species/vulpkanin.yml
@@ -1,144 +1,290 @@
-- type: species
- id: Vulpkanin
- name: species-name-vulpkanin
- roundStart: true
- prototype: MobVulpkanin
- sprites: MobVulpkaninSprites
- defaultSkinTone: "#eb943d"
- markingLimits: MobVulpkaninMarkingLimits
- dollPrototype: MobVulpkaninDummy
- skinColoration: Hues
- maleFirstNames: names_vulp_first_male
- femaleFirstNames: names_vulp_first_female
- maleLastNames: names_vulp_last # Corvax-LastnameGender
- femaleLastNames: names_vulp_last # Corvax-LastnameGender
-
-- type: speciesBaseSprites
- id: MobVulpkaninSprites
- sprites:
- Head: MobVulpkaninHead
- Hair: MobHumanoidAnyMarking
- FacialHair: MobHumanoidAnyMarking
- Snout: MobHumanoidAnyMarking
- Chest: MobVulpkaninTorso
- HeadTop: MobHumanoidAnyMarking
- HeadSide: MobHumanoidAnyMarking
- Tail: MobHumanoidAnyMarking
- Eyes: MobHumanoidEyes
- LArm: MobVulpkaninLArm
- RArm: MobVulpkaninRArm
- LHand: MobVulpkaninLHand
- RHand: MobVulpkaninRHand
- LLeg: MobVulpkaninLLeg
- RLeg: MobVulpkaninRLeg
- LFoot: MobVulpkaninLFoot
- RFoot: MobVulpkaninRFoot
-
-- type: markingPoints
- id: MobVulpkaninMarkingLimits
- points:
- Hair:
- points: 1
- required: false
- FacialHair:
- points: 0
- required: false
- Tail:
- points: 1
- required: true
- defaultMarkings: [ FoxTail ]
- Snout:
- points: 1
- required: true
- defaultMarkings: [ FoxSnout ]
- HeadTop:
- points: 1
- required: true
- defaultMarkings: [ FoxEar ]
- HeadSide:
- points: 1
- required: false
-
-- type: humanoidBaseSprite
- id: MobVulpkaninHead
- baseSprite:
- sprite: Corvax/Mobs/Species/Vulpkanin/parts.rsi
- state: head_m
-
-- type: humanoidBaseSprite
- id: MobVulpkaninHeadMale
- baseSprite:
- sprite: Corvax/Mobs/Species/Vulpkanin/parts.rsi
- state: head_m
-
-- type: humanoidBaseSprite
- id: MobVulpkaninHeadFemale
- baseSprite:
- sprite: Corvax/Mobs/Species/Vulpkanin/parts.rsi
- state: head_f
-
-- type: humanoidBaseSprite
- id: MobVulpkaninTorso
- baseSprite:
- sprite: Corvax/Mobs/Species/Vulpkanin/parts.rsi
- state: torso_m
-
-- type: humanoidBaseSprite
- id: MobVulpkaninTorsoMale
- baseSprite:
- sprite: Corvax/Mobs/Species/Vulpkanin/parts.rsi
- state: torso_m
-
-- type: humanoidBaseSprite
- id: MobVulpkaninTorsoFemale
- baseSprite:
- sprite: Corvax/Mobs/Species/Vulpkanin/parts.rsi
- state: torso_f
-
-- type: humanoidBaseSprite
- id: MobVulpkaninLLeg
- baseSprite:
- sprite: Corvax/Mobs/Species/Vulpkanin/parts.rsi
- state: l_leg
-
-- type: humanoidBaseSprite
- id: MobVulpkaninLHand
- baseSprite:
- sprite: Corvax/Mobs/Species/Vulpkanin/parts.rsi
- state: l_hand
-
-- type: humanoidBaseSprite
- id: MobVulpkaninLArm
- baseSprite:
- sprite: Corvax/Mobs/Species/Vulpkanin/parts.rsi
- state: l_arm
-
-- type: humanoidBaseSprite
- id: MobVulpkaninLFoot
- baseSprite:
- sprite: Corvax/Mobs/Species/Vulpkanin/parts.rsi
- state: l_foot
-
-- type: humanoidBaseSprite
- id: MobVulpkaninRLeg
- baseSprite:
- sprite: Corvax/Mobs/Species/Vulpkanin/parts.rsi
- state: r_leg
-
-- type: humanoidBaseSprite
- id: MobVulpkaninRHand
- baseSprite:
- sprite: Corvax/Mobs/Species/Vulpkanin/parts.rsi
- state: r_hand
-
-- type: humanoidBaseSprite
- id: MobVulpkaninRArm
- baseSprite:
- sprite: Corvax/Mobs/Species/Vulpkanin/parts.rsi
- state: r_arm
-
-- type: humanoidBaseSprite
- id: MobVulpkaninRFoot
- baseSprite:
- sprite: Corvax/Mobs/Species/Vulpkanin/parts.rsi
- state: r_foot
+#- type: species
+ # id: Vulpkanin
+ #name: species-name-vulpkanin
+ #roundStart: true
+ #sponsorOnly: true # Corvax-Sponsors
+ #prototype: MobVulpkanin
+ #sprites: MobVulpkaninSprites
+ #defaultSkinTone: "#eb943d"
+ #markingLimits: MobVulpkaninMarkingLimits
+ #dollPrototype: MobVulpkaninDummy
+ #skinColoration: Hues
+ #maleFirstNames: names_vulp_first_male
+ #femaleFirstNames: names_vulp_first_female
+ #maleLastNames: names_vulp_last # Corvax-LastnameGender
+ #femaleLastNames: names_vulp_last # Corvax-LastnameGender
+
+#- type: speciesBaseSprites
+ # id: MobVulpkaninSprites
+ # sprites:
+ # Head: MobVulpkaninHead
+ # Hair: MobHumanoidAnyMarking
+ #FacialHair: MobHumanoidAnyMarking
+ #Snout: MobHumanoidAnyMarking
+ #Chest: MobVulpkaninTorso
+ #HeadTop: MobHumanoidAnyMarking
+ #HeadSide: MobHumanoidAnyMarking
+ #Tail: MobHumanoidAnyMarking
+ #Eyes: MobHumanoidEyes
+ #LArm: MobVulpkaninLArm
+ #RArm: MobVulpkaninRArm
+ #LHand: MobVulpkaninLHand
+ #RHand: MobVulpkaninRHand
+ #LLeg: MobVulpkaninLLeg
+ #RLeg: MobVulpkaninRLeg
+ #LFoot: MobVulpkaninLFoot
+ #RFoot: MobVulpkaninRFoot
+
+#- type: markingPoints
+ # id: MobVulpkaninMarkingLimits
+ # points:
+ # Hair:
+ # points: 1
+ # required: false
+ # FacialHair:
+ # points: 0
+ # required: false
+ # Tail:
+ # points: 1
+ # required: true
+ # defaultMarkings: [ FoxTail ]
+ # Snout:
+ # points: 1
+ # required: true
+ # defaultMarkings: [ FoxSnout ]
+ # HeadTop:
+ # points: 1
+ # required: true
+ # defaultMarkings: [ FoxEar ]
+ # HeadSide:
+ # points: 1
+# required: false
+
+#- type: humanoidBaseSprite
+# id: MobVulpkaninHead
+# baseSprite:
+# sprite: Corvax/Mobs/Species/Vulpkanin/parts.rsi
+# state: head_m
+
+#- type: humanoidBaseSprite
+# id: MobVulpkaninHeadMale
+# baseSprite:
+ # sprite: Corvax/Mobs/Species/Vulpkanin/parts.rsi
+ # state: head_m
+
+#- type: humanoidBaseSprite
+# id: MobVulpkaninHeadFemale
+# baseSprite:
+# sprite: Corvax/Mobs/Species/Vulpkanin/parts.rsi
+# state: head_f
+
+#- type: humanoidBaseSprite
+ # id: MobVulpkaninTorso
+ # baseSprite:
+ # sprite: Corvax/Mobs/Species/Vulpkanin/parts.rsi
+ # state: torso_m
+
+#- type: humanoidBaseSprite
+# id: MobVulpkaninTorsoMale
+# baseSprite:
+# sprite: Corvax/Mobs/Species/Vulpkanin/parts.rsi
+# state: torso_m
+
+#- type: humanoidBaseSprite
+# id: MobVulpkaninTorsoFemale
+ # baseSprite:
+ # sprite: Corvax/Mobs/Species/Vulpkanin/parts.rsi
+ # state: torso_f
+
+#- type: humanoidBaseSprite
+# id: MobVulpkaninLLeg
+# baseSprite:
+# sprite: Corvax/Mobs/Species/Vulpkanin/parts.rsi
+# state: l_leg
+
+#- type: humanoidBaseSprite
+# id: MobVulpkaninLHand
+# baseSprite:
+# sprite: Corvax/Mobs/Species/Vulpkanin/parts.rsi
+# state: l_hand
+
+#- type: humanoidBaseSprite
+# id: MobVulpkaninLArm
+# baseSprite:
+# sprite: Corvax/Mobs/Species/Vulpkanin/parts.rsi
+# state: l_arm
+
+#- type: humanoidBaseSprite
+# id: MobVulpkaninLFoot
+# baseSprite:
+# sprite: Corvax/Mobs/Species/Vulpkanin/parts.rsi
+# state: l_foot
+
+#- type: humanoidBaseSprite
+# id: MobVulpkaninRLeg
+# baseSprite:
+# sprite: Corvax/Mobs/Species/Vulpkanin/parts.rsi
+# state: r_leg
+
+#- type: humanoidBaseSprite
+# id: MobVulpkaninRHand
+# baseSprite:
+# sprite: Corvax/Mobs/Species/Vulpkanin/parts.rsi
+# state: r_hand
+
+#- type: humanoidBaseSprite
+ # id: MobVulpkaninRArm
+ # baseSprite:
+ # sprite: Corvax/Mobs/Species/Vulpkanin/parts.rsi
+ # state: r_arm
+
+#- type: humanoidBaseSprite
+ # id: MobVulpkaninRFoot
+ #baseSprite:
+ # sprite: Corvax/Mobs/Species/Vulpkanin/parts.rsi
+ # state: r_foot
+
+#- type: species
+ # id: Vulpkanin
+ # name: species-name-vulpkanin
+ # roundStart: true
+ # prototype: MobVulpkanin
+ # sprites: MobVulpkaninSprites
+ # defaultSkinTone: "#eb943d"
+ # markingLimits: MobVulpkaninMarkingLimits
+ # dollPrototype: MobVulpkaninDummy
+ # skinColoration: Hues
+ # maleFirstNames: names_vulp_first_male
+ # femaleFirstNames: names_vulp_first_female
+ # maleLastNames: names_vulp_last # Corvax-LastnameGender
+ # femaleLastNames: names_vulp_last # Corvax-LastnameGender
+
+#- type: speciesBaseSprites
+# id: MobVulpkaninSprites
+# sprites:
+# Head: MobVulpkaninHead
+# Hair: MobHumanoidAnyMarking
+# FacialHair: MobHumanoidAnyMarking
+# Snout: MobHumanoidAnyMarking
+# Chest: MobVulpkaninTorso
+# HeadTop: MobHumanoidAnyMarking
+# HeadSide: MobHumanoidAnyMarking
+# Tail: MobHumanoidAnyMarking
+# Eyes: MobHumanoidEyes
+# LArm: MobVulpkaninLArm
+# RArm: MobVulpkaninRArm
+# LHand: MobVulpkaninLHand
+# RHand: MobVulpkaninRHand
+# LLeg: MobVulpkaninLLeg
+# RLeg: MobVulpkaninRLeg
+# LFoot: MobVulpkaninLFoot
+# RFoot: MobVulpkaninRFoot
+
+#- type: markingPoints
+# id: MobVulpkaninMarkingLimits
+# points:
+# Hair:
+# points: 1
+# required: false
+# FacialHair:
+# points: 0
+# required: false
+# Tail:
+# points: 1
+# required: true
+# defaultMarkings: [ FoxTail ]
+# Snout:
+# points: 1
+# required: true
+# defaultMarkings: [ FoxSnout ]
+# HeadTop:
+# points: 1
+# required: true
+# defaultMarkings: [ FoxEar ]
+# HeadSide:
+# points: 1
+# required: false
+
+#- type: humanoidBaseSprite
+# id: MobVulpkaninHead
+# baseSprite:
+# sprite: Corvax/Mobs/Species/Vulpkanin/parts.rsi
+# state: head_m
+
+#- type: humanoidBaseSprite
+# id: MobVulpkaninHeadMale
+# baseSprite:
+# sprite: Corvax/Mobs/Species/Vulpkanin/parts.rsi
+# state: head_m
+
+#- type: humanoidBaseSprite
+# id: MobVulpkaninHeadFemale
+# baseSprite:
+# sprite: Corvax/Mobs/Species/Vulpkanin/parts.rsi
+# state: head_f
+
+#- type: humanoidBaseSprite
+# id: MobVulpkaninTorso
+# baseSprite:
+ # sprite: Corvax/Mobs/Species/Vulpkanin/parts.rsi
+ # state: torso_m
+
+#- type: humanoidBaseSprite
+# id: MobVulpkaninTorsoMale
+# baseSprite:
+# sprite: Corvax/Mobs/Species/Vulpkanin/parts.rsi
+# state: torso_m
+
+#- type: humanoidBaseSprite
+ # id: MobVulpkaninTorsoFemale
+ # baseSprite:
+ # sprite: Corvax/Mobs/Species/Vulpkanin/parts.rsi
+ # state: torso_f
+
+#- type: humanoidBaseSprite
+# id: MobVulpkaninLLeg
+# baseSprite:
+# sprite: Corvax/Mobs/Species/Vulpkanin/parts.rsi
+# state: l_leg
+
+#- type: humanoidBaseSprite
+# id: MobVulpkaninLHand
+# baseSprite:
+# sprite: Corvax/Mobs/Species/Vulpkanin/parts.rsi
+# state: l_hand
+
+#- type: humanoidBaseSprite
+# id: MobVulpkaninLArm
+# baseSprite:
+# sprite: Corvax/Mobs/Species/Vulpkanin/parts.rsi
+# state: l_arm
+
+#- type: humanoidBaseSprite
+# id: MobVulpkaninLFoot
+# baseSprite:
+# sprite: Corvax/Mobs/Species/Vulpkanin/parts.rsi
+# state: l_foot
+
+#- type: humanoidBaseSprite
+# id: MobVulpkaninRLeg
+# baseSprite:
+# sprite: Corvax/Mobs/Species/Vulpkanin/parts.rsi
+# state: r_leg
+
+#- type: humanoidBaseSprite
+# id: MobVulpkaninRHand
+# baseSprite:
+# sprite: Corvax/Mobs/Species/Vulpkanin/parts.rsi
+# state: r_hand
+
+#- type: humanoidBaseSprite
+# id: MobVulpkaninRArm
+# baseSprite:
+# sprite: Corvax/Mobs/Species/Vulpkanin/parts.rsi
+# state: r_arm
+
+#- type: humanoidBaseSprite
+# id: MobVulpkaninRFoot
+# baseSprite:
+# sprite: Corvax/Mobs/Species/Vulpkanin/parts.rsi
+# state: r_foot
diff --git a/Resources/Prototypes/Corvax/Voice/speech_emote_sounds.yml b/Resources/Prototypes/Corvax/Voice/speech_emote_sounds.yml
index b9561c5f943..570e8997801 100644
--- a/Resources/Prototypes/Corvax/Voice/speech_emote_sounds.yml
+++ b/Resources/Prototypes/Corvax/Voice/speech_emote_sounds.yml
@@ -1,68 +1,68 @@
# species
-- type: emoteSounds
- id: MaleVulpkanin
- params:
- variation: 0.125
- sounds:
- Scream:
- collection: MaleScreams
- Laugh:
- collection: MaleLaugh
- Growl:
- collection: Growl
- Howl:
- path: /Audio/Corvax/Effects/howl.ogg
- Sneeze:
- collection: MaleSneezes
- Cough:
- collection: MaleCoughs
- Yawn:
- collection: MaleYawn
- Snore:
- collection: Snores
- Sigh:
- collection: MaleSigh
- Crying:
- collection: MaleCry
- Whistle:
- collection: Whistles
- Weh:
- collection: Weh
- Gasp:
- collection: MaleGasp
- DefaultDeathgasp:
- collection: MaleDeathGasp
+#- type: emoteSounds
+# id: MaleVulpkanin
+# params:
+# variation: 0.125
+# sounds:
+# Scream:
+# collection: MaleScreams
+# Laugh:
+# collection: MaleLaugh
+# Growl:
+# collection: Growl
+# Howl:
+# path: /Audio/Corvax/Effects/howl.ogg
+# Sneeze:
+# collection: MaleSneezes
+# Cough:
+# collection: MaleCoughs
+# Yawn:
+# collection: MaleYawn
+# Snore:
+# collection: Snores
+# Sigh:
+# collection: MaleSigh
+# Crying:
+# collection: MaleCry
+# Whistle:
+# collection: Whistles
+# Weh:
+# collection: Weh
+# Gasp:
+# collection: MaleGasp
+# DefaultDeathgasp:
+# collection: MaleDeathGasp
-- type: emoteSounds
- id: FemaleVulpkanin
- params:
- variation: 0.125
- sounds:
- Scream:
- collection: FemaleScreams
- Laugh:
- collection: FemaleLaugh
- Growl:
- collection: Growl
- Howl:
- path: /Audio/Corvax/Effects/howl.ogg
- Sneeze:
- collection: FemaleSneezes
- Cough:
- collection: FemaleCoughs
- Yawn:
- collection: FemaleYawn
- Snore:
- collection: Snores
- Sigh:
- collection: FemaleSigh
- Crying:
- collection: FemaleCry
- Whistle:
- collection: Whistles
- Weh:
- collection: Weh
- Gasp:
- collection: FemaleGasp
- DefaultDeathgasp:
- collection: FemaleDeathGasp
+#- type: emoteSounds
+# id: FemaleVulpkanin
+# params:
+# variation: 0.125
+# sounds:
+# Scream:
+# collection: FemaleScreams
+# Laugh:
+# collection: FemaleLaugh
+# Growl:
+# collection: Growl
+# Howl:
+# path: /Audio/Corvax/Effects/howl.ogg
+# Sneeze:
+# collection: FemaleSneezes
+# Cough:
+# collection: FemaleCoughs
+# Yawn:
+# collection: FemaleYawn
+# Snore:
+# collection: Snores
+# Sigh:
+# collection: FemaleSigh
+# Crying:
+# collection: FemaleCry
+# Whistle:
+# collection: Whistles
+# Weh:
+# collection: Weh
+# Gasp:
+# collection: FemaleGasp
+# DefaultDeathgasp:
+# collection: FemaleDeathGasp
diff --git a/Resources/Prototypes/Corvax/Voice/speech_emotes.yml b/Resources/Prototypes/Corvax/Voice/speech_emotes.yml
index f5f57734afc..2b32df4ec06 100644
--- a/Resources/Prototypes/Corvax/Voice/speech_emotes.yml
+++ b/Resources/Prototypes/Corvax/Voice/speech_emotes.yml
@@ -1,50 +1,50 @@
-- type: emote
- id: Howl
- name: chat-emote-name-howl
- category: Vocal
- available: false
- icon: Interface/Actions/scream.png
- whitelist:
- components:
- - Vocal
- blacklist:
- components:
- - BorgChassis
- chatMessages: ["chat-emote-msg-howl"]
- chatTriggers:
- - howl
- - howl.
- - howl!
- - howls
- - howls.
- - howls!
- - воет
- - воет.
- - воет!
- - завывает
- - завывает.
- - завывает!
+#- type: emote
+# id: Howl
+# name: chat-emote-name-howl
+# category: Vocal
+# available: false
+# icon: Interface/Actions/scream.png
+# whitelist:
+# components:
+# - Vocal
+# blacklist:
+# components:
+# - BorgChassis
+# chatMessages: ["chat-emote-msg-howl"]
+# chatTriggers:
+# - howl
+# - howl.
+# - howl!
+# - howls
+# - howls.
+# - howls!
+# - воет
+# - воет.
+# - воет!
+# - завывает
+# - завывает.
+# - завывает!
-- type: emote
- id: Growl
- name: chat-emote-name-growl
- category: Vocal
- available: false
- icon: Interface/Actions/scream.png
- whitelist:
- components:
- - Vocal
- blacklist:
- components:
- - BorgChassis
- chatMessages: ["chat-emote-msg-growl"]
- chatTriggers:
- - growl
- - growl.
- - growl!
- - growls
- - growls.
- - growls!
- - рычит
- - рычит.
- - рычит!
+#- type: emote
+# id: Growl
+# name: chat-emote-name-growl
+# category: Vocal
+# available: false
+# icon: Interface/Actions/scream.png
+# whitelist:
+# components:
+# - Vocal
+# blacklist:
+# components:
+# - BorgChassis
+# chatMessages: ["chat-emote-msg-growl"]
+# chatTriggers:
+# - growl
+# - growl.
+# - growl!
+# - growls
+# - growls.
+# - growls!
+# - рычит
+# - рычит.
+# - рычит!
diff --git a/Resources/Prototypes/NES/Entities/Mobs/SpeciesSound/vulpkanin_voice.yml b/Resources/Prototypes/NES/Entities/Mobs/SpeciesSound/vulpkanin_voice.yml
new file mode 100644
index 00000000000..f9b230728f3
--- /dev/null
+++ b/Resources/Prototypes/NES/Entities/Mobs/SpeciesSound/vulpkanin_voice.yml
@@ -0,0 +1,208 @@
+#Для звуков и голосов вульпочек
+
+- type: emote
+ id: VulpHeckaet
+ name: chat-emote-name-heck
+ category: Vocal
+ chatMessages: [хекает]
+ chatTriggers:
+ - кхе
+ - кхе.
+ - хекает
+ - хекает.
+ - отдышка
+ - отдышка.
+
+- type: emote
+ id: VulpHowl
+ name: chat-emote-name-howl
+ category: Vocal
+ chatMessages: [воет]
+ chatTriggers:
+ - воет
+ - воет.
+ - воет!
+
+- type: emote
+ id: VulpWhine
+ name: chat-emote-name-whine
+ category: Vocal
+ chatMessages: [скулит]
+ chatTriggers:
+ - скул
+ - скул.
+ - скул!
+ - скулит
+ - скулит.
+ - скулит!
+
+- type: emote
+ id: VulpBark
+ name: chat-emote-name-bark
+ category: Vocal
+ chatMessages: [лает]
+ chatTriggers:
+ - лает
+ - лает.
+ - лает!
+ - гавкает
+ - гавкает.
+ - гавкает!
+ - гав
+ - гав.
+ - гав!
+ - рявкает
+ - рявкает.
+ - рявкает!
+
+- type: emote
+ id: VulpGrowl
+ name: chat-emote-name-growl
+ category: Vocal
+ chatMessages: [воет]
+ chatTriggers:
+ - рычит
+ - рычит.
+ - рычит!
+
+- type: soundCollection
+ id: NesMaleVulpaScreams
+ files:
+ - /Audio/ADT/Voice/Vulpkanin/growl1.ogg
+ - /Audio/ADT/Voice/Vulpkanin/growl2.ogg
+ - /Audio/ADT/Voice/Vulpkanin/growl3.ogg
+
+- type: soundCollection
+ id: NesFemaleVulpaScreams
+ files:
+ - /Audio/ADT/Voice/Vulpkanin/scream1.ogg
+ - /Audio/ADT/Voice/Vulpkanin/scream2.ogg
+
+- type: soundCollection
+ id: VulpHowls
+ files:
+ - /Audio/ADT/Voice/Vulpkanin/howl.ogg
+
+- type: soundCollection
+ id: VulpBarks
+ files:
+ - /Audio/ADT/Voice/Vulpkanin/bark.ogg
+ - /Audio/ADT/Voice/Doge/dog_bark1.ogg
+ - /Audio/ADT/Voice/Doge/dog_bark2.ogg
+ - /Audio/ADT/Voice/Doge/dog_bark3.ogg
+
+- type: soundCollection
+ id: VulpWhines
+ files:
+ - /Audio/ADT/Voice/Doge/dog_whine.ogg
+
+- type: soundCollection
+ id: VulpGrowls
+ files:
+ - /Audio/ADT/Voice/Doge/dog_growl1.ogg
+ - /Audio/ADT/Voice/Doge/dog_growl2.ogg
+ - /Audio/ADT/Voice/Doge/dog_growl3.ogg
+
+- type: soundCollection
+ id: VulpHeckaetSound
+ files:
+ - /Audio/ADT/Voice/Vulpkanin/vulpkanin_hekaet1.ogg
+
+- type: speechSounds
+ id: Vulpa
+ saySound:
+ path: /Audio/ADT/Voice/Vulpkanin_Talk/vulp.ogg
+ askSound:
+ path: /Audio/ADT/Voice/Vulpkanin_Talk/vulp_ask.ogg
+ exclaimSound:
+ path: /Audio/ADT/Voice/Vulpkanin_Talk/vulp_exclaim.ogg
+
+#Спишс блядь
+
+- type: emoteSounds
+ id: NesMaleVulpa
+ params:
+ variation: 0.125
+ sounds:
+ Scream:
+ collection: NesMaleVulpaScreams
+ Laugh:
+ collection: MaleLaugh
+ Sneeze:
+ collection: MaleSneezes
+ Cough:
+ collection: MaleCoughs
+ CatMeow:
+ collection: CatMeows
+ CatHisses:
+ collection: CatHisses
+ MonkeyScreeches:
+ collection: MonkeyScreeches
+ RobotBeep:
+ collection: RobotBeeps
+ Yawn:
+ collection: MaleYawn
+ Snore:
+ collection: Snores
+ Honk:
+ collection: BikeHorn
+ Sigh:
+ collection: MaleSigh
+ Crying:
+ collection: MaleCry
+ VulpHowl:
+ collection: VulpHowls
+ VulpBark:
+ collection: VulpBarks
+ VulpGrowl:
+ collection: VulpGrowls
+ VulpWhine:
+ collection: VulpWhines
+ Whistle:
+ collection: Whistles
+ VulpHeckaet:
+ collection: VulpHeckaetSound
+
+- type: emoteSounds
+ id: NesFemaleVulpa
+ params:
+ variation: 0.125
+ sounds:
+ Scream:
+ collection: NesFemaleVulpaScreams
+ Laugh:
+ collection: FemaleLaugh
+ Sneeze:
+ collection: FemaleSneezes
+ Cough:
+ collection: FemaleCoughs
+ CatMeow:
+ collection: CatMeows
+ CatHisses:
+ collection: CatHisses
+ MonkeyScreeches:
+ collection: MonkeyScreeches
+ RobotBeep:
+ collection: RobotBeeps
+ Yawn:
+ collection: FemaleYawn
+ Snore:
+ collection: Snores
+ Honk:
+ collection: CluwneHorn
+ Sigh:
+ collection: FemaleSigh
+ Crying:
+ collection: FemaleCry
+ VulpHowl:
+ collection: VulpHowls
+ VulpBark:
+ collection: VulpBarks
+ VulpGrowl:
+ collection: VulpGrowls
+ VulpWhine:
+ collection: VulpWhines
+ Whistle:
+ collection: Whistles
+ VulpHeckaet:
+ collection: VulpHeckaetSound
diff --git a/Resources/Prototypes/Species/species_weights.yml b/Resources/Prototypes/Species/species_weights.yml
index f1b05d66e8d..46b289ce6db 100644
--- a/Resources/Prototypes/Species/species_weights.yml
+++ b/Resources/Prototypes/Species/species_weights.yml
@@ -5,5 +5,6 @@
Human: 5
Reptilian: 4
SlimePerson: 4
- Vulpkanin: 4 # Corvax-Vulp
+ #Vulpkanin: 4 # Corvax-Vulp
+ VulpkaninSpecies: 4
Diona: 2
diff --git a/Resources/Textures/ADT/Mobs/Customization/Vulpkanin/vulp_eyes.rsi/meta.json b/Resources/Textures/ADT/Mobs/Customization/Vulpkanin/vulp_eyes.rsi/meta.json
new file mode 100644
index 00000000000..b852aaf9895
--- /dev/null
+++ b/Resources/Textures/ADT/Mobs/Customization/Vulpkanin/vulp_eyes.rsi/meta.json
@@ -0,0 +1,29 @@
+{
+ "version": 1,
+ "license": "CC-BY-SA-3.0",
+ "copyright": "Made team Adventure Time",
+ "size": {
+ "x": 32,
+ "y": 32
+ },
+ "states": [
+ {
+ "name": "vulpkanin_eyes_s",
+ "directions": 4,
+ "delays": [
+ [
+ 1.0
+ ],
+ [
+ 1.0
+ ],
+ [
+ 1.0
+ ],
+ [
+ 1.0
+ ]
+
+ ] } ]
+
+}
diff --git a/Resources/Textures/ADT/Mobs/Customization/Vulpkanin/vulp_eyes.rsi/vulpkanin_eyes_s.png b/Resources/Textures/ADT/Mobs/Customization/Vulpkanin/vulp_eyes.rsi/vulpkanin_eyes_s.png
new file mode 100644
index 00000000000..a4cda24a229
Binary files /dev/null and b/Resources/Textures/ADT/Mobs/Customization/Vulpkanin/vulp_eyes.rsi/vulpkanin_eyes_s.png differ
diff --git a/Resources/Textures/ADT/Mobs/Species/Vulpkanin/parts.rsi/full.png b/Resources/Textures/ADT/Mobs/Species/Vulpkanin/parts.rsi/full.png
new file mode 100644
index 00000000000..d70461a3738
Binary files /dev/null and b/Resources/Textures/ADT/Mobs/Species/Vulpkanin/parts.rsi/full.png differ
diff --git a/Resources/Textures/ADT/Mobs/Species/Vulpkanin/parts.rsi/head_f.png b/Resources/Textures/ADT/Mobs/Species/Vulpkanin/parts.rsi/head_f.png
new file mode 100644
index 00000000000..1f9da337f51
Binary files /dev/null and b/Resources/Textures/ADT/Mobs/Species/Vulpkanin/parts.rsi/head_f.png differ
diff --git a/Resources/Textures/ADT/Mobs/Species/Vulpkanin/parts.rsi/head_m.png b/Resources/Textures/ADT/Mobs/Species/Vulpkanin/parts.rsi/head_m.png
new file mode 100644
index 00000000000..0c2018f2082
Binary files /dev/null and b/Resources/Textures/ADT/Mobs/Species/Vulpkanin/parts.rsi/head_m.png differ
diff --git a/Resources/Textures/ADT/Mobs/Species/Vulpkanin/parts.rsi/l_arm.png b/Resources/Textures/ADT/Mobs/Species/Vulpkanin/parts.rsi/l_arm.png
new file mode 100644
index 00000000000..fe5b217be23
Binary files /dev/null and b/Resources/Textures/ADT/Mobs/Species/Vulpkanin/parts.rsi/l_arm.png differ
diff --git a/Resources/Textures/ADT/Mobs/Species/Vulpkanin/parts.rsi/l_foot.png b/Resources/Textures/ADT/Mobs/Species/Vulpkanin/parts.rsi/l_foot.png
new file mode 100644
index 00000000000..d3cad437c52
Binary files /dev/null and b/Resources/Textures/ADT/Mobs/Species/Vulpkanin/parts.rsi/l_foot.png differ
diff --git a/Resources/Textures/ADT/Mobs/Species/Vulpkanin/parts.rsi/l_hand.png b/Resources/Textures/ADT/Mobs/Species/Vulpkanin/parts.rsi/l_hand.png
new file mode 100644
index 00000000000..41fd5470da6
Binary files /dev/null and b/Resources/Textures/ADT/Mobs/Species/Vulpkanin/parts.rsi/l_hand.png differ
diff --git a/Resources/Textures/ADT/Mobs/Species/Vulpkanin/parts.rsi/l_leg.png b/Resources/Textures/ADT/Mobs/Species/Vulpkanin/parts.rsi/l_leg.png
new file mode 100644
index 00000000000..bd9d2d44cdc
Binary files /dev/null and b/Resources/Textures/ADT/Mobs/Species/Vulpkanin/parts.rsi/l_leg.png differ
diff --git a/Resources/Textures/ADT/Mobs/Species/Vulpkanin/parts.rsi/meta.json b/Resources/Textures/ADT/Mobs/Species/Vulpkanin/parts.rsi/meta.json
new file mode 100644
index 00000000000..a26830d1622
--- /dev/null
+++ b/Resources/Textures/ADT/Mobs/Species/Vulpkanin/parts.rsi/meta.json
@@ -0,0 +1,81 @@
+{
+ "version": 1,
+ "license": "CC-BY-SA-3.0",
+ "copyright": "Made team Adventure Time",
+ "size": {
+ "x": 32,
+ "y": 32
+ },
+ "states": [
+ {
+ "name": "full",
+ "directions": 1
+ },
+ {
+ "name": "head_f",
+ "directions": 4
+ },
+ {
+ "name": "head_m",
+ "directions": 4
+ },
+ {
+ "name": "l_arm",
+ "directions": 4
+ },
+ {
+ "name": "l_foot",
+ "directions": 4
+ },
+ {
+ "name": "l_hand",
+ "directions": 4
+ },
+ {
+ "name": "l_leg",
+ "directions": 4
+ },
+ {
+ "name": "overlay_husk",
+ "directions": 4
+ },
+ {
+ "name": "r_arm",
+ "directions": 4
+ },
+ {
+ "name": "r_foot",
+ "directions": 4
+ },
+ {
+ "name": "r_hand",
+ "directions": 4
+ },
+ {
+ "name": "r_leg",
+ "directions": 4
+ },
+ {
+ "name": "tail_m",
+ "directions": 4,
+ "delays": [
+ [ 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1 ],
+ [ 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1 ],
+ [ 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1 ],
+ [ 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1 ]
+ ]
+ },
+ {
+ "name": "torso_f",
+ "directions": 4
+ },
+ {
+ "name": "torso_m",
+ "directions": 4
+ },
+ {
+ "name": "vulpkanin_m",
+ "directions": 4
+ }
+ ]
+}
diff --git a/Resources/Textures/ADT/Mobs/Species/Vulpkanin/parts.rsi/overlay_husk.png b/Resources/Textures/ADT/Mobs/Species/Vulpkanin/parts.rsi/overlay_husk.png
new file mode 100644
index 00000000000..79082542b88
Binary files /dev/null and b/Resources/Textures/ADT/Mobs/Species/Vulpkanin/parts.rsi/overlay_husk.png differ
diff --git a/Resources/Textures/ADT/Mobs/Species/Vulpkanin/parts.rsi/r_arm.png b/Resources/Textures/ADT/Mobs/Species/Vulpkanin/parts.rsi/r_arm.png
new file mode 100644
index 00000000000..fad764b7fff
Binary files /dev/null and b/Resources/Textures/ADT/Mobs/Species/Vulpkanin/parts.rsi/r_arm.png differ
diff --git a/Resources/Textures/ADT/Mobs/Species/Vulpkanin/parts.rsi/r_foot.png b/Resources/Textures/ADT/Mobs/Species/Vulpkanin/parts.rsi/r_foot.png
new file mode 100644
index 00000000000..f700328ee5c
Binary files /dev/null and b/Resources/Textures/ADT/Mobs/Species/Vulpkanin/parts.rsi/r_foot.png differ
diff --git a/Resources/Textures/ADT/Mobs/Species/Vulpkanin/parts.rsi/r_hand.png b/Resources/Textures/ADT/Mobs/Species/Vulpkanin/parts.rsi/r_hand.png
new file mode 100644
index 00000000000..ad007cbdbe6
Binary files /dev/null and b/Resources/Textures/ADT/Mobs/Species/Vulpkanin/parts.rsi/r_hand.png differ
diff --git a/Resources/Textures/ADT/Mobs/Species/Vulpkanin/parts.rsi/r_leg.png b/Resources/Textures/ADT/Mobs/Species/Vulpkanin/parts.rsi/r_leg.png
new file mode 100644
index 00000000000..b442c18a585
Binary files /dev/null and b/Resources/Textures/ADT/Mobs/Species/Vulpkanin/parts.rsi/r_leg.png differ
diff --git a/Resources/Textures/ADT/Mobs/Species/Vulpkanin/parts.rsi/tail_m.png b/Resources/Textures/ADT/Mobs/Species/Vulpkanin/parts.rsi/tail_m.png
new file mode 100644
index 00000000000..0254becd1c2
Binary files /dev/null and b/Resources/Textures/ADT/Mobs/Species/Vulpkanin/parts.rsi/tail_m.png differ
diff --git a/Resources/Textures/ADT/Mobs/Species/Vulpkanin/parts.rsi/torso_f.png b/Resources/Textures/ADT/Mobs/Species/Vulpkanin/parts.rsi/torso_f.png
new file mode 100644
index 00000000000..20591df8680
Binary files /dev/null and b/Resources/Textures/ADT/Mobs/Species/Vulpkanin/parts.rsi/torso_f.png differ
diff --git a/Resources/Textures/ADT/Mobs/Species/Vulpkanin/parts.rsi/torso_m.png b/Resources/Textures/ADT/Mobs/Species/Vulpkanin/parts.rsi/torso_m.png
new file mode 100644
index 00000000000..752cc6ce122
Binary files /dev/null and b/Resources/Textures/ADT/Mobs/Species/Vulpkanin/parts.rsi/torso_m.png differ
diff --git a/Resources/Textures/ADT/Mobs/Species/Vulpkanin/parts.rsi/vulpkanin_m.png b/Resources/Textures/ADT/Mobs/Species/Vulpkanin/parts.rsi/vulpkanin_m.png
new file mode 100644
index 00000000000..ff819d11b11
Binary files /dev/null and b/Resources/Textures/ADT/Mobs/Species/Vulpkanin/parts.rsi/vulpkanin_m.png differ
diff --git a/Resources/Textures/Mobs/Customization/eyes.rsi/meta.json b/Resources/Textures/Mobs/Customization/eyes.rsi/meta.json
index 78339d7b76d..37e425843c7 100644
--- a/Resources/Textures/Mobs/Customization/eyes.rsi/meta.json
+++ b/Resources/Textures/Mobs/Customization/eyes.rsi/meta.json
@@ -1 +1,2 @@
+
{"version": 1, "license": "CC-BY-SA-3.0","copyright": "human_eyes taken from https://github.com/tgstation/tgstation/blob/8024397cc81c5f47f74cf4279e35728487d0a1a7/icons/mob/human_parts_greyscale.dmi and modified by DrSmugleaf", "size": {"x": 32, "y": 32}, "states": [{"name": "diona", "directions": 4}, {"name": "eyes", "directions": 4}, {"name":"no_eyes"}]}
diff --git a/Tools/ATD/auto_cl.py b/Tools/ADT/auto_cl.py
similarity index 100%
rename from Tools/ATD/auto_cl.py
rename to Tools/ADT/auto_cl.py
diff --git a/Tools/ATD/cl_old.yml b/Tools/ADT/cl_old.yml
similarity index 100%
rename from Tools/ATD/cl_old.yml
rename to Tools/ADT/cl_old.yml