63 Commits

Author SHA1 Message Date
VMSolidus 0625b841c3 Surgery Speed Modifiers (#22472)
This PR "gently refactors" surgery doafter timers to be deterministic
and variable. Instead of being simply a random number of seconds between
an upper and lower bounds, surgeries now have a base amount of time they
take to perform (in fractional seconds). This doafter time can then be
modified via signal interactions, such as coming from components.

The Morale component, Surgery skill, Anatomy skill, and Xenobiology
skill all have had signal hooks for surgery speed added, while the
latter two are uniquely conditional signal modifiers. Anatomy only
provides its modifier if the target's species matches your own, while
Xenobiology only applies its modifier if the target is an alien. Morale
can situationally either give a bonus or a penalty depending on your
current amount of morale points.

So to offset that this is now significantly more variable and that 4
different sources of bonus surgical speed exist, I've actually made the
base surgery times always on the upper end of what their previous
doafter duration range was, so surgeries are in general slower if you
aren't taking advantage of specializing in it.

Signed-off-by: VMSolidus <evilexecutive@gmail.com>
2026-06-19 16:47:29 +00:00
VMSolidus 201592f6bd Mob Destroy Refactoring (#22573)
Refactoring the entire destroy proc path from Mob Human all the way down
to Atom while trying to find the causes for the damn mob human hard
deletes. This PR comprehensively reorganizes every single stray
snowflake var used by /atom/ all the way to /mob/living/carbon/human,
and makes sure that every var that COULD store a reference, is now
cleared during the entirety of the Mob Destroy() parent hierarchy.

This may very well be the end of the lag war. 

In total, I've hunted down and cleared 39 hanging references between
/atom and /mob/living/carbon/human

---------

Signed-off-by: VMSolidus <evilexecutive@gmail.com>
2026-06-03 15:15:56 +00:00
VMSolidus 4379dd2c1b Surgery Soft Requirement Refactor (#22314)
Skills being based on "Hard Requirements" absolutely suck, and I wasn't
happy with the surgery code being essentially hardcoded around them. So
this PR refactors surgery to use soft requirement checks, based on
modifiers to the success rate probability. Surgeries still state what
skills (if any) they require and at what level, but rather than blocking
the surgery, it instead imposes a penalty(or bonus) on the success
chance based on how much the user's surgical skill differs from the
required level. This actually stacks with the penalties for "non ideal
tools", so if you're completely unskilled in surgery and you attempt to
make an incision with a shard of glass, you're going to have an
extremely hard time.

Individual surgeries also can define how much the success rate is
modified by "skill diff", with the more advanced "surgeon exclusive"
surgeries having extremely large potential modifiers.

I have also added a signal based check for modifiers, which the Morale
component now hooks into. This can also allow for other components,
implants, drugs, etc to modify the surgery chances in the future.

I have manually tested this PR and verified by examining debug
breakpoints in VSCode that the system correctly applies its modifiers.
2026-04-26 19:57:59 +00:00
VMSolidus 260f744906 Skills System Revival: The Things She Remembered Had Never Been Her Own (#21853)
This PR is a revisit to the previously derelict PR #20159 that has been
unfinished for sometime now. More details about it in general can be
found here:
https://github.com/orgs/Aurorastation/projects/2?pane=issue&itemId=53167153

For awhile I've been talking about "Things I've been doing but it would
be really nice to do them with a skills system", or "And here's how I
would put this into the skills system when it's done". The main thing
that was stopping me from building it myself was having poor real life
skills in UI code and in DB code. However, I've gotten permission to
resume this PR, which has already completed the steps I would not have
been able to do myself. The rest of the PR fits well into my skillset as
a dev.

I'm opening this PR as a draft so as to enable my dev environment to
locally track all the previously modified files. I'll take this PR out
of draft and give this a full writeup when I have more work to show for
the PR this weekend.

### TODO

- [x] Rework a decent chunk of the currently existing skills to no
longer require hardcoded inserts into other systems. EG, converting from
classical ss13 methods, to modern /tg/-style ECS coding methods that
work off of component-signal patterns.
- [x] Make sure all of the existing skills have actual game
functionality (I won't PR a 2016 Baystation12 situation where 90% of the
skills are fluff only)
- [x] Add the various skills not yet made but are necessary for
completion sake, EG: Pilot (Spacecraft), Gunnery, Pilot (Walkers).
- [x] Examine each existing job in the game and assess whether it should
have a skill made with it in mind, or if it's covered by an existing
skill.
- [x] TO DISCUSS, BUT NOT ESSENTIAL: Additional skill proposals not
currently in the pre-existing TODO list, proposing subcategories.
- [x] Ensure that the previous TODO list is completed.

### Current Skills
The current list of skills, checkmarked for if I've completed them/they
have actual game mechanics. Or if we're just relegating them to separate
PRs. Originally this list was going to be forced to visit for a bare
minimum "does at least one thing" requirement, but now that is being
forgone due to this PR ballooning out of control and in complexity, as
well as development time overruns.

- [x] Bartending
- [x] Cooking
- [x] Gardening
- [x] Entertaining
- [x] Electrical Engineering
- [x] Mechanical Engineering
- [x] Atmospherics Systems
- [x] Reactor Systems
- [x] Medicine
- [x] Surgery
- [x] Pharmacology
- [x] Anatomy
- [x] Forensics
- [x] Robotics
- [x] Pilot: Spacecraft
- [x] Pilot: Exosuits
- [x] Research
- [x] Xenobotany
- [x] Xenoarchaeology
- [x] Xenobiology
- [x] Unarmed Combat
- [x] Armed Combat
- [x] Firearms
- [x] Leadership

---------

Signed-off-by: VMSolidus <evilexecutive@gmail.com>
Co-authored-by: Matt Atlas <liermattia@gmail.com>
Co-authored-by: FabianK3 <21039694+FabianK3@users.noreply.github.com>
Co-authored-by: Matt Atlas <mattiathebest2000@hotmail.it>
2026-04-18 14:33:48 +00:00
Casper3667 3fbe896673 Modifies Kathira's custom leg aug (#21870)
This adds a signal that can be used to stop bone repair surgery for any
cause that might prevent such. In this particular case, I used it with
Kathira's leg aug to fit with it being a support for her leg, which
can't heal properly otherwise.
This is primarily for when she ends up in surgery and can't inform the
doctors they shouldn't be trying to begin with.
2026-02-21 01:44:05 +00:00
Batrachophreno 5277251959 Tool behaviors port (#21663)
For a robust crafting system, I need a new materials framework.
For a new materials framework, I need to clean up reagents.
To clean up reagents, I need to pare down foods from reagent holders.
To pare down foods from reagent holders, I need to port edibility
components.
To port edibility components, I need to port processing components.
To port processing components, I need to port tool behaviors.

This is all back-end code, no new features or functionality from this.
2026-01-27 08:44:49 +00:00
Sparky 0639362a79 Fixes attempting surgery firing instead of normal actions (#19287)
Fixes surgery code from hijacking any attempt to use an item while
someone is on a bed. Rather than checking for a few allowed items, it
will now check for if the tool is meant for surgery, and only say "You
don't know what you can do" if so.
2024-05-31 21:19:34 +00:00
Fluffy ca6b04e1d7 Updated SSgarbage (#18173)
* pain

* sadfas

* sdfa

* sdfasf

* sfa

* sdf

* might the lord have mercy on our soul

* i cri everidai

* adeste fideles

* sdf

* where will this lead, what's coming next, from your inventions

* dear lord

* gjvhk

* i cri everidai

* fsgf

* sdfa

* sdaf

* hiuhi
2024-01-15 14:08:27 +00:00
Pirouette 2880d7098b Ported surgery sounds from /vg/station (#17531)
* Ported surgery sounds from /vg/station

Source: https://github.com/vgstation-coders/vgstation13/pull/31850

* Requested changes

* accidentally a line

* Moves cautery sound
2023-10-13 08:01:21 +00:00
Matt Atlas 54dc8a0860 Adds TGUI say and TGUI input. (#17471)
* i alone am the honoured one

* THROUGHOUT HEAVEN AND EARTH I ALONE AM THE HONOURED ONE

* hollow point

* nanana

* ssss

* tgsay final touches

* stuff

* tgui inputs

* help

* carpal tunnel syndrome

* ffff

* again and again and again and again

* hehehehe

* dsada

* readd sanitize

* whoops

* dsad

* nah fuck that

* sd

* fix

* ow

* remove prefs for testmerging

* oops

* oops 2

* fix that

* f

---------

Co-authored-by: Matt Atlas <liermattia@gmail.com>
2023-10-11 23:26:59 +02:00
Matt Atlas dd6e9c4ab6 Fixes a few organ mending surgery oddities. (#17404)
* Fixes a few organ mending surgery oddities.

* ssss

---------

Co-authored-by: Matt Atlas <liermattia@gmail.com>
2023-09-24 12:26:58 +00:00
Doxxmedearly 5ce0e5a8a9 Fixes multisurgery, reduces surgical times (#16779)
* Fixes multisurgery, reduces surgical times

* Reflect laser scalpels in CL
2023-07-21 19:35:07 +00:00
Doxxmedearly 39c66e38f7 Penlights can be used on patients on beds again (#16749) 2023-07-17 12:16:00 +00:00
Fluffy 2db8e52e64 Fixed defibrillators not working correctly on beds (#16625)
* Fixed defibrillators not working correctly on beds

* Update code/modules/surgery/surgery.dm

---------

Co-authored-by: Matt Atlas <mattiathebest2000@hotmail.it>
2023-07-04 10:23:06 +00:00
Matt Atlas 8066870056 Defib, toggle hair coverage, common radio fixes (#16594)
* 1x1

* ting

---------

Co-authored-by: Matt Atlas <liermattia@gmail.com>
2023-06-29 15:38:55 +00:00
harryob 578bae6f6f no relative pathing (#16234)
* the voices win in the end

* cleanup

* changelog

* secure.dm hates me

* make_exact_fit() in initialize instead of whatever was happening before
2023-04-30 21:10:13 +00:00
Sniblet 8febcc10f5 Makes Techno resurrect work (#15840)
* Update resurrect.dm

you cant just make a dead guy conscious in brainmed

* changelog+removed redundancy

* removed client check (for testing), removed surgery check for spells (probably good to stay)

* Update resurrect.dm

* Update Sniblet-resurrect.yml

* Update resurrect.dm

* only heals when successful

* only healing spells bypass surgery safety

* Update Sniblet-resurrect.yml
2023-03-06 13:10:36 +00:00
Fluffy 04d89f212a Singletons + refactor of /datum/observ + refactor of /decl/ into /singleton/ (#15519) 2023-01-10 19:22:14 +01:00
Matt Atlas b1869884c1 Revert "Singletons + refactor of /datum/observ (#15487)" (#15515) 2023-01-05 19:21:22 +01:00
Fluffy 0ddcf0817a Singletons + refactor of /datum/observ (#15487) 2023-01-05 18:41:40 +01:00
Jaraci dd635a06a8 Fixes grab intent injury inspection not working on a surgery table. (#14216) 2022-06-06 08:18:13 +02:00
VisVirific 774ede40bb Mediborgs can transplant organs again (#13537) 2022-04-16 21:32:29 +02:00
Alberyk 3940c6a044 Adds nymph-limbs: The Return (#12374) 2021-11-01 00:13:15 -03:00
Casper3667 c4f498d7e4 fixes autopsy scanners only working on harm intent (#12574) 2021-10-02 18:58:46 -03:00
nerocavalier e612f5c5bb Fixes stethoscopes, inhalers, and breath analysers not working on rollerbed. (#12550) 2021-09-25 16:09:13 -03:00
nerocavalier 0e00af3fb1 Surgery safety check but with travis (#12510) 2021-09-22 22:31:01 +02:00
Matt Atlas cf87c3f650 Revert "Surgery safety check (#12465)" (#12489) 2021-09-11 21:55:00 +02:00
nerocavalier d6c61edc56 Surgery safety check (#12465) 2021-09-11 17:52:05 +02:00
Geeves 0370e8c896 Tool Quality: Surgery and RIG Assembly (#12091) 2021-06-29 12:49:53 +02:00
mikomyazaki fdeae3a711 Fixes non-surgery tool use interaction with do_surgery (#9536) 2020-07-31 17:16:01 +02:00
mikomyazaki bf19b6653d Surgery tidy-up & bugfixes (#9501) 2020-07-30 14:05:38 +02:00
Matt Atlas 7e10f31776 Welders and cable coil now automatically repair the targeted robotic limb. (#8246) 2020-02-18 15:54:27 +01:00
Geeves 713a001b80 Surgery Overhaul (#7507) 2019-12-02 20:13:32 +01:00
LordFowl 8d436c4a03 Converts all necessary << outputs into the to_chat() macro. (#6076)
This PR will lead us towards the Promised Day, for in its wake there shall be much celebration and ecstasy as this world becomes a world suitable for developer hegemony. The first strike is thusly;

All << is converted into to_chat().
2019-03-10 23:39:03 +02:00
Lohikar f6dc33a465 Newmap - SMC, Openturf, Arrivals Controller, and Mine Turf Improvements (#1958)
* Replace SSingulo with SScalamity; processing cleanup
- SScalamity now handles blobs as well as singularity-types.
- Processing subtypes have been simplified to not require a stop_processing definition.

* this is probably important

* Remove cascade disabling SSgarbage

* Fixed a bug where dust() did not qdel the target mob

* Misc fixes

* Fix decals surviving break-to-plating

* Subsystem flag tweaks

* Apparently subsystems are new'd before config is.

* Fix paper icons

* Speculative fix for insane lag

* Better machinery stat

* Make organs not use SSoverlay

* Misc bugfixes & tweaks

* Nightmode fixes

* Changelog for SMC

* Port /tg/'s improved MC crash handling

* Add some more SS Recover() procs

* supply_controller -> SScargo

* More New() -> Initialize()

* pAI and robot construction overlays

* Fix cargo unit tests

* Merge the DMM Suite's atom/New() into atoms_init

* Lighting pre-baking

* Lighting initialization logging

* Fix some bad SS init orders

* Fix SSlighting logging; rename Processes to MC

* Speculative fix for insane GC lag

* Prebaked openturf/icon_smooth & fix lighting prebake

* SS init status; SSatoms LATEQDEL

* Fix bug with MC init stat panel

* Fix parallax

* Misc

* Ignore SS_NO_DISPLAY during init

* apparently this is important

* REEEEEE

* Image GC fixes; broadcaster radio-new sanity

* RCON Cleanup

* Move pAI recruiter into subsystem

* Move global solars list into sun subsystem

* Make chickens not use a global

* Demote SSdisposals to SS_BACKGROUND; garbage-debug cleanup

* Speed up space init a little

* Fix bad timer flags on floor drying

* Subsystem panic-restart verb for mins

* Explosion speedup

* Minor subsystem & MC logging tweaks

* SSopenturf improvements

* Make pipenet actually initialize (whoops)

* Minor tweaks

* Implement lighting rounding

* comments are hard okay

* Minor lattice tweaks

* Fix some timer issues & better closet init

* Timer sanity

* Request console tweaks + Storage init sanity

* Minor SSmachiner RCON improvements

* Further reduce world-start timer count

* Standardize subsystem logging

* Garbage hard delete profiling from /tg/

* Timer hang detection & recovery

* Log machines that sleep in process() and fuck up SSmachinery

* Fix an issue with external airlocks sleeping in process()

* Failsafe logging

* Minor tweaks

* Revert "Request console tweaks + Storage init sanity"

This reverts commit 98d3579e35.

* Re-implement RC changes

* Fix SQL FT saving

* Fix SSmachinery sleep in disposals

* Minor SS tweaks

* Paper fixes

* Blood drying fixes

* Merge gameticker and SSticker

* Minor global list init cleanup

* Lagcheck biogenerator & bags

* Tweak SScargo init order; RIG Initialize()

* Caching tweaks

* Remove rogue comma

* Initialize fixes

* Lighting destroy cleanup

* Fix emagging airlocks

* Initial SSicon implementation

* Tweaks & Fixes

* Fire + Air alarm queued icon updates

* Overlays + Queued icon cleanup

* Runtime & background fixes

* Kill some meaningless set statements

* Kill some image qdels

* Bump up lighting rounding val

* Fix adv. scanner destroy runtimes

* Remove unneeded icon update limiting

* Move icon smoothing into helpers

* Show a warning if DM 510 compiles without memory leak hack enabled

* Re-organize subsystems & MC defines a little

* Airlock SFX

* Log of Changes

* Make SSicon_update disable itself when not doing anything

* Fix respawn verb runtime when used early in server-init

* Add more information to MC's stat_entry()

* Replace direct refernces to gcDestroyed with QDEL* macros

* plant_controller -> SSplants

* More plant tweaks

* Add more humor to changelog

* Move parallax globals into SSparallax

* Lighting responsiveness tweaks

* Fix parallax init order & better MC init panel stat

* Make mobs GC

* More overlays + Remove intercom spawn()

* SSfast_process; make pinpointers not use spawn-recursion to process
Also made the SM Cascade beach process with SSprocessing instead of a spawn loop.

* Update changelog

* Mob GC tweaks

* Del() cleanup

* Fix insomniac ZAS connection edges

* Minor pAI cleanup

* Convert more things to SSoverlay; fix duplicated overlay in field gens

* SM Bluespace turf tweaks

* Update SSgarbage debug globals list

* Human-type qdel tweaks

* Subsystem suspension; stat_entry improvements

* SQL Statistics cleanup

* Fix runtimes with ambrosia

* More disable() -> suspend(); fix nightmode again

* Human qdel fix; minor tweaks

* Update turbolift to work with StonedMC

* Make lifts use timers instead of a subsystem

* Make SSassets start earlier

* Convert the radio controller into a subsystem

* Fix some missing CHECK_TICKs in asteroid generation

* MC stat tweaks; make shouldnt_see a typecache

* Kill some redundant debug-controller entries

* radio_controller -> SSradio

* Better SSgarbage hard-del logging from /tg/ upstream

* Logging tweaks + GELF

* Misc client caching improvements

* Slime SSoverlay

* Oven icon fixes

* Implant fixes
- Death implants will no longer spam Common on death of user.
- Death implants should handle a deleted user better.

* Holder tweaks + Welding tool Initialize()

* Fix some bad subsystem logging

* Fix suit cooling units spawning without cells

* Starlight tweaks

* Gibber infinite gib fix

* More SSoverlay stuff

* Make crates use CUT_OVERLAY_IN

* Make SSarrivals suspend instead of disable

* Make openturf use split/phased tick checks

* Speculative fix for unwet timer runtimes

* Blood overlay tweaks/fixes

* Update crusher to play nice with SMC + SSoverlay

* Openturf improvements and fixes

* Minor turbolift tweaks

* Lighting performance improvements + ChangeTurf tweaks

* this is probably important

* Fix wall weld noises on changeturf

* More ChangeTurf tweaks

* Explosion tweaks

* Pre-game lobby tweaks

* Openturf tweaks

* Prevent admins from starting the game before init finishes

* Fix Travis

* Kill an unused var

* Fix ChangeTurf runtimes on openturfs

* Fixes

* Browser datum fixes, asset caching

* Update changelog

* Changelog

* Lobby tweaks

* Ticker tweaks; kill ticker var

* Further lobby tweaks

* Cascade tweaks

* air_master -> SSair

* Reduce overhead from radio autosay

* alarm_manager -> SSalarm

* bomb_processor -> SSexplosives

* corp_regs -> SSlaw

* ZAS overlay fixes

* Small wall icon optimization

* Fix effects master

* Assembly tweaks

* Megavend fixes

* Shuttle fixes

* Camera alert performance improvements

* Fix some world.log spam from lighting overlays

* Fix some Initialize() procs

* Openspace responsiveness tweaks

* Make HE pipes animate through openturfs

* Kill a spawn
2017-05-02 14:40:40 -04:00
Alberyk b5353d1659 Fix loadout dress uniforms and cult book spam (#2013)
-fix #2011
-fix attacking people with cult books having no delay
-nerf frag grenades a bit
-fix #1988 but this may end allowing you to hit people if you use the wrong tool, but, however will make things far easier for borgs or people doing surgery
2017-03-29 18:38:53 +03:00
NanakoAC ceff4ae424 Tech Fixes: (#1888)
Fixes #1790 
Fixes #1791 

Fixes a number of issues with robot sprites, chem master machine, and surgery steps

The issue with borg sprites was caused by duplicate calls to ..()
Ive standardised robot module parent calls to the top of the function

Fixed the chemmaster not depositing pills in bottles properly. I added a new add_to_storage proc to storage.dm which is just a simple, safe means of putting stuff in stuff. it handles the checking.

Fixed some issues with surgery. A few surgery steps had incorrect "open" var ranges defined which was causing organ repair surgery to be interfered with

Also removed screwdriver from the list of bone mending tools, and added duct tape instead as the ghetto alternative. And allowed energyswords + chainswords to be used for cutting open ribs. theyre already useable for amputation

Fixed an incorrect return var for surgery that was making surgeons able to attack their patients on help intent. Shouldnt happen anymore

And also fixed the experimental welder being un-makeable at the protolathe.
2017-03-12 11:52:33 +02:00
Chinsky 53e1fb016e Failing to find a valid surgery step now doesn't prevent attack() from running.
It is now possible to inject / bandage / healthanalyze patients on help intent.
2016-01-07 21:57:26 +03:00
PsiOmegaDelta 89d20b9195 Updates macro/span use. 2015-12-02 09:25:00 +01:00
PsiOmegaDelta 2560c13816 Fixes hemostat surgery.
Port of https://github.com/PolarisSS13/Polaris/pull/381.
2015-12-02 08:56:58 +01:00
Zuhayr bb82f80885 Added get_bodytype() species proc as groundwork for subspecies.
Conflicts:
	code/modules/mob/living/carbon/human/update_icons.dm
	code/modules/organs/organ_icon.dm
2015-08-22 02:53:16 +09:30
= 601e6fb7ef Merged with dev. 2015-03-31 11:17:13 +10:30
PsiOmega 464d702d4b Mob refactoring.
Updates Bump() code.
Intents now use constants.
Simple animals can now use languages without overriding say().
There is now a difference between being able to smash normal and reinforced walls.
Reworks simple_animal/attackby so that constructs don't need to override it simply to add damage resistance.
2015-03-29 10:44:31 +02:00
Zuhayr e0f23aead5 Collapsed all organs into one object type. Added more interesting amputation. Added dislocation. WIP. 2015-03-11 21:17:51 +10:30
PsiOmega 173f0527eb Merge remote-tracking branch 'upstream/master' into dev-freeze
Conflicts:
	code/modules/mob/living/carbon/human/life.dm
	code/modules/nano/nanomanager.dm
	code/modules/surgery/surgery.dm
2015-03-05 08:05:44 +01:00
Chinsky b0be5a90ff Fixed exploit that allowed you to apply surgery step to any zone regardless of where you state it. For example it allows you to cut off heads, groins and even torsos by starting to cut off limb and then switching to other zone. Also now surgery lock is area-based, so more than one surgeon can work on different organs at same time. 2015-03-03 13:37:26 +03:00
Chinsky acfd99e33c Surgery now shows up on mob, in all gory glory. 2015-02-21 16:31:44 +03:00
Chinsky 6e7eb38c5d Merge pull request #7850 from Baystation12/master
master -> freeze
2015-01-16 14:23:03 +03:00
Chinsky 6f8618ded8 Fixes surgery steps never failing 2015-01-15 18:04:10 +03:00
Zuhayr bbfc6db0a3 Refactored gibbing and slipping for carbon mobs, entirely removed mutantrace var. This commit is only partial, following commits are contiguous to it (lol this is atomic right) 2014-12-23 17:38:05 +10:30