Skip to content

Commit

Permalink
ling check & guidebook entry (Simple-Station#442)
Browse files Browse the repository at this point in the history
* gaming

* real!

* real 3!

* fuck

* great

* ungreat

* gnomes are here.

* g

* fuck

* raaagh cleanup

* fart

* ghfghdfghfbvd

* boobooboo

* RAAAAAAAAAAAAGH

* zased

---------

Co-authored-by: whateverusername0 <whateveremail>
  • Loading branch information
whateverusername0 authored and VMSolidus committed Aug 16, 2024
1 parent a43ec3c commit 520f848
Show file tree
Hide file tree
Showing 13 changed files with 135 additions and 24 deletions.
19 changes: 13 additions & 6 deletions Content.Server/Goobstation/Changeling/ChangelingSystem.cs
Original file line number Diff line number Diff line change
Expand Up @@ -320,13 +320,18 @@ public bool TrySting(EntityUid uid, ChangelingComponent comp, EntityTargetAction
return false;

var target = action.Target;
if (HasComp<ChangelingComponent>(target))

// can't get his dna if he doesn't have it!
if (!HasComp<AbsorbableComponent>(target) || HasComp<AbsorbedComponent>(target))
{
var selfMessage = Loc.GetString("changeling-sting-fail-self", ("target", Identity.Entity(target, EntityManager)));
var targetMessage = Loc.GetString("changeling-sting-fail-ling");
_popup.PopupEntity(Loc.GetString("changeling-sting-extract-fail"), uid, uid);
return false;
}

_popup.PopupEntity(selfMessage, uid, uid);
_popup.PopupEntity(targetMessage, target, target);
if (HasComp<ChangelingComponent>(target))
{
_popup.PopupEntity(Loc.GetString("changeling-sting-fail-self", ("target", Identity.Entity(target, EntityManager))), uid, uid);
_popup.PopupEntity(Loc.GetString("changeling-sting-fail-ling"), target, target);
return false;
}
if (!overrideMessage)
Expand Down Expand Up @@ -584,6 +589,8 @@ private void OnStartup(EntityUid uid, ChangelingComponent comp, ref ComponentSta
// show alerts
UpdateChemicals(uid, comp, 0);
UpdateBiomass(uid, comp, 0);
// make their blood unreal
_blood.ChangeBloodReagent(uid, "BloodChangeling");
}

private void OnMobStateChange(EntityUid uid, ChangelingComponent comp, ref MobStateChangedEvent args)
Expand All @@ -604,7 +611,7 @@ private void OnDamageChange(Entity<ChangelingComponent> ent, ref DamageChangedEv

if (!args.DamageIncreased)
return;

target.Damage.ClampMax(200); // we never die. UNLESS??
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ public sealed partial class ChangelingRuleComponent : Component
public readonly List<ProtoId<EntityPrototype>> Objectives = new()
{
"ChangelingSurviveObjective",
"ChangelingStealDNAObjective",
"EscapeIdentityObjective"
};
}
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
guide-entry-changelings = Changelings
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ changeling-transform-fail-choose = You did not choose a form to transform into!
changeling-transform-fail-absorbed = You can't transform a husk!
changeling-transform-finish = You are now {$target}.
changeling-sting-fail-self = You tried to sting {CAPITALIZE(THE($target))}, but failed!
changeling-sting-fail-self = You tried to sting {CAPITALIZE(THE($target))}, but something stopped you from doing it!
changeling-sting-fail-ling = Someone just tried to silently sting you!
changeling-sting = You silently sting {CAPITALIZE(THE($target))}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
- type: entity
id: GuidebookChangelingFluff
name: guidebook changeling
description: you shouldn't be seeing this normally.
noSpawn: true
components:
- type: Sprite
sprite: Goobstation/Changeling/Guidebook/guidebook_changeling.rsi
state: icon
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
- type: guideEntry
id: Changelings
name: guide-entry-changelings
text: "/ServerInfo/Goobstation/Changeling/Guidebook/Antagonist/Changelings.xml"

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
- type: reagent
parent: Blood
id: BloodChangeling

- type: reaction
id: ChangelingBloodBreakdown
source: true
requiredMixerCategories:
- Centrifuge
reactants:
BloodChangeling:
amount: 5
products:
Water: 11
Iron: 0.5
Sugar: 2
CarbonDioxide: 3
Protein: 4
effects:
- !type:CreateEntityReactionEffect
entity: FleshKudzu
- !type:ExplosionReactionEffect
explosionType: Default
maxIntensity: 2
intensityPerUnit: 0.5
intensitySlope: 4
maxTotalIntensity: 1
Original file line number Diff line number Diff line change
Expand Up @@ -3,4 +3,5 @@
name: roles-antag-changeling-name
antagonist: true
setPreference: true
objective: roles-antag-changeling-description
objective: roles-antag-changeling-description
guides: [ Changelings ]
1 change: 1 addition & 0 deletions Resources/Prototypes/Guidebook/antagonist.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
text: "/ServerInfo/Guidebook/Antagonist/Antagonists.xml"
children:
- Traitors
- Changelings # goobstation - changelings
- NuclearOperatives
- Zombies
- Revolutionaries
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
<Document>
# Changelings
<Box>
<GuideEntityEmbed Entity="GuidebookChangelingFluff" Caption=""/>
</Box>
A Changeling is an alien creature that is intelligent and able to morph into humans. Changelings are aliens in a form of a headslug, but before a shift starts, they either transform as someone while they're off-station or rather they somehow killed someone and made into a Changeling through unknown ways.
The main weapons of the Changeling are its ability to internally synthesize dangerous chemicals, morph into other creatures that it has absorbed, and blend in with humans.

The changeling can be anyone it's absorbed, it can switch identities instantaneously, only absorbing takes time and peace. Unlike the Traitor, the Changeling's only objective is to survive until the shuttle arrives and escape on it while transformed into somebody else.

Remember that Changelings are not obliged to work eachother as a team, and some may go solo/rogue depending on how they like it.

## I've turned into myself, what do?

### Chemicals
Chemicals are your source of abilities. Without them you won't be able to use your powers.
They regenerate slowly over time, and absorption will increase their max capacity.

### Biomass
Your biomass is your health. In the beginning you have 30 biomass to begin. You spend 1 biomass each minute, and absorption fully recovers it.
Once your biomass levels get low enough, the effects of your decay will be seen by crew, such as:
- Vomiting blood
- Violently shaking
- Death.
You cannot die normally, as in being gibbed by blunt trauma, but your Biomass is slowly draining away, and if you don't get to absorb someone before it runs out, your game will be over.

### DNA Absorption
Your main weapon is deception. Transform into other humanoid creatures to confuse the crew.
To do this, it must take ANY human, living or dead (even thrown away bodies from cloning), and absorb them using either the Absorb abliity, or the DNA Extraction Sting.
You can only have a maximum of 5 DNA strands at a time, and must transform to obtain more.

Acquiring DNA via absorption requires the victim's incapacitation, critical condition or death. Simply, handcuff, put him into crit or kill him if you need to absorb him.

- Absorbing someone takes a lot of time, so prepare a safe spot or do it somewhere with the least amount of ears possible.
- Absorbing a victim will recover all of your biomass, increase your maximum chemical capacity and give you bonus evolution points to buy new abilities.
- Absorbing another changeling will, on top of that, increase your maximum biomass capacity, allowing you to stay alive for more time and give you even more chemicals and evolution points.
- [color=red]Absorbed victims cannot be cloned.[/color] On the other hand, they can still be turned into cyborgs.

### You exclaim, "I am the only one here!"
Changelings are limited, however, to how much DNA they can absorb at once! If a changeling has 5 DNAs stored and attempts to gain another, they must purge the older DNA by transforming. Eventually, any changeling will have to be a twin of someone else on the station, living or dead.
The changeling can shift its appearance, making them look and sound exactly like a victim of which they have absorbed. This can be massive compromise in security, especially if command staff are absorbed and the changeling is able to imitate them.
Changelings can also, via their lesser form ability, transform into monkeys and do monkey things.


### Regeneration
Also known as Regenerative Stasis, changelings have the ability to 'kill' themselves, and appear dead. After an uncertain amount of time, the changeling can revive at will, fully healed of all injuries and illness.
Entering stasis drains all of the changeling's chemicals, and leaving costs 60. Chemicals will still regenerate while a changeling is dead, meaning it can always enter stasis unless it's biomass levels are critical.

Changelings can also choose to revive by defibrillator, making it even harder to tell if they are one or not.

This makes them nigh-unkillable, as they can fully regenerate themselves even from death if they have enough chemicals. Spaced changelings may also be able to make it back on station given enough time. The best way to permanently deal with a changeling is to starve it to death, putting them on mining colonies or solitary confinement.

### Going Solo or Teaming Up
Like traitors, changelings operate individually and are in no way obligated to assist each other. It is not required for changelings to even reveal their identity to each other, as it's not uncommon for changelings to backstab each other to remove competition.
Even so, [colopr=red]a coordinated group of changelings is truly a terror to behold[/color].

## Identifying a changeling
Changelings have a different blood type. Even if a changeling is pretending to be a diona, vox or a moth person, they have one blood type.
Also, when put in a centrifuge, the changeling's blood reacts violently.
You cannot identify changelings in any other possible way, unless they're dead obvious and start going loud.
</Document>
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
{
"version": 1,
"license": "CC-BY-SA-3.0",
"copyright": "https://github.com/tgstation/tgstation/blob/8024397cc81c5f47f74cf4279e35728487d0a1a7/icons/mob/human_parts_greyscale.dmi , modified by DrSmugleaf and whateverusername0",
"size": {
"x": 32,
"y": 32
},
"states": [
{
"name": "icon",
"delays": [ [ 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1 ] ]
}
]
}

0 comments on commit 520f848

Please sign in to comment.