Examinable Changeling Doafters (#46052)

yay!
This commit is contained in:
ScarKy0 2026-09-18 22:35:09 +00:00 • committed by GitHub
parent a5fc42e83d
commit b08dcd79eb
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
5 changed files with 28 additions and 2 deletions

View file

@ -142,6 +142,18 @@ public sealed partial class ChangelingDevourComponent : Component
{ "ChangelingDNA", 10 }
};
/// <summary>
/// What to show on examine while the changeling's devour is in the windup stage.
/// </summary>
[DataField]
public LocId? WindupExamine = "changeling-devour-doafter-windup";
/// <summary>
/// What to show on examine while the changeling is currently devouring somebody.
/// </summary>
[DataField]
public LocId? DevourExamine = "changeling-devour-doafter";
public override bool SendOnlyToOwner => true;
}

View file

@ -50,12 +50,18 @@ public sealed partial class ChangelingTransformComponent : Component
/// </summary>
public ProtoId<CloningSettingsPrototype> TransformCloningSettings = "ChangelingCloningSettings";
public override bool SendOnlyToOwner => true;
/// <summary>
/// If true, then the changeling can manually drop identities. If false, then whenever they transform, the changeling will drop their former identity.
/// </summary>
[DataField, AutoNetworkedField]
public bool ManualDrop = true;
/// <summary>
/// Examine text to show when the changeling is currently transforming.
/// </summary>
[DataField]
public LocId? TransformExamine = "changeling-transform-doafter";
public override bool SendOnlyToOwner => true;
}

View file

@ -90,6 +90,7 @@ public sealed partial class ChangelingDevourSystem : EntitySystem
BreakOnMove = true,
CancelDuplicate = true,
DuplicateCondition = DuplicateConditions.None,
ExamineText = ent.Comp.WindupExamine == null ? null : Loc.GetString(ent.Comp.WindupExamine, ("user", Identity.Entity(ent, EntityManager)), ("target", Identity.Entity(target, EntityManager)))
});
var selfMessage = Loc.GetString("changeling-devour-begin-windup-self", ("user", Identity.Entity(ent.Owner, EntityManager)));
@ -142,6 +143,7 @@ public sealed partial class ChangelingDevourSystem : EntitySystem
BreakOnMove = true,
CancelDuplicate = true,
DuplicateCondition = DuplicateConditions.None,
ExamineText = ent.Comp.DevourExamine == null ? null : Loc.GetString(ent.Comp.DevourExamine, ("user", Identity.Entity(ent, EntityManager)), ("target", Identity.Entity(target, EntityManager)))
});
}

View file

@ -161,6 +161,7 @@ public sealed partial class ChangelingTransformSystem : EntitySystem
DuplicateCondition = DuplicateConditions.None,
RequireCanInteract = false,
DistanceThreshold = null,
ExamineText = ent.Comp.TransformExamine == null ? null : Loc.GetString(ent.Comp.TransformExamine, ("user", Identity.Entity(ent, EntityManager)))
});
}

View file

@ -18,10 +18,15 @@ changeling-devour-begin-consume-others = { CAPITALIZE(POSS-ADJ($user)) } uncanny
changeling-devour-consume-complete-self = Our uncanny mouth retreats, biomass consumed.
changeling-devour-consume-complete-others = { CAPITALIZE(POSS-ADJ($user)) } uncanny mouth retreats.
changeling-devour-doafter-windup = [color=red]{ CAPITALIZE(POSS-ADJ($user)) } face is splitting open, preparing to feast![/color]
changeling-devour-doafter = [color=red]{ CAPITALIZE(SUBJECT($user)) } { CONJUGATE-BE($user) } tearing into the flesh of {$target}![/color]
# transformation
changeling-transform-attempt-self = Our bones snap, muscles tear, one flesh becomes another.
changeling-transform-attempt-others = { CAPITALIZE(POSS-ADJ($user)) } bones snap, muscles tear, body shifts into another.
changeling-transform-doafter = [color=red]The surface of { POSS-ADJ($user) } skin is melting, taking another shape.[/color]
# transformation BUI
changeling-transform-bui-select-entity = {$entity}
changeling-transform-bui-drop-identity-menu = Drop a devoured identity from your memory.