-
Notifications
You must be signed in to change notification settings - Fork 579
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
Eggsac carrier revival #4716
Eggsac carrier revival #4716
Conversation
Need to add: handling for eggs bursting for marines or being destroyed as I forgot this. Can't set to draft on mobile github. |
This PR has been inactive for long enough to be automatically marked as stale. This means it is at risk of being auto closed in ~ 7 days, please address any outstanding review items and ensure your PR is finished, if these are all true and you are auto-staled anyway, you need to actively ask maintainers if your PR will be merged. Once you have done any of the previous actions then you should request a maintainer remove the stale label on your PR, to reset the stale timer. If you feel no maintainer will respond in that time, you may wish to close this PR youself, while you seek maintainer comment, as you will then be able to reopen the PR yourself |
Updated with further handling I missed originally. |
This PR has been inactive for long enough to be automatically marked as stale. This means it is at risk of being auto closed in ~ 7 days, please address any outstanding review items and ensure your PR is finished, if these are all true and you are auto-staled anyway, you need to actively ask maintainers if your PR will be merged. Once you have done any of the previous actions then you should request a maintainer remove the stale label on your PR, to reset the stale timer. If you feel no maintainer will respond in that time, you may wish to close this PR youself, while you seek maintainer comment, as you will then be able to reopen the PR yourself |
set_owner(planter) | ||
|
||
/obj/effect/alien/egg/carrier_egg/Destroy() | ||
. = ..() |
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.
call parent at the end of destroy
var/datum/behavior_delegate/carrier_eggsac/my_delegate = planter.behavior_delegate | ||
my_delegate.eggs_sustained += src | ||
owner = planter | ||
RegisterSignal(owner, COMSIG_PARENT_QDELETING, PROC_REF(cleanup_owner)) |
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.
you don't need to do this, you can just do the destroy bit i mentioned above
UnregisterSignal(owner, COMSIG_PARENT_QDELETING) | ||
owner = null | ||
|
||
/obj/effect/alien/egg/carrier_egg/proc/cleanup_owner() |
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.
code doc
var/sustain_distance = 14 | ||
|
||
/datum/behavior_delegate/carrier_eggsac/append_to_stat() | ||
. = "Eggs sustained: [length(eggs_sustained)] / [egg_sustain_cap]" |
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.
are you sure it's = instead of +=?
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.
I don't think it actually matters in this case. But comparing it to the same functionality on other behavior delegates I should be consistent with them, also returning it as a list.
Willing to give this a shot. |
…ments to append_to_stat()
Think I've addressed all your comments.
|
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.
a few nits left
var/mob/living/carbon/xenomorph/carrier/owner = null | ||
var/last_refreshed = null | ||
var/life_timer = null |
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.
code doc these
if(life_timer) | ||
deltimer(life_timer) | ||
owner = null | ||
. = ..() |
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.
. = ..() | |
return ..() |
var/list/eggs_sustained = list() | ||
var/egg_sustain_cap = EGGSAC_OFF_WEED_EGGCAP | ||
var/sustain_distance = 14 |
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.
code doc
Addressed your comments. |
This PR has been inactive for long enough to be automatically marked as stale. This means it is at risk of being auto closed in ~ 7 days, please address any outstanding review items and ensure your PR is finished, if these are all true and you are auto-staled anyway, you need to actively ask maintainers if your PR will be merged. Once you have done any of the previous actions then you should request a maintainer remove the stale label on your PR, to reset the stale timer. If you feel no maintainer will respond in that time, you may wish to close this PR youself, while you seek maintainer comment, as you will then be able to reopen the PR yourself |
Sorry for letting this sit for so long! Looks good to go. |
nice! |
# About the pull request In #4716 I forgot about hardy weeds. This allows carrier to plant the fragile eggs on standard and hardy weeds which are basically standard weeds +. # Explain why it's good for the game # Testing Photographs and Procedure <details> <summary>Screenshots & Videos</summary> Put screenshots and videos here with an empty line between the screenshots and the `<details>` tags. </details> # Changelog :cl: fix: Eggsac fragile eggs can be placed on hardy weeds. /:cl:
# About the pull request So in one of various refactors of #4716 I removed some important code from `Burst()` for the new egg type which removes it from the carrier's sustained eggs. This is bad because we keep trying to call procs on eggs which have already burst etc. This removes the egg from the carrier's sustain list properly on Burst(). I also added a check in Life() on the carrier to remove it from their sustained eggs. If something funky happens we don't want to impact the player from playing # Explain why it's good for the game # Testing Photographs and Procedure <details> <summary>Screenshots & Videos</summary> Put screenshots and videos here with an empty line between the screenshots and the `<details>` tags. </details> # Changelog 🆑 fix: Eggsack carrier eggs get properly removed from sustained list upon bursting. /🆑
# About the pull request Now that #4716 's been merged, here's the changes I've wanted to make for eggs for a bit now. - Eggs can no longer be planted in vehicles - Eggs can no longer be planted on tiles that would obstruct the egg. # Explain why it's good for the game - In the vast majority of cases, you cannot tell that a vehicle you're entering is infested with you-instantly-lose eggs. While normally getting hit with an egg is reasonably predictable (there are weeds == possibility of eggs), having no indication of it until you go inside and get hugged isn't fun or balanced. - Eggs being able to layer under things like grass is technically a "feature", but not one I would like to keep. Traps serve the exact same purpose, but are much harder to mass produce (as intended). Eggs should be cheaper but more detectable, which doesn't align them being able to be near-fully hidden. # Testing Photographs and Procedure <details> <summary>Screenshots & Videos</summary> ![image](https://github.com/cmss13-devs/cmss13/assets/41448081/7151c503-72fa-4b1e-acba-576f556420c1) </details> # Changelog :cl: balance: You cannot plant eggs inside vehicles. balance: Eggs can no longer be planted on tiles with objects that would obscure them. /:cl:
Forum Thread
About the pull request
The concept of this PR is to find a middle ground between the current eggsac carrier and the pre #4459 eggsac carrier.
This PR will make the following changes. (From this point "normal weeds" can be substituted for "off hive weeds" Placing eggs on hive weeds is unchanged.)
Explain why it's good for the game
Eggsac carrier at the moment is in a bit of a poor place and has gone from being very strong to quite poor. Considering the limitation of having to place only on hive weeds.
The majority of feedback I read against eggsac carrier was with the quantity of eggs able to be placed, as well as the locations they can be placed in, all across the map and with impunity.
This PR aims to address those concerns to make the eggsac both less infuriating to play against while still being satisfying to play as a frontline support or as a stealthy trapper.
Eggs can no longer be placed all over the map because of the 4 egg limit off weeds, so the carrier has to think where they want to impact the map. The carrier also has to stay within a reasonable distance to where they are impacting with their eggs which localises their impact to their immediate play area. The carrier also has to be more reactive to current events as they cannot place an egg which then becomes useful 30 minutes later.
Killing the carrier also has a small reward as in addition to removing a xeno from the game, the eggs they are sustaining are cleared. If a carrier is supporting the front and dies, the marines don't then have to clear X number of eggs AFTER the kill.
Testing Photographs and Procedure
The 5 minute lifetime of the eggs will also clear the eggs in the case that the carrier is admin deleted, or some other weird stuff happens which doesn't result in a death. This will also catch carriers de-evolving
Screenshots & Videos
Put screenshots and videos here with an empty line between the screenshots and the
<details>
tags.Changelog
🆑
add: Eggsac carrier can now place eggs on normal weeds to a maximum of 4 eggs.
add: Eggsac carrier eggs on normal weeds have an expiry date.
/:cl: