diff --git a/code/game/objects/items/weapons/bio_chips/bio_chip_supercharge.dm b/code/game/objects/items/weapons/bio_chips/bio_chip_supercharge.dm index 0b73c109ec7..b15366fe82c 100644 --- a/code/game/objects/items/weapons/bio_chips/bio_chip_supercharge.dm +++ b/code/game/objects/items/weapons/bio_chips/bio_chip_supercharge.dm @@ -18,9 +18,9 @@ imp_in.stand_up(TRUE) SEND_SIGNAL(imp_in, COMSIG_LIVING_CLEAR_STUNS) + imp_in.reagents.add_reagent("recal", 10) imp_in.reagents.add_reagent("surge_plus", 10) - imp_in.reagents.add_reagent("liquid_solder", 10) - imp_in.reagents.add_reagent("combatlube", 10) + imp_in.reagents.add_reagent("synthetic_omnizine_no_addiction", 10) if(!uses) qdel(src) diff --git a/code/modules/reagents/chemistry/reagents/drugs.dm b/code/modules/reagents/chemistry/reagents/drugs.dm index 1afeb17cf6a..21ac9b85aaa 100644 --- a/code/modules/reagents/chemistry/reagents/drugs.dm +++ b/code/modules/reagents/chemistry/reagents/drugs.dm @@ -1254,103 +1254,6 @@ update_flags |= M.adjustBruteLoss(rand(1,5)*REAGENTS_EFFECT_MULTIPLIER, FALSE) return list(0, update_flags) - -//surge+, used in supercharge implants -/datum/reagent/surge_plus - name = "Surge Plus" - id = "surge_plus" - description = "A superconducting gel that overloads processors, causing an effect reportedly similar to benzodiazepines in synthetic units." - reagent_state = LIQUID - color = "#28b581" - - process_flags = SYNTHETIC - overdose_threshold = 30 - addiction_chance = 1 - addiction_chance_additional = 20 - addiction_threshold = 5 - addiction_decay_rate = 0.2 - taste_description = "silicon" - -/datum/reagent/surge_plus/on_mob_life(mob/living/M) - var/update_flags = STATUS_UPDATE_NONE - M.AdjustParalysis(-8 SECONDS) - M.AdjustStunned(-8 SECONDS) - M.AdjustWeakened(-8 SECONDS) - M.AdjustKnockDown(-8 SECONDS) - update_flags |= M.adjustStaminaLoss(-25, FALSE) - if(prob(5)) - var/high_message = pick("You feel calm.", "You feel collected.", "You feel like you need to relax.") - if(prob(10)) - high_message = "0100011101001111010101000101010001000001010001110100111101000110010000010101001101010100!" - to_chat(M, "[high_message]") - - return ..() | update_flags - -/datum/reagent/surge_plus/overdose_process(mob/living/M, severity) - var/update_flags = STATUS_UPDATE_NONE - var/recent_consumption = holder.addiction_threshold_accumulated[type] - M.Jitter(40 SECONDS) - M.Stuttering(10 SECONDS) - if(prob(5 * DRAWBACK_CHANCE_MODIFIER(recent_consumption))) - to_chat(M, "Your circuits overheat!") // synth fever - M.bodytemperature += 30 * DRAWBACK_CHANCE_MODIFIER(recent_consumption * 2) - M.Confused(1 SECONDS * DRAWBACK_CHANCE_MODIFIER(recent_consumption * 2)) - if(prob(10)) - to_chat(M, "You experience a violent electrical discharge!") - playsound(get_turf(M), 'sound/effects/eleczap.ogg', 75, TRUE) - var/icon/I = new('icons/obj/zap.dmi', "lightningend") - I.Turn(-135) - var/obj/effect/overlay/beam/B = new(get_turf(M)) - B.pixel_x = rand(-20, 0) - B.pixel_y = rand(-20, 0) - B.icon = I - update_flags |= M.adjustFireLoss(rand(1, 5) * REAGENTS_EFFECT_MULTIPLIER, FALSE) - update_flags |= M.adjustBruteLoss(rand(1, 5) * REAGENTS_EFFECT_MULTIPLIER, FALSE) - return list(0, update_flags) - -//Servo Lube, supercharge -/datum/reagent/lube/combat - name = "Combat-Lube" - id = "combatlube" - description = "Combat-Lube is a refined and enhanced lubricant which induces effect stronger than Methamphetamine in synthetic users by drastically reducing internal friction and increasing cooling capabilities." - process_flags = SYNTHETIC - overdose_threshold = 30 - addiction_chance = 1 - addiction_chance_additional = 20 - -/datum/reagent/lube/combat/on_mob_add(mob/living/L) - ADD_TRAIT(L, TRAIT_GOTTAGOFAST, id) - -/datum/reagent/lube/combat/on_mob_life(mob/living/M) - M.SetSleeping(0) - M.SetDrowsy(0) - - var/high_message = pick("You feel your servos whir!", "You feel like you need to go faster.", "You feel like you were just overclocked!") - if(prob(10)) - high_message = "0100011101001111010101000101010001000001010001110100111101000110010000010101001101010100!" - if(prob(5)) - to_chat(M, "[high_message]") - return ..() - -/datum/reagent/lube/combat/on_mob_delete(mob/living/M) - REMOVE_TRAIT(M, TRAIT_GOTTAGOFAST, id) - ..() - -/datum/reagent/lube/combat/overdose_process(mob/living/M, severity) - var/list/overdose_info = ..() - var/effect = overdose_info[REAGENT_OVERDOSE_EFFECT] - var/update_flags = overdose_info[REAGENT_OVERDOSE_FLAGS] - if(prob(20)) - M.emote("ping") - if(prob(33)) - M.visible_message("[M]'s hands flip out and flail everywhere!") - var/obj/item/I = M.get_active_hand() - if(I) - M.drop_item() - update_flags |= M.adjustFireLoss(5, FALSE) - update_flags |= M.adjustBrainLoss(3, FALSE) - return list(effect, update_flags) - #undef DRAWBACK_CHANCE_MODIFIER #undef CONSTANT_DOSE_SAFE_LIMIT #undef CONSTANT_DOSE_DEATH_LIMIT diff --git a/code/modules/reagents/chemistry/reagents/medicine.dm b/code/modules/reagents/chemistry/reagents/medicine.dm index 98b0089694e..6aa41157755 100644 --- a/code/modules/reagents/chemistry/reagents/medicine.dm +++ b/code/modules/reagents/chemistry/reagents/medicine.dm @@ -73,26 +73,63 @@ var/list/overdose_info = ..() var/effect = overdose_info[REAGENT_OVERDOSE_EFFECT] var/update_flags = overdose_info[REAGENT_OVERDOSE_FLAGS] + var/is_robot = (process_flags & SYNTHETIC) > 0 if(severity == 1) - if(effect <= 1) - M.visible_message("[M] suddenly and violently vomits!") - M.fakevomit(no_text = 1) - else if(effect <= 3) - M.emote(pick("groan","moan")) - if(effect <= 8) - update_flags |= M.adjustToxLoss(1, FALSE) - else if(severity == 2) - if(effect <= 2) - M.visible_message("[M] suddenly and violently vomits!") - M.fakevomit(no_text = 1) - else if(effect <= 5) - M.visible_message("[M] staggers and drools, [M.p_their()] eyes bloodshot!") - M.Dizzy(16 SECONDS) - M.Weaken(8 SECONDS) - if(effect <= 15) - update_flags |= M.adjustToxLoss(1, FALSE) + if(!is_robot) + if(effect <= 1) + M.visible_message("[M] suddenly and violently vomits!") + M.fakevomit(no_text = TRUE) + else if(effect <= 3) + M.emote(pick("groan", "moan")) + if(effect <= 8) + update_flags |= M.adjustToxLoss(1, FALSE) + else + if(effect <= 1) + M.visible_message("[M] suddenly jitters for a moment.") + M.AdjustJitter(2 SECONDS) + else if(effect <= 3) + M.emote("shudder") + if(effect <= 8) + update_flags |= M.adjustFireLoss(1, FALSE) + to_chat(M, "Your internals start to overheat!") + return list(effect, update_flags) + + if(severity == 2) + if(!is_robot) + if(effect <= 2) + M.visible_message("[M] suddenly and violently vomits!") + M.fakevomit(no_text = TRUE) + else if(effect <= 5) + M.visible_message("[M] staggers and drools, [M.p_their()] eyes bloodshot!") + M.Dizzy(16 SECONDS) + M.Weaken(8 SECONDS) + if(effect <= 15) + update_flags |= M.adjustToxLoss(1, FALSE) + else + if(effect <= 2) + M.visible_message("[M] suddenly jitters for a moment.") + M.AdjustJitter(2 SECONDS) + else if(effect <= 5) + M.visible_message("[M] staggers and seizes up!") + M.Dizzy(16 SECONDS) + M.Weaken(8 SECONDS) + if(effect <= 15) + update_flags |= M.adjustFireLoss(1, FALSE) + to_chat(M, "Your internals start to overheat!") return list(effect, update_flags) +/datum/reagent/medicine/synaptizine/recal + name = "Recal" + id = "recal" + description = "An oily insulating liquid that passively regulates electrical activity on sensitive electronic components, allowing them to recover from decalibrating events faster. \ + Overdosing will cause under-voltage errors and hamper component heat dissipation, potentially causing heat damage." + reagent_state = LIQUID + color = "#85845d" + overdose_threshold = 40 + harmless = FALSE + taste_description = "mineral oil and toothpaste" + process_flags = SYNTHETIC + /datum/reagent/medicine/mitocholide name = "Mitocholide" id = "mitocholide" @@ -426,14 +463,15 @@ harmless = FALSE taste_description = "health" -/datum/reagent/medicine/omnizine/on_mob_life(mob/living/M) +/datum/reagent/medicine/omnizine/on_mob_life(mob/living/carbon/human/H) var/update_flags = STATUS_UPDATE_NONE - update_flags |= M.adjustToxLoss(-1*REAGENTS_EFFECT_MULTIPLIER, FALSE) - update_flags |= M.adjustOxyLoss(-1*REAGENTS_EFFECT_MULTIPLIER, FALSE) - update_flags |= M.adjustBruteLoss(-2*REAGENTS_EFFECT_MULTIPLIER, FALSE) - update_flags |= M.adjustFireLoss(-2*REAGENTS_EFFECT_MULTIPLIER, FALSE) + var/is_robot = ((process_flags & SYNTHETIC) > 0) + update_flags |= H.adjustToxLoss(-1 * REAGENTS_EFFECT_MULTIPLIER, FALSE) + update_flags |= H.adjustOxyLoss(-1 * REAGENTS_EFFECT_MULTIPLIER, FALSE) + update_flags |= H.adjustBruteLoss(-2 * REAGENTS_EFFECT_MULTIPLIER, FALSE, robotic = is_robot) + update_flags |= H.adjustFireLoss(-2 * REAGENTS_EFFECT_MULTIPLIER, FALSE, robotic = is_robot) if(prob(50)) - M.AdjustLoseBreath(-2 SECONDS) + H.AdjustLoseBreath(-2 SECONDS) return ..() | update_flags /datum/reagent/medicine/omnizine/overdose_process(mob/living/M, severity) @@ -481,6 +519,13 @@ addiction_chance_additional = 100 addiction_threshold = 0 +// Used in the IPC supercharge implant - because IPCs deserve the little bit of healing too. +/datum/reagent/medicine/omnizine/no_addict/synthetic + name = "Smart Metal" + id = "synthetic_omnizine_no_addiction" + description = "An exotic liquid metal alloy that flows into cracks, fractures, and other surface imperfections before solidifying to patch up damaged components." + process_flags = SYNTHETIC + /datum/reagent/medicine/calomel name = "Calomel" id = "calomel" @@ -1185,6 +1230,36 @@ /datum/reagent/medicine/stimulative_agent/changeling/on_mob_delete(mob/living/L) return +// IPC Stimulative Agent, for the Supercharge Biochip. +/datum/reagent/medicine/stimulative_agent/surge_plus + name = "Surge Plus" + id = "surge_plus" + description = "A high quality, low-viscocity gel that both supercharges processors and massively increases the efficincy of synthetic locomotive systems, allowing the user to run faster whilst also clearing stuns. \ + If overdosed, it will cause short-circuits that will inflict damage and reduce locomotive efficiancy gains." + reagent_state = LIQUID + color = "#28b581" + process_flags = SYNTHETIC + taste_description = "silicon" + +/datum/reagent/medicine/stimulative_agent/surge_plus/on_mob_life(mob/living/M) + var/update_flags = STATUS_UPDATE_NONE + update_flags |= ..() + if(prob(5)) + var/high_message = pick("You feel calm.", "You feel collected.", "You feel like the world is moving in slow motion.") + if(prob(10)) + high_message = "0100011101001111010101000101010001000001010001110100111101000110010000010101001101010100!" // "GOTTAGOFAST" in binary. + to_chat(M, "[high_message]") + return ..() | update_flags + +/datum/reagent/medicine/stimulative_agent/surge_plus/overdose_process(mob/living/M, severity) + var/update_flags = STATUS_UPDATE_NONE + if(prob(33)) + M.Stuttering(5 SECONDS) + to_chat(M, pick("Your circuits overheat!", "Electrical arcs discharge inside you!")) + update_flags |= M.adjustStaminaLoss(2.5 * REAGENTS_EFFECT_MULTIPLIER, FALSE) + update_flags |= M.adjustFireLoss(5 * REAGENTS_EFFECT_MULTIPLIER, FALSE) // 5 to compensate for no breathloss. Not like anyone will ever OD on this anyway. + return list(0, update_flags) + /datum/reagent/medicine/insulin name = "Insulin" id = "insulin"