Fix cognizine not working on entities with minds (#19951)
This commit is contained in:
@@ -16,38 +16,29 @@ public sealed partial class MakeSentient : ReagentEffect
|
|||||||
var entityManager = args.EntityManager;
|
var entityManager = args.EntityManager;
|
||||||
var uid = args.SolutionEntity;
|
var uid = args.SolutionEntity;
|
||||||
|
|
||||||
// This makes it so it doesn't affect things that are already sentient
|
// Let affected entities speak normally to make this effect different from, say, the "random sentience" event
|
||||||
if (entityManager.HasComponent<MindContainerComponent>(uid))
|
// This also works on entities that already have a mind
|
||||||
{
|
// We call this before the mind check to allow things like player-controlled mice to be able to benefit from the effect
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
// This piece of code makes things able to speak "normally". One thing of note is that monkeys have a unique accent and won't be affected by this.
|
|
||||||
entityManager.RemoveComponent<ReplacementAccentComponent>(uid);
|
entityManager.RemoveComponent<ReplacementAccentComponent>(uid);
|
||||||
|
|
||||||
// Monke talk. This makes cognizine a cure to AMIV's long term damage funnily enough, do with this information what you will.
|
|
||||||
entityManager.RemoveComponent<MonkeyAccentComponent>(uid);
|
entityManager.RemoveComponent<MonkeyAccentComponent>(uid);
|
||||||
|
|
||||||
// This makes it so it doesn't add a ghost role to things that are already sentient
|
// Stops from adding a ghost role to things like people who already have a mind
|
||||||
if (entityManager.HasComponent<MindContainerComponent>(uid))
|
if (entityManager.HasComponent<MindContainerComponent>(uid))
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// No idea what anything past this point does
|
// Don't add a ghost role to things that already have ghost roles
|
||||||
if (entityManager.TryGetComponent(uid, out GhostRoleComponent? ghostRole) ||
|
if (entityManager.TryGetComponent(uid, out GhostRoleComponent? ghostRole))
|
||||||
entityManager.TryGetComponent(uid, out GhostTakeoverAvailableComponent? takeOver))
|
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
ghostRole = entityManager.AddComponent<GhostRoleComponent>(uid);
|
ghostRole = entityManager.AddComponent<GhostRoleComponent>(uid);
|
||||||
entityManager.AddComponent<GhostTakeoverAvailableComponent>(uid);
|
entityManager.EnsureComponent<GhostTakeoverAvailableComponent>(uid);
|
||||||
|
|
||||||
var entityData = entityManager.GetComponent<MetaDataComponent>(uid);
|
var entityData = entityManager.GetComponent<MetaDataComponent>(uid);
|
||||||
ghostRole.RoleName = entityData.EntityName;
|
ghostRole.RoleName = entityData.EntityName;
|
||||||
ghostRole.RoleDescription = Loc.GetString("ghost-role-information-cognizine-description");
|
ghostRole.RoleDescription = Loc.GetString("ghost-role-information-cognizine-description");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Original code written by areitpog on GitHub in Issue #7666, then I (Interrobang01) copied it and used my nonexistant C# skills to try to make it work again.
|
|
||||||
|
|||||||
Reference in New Issue
Block a user