forked from Aurorastation/Aurora.3
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathChemistry-Reagents-Medicine.dm
1960 lines (1714 loc) · 87.6 KB
/
Chemistry-Reagents-Medicine.dm
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
/* General medicine */
/singleton/reagent/inaprovaline
name = "Inaprovaline"
description = "Inaprovaline is a cardiostimulant which stabilises myocardial contractility, working towards maintaining a steady pulse and blood pressure. Inaprovaline also acts as a weak analgesic."
reagent_state = LIQUID
color = "#00BFFF"
overdose = REAGENTS_OVERDOSE
metabolism = REM * 0.5
metabolism_min = REM * 0.125
breathe_mul = 0.5
scannable = TRUE
taste_description = "bitterness"
/singleton/reagent/inaprovaline/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder)
if(check_min_dose(M, 0.25))
M.add_chemical_effect(CE_STABLE)
M.add_chemical_effect(CE_PAINKILLER, 10)
/singleton/reagent/inaprovaline/overdose(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder)
if(prob(2))
to_chat(M, SPAN_WARNING(pick("Your chest feels tight.", "Your chest is aching a bit.", "You have a stabbing pain in your chest.")))
M.adjustHalLoss(5)
/singleton/reagent/bicaridine
name = "Bicaridine"
description = "Bicaridine is a complex medication which specifically targets damaged tissues and damaged blood vessels by encouraging the rate at which the damaged tissues are regenerated. Overdosing bicaridine allows the drug to take effect on damaged muscular tissues of arteries."
reagent_state = LIQUID
color ="#BF0000"
scannable = TRUE
overdose = REAGENTS_OVERDOSE
metabolism = REM * 0.5
taste_description = "bitterness"
fallback_specific_heat = 1
taste_mult = 3
/singleton/reagent/bicaridine/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder)
M.heal_organ_damage(5 * removed, 0)
if(REAGENT_VOLUME(M.reagents, /singleton/reagent/butazoline))
M.add_chemical_effect(CE_ITCH, M.chem_doses[type] * 2)
M.adjustHydrationLoss(2*removed)
M.adjustCloneLoss(2.5*removed) // Cell regeneration spiralling out of control resulting in genetic damage.
if(((M.chem_doses[type] > 30) && prob(2)) || ((M.bodytemperature < 189) && prob(10))) //Bicaridine treats arterial bleeding when dose is greater than 30u. Alternatively, if the drug is used in a cryotube.
var/mob/living/carbon/human/H = M
for(var/obj/item/organ/external/E in H.organs)
if(E.status & ORGAN_ARTERY_CUT)
E.status &= ~ORGAN_ARTERY_CUT
M.visible_message("<b>[M]</b> spasms!", SPAN_DANGER("You feel a stabbing pain in your [E.name]!"))
/singleton/reagent/bicaridine/overdose(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder)
M.dizziness = max(100, M.dizziness)
M.make_dizzy(5)
M.adjustHydrationLoss(5*removed)
M.adjustNutritionLoss(5*removed)
/singleton/reagent/butazoline
name = "Butazoline"
description = "Butazoline, a recent improvement upon Bicaridine, is specialised at treating the most traumatic of wounds, though less so for treating severe bleeding."
reagent_state = LIQUID
color = "#ff5555"
overdose = 15
scannable = TRUE
metabolism = REM * 0.5
taste_description = "bitterness"
taste_mult = 3
/singleton/reagent/butazoline/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder)
M.heal_organ_damage(8 * removed, 0)
M.add_chemical_effect(CE_ITCH, M.chem_doses[type])
M.adjustHydrationLoss(1*removed)
/singleton/reagent/kelotane
name = "Kelotane"
description = "Kelotane is a complex medication which specifically targets tissues which have been lost to severe burning by encouraging the rate at which these damaged tissues are regenerated."
reagent_state = LIQUID
color = "#FFA800"
overdose = REAGENTS_OVERDOSE
scannable = TRUE
metabolism = REM * 0.5
taste_description = "bitterness"
/singleton/reagent/kelotane/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder)
M.heal_organ_damage(0, 6 * removed)
if(REAGENT_VOLUME(M.reagents, /singleton/reagent/dermaline))
M.add_chemical_effect(CE_ITCH, M.chem_doses[type] * 2)
M.adjustHydrationLoss(2*removed)
M.adjustCloneLoss(2.5*removed) //Cell regeneration spiralling out of control resulting in genetic damage.
if((M.bodytemperature < 192))
var/mob/living/carbon/human/H = M
var/obj/item/organ/external/head = H.get_organ(BP_HEAD)
if(head.disfigured && prob(10))
M.visible_message("<b>[M]</b>'s face begins to contort back into it's original shape.", SPAN_DANGER("You feel a truly disgusting sensation as the skin and muscles of your face twist, crawl and turn."))
head.disfigured = FALSE
/singleton/reagent/kelotane/overdose(var/mob/living/carbon/M, var/alien, var/datum/reagents/holder)
var/mob/living/carbon/human/H = M
var/obj/item/organ/external/head = H.get_organ(BP_HEAD)
if(!(head.disfigured))
if(prob(10))
to_chat(M, SPAN_WARNING(pick("Blisters start forming on your face.", "Your face feels numb.", "Your face feels swollen.", "You face hurts to touch.")))
if(prob(2))
to_chat(M, SPAN_DANGER("Your face has swollen and blistered to such a degree that you are no longer recognisable!"))
head.disfigured = TRUE
/singleton/reagent/dermaline
name = "Dermaline"
description = "Dermaline is a recent improvement of kelotane, working in a similar way, though twice as effective. Dermaline is capable of recovering even the most dire of burnt tissues, being able to treat full-thickness burning."
reagent_state = LIQUID
color = "#FF8000"
taste_description = "bitterness"
fallback_specific_heat = 1
scannable = TRUE
metabolism = REM * 0.5
overdose = 15
taste_mult = 1.5
/singleton/reagent/dermaline/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder)
M.heal_organ_damage(0, 12 * removed)
M.add_chemical_effect(CE_ITCH, M.chem_doses[type])
M.adjustHydrationLoss(1*removed)
/singleton/reagent/dylovene
name = "Dylovene"
description = "Dylovene is a broad-spectrum over-the-counter antitoxin. It is used in response to a variety of poisoning cases, being able to neutralise and remove harmful toxins from the bloodstream."
reagent_state = LIQUID
color = "#00A000"
overdose = REAGENTS_OVERDOSE
scannable = TRUE
metabolism = REM * 0.5
taste_description = "a roll of gauze"
var/remove_generic = TRUE
var/list/remove_toxins = list(
/singleton/reagent/toxin/zombiepowder
)
/singleton/reagent/dylovene/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder)
if(alien == IS_DIONA)
return
if(remove_generic)
M.drowsiness = max(0, M.drowsiness - 6 * removed)
M.hallucination -= (2 * removed)
if(check_min_dose(M, 0.5))
M.add_up_to_chemical_effect(CE_ANTITOXIN, 1)
var/removing = (4 * removed)
var/datum/reagents/ingested = M.get_ingested_reagents()
for(var/_R in ingested.reagent_volumes)
if((remove_generic && ispath(_R, /singleton/reagent/toxin)) || (_R in remove_toxins))
ingested.remove_reagent(_R, removing)
return
for(var/_R in M.reagents.reagent_volumes)
if((remove_generic && ispath(_R, /singleton/reagent/toxin)) || (_R in remove_toxins))
M.reagents.remove_reagent(_R, removing)
return
/singleton/reagent/dylovene/overdose(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder)
M.adjustNutritionLoss(5 * removed)
M.adjustHydrationLoss(5 * removed)
/singleton/reagent/dexalin
name = "Dexalin"
description = "Dexalin is a complex oxygen therapeutic and is available OTC. The chemical utilises carbon nanostructures which cling to oxygen and, in pathological conditions where tissues are hypoxic, will oxygenate these regions. Dexalin is twice as efficient when inhaled."
reagent_state = LIQUID
color = "#0080FF"
overdose = REAGENTS_OVERDOSE
scannable = TRUE
taste_description = "bitterness"
metabolism = REM * 0.75
breathe_met = REM * 0.5
breathe_mul = 2
var/strength = 6
/singleton/reagent/dexalin/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder)
if(check_min_dose(M, 0.5))
M.add_chemical_effect(CE_OXYGENATED, strength/6) // 1 for dexalin, 2 for dexplus
holder.remove_reagent(/singleton/reagent/lexorin, strength/3 * removed)
if(alien == IS_VAURCA) //Vaurca need a mixture of phoron and oxygen. Dexalin likely imbalances that.
M.adjustToxLoss(removed * strength / 2)
M.eye_blurry = max(M.eye_blurry, 5)
//Hyperoxia causes brain and eye damage
/singleton/reagent/dexalin/overdose(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder)
M.add_chemical_effect(CE_NEUROTOXIC, removed*0.5)
if(ishuman(M))
var/mob/living/carbon/human/H = M
var/obj/item/organ/internal/eyes/E = H.get_eyes(no_synthetic = TRUE)
if(E && istype(E))
E.take_damage(removed * (strength / 12))
/singleton/reagent/dexalin/plus
name = "Dexalin Plus"
fallback_specific_heat = 1
description = "Dexalin Plus was a ground-breaking improvement of Dexalin, capable of transporting several times the amount of oxygen, allowing it to have more clinical uses in treating hypoxia. Dexalin Plus is twice as efficient when inhaled."
color = "#0040FF"
overdose = 15
strength = 12
/singleton/reagent/tricordrazine
name = "Tricordrazine"
description = "Tricordrazine is an old, though still useful, medication largely set aside following bicaridine and kelotane's development. The drug increases the rate at which tissues regenerate, though far slower than modern medications."
reagent_state = LIQUID
color = "#8040FF"
overdose = 30
scannable = TRUE
fallback_specific_heat = 1
taste_description = "bitterness"
breathe_mul = 0
metabolism = REM * 0.25
/singleton/reagent/tricordrazine/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder)
var/power = 1 + Clamp((holder.get_temperature() - (T0C + 20))*0.1,-0.5,0.5)
//Heals 10% more brute and less burn for every 1 celcius above 20 celcius, up 50% more/less.
//Heals 10% more burn and less brute for every 1 celcius below 20 celcius, up to 50% more/less.
M.heal_organ_damage(3 * removed * power,3 * removed * power)
/singleton/reagent/tricordrazine/overdose(var/mob/living/carbon/M, var/alien, var/datum/reagents/holder)
M.add_chemical_effect(CE_ITCH, M.chem_doses[type])
/singleton/reagent/cryoxadone
name = "Cryoxadone"
description = "Cryoxadone is a ground-breaking and complex medication that, when acting on bodies cooler than 170K, is capable of increasing the rate at which wounds regenerate, as well as treating genetic damage. Cryoxadone, alongside Clonexadone, are the backbones of the cloning industry."
reagent_state = LIQUID
color = "#8080FF"
metabolism = REM*3 //0.6u/t
overdose = 5
scannable = TRUE
taste_description = "sludge"
/singleton/reagent/cryoxadone/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder)
M.add_chemical_effect(CE_CRYO, 1)
if(M.bodytemperature < 170 && !M.is_diona() && (REAGENT_VOLUME(holder, type) < overdose))
M.add_chemical_effect(CE_PULSE, -2)
M.add_chemical_effect(CE_OXYGENATED, 1)
M.adjustCloneLoss(-100 * removed)
M.heal_organ_damage(30 * removed, 30 * removed)
if(ishuman(M))
var/mob/living/carbon/human/H = M
for(var/obj/item/organ/internal/I in H.internal_organs)
if(!BP_IS_ROBOTIC(I))
if(I.organ_tag == BP_BRAIN)
if(I.damage > I.max_damage/2) //will only treat brain activity above 50% brain activity
continue
I.heal_damage(4*removed)
else if(M.is_diona() && M.bodytemperature < 170)
M.adjustFireLoss(5 * removed)//Cryopods kill diona. This damage combines with the normal cold temp damage, and their disabled regen
/singleton/reagent/cryoxadone/overdose(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder)
M.adjustCloneLoss(10*removed) //'genetic healing' spirals out of control.
M.add_chemical_effect(CE_OCULOTOXIC, 4*removed)
/singleton/reagent/clonexadone
name = "Clonexadone"
description = "Clonexadone is a ground-breaking, complex medication that improved upon Cryoxadone. When acting on bodies cooler than 170K, the drug is capable of increasing the rate at which wounds regenerate, as well as treating genetic damage. Clonexadone, alongside Cryoxadone, are the backbones of the cloning industry."
reagent_state = LIQUID
color = "#80BFFF"
metabolism = REM*2 //0.4u/t
overdose = 5
scannable = TRUE
taste_description = "slime"
/singleton/reagent/clonexadone/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder)
M.add_chemical_effect(CE_CRYO, 1)
if(M.bodytemperature < 170 && !M.is_diona() && (REAGENT_VOLUME(holder, type) < overdose))
M.add_chemical_effect(CE_PULSE, -2)
M.add_chemical_effect(CE_OXYGENATED, 2)
M.adjustCloneLoss(-300 * removed)
M.heal_organ_damage(50 * removed, 50 * removed)
if(ishuman(M))
var/mob/living/carbon/human/H = M
for(var/obj/item/organ/internal/I in H.internal_organs)
if(!BP_IS_ROBOTIC(I))
if(I.organ_tag == BP_BRAIN)
if(I.damage > I.max_damage/2) //will only treat brain activity above 50% brain activity
continue
I.heal_damage(4*removed)
else if(M.is_diona() && M.bodytemperature < 170)
M.adjustFireLoss(15 * removed)//Cryopods kill diona. This damage combines with the normal cold temp damage, and their disabled regen
/singleton/reagent/clonexadone/overdose(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder)
M.adjustCloneLoss(20*removed) //'genetic healing' spirals out of control.
M.add_chemical_effect(CE_OCULOTOXIC, 8*removed)
/* Painkillers */
/singleton/reagent/perconol
name = "Perconol"
description = "Perconol is an advanced, analgesic medication which is highly effective at treating minor-mild pain, inflammation and high fevers. The drug is available over-the-counter for treating minor illnesses and mild pain. Perconol is not effective when inhaled."
reagent_state = LIQUID
color = "#C8A5DC"
overdose = REAGENTS_OVERDOSE
od_minimum_dose = 2
scannable = TRUE
metabolism = REM/10 // same as before when in blood, 0.02 units per tick
ingest_met = REM / 3 // Should be 0.06 units per tick
breathe_met = REM * 4 // .8 units per tick
taste_description = "sickness"
metabolism_min = 0.005
breathe_mul = 0
/singleton/reagent/perconol/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder)
if(check_min_dose(M))
M.add_chemical_effect(CE_PAINKILLER, 35)
M.add_up_to_chemical_effect(CE_NOFEVER, 5) //Good enough to handle fevers for a few light infections or one bad one.
/singleton/reagent/perconol/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder)
if(check_min_dose(M))
M.add_chemical_effect(CE_PAINKILLER, 30)
M.add_up_to_chemical_effect(CE_NOFEVER, 5) //Good enough to handle fevers for a few light infections or one bad one.
/singleton/reagent/perconol/overdose(var/mob/living/carbon/M, var/alien, var/datum/reagents/holder)
..()
M.hallucination = max(M.hallucination, 25)
/singleton/reagent/mortaphenyl
name = "Mortaphenyl"
description = "Mortaphenyl is an advanced, powerful analgesic medication which is highly effective at treating mild-severe pain as a result of severe, physical injury. Mortaphenyl is not effective when inhaled."
reagent_state = LIQUID
color = "#CB68FC"
overdose = 15
scannable = TRUE
od_minimum_dose = 2
metabolism = REM / 3.33 // 0.06ish units per tick
ingest_met = REM / 2.3 // Should be 0.08 units per tick
breathe_met = REM * 4 // .8 units per tick
taste_description = "sourness"
metabolism_min = 0.005
breathe_mul = 0
/singleton/reagent/mortaphenyl/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder)
var/list/joy_messages = list("You feel soothed and at ease.", "You feel content and at peace.", "You feel a pleasant emptiness.", "You feel like sharing the wonderful memories and feelings you're experiencing.", "All your anxieties fade away.", "You feel like you're floating off the ground.", "You don't want this feeling to end.")
M.notify_message(SPAN_GOOD(pick(joy_messages)), rand(20 SECONDS, 40 SECONDS), key = "morta_affect_blood")
if(check_min_dose(M))
M.add_chemical_effect(CE_PAINKILLER, 50)
if(!M.chem_effects[CE_CLEARSIGHT])
M.eye_blurry = max(M.eye_blurry, 5)
if(!M.chem_effects[CE_STRAIGHTWALK])
M.confused = max(M.confused, 10)
var/mob/living/carbon/human/H = M
if(!istype(H))
return
var/bac = H.get_blood_alcohol()
if(bac >= 0.03)
M.hallucination = max(M.hallucination, bac * 300)
M.add_chemical_effect(CE_EMETIC, M.chem_doses[type]/6)
if(bac >= 0.08)
if(M.losebreath < 15)
M.losebreath++
if(REAGENT_VOLUME(M.reagents, /singleton/reagent/oxycomorphine)) //Straight to overdose.
overdose(M, alien, removed, holder)
/singleton/reagent/mortaphenyl/overdose(var/mob/living/carbon/M, var/alien, var/datum/reagents/holder)
..()
M.hallucination = max(M.hallucination, 40)
M.add_chemical_effect(CE_EMETIC, M.chem_doses[type]/6)
if(M.losebreath < 15)
M.losebreath++
/singleton/reagent/mortaphenyl/aphrodite
name = "Aphrodite"
description = "Aphrodite is the name given to the chemical diona inject into organics soon after biting them. It serves a dual purpose of dulling the pain of the wound, and gathering deep-seated fragments of learned skills and memories, such as languages."
color = "#a59153"
overdose = 10
scannable = TRUE
fallback_specific_heat = 1
taste_description = "euphoric acid"
/singleton/reagent/mortaphenyl/aphrodite/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder)
M.add_chemical_effect(CE_PAINKILLER, 40)
if(!M.chem_effects[CE_CLEARSIGHT])
M.eye_blurry = max(M.eye_blurry, 3)
if(!M.chem_effects[CE_STRAIGHTWALK])
M.confused = max(M.confused, 6)
/singleton/reagent/morphine
name = "Morphine"
description = "Morphine is a very strong medication derived from the opium plant. It is extremely effective at treating severe pain. The drug is highly addictive and sense-numbing. Unlike other painkillers, morphine can be inhaled."
reagent_state = LIQUID
color = "#5c4033"
overdose = 10
od_minimum_dose = 2
specific_heat = 1.2
scannable = TRUE
metabolism = REM / 3.33 // 0.06ish units per tick
ingest_met = REM / 1.5 // Should be 0.13 units per tick
breathe_met = REM * 4 // .8 units per tick
/singleton/reagent/morphine/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder)
var/list/joy_messages = list("You feel soothed and at ease.", "You feel content and at peace.", "You feel a pleasant emptiness.", "You feel like sharing the wonderful memories and feelings you're experiencing.", "All your anxieties fade away.", "You feel like you're floating off the ground.", "You don't want this feeling to end.")
M.notify_message(SPAN_GOOD(pick(joy_messages)), rand(20 SECONDS, 40 SECONDS), key = "morphine_affect_blood")
if(check_min_dose(M))
M.add_chemical_effect(CE_PAINKILLER, 120)
M.add_chemical_effect(CE_SLOWDOWN, 1)
if(!M.chem_effects[CE_CLEARSIGHT])
M.eye_blurry = max(M.eye_blurry, 5)
if(!M.chem_effects[CE_STRAIGHTWALK])
M.confused = max(M.confused, 15)
var/mob/living/carbon/human/H = M
if(!istype(H))
return
var/bac = H.get_blood_alcohol()
if(bac >= 0.02)
M.hallucination = max(M.hallucination, bac * 300)
M.druggy = max(M.druggy, bac * 100)
M.add_chemical_effect(CE_EMETIC, M.chem_doses[type]/6)
if(bac >= 0.04)
if(prob(3))
to_chat(M, SPAN_WARNING(pick("You're having trouble breathing.", "You begin to feel a bit light headed.", "Your breathing is very shallow.", "")))
if(M.losebreath < 15)
M.losebreath++
/singleton/reagent/morphine/overdose(var/mob/living/carbon/M, var/alien, var/datum/reagents/holder)
..()
M.druggy = max(M.druggy, 20)
M.add_chemical_effect(CE_EMETIC, M.chem_doses[type]/6)
if(M.losebreath < 15)
M.losebreath++
if(prob(30))
M.seizure(rand(2,3))
/singleton/reagent/tramarine
name = "Tramarine"
description = "Tramarine is a synthetic form of morphine developed by NanoTrasen early in its history, that can be used in its place for most medical purposes. It is known to be more dangerous however with alcohol, other opiods, or an overdose."
reagent_state = LIQUID
color = "#c4a05d"
overdose = 15
od_minimum_dose = 2
scannable = TRUE
metabolism = REM / 3.33 // 0.06ish units per tick
ingest_met = REM / 1.5 // Should be 0.13 units per tick
breathe_met = REM * 4 // .8 units per tick
/singleton/reagent/tramarine/initial_effect(var/mob/living/carbon/human/M, var/alien, var/holder)
to_chat(M, SPAN_GOOD(pick("You lean back and begin to fall... and fall... and fall.", "A feeling of ecstasy builds within you.", "You're startled by just how amazing you suddenly feel.")))
/singleton/reagent/tramarine/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder)
if(prob(3))
to_chat(M, SPAN_GOOD(pick("You feel soothed and at ease.", "You feel content and at peace.", "You feel a pleasant emptiness.", "You feel like sharing the wonderful memories and feelings you're experiencing.", "All your anxieties fade away.", "You feel like you're floating off the ground.", "You don't want this feeling to end.")))
if(check_min_dose(M))
M.add_chemical_effect(CE_PAINKILLER, 90)
M.add_chemical_effect(CE_SLOWDOWN, 2)
if(!M.chem_effects[CE_CLEARSIGHT])
M.eye_blurry = max(M.eye_blurry, 5)
if(!M.chem_effects[CE_STRAIGHTWALK])
M.confused = max(M.confused, 15)
if(prob(7))
M.emote(pick("twitch", "drool", "moan", "gasp"))
var/mob/living/carbon/human/H = M
if(!istype(H))
return
var/bac = H.get_blood_alcohol()
if(bac >= 0.02)
M.hallucination = max(M.hallucination, bac * 300)
M.druggy = max(M.druggy, bac * 100)
M.add_chemical_effect(CE_EMETIC, M.chem_doses[type]/6)
if(bac >= 0.04)
if(prob(3))
to_chat(M, SPAN_WARNING(pick("You're having trouble breathing.", "You begin to feel a bit light headed.", "Your breathing is very shallow.", "")))
if(M.losebreath < 15)
M.losebreath++
M.bodytemperature = max(M.bodytemperature + 1 * TEMPERATURE_DAMAGE_COEFFICIENT, 0)
M.add_chemical_effect(CE_PULSE, 2)
if(prob(3))
to_chat(M, SPAN_WARNING(pick("You feel so hot...", "Why is it so hot!?")))
/singleton/reagent/tramarine/overdose(mob/living/carbon/M, alien, datum/reagents/holder)
..()
M.druggy = max(M.druggy, 20)
M.add_chemical_effect(CE_EMETIC, M.chem_doses[type]/6)
if(M.losebreath < 15)
M.losebreath++
M.bodytemperature = max(M.bodytemperature + 1 * TEMPERATURE_DAMAGE_COEFFICIENT, 0)
M.add_chemical_effect(CE_PULSE, 2)
if(prob(3))
to_chat(M, SPAN_WARNING(pick("You feel so hot...", "Why is it so hot!?")))
M.make_jittery(10)
M.dizziness = max(150, M.dizziness)
M.make_dizzy(10)
if(prob(30))
M.seizure(rand(2,3))
/singleton/reagent/oxycomorphine
name = "Oxycomorphine"
description = "Oxycomorphine is a highly advanced, powerful analgesic medication which is extremely effective at treating severe-agonising pain as a result of injuries usually incompatible with life. The drug is highly addictive and sense-numbing. Unlike other painkillers, oxycomorphine can be inhaled."
reagent_state = LIQUID
color = "#800080"
overdose = 10
od_minimum_dose = 2
scannable = TRUE
metabolism = REM / 3.33 // 0.06ish units per tick
ingest_met = REM / 1.5 // Should be 0.13 units per tick
breathe_met = REM * 4 // .8 units per tick
taste_description = "bitterness"
metabolism_min = 0.005
/singleton/reagent/oxycomorphine/initial_effect(var/mob/living/carbon/human/M, var/alien, var/holder)
to_chat(M, SPAN_GOOD(pick("You lean back and begin to fall... and fall... and fall.", "A feeling of ecstasy builds within you.", "You're startled by just how amazing you suddenly feel.")))
/singleton/reagent/oxycomorphine/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder)
if(prob(3))
to_chat(M, SPAN_GOOD(pick("You feel soothed and at ease.", "You feel content and at peace.", "You feel a pleasant emptiness.", "You feel like sharing the wonderful memories and feelings you're experiencing.", "All your anxieties fade away.", "You feel like you're floating off the ground.", "You don't want this feeling to end.")))
if(check_min_dose(M))
M.add_chemical_effect(CE_PAINKILLER, 200)
M.add_chemical_effect(CE_SLOWDOWN, 2)
if(!M.chem_effects[CE_CLEARSIGHT])
M.eye_blurry = max(M.eye_blurry, 5)
if(!M.chem_effects[CE_STRAIGHTWALK])
M.confused = max(M.confused, 20)
var/mob/living/carbon/human/H = M
if(!istype(H))
return
var/bac = H.get_blood_alcohol()
if(bac >= 0.02)
M.hallucination = max(M.hallucination, bac * 300)
M.druggy = max(M.druggy, bac * 100)
M.add_chemical_effect(CE_EMETIC, M.chem_doses[type]/6)
if(bac >= 0.04)
if(prob(3))
to_chat(M, SPAN_WARNING(pick("You're having trouble breathing.", "You begin to feel a bit light headed.", "Your breathing is very shallow.", "")))
if(M.losebreath < 15)
M.losebreath++
/singleton/reagent/oxycomorphine/overdose(var/mob/living/carbon/M, var/alien, var/datum/reagents/holder)
..()
M.druggy = max(M.druggy, 20)
M.hallucination = max(M.hallucination, 60)
M.add_chemical_effect(CE_EMETIC, M.chem_doses[type]/6)
if(M.losebreath < 15)
M.losebreath++
/* Other medicine */
/singleton/reagent/synaptizine
name = "Synaptizine"
description = "Synaptizine is an advanced synaptic stimulant and nootropic which improves synaptic transmission and keeps one alert, giving it many clinical uses in the treatment of paralysis, weakness, narcolepsy and hallucinations. Synaptizine is difficult to metabolise and is hard on the liver."
reagent_state = LIQUID
color = "#99CCFF"
metabolism = REM * 0.05
overdose = 10
od_minimum_dose = 1
scannable = TRUE
taste_description = "bitterness"
metabolism_min = REM * 0.0125
/singleton/reagent/synaptizine/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder)
M.drowsiness = max(M.drowsiness - 5, 0)
if(REAGENT_VOLUME(holder, type) < 10) // Will prevent synaptizine interrupting a seizure caused by its own overdose.
M.AdjustParalysis(-1)
M.AdjustStunned(-1)
M.AdjustWeakened(-1)
holder.remove_reagent(/singleton/reagent/drugs/mindbreaker, 5)
M.hallucination = max(0, M.hallucination - 10)
M.eye_blurry = max(M.eye_blurry - 5, 0)
M.confused = max(M.confused - 10, 0)
/singleton/reagent/synaptizine/affect_chem_effect(var/mob/living/carbon/M, var/alien, var/removed)
. = ..()
if(.)
M.add_chemical_effect(CE_CLEARSIGHT)
M.add_chemical_effect(CE_STRAIGHTWALK)
M.add_chemical_effect(CE_PAINKILLER, 30)
M.add_chemical_effect(CE_HALLUCINATE, -1)
M.add_up_to_chemical_effect(CE_ADRENALINE, 1)
M.add_chemical_effect(CE_BLOODTHIN, 25)
/singleton/reagent/synaptizine/overdose(var/mob/living/carbon/M, var/alien, var/datum/reagents/holder)
if(prob(M.chem_doses[type] / 2))
to_chat(M, SPAN_WARNING(pick("You feel a tingly sensation in your body.", "You can smell something unusual.", "You can taste something unusual.")))
if(prob(M.chem_doses[type] / 3))
if(prob(75))
M.emote(pick("twitch", "shiver"))
else
M.seizure(rand(1,2))
/singleton/reagent/alkysine
name = "Alkysine"
description = "Alkysine is a complex drug which increases cerebral circulation, ensuring the brain does not become hypoxic and increasing the rate at which neurological function returns after a catastrophic injury."
reagent_state = LIQUID
color = "#FFFF66"
metabolism = REM //0.2u/tick
overdose = 10
scannable = TRUE
taste_description = "bitterness"
metabolism_min = REM * 0.075
/singleton/reagent/alkysine/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder)
if(check_min_dose(M, 2)) //Increased effectiveness & no side-effects if given via IV drip with low transfer rate.
if(prob(M.chem_doses[type]))
to_chat(M, SPAN_WARNING(pick("Everything is spinning!", "The room won't stop moving...", "You lose track of your thoughts.")))
M.dizziness = max(125, M.dizziness)
M.make_dizzy(5)
if(!(REAGENT_VOLUME(holder, type) > 10)) //Prevents doubling up with overdose
M.confused = max(M.confused, 10)
M.slurring = max(M.slurring, 50)
/singleton/reagent/alkysine/affect_chem_effect(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder)
. = ..()
if(.)
M.add_chemical_effect(CE_STRAIGHTWALK)
if(REAGENT_VOLUME(holder, type) < 2) //Increased effectiveness & no side-effects if given via IV drip with low transfer rate.
M.add_chemical_effect(CE_BRAIN_REGEN, 40) //1 unit of Alkysine fed via drip at a low transfer rate will raise activity by 10%.
else
M.add_chemical_effect(CE_BRAIN_REGEN, 30) //1 unit of Alkysine will raise brain activity by 7.5%.
M.add_chemical_effect(CE_PAINKILLER, 10)
/singleton/reagent/alkysine/overdose(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder)
M.hallucination = max(M.hallucination, 50)
M.add_chemical_effect(CE_UNDEXTROUS)
if(prob(M.chem_doses[type]))
to_chat(M, SPAN_WARNING(pick("You lose motor control for a moment!", "Your body seizes up!")))
M.paralysis = max(M.paralysis, 3 SECONDS)
..()
/singleton/reagent/oculine
name = "Oculine"
description = "Oculine is a complex organ-regenerative medication which increases the rate at which cells can differentiate into those required to recover damage to ocular tissues."
reagent_state = LIQUID
color = "#C8A5DC"
overdose = REAGENTS_OVERDOSE
scannable = TRUE
taste_mult = 0.33 //Specifically to cut the dull toxin taste out of foods using carrot
taste_description = "dull toxin"
/singleton/reagent/oculine/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder)
M.eye_blurry = max(M.eye_blurry - 5 * removed, 0)
M.eye_blind = max(M.eye_blind - 5 * removed, 0)
if(ishuman(M))
var/mob/living/carbon/human/H = M
var/obj/item/organ/internal/eyes/E = H.get_eyes(no_synthetic = TRUE)
if(E && istype(E))
if(E.damage > 0)
E.damage = max(E.damage - 5 * removed, 0)
if(isvaurca(H))
if(E.damage < E.min_broken_damage && H.sdisabilities & BLIND)
H.sdisabilities -= BLIND
/singleton/reagent/oculine/affect_chem_effect(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder)
. = ..()
if(.)
if(check_min_dose(M))
M.add_chemical_effect(CE_CLEARSIGHT)
/singleton/reagent/oculine/overdose(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder)
M.hallucination = max(M.hallucination, 15)
..()
/singleton/reagent/peridaxon
name = "Peridaxon"
description = "Peridaxon is complex, broad-spectrum organ-regenerative medication which increases the rate at which cells can differentiate into organ cells to recover damaged organ tissues. The drug is hard on the body, leading to confusion and drowsiness."
reagent_state = LIQUID
color = "#561EC3"
overdose = 10
scannable = TRUE
taste_description = "bitterness"
/singleton/reagent/peridaxon/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder)
if(ishuman(M))
var/mob/living/carbon/human/H = M
H.add_chemical_effect(CE_CLUMSY, 1)
for(var/obj/item/organ/internal/I in H.internal_organs)
if(I.organ_tag == BP_BRAIN)
if(I.damage >= I.min_bruised_damage)
continue
if((I.damage > 0) && (I.robotic != 2)) //Peridaxon heals only non-robotic organs
var/damage_healed = ((M.bodytemperature < 186) && M.chem_effects[CE_CRYO]) ? 2 : 1 //2x effective if administered in cryogenic conditions
I.damage = max(I.damage - damage_healed*removed, 0)
if((M.bodytemperature < 153) && M.chem_effects[CE_ANTIBIOTIC]) //peridaxon in extracool cryogenic conditions alongside antibiotics will have a chance to de-nercotise liver and kidneys, though will incur overdose symptoms
H.infest_with_parasite(H, BP_TUMOUR_NONSPREADING, pick(H.organs), 10)
for(var/obj/item/organ/internal/O in H.internal_organs)
if((O.organ_tag == BP_LIVER) || (O.organ_tag == BP_KIDNEYS))
if(O.damage && prob(5))
if((O.status & ORGAN_DEAD) && !BP_IS_ROBOTIC(O))
if(O.can_recover())
O.status &= ~ORGAN_DEAD
O.heal_damage(5)
M.visible_message("<b>[M]</b> spasms!", SPAN_DANGER("You feel a stabbing pain!"))
/singleton/reagent/peridaxon/overdose(var/mob/living/carbon/M, var/alien, var/datum/reagents/holder)
M.dizziness = max(150, M.dizziness)
M.make_dizzy(5)
if(REAGENT_VOLUME(M.reagents, /singleton/reagent/ryetalyn))
return
var/mob/living/carbon/human/H = M
H.infest_with_parasite(H, BP_TUMOUR_NONSPREADING, pick(H.organs), 5)
/singleton/reagent/ryetalyn
name = "Ryetalyn"
description = "Ryetalyn is a highly advanced, broad-spectrum medication developed by Dominian scientists, which has varying clinical uses in treating genetic abnormalities including certain cancers, autoimmune conditions, and Hulk Syndrome."
reagent_state = SOLID
color = "#004000"
overdose = REAGENTS_OVERDOSE
taste_description = "acid"
metabolism = REM
metabolism_min = 0.25
/singleton/reagent/ryetalyn/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder)
holder.remove_reagent(/singleton/reagent/toxin/malignant_tumour_cells, 2)
var/needs_mutation_update = M.mutations > 0
M.mutations = 0
M.disabilities = 0
M.sdisabilities = 0
// Might need to update appearance for hulk etc.
if(needs_mutation_update && ishuman(M))
var/mob/living/carbon/human/H = M
H.update_mutations()
/singleton/reagent/hyperzine
name = "Hyperzine"
description = "Hyperzine is a complex cardio-synaptic stimulant drug designed to increase the performance of the body. Downsides include violent muscle spasms and tremors."
reagent_state = LIQUID
color = "#FF3300"
metabolism = REM * 0.15
overdose = 15
var/datum/modifier = null
taste_description = "acid"
metabolism_min = REM * 0.025
breathe_met = REM * 0.15 * 0.5
/singleton/reagent/hyperzine/get_overdose(mob/living/carbon/M, location, datum/reagents/holder)
if(REAGENT_VOLUME(M.reagents, /singleton/reagent/adrenaline) > 5)
return 10 //Volume of hyperzine required to OD reduced from 15u to 10u.
. = ..()
/singleton/reagent/hyperzine/get_od_min_dose(mob/living/carbon/M, location, datum/reagents/holder)
if(REAGENT_VOLUME(M.reagents, /singleton/reagent/adrenaline) > 5)
return 0 // Takes effect instantly.
. = od_minimum_dose
/singleton/reagent/hyperzine/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder)
if(prob(5))
M.emote(pick("twitch", "blink_r", "shiver"))
to_chat(M, SPAN_GOOD(pick("You feel pumped!", "Energy, energy, energy - so much energy!", "You could run a marathon!", "You can't sit still!", "It's difficult to focus right now... but that's not important!")))
if(check_min_dose(M, 0.5))
M.add_chemical_effect(CE_SPEEDBOOST, 1)
M.add_chemical_effect(CE_PULSE, 1)
/singleton/reagent/hyperzine/overdose(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder)
M.adjustNutritionLoss(5*removed)
M.add_chemical_effect(CE_PULSE, 2)
if(prob(5))
to_chat(M, SPAN_DANGER(pick("Your heart is beating rapidly!", "Your chest hurts!", "You've totally over-exerted yourself!")))
if(prob(M.chem_doses[type] / 3))
M.visible_message("<b>[M]</b> twitches violently, grimacing.", "You twitch violently and feel yourself sprain a joint.")
M.take_organ_damage(5 * removed, 0)
M.adjustHalLoss(15)
/singleton/reagent/hyperzine/Destroy()
QDEL_NULL(modifier)
return ..()
#define ETHYL_INTOX_COST 3 //The cost of power to remove one unit of intoxication from the patient
#define ETHYL_REAGENT_POWER 20 //The amount of power in one unit of ethyl
//Ethylredoxrazine will remove a number of units of alcoholic substances from the patient's blood and stomach, equal to its pow
//Once all alcohol in the body is neutralised, it will then cure intoxication and sober the patient up
/singleton/reagent/ethylredoxrazine
name = "Ethylredoxrazine"
description = "Ethylredoxrazine is a powerful medication which oxidises ethanol in the bloodstream, reducing the burden on the liver to complete this task. Ethylredoxrazine also blocks the reuptake of neurotransmitters responsible for symptoms of alcohol intoxication."
reagent_state = SOLID
color = "#605048"
metabolism = REM * 0.3
overdose = REAGENTS_OVERDOSE
scannable = TRUE
taste_description = "bitterness"
/singleton/reagent/ethylredoxrazine/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder)
var/P = removed * ETHYL_REAGENT_POWER
var/DP = M.chem_doses[type] * ETHYL_REAGENT_POWER//tiny optimisation
//These status effects will now take a little while for the dose to build up and remove them
M.dizziness = max(0, M.dizziness - DP)
M.drowsiness = max(0, M.drowsiness - DP)
M.stuttering = max(0, M.stuttering - DP)
M.confused = max(0, M.confused - DP)
var/datum/reagents/ingested = M.get_ingested_reagents()
if(ingested)
for(var/_R in ingested.reagent_volumes)
if(ispath(_R, /singleton/reagent/alcohol))
var/amount = min(P, REAGENT_VOLUME(ingested, _R))
ingested.remove_reagent(_R, amount)
P -= amount
if (P <= 0)
return
//Even though alcohol is not supposed to be injected, ethyl removes it from the blood too,
//as a treatment option if someone was dumb enough to do this
if(M.bloodstr)
for(var/_R in M.bloodstr.reagent_volumes)
if(ispath(_R, /singleton/reagent/alcohol))
var/amount = min(P, REAGENT_VOLUME(M.bloodstr, _R))
M.bloodstr.remove_reagent(_R, amount)
P -= amount
if (P <= 0)
return
if (M.intoxication && P > 0)
var/amount = min(M.intoxication * ETHYL_INTOX_COST, P)
M.intoxication = max(0, (M.intoxication - (amount / ETHYL_INTOX_COST)))
P -= amount
/singleton/reagent/ethylredoxrazine/affect_chem_effect(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder)
. = ..()
if(.)
if(check_min_dose(M))
M.add_chemical_effect(CE_STRAIGHTWALK)
/singleton/reagent/hyronalin
name = "Hyronalin"
description = "Hyronalin is a complex anti-radiation medication which specifically targets ionised cells, reducing their cell division rate to prevent their growth before gradually destroying these afflicted cells."
reagent_state = LIQUID
color = "#408000"
metabolism = REM * 0.25
overdose = REAGENTS_OVERDOSE
scannable = TRUE
taste_description = "bitterness"
unaffected_species = IS_MACHINE
var/last_taste_time = -10000
/singleton/reagent/hyronalin/initialize_data(newdata)
LAZYSET(newdata, "last_taste_time", 0)
return newdata
/singleton/reagent/hyronalin/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder)
if(M.is_diona())
if(holder.reagent_data[type]["last_taste_time"] + 950 < world.time) // Not to spam message
to_chat(M, SPAN_DANGER("Your body withers as you feel a searing pain throughout."))
holder.reagent_data[type]["last_taste_time"] = world.time
//metabolism = REM * 0.22
M.adjustToxLoss(45 * removed * (0.22/0.25)) // Multiplier is to replace the above line
else
M.apply_radiation(-30 * removed)
/singleton/reagent/hyronalin/overdose(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder)
if(prob(60))
M.take_organ_damage(4 * removed, 0) //Hyronaline OD deals brute damage to the same degree as Arithrazine
/singleton/reagent/arithrazine
name = "Arithrazine"
description = "Arithrazine is a recent improvement of Hyronalin, rapidly destroying any ionised cells, though this often leads to collateral cell damage, resulting in contusions across affected parts of the body."
reagent_state = LIQUID
color = "#008000"
metabolism = REM * 0.25
overdose = REAGENTS_OVERDOSE
scannable = TRUE
taste_description = "bitterness"
unaffected_species = IS_MACHINE
/singleton/reagent/arithrazine/initialize_data(newdata)
var/list/data = newdata
LAZYSET(data, "last_taste_time", 0)
return data
/singleton/reagent/arithrazine/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder)
if(M.is_diona())
if(holder.reagent_data[type]["last_taste_time"] + 950 < world.time) // Not to spam message
to_chat(M, SPAN_DANGER("Your body withers as you feel a searing pain throughout."))
holder.reagent_data[type]["last_taste_time"] = world.time
//metabolism = REM * 0.195
M.adjustToxLoss(115 * removed * (0.195/0.25)) // Multiplier is to replace the above line
else
M.apply_radiation(-70 * removed)
M.add_chemical_effect(CE_ITCH, M.chem_doses[type]/2)
if(prob(60))
M.take_organ_damage(4 * removed, 0)
/singleton/reagent/arithrazine/overdose(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder)
if(prob(50))
M.take_organ_damage(6 * removed, 0) //Even more collateral damage dealt by arithrazine when overdosed.
/singleton/reagent/thetamycin
name = "Thetamycin"
description = "Thetamycin is a complex, broad-spectrum antibiotic developed to treat wound infections, organ infections, and septicaemia, even those caused by superbugs with high anti-bacterial resistances."
reagent_state = LIQUID
color = "#41C141"
od_minimum_dose = 1
metabolism = 0.03
breathe_met = REM * 2 // .4 units per tick
// touch is slow
overdose = REAGENTS_OVERDOSE
scannable = TRUE
taste_description = "bitter gauze soaked in rubbing alcohol"
fallback_specific_heat = 0.605 // assuming it's ethanol-based
/singleton/reagent/thetamycin/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder)
M.add_chemical_effect(CE_ANTIBIOTIC, M.chem_doses[type]) // strength of antibiotics; amount absorbed, need >5u dose to begin to be effective which'll take ~5 minutes to metabolise. need >10u dose if administered orally.
/singleton/reagent/thetamycin/overdose(var/mob/living/carbon/M, var/alien, var/datum/reagents/holder)
M.add_chemical_effect(CE_EMETIC, M.chem_doses[type]/8) // chance per 2 second tick to cause vomiting
M.dizziness = max(150, M.dizziness)
M.make_dizzy(5)
/singleton/reagent/steramycin
name = "Steramycin"
description = "A preventative antibiotic that will stop small infections from growing, but only if administered early. Has no effect on internal organs, wounds, or if the infection has grown beyond its early stages."
reagent_state = LIQUID
color = "#81b38b"
od_minimum_dose = 1
overdose = 15
scannable = TRUE
taste_description = "bleach"
fallback_specific_heat = 0.605
/singleton/reagent/steramycin/affect_blood(var/mob/living/carbon/human/M, var/alien, var/removed, var/datum/reagents/holder)
if(check_min_dose(M, 1))
for(var/obj/item/organ/external/E in M.organs)
if(E.germ_level >= INFECTION_LEVEL_ONE || !E.germ_level) //No effect if it's not infected or the infection has progressed.
continue
E.germ_level = max(E.germ_level - 4, 0)
/singleton/reagent/steramycin/overdose(var/mob/living/carbon/M, var/alien, var/datum/reagents/holder)
M.dizziness = max(150, M.dizziness)
M.make_dizzy(5)
M.adjustToxLoss(1) //Antibodies start fighting your body
/singleton/reagent/cytophenolate
name = "Cytophenolate"
description = "A general-purpose immunosuppressant capable of treating organ rejections. Calms down the immune system, but also drastically reduces the effectiveness of antibiotics while in the body, making one more susceptible to infection."
reagent_state = LIQUID
color = "#337758"
od_minimum_dose = 1
overdose = REAGENTS_OVERDOSE
scannable = TRUE
metabolism = REM * 0.25
taste_description = "bitter vegetables"
/singleton/reagent/cytophenolate/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder)
if(check_min_dose(M, 0.25))
M.add_chemical_effect(CE_ANTIIMMUNE, M.chem_doses[type])
/singleton/reagent/cytophenolate/overdose(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder)
to_chat(M, SPAN_WARNING("You feel extremely weak."))
M.dizziness = max(150, M.dizziness)
M.make_dizzy(5)
M.AdjustWeakened(5)
M.add_chemical_effect(CE_EMETIC, M.chem_doses[type]/8)
/singleton/reagent/asinodryl
name = "Asinodryl"
description = "Asinodryl is an anti-emetic medication which acts by preventing the two regions in the brain responsible for vomiting from controlling the act of emesis."
color = "#f5f2d0"
taste_description = "bitterness"
scannable = TRUE
metabolism = REM * 0.25
fallback_specific_heat = 1
/singleton/reagent/asinodryl/affect_chem_effect(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder)
. = ..()
if(.)
M.add_chemical_effect(CE_ANTIEMETIC, M.chem_doses[type]/4) // 1u should suppress 2u thetamycin
M.add_chemical_effect(CE_STRAIGHTWALK)
/singleton/reagent/asinodryl/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder)
if(alien == IS_DIONA)
return
M.confused = max(M.confused - 10, 0)
M.dizziness = max(M.confused - 10, 0)
/singleton/reagent/antidexafen
name = "Antidexafen"
description = "A complex antitussive medication available OTC which is very effective at suppressing cough reflexes. The medication also acts as a very weak analgesic medication, leading to it being a very cheap recreational drug or precursor to other recreational drugs."
scannable = TRUE
reagent_state = LIQUID
taste_description = "cough syrup"
color = "#c8a5dc"
fallback_specific_heat = 0.605 // assuming it's ethanol-based
breathe_met = REM * 2 // .4 units per tick
// touch is slow
glass_name = "glass of cough syrup"
glass_desc = "You'd better not."
/singleton/reagent/antidexafen/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder)
if(check_min_dose(M))
M.add_chemical_effect(CE_PAINKILLER, 5) // very slight painkiller effect at low doses
/singleton/reagent/antidexafen/overdose(var/mob/living/carbon/human/M, var/alien, var/removed, var/datum/reagents/holder) // effects based loosely on DXM
M.hallucination = max(M.hallucination, 40)
M.add_chemical_effect(CE_PAINKILLER, 20) // stronger at higher doses
if(prob(M.chem_doses[type]))
M.vomit()
if(prob(7))
M.emote(pick("twitch", "drool", "moan", "giggle"))
if(prob(7))
M.add_chemical_effect(CE_NEUROTOXIC, 5)