make the sentient plant mutation not propagate by clipping, using the seed extractor or cryoxadone
}
// Add up everything in the bits column and put the number here.
- const int totalbits = 275;
+ const int totalbits = 262;
#pragma warning disable IDE0055 // disable formatting warnings because this looks more readable
// Tolerances (55)
// Kill the plant (30)
MutateBool(ref seed.Viable , false, 30, totalbits, severity);
- // Fun (90)
+ // Fun (72)
MutateBool(ref seed.Seedless , true , 10, totalbits, severity);
MutateBool(ref seed.Slip , true , 10, totalbits, severity);
- MutateBool(ref seed.Sentient , true , 10, totalbits, severity);
+ MutateBool(ref seed.Sentient , true , 2 , totalbits, severity);
MutateBool(ref seed.Ligneous , true , 10, totalbits, severity);
MutateBool(ref seed.Bioluminescent, true , 10, totalbits, severity);
MutateBool(ref seed.TurnIntoKudzu , true , 10, totalbits, severity);
CrossFloat(ref result.Production, a.Production);
CrossFloat(ref result.Potency, a.Potency);
+ // we do not transfer Sentient to another plant to avoid ghost role spam
CrossBool(ref result.Seedless, a.Seedless);
CrossBool(ref result.Viable, a.Viable);
CrossBool(ref result.Slip, a.Slip);
- CrossBool(ref result.Sentient, a.Sentient);
CrossBool(ref result.Ligneous, a.Ligneous);
CrossBool(ref result.Bioluminescent, a.Bioluminescent);
CrossBool(ref result.TurnIntoKudzu, a.TurnIntoKudzu);
{
healthOverride = component.Health;
}
- component.Seed.Unique = false;
- var seed = _botany.SpawnSeedPacket(component.Seed, Transform(args.User).Coordinates, args.User, healthOverride);
+ var packetSeed = component.Seed;
+ if (packetSeed.Sentient)
+ {
+ packetSeed = packetSeed.Clone(); // clone before modifying the seed
+ packetSeed.Sentient = false;
+ }
+ else
+ {
+ packetSeed.Unique = false;
+ }
+ var seed = _botany.SpawnSeedPacket(packetSeed, Transform(args.User).Coordinates, args.User, healthOverride);
_randomHelper.RandomOffset(seed, 0.25f);
var displayName = Loc.GetString(component.Seed.DisplayName);
_popup.PopupCursor(Loc.GetString("plant-holder-component-take-sample-message",
}
else if (component.Age < 0) // Revert back to seed packet!
{
+ var packetSeed = component.Seed;
+ if (packetSeed.Sentient)
+ {
+ if (!packetSeed.Unique) // clone if necessary before modifying the seed
+ packetSeed = packetSeed.Clone();
+ packetSeed.Sentient = false; // remove Sentient to avoid ghost role spam
+ }
// will put it in the trays hands if it has any, please do not try doing this
- _botany.SpawnSeedPacket(component.Seed, Transform(uid).Coordinates, uid);
+ _botany.SpawnSeedPacket(packetSeed, Transform(uid).Coordinates, uid);
RemovePlant(uid, component);
component.ForceUpdate = true;
Update(uid, component);
var amount = _random.Next(seedExtractor.BaseMinSeeds, seedExtractor.BaseMaxSeeds + 1);
var coords = Transform(uid).Coordinates;
+ var packetSeed = seed;
+ if (packetSeed.Sentient)
+ {
+ if (!packetSeed.Unique) // clone if necessary before modifying the seed
+ packetSeed = packetSeed.Clone();
+ packetSeed.Sentient = false; // remove Sentient to avoid ghost role spam
+ }
if (amount > 1)
- seed.Unique = false;
+ packetSeed.Unique = false;
for (var i = 0; i < amount; i++)
{
- _botanySystem.SpawnSeedPacket(seed, coords, args.User);
+ _botanySystem.SpawnSeedPacket(packetSeed, coords, args.User);
}
}
}