New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Adds strains framework #15790
base: master
Are you sure you want to change the base?
Adds strains framework #15790
Conversation
peak is here |
to_chat(src, span_warning("Your caste swap timer is not done yet.")) | ||
return | ||
|
||
SStgui.close_user_uis(src, GLOB.evo_panel) | ||
ADD_TRAIT(src, TRAIT_CASTE_SWAP, TRAIT_CASTE_SWAP) | ||
GLOB.evo_panel.ui_interact(src) | ||
|
||
/mob/living/carbon/xenomorph/verb/strain_swap() |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Verb ?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We still dont have an option for this, and caste swap/evo/regress are the same so
var/datum/xeno_caste/root_type = type | ||
while(initial(root_type.parent_type) != /datum/xeno_caste) | ||
root_type = initial(root_type.parent_type) | ||
var/list/candidates = typesof(root_type) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Why do you have to do this ?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We get the child of xeno_caste (e.g runner) then get all children of that to find the strains
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Why not a Glob list somewhere ? less snowflaky
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
How so? I need to return the strains for a given type, and I dont want to force people to add defines to everything for a glob lookup
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Can't you just have a GLOBAL_LIST_INIT to do this?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Done
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Rest looks good otherwise.
As I've brought up before though, I still don't understand codewise what the difference is between something being a strain vs just being a new caste.
We no longer have evo paths so we can evo to everything, and can swap between castes at will (with changing strain literally using the same timer)... So other than organising them in the hive UI, wouldn't it just be easier to treat them as new castes?
Like it can still be caste/runner/snowflake or whatever, but you just evo directly to it, instead of evo'ing runner, then swapping to snowflake strain.
All this is really doing is adding evo paths back in a more limited fashion.
I'm happy to merge if you disagree, but this seems to just be a more complicated way to get the exact same result.
var/datum/xeno_caste/root_type = type | ||
while(initial(root_type.parent_type) != /datum/xeno_caste) | ||
root_type = initial(root_type.parent_type) | ||
var/list/candidates = typesof(root_type) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Can't you just have a GLOBAL_LIST_INIT to do this?
Making new castes is not always a good solution, and you can see why if you compare the Crusher to the Bull. The latter could easily be a strain of the former, especially because it just doesn't work as a standalone caste. It could be fun and interesting to design minor variations of existing castes that offer slightly different gameplay experiences. Having to make an entirely new thing, on the other hand, is much more difficult by comparison. I would very much prefer having strains. |
This has nothing to do with the ingame stats/abilities/appearance of a strain. I don't know why people seem confused by this every time I bring it up. Nothing I am saying is 'don't do strains'. So if the only thing added by implementing strains IN THIS SPECIFIC WAY, is just readding evo paths, which is something we deliberately removed very recently... why not just implement strains without this pointless restriction? |
Codewise its the same yea |
I am not saying don't do strains, for the love of god stop interpreting it as that.All I am saying is why require players to evolve or swap to runner, before being able to strain swap to acid runner or whatever? We only just recently removed evolution paths since that was considered bad/limiting for xenos, but we're just readding it but specifically for strains? Why? I've asked if this is for balance before in the past but never got a straight answer because ever seems to think I am saying not to do strains at all. |
If what you're referring to is "why not add the option to evo straight to a strain from the evo menu", it's probably because that's convoluted and would either extend the list to be really obnoxiously long, or require a redesign of the TGUI interface, probably with collapsible lists per caste. It's easier at the moment to just do it this way, even if it requires an extra step. If someone else wants to go the extra mile, they can do that in the future. (also merge this so i can start throwing strain PRs at the wall pls) |
The argument for adding an entire extra mechanic (that shares a time gate with caste swapping) due to not having enough space in a window that can be any size is uh, highly questionable. |
About The Pull Request
To add a strain just add a child with a UPGRADE_BASETYPE upgrade to a castedatum has a flag for snowflake like weapon x
Why It's Good For The Game
this intended for sidegrades within the same castes role