mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2025-12-11 10:43:20 +00:00
Virus2 Refactoring, Part I - Machinery.
-Removed functions already defined in parent classes. -Replaced checks in Topic() with parent class ones. -Removed two unused files (there are duplicates in unused folder anyway) -Removed commented out lines, mostly pre-antibody curing code. -Shuffled code around for better readability (like antibody list) -Moved various devices and items defines to separate file.
This commit is contained in:
@@ -1251,6 +1251,13 @@
|
|||||||
#include "code\modules\surgery\ribcage.dm"
|
#include "code\modules\surgery\ribcage.dm"
|
||||||
#include "code\modules\surgery\robolimbs.dm"
|
#include "code\modules\surgery\robolimbs.dm"
|
||||||
#include "code\modules\surgery\surgery.dm"
|
#include "code\modules\surgery\surgery.dm"
|
||||||
|
#include "code\modules\virus2\analyser.dm"
|
||||||
|
#include "code\modules\virus2\antibodies.dm"
|
||||||
|
#include "code\modules\virus2\base.dm"
|
||||||
|
#include "code\modules\virus2\curer.dm"
|
||||||
|
#include "code\modules\virus2\diseasesplicer.dm"
|
||||||
|
#include "code\modules\virus2\dishincubator.dm"
|
||||||
|
#include "code\modules\virus2\isolator.dm"
|
||||||
#include "code\WorkInProgress\autopsy.dm"
|
#include "code\WorkInProgress\autopsy.dm"
|
||||||
#include "code\WorkInProgress\buildmode.dm"
|
#include "code\WorkInProgress\buildmode.dm"
|
||||||
#include "code\WorkInProgress\explosion_particles.dm"
|
#include "code\WorkInProgress\explosion_particles.dm"
|
||||||
@@ -1306,13 +1313,6 @@
|
|||||||
#include "code\WorkInProgress\SkyMarshal\officer_stuff.dm"
|
#include "code\WorkInProgress\SkyMarshal\officer_stuff.dm"
|
||||||
#include "code\WorkInProgress\SkyMarshal\Ultralight_procs.dm"
|
#include "code\WorkInProgress\SkyMarshal\Ultralight_procs.dm"
|
||||||
#include "code\WorkInProgress\Susan\susan_desert_turfs.dm"
|
#include "code\WorkInProgress\Susan\susan_desert_turfs.dm"
|
||||||
#include "code\WorkInProgress\virus2\analyser.dm"
|
|
||||||
#include "code\WorkInProgress\virus2\antibodies.dm"
|
|
||||||
#include "code\WorkInProgress\virus2\base.dm"
|
|
||||||
#include "code\WorkInProgress\virus2\curer.dm"
|
|
||||||
#include "code\WorkInProgress\virus2\diseasesplicer.dm"
|
|
||||||
#include "code\WorkInProgress\virus2\dishincubator.dm"
|
|
||||||
#include "code\WorkInProgress\virus2\isolator.dm"
|
|
||||||
#include "code\ZAS\Airflow.dm"
|
#include "code\ZAS\Airflow.dm"
|
||||||
#include "code\ZAS\Connection.dm"
|
#include "code\ZAS\Connection.dm"
|
||||||
#include "code\ZAS\Debug.dm"
|
#include "code\ZAS\Debug.dm"
|
||||||
|
|||||||
@@ -14,19 +14,14 @@
|
|||||||
if(istype(I,/obj/item/weapon/virusdish))
|
if(istype(I,/obj/item/weapon/virusdish))
|
||||||
var/mob/living/carbon/c = user
|
var/mob/living/carbon/c = user
|
||||||
if(!dish)
|
if(!dish)
|
||||||
|
|
||||||
dish = I
|
dish = I
|
||||||
c.drop_item()
|
c.drop_item()
|
||||||
I.loc = src
|
I.loc = src
|
||||||
for(var/mob/M in viewers(src))
|
for(var/mob/M in viewers(src))
|
||||||
if(M == user) continue
|
if(M == user) continue
|
||||||
M.show_message("\blue [user.name] inserts the [dish.name] in the [src.name]", 3)
|
M.show_message("\blue [user.name] inserts the [dish.name] in the [src.name]", 3)
|
||||||
|
|
||||||
|
|
||||||
else
|
else
|
||||||
user << "There is already a dish inserted"
|
user << "There is already a dish inserted"
|
||||||
|
|
||||||
//else
|
|
||||||
return
|
return
|
||||||
|
|
||||||
|
|
||||||
@@ -34,8 +29,6 @@
|
|||||||
if(stat & (NOPOWER|BROKEN))
|
if(stat & (NOPOWER|BROKEN))
|
||||||
return
|
return
|
||||||
use_power(500)
|
use_power(500)
|
||||||
//src.updateDialog()
|
|
||||||
|
|
||||||
|
|
||||||
if(scanning)
|
if(scanning)
|
||||||
scanning -= 1
|
scanning -= 1
|
||||||
@@ -46,10 +39,8 @@
|
|||||||
r += "<BR>Progress Speed : [dish.virus2.stageprob * 10]"
|
r += "<BR>Progress Speed : [dish.virus2.stageprob * 10]"
|
||||||
for(var/datum/disease2/effectholder/E in dish.virus2.effects)
|
for(var/datum/disease2/effectholder/E in dish.virus2.effects)
|
||||||
r += "<BR>Effect:[E.effect.name]. Strength : [E.multiplier * 8]. Verosity : [E.chance * 15]. Type : [5-E.stage]."
|
r += "<BR>Effect:[E.effect.name]. Strength : [E.multiplier * 8]. Verosity : [E.chance * 15]. Type : [5-E.stage]."
|
||||||
// display the antigens
|
|
||||||
var/code = ""
|
r += "<BR>Antigen pattern: [antigens2string(dish.virus2.antigen)]"
|
||||||
for(var/V in ANTIGENS) if(text2num(V) & dish.virus2.antigen) code += ANTIGENS[V]
|
|
||||||
r += "<BR>Antigen pattern: [code]"
|
|
||||||
|
|
||||||
var/obj/item/weapon/paper/P = new /obj/item/weapon/paper(src.loc)
|
var/obj/item/weapon/paper/P = new /obj/item/weapon/paper(src.loc)
|
||||||
P.info = r
|
P.info = r
|
||||||
@@ -59,8 +50,8 @@
|
|||||||
dish = null
|
dish = null
|
||||||
icon_state = "analyser"
|
icon_state = "analyser"
|
||||||
|
|
||||||
for(var/mob/O in hearers(src, null))
|
M.state("\The [src.name] prints a sheet of paper")
|
||||||
O.show_message("\icon[src] \blue The [src.name] prints a sheet of paper", 3)
|
|
||||||
else if(dish && !scanning && !pause)
|
else if(dish && !scanning && !pause)
|
||||||
if(dish.virus2 && dish.growth > 50)
|
if(dish.virus2 && dish.growth > 50)
|
||||||
dish.growth -= 10
|
dish.growth -= 10
|
||||||
@@ -71,8 +62,6 @@
|
|||||||
spawn(25)
|
spawn(25)
|
||||||
dish.loc = src.loc
|
dish.loc = src.loc
|
||||||
dish = null
|
dish = null
|
||||||
for(var/mob/M in viewers(src))
|
M.state("\The [src.name] buzzes")
|
||||||
M.show_message("\icon[src] \blue The [src.name] buzzes", 2)
|
|
||||||
pause = 0
|
pause = 0
|
||||||
|
|
||||||
return
|
return
|
||||||
@@ -1,23 +1,5 @@
|
|||||||
//This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:33
|
//This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:33
|
||||||
|
|
||||||
// pure concentrated antibodies
|
|
||||||
datum/reagent/antibodies
|
|
||||||
data = new/list("antibodies"=0)
|
|
||||||
name = "Antibodies"
|
|
||||||
id = "antibodies"
|
|
||||||
reagent_state = LIQUID
|
|
||||||
color = "#0050F0"
|
|
||||||
|
|
||||||
reaction_mob(var/mob/M, var/method=TOUCH, var/volume)
|
|
||||||
if(istype(M,/mob/living/carbon))
|
|
||||||
if(src.data && method == INGEST)
|
|
||||||
if(M:virus2) if(src.data["antibodies"] & M:virus2.antigen)
|
|
||||||
M:virus2.dead = 1
|
|
||||||
// if the virus is killed this way it immunizes
|
|
||||||
// M:antibodies |= M:virus2.antigen
|
|
||||||
M:antibodies |= src.data["antibodies"]
|
|
||||||
return
|
|
||||||
|
|
||||||
// reserving some numbers for later special antigens
|
// reserving some numbers for later special antigens
|
||||||
var/global/const/ANTIGEN_A = 1
|
var/global/const/ANTIGEN_A = 1
|
||||||
var/global/const/ANTIGEN_B = 2
|
var/global/const/ANTIGEN_B = 2
|
||||||
@@ -33,26 +15,38 @@ var/global/const/ANTIGEN_N = 1024
|
|||||||
var/global/const/ANTIGEN_P = 2048
|
var/global/const/ANTIGEN_P = 2048
|
||||||
var/global/const/ANTIGEN_O = 4096
|
var/global/const/ANTIGEN_O = 4096
|
||||||
|
|
||||||
var/global/list/ANTIGENS = list("[ANTIGEN_A]" = "A", "[ANTIGEN_B]" = "B", "[ANTIGEN_RH]" = "RH", "[ANTIGEN_Q]" = "Q",
|
var/global/list/ANTIGENS = list(
|
||||||
"[ANTIGEN_U]" = "U", "[ANTIGEN_V]" = "V", "[ANTIGEN_Z]" = "Z", "[ANTIGEN_M]" = "M",
|
"[ANTIGEN_A]" = "A",
|
||||||
"[ANTIGEN_N]" = "N", "[ANTIGEN_P]" = "P", "[ANTIGEN_O]" = "O")
|
"[ANTIGEN_B]" = "B",
|
||||||
|
"[ANTIGEN_RH]" = "RH",
|
||||||
|
"[ANTIGEN_Q]" = "Q",
|
||||||
|
"[ANTIGEN_U]" = "U",
|
||||||
|
"[ANTIGEN_V]" = "V",
|
||||||
|
"[ANTIGEN_Z]" = "Z",
|
||||||
|
"[ANTIGEN_M]" = "M",
|
||||||
|
"[ANTIGEN_N]" = "N",
|
||||||
|
"[ANTIGEN_P]" = "P",
|
||||||
|
"[ANTIGEN_O]" = "O"
|
||||||
|
)
|
||||||
|
|
||||||
|
// pure concentrated antibodies
|
||||||
|
datum/reagent/antibodies
|
||||||
|
data = list("antibodies"=0)
|
||||||
|
name = "Antibodies"
|
||||||
|
id = "antibodies"
|
||||||
|
reagent_state = LIQUID
|
||||||
|
color = "#0050F0"
|
||||||
|
|
||||||
|
reaction_mob(var/mob/M, var/method=TOUCH, var/volume)
|
||||||
|
if(istype(M,/mob/living/carbon))
|
||||||
|
if(src.data && method == INGEST)
|
||||||
|
if(M:virus2) if(src.data["antibodies"] & M:virus2.antigen)
|
||||||
|
M:virus2.dead = 1
|
||||||
|
M:antibodies |= src.data["antibodies"]
|
||||||
|
return
|
||||||
|
|
||||||
/obj/item/device/antibody_scanner
|
// iterate over the list of antigens and see what matches
|
||||||
name = "Antibody Scanner"
|
/proc/antigens2string(var/antigens)
|
||||||
desc = "Used to scan living beings for antibodies in their blood."
|
var/code = ""
|
||||||
icon_state = "health"
|
for(var/V in ANTIGENS) if(text2num(V) & antigens) code += ANTIGENS[V]
|
||||||
w_class = 2.0
|
return code
|
||||||
item_state = "electronic"
|
|
||||||
flags = FPRINT | TABLEPASS | CONDUCT | USEDELAY
|
|
||||||
|
|
||||||
|
|
||||||
/obj/item/device/antibody_scanner/attack(mob/living/carbon/human/M as mob, mob/user as mob)
|
|
||||||
if(! istype(M, /mob/living/carbon) || !M:antibodies)
|
|
||||||
user << "Unable to detect antibodies.."
|
|
||||||
else
|
|
||||||
// iterate over the list of antigens and see what matches
|
|
||||||
var/code = ""
|
|
||||||
for(var/V in ANTIGENS) if(text2num(V) & M.antibodies) code += ANTIGENS[V]
|
|
||||||
user << text("\blue [src] The antibody scanner displays a cryptic set of data: [code]")
|
|
||||||
@@ -1,43 +0,0 @@
|
|||||||
/obj/item/weapon/cureimplanter
|
|
||||||
name = "Hypospray injector"
|
|
||||||
icon = 'items.dmi'
|
|
||||||
icon_state = "implanter1"
|
|
||||||
var/datum/disease2/resistance/resistance = null
|
|
||||||
var/works = 0
|
|
||||||
var/datum/disease2/disease/virus2 = null
|
|
||||||
item_state = "syringe_0"
|
|
||||||
throw_speed = 1
|
|
||||||
throw_range = 5
|
|
||||||
w_class = 2.0
|
|
||||||
|
|
||||||
|
|
||||||
/obj/item/weapon/cureimplanter/attack(mob/target as mob, mob/user as mob)
|
|
||||||
if(ismob(target))
|
|
||||||
for(var/mob/O in viewers(world.view, user))
|
|
||||||
if (target != user)
|
|
||||||
O.show_message(text("\red <B>[] is trying to inject [] with [src.name]!</B>", user, target), 1)
|
|
||||||
else
|
|
||||||
O.show_message("\red <B>[user] is trying to inject themselves with [src.name]!</B>", 1)
|
|
||||||
if(!do_mob(user, target,60)) return
|
|
||||||
|
|
||||||
|
|
||||||
for(var/mob/O in viewers(world.view, user))
|
|
||||||
if (target != user)
|
|
||||||
O.show_message(text("\red [] injects [] with [src.name]!", user, target), 1)
|
|
||||||
else
|
|
||||||
O.show_message("\red [user] injects themself with [src.name]!", 1)
|
|
||||||
|
|
||||||
|
|
||||||
var/mob/living/carbon/M = target
|
|
||||||
|
|
||||||
if(works == 0)
|
|
||||||
M.resistances2 += resistance
|
|
||||||
//M.immunevirus2 += M.virus2.getcopy()
|
|
||||||
if(M.virus2)
|
|
||||||
M.virus2.cure_added(resistance)
|
|
||||||
else if(works == 1)
|
|
||||||
M.adjustToxLoss(60)
|
|
||||||
else if(works == 2)
|
|
||||||
M.gib()
|
|
||||||
else if(works == 3)
|
|
||||||
infect_virus2(M,virus2,1)
|
|
||||||
@@ -9,31 +9,7 @@
|
|||||||
|
|
||||||
/obj/machinery/computer/curer/attackby(var/obj/I as obj, var/mob/user as mob)
|
/obj/machinery/computer/curer/attackby(var/obj/I as obj, var/mob/user as mob)
|
||||||
if(istype(I, /obj/item/weapon/screwdriver))
|
if(istype(I, /obj/item/weapon/screwdriver))
|
||||||
playsound(src.loc, 'sound/items/Screwdriver.ogg', 50, 1)
|
return ..(I,user)
|
||||||
if(do_after(user, 20))
|
|
||||||
if (src.stat & BROKEN)
|
|
||||||
user << "\blue The broken glass falls out."
|
|
||||||
var/obj/structure/computerframe/A = new /obj/structure/computerframe( src.loc )
|
|
||||||
new /obj/item/weapon/shard( src.loc )
|
|
||||||
//var/obj/item/weapon/circuitboard/curer/M = new /obj/item/weapon/circuitboard/curer( A )
|
|
||||||
for (var/obj/C in src)
|
|
||||||
C.loc = src.loc
|
|
||||||
//A.circuit = M
|
|
||||||
A.state = 3
|
|
||||||
A.icon_state = "3"
|
|
||||||
A.anchored = 1
|
|
||||||
del(src)
|
|
||||||
else
|
|
||||||
user << "\blue You disconnect the monitor."
|
|
||||||
var/obj/structure/computerframe/A = new /obj/structure/computerframe( src.loc )
|
|
||||||
//var/obj/item/weapon/circuitboard/curer/M = new /obj/item/weapon/circuitboard/curer( A )
|
|
||||||
for (var/obj/C in src)
|
|
||||||
C.loc = src.loc
|
|
||||||
//A.circuit = M
|
|
||||||
A.state = 4
|
|
||||||
A.icon_state = "4"
|
|
||||||
A.anchored = 1
|
|
||||||
del(src)
|
|
||||||
if(istype(I,/obj/item/weapon/reagent_containers))
|
if(istype(I,/obj/item/weapon/reagent_containers))
|
||||||
var/mob/living/carbon/C = user
|
var/mob/living/carbon/C = user
|
||||||
if(!container)
|
if(!container)
|
||||||
@@ -55,7 +31,6 @@
|
|||||||
|
|
||||||
state("The [src.name] Buzzes", "blue")
|
state("The [src.name] Buzzes", "blue")
|
||||||
return
|
return
|
||||||
//else
|
|
||||||
src.attack_hand(user)
|
src.attack_hand(user)
|
||||||
return
|
return
|
||||||
|
|
||||||
@@ -102,7 +77,6 @@
|
|||||||
if(stat & (NOPOWER|BROKEN))
|
if(stat & (NOPOWER|BROKEN))
|
||||||
return
|
return
|
||||||
use_power(500)
|
use_power(500)
|
||||||
//src.updateDialog()
|
|
||||||
|
|
||||||
if(curing)
|
if(curing)
|
||||||
curing -= 1
|
curing -= 1
|
||||||
@@ -114,16 +88,15 @@
|
|||||||
/obj/machinery/computer/curer/Topic(href, href_list)
|
/obj/machinery/computer/curer/Topic(href, href_list)
|
||||||
if(..())
|
if(..())
|
||||||
return
|
return
|
||||||
if ((usr.contents.Find(src) || (in_range(src, usr) && istype(src.loc, /turf))) || (istype(usr, /mob/living/silicon)))
|
usr.machine = src
|
||||||
usr.machine = src
|
|
||||||
|
|
||||||
if (href_list["antibody"])
|
if (href_list["antibody"])
|
||||||
curing = 10
|
curing = 10
|
||||||
else if(href_list["eject"])
|
else if(href_list["eject"])
|
||||||
container.loc = src.loc
|
container.loc = src.loc
|
||||||
container = null
|
container = null
|
||||||
|
|
||||||
src.add_fingerprint(usr)
|
src.add_fingerprint(usr)
|
||||||
src.updateUsrDialog()
|
src.updateUsrDialog()
|
||||||
return
|
return
|
||||||
|
|
||||||
@@ -137,11 +110,4 @@
|
|||||||
data["antibodies"] = B.data["antibodies"]
|
data["antibodies"] = B.data["antibodies"]
|
||||||
product.reagents.add_reagent("antibodies",30,data)
|
product.reagents.add_reagent("antibodies",30,data)
|
||||||
|
|
||||||
state("The [src.name] Buzzes", "blue")
|
state("\The [src.name] buzzes", "blue")
|
||||||
/*
|
|
||||||
/obj/machinery/computer/curer/proc/createvirus(var/datum/disease2/disease/virus2)
|
|
||||||
var/obj/item/weapon/cureimplanter/implanter = new /obj/item/weapon/cureimplanter(src.loc)
|
|
||||||
implanter.name = "Viral implanter (MAJOR BIOHAZARD)"
|
|
||||||
implanter.works = 3
|
|
||||||
state("The [src.name] Buzzes", "blue")
|
|
||||||
*/
|
|
||||||
|
|||||||
@@ -13,31 +13,7 @@
|
|||||||
|
|
||||||
/obj/machinery/computer/diseasesplicer/attackby(var/obj/I as obj, var/mob/user as mob)
|
/obj/machinery/computer/diseasesplicer/attackby(var/obj/I as obj, var/mob/user as mob)
|
||||||
if(istype(I, /obj/item/weapon/screwdriver))
|
if(istype(I, /obj/item/weapon/screwdriver))
|
||||||
playsound(src.loc, 'Screwdriver.ogg', 50, 1)
|
return ..(I,user)
|
||||||
if(do_after(user, 20))
|
|
||||||
if (src.stat & BROKEN)
|
|
||||||
user << "\blue The broken glass falls out."
|
|
||||||
var/obj/structure/computerframe/A = new /obj/structure/computerframe( src.loc )
|
|
||||||
new /obj/item/weapon/shard( src.loc )
|
|
||||||
//var/obj/item/weapon/circuitboard/diseasesplicer/M = new /obj/item/weapon/circuitboard/diseasesplicer( A )
|
|
||||||
for (var/obj/C in src)
|
|
||||||
C.loc = src.loc
|
|
||||||
//A.circuit = M
|
|
||||||
A.state = 3
|
|
||||||
A.icon_state = "3"
|
|
||||||
A.anchored = 1
|
|
||||||
del(src)
|
|
||||||
else
|
|
||||||
user << "\blue You disconnect the monitor."
|
|
||||||
var/obj/structure/computerframe/A = new /obj/structure/computerframe( src.loc )
|
|
||||||
//var/obj/item/weapon/circuitboard/diseasesplicer/M = new /obj/item/weapon/circuitboard/diseasesplicer( A )
|
|
||||||
for (var/obj/C in src)
|
|
||||||
C.loc = src.loc
|
|
||||||
//A.circuit = M
|
|
||||||
A.state = 4
|
|
||||||
A.icon_state = "4"
|
|
||||||
A.anchored = 1
|
|
||||||
del(src)
|
|
||||||
if(istype(I,/obj/item/weapon/virusdish))
|
if(istype(I,/obj/item/weapon/virusdish))
|
||||||
var/mob/living/carbon/c = user
|
var/mob/living/carbon/c = user
|
||||||
if(!dish)
|
if(!dish)
|
||||||
@@ -49,8 +25,6 @@
|
|||||||
user << "You upload the contents of the disk into the buffer"
|
user << "You upload the contents of the disk into the buffer"
|
||||||
memorybank = I:effect
|
memorybank = I:effect
|
||||||
|
|
||||||
|
|
||||||
//else
|
|
||||||
src.attack_hand(user)
|
src.attack_hand(user)
|
||||||
return
|
return
|
||||||
|
|
||||||
@@ -117,7 +91,6 @@
|
|||||||
if(stat & (NOPOWER|BROKEN))
|
if(stat & (NOPOWER|BROKEN))
|
||||||
return
|
return
|
||||||
use_power(500)
|
use_power(500)
|
||||||
//src.updateDialog()
|
|
||||||
|
|
||||||
if(scanning)
|
if(scanning)
|
||||||
scanning -= 1
|
scanning -= 1
|
||||||
@@ -143,44 +116,29 @@
|
|||||||
/obj/machinery/computer/diseasesplicer/Topic(href, href_list)
|
/obj/machinery/computer/diseasesplicer/Topic(href, href_list)
|
||||||
if(..())
|
if(..())
|
||||||
return
|
return
|
||||||
if ((usr.contents.Find(src) || (in_range(src, usr) && istype(src.loc, /turf))) || (istype(usr, /mob/living/silicon)))
|
|
||||||
usr.machine = src
|
|
||||||
|
|
||||||
if (href_list["grab"])
|
if (href_list["grab"])
|
||||||
memorybank = locate(href_list["grab"])
|
memorybank = locate(href_list["grab"])
|
||||||
analysed = dish.analysed
|
analysed = dish.analysed
|
||||||
del(dish)
|
del(dish)
|
||||||
dish = null
|
dish = null
|
||||||
scanning = 10
|
scanning = 10
|
||||||
|
|
||||||
else if(href_list["eject"])
|
else if(href_list["eject"])
|
||||||
dish.loc = src.loc
|
dish.loc = src.loc
|
||||||
dish = null
|
dish = null
|
||||||
|
|
||||||
else if(href_list["splice"])
|
else if(href_list["splice"])
|
||||||
if(dish)
|
if(dish)
|
||||||
for(var/datum/disease2/effectholder/e in dish.virus2.effects)
|
for(var/datum/disease2/effectholder/e in dish.virus2.effects)
|
||||||
if(e.stage == memorybank.stage)
|
if(e.stage == memorybank.stage)
|
||||||
e.effect = memorybank.effect
|
e.effect = memorybank.effect
|
||||||
splicing = 10
|
splicing = 10
|
||||||
dish.virus2.spreadtype = "Blood"
|
dish.virus2.spreadtype = "Blood"
|
||||||
|
|
||||||
else if(href_list["disk"])
|
else if(href_list["disk"])
|
||||||
burning = 10
|
burning = 10
|
||||||
|
|
||||||
src.add_fingerprint(usr)
|
src.add_fingerprint(usr)
|
||||||
src.updateUsrDialog()
|
src.updateUsrDialog()
|
||||||
return
|
return
|
||||||
|
|
||||||
/obj/item/weapon/diseasedisk
|
|
||||||
name = "Blank GNA disk"
|
|
||||||
icon = 'cloning.dmi'
|
|
||||||
icon_state = "datadisk0"
|
|
||||||
var/datum/disease2/effectholder/effect = null
|
|
||||||
var/stage = 1
|
|
||||||
|
|
||||||
/obj/item/weapon/diseasedisk/premade/New()
|
|
||||||
name = "Blank GNA disk (stage: [5-stage])"
|
|
||||||
effect = new /datum/disease2/effectholder
|
|
||||||
effect.effect = new /datum/disease2/effect/invisible
|
|
||||||
effect.stage = stage
|
|
||||||
|
|||||||
@@ -14,156 +14,132 @@
|
|||||||
var/foodsupply = 0
|
var/foodsupply = 0
|
||||||
var/toxins = 0
|
var/toxins = 0
|
||||||
|
|
||||||
ex_act(severity)
|
|
||||||
switch(severity)
|
|
||||||
if(1.0)
|
|
||||||
del(src)
|
|
||||||
return
|
|
||||||
if(2.0)
|
|
||||||
if (prob(50))
|
|
||||||
del(src)
|
|
||||||
return
|
|
||||||
|
|
||||||
blob_act()
|
/obj/machinery/disease2/incubator/attackby(var/obj/B as obj, var/mob/user as mob)
|
||||||
if (prob(25))
|
if(istype(B, /obj/item/weapon/reagent_containers/glass) || istype(B,/obj/item/weapon/reagent_containers/syringe))
|
||||||
del(src)
|
|
||||||
|
|
||||||
meteorhit()
|
if(src.beaker)
|
||||||
del(src)
|
if(istype(beaker,/obj/item/weapon/reagent_containers/syringe))
|
||||||
return
|
user << "A syringe is already loaded into the machine."
|
||||||
|
else
|
||||||
|
user << "A beaker is already loaded into the machine."
|
||||||
|
return
|
||||||
|
|
||||||
attackby(var/obj/B as obj, var/mob/user as mob)
|
src.beaker = B
|
||||||
if(istype(B, /obj/item/weapon/reagent_containers/glass) || istype(B,/obj/item/weapon/reagent_containers/syringe))
|
user.drop_item()
|
||||||
|
B.loc = src
|
||||||
if(src.beaker)
|
if(istype(B,/obj/item/weapon/reagent_containers/syringe))
|
||||||
if(istype(beaker,/obj/item/weapon/reagent_containers/syringe))
|
user << "You add the syringe to the machine!"
|
||||||
user << "A syringe is already loaded into the machine."
|
src.updateUsrDialog()
|
||||||
else
|
else
|
||||||
user << "A beaker is already loaded into the machine."
|
user << "You add the beaker to the machine!"
|
||||||
|
src.updateUsrDialog()
|
||||||
|
else
|
||||||
|
if(istype(B,/obj/item/weapon/virusdish))
|
||||||
|
if(src.dish)
|
||||||
|
user << "A dish is already loaded into the machine."
|
||||||
return
|
return
|
||||||
|
|
||||||
src.beaker = B
|
src.dish = B
|
||||||
user.drop_item()
|
user.drop_item()
|
||||||
B.loc = src
|
B.loc = src
|
||||||
if(istype(B,/obj/item/weapon/reagent_containers/syringe))
|
|
||||||
user << "You add the syringe to the machine!"
|
|
||||||
src.updateUsrDialog()
|
|
||||||
else
|
|
||||||
user << "You add the beaker to the machine!"
|
|
||||||
src.updateUsrDialog()
|
|
||||||
else
|
|
||||||
if(istype(B,/obj/item/weapon/virusdish))
|
if(istype(B,/obj/item/weapon/virusdish))
|
||||||
if(src.dish)
|
user << "You add the dish to the machine!"
|
||||||
user << "A dish is already loaded into the machine."
|
src.updateUsrDialog()
|
||||||
return
|
|
||||||
|
|
||||||
src.dish = B
|
/obj/machinery/disease2/incubator/Topic(href, href_list)
|
||||||
user.drop_item()
|
if(..()) return
|
||||||
B.loc = src
|
|
||||||
if(istype(B,/obj/item/weapon/virusdish))
|
|
||||||
user << "You add the dish to the machine!"
|
|
||||||
src.updateUsrDialog()
|
|
||||||
|
|
||||||
Topic(href, href_list)
|
if (href_list["ejectchem"])
|
||||||
if(stat & BROKEN) return
|
|
||||||
if(usr.stat || usr.restrained()) return
|
|
||||||
if(!in_range(src, usr)) return
|
|
||||||
if (href_list["ejectchem"])
|
|
||||||
if(beaker)
|
|
||||||
beaker.loc = src.loc
|
|
||||||
beaker = null
|
|
||||||
if(!dish)
|
|
||||||
return
|
|
||||||
usr.machine = src
|
|
||||||
if (href_list["power"])
|
|
||||||
on = !on
|
|
||||||
if(on)
|
|
||||||
icon_state = "incubator_on"
|
|
||||||
else
|
|
||||||
icon_state = "incubator"
|
|
||||||
if (href_list["ejectdish"])
|
|
||||||
if(dish)
|
|
||||||
dish.loc = src.loc
|
|
||||||
dish = null
|
|
||||||
if (href_list["rad"])
|
|
||||||
radiation += 10
|
|
||||||
if (href_list["flush"])
|
|
||||||
radiation = 0
|
|
||||||
toxins = 0
|
|
||||||
foodsupply = 0
|
|
||||||
|
|
||||||
|
|
||||||
src.add_fingerprint(usr)
|
|
||||||
src.updateUsrDialog()
|
|
||||||
|
|
||||||
attack_hand(mob/user as mob)
|
|
||||||
if(stat & BROKEN)
|
|
||||||
return
|
|
||||||
user.machine = src
|
|
||||||
var/dat = ""
|
|
||||||
if(!dish)
|
|
||||||
dat = "Please insert dish into the incubator.<BR>"
|
|
||||||
var/string = "Off"
|
|
||||||
if(on)
|
|
||||||
string = "On"
|
|
||||||
dat += "Power status : <A href='?src=\ref[src];power=1'>[string]</a>"
|
|
||||||
dat += "<BR>"
|
|
||||||
dat += "Food supply : [foodsupply]"
|
|
||||||
dat += "<BR>"
|
|
||||||
dat += "Radiation Levels : [radiation] RADS : <A href='?src=\ref[src];rad=1'>Radiate</a>"
|
|
||||||
dat += "<BR>"
|
|
||||||
dat += "Toxins : [toxins]"
|
|
||||||
dat += "<BR><BR>"
|
|
||||||
if(beaker)
|
if(beaker)
|
||||||
dat += "Eject chemicals : <A href='?src=\ref[src];ejectchem=1'> Eject</a>"
|
beaker.loc = src.loc
|
||||||
dat += "<BR>"
|
beaker = null
|
||||||
if(dish)
|
if(!dish)
|
||||||
dat += "Eject Virus dish : <A href='?src=\ref[src];ejectdish=1'> Eject</a>"
|
|
||||||
dat += "<BR>"
|
|
||||||
dat += "<BR><BR>"
|
|
||||||
dat += "<A href='?src=\ref[src];flush=1'>Flush system</a><BR>"
|
|
||||||
dat += "<A href='?src=\ref[src];close=1'>Close</A><BR>"
|
|
||||||
user << browse("<TITLE>Pathogenic incubator</TITLE>incubator menu:<BR><BR>[dat]", "window=incubator;size=575x400")
|
|
||||||
onclose(user, "incubator")
|
|
||||||
return
|
return
|
||||||
|
usr.machine = src
|
||||||
|
if (href_list["power"])
|
||||||
|
on = !on
|
||||||
|
if(on)
|
||||||
|
icon_state = "incubator_on"
|
||||||
|
else
|
||||||
|
icon_state = "incubator"
|
||||||
|
if (href_list["ejectdish"])
|
||||||
|
if(dish)
|
||||||
|
dish.loc = src.loc
|
||||||
|
dish = null
|
||||||
|
if (href_list["rad"])
|
||||||
|
radiation += 10
|
||||||
|
if (href_list["flush"])
|
||||||
|
radiation = 0
|
||||||
|
toxins = 0
|
||||||
|
foodsupply = 0
|
||||||
|
|
||||||
|
src.add_fingerprint(usr)
|
||||||
|
src.updateUsrDialog()
|
||||||
|
|
||||||
|
/obj/machinery/disease2/incubator/attack_hand(mob/user as mob)
|
||||||
|
if(stat & BROKEN)
|
||||||
|
return
|
||||||
|
user.machine = src
|
||||||
|
var/dat = ""
|
||||||
|
if(!dish)
|
||||||
|
dat = "Please insert dish into the incubator.<BR>"
|
||||||
|
var/string = "Off"
|
||||||
|
if(on)
|
||||||
|
string = "On"
|
||||||
|
dat += "Power status : <A href='?src=\ref[src];power=1'>[string]</a>"
|
||||||
|
dat += "<BR>"
|
||||||
|
dat += "Food supply : [foodsupply]"
|
||||||
|
dat += "<BR>"
|
||||||
|
dat += "Radiation Levels : [radiation] RADS : <A href='?src=\ref[src];rad=1'>Radiate</a>"
|
||||||
|
dat += "<BR>"
|
||||||
|
dat += "Toxins : [toxins]"
|
||||||
|
dat += "<BR><BR>"
|
||||||
|
if(beaker)
|
||||||
|
dat += "Eject chemicals : <A href='?src=\ref[src];ejectchem=1'> Eject</a>"
|
||||||
|
dat += "<BR>"
|
||||||
|
if(dish)
|
||||||
|
dat += "Eject Virus dish : <A href='?src=\ref[src];ejectdish=1'> Eject</a>"
|
||||||
|
dat += "<BR>"
|
||||||
|
dat += "<BR><BR>"
|
||||||
|
dat += "<A href='?src=\ref[src];flush=1'>Flush system</a><BR>"
|
||||||
|
dat += "<A href='?src=\ref[src];close=1'>Close</A><BR>"
|
||||||
|
user << browse("<TITLE>Pathogenic incubator</TITLE>incubator menu:<BR><BR>[dat]", "window=incubator;size=575x400")
|
||||||
|
onclose(user, "incubator")
|
||||||
|
return
|
||||||
|
|
||||||
|
/obj/machinery/disease2/incubator/process()
|
||||||
process()
|
if(dish && on && dish.virus2)
|
||||||
|
use_power(50,EQUIP)
|
||||||
if(dish && on && dish.virus2)
|
if(!powered(EQUIP))
|
||||||
use_power(50,EQUIP)
|
|
||||||
if(!powered(EQUIP))
|
|
||||||
on = 0
|
|
||||||
icon_state = "incubator"
|
|
||||||
if(foodsupply)
|
|
||||||
foodsupply -= 1
|
|
||||||
dish.growth += 3
|
|
||||||
if(dish.growth >= 100)
|
|
||||||
state("The [src.name] pings", "blue")
|
|
||||||
if(radiation)
|
|
||||||
if(radiation > 50 & prob(5))
|
|
||||||
dish.virus2.majormutate()
|
|
||||||
if(dish.info)
|
|
||||||
dish.info = "OUTDATED : [dish.info]"
|
|
||||||
dish.analysed = 0
|
|
||||||
state("The [src.name] beeps", "blue")
|
|
||||||
|
|
||||||
else if(prob(5))
|
|
||||||
dish.virus2.minormutate()
|
|
||||||
radiation -= 1
|
|
||||||
if(toxins && prob(5))
|
|
||||||
dish.virus2.infectionchance -= 1
|
|
||||||
if(toxins > 50)
|
|
||||||
dish.virus2 = null
|
|
||||||
else if(!dish)
|
|
||||||
on = 0
|
on = 0
|
||||||
icon_state = "incubator"
|
icon_state = "incubator"
|
||||||
|
if(foodsupply)
|
||||||
|
foodsupply -= 1
|
||||||
|
dish.growth += 3
|
||||||
|
if(dish.growth >= 100)
|
||||||
|
state("The [src.name] pings", "blue")
|
||||||
|
if(radiation)
|
||||||
|
if(radiation > 50 & prob(5))
|
||||||
|
dish.virus2.majormutate()
|
||||||
|
if(dish.info)
|
||||||
|
dish.info = "OUTDATED : [dish.info]"
|
||||||
|
dish.analysed = 0
|
||||||
|
state("The [src.name] beeps", "blue")
|
||||||
|
|
||||||
|
else if(prob(5))
|
||||||
|
dish.virus2.minormutate()
|
||||||
|
radiation -= 1
|
||||||
|
if(toxins && prob(5))
|
||||||
|
dish.virus2.infectionchance -= 1
|
||||||
|
if(toxins > 50)
|
||||||
|
dish.virus2 = null
|
||||||
|
else if(!dish)
|
||||||
|
on = 0
|
||||||
|
icon_state = "incubator"
|
||||||
|
|
||||||
if(beaker)
|
if(beaker)
|
||||||
if(!beaker.reagents.remove_reagent("virusfood",5))
|
if(!beaker.reagents.remove_reagent("virusfood",5))
|
||||||
foodsupply += 10
|
foodsupply += 10
|
||||||
if(!beaker.reagents.remove_reagent("toxin",1))
|
if(!beaker.reagents.remove_reagent("toxin",1))
|
||||||
toxins += 1
|
toxins += 1
|
||||||
@@ -8,154 +8,86 @@
|
|||||||
var/isolating = 0
|
var/isolating = 0
|
||||||
var/beaker = null
|
var/beaker = null
|
||||||
|
|
||||||
ex_act(severity)
|
/obj/machinery/disease2/isolator/attackby(var/W as obj, var/mob/user)
|
||||||
switch(severity)
|
if(!istype(W,/obj/item/weapon/reagent_containers/syringe))
|
||||||
if(1.0)
|
|
||||||
del(src)
|
|
||||||
return
|
|
||||||
if(2.0)
|
|
||||||
if (prob(50))
|
|
||||||
del(src)
|
|
||||||
return
|
|
||||||
|
|
||||||
blob_act()
|
|
||||||
if (prob(25))
|
|
||||||
del(src)
|
|
||||||
|
|
||||||
meteorhit()
|
|
||||||
del(src)
|
|
||||||
return
|
return
|
||||||
|
|
||||||
attackby(var/obj/item/weapon/reagent_containers/glass/B as obj, var/mob/user as mob)
|
var/obj/item/weapon/reagent_containers/syringe/B = W
|
||||||
if(!istype(B,/obj/item/weapon/reagent_containers/syringe))
|
|
||||||
return
|
|
||||||
|
|
||||||
if(src.beaker)
|
if(src.beaker)
|
||||||
user << "A syringe is already loaded into the machine."
|
user << "A syringe is already loaded into the machine."
|
||||||
return
|
return
|
||||||
|
|
||||||
src.beaker = B
|
src.beaker = B
|
||||||
user.drop_item()
|
user.drop_item()
|
||||||
B.loc = src
|
B.loc = src
|
||||||
if(istype(B,/obj/item/weapon/reagent_containers/syringe))
|
if(istype(B,/obj/item/weapon/reagent_containers/syringe))
|
||||||
user << "You add the syringe to the machine!"
|
user << "You add the syringe to the machine!"
|
||||||
src.updateUsrDialog()
|
src.updateUsrDialog()
|
||||||
icon_state = "isolator_in"
|
icon_state = "isolator_in"
|
||||||
|
|
||||||
Topic(href, href_list)
|
/obj/machinery/disease2/isolator/Topic(href, href_list)
|
||||||
if(stat & BROKEN) return
|
if(..()) return
|
||||||
if(usr.stat || usr.restrained()) return
|
|
||||||
if(!in_range(src, usr)) return
|
|
||||||
|
|
||||||
usr.machine = src
|
usr.machine = src
|
||||||
if(!beaker) return
|
if(!beaker) return
|
||||||
|
var/datum/reagents/R = beaker:reagents
|
||||||
|
|
||||||
|
if (href_list["isolate"])
|
||||||
|
var/datum/reagent/blood/Blood
|
||||||
|
for(var/datum/reagent/blood/B in R.reagent_list)
|
||||||
|
if(B)
|
||||||
|
Blood = B
|
||||||
|
break
|
||||||
|
|
||||||
|
if(Blood.data["virus2"])
|
||||||
|
virus2 = Blood.data["virus2"]
|
||||||
|
isolating = 40
|
||||||
|
icon_state = "isolator_processing"
|
||||||
|
src.updateUsrDialog()
|
||||||
|
return
|
||||||
|
|
||||||
|
else if (href_list["main"])
|
||||||
|
attack_hand(usr)
|
||||||
|
return
|
||||||
|
else if (href_list["eject"])
|
||||||
|
beaker:loc = src.loc
|
||||||
|
beaker = null
|
||||||
|
icon_state = "isolator"
|
||||||
|
src.updateUsrDialog()
|
||||||
|
return
|
||||||
|
|
||||||
|
/obj/machinery/disease2/isolator/attack_hand(mob/user as mob)
|
||||||
|
if(stat & BROKEN)
|
||||||
|
return
|
||||||
|
user.machine = src
|
||||||
|
var/dat = ""
|
||||||
|
if(!beaker)
|
||||||
|
dat = "Please insert sample into the isolator.<BR>"
|
||||||
|
dat += "<A href='?src=\ref[src];close=1'>Close</A>"
|
||||||
|
else if(isolating)
|
||||||
|
dat = "Isolating"
|
||||||
|
else
|
||||||
var/datum/reagents/R = beaker:reagents
|
var/datum/reagents/R = beaker:reagents
|
||||||
|
dat += "<A href='?src=\ref[src];eject=1'>Eject</A><BR><BR>"
|
||||||
if (href_list["isolate"])
|
if(!R.total_volume)
|
||||||
var/datum/reagent/blood/Blood
|
dat += "[beaker] is empty."
|
||||||
for(var/datum/reagent/blood/B in R.reagent_list)
|
|
||||||
if(B)
|
|
||||||
Blood = B
|
|
||||||
break
|
|
||||||
|
|
||||||
if(Blood.data["virus2"])
|
|
||||||
virus2 = Blood.data["virus2"]
|
|
||||||
isolating = 40
|
|
||||||
icon_state = "isolator_processing"
|
|
||||||
src.updateUsrDialog()
|
|
||||||
return
|
|
||||||
|
|
||||||
else if (href_list["main"])
|
|
||||||
attack_hand(usr)
|
|
||||||
return
|
|
||||||
else if (href_list["eject"])
|
|
||||||
beaker:loc = src.loc
|
|
||||||
beaker = null
|
|
||||||
icon_state = "isolator"
|
|
||||||
src.updateUsrDialog()
|
|
||||||
return
|
|
||||||
|
|
||||||
attack_hand(mob/user as mob)
|
|
||||||
if(stat & BROKEN)
|
|
||||||
return
|
|
||||||
user.machine = src
|
|
||||||
var/dat = ""
|
|
||||||
if(!beaker)
|
|
||||||
dat = "Please insert sample into the isolator.<BR>"
|
|
||||||
dat += "<A href='?src=\ref[src];close=1'>Close</A>"
|
|
||||||
else if(isolating)
|
|
||||||
dat = "Isolating"
|
|
||||||
else
|
else
|
||||||
var/datum/reagents/R = beaker:reagents
|
dat += "Contained reagents:<BR>"
|
||||||
dat += "<A href='?src=\ref[src];eject=1'>Eject</A><BR><BR>"
|
for(var/datum/reagent/blood/G in R.reagent_list)
|
||||||
if(!R.total_volume)
|
if(G.data["virus2"])
|
||||||
dat += "[beaker] is empty."
|
dat += " [G.name]: <A href='?src=\ref[src];isolate=[G.id]'>Isolate</a>"
|
||||||
else
|
else
|
||||||
dat += "Contained reagents:<BR>"
|
dat += " <b>No pathogen</b>"
|
||||||
for(var/datum/reagent/blood/G in R.reagent_list)
|
user << browse("<TITLE>Pathogenic Isolator</TITLE>Isolator menu:<BR><BR>[dat]", "window=isolator;size=575x400")
|
||||||
if(G.data["virus2"])
|
onclose(user, "isolator")
|
||||||
dat += " [G.name]: <A href='?src=\ref[src];isolate=[G.id]'>Isolate</a>"
|
return
|
||||||
else
|
|
||||||
dat += " <b>No pathogen</b>"
|
|
||||||
user << browse("<TITLE>Pathogenic Isolator</TITLE>Isolator menu:<BR><BR>[dat]", "window=isolator;size=575x400")
|
|
||||||
onclose(user, "isolator")
|
|
||||||
return
|
|
||||||
|
|
||||||
|
/obj/machinery/disease2/isolator/process()
|
||||||
|
if(isolating > 0)
|
||||||
|
isolating -= 1
|
||||||
process()
|
if(isolating == 0)
|
||||||
if(isolating > 0)
|
var/obj/item/weapon/virusdish/d = new /obj/item/weapon/virusdish(src.loc)
|
||||||
isolating -= 1
|
d.virus2 = virus2.getcopy()
|
||||||
if(isolating == 0)
|
virus2 = null
|
||||||
var/obj/item/weapon/virusdish/d = new /obj/item/weapon/virusdish(src.loc)
|
icon_state = "isolator_in"
|
||||||
d.virus2 = virus2.getcopy()
|
|
||||||
virus2 = null
|
|
||||||
icon_state = "isolator_in"
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/obj/item/weapon/virusdish
|
|
||||||
name = "Virus containment/growth dish"
|
|
||||||
icon = 'items.dmi'
|
|
||||||
icon_state = "implantcase-b"
|
|
||||||
var/datum/disease2/disease/virus2 = null
|
|
||||||
var/growth = 0
|
|
||||||
var/info = 0
|
|
||||||
var/analysed = 0
|
|
||||||
|
|
||||||
reagents = list()
|
|
||||||
|
|
||||||
/obj/item/weapon/virusdish/random
|
|
||||||
name = "Virus Sample"
|
|
||||||
|
|
||||||
/obj/item/weapon/virusdish/random/New()
|
|
||||||
..()
|
|
||||||
// add a random virus to this dish
|
|
||||||
src.virus2 = new /datum/disease2/disease
|
|
||||||
src.virus2.makerandom()
|
|
||||||
growth = rand(5, 50)
|
|
||||||
|
|
||||||
/obj/item/weapon/virusdish/attackby(var/obj/item/weapon/W as obj,var/mob/living/carbon/user as mob)
|
|
||||||
if(istype(W,/obj/item/weapon/hand_labeler) || istype(W,/obj/item/weapon/reagent_containers/syringe))
|
|
||||||
return
|
|
||||||
..()
|
|
||||||
if(prob(50))
|
|
||||||
user << "The dish shatters"
|
|
||||||
if(virus2.infectionchance > 0)
|
|
||||||
for(var/mob/living/carbon/target in view(null, src)) if(!target.virus2)
|
|
||||||
if(airborne_can_reach(src.loc, target.loc))
|
|
||||||
if(target.get_infection_chance())
|
|
||||||
infect_virus2(target,src.virus2)
|
|
||||||
del src
|
|
||||||
|
|
||||||
/obj/item/weapon/virusdish/examine()
|
|
||||||
usr << "This is a virus containment dish"
|
|
||||||
if(src.info)
|
|
||||||
usr << "It has the following information about its contents"
|
|
||||||
usr << src.info
|
|
||||||
|
|
||||||
/obj/machinery/proc/state(var/msg)
|
|
||||||
for(var/mob/O in hearers(src, null))
|
|
||||||
O.show_message("\icon[src] \blue [msg]", 2)
|
|
||||||
|
|||||||
@@ -1,30 +0,0 @@
|
|||||||
/obj/machinery/disease2/monkeycloner
|
|
||||||
name = "Monkey dispensor"
|
|
||||||
icon = 'cloning.dmi'
|
|
||||||
icon_state = "pod_0"
|
|
||||||
density = 1
|
|
||||||
anchored = 1
|
|
||||||
|
|
||||||
var/cloning = 0
|
|
||||||
|
|
||||||
/obj/machinery/disease2/monkeycloner/attack_hand()
|
|
||||||
if(!cloning)
|
|
||||||
cloning = 150
|
|
||||||
|
|
||||||
icon_state = "pod_g"
|
|
||||||
|
|
||||||
/obj/machinery/disease2/monkeycloner/process()
|
|
||||||
if(stat & (NOPOWER|BROKEN))
|
|
||||||
return
|
|
||||||
use_power(500)
|
|
||||||
//src.updateDialog()
|
|
||||||
|
|
||||||
if(cloning)
|
|
||||||
cloning -= 1
|
|
||||||
if(!cloning)
|
|
||||||
new /mob/living/carbon/monkey(src.loc)
|
|
||||||
icon_state = "pod_0"
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
return
|
|
||||||
Reference in New Issue
Block a user