From 5d84083ada2f43fc15874155843d0fb2bc72192d Mon Sep 17 00:00:00 2001 From: Waterpig <49160555+Majkl-J@users.noreply.github.com> Date: Sat, 17 Aug 2024 21:58:45 +0200 Subject: [PATCH] Synth refix (#29355) * Revert "Novastation Synthetic Refactor Port (#29204)" This reverts commit 2e1a819c4f9ab56c5b1c353de0aa8ae4d7efc0b1. * Refactor Synths away from /Robot/ limbs, Cybernetically augmented humanoids have alternative surgeries (#3970) * [NO SELF SURGERY] Cybernetically augmented humanoids have alternative surgeries (both standard and advanced) [NO SELF SURGERY], as well as other misc additions * 1 * p1 * Update limbs.dm * oh yeah Taurs * Limbs and Techwebs for them * 3 * EMP * Surgery Removals from Synths * 5 * test * Look Ma, no more surgery * Update tgstation.dme * Update hepatectomy.dm * little bit more edit cleanup and diff reset * Update surgery.dm * Synth Organ Surgery! * Update lungs.dm * target * 4 * Update synth_defines.dm * you add the metal before the zap zap * Apply suggestions from code review Co-authored-by: Bloop <13398309+vinylspiders@users.noreply.github.com> * 1 * Update code/modules/surgery/hepatectomy.dm * Update code/modules/surgery/advanced/brainwashing.dm --------- Co-authored-by: necromanceranne <40847847+necromanceranne@users.noreply.github.com> Co-authored-by: Fluffles Co-authored-by: Bloop <13398309+vinylspiders@users.noreply.github.com> * some extra stuff * Why me * woops x2 * this is back * cord stuff * woops * woopsx2 * bruh * Some minor stuff that I'm adding to tg aswell * This is good * Makes this not pain * Holy shit lacked a cleanup * adds me to codeowners so no more synth changes escape my eye * done * eh heck it --------- Co-authored-by: Zergspower <22140677+Zergspower@users.noreply.github.com> Co-authored-by: necromanceranne <40847847+necromanceranne@users.noreply.github.com> Co-authored-by: Fluffles Co-authored-by: Bloop <13398309+vinylspiders@users.noreply.github.com> --- .github/CODEOWNERS | 5 +++ .../~skyrat_defines/synth_defines.dm | 6 +-- code/game/machinery/rechargestation.dm | 1 - code/modules/surgery/advanced/brainwashing.dm | 15 +++---- code/modules/surgery/amputation.dm | 14 +++---- .../surgery/bodyparts/head_hair_and_lips.dm | 4 +- code/modules/surgery/gastrectomy.dm | 2 +- code/modules/surgery/hepatectomy.dm | 2 +- code/modules/surgery/lobectomy.dm | 9 +--- icons/obj/weapons/bows/arrows.dmi | Bin 2497 -> 2375 bytes icons/obj/weapons/bows/bows.dmi | Bin 4802 -> 4501 bytes .../modules/bodyparts/code/taur_bodyparts.dm | 12 +----- .../code/appliances/space_heater.dm | 8 ++-- .../modules/synths/code/bodyparts/brain.dm | 2 +- .../internal_computer/internal_computer.dm | 2 +- .../modules/synths/code/bodyparts/limbs.dm | 20 --------- .../synths/code/bodyparts/power_cord.dm | 39 ++++++++++-------- .../modules/synths/code/bodyparts/stomach.dm | 6 +++ .../code/surgery/robot_chassis_restoration.dm | 6 +-- .../synths/code/surgery/robot_healing.dm | 2 +- .../code/surgery/robot_surgery_rename.dm | 14 +++++++ tgstation.dme | 1 + 22 files changed, 79 insertions(+), 91 deletions(-) create mode 100644 modular_skyrat/modules/synths/code/surgery/robot_surgery_rename.dm diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index e007cf058a0..1c922c4cacd 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -35,6 +35,11 @@ /modular_skyrat/modules/events/ @lessthnthree /modular_skyrat/modules/ices_events/ @lessthnthree +# Waterpig +/code/modules/surgery @Majkl-J +/modular_skyrat/master_files/code/modules/surgery @Majkl-J +/modular_skyrat/modules/synths @Majkl-J + # Multiple Owners # Maptainers diff --git a/code/__DEFINES/~skyrat_defines/synth_defines.dm b/code/__DEFINES/~skyrat_defines/synth_defines.dm index 416f1d99748..ceeba9c8661 100644 --- a/code/__DEFINES/~skyrat_defines/synth_defines.dm +++ b/code/__DEFINES/~skyrat_defines/synth_defines.dm @@ -22,16 +22,14 @@ #define SYNTH_EMP_BRAIN_DAMAGE_MAXIMUM 75 // Universal stat defines -#define SYNTH_BAD_EFFECT_DURATION 20 SECONDS -#define SYNTH_HEART_DAMAGE_MESSAGE_INTERVAL 20 SECONDS #define SYNTH_BRAIN_DAMAGE_MESSAGE_INTERVAL 20 SECONDS #define SYNTH_DEAF_STACKS 30 // Charge level defines -#define SYNTH_CHARGE_MAX (STANDARD_CELL_CHARGE * 20) //Takes two high capacity cells to go from 0 to 100 +#define SYNTH_CHARGE_MAX (STANDARD_CELL_CHARGE * 10) //Takes one high capacity cells to go from 0 to 100 #define SYNTH_JOULES_PER_NUTRITION (SYNTH_CHARGE_MAX / NUTRITION_LEVEL_FULL) #define SYNTH_CHARGE_ALMOST_FULL (NUTRITION_LEVEL_ALMOST_FULL * SYNTH_JOULES_PER_NUTRITION) -#define SYNTH_CHARGE_RATE (STANDARD_CELL_RATE * 2.5) +#define SYNTH_CHARGE_RATE (STANDARD_CELL_RATE * 5) #define SYNTH_APC_MINIMUM_PERCENT 20 /// Mechfab defines diff --git a/code/game/machinery/rechargestation.dm b/code/game/machinery/rechargestation.dm index 345b54084fc..92a0e05f269 100644 --- a/code/game/machinery/rechargestation.dm +++ b/code/game/machinery/rechargestation.dm @@ -77,7 +77,6 @@ repairs += servo.tier - 1 for(var/obj/item/stock_parts/power_store/cell in component_parts) recharge_speed *= cell.maxcharge - recharge_speed *= 4 //SKYRAT EDIT ADDITION /obj/machinery/recharge_station/examine(mob/user) . = ..() diff --git a/code/modules/surgery/advanced/brainwashing.dm b/code/modules/surgery/advanced/brainwashing.dm index 9d266e142ef..0bb9566306d 100644 --- a/code/modules/surgery/advanced/brainwashing.dm +++ b/code/modules/surgery/advanced/brainwashing.dm @@ -1,15 +1,10 @@ /obj/item/disk/surgery/brainwashing - name = "Surgery Disk" // SKYRAT EDIT CHANGE - ORIGINAL: name = "Brainwashing Surgery Disk" - Finally I can upload the funny surgery disk without letting everyone in the room know about it! - desc = "The disk provides instructions on some kind of surgery, but the label has been scratched off..." //SKYRAT EDIT: Moved to Special Desc. - surgeries = list( - /datum/surgery/advanced/brainwashing, - /datum/surgery/advanced/brainwashing/mechanic, - ) - // SKYRAT EDIT ADDITION START - Job specific descriptions - special_desc_requirement = EXAMINE_CHECK_JOB - special_desc_jobs = list("Medical Doctor, Chief Medical Officer, Roboticist") + name = "Surgery Disk" //SKYRAT EDIT: Formerly "Brainwashing Surgery Disk" //Finally I can upload the funny surgery disk without letting everyone in the room know about it! + desc = "The disk provides instructions on some kind of surgery, but the label has been scratched off..." //Skyrat edit: Moved to Special Desc. + surgeries = list(/datum/surgery/advanced/brainwashing) + special_desc_requirement = EXAMINE_CHECK_JOB // SKYRAT EDIT + special_desc_jobs = list("Medical Doctor, Chief Medical Officer, Roboticist") // SKYRAT EDIT CHANGE //You mean to tell me the roles that get this role-exclusive item know what it does? special_desc = "The disk provides instructions on how to impress an order on a brain, making it the primary objective of the patient." - // SKYRAT EDIT ADDITION END /datum/surgery/advanced/brainwashing name = "Brainwashing" diff --git a/code/modules/surgery/amputation.dm b/code/modules/surgery/amputation.dm index 3437ff923c1..ab11ce0c20f 100644 --- a/code/modules/surgery/amputation.dm +++ b/code/modules/surgery/amputation.dm @@ -18,13 +18,6 @@ ) removes_target_bodypart = TRUE // SKYRAT EDIT ADDITION - Surgically unremovable limbs -/datum/surgery/amputation/peg - name = "Detach" - requires_bodypart_type = BODYTYPE_PEG - steps = list( - /datum/surgery_step/sever_limb/peg, //Easy come, easy go - ) - /datum/surgery/amputation/mechanic name = "Disassemble" requires_bodypart_type = BODYTYPE_ROBOTIC @@ -34,6 +27,13 @@ /datum/surgery_step/sever_limb/mechanic, //The benefit of being robotic; people can pull you apart in an instant! Wait, that's not a benefit... ) +/datum/surgery/amputation/peg + name = "Detach" + requires_bodypart_type = BODYTYPE_PEG + steps = list( + /datum/surgery_step/sever_limb/peg, //Easy come, easy go + ) + /datum/surgery/amputation/can_start(mob/user, mob/living/patient) if(HAS_TRAIT(patient, TRAIT_NODISMEMBER)) return FALSE diff --git a/code/modules/surgery/bodyparts/head_hair_and_lips.dm b/code/modules/surgery/bodyparts/head_hair_and_lips.dm index ff4f6bc01e1..d977d4ae902 100644 --- a/code/modules/surgery/bodyparts/head_hair_and_lips.dm +++ b/code/modules/surgery/bodyparts/head_hair_and_lips.dm @@ -24,7 +24,7 @@ //HIDDEN CHECKS END if(owner) - if(!hair_hidden && !owner.get_organ_slot(ORGAN_SLOT_BRAIN) && !HAS_TRAIT(owner, TRAIT_NO_DEBRAIN_OVERLAY) && !istype(src, /obj/item/bodypart/head/synth)) // SKYRAT EDIT CHANGE - ORIGINAL: if(!hair_hidden && !owner.get_organ_slot(ORGAN_SLOT_BRAIN) && !HAS_TRAIT(owner, TRAIT_NO_DEBRAIN_OVERLAY)) + if(!hair_hidden && !owner.get_organ_slot(ORGAN_SLOT_BRAIN) && !HAS_TRAIT(owner, TRAIT_NO_DEBRAIN_OVERLAY)) show_debrained = TRUE else show_debrained = FALSE @@ -34,7 +34,7 @@ else show_eyeless = FALSE else - if(!hair_hidden && !(locate(/obj/item/organ/internal/brain) in src) && !istype(src, /obj/item/bodypart/head/synth)) // SKYRAT EDIT CHANGE - ORIGINAL: if(!hair_hidden && !(locate(/obj/item/organ/internal/brain) in src)) + if(!hair_hidden && !(locate(/obj/item/organ/internal/brain) in src)) show_debrained = TRUE else show_debrained = FALSE diff --git a/code/modules/surgery/gastrectomy.dm b/code/modules/surgery/gastrectomy.dm index 220ba6cd890..f498d220d2f 100644 --- a/code/modules/surgery/gastrectomy.dm +++ b/code/modules/surgery/gastrectomy.dm @@ -73,7 +73,7 @@ var/obj/item/organ/internal/stomach/target_stomach = target.get_organ_slot(ORGAN_SLOT_STOMACH) target_human.setOrganLoss(ORGAN_SLOT_STOMACH, 20) // Stomachs have a threshold for being able to even digest food, so I might tweak this number if(target_stomach) - target_stomach.operated = TRUE // SKYRAT EDIT CHANGE - Not for slimepeople - indents for else block + target_stomach.operated = TRUE if(target_stomach.organ_flags & ORGAN_EMP) //If our organ is failing due to an EMP, fix that target_stomach.organ_flags &= ~ORGAN_EMP display_results( diff --git a/code/modules/surgery/hepatectomy.dm b/code/modules/surgery/hepatectomy.dm index b8c0cdb6372..2216ac7ad69 100644 --- a/code/modules/surgery/hepatectomy.dm +++ b/code/modules/surgery/hepatectomy.dm @@ -72,7 +72,7 @@ var/obj/item/organ/internal/liver/target_liver = target.get_organ_slot(ORGAN_SLOT_LIVER) human_target.setOrganLoss(ORGAN_SLOT_LIVER, 10) //not bad, not great if(target_liver) - target_liver.operated = TRUE // SKYRAT EDIT CHANGE - Not for slimepeople - Indents for else block + target_liver.operated = TRUE if(target_liver.organ_flags & ORGAN_EMP) //If our organ is failing due to an EMP, fix that target_liver.organ_flags &= ~ORGAN_EMP display_results( diff --git a/code/modules/surgery/lobectomy.dm b/code/modules/surgery/lobectomy.dm index f9add54a1d7..c34c8754505 100644 --- a/code/modules/surgery/lobectomy.dm +++ b/code/modules/surgery/lobectomy.dm @@ -68,15 +68,8 @@ if(ishuman(target)) var/mob/living/carbon/human/human_target = target var/obj/item/organ/internal/lungs/target_lungs = human_target.get_organ_slot(ORGAN_SLOT_LUNGS) + target_lungs.operated = TRUE human_target.setOrganLoss(ORGAN_SLOT_LUNGS, 60) - if(target_lungs) - //SKYRAT EDIT ADDITION BEGIN - This is so that you can do organ surgeries multiple times on slimepeople. - if(istype(target_lungs, /obj/item/organ/internal/lungs/slime)) - addtimer(VARSET_CALLBACK(target_lungs, operated, FALSE), 30 SECONDS) - //SKYRAT EDIT ADDITION END - target_lungs.operated = TRUE - if(target_lungs.organ_flags & ORGAN_EMP) //If our organ is failing due to an EMP, fix that - target_lungs.organ_flags &= ~ORGAN_EMP display_results( user, target, diff --git a/icons/obj/weapons/bows/arrows.dmi b/icons/obj/weapons/bows/arrows.dmi index 1e2ed93735ec9f91aed79efed710d132b451e169..a6d7678e2f01510b3961743a425280a201e3c381 100644 GIT binary patch delta 2234 zcmV;r2u1h76UP#eBmuyYC53;NWF}|hb&?rSG&Lu&5+tl=q=N-xH;oim7vyIa=jRdW zWMsu8S(1|oav!m_Agd8883<2tr9jK~#9!?VW#URb?2* zzvp-hQf#9ID_dJ-ko_{pq=<3|mXx_{WJN(x;-;7>SQ#Y7icM^>KNNor-J*h41OHIi z=1qwRGia>MV@qekTs!NwY4e8nt{UZbpZ=IP7G4Ir`ktsLC)+Br*v$*#3#O#8Za&|jz> zuvQlq;^5jsDFxlo(4b|vLZ`mO>ElBX37_05`uLG-q|&tr=>mUB9{}28K(uxXvgVfv zt^H@up4AS1PfafMo;-y+7F>fB%Vr9JKh9*!X6loC%=HR99 zc8Ivo7p)M(PYr(7oH>Z~^nBK<)xuz>NXII-C;cYzqtYl;C{JA1KV;bE*;HWSs`qR2V;0|4Ng z_4ivw7+^kNO@#jnP+*DyqEFlh0I1#;#o^(naHN0jPrUi!4j89;fOZ2e4Ai=u5N&Na zNlo!Vx@$$HvHKWUEEbE!VzF2(R;DWB=l4(S$tC~@&9E`A?01XfD=B2p0FIXIZR3RDQ zRcU`>@*ID%LL%TN1241oAEfhiBpSzkKG5F{jz3<3pAS%LS!)`AT9wZ4?f(Pe zcizT@8#a$6KG5Hd;gN)t=J#^(XI=gG8J+UCWwZb?Yd-)C9{mpOG2rE=pM`5biQ$oi zH2CQjKO_=<15hh_9N=HW`1CUm!aa2qrLTWouyl!k>#CvKGcx~jqP<@ek@xZjg8o}T z8HKNM8Jn^3r-ILguV4J1Kf0zX&@n)=W?yE1Ke5?Uv3l9q_+0b3*=P6+pW!onE_{a1 zh0pN0@EJZAKEvn2PpkOWRM5S@d6Fly<6Ft#=Usxn$oIKS_--p)0QsN3s^)wGlj48d z4Bzbd_Lbltg}jBF$&xQ$FR!^ZG5(~7K@;Ii)}-WP390837#Dxc0JWC2CgNMl<-w0g zT;5f1zwdm4OUb|Tro8hBOpia-6}(GC?<%_G1AzMXLA&2mcRqpX@lj5+R~38~i^XEG zSS%KcC0J5+sRFz|UsZgiIpb(NwEfCvHiW9ba|+BDMN%=+S=#TyFKM z=uqnb9?JagfvWPo%kd=X=iO!+xon`@rA z@TX+}hM!qKq;1PiK9vC(!&hhkuKAe<|34cb$mFLpAWLWXvSvYr8GviPzBS)%9i0aD z-lwC`6c^?#+5yFvF%6!IEQWutSA3;i0PoLN8()Vp0PoLN8()1FP&yB!a(}w%@wE`| z&sV%ZpT%OaSS%Kc#bU8onV^9>B5ETtF7YCOyqC%F<1|9yt^ z3_m0aJOF&?H~@ffIESCL%j5k0LKz@Jl06-tz37`w@ zfH7y}P#e(~CBKfsAKsQIUGxI#nm23rJpm1R{6`;sEBJza&DM<~2JLSTm{K3?Li6R$~B_ zCv)gv09Ej{7z3$3mPNGzRKoY-8w+2x0aU|RY5*PJt2BTP@Rb=r7x=0SpbLB@2G9w< z3Ipf_U%CNwgD=|vy1|!f03G4WG=Prqr5Qk1__7S3EBqj)g0+7?AK-FY+A#{>dk-4A z_jMEn$w=5VBMu1piDg$zb0mzoFh715g{$+^m)3;OlGvA${s3_`7Y_v=+b* z-?(Mmro#94|79*&)nhGzjw_CY%S8Bo6Znk)7K_DVu`*Nt0+}Gpv>hECX8-^I07*qo IM6N<$g5!->ssI20 delta 2357 zcmV-53Ci}z62TLYBmusWC53!sCX=I@6lZ~SW#jd^8BjDeC$SPFtY@Ty1!Fgj z6jv1FXBOw@5$jhZ#Y9-5tl;YB0!nHCym-EVZ~J78000QSNkl z%61HLYRM|zaoyi*iGc3~4*;E=ofvL!N4J1@x{91y+P`rxE}R{+0i?J8E+2Qk{JAB< zWIwWQxbE+@vwc9_fK?p`;MnGXl!k6?ZPjvEq4V$K!r3v1gin7?Exq|z9u_jR2pIx` zYk=+~kZ9Tg|EemXXaA*3m$ZXFSYJRx=g#AvlAEx8-4Y@2reB_uj)AzzJ-tZ#!Z`_MNC&s1bUvNjE+WP>e z!@nzk6$Rf~j$eoOLd12xX!#ia!r=RtFGq5C7~B3ix+wGaG5m$WAL=`U#Kgaq<^TC- zG5H2C9lks9QVl;FvKjvT;TPOdm=o~lZ2*S*RbB}=A&E*Fo zRDK{r-kUr+!7o1$nVg88J3sC3tXu^+fRhA@+T2w=gU*6*e_-rfcP7zi#$(W|Sm zf1{o^c_M#(Ll_AE50`&Bl)W!?0H+5aRrmH)!!JJ&q1QXlQA5SjsfC^EJ-cM}0$Dr0 z+2FSr^c-J%YLr&^H&8>xQW~r;pe^}6YEO-7Yk;g@24;5qAqPkTL#7xY(l>+`OHW|^ zx+SRFlR*Ble*geJ+WN3%gaK9oRwn!xfMQb&kobSuLjZufJqer`e+DPJzQAk0YJhQS z0q7v$z(8%u_tEQ}=cqk3O82ebZEPI_i^XEGSS%Kc#mZF~wX!$TOmu4iuu3gs^6qWS zBLMK-U}I&?e`e(ElW`CsqC@WQO_sGu75p2k(|E5c4wK*)J<$RHxZ1Z9pEQFqP2iIO z{yBdj1OTl-lk7%F(FA>Y*v5_3X`HT#V_ip~WfJ_WeLJWA_v2-Ep|>$j4{W|-2{k|_ zcvVW#1f8ymqvPW{?W?csNjE3A8#Uy4;m;*o1pMcKP$v9Vph;%;PhIp4{P8{MVA=D= zfInLQIDJ+0(#&BnJ|NxzO_sGuMOUAx%Ta&eshzjOg)ge>A897-)(eK>|3&x@zsHr^ zwoic{i4S0WA`Nf%FKpcZ8xeVbypuo~3RlJ`Tp6Ppe;tJ@V}hOg293||BI zstmyJHG!|f01RIv__7Va@HK-k(*O)#L-?|81&f65n+v-8yLVYv=8~@W%zA3)?Fd!u zgHG%DnP#l<*O7?h6TLr!JsbQ&AXI;tv8FEzevQA5sEg?6slRFq-_@;w>7Ut>6M^GI zCabii?#~b+I<$+3b}3rUb(e45Pq*7weYfpey+AgHCNF%cWBy$5cagls4(cLW;omR~ zzRm{7wq}FhvQMl5X3PP~Jinik+yJ49efU$^AE&x~0BHK)Rg)g$E_(a7p8bCrwgSnt z*!>x%<^WBWwJGL#l*@%5ll*v>3;#nz5G;Fs$_OT?_+iif3}3^4;Wf$oGkAvr6_(gHi(> zl;|j>PnvHbj;~jIOJwlO`gDH)h{yWH7btT4?;PJ2c@W>FKAq#MjW5Ii^Qlkg_-f+| zF~GOgr~lylUtSd507~oQ7g>BE1{gi{F}jn$Z=U@H9Q$dEPo$+K&++FMU+6Pz&;I-o z6fOH9f-k=>?eas%_$4==zW9@kV|V9#{;FRyqig(s9l5DL=ks4I@I`;YSghu^v)%2e zc)J+KR~VnWef{HqTd!xc^UaQLapRjE-{!_QJHE}0Z+3i}8((hxgLTn!hc=`6`~C)#=Rl=C9++uCi_b zhQE08w;8_K`P+XC-|YNthHrNMHp4eNf1BZ(oxjcS&CcIu_-5yCi%wqFE}0BpkO6c~ z-ib`!26aD8ga1U&WZv%Q^~g6z!)C2SS=J`WS#DSdKv8*(ni6rDvP8mPj4}!Sj3GdE zeY}qFKdsH}oORnDK(%JTzm&91%73yxy}TG?YKgL&|7|HPARM&KEYUW-KHX^eEEbE! bGDZIfA(H~U<&Mq@00000NkvXXu0mjfcao%U diff --git a/icons/obj/weapons/bows/bows.dmi b/icons/obj/weapons/bows/bows.dmi index 57acf92ae38740342c3b1bff2506bc4ca7038cb4..5e2dda9cef6fb2704a0993f7fe2d36f66605acf6 100644 GIT binary patch literal 4501 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 diff --git a/modular_skyrat/modules/bodyparts/code/taur_bodyparts.dm b/modular_skyrat/modules/bodyparts/code/taur_bodyparts.dm index a8426c94962..0eab897b49e 100644 --- a/modular_skyrat/modules/bodyparts/code/taur_bodyparts.dm +++ b/modular_skyrat/modules/bodyparts/code/taur_bodyparts.dm @@ -21,11 +21,7 @@ can_be_surgically_removed = FALSE bodyshape = parent_type::bodyshape | BODYSHAPE_TAUR damage_examines = list(BRUTE = ROBOTIC_BRUTE_EXAMINE_TEXT, BURN = ROBOTIC_BURN_EXAMINE_TEXT) - -/obj/item/bodypart/leg/right/synth/taur/generate_icon_key() - RETURN_TYPE(/list) - // We don't want more than one icon for all of the taur legs, because they're going to be invisible. - return list("taur") + show_icon = FALSE /obj/item/bodypart/leg/left/synth/taur icon_greyscale = BODYPART_ICON_TAUR @@ -34,8 +30,4 @@ can_be_surgically_removed = FALSE bodyshape = parent_type::bodyshape | BODYSHAPE_TAUR damage_examines = list(BRUTE = ROBOTIC_BRUTE_EXAMINE_TEXT, BURN = ROBOTIC_BURN_EXAMINE_TEXT) - -/obj/item/bodypart/leg/left/Synth/taur/generate_icon_key() - RETURN_TYPE(/list) - // We don't want more than one icon for all of the taur legs, because they're going to be invisible. - return list("taur") + show_icon = FALSE diff --git a/modular_skyrat/modules/colony_fabricator/code/appliances/space_heater.dm b/modular_skyrat/modules/colony_fabricator/code/appliances/space_heater.dm index e760f33068e..85d3addf7d5 100644 --- a/modular_skyrat/modules/colony_fabricator/code/appliances/space_heater.dm +++ b/modular_skyrat/modules/colony_fabricator/code/appliances/space_heater.dm @@ -6,8 +6,8 @@ anchored = TRUE density = FALSE circuit = null - heating_energy = parent_type::heating_energy * 2 - efficiency = parent_type::efficiency * 2 + heating_energy = STANDARD_CELL_RATE * 0.2 + efficiency = 30 display_panel = TRUE cell = null /// What this repacks into when its wrenched off a wall @@ -24,8 +24,8 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/space_heater/wall_mounted, 29) /obj/machinery/space_heater/wall_mounted/RefreshParts() . = ..() - heating_energy = src::heating_energy - efficiency = src::efficiency + heating_energy = STANDARD_CELL_RATE * 0.2 + efficiency = 30 /obj/machinery/space_heater/wall_mounted/default_deconstruction_crowbar() return diff --git a/modular_skyrat/modules/synths/code/bodyparts/brain.dm b/modular_skyrat/modules/synths/code/bodyparts/brain.dm index d4f062bc178..266ff172550 100644 --- a/modular_skyrat/modules/synths/code/bodyparts/brain.dm +++ b/modular_skyrat/modules/synths/code/bodyparts/brain.dm @@ -1,7 +1,7 @@ /obj/item/organ/internal/brain/synth name = "compact positronic brain" slot = ORGAN_SLOT_BRAIN - zone = BODY_ZONE_HEAD + zone = BODY_ZONE_CHEST organ_flags = ORGAN_ROBOTIC maxHealth = 2 * STANDARD_ORGAN_THRESHOLD desc = "A cube of shining metal, four inches to a side and covered in shallow grooves. It has an IPC serial number engraved on the top. It is usually slotted into the chest of synthetic crewmembers." diff --git a/modular_skyrat/modules/synths/code/bodyparts/internal_computer/internal_computer.dm b/modular_skyrat/modules/synths/code/bodyparts/internal_computer/internal_computer.dm index 36a7766bb59..1c9dd9b1500 100644 --- a/modular_skyrat/modules/synths/code/bodyparts/internal_computer/internal_computer.dm +++ b/modular_skyrat/modules/synths/code/bodyparts/internal_computer/internal_computer.dm @@ -98,7 +98,7 @@ Various overrides necessary to get the persocom working, namely ui status, power var/obj/item/organ/internal/brain/synth/brain_loc = loc // Battery level is now according to the synth charge if(istype(brain_loc)) - var/charge_level = (brain_loc.owner.nutrition / NUTRITION_LEVEL_FULL) * 100 + var/charge_level = (brain_loc.owner.nutrition / NUTRITION_LEVEL_ALMOST_FULL) * 100 switch(charge_level) if(80 to 110) data["PC_batteryicon"] = "batt_100.gif" diff --git a/modular_skyrat/modules/synths/code/bodyparts/limbs.dm b/modular_skyrat/modules/synths/code/bodyparts/limbs.dm index c2d826e3e64..feae67951e6 100644 --- a/modular_skyrat/modules/synths/code/bodyparts/limbs.dm +++ b/modular_skyrat/modules/synths/code/bodyparts/limbs.dm @@ -149,26 +149,6 @@ TRAIT_RESISTHIGHPRESSURE, )) -/// Add: Slowdown, Confusion - Think Watchers Gaze flash -/obj/item/bodypart/chest/synth/emp_effect(severity, protection) - . = ..() - if(!. || isnull(owner)) - return - - switch(severity) - if(EMP_HEAVY) - owner.set_jitter_if_lower(SYNTH_BAD_EFFECT_DURATION * SYNTH_HEAVY_EMP_MULTIPLIER) - owner.set_dizzy_if_lower(SYNTH_BAD_EFFECT_DURATION * SYNTH_HEAVY_EMP_MULTIPLIER) - owner.set_derpspeech_if_lower(SYNTH_BAD_EFFECT_DURATION * SYNTH_HEAVY_EMP_MULTIPLIER) - owner.set_confusion_if_lower(SYNTH_BAD_EFFECT_DURATION * 0.5) - - if(EMP_LIGHT) - owner.set_jitter_if_lower(SYNTH_BAD_EFFECT_DURATION) - owner.set_dizzy_if_lower(SYNTH_BAD_EFFECT_DURATION) - owner.set_derpspeech_if_lower(SYNTH_BAD_EFFECT_DURATION) - owner.set_confusion_if_lower(SYNTH_BAD_EFFECT_DURATION * 0.25) - - /obj/item/bodypart/arm/left/synth name = "android left arm" desc = "A custom limb designed for androids, customizable to a degree your wallet agrees with." diff --git a/modular_skyrat/modules/synths/code/bodyparts/power_cord.dm b/modular_skyrat/modules/synths/code/bodyparts/power_cord.dm index 2d6c76caa47..c25a10c4d9c 100644 --- a/modular_skyrat/modules/synths/code/bodyparts/power_cord.dm +++ b/modular_skyrat/modules/synths/code/bodyparts/power_cord.dm @@ -45,7 +45,7 @@ to_chat(user, span_warning("You plug into [target], but nothing happens! It seems you don't have an internal cell to charge.")) return - if(nutrition_level_joules > SYNTH_CHARGE_ALMOST_FULL) + if(nutrition_level_joules >= SYNTH_CHARGE_ALMOST_FULL) user.balloon_alert(user, "cell fully charged!") return @@ -71,6 +71,8 @@ * * user - The human mob draining the power cell. */ /obj/item/synth_powercord/proc/do_power_draw(obj/target, mob/living/carbon/human/user) + /// The current user's nutrition level in joules. + var/nutrition_level_joules = user.nutrition * SYNTH_JOULES_PER_NUTRITION // Draw power from an APC if one was given. var/obj/machinery/power/apc/target_apc if(istype(target, /obj/machinery/power/apc)) @@ -83,9 +85,16 @@ user.balloon_alert(user, "APC charge low!") return - var/wait = SSmachines.wait / (1 SECONDS) var/energy_needed while(TRUE) + // Check if the user is nearly fully charged. + // Ensures minimum draw is always lower than this margin. + nutrition_level_joules = user.nutrition * SYNTH_JOULES_PER_NUTRITION + energy_needed = SYNTH_CHARGE_MAX - nutrition_level_joules + if(energy_needed < (SYNTH_CHARGE_MAX - SYNTH_CHARGE_ALMOST_FULL)) + user.balloon_alert(user, "cell fully charged!") + break + // Check if the charge level of the cell is below the minimum. // Prevents synths from overloading the cell. if(target_cell.percent() < minimum_cell_charge) @@ -93,30 +102,26 @@ break // Attempt to drain charge from the cell. - if(!do_after(user, wait SECONDS, target)) + if(!do_after(user, SSmachines.wait, target)) break - // Check if the user is nearly fully charged. - // Ensures minimum draw is always lower than this margin. - var/nutrition_level_joules = user.nutrition * SYNTH_JOULES_PER_NUTRITION - energy_needed = SYNTH_CHARGE_MAX - nutrition_level_joules - // Calculate how much to draw from the cell this cycle. - var/current_draw = min(energy_needed, SYNTH_CHARGE_RATE * wait) + var/current_draw = min(energy_needed, SYNTH_CHARGE_RATE * SSmachines.wait) - var/energy_delivered = target_cell.use(current_draw, force = TRUE) - target_cell.update_appearance() + var/energy_delivered = target_cell.use(current_draw) if(!energy_delivered) // The cell could be sabotaged, which causes it to explode and qdelete. if(QDELETED(target_cell)) return - user.balloon_alert(user, "[target_apc ? "APC" : "Cell"] empty!") + user.balloon_alert(user, "APC failure!") break // If charging was successful, then increase user nutrition and emit sparks. - var/nutrition_gained = energy_delivered / SYNTH_JOULES_PER_NUTRITION - user.nutrition = min(user.nutrition + nutrition_gained, NUTRITION_LEVEL_FULL) + var/nutrition_gained = (energy_delivered / SYNTH_JOULES_PER_NUTRITION) / SSmachines.wait + user.nutrition += nutrition_gained do_sparks(1, FALSE, target_cell.loc) - if(user.nutrition > NUTRITION_LEVEL_ALMOST_FULL) - user.balloon_alert(user, "fully charged") - break + + // Start APC recharging if power was used and the APC has power available. + if(target_apc && !QDELETED(target_apc) && !QDELETED(target_apc.cell) && target_apc.main_status > APC_NO_POWER) + target_apc.charging = APC_CHARGING + target_apc.update_appearance() diff --git a/modular_skyrat/modules/synths/code/bodyparts/stomach.dm b/modular_skyrat/modules/synths/code/bodyparts/stomach.dm index 163bb9469cc..71fd2f27d48 100644 --- a/modular_skyrat/modules/synths/code/bodyparts/stomach.dm +++ b/modular_skyrat/modules/synths/code/bodyparts/stomach.dm @@ -68,3 +68,9 @@ dummy_cell.charge = owner.nutrition * SYNTH_JOULES_PER_NUTRITION charge_cell.Invoke(dummy_cell, seconds_per_tick) owner.nutrition = min(dummy_cell.charge() / SYNTH_JOULES_PER_NUTRITION, NUTRITION_LEVEL_FULL) + QDEL_NULL(dummy_cell) + +#undef SYNTH_CHARGE_MAX +#undef SYNTH_JOULES_PER_NUTRITION +#undef SYNTH_CHARGE_RATE +#undef SYNTH_APC_MINIMUM_PERCENT diff --git a/modular_skyrat/modules/synths/code/surgery/robot_chassis_restoration.dm b/modular_skyrat/modules/synths/code/surgery/robot_chassis_restoration.dm index 3d530b8a070..d3ed1e7855f 100644 --- a/modular_skyrat/modules/synths/code/surgery/robot_chassis_restoration.dm +++ b/modular_skyrat/modules/synths/code/surgery/robot_chassis_restoration.dm @@ -4,11 +4,11 @@ /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/pry_off_plating/fullbody, - /datum/surgery_step/weld_plating/fullbody, /datum/surgery_step/prepare_electronics, - /datum/surgery_step/add_plating/fullbody, + /datum/surgery_step/weld_plating/fullbody, /datum/surgery_step/finalize_positronic_restoration, /datum/surgery_step/mechanic_close, ) diff --git a/modular_skyrat/modules/synths/code/surgery/robot_healing.dm b/modular_skyrat/modules/synths/code/surgery/robot_healing.dm index 10fb114dda4..b57a21eb17c 100644 --- a/modular_skyrat/modules/synths/code/surgery/robot_healing.dm +++ b/modular_skyrat/modules/synths/code/surgery/robot_healing.dm @@ -16,7 +16,7 @@ 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_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 diff --git a/modular_skyrat/modules/synths/code/surgery/robot_surgery_rename.dm b/modular_skyrat/modules/synths/code/surgery/robot_surgery_rename.dm new file mode 100644 index 00000000000..427d60d6f03 --- /dev/null +++ b/modular_skyrat/modules/synths/code/surgery/robot_surgery_rename.dm @@ -0,0 +1,14 @@ +/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/tgstation.dme b/tgstation.dme index 2b4b88c4988..6b8b9b96ba3 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -8430,6 +8430,7 @@ #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\tableflip\code\flipped_table.dm" #include "modular_skyrat\modules\tagline\code\world.dm"