Midround Free Agent - Asakim Warrior (#4459)
* explodes you with my MIND * goated? * medipen gaming * evil obfuscation system from hell * MANY things - accent improved (takes into account word length when determining number of syllables) - night vision tied to shitmed eye organ (not thermals, though, that's broken for some reason) - asakim-specific backpack and jumpsuit (mono turns ert backpacks into something generic while we don't, and they use goob ninja jumpsuit so i just made a new jumpsuit with goob ninja sprites) - gun can switch between disabler and lethal modes - rebalanced armor, made them a bit more squishy to melee and slightly less tanky to bullets/heat - renamed and redescribed their items to fit more into deltav "lore" - added the High Frequency Katana, basically a silly ninja sword - removed freedom/storage implanters * commit before i touch evil role code * i lied one more commit before evil role code * a lot of assorted things - move prototype to shared (client got angry) - Automated Defense System issuer real - fix spawning, remove gamer cybernetics - fix objectives - more blunt res - nerf loadout - nerf gun * we love misprediction * i think this works * big changeops - springlock suit popup and gamer prediction (kinda) - briefing audio - precog - evil rules that require mrp players to actually rp (evil) - added to freelance shuttle set - spawner is kill - illiterate - more slash damage - nerfed the gun into the absolute ground (and removed semi auto) - sword kinda nerfed - removed some evil mono gamerule stuff we dont have * lower weight * tweaks - rules are more gamer (kill those salvies) - nerf heat res - 1984 psionics * appease the linter gods * cleanup ops * jumpscare * if yaml validator fails i will cry * fix assert, maybe fix yaml thing assert fix is from a deltanedas PR from 2023, hopefully that still works * I LOVE RIDER I LOVE RIDER * minor cleanup * attrib. fix * attrib. fix take 2 * Update asakim_small.yml * Update asakim_small.yml --------- Signed-off-by: KOTOB <59124164+kotobdev@users.noreply.github.com>
|
|
@ -0,0 +1,46 @@
|
|||
using Content.Server.Chat.Systems;
|
||||
using Content.Shared._DV.Clothing;
|
||||
using Content.Shared._DV.Clothing.Components;
|
||||
using Content.Shared.Clothing;
|
||||
using Content.Shared.Damage;
|
||||
using Content.Shared.Jittering;
|
||||
using Content.Shared.Popups;
|
||||
using Robust.Shared.Audio.Systems;
|
||||
|
||||
namespace Content.Server._DV.Clothing;
|
||||
|
||||
public sealed class DamageOnUnequipSystem : SharedDamageOnUnequipSystem
|
||||
{
|
||||
[Dependency] private readonly DamageableSystem _damageable = default!;
|
||||
[Dependency] private readonly SharedAudioSystem _audio = default!;
|
||||
[Dependency] private readonly SharedJitteringSystem _jittering = default!;
|
||||
[Dependency] private readonly SharedPopupSystem _popup = default!;
|
||||
[Dependency] private readonly ChatSystem _chat = default!;
|
||||
|
||||
public override void Initialize()
|
||||
{
|
||||
base.Initialize();
|
||||
|
||||
SubscribeLocalEvent<DamageOnUnequipComponent, ClothingGotUnequippedEvent>(OnUnequip);
|
||||
}
|
||||
|
||||
private void OnUnequip(Entity<DamageOnUnequipComponent> ent, ref ClothingGotUnequippedEvent args)
|
||||
{
|
||||
// terminating check to avoid evil exception. bit weird but it's how a similar issue was fixed upstream
|
||||
if (ent.Comp.UnequipDamage == null || !TryComp<DamageableComponent>(args.Wearer, out var damageable) || MetaData(args.Wearer).EntityLifeStage >= EntityLifeStage.Terminating)
|
||||
return;
|
||||
|
||||
_popup.PopupEntity(Loc.GetString("damage-on-unequip-finish", ("item", ent), ("wearer", args.Wearer)), ent, PopupType.LargeCaution);
|
||||
|
||||
if (ent.Comp.UnequipSound != null)
|
||||
_audio.PlayPvs(ent.Comp.UnequipSound, ent);
|
||||
|
||||
if (ent.Comp.ScreamOnUnequip)
|
||||
{
|
||||
_chat.TryEmoteWithChat(args.Wearer, ent.Comp.ScreamEmote);
|
||||
_jittering.DoJitter(args.Wearer, TimeSpan.FromSeconds(15), false);
|
||||
}
|
||||
|
||||
_damageable.TryChangeDamage(args.Wearer, ent.Comp.UnequipDamage, true, true, damageable);
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,11 @@
|
|||
using Content.Shared._DV.Speech.Prototypes;
|
||||
using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype;
|
||||
|
||||
namespace Content.Server._DV.Speech.Components;
|
||||
|
||||
[RegisterComponent]
|
||||
public sealed partial class SyllableObfuscationAccentComponent : Component
|
||||
{
|
||||
[DataField(customTypeSerializer: typeof(PrototypeIdSerializer<SyllableObfuscationAccentPrototype>), required: true)]
|
||||
public string Accent = default!;
|
||||
}
|
||||
|
|
@ -0,0 +1,99 @@
|
|||
using System.Linq;
|
||||
using System.Text;
|
||||
using Content.Server._DV.Speech.Components;
|
||||
using Content.Shared._DV.Speech.Prototypes;
|
||||
using Content.Server.Speech;
|
||||
using Content.Shared.GameTicking;
|
||||
using Robust.Shared.Prototypes;
|
||||
|
||||
namespace Content.Server._DV.Speech.EntitySystems;
|
||||
|
||||
public sealed class SyllableObfuscationAccentSystem : EntitySystem
|
||||
{
|
||||
[Dependency] private readonly IPrototypeManager _proto = default!;
|
||||
[Dependency] private readonly SharedGameTicker _ticker = default!;
|
||||
|
||||
public override void Initialize()
|
||||
{
|
||||
SubscribeLocalEvent<SyllableObfuscationAccentComponent, AccentGetEvent>(OnAccent);
|
||||
}
|
||||
|
||||
private void OnAccent(EntityUid uid, SyllableObfuscationAccentComponent component, AccentGetEvent args)
|
||||
{
|
||||
args.Message = ApplyReplacements(args.Message, component.Accent);
|
||||
}
|
||||
|
||||
// stolen and slightly modified from EE: Content.Shared/_EinsteinEngines/Language/ObfuscationMethods.cs
|
||||
public string ApplyReplacements(string message, string accent)
|
||||
{
|
||||
if (!_proto.TryIndex<SyllableObfuscationAccentPrototype>(accent, out var prototype))
|
||||
return message;
|
||||
|
||||
StringBuilder builder = new();
|
||||
|
||||
const char eof = (char) 0; // Special character to mark the end of the message in the code below.
|
||||
|
||||
var wordBeginIndex = 0;
|
||||
var hashCode = 0;
|
||||
|
||||
for (var i = 0; i <= message.Length; i++)
|
||||
{
|
||||
var ch = i < message.Length ? char.ToLower(message[i]) : eof;
|
||||
var isWordEnd = char.IsWhiteSpace(ch) || IsPunctuation(ch) || ch == eof;
|
||||
|
||||
// If this is a normal char, add it to the hash sum
|
||||
if (!isWordEnd)
|
||||
hashCode = hashCode * 31 + ch;
|
||||
|
||||
// If a word ends before this character, construct a new word and append it to the new message.
|
||||
if (isWordEnd)
|
||||
{
|
||||
var wordLength = i - wordBeginIndex;
|
||||
if (wordLength > 0)
|
||||
{
|
||||
var originalWord = message.Substring(wordBeginIndex, wordLength);
|
||||
var isAllCaps = originalWord.All(c => !char.IsLetter(c) || char.IsUpper(c));
|
||||
|
||||
var newWord = new StringBuilder();
|
||||
var newWordLength = Math.Clamp((originalWord.Length + 1) / 2,
|
||||
prototype.MinSyllables,
|
||||
prototype.MaxSyllables);
|
||||
|
||||
for (var j = 0; j < newWordLength; j++)
|
||||
{
|
||||
var index = PseudoRandomNumber(hashCode + j, 0, prototype.Replacement.Count - 1);
|
||||
newWord.Append(prototype.Replacement[index]);
|
||||
}
|
||||
if (isAllCaps && wordLength > 1)
|
||||
builder.Append(newWord.ToString().ToUpper());
|
||||
else
|
||||
builder.Append(newWord);
|
||||
}
|
||||
|
||||
hashCode = 0;
|
||||
wordBeginIndex = i + 1;
|
||||
}
|
||||
|
||||
// If this message concludes a word (i.e. is a whitespace or a punctuation mark), append it to the message
|
||||
if (isWordEnd && ch != eof)
|
||||
builder.Append(ch);
|
||||
}
|
||||
var result = builder.ToString();
|
||||
if (!string.IsNullOrEmpty(result)) // capitalize first character since capitals are lost from ic.punctuation
|
||||
result = char.ToUpperInvariant(result[0]) + result.Substring(1);
|
||||
return result;
|
||||
}
|
||||
|
||||
private static bool IsPunctuation(char ch)
|
||||
{
|
||||
return ch is '.' or '!' or '?' or ',' or ':' or '-';
|
||||
}
|
||||
|
||||
// EE function, doesn't use IRobustRandom for perf reasons, see Content.Shared/_EinsteinEngines/Language/Systems/SharedLanguageSystem.cs
|
||||
internal int PseudoRandomNumber(int seed, int min, int max)
|
||||
{
|
||||
seed = seed ^ (_ticker.RoundId * 127);
|
||||
var random = seed * 1103515245 + 12345;
|
||||
return min + Math.Abs(random) % (max - min + 1);
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,22 @@
|
|||
using Content.Shared.Chat.Prototypes;
|
||||
using Content.Shared.Damage;
|
||||
using Robust.Shared.Audio;
|
||||
using Robust.Shared.Prototypes;
|
||||
|
||||
namespace Content.Shared._DV.Clothing.Components;
|
||||
|
||||
[RegisterComponent]
|
||||
public sealed partial class DamageOnUnequipComponent : Component
|
||||
{
|
||||
[DataField]
|
||||
public DamageSpecifier? UnequipDamage = null;
|
||||
|
||||
[DataField]
|
||||
public SoundSpecifier? UnequipSound = null;
|
||||
|
||||
[DataField]
|
||||
public bool ScreamOnUnequip = false;
|
||||
|
||||
[DataField]
|
||||
public ProtoId<EmotePrototype> ScreamEmote = "Scream";
|
||||
}
|
||||
|
|
@ -0,0 +1,19 @@
|
|||
using Content.Shared._DV.Clothing.Components;
|
||||
using Content.Shared.Examine;
|
||||
|
||||
namespace Content.Shared._DV.Clothing;
|
||||
|
||||
public abstract class SharedDamageOnUnequipSystem : EntitySystem
|
||||
{
|
||||
public override void Initialize()
|
||||
{
|
||||
base.Initialize();
|
||||
|
||||
SubscribeLocalEvent<DamageOnUnequipComponent, ExaminedEvent>(OnExamined);
|
||||
}
|
||||
|
||||
private void OnExamined(Entity<DamageOnUnequipComponent> selfUnremovableClothing, ref ExaminedEvent args)
|
||||
{
|
||||
args.PushMarkup(Loc.GetString("damage-on-unequip-examine"));
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,6 @@
|
|||
using Content.Shared.Roles;
|
||||
|
||||
namespace Content.Shared._DV.Roles;
|
||||
|
||||
[RegisterComponent]
|
||||
public sealed partial class AsakimRoleComponent : BaseMindRoleComponent;
|
||||
|
|
@ -0,0 +1,19 @@
|
|||
using Robust.Shared.Prototypes;
|
||||
|
||||
namespace Content.Shared._DV.Speech.Prototypes;
|
||||
|
||||
[Prototype]
|
||||
public sealed partial class SyllableObfuscationAccentPrototype : IPrototype
|
||||
{
|
||||
[IdDataField]
|
||||
public string ID { get; } = default!;
|
||||
|
||||
[DataField]
|
||||
public int MinSyllables = 1;
|
||||
|
||||
[DataField]
|
||||
public int MaxSyllables = 4;
|
||||
|
||||
[DataField(required: true)]
|
||||
public List<string> Replacement = [];
|
||||
}
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
- files: ["asakimbriefing.ogg"]
|
||||
license: "CC-BY-4.0"
|
||||
copyright: "By kotobdev (GitHub) for DeltaV"
|
||||
source: "https://github.com/DeltaV-Station/Delta-v.git"
|
||||
|
|
@ -6,3 +6,7 @@
|
|||
license: "CC-BY-NC-3.0"
|
||||
copyright: "Aurorastation"
|
||||
source: "https://github.com/Aurorastation/Aurora.3/blob/master/sound/effects/creepyshriek.ogg"
|
||||
- files: ["breakingbones.ogg"]
|
||||
license: "CC0-1.0"
|
||||
copyright: "Freesound user Sheyvan"
|
||||
source: "https://freesound.org/people/Sheyvan/sounds/523250/"
|
||||
|
|
|
|||
|
|
@ -56,6 +56,7 @@ psionic-power-precognition-unknown-shuttle-traveling-cuisine-result-message = Yo
|
|||
psionic-power-precognition-unknown-shuttle-disaster-evac-pod-result-message = You see a vision of death and blood, of a destruction so complete only few survive, drifting through the coldness of space.
|
||||
psionic-power-precognition-syndicate-armsdealer-result-message = You see a vision of a ship lurking in the shadows, its cargo deadly.
|
||||
psionic-power-precognition-rift-spawn-result-message = You see a small spark of energy, quickly expanding as it tears reality apart, twisting everything around it.
|
||||
psionic-power-precognition-asakim-spawn-result-message = You smell stale air from a cryopod opening, and the faint echo of an intelligence far away but very near.
|
||||
|
||||
psionic-eruption-begin = {CAPITALIZE(THE($user))} is being consumed by a psionic energy!
|
||||
psionic-eruption-annoy-minimal = You feel a pressure building up in your mind.
|
||||
|
|
|
|||
|
|
@ -0,0 +1,3 @@
|
|||
damage-on-unequip-examine = [color=red]You feel like removing this is a bad idea...[/color]
|
||||
damage-on-unequip-begin = The {$item} begins to creak and groan...
|
||||
damage-on-unequip-finish = The {$item} rips off of {$wearer}'s body!
|
||||
|
|
@ -0,0 +1,10 @@
|
|||
ghost-role-information-asakim-name = Asakim Warrior
|
||||
ghost-role-information-asakim-description = A genetically enhanced bioweapon, stranded in the sector after cryostasis failure.
|
||||
ghost-role-information-asakim-rules =
|
||||
You are a [color=yellow][bold]Free-Agent[/bold][/color]. You may pursue your given objectives, or find your own way through life.
|
||||
You have [color=red]no knowledge[/color] (maybe basic at most) [color=red]of this sector of space, its inhabitants, its factions, or its culture[/color]. While you cannot speak their language, you can understand it.
|
||||
You may kill your targets if you have any, and you may kill to defend yourself and your property. [color=green]Civilians and the innocent are not your enemy[/color], and may be useful to you (if you can get past the language barrier - try an AAC tablet!). Fight with honor.
|
||||
asakim-role-briefing =
|
||||
You are an Asakim, a genetically-engineered weapon from a distant part of space.
|
||||
You've awoken from long-term cryosleep in an unfamiliar sector, and an unfamiliar time.
|
||||
Your ship has transmitted new orders into your brain...
|
||||
|
|
@ -4,3 +4,4 @@ role-subtype-recruiter = Recruiter
|
|||
role-subtype-synthesis = Synthesis
|
||||
role-subtype-roboneuro = Robo-Neuro
|
||||
role-subtype-armsdealer = Arms Dealer
|
||||
role-subtype-asakim = Asakim
|
||||
|
|
|
|||
|
|
@ -0,0 +1,3 @@
|
|||
objective-issuer-asakim = [color=#5085fa]Automated Defense System[/color]
|
||||
objective-condition-asakim-terminate-title = >TERMINATE {$targetName}, {CAPITALIZE($job)}.
|
||||
objective-condition-asakim-terminate-reroll-message = <ERROR>: FEEDBACK LOOP DETECTED. NEW SUBJECT DESIGNATED FOR TERMINATION: {$targetName}, {CAPITALIZE($job)}.
|
||||
|
|
@ -27,3 +27,6 @@ roles-antag-skia-objective = Rend souls from the living.
|
|||
|
||||
roles-antag-syndicate-armsdealer-name = Arms Dealer
|
||||
roles-antag-syndicate-armsdealer-objective = Sell your firearms and stay away from the law.
|
||||
|
||||
roles-antag-asakim-name = Asakim
|
||||
roles-antag-asakim-objective = Serve the ancient directives of your ship's AI.
|
||||
|
|
|
|||
|
|
@ -0,0 +1,3 @@
|
|||
## Species Names
|
||||
|
||||
species-name-asakim = Asakim
|
||||
|
|
@ -0,0 +1,89 @@
|
|||
- type: syllableObfuscationAccent
|
||||
id: draconian
|
||||
minSyllables: 1
|
||||
maxSyllables: 4
|
||||
replacement:
|
||||
- za
|
||||
- az
|
||||
- ze
|
||||
- ez
|
||||
- zi
|
||||
- iz
|
||||
- zo
|
||||
- oz
|
||||
- zu
|
||||
- uz
|
||||
- zs
|
||||
- sz
|
||||
- ha
|
||||
- ah
|
||||
- he
|
||||
- eh
|
||||
- hi
|
||||
- ih
|
||||
- ho
|
||||
- oh
|
||||
- hu
|
||||
- uh
|
||||
- hs
|
||||
- sh
|
||||
- la
|
||||
- al
|
||||
- le
|
||||
- el
|
||||
- li
|
||||
- il
|
||||
- lo
|
||||
- ol
|
||||
- lu
|
||||
- ul
|
||||
- ls
|
||||
- sl
|
||||
- ka
|
||||
- ak
|
||||
- ke
|
||||
- ek
|
||||
- ki
|
||||
- ik
|
||||
- ko
|
||||
- ok
|
||||
- ku
|
||||
- uk
|
||||
- ks
|
||||
- sk
|
||||
- sa
|
||||
- as
|
||||
- se
|
||||
- es
|
||||
- si
|
||||
- is
|
||||
- so
|
||||
- os
|
||||
- su
|
||||
- us
|
||||
- ss
|
||||
- ss
|
||||
- ra
|
||||
- ar
|
||||
- re
|
||||
- er
|
||||
- ri
|
||||
- ir
|
||||
- ro
|
||||
- or
|
||||
- ru
|
||||
- ur
|
||||
- rs
|
||||
- sr
|
||||
- a
|
||||
- a
|
||||
- e
|
||||
- e
|
||||
- i
|
||||
- i
|
||||
- o
|
||||
- o
|
||||
- u
|
||||
- u
|
||||
- s
|
||||
- s
|
||||
|
|
@ -0,0 +1,12 @@
|
|||
- type: entity
|
||||
parent: BaseCyberneticEyes
|
||||
id: OrganAsakimEyes
|
||||
name: asakim eyes
|
||||
components:
|
||||
- type: Organ
|
||||
onAdd:
|
||||
- type: NightVision
|
||||
isEquipment: false
|
||||
color: "#ae65bf"
|
||||
activateSound: null
|
||||
deactivateSound: null
|
||||
|
|
@ -16,3 +16,15 @@
|
|||
- type: Sprite
|
||||
sprite: _DV/Clothing/Back/Backpacks/hop.rsi
|
||||
state: icon
|
||||
|
||||
- type: entity
|
||||
parent: ClothingBackpack
|
||||
id: ClothingBackpackAdvancedTactical
|
||||
name: advanced tactical backpack
|
||||
description: A spacious backpack with lots of pockets.
|
||||
components:
|
||||
- type: Sprite
|
||||
sprite: Clothing/Back/Backpacks/ertleader.rsi
|
||||
- type: Storage
|
||||
grid:
|
||||
- 0,0,10,3
|
||||
|
|
|
|||
|
|
@ -533,6 +533,17 @@
|
|||
- type: Clothing
|
||||
sprite: _DV/Clothing/Uniforms/Jumpsuit/cybersunrnd.rsi
|
||||
|
||||
- type: entity
|
||||
parent: ClothingUniformBase
|
||||
id: ClothingUniformJumpsuitAsakim
|
||||
name: combat jumpsuit
|
||||
description: A comfortable and flexible jumpsuit, designed to be worn under a hardsuit.
|
||||
components:
|
||||
- type: Sprite
|
||||
sprite: _Goobstation/Clothing/Uniforms/Jumpsuit/ninja.rsi
|
||||
- type: Clothing
|
||||
sprite: _Goobstation/Clothing/Uniforms/Jumpsuit/ninja.rsi
|
||||
|
||||
- type: entity
|
||||
parent: ClothingUniformBase
|
||||
id: ClothingUniformHarbingerTunic
|
||||
|
|
|
|||
|
|
@ -189,3 +189,16 @@
|
|||
- !type:DepartmentTimeRequirement
|
||||
department: Command
|
||||
time: 43200 # 12h Command (so you know to handle the responsibility of an armsdealer)
|
||||
|
||||
- type: entity
|
||||
categories: [ HideSpawnMenu, Spawner ]
|
||||
parent: BaseAntagSpawner
|
||||
id: SpawnPointGhostAsakim
|
||||
components:
|
||||
- type: GhostRole
|
||||
name: ghost-role-information-asakim-name
|
||||
description: ghost-role-information-asakim-description
|
||||
rules: ghost-role-information-asakim-rules
|
||||
requirements: # keep in sync with the antag prototype
|
||||
- !type:OverallPlaytimeRequirement
|
||||
time: 172800 # 48 hours, same reasoning as SRN
|
||||
|
|
|
|||
|
|
@ -0,0 +1,16 @@
|
|||
- type: entity
|
||||
id: HandheldAutopulserDisablerProjectile
|
||||
name: disabling plasma projectile
|
||||
parent: BulletDisablerSmg
|
||||
categories: [ HideSpawnMenu ]
|
||||
components:
|
||||
- type: StaminaDamageOnCollide
|
||||
damage: 19
|
||||
- type: Sprite
|
||||
sprite: _Impstation/Objects/Weapons/Guns/Projectiles/energybolts.rsi
|
||||
scale: 0.4, 0.4
|
||||
layers:
|
||||
- state: lightstun
|
||||
shader: unshaded
|
||||
- type: PointLight
|
||||
color: "#00a6ff"
|
||||
|
|
@ -5,6 +5,7 @@
|
|||
- id: SyndicateRecruiter
|
||||
- id: SynthesisSpecialist
|
||||
- id: SyndicateArmsdealer
|
||||
- id: AsakimShuttle
|
||||
|
||||
- type: entity
|
||||
parent: BaseUnknownShuttleRule
|
||||
|
|
|
|||
|
|
@ -0,0 +1,76 @@
|
|||
- type: entity
|
||||
abstract: true
|
||||
parent: BaseObjective
|
||||
id: BaseAsakimObjective
|
||||
components:
|
||||
- type: Objective
|
||||
difficulty: 1 # unused
|
||||
issuer: objective-issuer-asakim
|
||||
icon:
|
||||
sprite: _Mono/Objects/Weapons/Melee/hfblade.rsi
|
||||
state: icon
|
||||
- type: RoleRequirement
|
||||
roles:
|
||||
- AsakimRole
|
||||
|
||||
- type: entity
|
||||
parent: BaseAsakimObjective
|
||||
id: AsakimKillObjective
|
||||
name: ">TERMINATE"
|
||||
description: Vital signs MUST reach zero in subject. Once.
|
||||
components:
|
||||
- type: Objective
|
||||
issuer: objective-issuer-asakim
|
||||
unique: false
|
||||
icon:
|
||||
sprite: Mobs/Ghosts/ghost_human.rsi
|
||||
state: icon
|
||||
- type: KillPersonCondition
|
||||
requireDead: true
|
||||
- type: TargetObjective
|
||||
title: objective-condition-asakim-terminate-title
|
||||
- type: PickRandomPerson
|
||||
onlyChoosableJobs: true
|
||||
- type: RerollAfterCompletion
|
||||
rerollObjectivePrototype: AsakimKillObjective
|
||||
rerollObjectiveMessage: objective-condition-asakim-terminate-reroll-message
|
||||
|
||||
- type: entity
|
||||
parent: [BaseAsakimObjective, BaseSurviveObjective]
|
||||
id: AsakimTheftObjective
|
||||
name: ">CONFISCATE"
|
||||
description: Records indicate that this sector may have valuable artifacts. Confiscate such items for further study.
|
||||
components:
|
||||
- type: Objective
|
||||
|
||||
- type: entity
|
||||
parent: [BaseAsakimObjective, BaseSurviveObjective]
|
||||
id: AsakimInfiltrateObjective
|
||||
name: ">INFILTRATE"
|
||||
description: Ambient radio chatter mentions "High-Security Areas". Investigate such places, if they do exist.
|
||||
components:
|
||||
- type: Objective
|
||||
|
||||
- type: entity
|
||||
parent: [BaseAsakimObjective, BaseSurviveObjective]
|
||||
id: AsakimInterrogateObjective
|
||||
name: ">INTERROGATE"
|
||||
description: WARNING - Time-gap of [ERROR] years detected. Records may be outdated. Consult local population.
|
||||
components:
|
||||
- type: Objective
|
||||
|
||||
- type: entity
|
||||
parent: [BaseAsakimObjective, BaseSurviveObjective]
|
||||
id: AsakimUpgradeObjective
|
||||
name: ">UPGRADE"
|
||||
description: Preliminary sector scans detect possible high-value cybernetics. Upgrade your body.
|
||||
components:
|
||||
- type: Objective
|
||||
|
||||
- type: entity
|
||||
parent: [BaseAsakimObjective, BaseSurviveObjective]
|
||||
id: AsakimAllyObjective
|
||||
name: ">AFFILIATE"
|
||||
description: Prior records indicate possible persons-of-interest in this sector. Find or make allies in the local populace.
|
||||
components:
|
||||
- type: Objective
|
||||
|
|
@ -108,3 +108,44 @@
|
|||
WizardDataObjective: 0.75
|
||||
WizardPreserveObjective: 1
|
||||
WizardTeachObjective: 1
|
||||
|
||||
## Asakim
|
||||
- type: weightedRandom
|
||||
id: AsakimObjectiveGroup
|
||||
weights:
|
||||
AsakimObjectiveGroupKill: 1
|
||||
AsakimObjectiveGroupTheft: 1
|
||||
AsakimObjectiveGroupInfiltrate: 1
|
||||
AsakimObjectiveGroupInterrogate: 1
|
||||
AsakimObjectiveGroupUpgrade: 1
|
||||
AsakimObjectiveGroupAlly: 1
|
||||
|
||||
- type: weightedRandom
|
||||
id: AsakimObjectiveGroupKill
|
||||
weights:
|
||||
AsakimKillObjective: 1
|
||||
|
||||
- type: weightedRandom
|
||||
id: AsakimObjectiveGroupTheft
|
||||
weights:
|
||||
AsakimTheftObjective: 1
|
||||
|
||||
- type: weightedRandom
|
||||
id: AsakimObjectiveGroupInfiltrate
|
||||
weights:
|
||||
AsakimInfiltrateObjective: 1
|
||||
|
||||
- type: weightedRandom
|
||||
id: AsakimObjectiveGroupInterrogate
|
||||
weights:
|
||||
AsakimInterrogateObjective: 1
|
||||
|
||||
- type: weightedRandom
|
||||
id: AsakimObjectiveGroupUpgrade
|
||||
weights:
|
||||
AsakimUpgradeObjective: 1
|
||||
|
||||
- type: weightedRandom
|
||||
id: AsakimObjectiveGroupAlly
|
||||
weights:
|
||||
AsakimAllyObjective: 1
|
||||
|
|
|
|||
|
|
@ -0,0 +1,8 @@
|
|||
- type: antag
|
||||
id: Asakim
|
||||
name: roles-antag-asakim-name
|
||||
objective: roles-antag-asakim-objective
|
||||
antagonist: true
|
||||
requirements:
|
||||
- !type:OverallPlaytimeRequirement
|
||||
time: 172800 # 48 hours, same reasoning as SRN
|
||||
|
|
@ -100,3 +100,17 @@
|
|||
- type: ArmsdealerRole
|
||||
- type: RoleBriefing
|
||||
briefing: armsdealer-role-briefing
|
||||
|
||||
- type: entity
|
||||
parent: BaseMindRoleAntag
|
||||
id: MindRoleAsakim
|
||||
name: Asakim Role
|
||||
components:
|
||||
- type: MindRole
|
||||
roleType: FreeAgent
|
||||
subtype: role-subtype-asakim
|
||||
antagPrototype: Asakim
|
||||
exclusiveAntag: true
|
||||
- type: AsakimRole
|
||||
- type: RoleBriefing
|
||||
briefing: asakim-role-briefing
|
||||
|
|
|
|||
|
|
@ -0,0 +1,134 @@
|
|||
# SPDX-FileCopyrightText: 2025 starch
|
||||
#
|
||||
# SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
# TODO: Add descriptions (many)
|
||||
# TODO BODY: Part damage
|
||||
- type: entity
|
||||
id: PartAsakim
|
||||
parent: [BaseItem, BasePart]
|
||||
name: "asakim body part"
|
||||
abstract: true
|
||||
components:
|
||||
- type: Icon # Shitmed Change
|
||||
sprite: _Mono/Mobs/Species/Asakim/parts.rsi
|
||||
- type: BodyPart # Shitmed Change
|
||||
species: Asakim
|
||||
- type: Destructible # Shitmed Change: Let blunt weapons break bones
|
||||
thresholds:
|
||||
- trigger: !type:DamageTypeTrigger
|
||||
damageType: Blunt
|
||||
damage: 350
|
||||
behaviors:
|
||||
- !type:GibPartBehavior
|
||||
- type: Extractable
|
||||
juiceSolution:
|
||||
reagents:
|
||||
- ReagentId: Fat
|
||||
Quantity: 3
|
||||
- ReagentId: Blood
|
||||
Quantity: 10
|
||||
|
||||
- type: entity
|
||||
id: TorsoAsakim
|
||||
name: "asakim torso"
|
||||
parent: [PartAsakim, BaseTorso]
|
||||
components:
|
||||
- type: Sprite
|
||||
sprite: _Mono/Mobs/Species/Asakim/parts.rsi
|
||||
state: "torso_m"
|
||||
- type: Extractable
|
||||
juiceSolution:
|
||||
reagents:
|
||||
- ReagentId: Fat
|
||||
Quantity: 10
|
||||
- ReagentId: Blood
|
||||
Quantity: 20
|
||||
|
||||
- type: entity
|
||||
id: HeadAsakim
|
||||
name: "asakim head"
|
||||
parent: [PartAsakim, BaseHead]
|
||||
components:
|
||||
- type: Sprite
|
||||
sprite: _Mono/Mobs/Species/Asakim/parts.rsi
|
||||
state: "head_m"
|
||||
- type: Extractable
|
||||
juiceSolution:
|
||||
reagents:
|
||||
- ReagentId: Fat
|
||||
Quantity: 5
|
||||
- ReagentId: Blood
|
||||
Quantity: 10
|
||||
|
||||
- type: entity
|
||||
id: LeftArmAsakim
|
||||
name: "left asakim arm"
|
||||
parent: [PartAsakim, BaseLeftArm]
|
||||
components:
|
||||
- type: Sprite
|
||||
sprite: _Mono/Mobs/Species/Asakim/parts.rsi
|
||||
state: "l_arm"
|
||||
|
||||
- type: entity
|
||||
id: RightArmAsakim
|
||||
name: "right asakim arm"
|
||||
parent: [PartAsakim, BaseRightArm]
|
||||
components:
|
||||
- type: Sprite
|
||||
sprite: _Mono/Mobs/Species/Asakim/parts.rsi
|
||||
state: "r_arm"
|
||||
|
||||
- type: entity
|
||||
id: LeftHandAsakim
|
||||
name: "left asakim hand"
|
||||
parent: [PartAsakim, BaseLeftHand]
|
||||
components:
|
||||
- type: Sprite
|
||||
sprite: _Mono/Mobs/Species/Asakim/parts.rsi
|
||||
state: "l_hand"
|
||||
|
||||
- type: entity
|
||||
id: RightHandAsakim
|
||||
name: "right asakim hand"
|
||||
parent: [PartAsakim, BaseRightHand]
|
||||
components:
|
||||
- type: Sprite
|
||||
sprite: _Mono/Mobs/Species/Asakim/parts.rsi
|
||||
state: "r_hand"
|
||||
|
||||
- type: entity
|
||||
id: LeftLegAsakim
|
||||
name: "left asakim leg"
|
||||
parent: [PartAsakim, BaseLeftLeg]
|
||||
components:
|
||||
- type: Sprite
|
||||
sprite: _Mono/Mobs/Species/Asakim/parts.rsi
|
||||
state: "l_leg"
|
||||
|
||||
- type: entity
|
||||
id: RightLegAsakim
|
||||
name: "right asakim leg"
|
||||
parent: [PartAsakim, BaseRightLeg]
|
||||
components:
|
||||
- type: Sprite
|
||||
sprite: _Mono/Mobs/Species/Asakim/parts.rsi
|
||||
state: "r_leg"
|
||||
|
||||
- type: entity
|
||||
id: LeftFootAsakim
|
||||
name: "left asakim foot"
|
||||
parent: [PartAsakim, BaseLeftFoot]
|
||||
components:
|
||||
- type: Sprite
|
||||
sprite: _Mono/Mobs/Species/Asakim/parts.rsi
|
||||
state: "l_foot"
|
||||
|
||||
- type: entity
|
||||
id: RightFootAsakim
|
||||
name: "right asakim foot"
|
||||
parent: [PartAsakim, BaseRightFoot]
|
||||
components:
|
||||
- type: Sprite
|
||||
sprite: _Mono/Mobs/Species/Asakim/parts.rsi
|
||||
state: "r_foot"
|
||||
|
|
@ -0,0 +1,58 @@
|
|||
# SPDX-FileCopyrightText: 2022 DrSmugleaf
|
||||
# SPDX-FileCopyrightText: 2022 Jezithyr
|
||||
# SPDX-FileCopyrightText: 2023 Nemanja
|
||||
# SPDX-FileCopyrightText: 2025 Ark
|
||||
# SPDX-FileCopyrightText: 2025 starch
|
||||
#
|
||||
# SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
- type: body
|
||||
name: "asakim"
|
||||
id: Asakim
|
||||
root: torso
|
||||
slots:
|
||||
head:
|
||||
part: HeadAsakim
|
||||
connections:
|
||||
- torso
|
||||
organs:
|
||||
brain: OrganHumanBrain
|
||||
eyes: OrganAsakimEyes # DeltaV
|
||||
torso:
|
||||
part: TorsoAsakim
|
||||
organs:
|
||||
heart: OrganAnimalHeart
|
||||
lungs: OrganHumanLungs
|
||||
stomach: OrganReptilianStomach
|
||||
liver: OrganAnimalLiver
|
||||
kidneys: OrganHumanKidneys
|
||||
connections:
|
||||
- right arm
|
||||
- left arm
|
||||
- right leg
|
||||
- left leg
|
||||
- head # Shitmed
|
||||
right arm:
|
||||
part: RightArmAsakim
|
||||
connections:
|
||||
- right hand
|
||||
left arm:
|
||||
part: LeftArmAsakim
|
||||
connections:
|
||||
- left hand
|
||||
right hand:
|
||||
part: RightHandAsakim
|
||||
left hand:
|
||||
part: LeftHandAsakim
|
||||
right leg:
|
||||
part: RightLegAsakim
|
||||
connections:
|
||||
- right foot
|
||||
left leg:
|
||||
part: LeftLegAsakim
|
||||
connections:
|
||||
- left foot
|
||||
right foot:
|
||||
part: RightFootAsakim
|
||||
left foot:
|
||||
part: LeftFootAsakim
|
||||
|
|
@ -0,0 +1,59 @@
|
|||
# SPDX-FileCopyrightText: 2025 Avalon
|
||||
# SPDX-FileCopyrightText: 2025 Coenx-flex
|
||||
# SPDX-FileCopyrightText: 2025 Cojoke
|
||||
# SPDX-FileCopyrightText: 2025 HungryCuban
|
||||
# SPDX-FileCopyrightText: 2025 starch
|
||||
#
|
||||
# SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
- type: entity
|
||||
parent: [ClothingHeadHardsuitBase, ShowMedicalIcons] # DeltaV - no contraband
|
||||
id: ClothingHelmetHardsuitAsakim
|
||||
name: combat harness helmet # DeltaV - simple names
|
||||
description: Part of an advanced combat harness. # DeltaV - no fracture
|
||||
components:
|
||||
- type: Sprite
|
||||
sprite: _Mono/Clothing/Head/Hardsuits/asakim.rsi
|
||||
- type: Clothing
|
||||
sprite: _Mono/Clothing/Head/Hardsuits/asakim.rsi
|
||||
- type: PressureProtection
|
||||
highPressureMultiplier: 0.02
|
||||
lowPressureMultiplier: 1000
|
||||
- type: Armor
|
||||
modifiers:
|
||||
coefficients:
|
||||
Blunt: 0.8
|
||||
Slash: 0.8
|
||||
Piercing: 0.85
|
||||
Heat: 0.8
|
||||
- type: FlashImmunity
|
||||
- type: EyeProtection
|
||||
protectionTime: 15
|
||||
- type: ThermalVision
|
||||
pulseTime: 1
|
||||
isEquipment: true
|
||||
toggleAction: PulseThermalVision
|
||||
#- type: NightVision # DeltaV - redundant, species already has it
|
||||
# flashDurationMultiplier: 0.85
|
||||
# isEquipment: true
|
||||
# color: "#1584e6"
|
||||
- type: RadarConsole
|
||||
maxRange: 1024
|
||||
followEntity: true
|
||||
#pannable: true # DeltaV - unimplemented
|
||||
#- type: DetectionRangeMultiplier # upgraded thermal sensors # DeltaV - doesn't exist
|
||||
# infraredMultiplier: 1.5 # from 1
|
||||
# visualMultiplier: 8 # from 4
|
||||
- type: ActivatableUI
|
||||
key: enum.RadarConsoleUiKey.Key
|
||||
singleUser: true
|
||||
- type: UserInterface
|
||||
interfaces:
|
||||
enum.RadarConsoleUiKey.Key:
|
||||
type: RadarConsoleBoundUserInterface
|
||||
- type: HideLayerClothing
|
||||
slots:
|
||||
- Hair
|
||||
- Snout
|
||||
- HeadTop
|
||||
- HeadSide
|
||||
|
|
@ -0,0 +1,80 @@
|
|||
# SPDX-FileCopyrightText: 2025 Arcticular1
|
||||
# SPDX-FileCopyrightText: 2025 HungryCuban
|
||||
# SPDX-FileCopyrightText: 2025 core-mene
|
||||
# SPDX-FileCopyrightText: 2025 starch
|
||||
#
|
||||
# SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
- type: entity
|
||||
parent: ClothingOuterHardsuitBase # DeltaV - no contraband
|
||||
id: ClothingOuterHardsuitAsakim
|
||||
name: combat harness # DeltaV - simple name
|
||||
description: An advanced combat harness. Incredibly rare, and practically alien in technology compared to modern hardsuits. Once equipped, the armor binds itself with the wearer and cannot be removed without external release. # DeltaV - no fracture
|
||||
suffix: SelfUnremovable
|
||||
components:
|
||||
- type: Sprite
|
||||
sprite: _Mono/Clothing/OuterClothing/Hardsuits/asakim.rsi
|
||||
- type: Clothing
|
||||
sprite: _Mono/Clothing/OuterClothing/Hardsuits/asakim.rsi
|
||||
stripDelay: 60
|
||||
equipDelay: 5
|
||||
- type: SelfUnremovableClothing
|
||||
- type: PressureProtection
|
||||
highPressureMultiplier: 0.1
|
||||
lowPressureMultiplier: 1000
|
||||
- type: ExplosionResistance
|
||||
damageCoefficient: 0.35
|
||||
- type: FireProtection
|
||||
reduction: 0.7
|
||||
- type: ProtectedFromStepTriggers
|
||||
slots: WITHOUT_POCKET
|
||||
- type: DamageOnInteractProtection
|
||||
damageProtection:
|
||||
flatReductions:
|
||||
Heat: 10
|
||||
slots: OUTERCLOTHING
|
||||
- type: StaticPrice
|
||||
price: 50000
|
||||
- type: Armor
|
||||
modifiers:
|
||||
coefficients:
|
||||
Blunt: 0.5 # DeltaV - was 0.35
|
||||
Slash: 0.85
|
||||
Piercing: 0.4 # DeltaV - was 0.3
|
||||
Heat: 0.6 # DeltaV - was 0.4
|
||||
Radiation: 0
|
||||
Shock: 0.8
|
||||
Poison: 0.4
|
||||
Caustic: 0.4
|
||||
- type: ClothingSpeedModifier
|
||||
walkModifier: 1
|
||||
sprintModifier: 1
|
||||
- type: HeldSpeedModifier
|
||||
- type: ToggleableClothing # Goobstation - Modsuits change - Mono - this is a solution for helmet attachment/cover to not fit on hardsuits
|
||||
requiredSlot: outerclothing
|
||||
#blockUnequipWhenAttached: false # DeltaV - doesn't exist here
|
||||
#replaceCurrentClothing: true # DeltaV - doesn't exist here
|
||||
clothingPrototype: ClothingHelmetHardsuitAsakim # DeltaV - simplified ToggleableClothing
|
||||
#- type: PirateBountyItem # DeltaV - no way we have this
|
||||
# id: ClothingOuterHardsuitTacsuit
|
||||
- type: StaminaResistance # DeltaV - different comp name
|
||||
damageCoefficient: 0.4 # DeltaV - was 0.1
|
||||
- type: DamageOnUnequip # DeltaV
|
||||
unequipDamage:
|
||||
types:
|
||||
Blunt: 20
|
||||
Slash: 30
|
||||
Piercing: 40
|
||||
unequipSound: "/Audio/_DV/Effects/breakingbones.ogg"
|
||||
screamOnUnequip: true
|
||||
|
||||
- type: entity
|
||||
parent: ClothingOuterHardsuitAsakim
|
||||
id: ClothingOuterHardsuitAsakimUnremoveable
|
||||
description: An advanced combat harness. Incredibly rare, and practically alien in technology compared to modern hardsuits. Once equipped, the armor binds itself with the wearer and cannot be removed without external release. This one is fully binded to a warrior, and will take a long time to remove. # DeltaV - no fracture
|
||||
suffix: 120 stripDelay
|
||||
components:
|
||||
- type: Clothing
|
||||
stripDelay: 120
|
||||
equipDelay: 120
|
||||
|
||||
|
|
@ -0,0 +1,17 @@
|
|||
# SPDX-FileCopyrightText: 2025 Ilya246
|
||||
# SPDX-FileCopyrightText: 2025 UnicornOnLSD
|
||||
# SPDX-FileCopyrightText: 2025 starch
|
||||
#
|
||||
# SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
- type: entity
|
||||
parent: ClothingShoesBootsMagAdv
|
||||
id: ClothingShoesBootsMagAsakim
|
||||
name: combat magboots # DeltaV - no fracture
|
||||
description: State-of-the-art magnetic boots made for combat with advanced harnesses.
|
||||
components:
|
||||
#- type: FootstepModifier # DeltaV - sneaky
|
||||
# footstepSoundCollection:
|
||||
# collection: FootstepHeavySuit
|
||||
- type: ClothingSlowOnDamageModifier
|
||||
modifier: 0.35
|
||||
|
|
@ -0,0 +1,45 @@
|
|||
# SPDX-FileCopyrightText: 2025 Arcticular1
|
||||
# SPDX-FileCopyrightText: 2025 Onezero0
|
||||
# SPDX-FileCopyrightText: 2025 significant harassment
|
||||
# SPDX-FileCopyrightText: 2025 starch
|
||||
#
|
||||
# SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
- type: startingGear
|
||||
id: AsakimGear
|
||||
equipment:
|
||||
jumpsuit: ClothingUniformJumpsuitAsakim # DeltaV - dedicated jumpsuit with goob sprites instead of base ninja one
|
||||
back: ClothingBackpackAdvancedTactical # DeltaV - dedicated backpack instead of ERT one
|
||||
gloves: ClothingHandsGlovesCombat
|
||||
outerClothing: ClothingOuterHardsuitAsakimUnremoveable
|
||||
shoes: ClothingShoesBootsMagAsakim
|
||||
#pocket1: CrowbarPocket # DeltaV - fake
|
||||
pocket2: DoubleEmergencyOxygenTankFilled # DeltaV - filled instead of empty
|
||||
belt: ClothingBeltSecurityWebbing # DeltaV - use our webbing
|
||||
suitStorage: OxygenTankFilled
|
||||
inhand:
|
||||
- WeaponRifleAsakimAutopulser
|
||||
- WeaponHFKatana
|
||||
storage:
|
||||
back: # DeltaV - reorganized to fit
|
||||
#- RadioHandheldNF # DeltaV - fake
|
||||
- DoubleEmergencyOxygenTankFilled
|
||||
- BoxSurvival # DeltaV
|
||||
- JetpackMiniFilled
|
||||
- MedkitCombatFilled
|
||||
- MedkitCombatFilled
|
||||
#- SyringeCaseAltFilled # DeltaV - fake
|
||||
#- StorageImplanter # DeltaV - implanters too OP they already have insane stamina resist
|
||||
#- FreedomImplanter # DeltaV
|
||||
belt: # DeltaV - reordered for better fit
|
||||
#- HandHeldMassScannerBorg # DeltaV - redundant, their helmet is a mass scanner
|
||||
#- PowerDrill # DeltaV - less gamer loot, replaced with below
|
||||
- Screwdriver # DeltaV
|
||||
- Wrench # DeltaV
|
||||
- WelderIndustrial # DeltaV - less gamer loot roundstart, was WelderExperimental
|
||||
- JawsOfLife
|
||||
- Multitool # DeltaV - let them hack doors, also snugly fills out the chest rig
|
||||
#- CombatMedipen # DeltaV - these things are so busted
|
||||
#- CombatMedipen # DeltaV
|
||||
#- CombatMedipen # DeltaV
|
||||
#- CombatMedipen # DeltaV
|
||||
|
|
@ -0,0 +1,47 @@
|
|||
# SPDX-FileCopyrightText: 2025 starch
|
||||
#
|
||||
# SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
# DeltaV - this goes unused in our port, but it's being left in so admins can spawn these guys with their gear
|
||||
- type: entity
|
||||
parent: MobAsakim
|
||||
id: MobAsakimGhostrole
|
||||
name: asakim warrior
|
||||
suffix: Asakim
|
||||
components:
|
||||
- type: RandomHumanoidAppearance
|
||||
randomizeName: True
|
||||
- type: HumanoidAppearance
|
||||
#height: 1.2 # DeltaV - non-functional
|
||||
#width: 1.2 # DeltaV - non-functional
|
||||
- type: Loadout
|
||||
prototypes: [AsakimGear]
|
||||
#roleLoadout: [RoleSurvivalTankOnly] # DeltaV - nope
|
||||
- type: GhostRole
|
||||
name: ghost-role-information-asakim-name
|
||||
description: ghost-role-information-asakim-description
|
||||
rules: ghost-role-information-asakim-rules
|
||||
raffle:
|
||||
settings: default
|
||||
requirements:
|
||||
- !type:OverallPlaytimeRequirement
|
||||
time: 172800 # DeltaV - 48 hours, sync with antag
|
||||
mindRoles: # DeltaV
|
||||
- MindRoleAsakim
|
||||
- type: GhostTakeoverAvailable
|
||||
- type: RandomMetadata
|
||||
nameSegments:
|
||||
- NamesFirst # DeltaV - was NamesFirstMilitary
|
||||
- NamesLast # DeltaV - was NamesLastMilitary
|
||||
- type: NpcFactionMember
|
||||
factions:
|
||||
- Syndicate
|
||||
- type: SurgerySpeedModifier
|
||||
speedModifier: 1.5
|
||||
#- type: IntrinsicRadioReceiver # DeltaV - unused
|
||||
#- type: IntrinsicRadioTransmitter
|
||||
# channels:
|
||||
# - Remnants
|
||||
#- type: ActiveRadio
|
||||
# channels:
|
||||
# - Remnants
|
||||
|
|
@ -0,0 +1,279 @@
|
|||
# SPDX-FileCopyrightText: 2022 DrSmugleaf
|
||||
# SPDX-FileCopyrightText: 2022 EmoGarbage404
|
||||
# SPDX-FileCopyrightText: 2022 Flipp Syder
|
||||
# SPDX-FileCopyrightText: 2022 Jezithyr
|
||||
# SPDX-FileCopyrightText: 2022 Mervill
|
||||
# SPDX-FileCopyrightText: 2022 Moony
|
||||
# SPDX-FileCopyrightText: 2022 Paul
|
||||
# SPDX-FileCopyrightText: 2022 Rane
|
||||
# SPDX-FileCopyrightText: 2022 T-Stalker
|
||||
# SPDX-FileCopyrightText: 2022 ZeroDayDaemon
|
||||
# SPDX-FileCopyrightText: 2022 metalgearsloth
|
||||
# SPDX-FileCopyrightText: 2022 mirrorcult
|
||||
# SPDX-FileCopyrightText: 2022 och-och
|
||||
# SPDX-FileCopyrightText: 2022 rolfero
|
||||
# SPDX-FileCopyrightText: 2023 Alex Evgrashin
|
||||
# SPDX-FileCopyrightText: 2023 AndresE55
|
||||
# SPDX-FileCopyrightText: 2023 Cheackraze
|
||||
# SPDX-FileCopyrightText: 2023 Emisse
|
||||
# SPDX-FileCopyrightText: 2023 Errant
|
||||
# SPDX-FileCopyrightText: 2023 FoxxoTrystan
|
||||
# SPDX-FileCopyrightText: 2023 I.K
|
||||
# SPDX-FileCopyrightText: 2023 Kara
|
||||
# SPDX-FileCopyrightText: 2023 LankLTE
|
||||
# SPDX-FileCopyrightText: 2023 Leon Friedrich
|
||||
# SPDX-FileCopyrightText: 2023 Visne
|
||||
# SPDX-FileCopyrightText: 2023 notquitehadouken <1isthisameme>
|
||||
# SPDX-FileCopyrightText: 2023 potato1234_x
|
||||
# SPDX-FileCopyrightText: 2024 Aexxie
|
||||
# SPDX-FileCopyrightText: 2024 Dvir
|
||||
# SPDX-FileCopyrightText: 2024 Ed
|
||||
# SPDX-FileCopyrightText: 2024 KittenColony
|
||||
# SPDX-FileCopyrightText: 2024 Minemoder5000
|
||||
# SPDX-FileCopyrightText: 2024 Mnemotechnican
|
||||
# SPDX-FileCopyrightText: 2024 Morb
|
||||
# SPDX-FileCopyrightText: 2024 Mr. 27
|
||||
# SPDX-FileCopyrightText: 2024 Nairod
|
||||
# SPDX-FileCopyrightText: 2024 Nemanja
|
||||
# SPDX-FileCopyrightText: 2024 Pieter-Jan Briers
|
||||
# SPDX-FileCopyrightText: 2024 Plykiya
|
||||
# SPDX-FileCopyrightText: 2024 Whatstone
|
||||
# SPDX-FileCopyrightText: 2024 lunarcomets
|
||||
# SPDX-FileCopyrightText: 2024 no
|
||||
# SPDX-FileCopyrightText: 2024 portfiend
|
||||
# SPDX-FileCopyrightText: 2025 ScyronX
|
||||
# SPDX-FileCopyrightText: 2025 SuperJoelDood
|
||||
# SPDX-FileCopyrightText: 2025 Suyo
|
||||
# SPDX-FileCopyrightText: 2025 starch
|
||||
#
|
||||
# SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
- type: entity
|
||||
save: false
|
||||
name: Urist McAsakim
|
||||
parent: BaseMobSpeciesOrganic
|
||||
id: BaseMobAsakim
|
||||
abstract: true
|
||||
components:
|
||||
- type: HumanoidAppearance
|
||||
species: Asakim
|
||||
hideLayersOnEquip:
|
||||
- Snout
|
||||
# - HeadTop # WWDP - Because visible horns its cool
|
||||
- HeadSide
|
||||
- type: Hunger
|
||||
- type: Puller
|
||||
needsHands: false
|
||||
- type: MovementSpeedModifier
|
||||
baseWalkSpeed : 2.7
|
||||
baseSprintSpeed : 4.65
|
||||
weightlessAcceleration: 1.5 # Slightly more manueverable in space.
|
||||
- type: Fixtures
|
||||
fixtures: # TODO: This needs a second fixture just for mob collisions.
|
||||
fix1:
|
||||
shape:
|
||||
!type:PhysShapeCircle
|
||||
radius: 0.48
|
||||
density: 275 # Its an abandoned bioweapon species with 4 arms, of course it should be able to fight a Oni.
|
||||
restitution: 0.0
|
||||
mask:
|
||||
- MobMask
|
||||
layer:
|
||||
- MobLayer
|
||||
- type: Sprite
|
||||
scale: 1.2, 1.2
|
||||
- type: PlayerToolModifier
|
||||
pryTimeMultiplier: 0.7
|
||||
- type: BonusMeleeDamage
|
||||
damageModifierSet:
|
||||
coefficients:
|
||||
Blunt: 1.1
|
||||
Slash: 1.1
|
||||
Piercing: 1.1
|
||||
Asphyxiation: 1
|
||||
- type: Thirst
|
||||
- type: Icon
|
||||
sprite: _Mono/Mobs/Species/Asakim/parts.rsi
|
||||
state: full
|
||||
- type: Body
|
||||
prototype: Asakim
|
||||
requiredLegs: 2
|
||||
- type: Butcherable
|
||||
butcheringType: Spike
|
||||
spawned:
|
||||
- id: FoodMeatLizard
|
||||
amount: 7
|
||||
#- type: LizardAccent # DeltaV - replaced with language accent
|
||||
- type: Speech
|
||||
speechSounds: Lizard
|
||||
speechVerb: Reptilian
|
||||
allowedEmotes: ['Thump']
|
||||
- type: TypingIndicator
|
||||
proto: lizard
|
||||
- type: Vocal
|
||||
sounds:
|
||||
Male: MaleReptilian
|
||||
Female: FemaleReptilian
|
||||
Unsexed: MaleReptilian
|
||||
#- type: LanguageKnowledge # DeltaV - ee language port when
|
||||
# speaks:
|
||||
# - Draconic
|
||||
# - Azaziba
|
||||
# understands:
|
||||
# - Draconic
|
||||
# - Azaziba
|
||||
- type: BodyEmotes
|
||||
soundsId: ReptilianBodyEmotes
|
||||
- type: Damageable
|
||||
damageContainer: Biological
|
||||
damageModifierSet: GenemoddedScale
|
||||
- type: MeleeWeapon
|
||||
soundHit:
|
||||
collection: AlienClaw
|
||||
angle: 30
|
||||
animation: WeaponArcClaw
|
||||
damage:
|
||||
types:
|
||||
Slash: 15
|
||||
Structural: 24
|
||||
- type: SolutionContainerManager
|
||||
solutions:
|
||||
melee:
|
||||
reagents:
|
||||
- ReagentId: GastroToxin
|
||||
Quantity: 20
|
||||
- type: SolutionRegeneration
|
||||
solution: melee
|
||||
generated:
|
||||
reagents:
|
||||
- ReagentId: GastroToxin
|
||||
Quantity: 20
|
||||
#- type: NightVision # DeltaV - moved to eye organ
|
||||
# isEquipment: false
|
||||
# color: "#ae65bf"
|
||||
# activateSound: null
|
||||
# deactivateSound: null
|
||||
- type: MeleeChemicalInjector
|
||||
solution: melee
|
||||
transferAmount: 1
|
||||
- type: Temperature
|
||||
heatDamageThreshold: 400
|
||||
coldDamageThreshold: 285
|
||||
currentTemperature: 310.15
|
||||
specificHeat: 42
|
||||
coldDamage:
|
||||
types:
|
||||
Cold : 0.05 #per second, scales with temperature & other constants
|
||||
heatDamage:
|
||||
types:
|
||||
Heat : 0.6 #per second, scales with temperature & other constants
|
||||
- type: TemperatureSpeed
|
||||
thresholds:
|
||||
301: 0.8
|
||||
295: 0.6
|
||||
285: 0.4
|
||||
- type: Wagging
|
||||
- type: NpcFactionMember
|
||||
factions:
|
||||
- Syndicate # Making new AI factions is annoying with all the hostilities I have to add, whatever.
|
||||
- type: Inventory
|
||||
speciesId: asakim
|
||||
# WWDP-Edit-Start
|
||||
femaleDisplacements:
|
||||
jumpsuit:
|
||||
sizeMaps:
|
||||
32:
|
||||
sprite: _White/Mobs/Species/displacement.rsi
|
||||
state: jumpsuit-female
|
||||
shoes:
|
||||
sizeMaps:
|
||||
32:
|
||||
sprite: _White/Mobs/Species/displacement.rsi
|
||||
state: shoes
|
||||
displacements:
|
||||
jumpsuit:
|
||||
sizeMaps:
|
||||
32:
|
||||
sprite: _White/Mobs/Species/displacement.rsi
|
||||
state: jumpsuit
|
||||
shoes:
|
||||
sizeMaps:
|
||||
32:
|
||||
sprite: _White/Mobs/Species/displacement.rsi
|
||||
state: shoes
|
||||
#- type: GuideHelp # uncomment when you actually bring the guide over
|
||||
# guides:
|
||||
# - Asakim
|
||||
# # WWDP-Edit-End
|
||||
# Begin DeltaV Additions
|
||||
- type: SyllableObfuscationAccent # unintelligable language
|
||||
accent: draconian
|
||||
- type: BlockWriting # can't speak common can't write common. better get an AAC tablet
|
||||
# End DeltaV Additions
|
||||
|
||||
- type: entity
|
||||
save: false
|
||||
name: Urist McAsakim
|
||||
suffix: Urisst' MzAsakim
|
||||
parent: BaseMobAsakim
|
||||
id: MobAsakim
|
||||
|
||||
- type: entity
|
||||
parent: BaseMobAsakim
|
||||
id: MobAsakimRandom
|
||||
name: Urist McAsakim
|
||||
suffix: Random Appearance
|
||||
components:
|
||||
- type: RandomHumanoidAppearance
|
||||
- type: RandomMetadata
|
||||
nameSegments:
|
||||
- NamesReptilianMale
|
||||
|
||||
- type: entity
|
||||
parent: BaseSpeciesDummy
|
||||
id: MobAsakimDummy
|
||||
categories: [ HideSpawnMenu ]
|
||||
description: A dummy Asakim meant to be used in character setup.
|
||||
components:
|
||||
- type: HumanoidAppearance
|
||||
species: Asakim
|
||||
hideLayersOnEquip: # WWDP
|
||||
- Snout
|
||||
# - HeadTop # WWDP - Because visible horns its cool
|
||||
- HeadSide
|
||||
- type: Inventory
|
||||
speciesId: asakim
|
||||
femaleDisplacements:
|
||||
jumpsuit:
|
||||
sizeMaps:
|
||||
32:
|
||||
sprite: _White/Mobs/Species/displacement.rsi
|
||||
state: jumpsuit-female
|
||||
shoes:
|
||||
sizeMaps:
|
||||
32:
|
||||
sprite: _White/Mobs/Species/displacement.rsi
|
||||
state: shoes
|
||||
displacements:
|
||||
jumpsuit:
|
||||
sizeMaps:
|
||||
32:
|
||||
sprite: _White/Mobs/Species/displacement.rsi
|
||||
state: jumpsuit
|
||||
shoes:
|
||||
sizeMaps:
|
||||
32:
|
||||
sprite: _White/Mobs/Species/displacement.rsi
|
||||
state: shoes
|
||||
|
||||
- type: damageModifierSet
|
||||
id: GenemoddedScale # Strong brute-focused scales.
|
||||
coefficients:
|
||||
Cold: 1.2
|
||||
Radiation: 1.2
|
||||
Poison: 1.2
|
||||
Piercing: 0.8
|
||||
Slash: 0.95 # DeltaV - emphasize slash weakness, was 0.75
|
||||
Blunt: 0.75
|
||||
Heat: 1.1
|
||||
Shock: 1.1
|
||||
|
|
@ -0,0 +1,26 @@
|
|||
# SPDX-FileCopyrightText: 2025 starch
|
||||
#
|
||||
# SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
- type: entity
|
||||
id: HandheldAutopulserProjectile
|
||||
name: plasma projectile
|
||||
parent: BaseBullet
|
||||
categories: [ HideSpawnMenu ]
|
||||
components:
|
||||
- type: Projectile
|
||||
damage:
|
||||
types:
|
||||
Caustic: 4 # DeltaV - was 5
|
||||
Heat: 6 # DeltaV - was 14
|
||||
Radiation: 4 # DeltaV - was 5
|
||||
- type: Sprite
|
||||
sprite: _Impstation/Objects/Weapons/Guns/Projectiles/energybolts.rsi # DeltaV
|
||||
scale: 0.4, 0.4
|
||||
layers:
|
||||
- state: medium # DeltaV
|
||||
shader: unshaded
|
||||
- type: Ammo
|
||||
muzzleFlash: MuzzleFlashEffectEnergySmall # DeltaV - awesome imp sprites
|
||||
- type: PointLight
|
||||
color: "#FF00AA"
|
||||
|
|
@ -0,0 +1,58 @@
|
|||
# SPDX-FileCopyrightText: 2025 starch
|
||||
#
|
||||
# SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
- type: entity
|
||||
name: plasma autopulser # DeltaV - simplify name
|
||||
parent: [BaseWeaponBattery, BaseGunWieldable]
|
||||
id: WeaponRifleAsakimAutopulser
|
||||
description: An advanced handheld plasma rifle. # DeltaV - no fracture here
|
||||
components:
|
||||
- type: Sprite
|
||||
sprite: _Mono/Objects/Weapons/Guns/Battery/asakimrifle.rsi
|
||||
layers:
|
||||
- state: base
|
||||
map: ["enum.GunVisualLayers.Base"]
|
||||
- state: mag-0
|
||||
map: ["enum.GunVisualLayers.Mag"]
|
||||
#- type: WieldedCrosshair # DeltaV - nope
|
||||
# rsi:
|
||||
# sprite: _RMC14/Interface/MousePointer/flamer_mouse.rsi
|
||||
# state: all
|
||||
- type: Clothing
|
||||
sprite: _Mono/Objects/Weapons/Guns/Battery/asakimrifle.rsi
|
||||
- type: GunWieldBonus
|
||||
minAngle: -18
|
||||
maxAngle: -14
|
||||
- type: Gun
|
||||
minAngle: 18
|
||||
maxAngle: 26
|
||||
fireRate: 6
|
||||
burstFireRate: 15
|
||||
shotsPerBurst: 3 # DeltaV - was 5
|
||||
selectedMode: FullAuto
|
||||
availableModes:
|
||||
#- SemiAuto # DeltaV - semi was just kinda lame
|
||||
- Burst
|
||||
- FullAuto
|
||||
soundGunshot:
|
||||
path: /Audio/Weapons/Guns/Gunshots/ship_svalinn.ogg
|
||||
- type: MagazineVisuals
|
||||
magState: mag
|
||||
steps: 1
|
||||
zeroVisible: false
|
||||
- type: ProjectileBatteryAmmoProvider
|
||||
proto: HandheldAutopulserProjectile
|
||||
fireCost: 50 # DeltaV - doubled fire cost, was 25
|
||||
- type: BatteryWeaponFireModes # DeltaV - selectable disabler mode
|
||||
fireModes:
|
||||
- proto: HandheldAutopulserProjectile
|
||||
fireCost: 50 # DeltaV - doubled fire cost, was 25
|
||||
- proto: HandheldAutopulserDisablerProjectile
|
||||
fireCost: 35 # DeltaV - less than doubled fire cost for disable mode, was 25
|
||||
- type: Appearance
|
||||
- type: StaticPrice
|
||||
price: 1750
|
||||
- type: BatterySelfRecharger
|
||||
autoRecharge: true
|
||||
autoRechargeRate: 30 # DeltaV - double to compensate for increased cost, was 15
|
||||
|
|
@ -0,0 +1,35 @@
|
|||
- type: entity
|
||||
name: high-frequency blade
|
||||
parent: Katana # DeltaV - no contraband
|
||||
id: WeaponHFKatana
|
||||
description: A high-frequency blade. It's incredibly powerful. # Why the glorp would a katana be modified to have a HF blade :nerd::point_up:
|
||||
components:
|
||||
- type: Sprite
|
||||
sprite: _Mono/Objects/Weapons/Melee/hfblade.rsi
|
||||
- type: MeleeWeapon
|
||||
attackRate: 1.25
|
||||
wideAnimationRotation: -60
|
||||
damage:
|
||||
types: # It's still incredibly strong, but -reasonable-
|
||||
Slash: 19 # DeltaV - was 23
|
||||
Shock: 6 # DeltaV - was 6
|
||||
Structural: 25 # Ion doesn't exist, according to Proto manager.
|
||||
- type: Item
|
||||
sprite: _Mono/Objects/Weapons/Melee/hfblade.rsi
|
||||
- type: Clothing
|
||||
sprite: _Mono/Objects/Weapons/Melee/hfblade.rsi
|
||||
slots:
|
||||
- Back
|
||||
- Belt
|
||||
- suitStorage
|
||||
- type: Reflect
|
||||
reflectProb: 0.15 # DeltaV - was 0.35, these guys are strong enough as-is come on
|
||||
- type: DisarmMalus
|
||||
malus: 0.9
|
||||
- type: StaticPrice
|
||||
price: 5000 # YOU CALL THAT A BLADE.... I'LL SHOW YOU A BLADE...
|
||||
#- type: Construction # DeltaV - not gonna let tiders build this
|
||||
# graph: GraphWeaponHFKatana
|
||||
# node: WeaponHFKatana
|
||||
#- type: PirateBountyItem # DeltaV - no pirates
|
||||
# id: TSFEnergyWeapon
|
||||
|
|
@ -0,0 +1,8 @@
|
|||
# SPDX-FileCopyrightText: 2025 starch
|
||||
#
|
||||
# SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
- type: preloadedGrid
|
||||
id: AsakimSmall
|
||||
path: /Maps/_Mono/ShuttleEvent/asakim_small.yml
|
||||
copies: 1 # DeltaV - was 4
|
||||
|
|
@ -0,0 +1,64 @@
|
|||
# SPDX-FileCopyrightText: 2025 Redrover1760
|
||||
# SPDX-FileCopyrightText: 2025 starch
|
||||
#
|
||||
# SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
#- type: entityTable # DeltaV - unused
|
||||
# id: AsakimShipsTable
|
||||
# table: !type:AllSelector # we need to pass a list of rules, since rules have further restrictions to consider via StationEventComp
|
||||
# children:
|
||||
# - id: UnknownShuttleAsakimSmall
|
||||
|
||||
- type: entity
|
||||
parent: BaseUnknownShuttleRule # DeltaV - was BaseRandomShuttleRule
|
||||
id: AsakimShuttle
|
||||
components:
|
||||
- type: StationEvent
|
||||
#startAnnouncement: station-event-asakim-shuttle-detected # DeltaV - no
|
||||
# startAudio:
|
||||
# path: /Audio/Misc/notice1.ogg
|
||||
weight: 1.5 # DeltaV - was 2, now less common then Arms Dealer. rare role
|
||||
minimumPlayers: 25 # DeltaV
|
||||
maxOccurrences: 1 # DeltaV - was 4
|
||||
duration: null # DeltaV
|
||||
#- type: GameRule # DeltaV - redundant
|
||||
# minPlayers: 40
|
||||
- type: LoadMapRule
|
||||
preloadedGrid: AsakimSmall
|
||||
# Begin DeltaV Additions
|
||||
- type: PrecognitionResult
|
||||
message: psionic-power-precognition-asakim-spawn-result-message
|
||||
- type: AntagSpawner
|
||||
prototype: MobAsakim
|
||||
- type: AntagRandomObjectives
|
||||
sets:
|
||||
- groups: AsakimObjectiveGroup
|
||||
maxPicks: 2
|
||||
maxDifficulty: 100 # unused but mandatory
|
||||
- type: AntagSelection
|
||||
agentName: roles-antag-asakim-name
|
||||
definitions:
|
||||
- spawnerPrototype: SpawnPointGhostAsakim
|
||||
min: 1
|
||||
max: 1
|
||||
pickPlayer: false
|
||||
startingGear: AsakimGear
|
||||
roleLoadout:
|
||||
- RoleSurvivalStandard # maybe remove this
|
||||
briefing:
|
||||
text: asakim-role-briefing
|
||||
color: "#5085fa"
|
||||
sound: "/Audio/_DV/Ambience/Antag/asakimbriefing.ogg"
|
||||
components:
|
||||
- type: RandomHumanoidAppearance
|
||||
randomizeName: true
|
||||
- type: NpcFactionMember
|
||||
factions:
|
||||
- Syndicate
|
||||
- type: SurgerySpeedModifier # not sure why this was in the original one but whatever
|
||||
speedModifier: 1.5
|
||||
#- type: PsionicBonusChance # uncomment when psionics are cool
|
||||
# multiplier: 999 # no way to guarentee random psionics so. next best thing
|
||||
mindRoles:
|
||||
- MindRoleAsakim
|
||||
# End DeltaV Additions
|
||||
|
|
@ -0,0 +1,162 @@
|
|||
# SPDX-FileCopyrightText: 2025 starch
|
||||
#
|
||||
# SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
- type: species
|
||||
id: Asakim
|
||||
name: species-name-asakim
|
||||
roundStart: false # sad...
|
||||
prototype: MobAsakim
|
||||
sprites: MobAsakimSprites
|
||||
dollPrototype: MobAsakimDummy
|
||||
skinColoration: Hues
|
||||
defaultSkinTone: "#444541"
|
||||
markingLimits: MobAsakimMarkingLimits
|
||||
maleFirstNames: NamesReptilianMale # DeltaV
|
||||
femaleFirstNames: NamesReptilianFemale # DeltaV
|
||||
naming: FirstDashFirst
|
||||
|
||||
- type: speciesBaseSprites
|
||||
id: MobAsakimSprites
|
||||
sprites:
|
||||
Special: MobAsakimAnyMarking
|
||||
Head: MobAsakimHead
|
||||
HeadTop: MobAsakimAnyMarking
|
||||
Chest: MobAsakimTorso
|
||||
Tail: MobHumanoidAnyMarking
|
||||
Eyes: MobAsakimEyes
|
||||
LArm: MobAsakimLArm
|
||||
RArm: MobAsakimRArm
|
||||
LHand: MobAsakimLHand
|
||||
RHand: MobAsakimRHand
|
||||
LLeg: MobAsakimLLeg
|
||||
RLeg: MobAsakimRLeg
|
||||
LFoot: MobAsakimLFoot
|
||||
RFoot: MobAsakimRFoot
|
||||
|
||||
- type: humanoidBaseSprite
|
||||
id: MobAsakimAnyMarking
|
||||
|
||||
- type: humanoidBaseSprite
|
||||
id: MobAsakimMarkingMatchSkin
|
||||
markingsMatchSkin: true
|
||||
|
||||
- type: humanoidBaseSprite
|
||||
id: MobAsakimHead
|
||||
baseSprite:
|
||||
sprite: _Mono/Mobs/Species/Asakim/parts.rsi
|
||||
state: head_m
|
||||
|
||||
- type: humanoidBaseSprite
|
||||
id: MobAsakimHeadMale
|
||||
baseSprite:
|
||||
sprite: _Mono/Mobs/Species/Asakim/parts.rsi
|
||||
state: head_m
|
||||
|
||||
- type: humanoidBaseSprite
|
||||
id: MobAsakimHeadFemale
|
||||
baseSprite:
|
||||
sprite: _Mono/Mobs/Species/Asakim/parts.rsi
|
||||
state: head_f
|
||||
|
||||
- type: humanoidBaseSprite
|
||||
id: MobAsakimTorso
|
||||
baseSprite:
|
||||
sprite: _Mono/Mobs/Species/Asakim/parts.rsi
|
||||
state: torso_m
|
||||
|
||||
- type: humanoidBaseSprite
|
||||
id: MobAsakimTorsoMale
|
||||
baseSprite:
|
||||
sprite: _Mono/Mobs/Species/Asakim/parts.rsi
|
||||
state: torso_m
|
||||
|
||||
- type: humanoidBaseSprite
|
||||
id: MobAsakimTorsoFemale
|
||||
baseSprite:
|
||||
sprite: _Mono/Mobs/Species/Asakim/parts.rsi
|
||||
state: torso_f
|
||||
|
||||
- type: humanoidBaseSprite
|
||||
id: MobAsakimLLeg
|
||||
baseSprite:
|
||||
sprite: _Mono/Mobs/Species/Asakim/parts.rsi
|
||||
state: l_leg
|
||||
|
||||
- type: humanoidBaseSprite
|
||||
id: MobAsakimLArm
|
||||
baseSprite:
|
||||
sprite: _Mono/Mobs/Species/Asakim/parts.rsi
|
||||
state: l_arm
|
||||
|
||||
- type: humanoidBaseSprite
|
||||
id: MobAsakimLHand
|
||||
baseSprite:
|
||||
sprite: _Mono/Mobs/Species/Asakim/parts.rsi
|
||||
state: l_hand
|
||||
|
||||
- type: humanoidBaseSprite
|
||||
id: MobAsakimLFoot
|
||||
baseSprite:
|
||||
sprite: _Mono/Mobs/Species/Asakim/parts.rsi
|
||||
state: l_foot
|
||||
|
||||
- type: humanoidBaseSprite
|
||||
id: MobAsakimRLeg
|
||||
baseSprite:
|
||||
sprite: _Mono/Mobs/Species/Asakim/parts.rsi
|
||||
state: r_leg
|
||||
|
||||
- type: humanoidBaseSprite
|
||||
id: MobAsakimRArm
|
||||
baseSprite:
|
||||
sprite: _Mono/Mobs/Species/Asakim/parts.rsi
|
||||
state: r_arm
|
||||
|
||||
- type: humanoidBaseSprite
|
||||
id: MobAsakimRHand
|
||||
baseSprite:
|
||||
sprite: _Mono/Mobs/Species/Asakim/parts.rsi
|
||||
state: r_hand
|
||||
|
||||
- type: humanoidBaseSprite
|
||||
id: MobAsakimRFoot
|
||||
baseSprite:
|
||||
sprite: _Mono/Mobs/Species/Asakim/parts.rsi
|
||||
state: r_foot
|
||||
|
||||
- type: humanoidBaseSprite
|
||||
id: MobAsakimEyes
|
||||
baseSprite:
|
||||
sprite: _Mono/Mobs/Customization/asakimeyes.rsi
|
||||
state: eyes
|
||||
|
||||
- type: markingPoints
|
||||
id: MobAsakimMarkingLimits
|
||||
onlyWhitelisted: true
|
||||
points:
|
||||
Hair:
|
||||
points: 0
|
||||
required: false
|
||||
FacialHair:
|
||||
points: 0
|
||||
required: false
|
||||
Tail:
|
||||
points: 1
|
||||
required: true
|
||||
defaultMarkings: [ LizardTailSmooth ]
|
||||
HeadTop:
|
||||
points: 2
|
||||
required: false
|
||||
HeadSide:
|
||||
points: 2 # WWDP-Edit
|
||||
required: false
|
||||
Chest:
|
||||
points: 3
|
||||
required: false
|
||||
Legs:
|
||||
points: 2
|
||||
required: false
|
||||
Arms:
|
||||
points: 2
|
||||
required: false
|
||||
|
After Width: | Height: | Size: 1.4 KiB |
|
After Width: | Height: | Size: 468 B |
|
After Width: | Height: | Size: 617 B |
|
After Width: | Height: | Size: 655 B |
|
|
@ -0,0 +1,26 @@
|
|||
{
|
||||
"version": 1,
|
||||
"license": "CC-BY-SA-3.0",
|
||||
"copyright": "Modified by Jackal298 (github), based on paradise station at https://github.com/ParadiseSS13/Paradise/blob/ede55cc8f5b50abcd4f51d37779b56853a440a9a/icons/obj/clothing/uniforms.dmi, fix digi sprites by DreamlyJack",
|
||||
"size": {
|
||||
"x": 32,
|
||||
"y": 32
|
||||
},
|
||||
"states": [
|
||||
{
|
||||
"name": "icon"
|
||||
},
|
||||
{
|
||||
"name": "equipped-INNERCLOTHING",
|
||||
"directions": 4
|
||||
},
|
||||
{
|
||||
"name": "inhand-left",
|
||||
"directions": 4
|
||||
},
|
||||
{
|
||||
"name": "inhand-right",
|
||||
"directions": 4
|
||||
}
|
||||
]
|
||||
}
|
||||
|
After Width: | Height: | Size: 6.9 KiB |
|
After Width: | Height: | Size: 6.9 KiB |
|
After Width: | Height: | Size: 386 B |
|
|
@ -0,0 +1,23 @@
|
|||
{
|
||||
"version": 1,
|
||||
"license": "CC-BY-SA-3.0",
|
||||
"copyright": "Made by _starch_ (Discord)",
|
||||
"copyright": "Icon state from NSV13",
|
||||
"size": {
|
||||
"x": 32,
|
||||
"y": 32
|
||||
},
|
||||
"states": [
|
||||
{
|
||||
"name": "equipped-HELMET",
|
||||
"directions": 4
|
||||
},
|
||||
{
|
||||
"name": "equipped-HELMET-asakim",
|
||||
"directions": 4
|
||||
},
|
||||
{
|
||||
"name": "icon"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
After Width: | Height: | Size: 11 KiB |
|
After Width: | Height: | Size: 11 KiB |
|
After Width: | Height: | Size: 701 B |
|
After Width: | Height: | Size: 587 B |
|
After Width: | Height: | Size: 600 B |
|
|
@ -0,0 +1,30 @@
|
|||
{
|
||||
"version": 1,
|
||||
"license": "CC-BY-SA-3.0",
|
||||
"copyright": "Edited from Baystation12 sprites by _starch_ (discord)",
|
||||
"size": {
|
||||
"x": 32,
|
||||
"y": 32
|
||||
},
|
||||
"states": [
|
||||
{
|
||||
"name": "equipped-OUTERCLOTHING-asakim",
|
||||
"directions": 4
|
||||
},
|
||||
{
|
||||
"name": "equipped-OUTERCLOTHING",
|
||||
"directions": 4
|
||||
},
|
||||
{
|
||||
"name": "icon"
|
||||
},
|
||||
{
|
||||
"name": "inhand-right",
|
||||
"directions": 4
|
||||
},
|
||||
{
|
||||
"name": "inhand-left",
|
||||
"directions": 4
|
||||
}
|
||||
]
|
||||
}
|
||||
|
After Width: | Height: | Size: 526 B |
|
|
@ -0,0 +1,15 @@
|
|||
{
|
||||
"version": 1,
|
||||
"license": "CC-BY-SA-3.0",
|
||||
"copyright": "Modified from /tg/ station sprites by _starch_ (discord).",
|
||||
"size": {
|
||||
"x": 32,
|
||||
"y": 32
|
||||
},
|
||||
"states": [
|
||||
{
|
||||
"name": "eyes",
|
||||
"directions": 4
|
||||
}
|
||||
]
|
||||
}
|
||||
|
After Width: | Height: | Size: 6.8 KiB |
|
After Width: | Height: | Size: 7.2 KiB |
|
After Width: | Height: | Size: 7.2 KiB |
|
After Width: | Height: | Size: 6.0 KiB |
|
After Width: | Height: | Size: 5.6 KiB |
|
After Width: | Height: | Size: 6.3 KiB |
|
After Width: | Height: | Size: 6.4 KiB |
|
|
@ -0,0 +1,63 @@
|
|||
{
|
||||
"version": 1,
|
||||
"license": "CC-BY-SA-3.0",
|
||||
"copyright": "https://github.com/tgstation/tgstation/blob/08898964e67a0d517ca4e47eec7039394b694ac2/icons/mob/species/lizard/bodyparts.dmi",
|
||||
"copyright": "Edited by _starch_ (Discord) from sprites from /tg/, and from sprites edited by PixelTheKermit (github).",
|
||||
"size": {
|
||||
"x": 32,
|
||||
"y": 32
|
||||
},
|
||||
"states": [
|
||||
{
|
||||
"name": "full"
|
||||
},
|
||||
{
|
||||
"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": "r_arm",
|
||||
"directions": 4
|
||||
},
|
||||
{
|
||||
"name": "r_foot",
|
||||
"directions": 4
|
||||
},
|
||||
{
|
||||
"name": "r_hand",
|
||||
"directions": 4
|
||||
},
|
||||
{
|
||||
"name": "r_leg",
|
||||
"directions": 4
|
||||
},
|
||||
{
|
||||
"name": "torso_f",
|
||||
"directions": 4
|
||||
},
|
||||
{
|
||||
"name": "torso_m",
|
||||
"directions": 4
|
||||
}
|
||||
]
|
||||
}
|
||||
|
After Width: | Height: | Size: 6.0 KiB |
|
After Width: | Height: | Size: 5.6 KiB |
|
After Width: | Height: | Size: 6.3 KiB |
|
After Width: | Height: | Size: 6.4 KiB |
|
After Width: | Height: | Size: 8.7 KiB |
|
After Width: | Height: | Size: 8.5 KiB |
|
After Width: | Height: | Size: 6.1 KiB |
|
After Width: | Height: | Size: 7.1 KiB |
|
After Width: | Height: | Size: 7.1 KiB |
|
After Width: | Height: | Size: 6.1 KiB |
|
After Width: | Height: | Size: 6.1 KiB |
|
After Width: | Height: | Size: 6.1 KiB |
|
After Width: | Height: | Size: 5.3 KiB |
|
|
@ -0,0 +1,44 @@
|
|||
{
|
||||
"version": 1,
|
||||
"license": "CC-BY-SA-3.0",
|
||||
"copyright": "Kitbashed from various sprites by _starch_ (discord)",
|
||||
"size": {
|
||||
"x": 32,
|
||||
"y": 32
|
||||
},
|
||||
"states": [
|
||||
{
|
||||
"name": "icon"
|
||||
},
|
||||
{
|
||||
"name": "base"
|
||||
},
|
||||
{
|
||||
"name": "mag-0"
|
||||
},
|
||||
{
|
||||
"name": "inhand-left",
|
||||
"directions": 4
|
||||
},
|
||||
{
|
||||
"name": "inhand-right",
|
||||
"directions": 4
|
||||
},
|
||||
{
|
||||
"name": "wielded-inhand-left",
|
||||
"directions": 4
|
||||
},
|
||||
{
|
||||
"name": "wielded-inhand-right",
|
||||
"directions": 4
|
||||
},
|
||||
{
|
||||
"name": "equipped-BACKPACK",
|
||||
"directions": 4
|
||||
},
|
||||
{
|
||||
"name": "equipped-SUITSTORAGE",
|
||||
"directions": 4
|
||||
}
|
||||
]
|
||||
}
|
||||
|
After Width: | Height: | Size: 8.3 KiB |
|
After Width: | Height: | Size: 7.5 KiB |
|
After Width: | Height: | Size: 6.2 KiB |
|
After Width: | Height: | Size: 6.4 KiB |
|
After Width: | Height: | Size: 6.2 KiB |
|
After Width: | Height: | Size: 5.9 KiB |
|
After Width: | Height: | Size: 6.5 KiB |
|
After Width: | Height: | Size: 6.4 KiB |
|
|
@ -0,0 +1,34 @@
|
|||
{
|
||||
"version": 1,
|
||||
"license": "CC-BY-SA-3.0",
|
||||
"copyright": "Taken from tgstation at https://github.com/tgstation/tgstation/commit/a9451f4d22f233d328b63490c2bcf64a640e42ff and modified by Jackal298. Recolored by _starch_ (discord)",
|
||||
"size": {
|
||||
"x": 32,
|
||||
"y": 32
|
||||
},
|
||||
"states": [
|
||||
{
|
||||
"name": "icon"
|
||||
},
|
||||
{
|
||||
"name": "equipped-BELT",
|
||||
"directions": 4
|
||||
},
|
||||
{
|
||||
"name": "inhand-left",
|
||||
"directions": 4
|
||||
},
|
||||
{
|
||||
"name": "inhand-right",
|
||||
"directions": 4
|
||||
},
|
||||
{
|
||||
"name": "equipped-BACKPACK",
|
||||
"directions": 4
|
||||
},
|
||||
{
|
||||
"name": "equipped-SUITSTORAGE",
|
||||
"directions": 4
|
||||
}
|
||||
]
|
||||
}
|
||||
|
After Width: | Height: | Size: 468 B |
|
After Width: | Height: | Size: 428 B |
|
|
@ -0,0 +1,26 @@
|
|||
{
|
||||
"version": 1,
|
||||
"license": "CC-BY-SA-3.0",
|
||||
"copyright": "by Litogin",
|
||||
"size": {
|
||||
"x": 32,
|
||||
"y": 32
|
||||
},
|
||||
"load": {
|
||||
"srgb": false
|
||||
},
|
||||
"states": [
|
||||
{
|
||||
"name": "jumpsuit",
|
||||
"directions": 4
|
||||
},
|
||||
{
|
||||
"name": "jumpsuit-female",
|
||||
"directions": 4
|
||||
},
|
||||
{
|
||||
"name": "shoes",
|
||||
"directions" : 4
|
||||
}
|
||||
]
|
||||
}
|
||||
|
After Width: | Height: | Size: 364 B |