diff --git a/code/__DEFINES/~skyrat_defines/antagonists.dm b/code/__DEFINES/~skyrat_defines/antagonists.dm
index 05c05d4d832..98ffe1ecd2f 100644
--- a/code/__DEFINES/~skyrat_defines/antagonists.dm
+++ b/code/__DEFINES/~skyrat_defines/antagonists.dm
@@ -42,4 +42,4 @@
#define BORER_ALONE_PRODUCTION (1<<4)
// Clock cultist
-#define IS_CLOCK(mob) ((FACTION_CLOCK in mob.faction) || mob?.mind?.has_antag_datum(/datum/antagonist/clock_cultist))
+#define IS_CLOCK(mob) ((mob.has_faction(FACTION_CLOCK)) || mob?.mind?.has_antag_datum(/datum/antagonist/clock_cultist))
diff --git a/code/modules/antagonists/ert/ert.dm b/code/modules/antagonists/ert/ert.dm
index 3c9d2cec8e3..36ee0b94725 100644
--- a/code/modules/antagonists/ert/ert.dm
+++ b/code/modules/antagonists/ert/ert.dm
@@ -36,7 +36,7 @@
forge_objectives()
if(equip_ert)
equipERT()
- owner?.current.faction |= FACTION_ERT // SKYRAT EDIT ADDITION
+ owner?.current.add_faction(FACTION_ERT) // SKYRAT EDIT ADDITION
. = ..()
/datum/antagonist/ert/get_team()
diff --git a/modular_skyrat/modules/Midroundtraitor/code/event.dm b/modular_skyrat/modules/Midroundtraitor/code/event.dm
index dacc555534c..cbfedf40740 100644
--- a/modular_skyrat/modules/Midroundtraitor/code/event.dm
+++ b/modular_skyrat/modules/Midroundtraitor/code/event.dm
@@ -63,5 +63,5 @@
id_trim = /datum/id_trim/chameleon/operative
/datum/outfit/syndicateinfiltrator/post_equip(mob/living/carbon/human/H)
- H.faction |= ROLE_SYNDICATE
+ H.add_faction(ROLE_SYNDICATE)
H.update_icons()
diff --git a/modular_skyrat/modules/ashwalkers/code/species/Ashwalkers.dm b/modular_skyrat/modules/ashwalkers/code/species/Ashwalkers.dm
index ffb991ebc35..263a2b518f9 100644
--- a/modular_skyrat/modules/ashwalkers/code/species/Ashwalkers.dm
+++ b/modular_skyrat/modules/ashwalkers/code/species/Ashwalkers.dm
@@ -14,12 +14,12 @@
. = ..()
RegisterSignal(carbon_target, COMSIG_MOB_ITEM_ATTACK, PROC_REF(mob_attack))
carbon_target.AddComponent(/datum/component/ash_age)
- carbon_target.faction |= FACTION_ASHWALKER
+ carbon_target.add_faction(FACTION_ASHWALKER)
/datum/species/lizard/ashwalker/on_species_loss(mob/living/carbon/carbon_target)
. = ..()
UnregisterSignal(carbon_target, COMSIG_MOB_ITEM_ATTACK)
- carbon_target.faction &= FACTION_ASHWALKER
+ carbon_target.remove_faction(FACTION_ASHWALKER)
/datum/species/lizard/ashwalker/proc/mob_attack(datum/source, mob/mob_target, mob/user, list/modifiers)
SIGNAL_HANDLER
diff --git a/modular_skyrat/modules/assault_operatives/code/assault_operatives_outfits.dm b/modular_skyrat/modules/assault_operatives/code/assault_operatives_outfits.dm
index 3a63be7617b..257ef1ac0db 100644
--- a/modular_skyrat/modules/assault_operatives/code/assault_operatives_outfits.dm
+++ b/modular_skyrat/modules/assault_operatives/code/assault_operatives_outfits.dm
@@ -24,7 +24,7 @@
var/obj/item/implant/weapons_auth/weapons_authorisation = new/obj/item/implant/weapons_auth(equipping_human)
weapons_authorisation.implant(equipping_human)
- equipping_human.faction |= ROLE_SYNDICATE
+ equipping_human.add_faction(ROLE_SYNDICATE)
equipping_human.update_icons()
diff --git a/modular_skyrat/modules/assault_operatives/code/shuttle.dm b/modular_skyrat/modules/assault_operatives/code/shuttle.dm
index fb5410ede89..043d67e739b 100644
--- a/modular_skyrat/modules/assault_operatives/code/shuttle.dm
+++ b/modular_skyrat/modules/assault_operatives/code/shuttle.dm
@@ -14,7 +14,7 @@
return TRUE
/obj/machinery/computer/shuttle/goldeneye_cruiser/allowed(mob/to_check)
- if(issilicon(to_check) && !(ROLE_SYNDICATE in to_check.faction))
+ if(issilicon(to_check) && !(to_check.has_faction(ROLE_SYNDICATE)))
return FALSE
return ..()
diff --git a/modular_skyrat/modules/bitrunning/code/virtual_domains/ancient_milsim/outfit.dm b/modular_skyrat/modules/bitrunning/code/virtual_domains/ancient_milsim/outfit.dm
index 9290b2053d9..2a7fdb1eab0 100644
--- a/modular_skyrat/modules/bitrunning/code/virtual_domains/ancient_milsim/outfit.dm
+++ b/modular_skyrat/modules/bitrunning/code/virtual_domains/ancient_milsim/outfit.dm
@@ -61,7 +61,7 @@
/datum/outfit/cin_soldier_player/post_equip(mob/living/carbon/human/user, visualsOnly)
. = ..()
- user.faction |= ROLE_SYNDICATE
+ user.add_faction(ROLE_SYNDICATE)
// make sure we update the ID's name too
var/obj/item/card/id/id_card = user.wear_id
diff --git a/modular_skyrat/modules/black_mesa/code/ghost_spawners.dm b/modular_skyrat/modules/black_mesa/code/ghost_spawners.dm
index d13a66f10cb..97b31ec25e9 100644
--- a/modular_skyrat/modules/black_mesa/code/ghost_spawners.dm
+++ b/modular_skyrat/modules/black_mesa/code/ghost_spawners.dm
@@ -28,7 +28,7 @@
/datum/outfit/science_team/post_equip(mob/living/carbon/human/equipped_human, visualsOnly)
. = ..()
- equipped_human.faction |= FACTION_BLACKMESA
+ equipped_human.add_faction(FACTION_BLACKMESA)
/datum/id_trim/science_team
assignment = "Science Team Scientist"
@@ -65,7 +65,7 @@
/datum/outfit/security_guard/post_equip(mob/living/carbon/human/equipped_human, visualsOnly)
. = ..()
- equipped_human.faction |= FACTION_BLACKMESA
+ equipped_human.add_faction(FACTION_BLACKMESA)
/datum/id_trim/security_guard
assignment = "Security Guard"
@@ -170,7 +170,7 @@
/datum/outfit/hecu/post_equip(mob/living/carbon/human/equipped_human, visualsOnly)
. = ..()
- equipped_human.faction |= FACTION_HECU
+ equipped_human.add_faction(FACTION_HECU)
/datum/id_trim/hecu
assignment = "HECU Marine"
@@ -222,7 +222,7 @@
/datum/outfit/hecu/leader/post_equip(mob/living/carbon/human/equipped_human, visualsOnly)
. = ..()
- equipped_human.faction |= FACTION_HECU
+ equipped_human.add_faction(FACTION_HECU)
/datum/id_trim/hecu_leader
assignment = "HECU Captain"
diff --git a/modular_skyrat/modules/black_mesa/code/xen_crystal.dm b/modular_skyrat/modules/black_mesa/code/xen_crystal.dm
index 030ea3699af..e85f47ad981 100644
--- a/modular_skyrat/modules/black_mesa/code/xen_crystal.dm
+++ b/modular_skyrat/modules/black_mesa/code/xen_crystal.dm
@@ -60,7 +60,7 @@
for(var/mob/living/mob_to_neutralize in view(src, effect_range))
if(is_type_in_list(mob_to_neutralize, blacklisted_mobs))
return
- mob_to_neutralize.faction |= factions
+ mob_to_neutralize.add_faction(factions)
mob_to_neutralize.visible_message(span_green("[mob_to_neutralize] is overcome by a wave of peace and tranquility!"))
new /obj/effect/particle_effect/sparks/quantum(get_turf(mob_to_neutralize))
qdel(src)
diff --git a/modular_skyrat/modules/borgs/code/robot_model.dm b/modular_skyrat/modules/borgs/code/robot_model.dm
index 54e162360ee..1cc2a76c942 100644
--- a/modular_skyrat/modules/borgs/code/robot_model.dm
+++ b/modular_skyrat/modules/borgs/code/robot_model.dm
@@ -467,11 +467,11 @@
/obj/item/robot_model/ninja/rebuild_modules()
. = ..()
var/mob/living/silicon/robot/Ninja = loc
- Ninja.faction -= "silicon" //ai turrets hostile against assault and medical
+ Ninja.remove_faction("silicon") //ai turrets hostile against assault and medical
/obj/item/robot_model/ninja/remove_module(obj/item/I, delete_after)
var/mob/living/silicon/robot/Ninja = loc
- Ninja.faction += "silicon"
+ Ninja.add_faction("silicon")
. = ..()
/obj/item/robot_model/ninja/ninja_medical
diff --git a/modular_skyrat/modules/clock_cult/code/antagonist.dm b/modular_skyrat/modules/clock_cult/code/antagonist.dm
index 1b97d08f8ce..b3af9b0d3f2 100644
--- a/modular_skyrat/modules/clock_cult/code/antagonist.dm
+++ b/modular_skyrat/modules/clock_cult/code/antagonist.dm
@@ -32,7 +32,7 @@
/datum/antagonist/clock_cultist/apply_innate_effects(mob/living/mob_override)
. = ..()
var/mob/living/current = owner.current
- current.faction |= FACTION_CLOCK
+ current.add_faction(FACTION_CLOCK)
current.grant_language(/datum/language/ratvar, source = LANGUAGE_CULTIST)
communicate.Grant(current)
recall.Grant(current)
@@ -42,7 +42,7 @@
/datum/antagonist/clock_cultist/remove_innate_effects(mob/living/mob_override)
. = ..()
var/mob/living/current = owner.current
- current.faction -= FACTION_CLOCK
+ current.remove_faction(FACTION_CLOCK)
current.remove_language(/datum/language/ratvar, TRUE, TRUE, LANGUAGE_CULTIST)
communicate.Remove(current)
recall.Remove(current)
diff --git a/modular_skyrat/modules/clock_cult/code/outfit.dm b/modular_skyrat/modules/clock_cult/code/outfit.dm
index 4b922c6ad41..feee1c42c45 100644
--- a/modular_skyrat/modules/clock_cult/code/outfit.dm
+++ b/modular_skyrat/modules/clock_cult/code/outfit.dm
@@ -14,7 +14,7 @@
)
/datum/outfit/clock/pre_equip(mob/living/carbon/human/equip_human, visualsOnly)
- equip_human.faction |= FACTION_CLOCK
+ equip_human.add_faction(FACTION_CLOCK)
/datum/outfit/clock/armor
diff --git a/modular_skyrat/modules/colony_fabricator/code/appliances/recycler.dm b/modular_skyrat/modules/colony_fabricator/code/appliances/recycler.dm
index b48dcbb2155..cc65c5ab950 100644
--- a/modular_skyrat/modules/colony_fabricator/code/appliances/recycler.dm
+++ b/modular_skyrat/modules/colony_fabricator/code/appliances/recycler.dm
@@ -12,7 +12,7 @@
/// The sound made when an item is eaten
var/item_recycle_sound = 'modular_skyrat/modules/reagent_forging/sound/forge.ogg'
/// The recycler's internal materials storage, for when items recycled don't produce enough to make a full sheet of that material
- var/datum/component/material_container/materials
+ var/datum/material_container/materials
/// The list of all the materials we can recycle
var/static/list/allowed_materials = list(
/datum/material/iron,
@@ -34,8 +34,8 @@
. = ..()
AddElement(/datum/element/repackable, repacked_type, 5 SECONDS)
AddElement(/datum/element/manufacturer_examine, COMPANY_FRONTIER)
- materials = AddComponent( \
- /datum/component/material_container, \
+ materials = new ( \
+ src, \
allowed_materials, \
INFINITY, \
MATCONTAINER_EXAMINE, \
diff --git a/modular_skyrat/modules/customization/modules/surgery/organs/nif.dm b/modular_skyrat/modules/customization/modules/surgery/organs/nif.dm
deleted file mode 100644
index a798f084775..00000000000
--- a/modular_skyrat/modules/customization/modules/surgery/organs/nif.dm
+++ /dev/null
@@ -1,66 +0,0 @@
-// A surgery that repairs the patient's NIF
-/datum/surgery/repair_nif
- name = "Repair NIF"
- steps = list(
- /datum/surgery_step/incise,
- /datum/surgery_step/retract_skin,
- /datum/surgery_step/saw,
- /datum/surgery_step/clamp_bleeders,
- /datum/surgery_step/incise,
- /datum/surgery_step/repair_nif,
- /datum/surgery_step/close,
- )
-
- target_mobtypes = list(/mob/living/carbon/human)
- possible_locs = list(BODY_ZONE_HEAD)
- desc = "A surgical procedure that restores the integrity of an installed NIF."
-
-/datum/surgery/repair_nif/can_start(mob/user, mob/living/patient)
- var/mob/living/carbon/human/nif_patient = patient
- var/obj/item/organ/cyberimp/brain/nif/installed_nif = nif_patient.get_organ_by_type(/obj/item/organ/cyberimp/brain/nif)
-
- if(!nif_patient || !installed_nif)
- return FALSE
-
- return ..()
-
-/datum/surgery_step/repair_nif
- name = "repair installed NIF (multitool)"
- repeatable = FALSE
- implements = list(
- TOOL_MULTITOOL = 100,
- TOOL_HEMOSTAT = 35,
- TOOL_SCREWDRIVER = 15,
- )
- time = 12 SECONDS
-
-/datum/surgery_step/repair_nif/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
- display_results(user, target, span_notice("You begin to restore the integrity of [target]'s NIF..."),
- "[user] begins to fix [target]'s NIF.",
- "[user] begins to perform repairs on [target]'s NIF."
- )
-
-/datum/surgery_step/repair_nif/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
- display_results(user, target, span_notice("You succeed in restoring the integrity of [target]'s NIF."),
- "[user] successfully repairs [target]'s NIF!",
- "[user] completes the repair on [target]'s NIF."
- )
-
- var/mob/living/carbon/human/nif_patient = target
- var/obj/item/organ/cyberimp/brain/nif/installed_nif = nif_patient.get_organ_by_type(/obj/item/organ/cyberimp/brain/nif)
-
-
- installed_nif.durability = installed_nif.max_durability
- installed_nif.send_message("Restored to full integrity!")
-
- return ..()
-
-/datum/surgery_step/repair_nif/failure(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
- if(target.get_organ_slot(ORGAN_SLOT_BRAIN))
- display_results(user, target, span_warning("You screw up, causing [target] brain damage!"),
- span_warning("[user] screws up, while trying to repair [target]'s NIF!"),
- "[user] fails to complete the repair on [target]'s NIF.")
-
- target.adjust_organ_loss(ORGAN_SLOT_BRAIN, 20)
- return FALSE
-
diff --git a/modular_skyrat/modules/decay_subsystem/code/nests.dm b/modular_skyrat/modules/decay_subsystem/code/nests.dm
index d8273bb73e8..5e13bb506bd 100644
--- a/modular_skyrat/modules/decay_subsystem/code/nests.dm
+++ b/modular_skyrat/modules/decay_subsystem/code/nests.dm
@@ -86,7 +86,7 @@
var/mob/living/entered_mob = arrived
- if((NEST_FACTION in entered_mob.faction))
+ if((entered_mob.has_faction(NEST_FACTION)))
return
spawn_mob()
@@ -102,7 +102,7 @@
var/mob/living/spawned_mob = new chosen_mob_type(loc)
spawned_mob.flags_1 |= (flags_1 & ADMIN_SPAWNED_1)
- spawned_mob.faction = faction
+ spawned_mob.has_faction = faction
spawned_mob.ghost_controllable = ghost_controllable
RegisterSignal(spawned_mob, COMSIG_LIVING_DEATH, PROC_REF(mob_death))
diff --git a/modular_skyrat/modules/decay_subsystem/code/spawn_nest.dm b/modular_skyrat/modules/decay_subsystem/code/spawn_nest.dm
index a96edc45d95..e0c4803b186 100644
--- a/modular_skyrat/modules/decay_subsystem/code/spawn_nest.dm
+++ b/modular_skyrat/modules/decay_subsystem/code/spawn_nest.dm
@@ -54,6 +54,6 @@ ADMIN_VERB(spawn_mob_spawner, R_ADMIN, "Spawn mob spawner", "Spawns a mob spawne
spawned_spawner.icon_state = prefs["nest_icon"]["value"]
spawned_spawner.ghost_controllable = prefs["ghost_controllable"]["value"] == "Yes" ? TRUE : FALSE
spawned_spawner.passive_spawning = prefs["passive_spawning"]["value"] == "Yes" ? TRUE : FALSE
- spawned_spawner.faction += prefs["faction"]["value"]
+ spawned_spawner.add_faction(prefs["faction"]["value"])
if(prefs["passive_spawning"]["value"] == "Yes")
START_PROCESSING(SSobj, spawned_spawner)
diff --git a/modular_skyrat/modules/encounters/code/nri_raiders.dm b/modular_skyrat/modules/encounters/code/nri_raiders.dm
index 70a18de378c..d1fded723dd 100644
--- a/modular_skyrat/modules/encounters/code/nri_raiders.dm
+++ b/modular_skyrat/modules/encounters/code/nri_raiders.dm
@@ -100,8 +100,8 @@ GLOBAL_VAR(first_officer)
/datum/outfit/pirate/nri/post_equip(mob/living/carbon/human/equipped)
. = ..()
- equipped.faction -= "pirate"
- equipped.faction |= "raider"
+ equipped.remove_faction("pirate")
+ equipped.add_faction("raider")
// make sure we update the ID's name too
var/obj/item/card/id/id_card = equipped.wear_id
diff --git a/modular_skyrat/modules/examinemore/code/examine_more.dm b/modular_skyrat/modules/examinemore/code/examine_more.dm
index 468276e4b6e..5a915974aa0 100644
--- a/modular_skyrat/modules/examinemore/code/examine_more.dm
+++ b/modular_skyrat/modules/examinemore/code/examine_more.dm
@@ -55,7 +55,7 @@ would only be recognisable with someone that had the syndicate trait.
if(EXAMINE_CHECK_SYNDICATE)
if(user.mind)
var/datum/mind/M = user.mind
- if((ROLE_TRAITOR in M.get_special_roles()) || (ROLE_SYNDICATE in user.faction))
+ if((ROLE_TRAITOR in M.get_special_roles()) || (user.has_faction(ROLE_SYNDICATE)))
composed_message = "You note the following because of your [special_desc_affiliation ? special_desc_affiliation : "Syndicate Affiliation"]:
"
composed_message += special_desc
. += composed_message
@@ -99,7 +99,7 @@ would only be recognisable with someone that had the syndicate trait.
//Standard faction checks
if(EXAMINE_CHECK_FACTION)
for(var/faction_i in special_desc_factions)
- if(faction_i in user.faction)
+ if(user.has_faction(faction_i))
composed_message = "You note the following because of your loyalty to [faction_i]:
"
composed_message += special_desc
. += composed_message
diff --git a/modular_skyrat/modules/faction/code/mapping/mapping_helpers.dm b/modular_skyrat/modules/faction/code/mapping/mapping_helpers.dm
index af39d1b27c3..bf74865e574 100644
--- a/modular_skyrat/modules/faction/code/mapping/mapping_helpers.dm
+++ b/modular_skyrat/modules/faction/code/mapping/mapping_helpers.dm
@@ -160,7 +160,7 @@
if(1) //Random traitor items
new /obj/item/storage/box/syndie_kit/chameleon(src)
new /obj/item/storage/backpack/duffelbag/syndie/c4(src)
- new /obj/item/computer_disk/syndicate/camera_app(src)
+ new /obj/item/disk/computer/syndicate/camera_app(src)
new /obj/item/gun/chem(src)
new /obj/item/card/emag(src)
new /obj/item/card/emag/doorjack(src)
diff --git a/modular_skyrat/modules/mapping/code/lavaland_ruin_code.dm b/modular_skyrat/modules/mapping/code/lavaland_ruin_code.dm
index c7e584f5238..d3a5ad08476 100644
--- a/modular_skyrat/modules/mapping/code/lavaland_ruin_code.dm
+++ b/modular_skyrat/modules/mapping/code/lavaland_ruin_code.dm
@@ -27,7 +27,7 @@
ears = /obj/item/radio/headset/syndicateciv/staff
/datum/outfit/lavaland_syndicate/post_equip(mob/living/carbon/human/syndicate, visualsOnly = FALSE)
- syndicate.faction |= ROLE_SYNDICATE
+ syndicate.add_faction(ROLE_SYNDICATE)
var/obj/item/card/id/id_card = syndicate.wear_id
if(istype(id_card))
diff --git a/modular_skyrat/modules/mapping/code/mob_spawns.dm b/modular_skyrat/modules/mapping/code/mob_spawns.dm
index 6a4cb823750..b37bac43217 100644
--- a/modular_skyrat/modules/mapping/code/mob_spawns.dm
+++ b/modular_skyrat/modules/mapping/code/mob_spawns.dm
@@ -277,7 +277,7 @@
ears = /obj/item/radio/headset/syndicateciv/staff
/datum/outfit/ds2/syndicate/post_equip(mob/living/carbon/human/syndicate)
- syndicate.faction |= ROLE_SYNDICATE
+ syndicate.add_faction(ROLE_SYNDICATE)
return ..()
//DS-2 Command
@@ -334,7 +334,7 @@
id_trim = /datum/id_trim/syndicom/skyrat/ds2/stationadmiral
/datum/outfit/ds2/syndicate_command/post_equip(mob/living/carbon/human/syndicate)
- syndicate.faction |= ROLE_SYNDICATE
+ syndicate.add_faction(ROLE_SYNDICATE)
return ..()
/datum/outfit/hotelstaff
diff --git a/modular_skyrat/modules/medical/code/wounds/synth/blunt/robotic_blunt.dm b/modular_skyrat/modules/medical/code/wounds/synth/blunt/robotic_blunt.dm
index 9089766b534..2e42b49ba60 100644
--- a/modular_skyrat/modules/medical/code/wounds/synth/blunt/robotic_blunt.dm
+++ b/modular_skyrat/modules/medical/code/wounds/synth/blunt/robotic_blunt.dm
@@ -135,7 +135,7 @@
if(held_item && victim.dropItemToGround(held_item))
victim.visible_message(span_danger("[victim] drops [held_item] in shock!"), span_warning("The force on your [limb.plaintext_zone] causes you to drop [held_item]!"), vision_distance=COMBAT_MESSAGE_RANGE)
-/datum/wound/blunt/robotic/remove_wound(ignore_limb, replaced)
+/datum/wound/blunt/robotic/remove_wound(ignore_limb, replaced, destroying)
. = ..()
QDEL_NULL(active_trauma)
diff --git a/modular_skyrat/modules/medical/code/wounds/synth/robotic_burns.dm b/modular_skyrat/modules/medical/code/wounds/synth/robotic_burns.dm
index d0b161d16d3..8e9df426241 100644
--- a/modular_skyrat/modules/medical/code/wounds/synth/robotic_burns.dm
+++ b/modular_skyrat/modules/medical/code/wounds/synth/robotic_burns.dm
@@ -132,7 +132,7 @@
set_highest_scar(null)
-/datum/wound/burn/robotic/overheat/remove_wound(ignore_limb, replaced)
+/datum/wound/burn/robotic/overheat/remove_wound(ignore_limb, replaced, destroying)
if (!replaced && highest_scar)
already_scarred = TRUE
highest_scar.lazy_attach(limb)
diff --git a/modular_skyrat/modules/mold/code/mold_structures.dm b/modular_skyrat/modules/mold/code/mold_structures.dm
index 5cd190ff4fc..ac441e8f1db 100644
--- a/modular_skyrat/modules/mold/code/mold_structures.dm
+++ b/modular_skyrat/modules/mold/code/mold_structures.dm
@@ -238,7 +238,7 @@
if(!isliving(nearby_atom))
return
var/mob/living/nearby_mob = nearby_atom
- if(!(FACTION_MOLD in nearby_mob.faction))
+ if(!(nearby_mob.has_faction(FACTION_MOLD)))
INVOKE_ASYNC(src, PROC_REF(discharge))
/obj/structure/mold/structure/bulb/proc/make_full()
@@ -267,7 +267,7 @@
addtimer(CALLBACK(src, PROC_REF(make_full)), 1 MINUTES, TIMER_UNIQUE|TIMER_NO_HASH_WAIT)
/obj/structure/mold/structure/bulb/attack_generic(mob/user, damage_amount, damage_type, damage_flag, sound_effect, armor_penetration)
- if(FACTION_MOLD in user.faction)
+ if(user.has_faction(FACTION_MOLD))
return ..()
discharge()
. = ..()
diff --git a/modular_skyrat/modules/nanotrasen_rep/code/nanotrasen_consultant.dm b/modular_skyrat/modules/nanotrasen_rep/code/nanotrasen_consultant.dm
index e4101ba9c1e..9f4d731b4c4 100644
--- a/modular_skyrat/modules/nanotrasen_rep/code/nanotrasen_consultant.dm
+++ b/modular_skyrat/modules/nanotrasen_rep/code/nanotrasen_consultant.dm
@@ -106,7 +106,7 @@
/obj/item/modular_computer/pda/nanotrasen_consultant
name = "nanotrasen consultant's PDA"
icon_state = "/obj/item/modular_computer/pda/nanotrasen_consultant"
- inserted_disk = /obj/item/computer_disk/command/captain
+ inserted_disk = /obj/item/disk/computer/command/captain
inserted_item = /obj/item/pen/fountain/green
greyscale_colors = "#017941#0060b8"
@@ -151,7 +151,7 @@
new /obj/item/clothing/neck/petcollar(src)
new /obj/item/pet_carrier(src)
new /obj/item/clothing/suit/armor/vest(src)
- new /obj/item/computer_disk/command/captain(src)
+ new /obj/item/disk/computer/command/captain(src)
new /obj/item/radio/headset/heads/nanotrasen_consultant/alt(src)
new /obj/item/radio/headset/heads/nanotrasen_consultant(src)
new /obj/item/storage/photo_album/personal(src)
diff --git a/modular_skyrat/modules/opposing_force/code/equipment/gadgets.dm b/modular_skyrat/modules/opposing_force/code/equipment/gadgets.dm
index 9a17c8ec1a9..1431832c290 100644
--- a/modular_skyrat/modules/opposing_force/code/equipment/gadgets.dm
+++ b/modular_skyrat/modules/opposing_force/code/equipment/gadgets.dm
@@ -171,7 +171,7 @@
/datum/opposing_force_equipment/gadget_stealth/camera_app
name = "SyndEye Program"
- item_type = /obj/item/computer_disk/syndicate/camera_app
+ item_type = /obj/item/disk/computer/syndicate/camera_app
/datum/opposing_force_equipment/gadget_stealth/microlaser
name = "Radioactive Microlaser"
diff --git a/modular_skyrat/modules/quirks/neutral.dm b/modular_skyrat/modules/quirks/neutral.dm
index d4e8accd933..24e13624be3 100644
--- a/modular_skyrat/modules/quirks/neutral.dm
+++ b/modular_skyrat/modules/quirks/neutral.dm
@@ -301,7 +301,7 @@ GLOBAL_VAR_INIT(DNR_trait_overlay, generate_DNR_trait_overlay())
/datum/quirk/item_quirk/mouse/add_unique(client/client_source)
var/mob/living/carbon/human/human_holder = quirk_holder
var/obj/item/organ/tongue/mouse/new_tongue = new(get_turf(human_holder))
- human_holder.faction |= FACTION_RAT
+ human_holder.add_faction(FACTION_RAT)
new_tongue.copy_traits_from(human_holder.get_organ_slot(ORGAN_SLOT_TONGUE))
new_tongue.Insert(human_holder, special = TRUE, movement_flags = DELETE_IF_REPLACED)
diff --git a/modular_skyrat/modules/synths/code/surgery/mechanic_steps.dm b/modular_skyrat/modules/synths/code/surgery/mechanic_steps.dm
deleted file mode 100644
index aff60ef554b..00000000000
--- a/modular_skyrat/modules/synths/code/surgery/mechanic_steps.dm
+++ /dev/null
@@ -1,150 +0,0 @@
-//cut wires
-/datum/surgery_step/cut_wires
- name = "cut wires (wirecutters/scalpel)"
- implements = list(
- TOOL_WIRECUTTER = 100,
- TOOL_SCALPEL = 75,
- /obj/item/knife = 50,
- /obj/item = 10,
- ) // 10% success with any sharp item.
- time = 2.4 SECONDS
- preop_sound = 'sound/items/tools/wirecutter.ogg'
-
-/datum/surgery_step/cut_wires/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
- display_results(
- user,
- target,
- span_notice("You begin to cut loose wires in [target]'s [parse_zone(target_zone)]..."),
- "[user] begins to cut loose wires in [target]'s [parse_zone(target_zone)].",
- "[user] begins to cut loose wires in [target]'s [parse_zone(target_zone)].",
- )
-
-/datum/surgery_step/cut_wires/tool_check(mob/user, obj/item/tool)
- if(implement_type == /obj/item && !tool.get_sharpness())
- return FALSE
- return TRUE
-
-//pry off plating
-/datum/surgery_step/pry_off_plating
- name = "pry off plating (crowbar/hemostat)"
- implements = list(
- TOOL_CROWBAR = 100,
- TOOL_HEMOSTAT = 75,
- )
- time = 2.4 SECONDS
- preop_sound = 'sound/items/tools/crowbar.ogg'
-
-/datum/surgery_step/pry_off_plating/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
- do_sparks(rand(5, 9), FALSE, target.loc)
- return TRUE
-
-/datum/surgery_step/pry_off_plating/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
- display_results(
- user,
- target,
- span_notice("You begin to pry off [target]'s [parse_zone(target_zone)] plating..."),
- "[user] begins to pry off [target]'s [parse_zone(target_zone)] plating.",
- "[user] begins to pry off [target]'s [parse_zone(target_zone)] plating.",
- )
-
-//weld plating
-/datum/surgery_step/weld_plating
- name = "weld plating (welder)"
- implements = list(
- TOOL_WELDER = 100,
- )
- time = 2.4 SECONDS
- preop_sound = 'sound/items/tools/welder.ogg'
-
-/datum/surgery_step/weld_plating/tool_check(mob/user, obj/item/tool)
- if(implement_type == TOOL_WELDER && !tool.use_tool(user, user, 0, volume=50, amount=1))
- return FALSE
- return TRUE
-
-/datum/surgery_step/weld_plating/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
- display_results(
- user,
- target,
- span_notice("You begin to weld [target]'s [parse_zone(target_zone)] plating..."),
- "[user] begins to weld [target]'s [parse_zone(target_zone)] plating.",
- "[user] begins to weld [target]'s [parse_zone(target_zone)] plating.",
- )
-
-//weld plating - Act
-/datum/surgery_step/weld_plating_slice
- name = "weld plating"
- implements = list(
- TOOL_WELDER = 100,
- )
- time = 2.4 SECONDS
- preop_sound = 'sound/items/tools/welder.ogg'
-
-/datum/surgery_step/weld_plating/tool_check(mob/user, obj/item/tool)
- if(implement_type == TOOL_WELDER && !tool.use_tool(user, user, 0, volume=50, amount=1))
- return FALSE
- return TRUE
-
-/datum/surgery_step/weld_plating/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
- display_results(
- user,
- target,
- span_notice("You begin to weld into [target]'s [parse_zone(target_zone)] plating to open it..."),
- "[user] begins to weld into [target]'s [parse_zone(target_zone)] plating with [tool].",
- "[user] begins to weld into [target]'s [parse_zone(target_zone)] plating.",
- )
-
-//replace wires
-/datum/surgery_step/replace_wires
- name = "replace wires (cable coil)"
- implements = list(/obj/item/stack/cable_coil = 100)
- time = 2.4 SECONDS
- var/cableamount = 5
-
-/datum/surgery_step/replace_wires/tool_check(mob/user, obj/item/tool)
- var/obj/item/stack/cable_coil/coil = tool
- if(coil.get_amount() < cableamount)
- to_chat(user, span_warning("Not enough cable!"))
- return FALSE
- return TRUE
-
-/datum/surgery_step/replace_wires/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
- var/obj/item/stack/cable_coil/coil = tool
- if(coil && !(coil.get_amount() < cableamount)) //failproof
- coil.use(cableamount)
- return TRUE
-
-/datum/surgery_step/replace_wires/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
- display_results(
- user,
- target,
- span_notice("You begin to replace [target]'s [parse_zone(target_zone)] wiring..."),
- "[user] begins to replace [target]'s [parse_zone(target_zone)] wiring.",
- "[user] begins to replace [target]'s [parse_zone(target_zone)] wiring.",
- )
-
-//add plating
-/datum/surgery_step/add_plating
- name = "add plating (iron sheet)"
- implements = list(/obj/item/stack/sheet/iron = 100)
- time = 2.4 SECONDS
- var/ironamount = 5
-
-/datum/surgery_step/add_plating/tool_check(mob/user, obj/item/tool)
- var/obj/item/stack/sheet/iron/plat = tool
- if(plat.get_amount() < ironamount)
- to_chat(user, span_warning("Not enough iron!"))
- return FALSE
- return TRUE
-
-/datum/surgery_step/add_plating/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
- var/obj/item/stack/sheet/iron/plat = tool
- return plat?.use(ironamount)
-
-/datum/surgery_step/add_plating/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
- display_results(
- user,
- target,
- span_notice("You begin to add plating to [target]'s [parse_zone(target_zone)]..."),
- "[user] begins to add plating to [target]'s [parse_zone(target_zone)].",
- "[user] begins to add plating to [target]'s [parse_zone(target_zone)].",
- )
diff --git a/modular_skyrat/modules/synths/code/surgery/robot_brain_surgery.dm b/modular_skyrat/modules/synths/code/surgery/robot_brain_surgery.dm
deleted file mode 100644
index 14b4c011188..00000000000
--- a/modular_skyrat/modules/synths/code/surgery/robot_brain_surgery.dm
+++ /dev/null
@@ -1,124 +0,0 @@
-/datum/surgery/robot_brain_surgery
- name = "Reset Posibrain Logic (Brain Surgery)"
- steps = list(
- /datum/surgery_step/mechanic_open,
- /datum/surgery_step/mechanic_unwrench,
- /datum/surgery_step/pry_off_plating,
- /datum/surgery_step/prepare_electronics,
- /datum/surgery_step/fix_robot_brain,
- /datum/surgery_step/mechanic_close,
- )
-
- target_mobtypes = list(/mob/living/carbon/human)
- possible_locs = list(BODY_ZONE_CHEST) // The brains are in the chest
- requires_bodypart_type = BODYTYPE_ROBOTIC | BODYTYPE_NANO //Bubber Edit - BODYTYPE_NANO
- desc = "A surgical procedure that restores the default behavior logic and personality matrix of an IPC posibrain."
-
-/datum/surgery/robot_brain_surgery/can_start(mob/user, mob/living/carbon/target, obj/item/tool)
- var/obj/item/organ/brain/synth/brain = target.get_organ_slot(ORGAN_SLOT_BRAIN)
-
- if (!..())
- return FALSE
-
- if(!istype(brain) && !issynthetic(target))
- return FALSE
- else
- return TRUE
-
-/datum/surgery_step/fix_robot_brain
- name = "fix posibrain (multitool)"
- implements = list(
- TOOL_MULTITOOL = 95,
- TOOL_HEMOSTAT = 35,
- /obj/item/pen = 15
- )
- repeatable = TRUE
- time = 12 SECONDS //long and complicated
-
-/datum/surgery_step/fix_robot_brain/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
- display_results(
- user,
- target,
- span_notice("You begin to clear system corruption from [target]'s posibrain..."),
- "[user] begins to fix [target]'s posibrain.",
- "[user] begins to perform surgery on [target]'s posibrain.",
- )
-
-/datum/surgery_step/fix_robot_brain/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
- display_results(user,
- target,
- span_notice("You succeed in clearing system corruption from [target]'s posibrain."),
- "[user] successfully fixes [target]'s posibrain!",
- "[user] completes the surgery on [target]'s posibrain.",
- )
-
- if(target.mind && target.mind.has_antag_datum(/datum/antagonist/brainwashed))
- target.mind.remove_antag_datum(/datum/antagonist/brainwashed)
-
- target.set_organ_loss(ORGAN_SLOT_BRAIN, target.get_organ_loss(ORGAN_SLOT_BRAIN) - 60) //we set damage in this case in order to clear the "failing" flag
- target.cure_all_traumas(TRAUMA_RESILIENCE_SURGERY)
- target.cure_all_traumas(TRAUMA_RESILIENCE_LOBOTOMY) //Lobotomy tier fix cause you can't clone this!
- target.apply_status_effect(/datum/status_effect/vulnerable_to_damage/surgery)
-
- if(target.get_organ_loss(ORGAN_SLOT_BRAIN) > NONE)
- to_chat(user, "[target]'s posibrain still has some lasting system damage that can be cleared.")
-
- return ..()
-
-/datum/surgery_step/fix_robot_brain/failure(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
- if(target.get_organ_slot(ORGAN_SLOT_BRAIN))
- display_results(
- user,
- target,
- span_warning("You screw up, fragmenting their data!"),
- span_warning("[user] screws up, causing damage to the circuits!"),
- "[user] completes the surgery on [target]'s posibrain.",
- )
-
- target.adjust_organ_loss(ORGAN_SLOT_BRAIN, 60)
- target.gain_trauma_type(BRAIN_TRAUMA_SEVERE, TRAUMA_RESILIENCE_LOBOTOMY)
- else
- user.visible_message(span_warning("[user] suddenly notices that the posibrain [user.p_they()] [user.p_were()] working on is not there anymore."), span_warning("You suddenly notice that the posibrain you were working on is not there anymore."))
-
- return FALSE
-
-/datum/surgery/robot_trauma_surgery
- name = "Reticulate Posibrain Splines (Blessed Lobotomy)"
- desc = "A surgical procedure that refurbishes low level components in the posibrain, to fix the strongest trauma errors."
- possible_locs = list(BODY_ZONE_CHEST) // The brains are in the chest
- requires_bodypart_type = BODYTYPE_ROBOTIC
- target_mobtypes = list(/mob/living/carbon/human)
- steps = list(
- /datum/surgery_step/mechanic_open,
- /datum/surgery_step/mechanic_unwrench,
- /datum/surgery_step/pry_off_plating,
- /datum/surgery_step/prepare_electronics,
- /datum/surgery_step/fix_robot_brain/advanced,
- /datum/surgery_step/mechanic_close,
- )
-
-/datum/surgery_step/fix_robot_brain/advanced
- name = "reticulate splines (multitool)"
- repeatable = FALSE
- chems_needed = list(
- /datum/reagent/medicine/liquid_solder,
- /datum/reagent/water/holywater,
- )
-
-/datum/surgery_step/fix_robot_brain/advanced/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
- display_results(user,
- target,
- span_notice("You succeed in reticulating [target]'s splines."),
- "[user] successfully fixes [target]'s posibrain!",
- "[user] completes the surgery on [target]'s posibrain.",
- )
-
- target.set_organ_loss(ORGAN_SLOT_BRAIN, target.get_organ_loss(ORGAN_SLOT_BRAIN) - 60) //we set damage in this case in order to clear the "failing" flag
- target.cure_all_traumas(TRAUMA_RESILIENCE_SURGERY)
- target.cure_all_traumas(TRAUMA_RESILIENCE_LOBOTOMY)
- target.cure_all_traumas(TRAUMA_RESILIENCE_MAGIC)
- target.apply_status_effect(/datum/status_effect/vulnerable_to_damage/surgery)
- playsound(source = get_turf(target), soundin = 'sound/effects/magic/repulse.ogg', vol = 75, vary = TRUE, falloff_distance = 2)
- if(target.mind && target.mind.has_antag_datum(/datum/antagonist/brainwashed))
- target.mind.remove_antag_datum(/datum/antagonist/brainwashed)
- return ..()
diff --git a/modular_skyrat/modules/synths/code/surgery/robot_chassis_restoration.dm b/modular_skyrat/modules/synths/code/surgery/robot_chassis_restoration.dm
deleted file mode 100644
index 048b45be0ef..00000000000
--- a/modular_skyrat/modules/synths/code/surgery/robot_chassis_restoration.dm
+++ /dev/null
@@ -1,120 +0,0 @@
-#define SYNTH_REVIVE_WELD_INTERNALS_DAMAGE 30
-
-// Should be a very quick surgery, it's meant to replace defibs (mostly!)
-/datum/surgery/positronic_restoration
- name = "Posibrain Reboot (Revival)"
- steps = list(
- /datum/surgery_step/mechanic_open,
- /datum/surgery_step/open_hatch,
- /datum/surgery_step/mechanic_unwrench,
- /datum/surgery_step/prepare_electronics,
- /datum/surgery_step/weld_plating/fullbody,
- /datum/surgery_step/finalize_positronic_restoration,
- /datum/surgery_step/mechanic_close,
- )
-
- target_mobtypes = list(/mob/living/carbon/human)
- possible_locs = list(BODY_ZONE_CHEST)
- requires_bodypart_type = BODYTYPE_ROBOTIC
- desc = "A surgical procedure that reboots a positronic brain."
-
-/datum/surgery/positronic_restoration/can_start(mob/user, mob/living/carbon/target)
- if(!..() || target.stat != DEAD || !target.get_organ_slot(ORGAN_SLOT_BRAIN) || !issynthetic(target))
- return FALSE
-
- return TRUE
-
-/datum/surgery_step/pry_off_plating/fullbody
- time = 1.4 SECONDS
-
-/datum/surgery_step/pry_off_plating/fullbody/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
- display_results(
- user,
- target,
- span_notice("You begin to pry open the outer protective panels on [target]'s braincase..."),
- span_notice("[user] begins to pry open the outer protective panels on [target]'s braincase."),
- span_notice("[user] begins to pry open the panels on [target]'s braincase.")
- )
-
-/datum/surgery_step/weld_plating/fullbody
- time = 2 SECONDS
-
-/datum/surgery_step/weld_plating/fullbody/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
- display_results(
- user,
- target,
- span_notice("You begin to slice the inner protective panels from [target]'s braincase..."),
- span_notice("[user] begins to slice the inner protective panels from [target]'s braincase."),
- span_notice("[user] begins to slice the panels from [target]'s braincase.")
- )
-
-/datum/surgery_step/weld_plating/fullbody/success(mob/user, mob/living/target, target_zone, obj/item/tool, datum/surgery/surgery, default_display_results)
- . = ..()
-
- target.apply_damage(SYNTH_REVIVE_WELD_INTERNALS_DAMAGE, BRUTE, "[target_zone]", wound_bonus = CANT_WOUND)
-
-/datum/surgery_step/add_plating/fullbody
- time = 3 SECONDS
- ironamount = 15
-
-/datum/surgery_step/add_plating/fullbody/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
- display_results(
- user,
- target,
- span_notice("You begin to add new panels to [target]'s braincase..."),
- span_notice("[user] begins to add new panels to [target]'s braincase."),
- span_notice("[user] begins to add new panels to [target]'s braincase.")
- )
-
-/datum/surgery_step/add_plating/fullbody/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
- . = ..()
-
- target.heal_bodypart_damage(brute = SYNTH_REVIVE_WELD_INTERNALS_DAMAGE, target_zone = "[target_zone]")
-
-/datum/surgery_step/finalize_positronic_restoration
- name = "finalize positronic restoration (multitool/shocking implement)"
- implements = list(
- TOOL_MULTITOOL = 100,
- /obj/item/shockpaddles = 70,
- /obj/item/melee/touch_attack/shock = 70,
- /obj/item/melee/baton/security = 35,
- /obj/item/gun/energy = 10
- )
- time = 5 SECONDS
-
-/datum/surgery_step/finalize_positronic_restoration/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
- display_results(
- user,
- target,
- span_notice("You begin to force a reboot in [target]'s posibrain..."),
- span_notice("[user] begins to force a reboot in [target]'s posibrain."),
- span_notice("[user] begins to force a reboot in [target]'s posibrain.")
- )
-
- target.notify_revival("Someone is trying to reboot your posibrain.", source = target)
-
-/datum/surgery_step/finalize_positronic_restoration/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
- if (target.stat < DEAD)
- target.visible_message(span_notice("...[target] is completely unaffected! Seems like they're already active!"))
- return TRUE
-
- target.cure_husk()
- target.grab_ghost()
- target.updatehealth()
-
- if(target.revive())
- target.emote("chime")
- target.visible_message(span_notice("...[target] reactivates, their chassis coming online!"))
- to_chat(target, span_danger("[CONFIG_GET(string/blackoutpolicy)]"))
- return TRUE //This is due to synths having some weirdness with their revive.
- else
- target.emote("buzz")
- target.visible_message(span_warning("...[target.p_they()] convulses, then goes offline."))
- return FALSE
-
-/datum/surgery_step/finalize_positronic_restoration/failure(mob/user, mob/living/target, target_zone, obj/item/tool, datum/surgery/surgery, fail_prob)
- . = ..()
-
- target.adjust_organ_loss(ORGAN_SLOT_BRAIN, 5, 130)
-
-#undef SYNTH_REVIVE_WELD_INTERNALS_DAMAGE
diff --git a/modular_skyrat/modules/synths/code/surgery/robot_healing.dm b/modular_skyrat/modules/synths/code/surgery/robot_healing.dm
deleted file mode 100644
index 2ee49d9d361..00000000000
--- a/modular_skyrat/modules/synths/code/surgery/robot_healing.dm
+++ /dev/null
@@ -1,269 +0,0 @@
-#define DAMAGE_ROUNDING 0.1
-#define FAIL_DAMAGE_MULTIPLIER 0.8
-#define FINAL_STEP_HEAL_MULTIPLIER 0.55
-
-//Almost copypaste of tend wounds, with some changes
-/datum/surgery/robot_healing
- steps = list(
- /datum/surgery_step/mechanic_open,
- /datum/surgery_step/pry_off_plating,
- /datum/surgery_step/cut_wires,
- /datum/surgery_step/robot_heal,
- /datum/surgery_step/mechanic_close,
- )
-
- target_mobtypes = list(/mob/living/carbon/human)
- possible_locs = list(BODY_ZONE_CHEST)
- replaced_by = /datum/surgery
- requires_bodypart_type = BODYTYPE_ROBOTIC
- surgery_flags = SURGERY_IGNORE_CLOTHES | SURGERY_REQUIRE_RESTING | SURGERY_REQUIRE_LIMB | SURGERY_SELF_OPERABLE
-
- /// The step to use in the 4th surgery step.
- var/healing_step_type
- /// If true, doesn't send the surgery preop message. Set during surgery.
- var/surgery_preop_message_sent = FALSE
-
-/datum/surgery/robot_healing/New(surgery_target, surgery_location, surgery_bodypart)
- ..()
- if(healing_step_type)
- steps = list(
- /datum/surgery_step/mechanic_open,
- /datum/surgery_step/pry_off_plating,
- /datum/surgery_step/cut_wires,
- healing_step_type,
- /datum/surgery_step/mechanic_close,
- )
-
-/datum/surgery_step/robot_heal
- name = "repair body (crowbar/wirecutters)"
- implements = list(TOOL_CROWBAR = 100, TOOL_WIRECUTTER = 100)
- repeatable = TRUE
- time = 2.7 SECONDS
-
- /// If this surgery is healing brute damage. Set during operation steps.
- var/heals_brute = FALSE
- /// If this surgery is healing burn damage. Set during operation steps.
- var/heals_burn = FALSE
- /// How much healing the sugery gives.
- var/brute_heal_amount = 7
- /// How much healing the sugery gives.
- var/burn_heal_amount = 7
- /// Percentage of total damaged healed per cycle. If 0, no healing of the damage is performed
- var/brute_multiplier = 0
- /// Percentage of total damaged healed per cycle. If 0, no healing of the damage is performed
- var/burn_multiplier = 0
-
-/datum/surgery_step/robot_heal/tool_check(mob/user, obj/item/tool)
- if(implement_type == TOOL_CROWBAR && implement_type == TOOL_WIRECUTTER)
- return FALSE
- return TRUE
-
-/datum/surgery_step/robot_heal/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
- var/woundtype
- if(implement_type == TOOL_CROWBAR)
- heals_brute = TRUE
- heals_burn = FALSE
- woundtype = "dents"
- return
-
- if(implement_type == TOOL_WIRECUTTER)
- heals_brute = FALSE
- heals_burn = TRUE
- woundtype = "wiring"
- return
-
- if(!istype(surgery, /datum/surgery/robot_healing))
- return
-
- var/datum/surgery/robot_healing/the_surgery = surgery
- if(the_surgery.surgery_preop_message_sent)
- return
-
- display_results(
- user,
- target,
- span_notice("You attempt to fix some of [target]'s [woundtype]."),
- span_notice("[user] attempts to fix some of [target]'s [woundtype]."),
- span_notice("[user] attempts to fix some of [target]'s [woundtype]."),
- )
-
-/datum/surgery_step/robot_heal/initiate(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery, try_to_fail = FALSE)
- if(..())
- while((heals_brute && target.get_brute_loss() && tool) || (heals_burn && target.get_fire_loss() && tool))
- if(!..())
- break
-
-/datum/surgery_step/robot_heal/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
- var/user_message = "You succeed in fixing some of [target]'s damage" //no period, add initial space to "addons"
- var/target_message = "[user] fixes some of [target]'s damage" //see above
- var/brute_healed = 0
- var/burn_healed = 0
- var/status_msg = list()
- feedback_value = null
- if(heals_brute)
- brute_healed = brute_heal_amount
- tool.use_tool(target, user, 0, volume = 50, amount = 1)
- brute_healed += round((target.get_brute_loss() * brute_multiplier), DAMAGE_ROUNDING)
-
- if(heals_burn)
- burn_healed = burn_heal_amount
- tool.use_tool(target, user, 0, volume = 50, amount = 1)
- burn_healed += round((target.get_fire_loss() * burn_multiplier), DAMAGE_ROUNDING)
-
- if(!get_location_accessible(target, target_zone))
- brute_healed *= FINAL_STEP_HEAL_MULTIPLIER
- burn_healed *= FINAL_STEP_HEAL_MULTIPLIER
- status_msg += "[target.p_have()] clothing on"
-
- if(length(status_msg) > 0)
- user_message += " as best as you can while [target.p_they()] [english_list(status_msg)]"
- target_message += " as best as [user.p_they()] can while [target.p_they()] [english_list(status_msg)]"
-
- feedback_value = brute_healed + burn_healed
-
- target.heal_bodypart_damage(brute_healed, burn_healed, updating_health = FALSE)
-
- if(!get_feedback_message(user, target))
- user_message += get_progress(user, target, brute_healed, burn_healed)
-
- if(HAS_MIND_TRAIT(user, TRAIT_MORBID) && ishuman(user) && target.stat != DEAD) //Morbid folk don't care about tending the dead as much as tending the living
- var/mob/living/carbon/human/morbid_weirdo = user
- morbid_weirdo.add_mood_event("morbid_tend_wounds", /datum/mood_event/morbid_tend_wounds)
-
- display_results(
- user,
- target,
- span_notice("[user_message]."),
- span_notice("[target_message]."),
- span_notice("[target_message]."),
- )
-
- if(istype(surgery, /datum/surgery/robot_healing))
- var/datum/surgery/robot_healing/the_surgery = surgery
- the_surgery.surgery_preop_message_sent = TRUE
-
- return TRUE
-
-/datum/surgery_step/robot_heal/failure(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
- display_results(
- user,
- target,
- span_warning("You screwed up!"),
- span_warning("[user] screws up!"),
- span_notice("[user] fixes some of [target]'s damage."),
- target_detailed = TRUE,
- )
-
- var/brute_dealt = 0
- var/burn_dealt = 0
- if(heals_brute)
- brute_dealt = brute_heal_amount * FAIL_DAMAGE_MULTIPLIER
- brute_dealt += round((target.get_brute_loss() * (brute_multiplier * 0.5)), DAMAGE_ROUNDING)
-
- if(heals_burn)
- burn_dealt = burn_heal_amount * FAIL_DAMAGE_MULTIPLIER
- burn_dealt += round((target.get_fire_loss() * (burn_multiplier * 0.5)), DAMAGE_ROUNDING)
-
- target.take_bodypart_damage(brute_dealt, burn_dealt, wound_bonus = CANT_WOUND)
- return FALSE
-
-/***************************TYPES***************************/
-/datum/surgery/robot_healing/basic
- name = "Repair Robotic Chassis (Basic)"
- desc = "A surgical procedure that provides repairs and maintenance to robotic chassis. Is slightly more efficient when the patient is severely damaged."
- healing_step_type = /datum/surgery_step/robot_heal/basic
- replaced_by = /datum/surgery/robot_healing/upgraded
-
-/datum/surgery/robot_healing/upgraded
- name = "Repair Robotic Chassis (Adv.)"
- desc = "A surgical procedure that provides highly effective repairs and maintenance to robotic chassis. Is somewhat more efficient when the patient is severely damaged."
- healing_step_type = /datum/surgery_step/robot_heal/upgraded
- replaced_by = /datum/surgery/robot_healing/experimental
- requires_tech = TRUE
-
-/datum/surgery/robot_healing/experimental
- name = "Repair Robotic Chassis (Exp.)"
- desc = "A surgical procedure that quickly provides highly effective repairs and maintenance to robotic chassis. Is moderately more efficient when the patient is severely damaged."
- healing_step_type = /datum/surgery_step/robot_heal/experimental
- replaced_by = null
- requires_tech = TRUE
-
-/***************************STEPS***************************/
-
-/datum/surgery_step/robot_heal/basic
- brute_multiplier = 0.07
- burn_multiplier = 0.07
-
-/datum/surgery_step/robot_heal/upgraded
- brute_multiplier = 0.1
- burn_multiplier = 0.1
-
-/datum/surgery_step/robot_heal/experimental
- brute_multiplier = 0.2
- burn_multiplier = 0.2
-
-// Mostly a copypaste of standard tend wounds get_progress(). In order to abstract this, I'd have to rework the hierarchy of surgery upstream, so I'll just do this. Pain.
-/**
- * Args:
- * * mob/user: The user performing this surgery.
- * * mob/living/carbon/target: The target of the surgery.
- * * brute_healed: The amount of brute we just healed.
- * * burn_healed: The amount of burn we just healed.
- *
- * Returns:
- * * A string containing either an estimation of how much longer the surgery will take, or exact numbers of the remaining damages, depending on if a health analyzer
- * is held or not.
- */
-/datum/surgery_step/robot_heal/proc/get_progress(mob/user, mob/living/carbon/target, brute_healed, burn_healed)
- var/estimated_remaining_steps = 0
- if(brute_healed > 0)
- estimated_remaining_steps = max(0, (target.get_brute_loss() / brute_healed))
- if(burn_healed > 0)
- estimated_remaining_steps = max(estimated_remaining_steps, (target.get_fire_loss() / burn_healed)) // whichever is higher between brute or burn steps
-
- var/progress_text
-
- if(locate(/obj/item/healthanalyzer) in user.held_items)
- if(target.get_brute_loss())
- progress_text = ". Remaining brute: [target.get_brute_loss()]"
- if(target.get_fire_loss())
- progress_text += ". Remaining burn: [target.get_fire_loss()]"
- else
- switch(estimated_remaining_steps)
- if(-INFINITY to 1)
- return
- if(1 to 3)
- progress_text = ", finishing up the last few signs of damage"
- if(3 to 6)
- progress_text = ", counting down the last few patches of trauma"
- if(6 to 9)
- progress_text = ", continuing to plug away at [target.p_their()] extensive damages"
- if(9 to 12)
- progress_text = ", steadying yourself for the long surgery ahead"
- if(12 to 15)
- progress_text = ", though [target.p_they()] still look[target.p_s()] heavily battered"
- if(15 to INFINITY)
- progress_text = ", though you feel like you're barely making a dent in treating [target.p_their()] broken body"
-
- return progress_text
-
-/datum/surgery_step/robot_heal/get_feedback_message(mob/living/user, mob/living/target, speed_mod = 1)
- var/show_message = FALSE
- if(HAS_TRAIT(user, TRAIT_MEDICAL_HUD) || HAS_TRAIT(user, TRAIT_DIAGNOSTIC_HUD))
- show_message = TRUE
- else if(locate(/obj/item/healthanalyzer) in user.held_items)
- show_message = TRUE
- else if(get_location_modifier(target) == OPERATING_COMPUTER_MODIFIER)
- show_message = TRUE
-
- if(!show_message)
- return
-
- if(heals_brute)
- return "[round(1 / speed_mod, 0.1)]x ([target.get_brute_loss()]) [feedback_value]"
- else
- return "[round(1 / speed_mod, 0.1)]x ([target.get_fire_loss()]) [feedback_value]"
-
-#undef DAMAGE_ROUNDING
-#undef FAIL_DAMAGE_MULTIPLIER
-#undef FINAL_STEP_HEAL_MULTIPLIER
diff --git a/modular_skyrat/modules/synths/code/surgery/robot_heart_surgery.dm b/modular_skyrat/modules/synths/code/surgery/robot_heart_surgery.dm
deleted file mode 100644
index c428b143577..00000000000
--- a/modular_skyrat/modules/synths/code/surgery/robot_heart_surgery.dm
+++ /dev/null
@@ -1,74 +0,0 @@
-/// Hydraulic Pump Surgery
-/datum/surgery/hydraulic_maintenance
- name = "Hydraulic Pump Maintenance"
- requires_bodypart_type = BODYTYPE_ROBOTIC | BODYTYPE_NANO
- surgery_flags = SURGERY_REQUIRE_RESTING | SURGERY_REQUIRE_LIMB | SURGERY_REQUIRES_REAL_LIMB
- steps = list(
- /datum/surgery_step/mechanic_open,
- /datum/surgery_step/mechanic_unwrench,
- /datum/surgery_step/pry_off_plating,
- /datum/surgery_step/prepare_electronics,
- /datum/surgery_step/hydraulic/repair,
- /datum/surgery_step/mechanic_wrench,
- /datum/surgery_step/mechanic_close,
- )
- target_mobtypes = list(/mob/living/carbon/human)
- possible_locs = list(BODY_ZONE_CHEST)
- desc = "A mechanical surgery procedure designed to repair an androids internal hydraulic pump."
-
-/datum/surgery/hydraulic_maintenance/can_start(mob/user, mob/living/carbon/target)
- var/obj/item/organ/heart/hydraulic_pump = target.get_organ_slot(ORGAN_SLOT_HEART)
- if(isnull(hydraulic_pump) || !issynthetic(target) || hydraulic_pump.damage < 10)
- return FALSE
- return ..()
-
-/datum/surgery_step/hydraulic/repair
- name = "tighten seals (screwdriver or wrench)"
- implements = list(
- TOOL_SCREWDRIVER = 90,
- TOOL_WRENCH = 90,
- TOOL_WIRECUTTER = 35,
- /obj/item/stack/package_wrap = 15,
- )
- preop_sound = 'sound/items/tools/ratchet_slow.ogg'
- success_sound = 'sound/machines/airlock/doorclick.ogg'
-
-/datum/surgery_step/hydraulic/repair/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
- display_results(
- user,
- target,
- span_notice("You begin to tighten the clamps around [target]'s hydraulic pump..."),
- span_notice("[user] begins to repair [target]'s hydraulic pump with [tool]!"),
- span_notice("[user] begins to repair [target]'s hydraulic pump!"),
- )
- display_pain(target, "The pain in your chest is unbearable! You can barely take it anymore!")
-
-/datum/surgery_step/hydraulic/repair/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery, default_display_results = FALSE)
- var/mob/living/carbon/human/patient = target
- var/obj/item/organ/heart/hydraulic = patient.get_organ_slot(ORGAN_SLOT_HEART)
- patient.set_organ_loss(ORGAN_SLOT_HEART, 0) // adjust_organ_loss didnt work here without runtimes spamming, setting to 0 as synths have no natural organ decay/regeneration
- if(hydraulic.organ_flags & ORGAN_EMP)
- hydraulic.organ_flags &= ~ORGAN_EMP
- display_results(
- user,
- target,
- span_notice("You successfully repair [target]'s hydraulic pump."),
- span_notice("[user] finishes clamping tubing down around [target]'s hydraulic pump with [tool]."),
- span_notice("[user] finishes clamping tubing down around [target]'s hydraulic pump."),
- )
- display_pain(target, "The warnings, but your pump is as strong as ever!")
- return ..()
-
-/datum/surgery_step/hydraulic/repair/failure(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
- if(ishuman(target))
- var/mob/living/carbon/human/patient = target
- display_results(
- user,
- target,
- span_warning("You screw up and slip your [tool] into their pump, tearing part of the pump off!"),
- span_warning("[user] screws up, causing high pressure oil to spurt out of [target]'s chest profusely!"),
- span_warning("[user] completes the surgery, but is that oil supposed to be squirting out of [target]'s chest like that?"),
- )
- display_pain(target, "Your chest burns; you feel oil flooding your chest cavity!")
- patient.adjust_organ_loss(ORGAN_SLOT_HEART, 20)
- return FALSE
diff --git a/modular_skyrat/modules/synths/code/surgery/robot_liver_surgery.dm b/modular_skyrat/modules/synths/code/surgery/robot_liver_surgery.dm
deleted file mode 100644
index 5f4f12171a6..00000000000
--- a/modular_skyrat/modules/synths/code/surgery/robot_liver_surgery.dm
+++ /dev/null
@@ -1,73 +0,0 @@
-/// Reagent Processor Repair surgery
-/datum/surgery/reagent_pump
- name = "Reagent Processor Manual Reset"
- surgery_flags = SURGERY_REQUIRE_RESTING | SURGERY_REQUIRE_LIMB | SURGERY_REQUIRES_REAL_LIMB
- steps = list(
- /datum/surgery_step/mechanic_open,
- /datum/surgery_step/mechanic_unwrench,
- /datum/surgery_step/pry_off_plating,
- /datum/surgery_step/prepare_electronics,
- /datum/surgery_step/reagent_pump/repair,
- /datum/surgery_step/mechanic_wrench,
- /datum/surgery_step/mechanic_close,
- )
- target_mobtypes = list(/mob/living/carbon/human)
- possible_locs = list(BODY_ZONE_CHEST)
- requires_bodypart_type = BODYTYPE_ROBOTIC
- desc = "A mechanical list of actions to reset the reagent processor and purge built up minerals."
-
-/datum/surgery/reagent_pump/can_start(mob/user, mob/living/carbon/target)
- var/obj/item/organ/liver/reagent_processor = target.get_organ_slot(ORGAN_SLOT_LIVER)
- if(isnull(reagent_processor) || !issynthetic(target) || reagent_processor.damage < 10)
- return FALSE
- return ..()
-
-/datum/surgery_step/reagent_pump/repair
- name = "perform valve adjustment (screwdriver)"
- implements = list(
- TOOL_SCREWDRIVER = 95,
- TOOL_SCALPEL = 45,
- /obj/item/melee/energy/sword = 35,
- /obj/item/knife = 25,
- /obj/item/shard = 5,
- )
- preop_sound = 'sound/items/tools/screwdriver_operating.ogg'
- success_sound = 'sound/machines/airlock/doorclick.ogg'
-
-/datum/surgery_step/reagent_pump/repair/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
- display_results(
- user,
- target,
- span_notice("You start to descale minerals built up in [target]'s reagent processor..."),
- span_notice("[user] begins to fix [target]'s reagent processor with [tool]."),
- span_notice("[user] begins to fix [target]'s reagent processor."),
- )
- display_pain(target, "Your systems disconnect from your reagent processor, avoiding unnecessary errors.")
-
-/datum/surgery_step/reagent_pump/repair/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery, default_display_results = FALSE)
- var/mob/living/carbon/human/patient = target
- var/obj/item/organ/liver/reagent_processor = target.get_organ_slot(ORGAN_SLOT_LIVER)
- patient.set_organ_loss(ORGAN_SLOT_LIVER, 0) // adjust_organ_loss didnt work here without runtimes spamming, setting to 0 as synths have no natural organ decay/regeneration
- if(reagent_processor.organ_flags & ORGAN_EMP)
- reagent_processor.organ_flags &= ~ORGAN_EMP
- display_results(
- user,
- target,
- span_notice("You successfully descale [target]'s reagent processor, restoring factory settings and removing built up minerals."),
- span_notice("[user] successfully descales [target]'s reagent processor, restoring factory settings and removing built up minerals."),
- span_notice("[user] successfully resets [target]'s reagent processor."),
- )
- display_pain(target, "Flow rate restored.")
- return ..()
-
-/datum/surgery_step/reagent_pump/repair/failure(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery)
- var/mob/living/carbon/human/patient = target
- patient.adjust_organ_loss(ORGAN_SLOT_LIVER, 15)
- display_results(
- user,
- target,
- span_warning("You adjust [target]'s reagent processor out of spec!"),
- span_warning("[user] follows the wrong guide for [target]'s reagent processor!"),
- span_warning("[user] finishes adjusting [target]'s reagent processor... wait that isn't right..."),
- )
- display_pain(target, "You see errors flow across your vision!")
diff --git a/modular_skyrat/modules/synths/code/surgery/robot_lung_surgery.dm b/modular_skyrat/modules/synths/code/surgery/robot_lung_surgery.dm
deleted file mode 100644
index f35cb2b0761..00000000000
--- a/modular_skyrat/modules/synths/code/surgery/robot_lung_surgery.dm
+++ /dev/null
@@ -1,75 +0,0 @@
-/// Heatsink Repair Surgery
-/datum/surgery/heatsink
- name = "Heatsink Maintenance"
- surgery_flags = SURGERY_REQUIRE_RESTING | SURGERY_REQUIRE_LIMB | SURGERY_REQUIRES_REAL_LIMB
- steps = list(
- /datum/surgery_step/mechanic_open,
- /datum/surgery_step/mechanic_unwrench,
- /datum/surgery_step/weld_plating_slice,
- /datum/surgery_step/pry_off_plating,
- /datum/surgery_step/prepare_electronics,
- /datum/surgery_step/heatsink/repair,
- /datum/surgery_step/mechanic_wrench,
- /datum/surgery_step/mechanic_close,
- )
- target_mobtypes = list(/mob/living/carbon/human)
- possible_locs = list(BODY_ZONE_CHEST)
- requires_bodypart_type = BODYTYPE_ROBOTIC
- desc = "A mechanical surgery procedure designed to repair an androids internal heatsink."
-
-/datum/surgery/heatsink/can_start(mob/user, mob/living/carbon/target, obj/item/tool)
- var/obj/item/organ/lungs/target_lungs = target.get_organ_slot(ORGAN_SLOT_LUNGS)
- if(isnull(target_lungs) || !issynthetic(target) || target_lungs.damage < 10 )
- return FALSE
- return ..()
-
-/datum/surgery_step/heatsink/repair
- name = "Tighten heatsink mounts (wrench)"
- implements = list(
- TOOL_WRENCH = 90,
- TOOL_RETRACTOR = 45,
- )
- time = 2.4 SECONDS
- preop_sound = 'sound/items/tools/ratchet_fast.ogg'
- success_sound = 'sound/machines/airlock/doorclick.ogg'
-
-/datum/surgery_step/heatsink/repair/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
- display_results(
- user,
- target,
- span_notice("You begin to tighten the bolts on [target]'s heatsink..."),
- span_notice("[user] begins to tighten the bolts on [target]'s heatsink using [tool]."),
- span_notice("[user] begins to tighten the bolts on [target]'s heatsink."),
- )
- display_pain(target, "You feel a metal clank inside your chest as [user] starts to work.")
-
-/datum/surgery_step/heatsink/repair/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery, default_display_results = FALSE)
- if(ishuman(target))
- var/mob/living/carbon/human/patient = target
- var/obj/item/organ/lungs/heatsink = patient.get_organ_slot(ORGAN_SLOT_LUNGS)
- patient.set_organ_loss(ORGAN_SLOT_LUNGS, 0) // adjust_organ_loss didnt work here without runtimes spamming, setting to 0 as synths have no natural organ decay/regeneration
- if(heatsink.organ_flags & ORGAN_EMP)
- heatsink.organ_flags &= ~ORGAN_EMP
- display_results(
- user,
- target,
- span_notice("You successfully tighten [target]'s bolts on their heatsink."),
- span_notice("[user] successfully tightened [target]'s heatsink using [tool]."),
- span_notice("[user] finishes tightening [target]'s heatsink."),
- )
- display_pain(target, "Your internal errors clear for your temperature regulation.")
- return ..()
-
-/datum/surgery_step/heatsink/repair/failure(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
- if(ishuman(target))
- var/mob/living/carbon/human/patient = target
- display_results(
- user,
- target,
- span_warning("You slip and barely catch the [tool] before it falls, failing to tighten [target]'s heatsink down!"),
- span_warning("[user]'s butterfingers barely catches the [tool] before it falls into [target]'s chest!"),
- span_warning("[user] screws up, nearly dropping the [tool] into [target]'s chest!"),
- )
- display_pain(target, "You feel a dull thud in your chest; it feels like a [tool] fell into your chest cavity!")
- patient.adjust_organ_loss(ORGAN_SLOT_LUNGS, 10) // better find your wrench!
- return FALSE
diff --git a/modular_skyrat/modules/synths/code/surgery/robot_stomach_surgery.dm b/modular_skyrat/modules/synths/code/surgery/robot_stomach_surgery.dm
deleted file mode 100644
index 94d1def95d7..00000000000
--- a/modular_skyrat/modules/synths/code/surgery/robot_stomach_surgery.dm
+++ /dev/null
@@ -1,73 +0,0 @@
-/// Bioreactor Maintenance
-/datum/surgery/bioreactor
- name = "Bioreactor Maintenance"
- surgery_flags = SURGERY_REQUIRE_RESTING | SURGERY_REQUIRE_LIMB | SURGERY_REQUIRES_REAL_LIMB
- organ_to_manipulate = ORGAN_SLOT_STOMACH
- possible_locs = list(BODY_ZONE_CHEST)
- requires_bodypart_type = BODYTYPE_ROBOTIC | BODYTYPE_NANO
- steps = list(
- /datum/surgery_step/mechanic_open,
- /datum/surgery_step/mechanic_unwrench,
- /datum/surgery_step/pry_off_plating,
- /datum/surgery_step/prepare_electronics,
- /datum/surgery_step/bioreactor/repair,
- /datum/surgery_step/mechanic_wrench,
- /datum/surgery_step/mechanic_close,
- )
- desc = "A mechanical surgery procedure designed to repair an androids internal bioreactor."
-
-/datum/surgery/bioreactor/can_start(mob/user, mob/living/carbon/target)
- var/obj/item/organ/stomach/bioreactor = target.get_organ_slot(ORGAN_SLOT_STOMACH)
- if(isnull(bioreactor) || !issynthetic(target) || bioreactor.damage < 10)
- return FALSE
- return ..()
-
-/datum/surgery_step/bioreactor/repair
- name = "perform bioreactor maintenance (screwdriver)"
- implements = list(
- TOOL_SCREWDRIVER = 95,
- TOOL_SCALPEL = 45,
- /obj/item/melee/energy/sword = 35,
- /obj/item/knife = 25,
- /obj/item/shard = 5,
- )
- preop_sound = 'sound/items/tools/ratchet_slow.ogg'
- success_sound = 'sound/machines/airlock/doorclick.ogg'
-
-/datum/surgery_step/bioreactor/repair/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
- display_results(
- user,
- target,
- span_notice("You begin to patch the damaged section of [target]'s bioreactor..."),
- span_notice("[user] begins to delicately repair [target]'s bioreactor using [tool]."),
- span_notice("[user] begins to delicately repair [target]'s bioreactor."),
- )
- display_pain(target, "You feel a horrible stab in your gut!")
-
-/datum/surgery_step/bioreactor/repair/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery, default_display_results = FALSE)
- var/mob/living/carbon/human/patient = target
- var/obj/item/organ/stomach/bioreactor = target.get_organ_slot(ORGAN_SLOT_STOMACH)
- patient.set_organ_loss(ORGAN_SLOT_STOMACH, 0) // adjust_organ_loss didnt work here without runtimes spamming, setting to 0 as synths have no natural organ decay/regeneration
- if(bioreactor.organ_flags & ORGAN_EMP)
- bioreactor.organ_flags &= ~ORGAN_EMP
- display_results(
- user,
- target,
- span_notice("You successfully repair the damaged part of [target]'s bioreactor."),
- span_notice("[user] successfully repairs the damaged part of [target]'s bioreactor using [tool]."),
- span_notice("[user] successfully repairs the damaged part of [target]'s bioreactor."),
- )
- display_pain(target, "The errors clear from your bioreactor.")
- return ..()
-
-/datum/surgery_step/bioreactor/repair/failure(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery)
- var/mob/living/carbon/human/patient = target
- patient.adjust_organ_loss(ORGAN_SLOT_STOMACH, 15)
- display_results(
- user,
- target,
- span_warning("You slip and puncture [target]'s bioreactor!"),
- span_warning("[user] slips and punctures [target]'s bioreactor with the [tool]!"),
- span_warning("[user] slips and punctures [target]'s bioreactor!"),
- )
- display_pain(target, "Your midsection throws additional errors; that's not right!")
diff --git a/modular_skyrat/modules/synths/code/surgery/robot_surgery_rename.dm b/modular_skyrat/modules/synths/code/surgery/robot_surgery_rename.dm
deleted file mode 100644
index 427d60d6f03..00000000000
--- a/modular_skyrat/modules/synths/code/surgery/robot_surgery_rename.dm
+++ /dev/null
@@ -1,14 +0,0 @@
-/datum/surgery/amputation/mechanic
- name = "Disconnect limb"
-
-/datum/surgery/autopsy/mechanic
- name = "System Failure Analysis (Autopsy)"
-
-/datum/surgery/organ_manipulation/mechanic
- name = "Hardware Manipulation (Organ Manipulation)"
-
-/datum/surgery/organ_manipulation/mechanic/external
- name = "Chassis Manipulation (External Manipulation)"
-
-
-
diff --git a/modular_skyrat/modules/synths/code/surgery/surgery.dm b/modular_skyrat/modules/synths/code/surgery/surgery.dm
deleted file mode 100644
index 60d1a050bc0..00000000000
--- a/modular_skyrat/modules/synths/code/surgery/surgery.dm
+++ /dev/null
@@ -1,57 +0,0 @@
-//Blacklists upstream's mechanical surgeries for augmented people in favor of our synth surgeries
-
-/datum/surgery/advanced/bioware/cortex_folding/mechanic/can_start(mob/user, mob/living/carbon/target)
- return !issynthetic(target) && ..()
-
-/datum/surgery/advanced/bioware/cortex_imprint/mechanic/can_start(mob/user, mob/living/carbon/target)
- return !issynthetic(target) && ..()
-
-/datum/surgery/advanced/bioware/ligament_hook/mechanic/can_start(mob/user, mob/living/carbon/target)
- return !issynthetic(target) && ..()
-
-/datum/surgery/advanced/bioware/muscled_veins/mechanic/can_start(mob/user, mob/living/carbon/target)
- return !issynthetic(target) && ..()
-
-/datum/surgery/advanced/bioware/nerve_grounding/mechanic/can_start(mob/user, mob/living/carbon/target)
- return !issynthetic(target) && ..()
-
-/datum/surgery/advanced/bioware/nerve_splicing/mechanic/can_start(mob/user, mob/living/carbon/target)
- return !issynthetic(target) && ..()
-
-/datum/surgery/advanced/bioware/vein_threading/mechanic/can_start(mob/user, mob/living/carbon/target)
- return !issynthetic(target) && ..()
-
-/datum/surgery/advanced/lobotomy/mechanic/can_start(mob/user, mob/living/carbon/target)
- return !issynthetic(target) && ..()
-
-/datum/surgery/blood_filter/mechanic/can_start(mob/user, mob/living/carbon/target)
- return !issynthetic(target) && ..()
-
-/datum/surgery/brain_surgery/mechanic/can_start(mob/user, mob/living/carbon/target)
- return !issynthetic(target) && ..()
-
-/datum/surgery/coronary_bypass/mechanic/can_start(mob/user, mob/living/carbon/target)
- return !issynthetic(target) && ..()
-
-/datum/surgery/gastrectomy/mechanic/can_start(mob/user, mob/living/carbon/target)
- return !issynthetic(target) && ..()
-
-/datum/surgery/hepatectomy/mechanic/can_start(mob/user, mob/living/carbon/target)
- return !issynthetic(target) && ..()
-
-/datum/surgery/lipoplasty/mechanic/can_start(mob/user, mob/living/carbon/target)
- return !issynthetic(target) && ..()
-
-/datum/surgery/lobectomy/mechanic/can_start(mob/user, mob/living/carbon/target)
- return !issynthetic(target) && ..()
-
-//Disable both normal and mechanical for synths. Makes some sense on augmented people so lacks a biotype check.
-/datum/surgery/revival/can_start(mob/user, mob/living/carbon/target)
- return !issynthetic(target) && ..()
-
-/datum/surgery/stomach_pump/mechanic/can_start(mob/user, mob/living/carbon/target)
- return !issynthetic(target) && ..()
-
-/// Proteans can not heal via these surgeries.
-/datum/surgery/healing/can_start(mob/user, mob/living/patient)
- return !isprotean(patient) && ..()
diff --git a/modular_skyrat/modules/telecomms_specialist/telecomms_specialist.dm b/modular_skyrat/modules/telecomms_specialist/telecomms_specialist.dm
index ca350971d76..d125b7e40da 100644
--- a/modular_skyrat/modules/telecomms_specialist/telecomms_specialist.dm
+++ b/modular_skyrat/modules/telecomms_specialist/telecomms_specialist.dm
@@ -38,7 +38,7 @@
/obj/item/reagent_containers/cup = 10,
/obj/item/stock_parts/subspace = 8,
/obj/item/banhammer = 8,
- /obj/item/computer_disk/maintenance = 1,
+ /obj/item/disk/computer/maintenance = 1,
)
rpg_title = "Code Whisperer"
job_flags = STATION_JOB_FLAGS
diff --git a/modular_zubbers/code/_globalvars/lists/maintenance_loot_common.dm b/modular_zubbers/code/_globalvars/lists/maintenance_loot_common.dm
index 464e1e36f26..216a8832e11 100644
--- a/modular_zubbers/code/_globalvars/lists/maintenance_loot_common.dm
+++ b/modular_zubbers/code/_globalvars/lists/maintenance_loot_common.dm
@@ -549,18 +549,18 @@ GLOBAL_LIST_INIT(common_loot, list( //common: basic items
/obj/item/mining_voucher = 3
) = 75,
list(
- /obj/item/computer_disk = 25,
- /obj/item/computer_disk/engineering = 1,
- /obj/item/computer_disk/medical = 1,
- /obj/item/computer_disk/ordnance = 1,
- /obj/item/computer_disk/security = 1,
- /obj/item/computer_disk/advanced = 5,
- /obj/item/computer_disk/maintenance/camera = 20,
- /obj/item/computer_disk/maintenance/modsuit_control = 20,
- /obj/item/computer_disk/maintenance/scanner = 20,
- /obj/item/computer_disk/maintenance/theme = 20,
- /obj/item/computer_disk/virus/clown = 1,
- /obj/item/computer_disk/virus/mime = 1,
+ /obj/item/disk/computer = 25,
+ /obj/item/disk/computer/engineering = 1,
+ /obj/item/disk/computer/medical = 1,
+ /obj/item/disk/computer/ordnance = 1,
+ /obj/item/disk/computer/security = 1,
+ /obj/item/disk/computer/advanced = 5,
+ /obj/item/disk/computer/maintenance/camera = 20,
+ /obj/item/disk/computer/maintenance/modsuit_control = 20,
+ /obj/item/disk/computer/maintenance/scanner = 20,
+ /obj/item/disk/computer/maintenance/theme = 20,
+ /obj/item/disk/computer/virus/clown = 1,
+ /obj/item/disk/computer/virus/mime = 1,
/obj/item/disk/data = 25,
/obj/item/disk/holodisk = 10,
/obj/item/disk/holodisk/woospider = 5,
diff --git a/modular_zubbers/code/game/gamemodes/fleshmind/fleshmind_generic_actions.dm b/modular_zubbers/code/game/gamemodes/fleshmind/fleshmind_generic_actions.dm
index 083fde19286..eeb0208b748 100644
--- a/modular_zubbers/code/game/gamemodes/fleshmind/fleshmind_generic_actions.dm
+++ b/modular_zubbers/code/game/gamemodes/fleshmind/fleshmind_generic_actions.dm
@@ -78,7 +78,7 @@
if(!message)
return
for(var/mob/iterating_mob in GLOB.player_list)
- if(!(FACTION_FLESHMIND in iterating_mob.faction) && !isobserver(iterating_mob))
+ if(!(iterating_mob.has_faction(FACTION_FLESHMIND)) && !isobserver(iterating_mob))
continue
to_chat(iterating_mob, span_purple("FLESHMIND ([owner]): [message]"))
diff --git a/modular_zubbers/code/game/gamemodes/fleshmind/human_corruption_component.dm b/modular_zubbers/code/game/gamemodes/fleshmind/human_corruption_component.dm
index 6eb6ab24c60..b3f1494c401 100644
--- a/modular_zubbers/code/game/gamemodes/fleshmind/human_corruption_component.dm
+++ b/modular_zubbers/code/game/gamemodes/fleshmind/human_corruption_component.dm
@@ -60,7 +60,7 @@
granted_actions += new_action
RegisterSignal(new_action, COMSIG_QDELETING, PROC_REF(action_destroyed))
- infected_human.faction |= FACTION_FLESHMIND
+ infected_human.add_faction(FACTION_FLESHMIND)
for(var/trait in traits_to_give)
ADD_TRAIT(infected_human, trait, "fleshmind")
@@ -73,7 +73,7 @@
/datum/component/human_corruption/Destroy(force, silent)
QDEL_LIST(granted_actions)
var/mob/living/parent_mob = parent
- parent_mob.faction -= FACTION_FLESHMIND
+ parent_mob.remove_faction(FACTION_FLESHMIND)
UnregisterSignal(parent, list(
COMSIG_ATOM_UPDATE_OVERLAYS,
COMSIG_ATOM_EXAMINE,
diff --git a/modular_zubbers/code/game/gamemodes/fleshmind/machine_corruption_component.dm b/modular_zubbers/code/game/gamemodes/fleshmind/machine_corruption_component.dm
index b6a9c30bd90..6b6537f57b5 100644
--- a/modular_zubbers/code/game/gamemodes/fleshmind/machine_corruption_component.dm
+++ b/modular_zubbers/code/game/gamemodes/fleshmind/machine_corruption_component.dm
@@ -167,7 +167,7 @@
if(!isliving(user))
return
var/mob/living/living_user = user
- if((FACTION_FLESHMIND in living_user.faction))
+ if((living_user.has_faction(FACTION_FLESHMIND)))
return
if(!living_user.can_interact_with(parent_machinery))
return
diff --git a/modular_zubbers/code/game/objects/items/robot/items/storage.dm b/modular_zubbers/code/game/objects/items/robot/items/storage.dm
index 3b474e52c77..27192357f36 100644
--- a/modular_zubbers/code/game/objects/items/robot/items/storage.dm
+++ b/modular_zubbers/code/game/objects/items/robot/items/storage.dm
@@ -16,7 +16,7 @@
/obj/item/disk/data,
/obj/item/disk/design_disk,
/obj/item/disk/tech_disk,
- /obj/item/computer_disk,//ordinance
+ /obj/item/disk/computer,//ordinance
/obj/item/disk/nanite_program,
/obj/item/stock_parts,
/obj/item/reagent_containers/cup/beaker,
diff --git a/modular_zubbers/code/modules/admin/transform.dm b/modular_zubbers/code/modules/admin/transform.dm
index 06a9ba45efa..95c78e881dc 100644
--- a/modular_zubbers/code/modules/admin/transform.dm
+++ b/modular_zubbers/code/modules/admin/transform.dm
@@ -63,7 +63,7 @@ GLOBAL_LIST_INIT(pp_transformables, list(
),
list(
name = "Blood-Drunk Miner",
- key = /mob/living/simple_animal/hostile/megafauna/blood_drunk_miner
+ key = /mob/living/basic/boss/blood_drunk_miner
),
list(
name = "Gladiator",
diff --git a/modular_zubbers/code/modules/antagonists/ashwalker/ashwalker.dm b/modular_zubbers/code/modules/antagonists/ashwalker/ashwalker.dm
index 3eb3dab5e07..dbf6d860131 100644
--- a/modular_zubbers/code/modules/antagonists/ashwalker/ashwalker.dm
+++ b/modular_zubbers/code/modules/antagonists/ashwalker/ashwalker.dm
@@ -3,4 +3,4 @@
/datum/species/lizard/ashwalker/on_species_gain(mob/living/carbon/carbon_target, datum/species/old_species, pref_load, regenerate_icons)
. = ..()
- carbon_target.faction |= FACTION_ASHWALKER
+ carbon_target.add_faction(FACTION_ASHWALKER)
diff --git a/modular_zubbers/code/modules/condos/condo_subsystem.dm b/modular_zubbers/code/modules/condos/condo_subsystem.dm
index 04c1c766a14..bc6988b3124 100644
--- a/modular_zubbers/code/modules/condos/condo_subsystem.dm
+++ b/modular_zubbers/code/modules/condos/condo_subsystem.dm
@@ -25,7 +25,7 @@ SUBSYSTEM_DEF(condos)
/obj/item/clothing/suit/hooded/ablative, \
/obj/item/nuke_core, \
/obj/item/nuke_core_container, \
- /obj/item/computer_disk/hdd_theft, \
+ /obj/item/disk/computer/hdd_theft, \
/obj/item/nuke_core_container/supermatter, \
/obj/item/aicard, \
/obj/item/gun/energy/temperature/security, \
diff --git a/modular_zubbers/code/modules/mkultra/reagent.dm b/modular_zubbers/code/modules/mkultra/reagent.dm
index 338d1854465..89b43939cf6 100644
--- a/modular_zubbers/code/modules/mkultra/reagent.dm
+++ b/modular_zubbers/code/modules/mkultra/reagent.dm
@@ -256,7 +256,7 @@ Creating a chem with a low purity will make you permanently fall in love with so
return
var/lewd = (Lover.client?.prefs?.read_preference(/datum/preference/toggle/erp/hypnosis)) && (Love.client?.prefs?.read_preference(/datum/preference/toggle/erp/hypnosis))
to_chat(Lover, "[(lewd?"":"")]You develop a deep and sudden bond with [Love][(lewd?", your heart beginning to race as your mind filles with thoughts about them.":".")] You are determined to keep them safe and happy, and feel drawn towards them.")
- Lover.faction |= "[REF(Love)]"
+ Lover.add_faction("[REF(Love)]")
Lover.apply_status_effect(/datum/status_effect/in_love, Love)
SSblackbox.record_feedback("tally", "fermi_chem", 1, "Times people have become infatuated.")
return
diff --git a/modular_zubbers/code/modules/mob/living/basic/space_fauna/dolphin_ai.dm b/modular_zubbers/code/modules/mob/living/basic/space_fauna/dolphin_ai.dm
index 43f9bc47ab0..9fceab935ca 100644
--- a/modular_zubbers/code/modules/mob/living/basic/space_fauna/dolphin_ai.dm
+++ b/modular_zubbers/code/modules/mob/living/basic/space_fauna/dolphin_ai.dm
@@ -23,6 +23,6 @@
return FALSE
if (the_target in controller.blackboard[BB_BASIC_MOB_RETALIATE_LIST])
return FALSE
- if (FACTION_CARP in the_target.faction)
+ if (the_target.has_faction(FACTION_CARP))
return FALSE
return TRUE
diff --git a/modular_zubbers/code/modules/silicons/borgs/code/robot_model.dm b/modular_zubbers/code/modules/silicons/borgs/code/robot_model.dm
index eb621df9f4b..9cb0857d1b3 100644
--- a/modular_zubbers/code/modules/silicons/borgs/code/robot_model.dm
+++ b/modular_zubbers/code/modules/silicons/borgs/code/robot_model.dm
@@ -66,14 +66,14 @@
var/mob/living/silicon/robot/cyborg = loc
cyborg.scrambledcodes = TRUE
cyborg.req_access = list(ACCESS_CENT_GENERAL)
- cyborg.faction |= ROLE_DEATHSQUAD //You're part of CENTCOM now
+ cyborg.add_faction(ROLE_DEATHSQUAD) //You're part of CENTCOM now
/obj/item/robot_model/centcom/remove_module(obj/item/removed_module, delete_after)
..()
var/mob/living/silicon/robot/cyborg = loc
cyborg.scrambledcodes = FALSE
cyborg.req_access = list(ACCESS_ROBOTICS)
- cyborg.faction -= ROLE_DEATHSQUAD //You're no longer part of CENTCOM
+ cyborg.remove_faction(ROLE_DEATHSQUAD) //You're no longer part of CENTCOM
/* Research cyborgs */
diff --git a/modular_zubbers/code/modules/surgery/advanced/trauma_surgery.dm b/modular_zubbers/code/modules/surgery/advanced/trauma_surgery.dm
deleted file mode 100644
index f62b5c91b9a..00000000000
--- a/modular_zubbers/code/modules/surgery/advanced/trauma_surgery.dm
+++ /dev/null
@@ -1,132 +0,0 @@
-/datum/surgery/brain_surgery
- desc = "A minor head surgery for repairing brain damage and removing mild traumas."
-
-/datum/surgery/advanced/neurectomy
- name = "Neurectomy"
- desc = "An invasive surgical procedure which guarantees removal of deep-rooted brain traumas, but takes a while for the body to recover..."
- possible_locs = list(BODY_ZONE_HEAD)
- steps = list(
- /datum/surgery_step/incise,
- /datum/surgery_step/retract_skin,
- /datum/surgery_step/saw,
- /datum/surgery_step/clamp_bleeders,
- /datum/surgery_step/neurectomy,
- /datum/surgery_step/close,
- )
- var/resilience_level = TRAUMA_RESILIENCE_LOBOTOMY
-
-/datum/surgery/advanced/neurectomy/can_start(mob/user, mob/living/carbon/target)
- . = ..()
- if(!.)
- return FALSE
-
- var/obj/item/organ/brain/target_brain = target.get_organ_slot(ORGAN_SLOT_BRAIN)
- if(!target_brain)
- return FALSE
-
- if(LAZYLEN(target.get_traumas()))
- for(var/active_trauma in target.get_traumas())
- var/datum/brain_trauma/trauma = active_trauma
- if(trauma.resilience == resilience_level)
- return TRUE
-
- return FALSE
-
-/datum/surgery_step/neurectomy
- name = "reticulate nerve splines (scalpel)"
- implements = list(
- TOOL_SCALPEL = 100,
- /obj/item/melee/energy/sword = 55,
- /obj/item/knife = 35,
- /obj/item/shard = 25,
- /obj/item/pen = 15,
- )
- chems_needed = list(
- /datum/reagent/medicine/neurine,
- )
- time = 10 SECONDS
- repeatable = FALSE
- preop_sound = 'sound/items/handling/surgery/scalpel1.ogg'
- success_sound = 'sound/items/handling/surgery/scalpel2.ogg'
- failure_sound = 'sound/items/handling/surgery/organ2.ogg'
- surgery_effects_mood = TRUE
-
-/datum/surgery_step/neurectomy/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
- display_results(
- user,
- target,
- span_notice("You begin to excise the nerve in [target]'s brain..."),
- span_notice("[user] begins to fix [target]'s brain."),
- span_notice("[user] begins to perform surgery on [target]'s brain."),
- )
- display_pain(target, "Your head pounds with unimaginable pain!")
-
-/datum/surgery_step/neurectomy/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery, default_display_results = FALSE)
- display_results(
- user,
- target,
- span_notice("You succeed in excising [target]'s failed nerve."),
- span_notice("[user] successfully excises [target]'s nerve!"),
- span_notice("[user] completes the surgery on [target]'s brain."),
- )
- display_pain(target, "Your head goes totally numb for a moment, the pain is overwhelming!")
-
- target.set_organ_loss(ORGAN_SLOT_BRAIN, target.get_organ_loss(ORGAN_SLOT_BRAIN) - 40)
- target.cure_all_traumas(TRAUMA_RESILIENCE_BASIC)
- target.cure_all_traumas(TRAUMA_RESILIENCE_SURGERY)
- target.cure_all_traumas(TRAUMA_RESILIENCE_LOBOTOMY)
- var/datum/surgery/advanced/neurectomy/surgery_type = surgery
- if(surgery_type.resilience_level == TRAUMA_RESILIENCE_MAGIC)
- target.cure_all_traumas(TRAUMA_RESILIENCE_MAGIC)
- playsound(source = get_turf(target), soundin = 'sound/effects/magic/repulse.ogg', vol = 75, vary = TRUE, falloff_distance = 2)
- target.apply_status_effect(/datum/status_effect/vulnerable_to_damage/surgery)
- if(target.mind && target.mind.has_antag_datum(/datum/antagonist/brainwashed))
- target.mind.remove_antag_datum(/datum/antagonist/brainwashed)
- return ..()
-
-/datum/surgery_step/neurectomy/failure(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
- var/obj/item/organ/brain/target_brain = target.get_organ_slot(ORGAN_SLOT_BRAIN)
- if(target_brain)
- display_results(
- user,
- target,
- span_warning("You excise the wrong nerve, causing more damage!"),
- span_warning("[user] fails to excise [target]'s brain!"),
- span_notice("[user] completes the surgery on [target]'s brain."),
- )
- display_pain(target, "The pain in your head only seems to get worse!")
- target_brain.apply_organ_damage(80)
- target.apply_status_effect(/datum/status_effect/vulnerable_to_damage/surgery)
- switch(rand(1,3))
- if(1)
- target.gain_trauma_type(BRAIN_TRAUMA_MILD, TRAUMA_RESILIENCE_MAGIC)
- if(2)
- if(HAS_TRAIT(target, TRAIT_SPECIAL_TRAUMA_BOOST) && prob(50))
- target.gain_trauma_type(BRAIN_TRAUMA_SPECIAL, TRAUMA_RESILIENCE_MAGIC)
- else
- target.gain_trauma_type(BRAIN_TRAUMA_SEVERE, TRAUMA_RESILIENCE_MAGIC)
- if(3)
- target.gain_trauma_type(BRAIN_TRAUMA_SPECIAL, TRAUMA_RESILIENCE_MAGIC)
- else
- user.visible_message(span_warning("[user] suddenly notices that the brain [user.p_they()] [user.p_were()] working on is not there anymore."), span_warning("You suddenly notice that the brain you were working on is not there anymore."))
- return FALSE
-
-/datum/surgery/advanced/neurectomy/blessed
- name = "Blessed Neurectomy"
- desc = "We're not quite sure exactly how it works, but with the blessing of a chaplain combined with modern chemicals, this manages to remove soul-bound traumas once thought to be magic."
- steps = list(
- /datum/surgery_step/incise,
- /datum/surgery_step/retract_skin,
- /datum/surgery_step/saw,
- /datum/surgery_step/clamp_bleeders,
- /datum/surgery_step/neurectomy/blessed,
- /datum/surgery_step/close,
- )
- resilience_level = TRAUMA_RESILIENCE_MAGIC
-
-/datum/surgery_step/neurectomy/blessed
- name = "reticulate nerve splines (scalpel)"
- chems_needed = list(
- /datum/reagent/water/holywater,
- /datum/reagent/medicine/neurine,
- )
diff --git a/modular_zubbers/code/modules/surgery/autopsy.dm b/modular_zubbers/code/modules/surgery/autopsy.dm
deleted file mode 100644
index d86be2b9750..00000000000
--- a/modular_zubbers/code/modules/surgery/autopsy.dm
+++ /dev/null
@@ -1,7 +0,0 @@
-/datum/surgery/autopsy/xenomorph
- name = "Xenomorph Autopsy"
- surgery_flags = SURGERY_REQUIRE_RESTING | SURGERY_MORBID_CURIOSITY
- target_mobtypes = list(/mob/living/basic/alien, /mob/living/carbon/alien)
-
-/datum/experiment/autopsy/xenomorph/is_valid_autopsy(mob/target)
- return (isalien(target) || istype(target, /mob/living/basic/alien))
diff --git a/modular_zubbers/code/modules/surgery/healing.dm b/modular_zubbers/code/modules/surgery/healing.dm
deleted file mode 100644
index 5d3b34efb71..00000000000
--- a/modular_zubbers/code/modules/surgery/healing.dm
+++ /dev/null
@@ -1,80 +0,0 @@
-// Speed changes to tend wounds balancing for 135% player health
-/datum/surgery_step/heal
- time = 2.7 SECONDS
-
-/datum/surgery_step/heal/brute/basic
- brutehealing = 7
-
-/datum/surgery_step/heal/brute/upgraded
- brutehealing = 7
-
-/datum/surgery_step/heal/brute/upgraded/femto
- brutehealing = 7
-
-/datum/surgery_step/heal/burn/basic
- burnhealing = 7
-
-/datum/surgery_step/heal/burn/upgraded
- burnhealing = 7
-
-/datum/surgery_step/heal/burn/upgraded/femto
- burnhealing = 7
-
-/datum/surgery_step/heal/combo
- brutehealing = 5
- burnhealing = 5
- brute_multiplier = 0.07
- burn_multiplier = 0.07
- time = 1.5 SECONDS
-
-/datum/surgery_step/heal/combo/upgraded
- brutehealing = 5
- burnhealing = 5
- brute_multiplier = 0.1
- burn_multiplier = 0.1
-
-/datum/surgery_step/heal/combo/upgraded/femto
- brutehealing = 7
- burnhealing = 7
- brute_multiplier = 0.2
- burn_multiplier = 0.2
- time = 1.5 SECONDS
-
-/datum/surgery_step/proc/get_feedback_message(mob/living/user, mob/living/target, speed_mod = 1)
- return
-
-/datum/surgery_step/heal/brute/get_feedback_message(mob/living/user, mob/living/target, speed_mod = 1)
- var/show_message = FALSE
- if(HAS_TRAIT(user, TRAIT_MEDICAL_HUD))
- show_message = TRUE
- else if(locate(/obj/item/healthanalyzer) in user.held_items)
- show_message = TRUE
- else if(get_location_modifier(target) == OPERATING_COMPUTER_MODIFIER)
- show_message = TRUE
-
- if(show_message)
- return "[round(1 / speed_mod, 0.1)]x ([target.get_brute_loss()]) [feedback_value]"
-
-/datum/surgery_step/heal/burn/get_feedback_message(mob/living/user, mob/living/target, speed_mod = 1)
- var/show_message = FALSE
- if(HAS_TRAIT(user, TRAIT_MEDICAL_HUD))
- show_message = TRUE
- else if(locate(/obj/item/healthanalyzer) in user.held_items)
- show_message = TRUE
- else if(get_location_modifier(target) == OPERATING_COMPUTER_MODIFIER)
- show_message = TRUE
-
- if(show_message)
- return "[round(1 / speed_mod, 0.1)]x ([target.get_fire_loss()]) [feedback_value]"
-
-/datum/surgery_step/heal/combo/get_feedback_message(mob/living/user, mob/living/target, speed_mod = 1)
- var/show_message = FALSE
- if(HAS_TRAIT(user, TRAIT_MEDICAL_HUD))
- show_message = TRUE
- else if(locate(/obj/item/healthanalyzer) in user.held_items)
- show_message = TRUE
- else if(get_location_modifier(target) == OPERATING_COMPUTER_MODIFIER)
- show_message = TRUE
-
- if(show_message)
- return "[round(1 / speed_mod, 0.1)]x ([target.get_brute_loss()]/[target.get_fire_loss()]) [feedback_value]"
diff --git a/modular_zubbers/code/modules/surgery/organs/ear_surgery.dm b/modular_zubbers/code/modules/surgery/organs/ear_surgery.dm
deleted file mode 100644
index 81f8687e321..00000000000
--- a/modular_zubbers/code/modules/surgery/organs/ear_surgery.dm
+++ /dev/null
@@ -1,30 +0,0 @@
-/datum/surgery/ear_surgery
- requires_bodypart_type = BODYTYPE_ORGANIC | BODYTYPE_ALIEN | BODYTYPE_NANO | BODYTYPE_SHADOW
-
-/datum/surgery/ear_surgery/mechanic
- name = "Auditory Sensor repair"
- requires_bodypart_type = BODYTYPE_ROBOTIC
- steps = list(
- /datum/surgery_step/mechanic_open,
- /datum/surgery_step/open_hatch,
- /datum/surgery_step/mechanic_unwrench,
- /datum/surgery_step/prepare_electronics,
- /datum/surgery_step/fix_ears/mechanic,
- /datum/surgery_step/mechanic_wrench,
- /datum/surgery_step/mechanic_close
- )
-
-/datum/surgery_step/fix_ears
- preop_sound = 'sound/items/handling/surgery/hemostat1.ogg'
- success_sound = 'sound/items/handling/surgery/retractor2.ogg'
- failure_sound = 'sound/items/handling/surgery/organ2.ogg'
-
-/datum/surgery_step/fix_ears/mechanic
- name = "repair auditory sensor (screwdriver/hemostat)"
- implements = list(
- TOOL_SCREWDRIVER = 100,
- TOOL_HEMOSTAT = 45,
- /obj/item/pen = 25)
- preop_sound = 'sound/items/taperecorder/tape_flip.ogg'
- success_sound = 'sound/items/taperecorder/taperecorder_close.ogg'
- failure_sound = 'sound/items/handling/disk_drop.ogg'
diff --git a/modular_zubbers/code/modules/surgery/organs/eye_surgery.dm b/modular_zubbers/code/modules/surgery/organs/eye_surgery.dm
deleted file mode 100644
index f0ccc45739a..00000000000
--- a/modular_zubbers/code/modules/surgery/organs/eye_surgery.dm
+++ /dev/null
@@ -1,28 +0,0 @@
-/datum/surgery/eye_surgery
- requires_bodypart_type = BODYTYPE_ORGANIC | BODYTYPE_ALIEN | BODYTYPE_NANO | BODYTYPE_SHADOW
-
-/datum/surgery/eye_surgery/mechanic
- name = "Optical Sensor repair"
- requires_bodypart_type = BODYTYPE_ROBOTIC
- steps = list(
- /datum/surgery_step/mechanic_open,
- /datum/surgery_step/open_hatch,
- /datum/surgery_step/prepare_electronics,
- /datum/surgery_step/fix_eyes/mechanic,
- /datum/surgery_step/mechanic_close
- )
-
-/datum/surgery_step/fix_eyes
- preop_sound = 'sound/items/handling/surgery/hemostat1.ogg'
- success_sound = 'sound/items/handling/surgery/retractor2.ogg'
- failure_sound = 'sound/items/handling/surgery/organ2.ogg'
-
-/datum/surgery_step/fix_eyes/mechanic
- name = "repair optical sensor (screwdriver/hemostat)"
- implements = list(
- TOOL_SCREWDRIVER = 100,
- TOOL_HEMOSTAT = 45,
- /obj/item/pen = 25)
- preop_sound = 'sound/items/taperecorder/tape_flip.ogg'
- success_sound = 'sound/items/taperecorder/taperecorder_close.ogg'
- failure_sound = 'sound/items/handling/disk_drop.ogg'
diff --git a/modular_zubbers/code/modules/surgery/robotic_cavity_implant.dm b/modular_zubbers/code/modules/surgery/robotic_cavity_implant.dm
deleted file mode 100644
index df46aa85c74..00000000000
--- a/modular_zubbers/code/modules/surgery/robotic_cavity_implant.dm
+++ /dev/null
@@ -1,34 +0,0 @@
-/datum/surgery/cavity_implant/mechanic //new surgery path for augments and synths so they can have cavity implants.
- name = "Robotic cavity implant"
- requires_bodypart_type = BODYTYPE_ROBOTIC
- possible_locs = list(BODY_ZONE_CHEST)
- steps = list(
- /datum/surgery_step/mechanic_open,
- /datum/surgery_step/mechanic_unwrench,
- /datum/surgery_step/prepare_electronics,
- /datum/surgery_step/open_hatch,
- /datum/surgery_step/handle_cavity,
- /datum/surgery_step/close_cavity,
- /datum/surgery_step/mechanic_wrench,
- /datum/surgery_step/mechanic_close)
-
-/datum/surgery_step/close_cavity //new surgery step used solely for the mechanical variant. Used to seal the cavity so the surgery can progress to the proper surgery end point for synthetics.
- name = "solder cavity (cautery or welder)"
- implements = list(
- TOOL_CAUTERY = 100,
- /obj/item/gun/energy/laser = 90,
- TOOL_WELDER = 100,
- /obj/item = 30) // 30% success with any hot item.
- time = 24
- preop_sound = 'sound/items/handling/surgery/cautery1.ogg'
- success_sound = 'sound/items/handling/surgery/cautery2.ogg'
-
-/datum/surgery_step/close_cavity/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
- display_results(
- user,
- target,
- span_notice("You begin to solder the electronics around [target]'s cavity..."),
- span_notice("[user] begins to solder [target]'s internal cavity with [tool]!"),
- span_notice("[user] begins to solder [target]'s internal cavity!"),
- )
- display_pain(target, "The pain in your chest is unbearable! You can barely take it anymore!")
diff --git a/modular_zubbers/code/modules/synths/code/surgery/robot_brain_surgery.dm b/modular_zubbers/code/modules/synths/code/surgery/robot_brain_surgery.dm
deleted file mode 100644
index 101f012b131..00000000000
--- a/modular_zubbers/code/modules/synths/code/surgery/robot_brain_surgery.dm
+++ /dev/null
@@ -1,165 +0,0 @@
-/datum/surgery/robot_brain_surgery
- name = "Reset Posibrain Logic (Brain Surgery)"
- steps = list(
- /datum/surgery_step/mechanic_open,
- /datum/surgery_step/mechanic_unwrench,
- /datum/surgery_step/pry_off_plating,
- /datum/surgery_step/prepare_electronics,
- /datum/surgery_step/fix_robot_brain,
- /datum/surgery_step/mechanic_close,
- )
-
- target_mobtypes = list(/mob/living/carbon/human)
- possible_locs = list(BODY_ZONE_CHEST) // The brains are in the chest
- requires_bodypart_type = BODYTYPE_ROBOTIC
- desc = "A surgical procedure that restores the default behavior logic and personality matrix of an IPC posibrain, removing deep-rooted traumas."
-
-/datum/surgery/robot_brain_surgery/can_start(mob/user, mob/living/carbon/target, obj/item/tool)
- var/obj/item/organ/brain/synth/brain = target.get_organ_slot(ORGAN_SLOT_BRAIN)
-
- if (!..())
- return FALSE
-
- if(!istype(brain) && !issynthetic(target))
- return FALSE
- else
- return TRUE
-
-/datum/surgery_step/fix_robot_brain
- name = "fix posibrain (multitool/hemostat)"
- implements = list(
- TOOL_MULTITOOL = 100,
- TOOL_HEMOSTAT = 90,
- /obj/item/pen = 15)
- repeatable = TRUE
- preop_sound = 'sound/items/handling/tools/multitool_pickup.ogg'
- success_sound = 'sound/items/handling/tools/multitool_drop.ogg'
- failure_sound = 'sound/items/handling/tools/multitool_drop.ogg'
- time = 12 SECONDS //long and complicated
-
-/datum/surgery_step/fix_robot_brain/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
- display_results(
- user,
- target,
- span_notice("You begin to clear system corruption from [target]'s posibrain..."),
- "[user] begins to fix [target]'s posibrain.",
- "[user] begins to perform surgery on [target]'s posibrain.",
- )
-
-/datum/surgery_step/fix_robot_brain/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
- display_results(user,
- target,
- span_notice("You succeed in clearing system corruption from [target]'s posibrain."),
- "[user] successfully fixes [target]'s posibrain!",
- "[user] completes the surgery on [target]'s posibrain.",
- )
-
- if(target.mind && target.mind.has_antag_datum(/datum/antagonist/brainwashed))
- target.mind.remove_antag_datum(/datum/antagonist/brainwashed)
-
- target.set_organ_loss(ORGAN_SLOT_BRAIN, target.get_organ_loss(ORGAN_SLOT_BRAIN) - 60) //we set damage in this case in order to clear the "failing" flag
- target.cure_all_traumas(TRAUMA_RESILIENCE_SURGERY)
- if(target.get_organ_loss(ORGAN_SLOT_BRAIN) > NONE)
- to_chat(user, "[target]'s posibrain still has some lasting system damage that can be cleared.")
-
- return ..()
-
-/datum/surgery_step/fix_robot_brain/failure(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
- if(target.get_organ_slot(ORGAN_SLOT_BRAIN))
- display_results(
- user,
- target,
- span_warning("You screw up, fragmenting their data!"),
- span_warning("[user] screws up, causing damage to the circuits!"),
- "[user] completes the surgery on [target]'s posibrain.",
- )
-
- target.adjust_organ_loss(ORGAN_SLOT_BRAIN, 60)
- target.gain_trauma_type(BRAIN_TRAUMA_SEVERE, TRAUMA_RESILIENCE_LOBOTOMY)
- else
- user.visible_message(span_warning("[user] suddenly notices that the posibrain [user.p_they()] [user.p_were()] working on is not there anymore."), span_warning("You suddenly notice that the posibrain you were working on is not there anymore."))
-
- return FALSE
-
-/datum/surgery/robot_trauma_surgery
- name = "Neural Defragmentation (Neurectomy)"
- desc = "Requires Liquid Solder. A surgical procedure that refurbishes low level components in the posibrain, to fix deep-rooted trauma errors."
- possible_locs = list(BODY_ZONE_CHEST) // The brains are in the chest
- requires_bodypart_type = BODYTYPE_ROBOTIC
- requires_tech = TRUE
- target_mobtypes = list(/mob/living/carbon/human)
- steps = list(
- /datum/surgery_step/mechanic_open,
- /datum/surgery_step/mechanic_unwrench,
- /datum/surgery_step/pry_off_plating,
- /datum/surgery_step/prepare_electronics,
- /datum/surgery_step/fix_robot_brain/trauma,
- /datum/surgery_step/mechanic_close,
- )
- var/resilience_level = TRAUMA_RESILIENCE_LOBOTOMY
-
-/datum/surgery/robot_trauma_surgery/can_start(mob/user, mob/living/carbon/target, obj/item/tool)
- . = ..()
- if(!.)
- return FALSE
-
- var/obj/item/organ/brain/synth/target_brain = target.get_organ_slot(ORGAN_SLOT_BRAIN)
- if(!istype(target_brain) && !issynthetic(target))
- return FALSE
-
- if(LAZYLEN(target.get_traumas()))
- for(var/active_trauma in target.get_traumas())
- var/datum/brain_trauma/trauma = active_trauma
- if(trauma.resilience == resilience_level)
- return TRUE
-
- return FALSE
-
-/datum/surgery_step/fix_robot_brain/trauma
- name = "reticulate splines (multitool/hemostat)"
- repeatable = FALSE
- chems_needed = list(
- /datum/reagent/medicine/liquid_solder,
- )
-
-/datum/surgery_step/fix_robot_brain/trauma/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
- display_results(user,
- target,
- span_notice("You succeed in reticulating [target]'s splines."),
- "[user] successfully fixes [target]'s posibrain!",
- "[user] completes the surgery on [target]'s posibrain.",
- )
-
- target.set_organ_loss(ORGAN_SLOT_BRAIN, target.get_organ_loss(ORGAN_SLOT_BRAIN) - 60) //we set damage in this case in order to clear the "failing" flag
- target.cure_all_traumas(TRAUMA_RESILIENCE_BASIC)
- target.cure_all_traumas(TRAUMA_RESILIENCE_SURGERY)
- target.cure_all_traumas(TRAUMA_RESILIENCE_LOBOTOMY)
- var/datum/surgery/robot_trauma_surgery/surgery_type = surgery
- if(surgery_type.resilience_level == TRAUMA_RESILIENCE_MAGIC)
- target.cure_all_traumas(TRAUMA_RESILIENCE_MAGIC)
- playsound(source = get_turf(target), soundin = 'sound/effects/magic/repulse.ogg', vol = 75, vary = TRUE, falloff_distance = 2)
- target.apply_status_effect(/datum/status_effect/vulnerable_to_damage/surgery)
- if(target.mind && target.mind.has_antag_datum(/datum/antagonist/brainwashed))
- target.mind.remove_antag_datum(/datum/antagonist/brainwashed)
- return ..()
-
-/datum/surgery/robot_trauma_surgery/blessed
- name = "Devine Debugging (Blessed Neurectomy)"
- desc = "Requires Liquid Solder and Holy Water. A surgical procedure that refurbishes low level components in the posibrain, to fix the strongest, soulbound trauma errors."
- steps = list(
- /datum/surgery_step/mechanic_open,
- /datum/surgery_step/mechanic_unwrench,
- /datum/surgery_step/pry_off_plating,
- /datum/surgery_step/prepare_electronics,
- /datum/surgery_step/fix_robot_brain/blessed,
- /datum/surgery_step/mechanic_close,
- )
- resilience_level = TRAUMA_RESILIENCE_MAGIC
-
-/datum/surgery_step/fix_robot_brain/blessed
- name = "trigger godmode debugging (multitool/hemostat)"
- repeatable = FALSE
- chems_needed = list(
- /datum/reagent/medicine/liquid_solder,
- /datum/reagent/water/holywater,
- )
diff --git a/modular_zubbers/code/modules/vehicles/mech_fabricator.dm b/modular_zubbers/code/modules/vehicles/mech_fabricator.dm
index 54f8834f40f..52ef1b2815f 100644
--- a/modular_zubbers/code/modules/vehicles/mech_fabricator.dm
+++ b/modular_zubbers/code/modules/vehicles/mech_fabricator.dm
@@ -6,7 +6,7 @@
/obj/machinery/mecha_part_fabricator/interdyne/emag_act(mob/user, obj/item/card/emag/emag_card)
if(obj_flags & EMAGGED)
return FALSE
- if(ROLE_SYNDICATE in user.faction)
+ if(user.has_faction(ROLE_SYNDICATE))
obj_flags |= EMAGGED
for(var/found_illegal_mech_nods in SSresearch.techweb_nodes)
var/datum/techweb_node/illegal_mech_node = SSresearch.techweb_nodes[found_illegal_mech_nods]
diff --git a/modular_zubbers/maps/offstation/dauntless/implant_syndie.dm b/modular_zubbers/maps/offstation/dauntless/implant_syndie.dm
index 2742617a6b0..7d508182654 100644
--- a/modular_zubbers/maps/offstation/dauntless/implant_syndie.dm
+++ b/modular_zubbers/maps/offstation/dauntless/implant_syndie.dm
@@ -15,7 +15,7 @@
var/mob/living/living_target = target
var/obj/item/implant/weapons_auth/weapons_authorisation = new/obj/item/implant/weapons_auth(living_target)
weapons_authorisation.implant(living_target)
- living_target.faction |= ROLE_SYNDICATE
+ living_target.add_faction(ROLE_SYNDICATE)
return TRUE
/obj/item/implant/interdyne/removed(mob/target, silent = FALSE, special = FALSE)
@@ -25,7 +25,7 @@
var/mob/living/living_target = target
var/obj/item/implant/weapons_auth/weapons_authorisation = new/obj/item/implant/weapons_auth(living_target)
weapons_authorisation.removed(living_target)
- living_target.faction &= ROLE_SYNDICATE
+ living_target.remove_faction(ROLE_SYNDICATE)
return TRUE
/obj/item/implanter/interdyne
diff --git a/modular_zubbers/maps/offstation/dauntless/mob_spawns.dm b/modular_zubbers/maps/offstation/dauntless/mob_spawns.dm
index 9578217f8de..0a6e301373a 100644
--- a/modular_zubbers/maps/offstation/dauntless/mob_spawns.dm
+++ b/modular_zubbers/maps/offstation/dauntless/mob_spawns.dm
@@ -297,7 +297,7 @@
head = /obj/item/clothing/head/soft/black
/datum/outfit/dauntless/syndicate/post_equip(mob/living/carbon/human/syndicate)
- syndicate.faction |= ROLE_SYNDICATE
+ syndicate.add_faction(ROLE_SYNDICATE)
return ..()
// Dauntless Command
@@ -356,5 +356,5 @@
id_trim = /datum/id_trim/syndicom/bubberstation/dauntless/stationadmiral
/datum/outfit/dauntless/command/post_equip(mob/living/carbon/human/syndicate)
- syndicate.faction |= ROLE_SYNDICATE
+ syndicate.add_faction(ROLE_SYNDICATE)
return ..()
diff --git a/modular_zubbers/maps/offstation/dauntless/robot.dm b/modular_zubbers/maps/offstation/dauntless/robot.dm
index 9cd9018bea8..86d0abb7e35 100644
--- a/modular_zubbers/maps/offstation/dauntless/robot.dm
+++ b/modular_zubbers/maps/offstation/dauntless/robot.dm
@@ -9,7 +9,7 @@
/obj/item/borg/upgrade/syndicate_access/action(mob/living/silicon/robot/R, user)
. = ..()
// Turns out this is all you need for access to the doors. See code\game\machinery\_machinery.dm
- R.faction += ROLE_SYNDICATE
+ R.add_faction(ROLE_SYNDICATE)
to_chat(R, span_alert("Additional access detected! Remote camera interface destroyed."))
to_chat(user, span_warning("The cyborg whirrs a bit as additional access levels are added, and the remote camera module shorts out a fuse."))
// Remove the camera, much like how the camera is removed for ghost cafe cyborgs
@@ -19,7 +19,7 @@
/obj/item/borg/upgrade/syndicate_access/deactivate(mob/living/silicon/robot/R, user)
. = ..()
- R.faction = initial(R.faction)
+ R.set_faction(initial(faction))
/obj/item/borg/upgrade/syndicate_access/dauntless/examine_more(mob/user)
. = ..()
diff --git a/modular_zubbers/maps/offstation/persistence/mob_spawns.dm b/modular_zubbers/maps/offstation/persistence/mob_spawns.dm
index 4815537da78..e9f76d4d92b 100644
--- a/modular_zubbers/maps/offstation/persistence/mob_spawns.dm
+++ b/modular_zubbers/maps/offstation/persistence/mob_spawns.dm
@@ -72,8 +72,8 @@
/obj/effect/mob_spawn/ghost_role/robot/persistence/special(mob/living/silicon/robot/new_spawn)
. = ..()
if(new_spawn.client) //It should have a client, right?
- new_spawn.faction += ROLE_SYNDICATE
- new_spawn.faction += ROLE_PERSISTENCE //This is the one to select the cyborg model.
+ new_spawn.add_faction(ROLE_SYNDICATE)
+ new_spawn.add_faction(ROLE_PERSISTENCE) //This is the one to select the cyborg model.
new_spawn.radio.keyslot = new /obj/item/encryptionkey/headset_syndicate/cybersun(src)
new_spawn.radio.recalculateChannels()
new_spawn.UnlinkSelf() //This should prevent AI linking and consoles to see or lock them down.
@@ -328,7 +328,7 @@
//gives syndicate role so turrets don't shoot operative
/datum/outfit/persistence/syndicate/post_equip(mob/living/carbon/human/syndicate)
- syndicate.faction |= ROLE_SYNDICATE
+ syndicate.add_faction(ROLE_SYNDICATE)
return ..()
// Dauntless Command
@@ -394,7 +394,7 @@
//gives syndicate role so turrets don't shoot operatives
/datum/outfit/persistence/command/post_equip(mob/living/carbon/human/syndicate)
- syndicate.faction |= ROLE_SYNDICATE
+ syndicate.add_faction(ROLE_SYNDICATE)
return ..()
//Give cyborg a specific chameleon item that do not disrupt, still lose power though.
diff --git a/modular_zubbers/modules/ammo_workbench/code/ammo_workbench.dm b/modular_zubbers/modules/ammo_workbench/code/ammo_workbench.dm
index 28f92752a6d..134e376a5fa 100644
--- a/modular_zubbers/modules/ammo_workbench/code/ammo_workbench.dm
+++ b/modular_zubbers/modules/ammo_workbench/code/ammo_workbench.dm
@@ -50,6 +50,7 @@
/// can this print any round of any caliber given a correct ammo_box? (you varedit this at your own risk, especially if used in a player-facing context.)
/// does not force ammo to load in. just makes it able to print wacky ammotypes e.g. lionhunter 7.62, techshells
var/adminbus = FALSE
+ var/datum/material_container/materials
/obj/machinery/ammo_workbench/unlocked
allowed_harmful = TRUE
@@ -66,8 +67,9 @@
)
/obj/machinery/ammo_workbench/Initialize(mapload)
- AddComponent( \
- /datum/component/material_container, \
+ var/datum/material_container/materials = new( \
+ src, \
+ /datum/material_container, \
SSmaterials.materials_by_category[MAT_CATEGORY_ITEM_MATERIAL], \
200000, \
MATCONTAINER_EXAMINE, \
@@ -78,7 +80,6 @@
/obj/machinery/ammo_workbench/examine(mob/user)
. += ..()
- var/datum/component/material_container/materials = GetComponent(/datum/component/material_container)
if(in_range(user, src) || isobserver(user))
. += span_notice("The status display reads: Storing up to [materials.max_amount] material units.
Material consumption at [creation_efficiency*100]%.")
@@ -171,11 +172,10 @@
data["turboBoost"] = turbo_boost
data["materials"] = list()
- var/datum/component/material_container/mat_container = GetComponent(/datum/component/material_container)
- if (mat_container)
- for(var/mat in mat_container.materials)
+ if (materials)
+ for(var/mat in materials.materials)
var/datum/material/M = mat
- var/amount = mat_container.materials[M]
+ var/amount = materials.materials[M]
var/sheet_amount = amount / SHEET_MATERIAL_AMOUNT
var/ref = REF(M)
data["materials"] += list(list("name" = M.name, "id" = ref, "amount" = sheet_amount))
@@ -226,13 +226,11 @@
if("Release")
- var/datum/component/material_container/mat_container = GetComponent(/datum/component/material_container)
-
- if(!mat_container)
+ if(!materials)
return
var/datum/material/mat = locate(params["id"])
- var/amount = mat_container.materials[mat]
+ var/amount = materials.materials[mat]
if(!amount)
return
@@ -247,7 +245,7 @@
var/sheets_to_remove = round(min(desired,50,stored_amount))
- mat_container.retrieve_stack(sheets_to_remove, mat, loc)
+ materials.retrieve_stack(sheets_to_remove, mat, loc)
. = TRUE
if("ReadDisk")
@@ -344,8 +342,6 @@
if(!loaded_magazine)
return
- var/datum/component/material_container/materials = GetComponent(/datum/component/material_container)
-
var/obj/item/ammo_casing/new_casing = new casing_type
var/list/required_materials = new_casing.get_material_composition()
@@ -457,7 +453,6 @@
for(var/datum/stock_part/matter_bin/new_matter_bin in component_parts)
mat_capacity += new_matter_bin.tier * (40 * SHEET_MATERIAL_AMOUNT)
- var/datum/component/material_container/materials = GetComponent(/datum/component/material_container)
materials.max_amount = mat_capacity
update_ammotypes()
diff --git a/tgstation.dme b/tgstation.dme
index 0e23d7859fc..7f8ed731bfb 100644
--- a/tgstation.dme
+++ b/tgstation.dme
@@ -7976,7 +7976,6 @@
#include "modular_skyrat\modules\customization\modules\surgery\organs\moth_antennae.dm"
#include "modular_skyrat\modules\customization\modules\surgery\organs\moth_markings.dm"
#include "modular_skyrat\modules\customization\modules\surgery\organs\neck_accessory.dm"
-#include "modular_skyrat\modules\customization\modules\surgery\organs\nif.dm"
#include "modular_skyrat\modules\customization\modules\surgery\organs\organ.dm"
#include "modular_skyrat\modules\customization\modules\surgery\organs\pod.dm"
#include "modular_skyrat\modules\customization\modules\surgery\organs\skrell_hair.dm"
@@ -8801,16 +8800,6 @@
#include "modular_skyrat\modules\synths\code\species\prefsmenu.dm"
#include "modular_skyrat\modules\synths\code\species\screen.dm"
#include "modular_skyrat\modules\synths\code\species\synthetic.dm"
-#include "modular_skyrat\modules\synths\code\surgery\mechanic_steps.dm"
-#include "modular_skyrat\modules\synths\code\surgery\robot_brain_surgery.dm"
-#include "modular_skyrat\modules\synths\code\surgery\robot_chassis_restoration.dm"
-#include "modular_skyrat\modules\synths\code\surgery\robot_healing.dm"
-#include "modular_skyrat\modules\synths\code\surgery\robot_heart_surgery.dm"
-#include "modular_skyrat\modules\synths\code\surgery\robot_liver_surgery.dm"
-#include "modular_skyrat\modules\synths\code\surgery\robot_lung_surgery.dm"
-#include "modular_skyrat\modules\synths\code\surgery\robot_stomach_surgery.dm"
-#include "modular_skyrat\modules\synths\code\surgery\robot_surgery_rename.dm"
-#include "modular_skyrat\modules\synths\code\surgery\surgery.dm"
#include "modular_skyrat\modules\tagline\code\world.dm"
#include "modular_skyrat\modules\tarkon\code\clothing\head.dm"
#include "modular_skyrat\modules\tarkon\code\clothing\mod.dm"
@@ -9921,18 +9910,12 @@
#include "modular_zubbers\code\modules\storyteller\storytellers\tellers\storyteller_4_bomb.dm"
#include "modular_zubbers\code\modules\storyteller\storytellers\tellers\storyteller_5_gamer.dm"
#include "modular_zubbers\code\modules\storyteller\storytellers\tellers\storyteller_6_enemy.dm"
-#include "modular_zubbers\code\modules\surgery\autopsy.dm"
-#include "modular_zubbers\code\modules\surgery\healing.dm"
-#include "modular_zubbers\code\modules\surgery\robotic_cavity_implant.dm"
#include "modular_zubbers\code\modules\surgery\surgery_step.dm"
#include "modular_zubbers\code\modules\surgery\tools.dm"
-#include "modular_zubbers\code\modules\surgery\advanced\trauma_surgery.dm"
#include "modular_zubbers\code\modules\surgery\bodyparts\_bodyparts.dm"
#include "modular_zubbers\code\modules\surgery\bodyparts\dismemberment.dm"
#include "modular_zubbers\code\modules\surgery\bodyparts\kinetic.dm"
#include "modular_zubbers\code\modules\surgery\bodyparts\species_parts\misc_bodyparts.dm"
-#include "modular_zubbers\code\modules\surgery\organs\ear_surgery.dm"
-#include "modular_zubbers\code\modules\surgery\organs\eye_surgery.dm"
#include "modular_zubbers\code\modules\surgery\organs\external\antennae.dm"
#include "modular_zubbers\code\modules\surgery\organs\external\wings.dm"
#include "modular_zubbers\code\modules\surgery\organs\internal\cyberimp\augments_arms.dm"
@@ -9949,7 +9932,6 @@
#include "modular_zubbers\code\modules\syndicate_offstation\storage\fireaxe.dm"
#include "modular_zubbers\code\modules\syndicate_offstation\storage\lockers.dm"
#include "modular_zubbers\code\modules\syndicate_offstation\storage\safe.dm"
-#include "modular_zubbers\code\modules\synths\code\surgery\robot_brain_surgery.dm"
#include "modular_zubbers\code\modules\tarkon\code\cameras.dm"
#include "modular_zubbers\code\modules\tarkon\code\tarkon_loot.dm"
#include "modular_zubbers\code\modules\tarkon\code\clothing\backpack.dm"