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
Reworks Interdictor Mob Protection #14881
Reworks Interdictor Mob Protection #14881
Conversation
Created discussion thread: https://forum.ss13.co/showthread.php?tid=21501 |
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 think this is a very solid idea overall for intuitive awareness of interdictors' protection functionality - exact power draw values might need tuning, but that's generally the case no matter what you change.
It's been mentioned that the buff could have a small visual effect, and if that's something you're inclined to do I think it might be interesting to have that as a faint golden "aura" underlaid around protected individuals, somewhat sporadic and sparkling in appearance.
code/mob/living/life/disability.dm
Outdated
interdictor_influence = 1 | ||
break | ||
if(!interdictor_influence) | ||
if (owner.hasStatus("spatial_protection")) |
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.
Removing the radstorm_interdict call here means the baseline cost of interdicting a radstorm (independent of number of protected individuals) doesn't apply. My recommended change to preserve the baseline cost would probably be some functionality inside the main process() to apply that baseline cost if there's a currently active mass radiation event and the interdictor applied at least one protection buff on the last tick; to compensate for the per-user cost, it could probably be reduced slightly as well.
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.
By the main_process(), do you mean for the radstorm, or interdictor?
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.
Ok, so I simply added the radstorm_interdict proc to the end of the interdict proc, and it seems to work. It seems that something is already checking whether or not a radiation storm is going on for the proc. Although as a side effect, it will start draining the increased power when the event is announced, rather than when the radiation hits the station. If this is a problem, I'll try looking for another solution.
code/mob/living/life/disability.dm
Outdated
break | ||
if(!interdictor_influence) | ||
if (owner.hasStatus("spatial_protection")) | ||
return |
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.
Returning here prevents the checks further below from happening. Could invert the hasStatus check with ! instead.
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.
Alright, done
src.changeStatus("spatial_protection", 3 SECONDS) | ||
if (!iscarbon(src)) //Prevents non-carbons from getting the Zephyr stam boost, but still protects other mobs | ||
break | ||
if (IX.expend_interdict(4,src,TRUE,ITDR_ZEPHYR)) // Zephyr-class interdictor: carbon mobs in range gain a buff to stamina recovery, which can accumulate to linger briefly |
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.
As there's now an ongoing cost from having people in range at all, the Zephyr cost could probably be reduced, or skipped entirely (making it simply check for mob's carbon status and interdictor's board type inside of the main expend_interdict). Not vital, but worth considering.
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 could do that, although I'm unsure how costly the interdictors are atm, and having one status effect from interdictors drain battery, and not the other could be a bit confusing
I don't really have enough knowledge with making visual effects to make something more advanced than simply the magnetized aura, but yellow. |
That'd probably be good enough, yeah. |
Good pr, in the long run the effects from the special mainframes should also be status effects but probably outside scope of this pr |
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.
LGTM. Haven't locally compiled it on my end but appears structurally correct; passive protection draw might need tuning, but that can be done easily down the line, and these values are a solid starting point.
This PR has been inactive for two weeks, and has been automatically marked as stale. This means it is at risk of being auto closed in another week. Please address any outstanding review items and ensure your PR is finished. If you are auto-staled anyway, ask developers if your PR will be merged. Once you have done any of the previous actions then you should request a developer remove the stale label on your PR, to reset the stale timer. If you feel no developer will respond in that time, you may wish to close this PR youself, while you seek developer comment, as you will then be able to reopen the PR yourself. |
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.
making interdictors less opaque is good 👍
effect_quality = STATUS_QUALITY_POSITIVE | ||
|
||
onAdd(optional=null) | ||
owner.add_filter("protection", 1, outline_filter(color="#e6ec21")) |
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 does this interact with the outline filter for biomagnetic fields?
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.
Co-authored-by: TobleroneSwordfish <20713227+TobleroneSwordfish@users.noreply.github.com>
Co-authored-by: TobleroneSwordfish <20713227+TobleroneSwordfish@users.noreply.github.com>
[BALANCE] [STATUS EFFECTS] [INPUT WANTED]
About the PR
This pr refactors the interdictor's mob protection effects for wormholes/radstorms/magnetic biofields to a status effect. This also makes it so the interdictor's power drain will be affected by the amount of players in it's AoE, and not be drained whenever someone within the AoE negates a portal/magnetic biofield.
Why's this needed?
Currently, not many people know what interdictors do, and not many people realize that being within an interdictor during a radstorm protects you. This pr aims to make it so that people are more aware that the interdictor protects them from wormholes/radstorms/magnetic biofields, and make it so that the amount of people protected will influence power drain to a degree.
Changelog