Skip to content

[IMP Port] Visitor Specific Species#1

Open
honeyed-lemons wants to merge 6 commits intosyndicate-ss14:masterfrom
honeyed-lemons:visitors
Open

[IMP Port] Visitor Specific Species#1
honeyed-lemons wants to merge 6 commits intosyndicate-ss14:masterfrom
honeyed-lemons:visitors

Conversation

@honeyed-lemons
Copy link

About the PR

Port of impstation/imp-station-14#3522.
Allows species to be declared non-roundstart and still be randomly generated for vistor shuttles and random ghostroles and such

Why / Balance

Well, you see, Macrocosm is going to have species that are non roundstart yet still want to be playable in game via ghost roles. This is good i think.

Technical details

Added two new datafields to the species component and modified the Random function in HumanoidCharacterProfile fairly extensively.

Media

Does.. not really need media? I can guarantee this is tested, however.

Requirements

Breaking changes

N/A

Changelog

🆑

  • tweak: Visitors can now be non-roundstart species.

honeyed-lemons and others added 5 commits March 13, 2026 19:32
…522)

* Allow non-roundstart species to roll midround

* Allow non-roundstart species to roll midround

* oops forgot some comments

* i forgot

* Reimplement blacklist. i hate expression lambdas.

* randomChance

* add ungu

(cherry picked from commit 046df23e45e19e59f453fe0f4d8aba4d85c046fe)
throw new ArgumentException("Could not get random humanoid settings");

var profile = HumanoidCharacterProfile.Random(prototype.SpeciesBlacklist);
var profile = HumanoidCharacterProfile.Random(prototype.SpeciesBlacklist, false); // MACRO
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
var profile = HumanoidCharacterProfile.Random(prototype.SpeciesBlacklist, false); // MACRO
var profile = HumanoidCharacterProfile.Random(prototype.SpeciesBlacklist, false); // MACRO, added false


// TODO: This should eventually not be a visual change only.
public static HumanoidCharacterProfile Random(HashSet<string>? ignoredSpecies = null)
// MACRO start, extensive changes.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

move to line 224

// TODO: This should eventually not be a visual change only.
public static HumanoidCharacterProfile Random(HashSet<string>? ignoredSpecies = null)
// MACRO start, extensive changes.
public static HumanoidCharacterProfile Random(HashSet<string>? speciesBlacklist = null, bool? characterCreation = true)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
public static HumanoidCharacterProfile Random(HashSet<string>? speciesBlacklist = null, bool? characterCreation = true)
public static HumanoidCharacterProfile Random(HashSet<string>? speciesBlacklist = null, bool? characterCreation = true) // MACRO visitor species: add charactercreation


var species = random.Pick(prototypeManager
.EnumeratePrototypes<SpeciesPrototype>()
.Where(x => ignoredSpecies == null ? x.RoundStart : x.RoundStart && !ignoredSpecies.Contains(x.ID))
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

comment out instead of deleting
macro start above this line, note that its for visitor species

Comment on lines +234 to +235
)
.ID;
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

revert

if (characterCreation == true)
return x.RoundStart;
return random.NextFloat() < x.RandomChance && x.RandomViable;
})
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

macro end here


return RandomWithSpecies(species);
}
// MACRO end
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

delete

Comment on lines +110 to +114
/// <summary>
/// Whether or not the species is available for randomization.
/// </summary>
[DataField]
public bool RandomViable { get; private set; }
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

name of this bool is kind of vague. what does 'randomization' mean in this context?
maybe rename or include in the comment whether or not youre talking about in game or character creation?

@mqole
Copy link
Contributor

mqole commented Mar 16, 2026

this pr does also include breaking changes inthat species can now be toggled on or off for visitor exclusive roles i believe

Copy link
Contributor

@hivehum hivehum left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

test message to see if i got github relay working

@hivehum hivehum dismissed their stale review March 16, 2026 02:26

fake review

@mqole mqole added Licensed All code in this PR is licensed under MIT with permission obtained from all authors. S: Awaiting Changes and removed S: Needs Review labels Mar 17, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Licensed All code in this PR is licensed under MIT with permission obtained from all authors. S: Awaiting Changes size/S

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants