mirror of
https://github.com/PolarisSS13/Polaris.git
synced 2025-12-26 10:03:45 +00:00
292
baystation12.dme
292
baystation12.dme
@@ -5,6 +5,284 @@
|
||||
// END_INTERNALS
|
||||
// BEGIN_FILE_DIR
|
||||
#define FILE_DIR .
|
||||
#define FILE_DIR ".git"
|
||||
#define FILE_DIR ".git/hooks"
|
||||
#define FILE_DIR ".git/info"
|
||||
#define FILE_DIR ".git/logs"
|
||||
#define FILE_DIR ".git/logs/refs"
|
||||
#define FILE_DIR ".git/logs/refs/heads"
|
||||
#define FILE_DIR ".git/logs/refs/remotes"
|
||||
#define FILE_DIR ".git/logs/refs/remotes/github"
|
||||
#define FILE_DIR ".git/logs/refs/remotes/origin"
|
||||
#define FILE_DIR ".git/objects"
|
||||
#define FILE_DIR ".git/objects/00"
|
||||
#define FILE_DIR ".git/objects/01"
|
||||
#define FILE_DIR ".git/objects/02"
|
||||
#define FILE_DIR ".git/objects/03"
|
||||
#define FILE_DIR ".git/objects/04"
|
||||
#define FILE_DIR ".git/objects/05"
|
||||
#define FILE_DIR ".git/objects/06"
|
||||
#define FILE_DIR ".git/objects/07"
|
||||
#define FILE_DIR ".git/objects/08"
|
||||
#define FILE_DIR ".git/objects/09"
|
||||
#define FILE_DIR ".git/objects/0a"
|
||||
#define FILE_DIR ".git/objects/0b"
|
||||
#define FILE_DIR ".git/objects/0c"
|
||||
#define FILE_DIR ".git/objects/0d"
|
||||
#define FILE_DIR ".git/objects/0e"
|
||||
#define FILE_DIR ".git/objects/0f"
|
||||
#define FILE_DIR ".git/objects/10"
|
||||
#define FILE_DIR ".git/objects/11"
|
||||
#define FILE_DIR ".git/objects/12"
|
||||
#define FILE_DIR ".git/objects/13"
|
||||
#define FILE_DIR ".git/objects/14"
|
||||
#define FILE_DIR ".git/objects/15"
|
||||
#define FILE_DIR ".git/objects/16"
|
||||
#define FILE_DIR ".git/objects/17"
|
||||
#define FILE_DIR ".git/objects/18"
|
||||
#define FILE_DIR ".git/objects/19"
|
||||
#define FILE_DIR ".git/objects/1a"
|
||||
#define FILE_DIR ".git/objects/1b"
|
||||
#define FILE_DIR ".git/objects/1c"
|
||||
#define FILE_DIR ".git/objects/1d"
|
||||
#define FILE_DIR ".git/objects/1e"
|
||||
#define FILE_DIR ".git/objects/1f"
|
||||
#define FILE_DIR ".git/objects/20"
|
||||
#define FILE_DIR ".git/objects/21"
|
||||
#define FILE_DIR ".git/objects/22"
|
||||
#define FILE_DIR ".git/objects/23"
|
||||
#define FILE_DIR ".git/objects/24"
|
||||
#define FILE_DIR ".git/objects/25"
|
||||
#define FILE_DIR ".git/objects/26"
|
||||
#define FILE_DIR ".git/objects/27"
|
||||
#define FILE_DIR ".git/objects/28"
|
||||
#define FILE_DIR ".git/objects/29"
|
||||
#define FILE_DIR ".git/objects/2a"
|
||||
#define FILE_DIR ".git/objects/2b"
|
||||
#define FILE_DIR ".git/objects/2c"
|
||||
#define FILE_DIR ".git/objects/2d"
|
||||
#define FILE_DIR ".git/objects/2e"
|
||||
#define FILE_DIR ".git/objects/2f"
|
||||
#define FILE_DIR ".git/objects/30"
|
||||
#define FILE_DIR ".git/objects/31"
|
||||
#define FILE_DIR ".git/objects/32"
|
||||
#define FILE_DIR ".git/objects/33"
|
||||
#define FILE_DIR ".git/objects/34"
|
||||
#define FILE_DIR ".git/objects/35"
|
||||
#define FILE_DIR ".git/objects/36"
|
||||
#define FILE_DIR ".git/objects/37"
|
||||
#define FILE_DIR ".git/objects/38"
|
||||
#define FILE_DIR ".git/objects/39"
|
||||
#define FILE_DIR ".git/objects/3a"
|
||||
#define FILE_DIR ".git/objects/3b"
|
||||
#define FILE_DIR ".git/objects/3c"
|
||||
#define FILE_DIR ".git/objects/3d"
|
||||
#define FILE_DIR ".git/objects/3e"
|
||||
#define FILE_DIR ".git/objects/3f"
|
||||
#define FILE_DIR ".git/objects/40"
|
||||
#define FILE_DIR ".git/objects/41"
|
||||
#define FILE_DIR ".git/objects/42"
|
||||
#define FILE_DIR ".git/objects/43"
|
||||
#define FILE_DIR ".git/objects/44"
|
||||
#define FILE_DIR ".git/objects/45"
|
||||
#define FILE_DIR ".git/objects/46"
|
||||
#define FILE_DIR ".git/objects/47"
|
||||
#define FILE_DIR ".git/objects/48"
|
||||
#define FILE_DIR ".git/objects/49"
|
||||
#define FILE_DIR ".git/objects/4a"
|
||||
#define FILE_DIR ".git/objects/4b"
|
||||
#define FILE_DIR ".git/objects/4c"
|
||||
#define FILE_DIR ".git/objects/4d"
|
||||
#define FILE_DIR ".git/objects/4e"
|
||||
#define FILE_DIR ".git/objects/4f"
|
||||
#define FILE_DIR ".git/objects/50"
|
||||
#define FILE_DIR ".git/objects/51"
|
||||
#define FILE_DIR ".git/objects/52"
|
||||
#define FILE_DIR ".git/objects/53"
|
||||
#define FILE_DIR ".git/objects/54"
|
||||
#define FILE_DIR ".git/objects/55"
|
||||
#define FILE_DIR ".git/objects/56"
|
||||
#define FILE_DIR ".git/objects/57"
|
||||
#define FILE_DIR ".git/objects/58"
|
||||
#define FILE_DIR ".git/objects/59"
|
||||
#define FILE_DIR ".git/objects/5a"
|
||||
#define FILE_DIR ".git/objects/5b"
|
||||
#define FILE_DIR ".git/objects/5c"
|
||||
#define FILE_DIR ".git/objects/5d"
|
||||
#define FILE_DIR ".git/objects/5e"
|
||||
#define FILE_DIR ".git/objects/5f"
|
||||
#define FILE_DIR ".git/objects/60"
|
||||
#define FILE_DIR ".git/objects/61"
|
||||
#define FILE_DIR ".git/objects/62"
|
||||
#define FILE_DIR ".git/objects/63"
|
||||
#define FILE_DIR ".git/objects/64"
|
||||
#define FILE_DIR ".git/objects/65"
|
||||
#define FILE_DIR ".git/objects/66"
|
||||
#define FILE_DIR ".git/objects/67"
|
||||
#define FILE_DIR ".git/objects/68"
|
||||
#define FILE_DIR ".git/objects/69"
|
||||
#define FILE_DIR ".git/objects/6a"
|
||||
#define FILE_DIR ".git/objects/6b"
|
||||
#define FILE_DIR ".git/objects/6c"
|
||||
#define FILE_DIR ".git/objects/6d"
|
||||
#define FILE_DIR ".git/objects/6e"
|
||||
#define FILE_DIR ".git/objects/6f"
|
||||
#define FILE_DIR ".git/objects/70"
|
||||
#define FILE_DIR ".git/objects/71"
|
||||
#define FILE_DIR ".git/objects/72"
|
||||
#define FILE_DIR ".git/objects/73"
|
||||
#define FILE_DIR ".git/objects/74"
|
||||
#define FILE_DIR ".git/objects/75"
|
||||
#define FILE_DIR ".git/objects/76"
|
||||
#define FILE_DIR ".git/objects/77"
|
||||
#define FILE_DIR ".git/objects/78"
|
||||
#define FILE_DIR ".git/objects/79"
|
||||
#define FILE_DIR ".git/objects/7a"
|
||||
#define FILE_DIR ".git/objects/7b"
|
||||
#define FILE_DIR ".git/objects/7c"
|
||||
#define FILE_DIR ".git/objects/7d"
|
||||
#define FILE_DIR ".git/objects/7e"
|
||||
#define FILE_DIR ".git/objects/7f"
|
||||
#define FILE_DIR ".git/objects/80"
|
||||
#define FILE_DIR ".git/objects/81"
|
||||
#define FILE_DIR ".git/objects/82"
|
||||
#define FILE_DIR ".git/objects/83"
|
||||
#define FILE_DIR ".git/objects/84"
|
||||
#define FILE_DIR ".git/objects/85"
|
||||
#define FILE_DIR ".git/objects/86"
|
||||
#define FILE_DIR ".git/objects/87"
|
||||
#define FILE_DIR ".git/objects/88"
|
||||
#define FILE_DIR ".git/objects/89"
|
||||
#define FILE_DIR ".git/objects/8a"
|
||||
#define FILE_DIR ".git/objects/8b"
|
||||
#define FILE_DIR ".git/objects/8c"
|
||||
#define FILE_DIR ".git/objects/8d"
|
||||
#define FILE_DIR ".git/objects/8e"
|
||||
#define FILE_DIR ".git/objects/8f"
|
||||
#define FILE_DIR ".git/objects/90"
|
||||
#define FILE_DIR ".git/objects/91"
|
||||
#define FILE_DIR ".git/objects/92"
|
||||
#define FILE_DIR ".git/objects/93"
|
||||
#define FILE_DIR ".git/objects/94"
|
||||
#define FILE_DIR ".git/objects/95"
|
||||
#define FILE_DIR ".git/objects/96"
|
||||
#define FILE_DIR ".git/objects/97"
|
||||
#define FILE_DIR ".git/objects/98"
|
||||
#define FILE_DIR ".git/objects/99"
|
||||
#define FILE_DIR ".git/objects/9a"
|
||||
#define FILE_DIR ".git/objects/9b"
|
||||
#define FILE_DIR ".git/objects/9c"
|
||||
#define FILE_DIR ".git/objects/9d"
|
||||
#define FILE_DIR ".git/objects/9e"
|
||||
#define FILE_DIR ".git/objects/9f"
|
||||
#define FILE_DIR ".git/objects/a0"
|
||||
#define FILE_DIR ".git/objects/a1"
|
||||
#define FILE_DIR ".git/objects/a2"
|
||||
#define FILE_DIR ".git/objects/a3"
|
||||
#define FILE_DIR ".git/objects/a4"
|
||||
#define FILE_DIR ".git/objects/a5"
|
||||
#define FILE_DIR ".git/objects/a6"
|
||||
#define FILE_DIR ".git/objects/a7"
|
||||
#define FILE_DIR ".git/objects/a8"
|
||||
#define FILE_DIR ".git/objects/a9"
|
||||
#define FILE_DIR ".git/objects/aa"
|
||||
#define FILE_DIR ".git/objects/ab"
|
||||
#define FILE_DIR ".git/objects/ac"
|
||||
#define FILE_DIR ".git/objects/ad"
|
||||
#define FILE_DIR ".git/objects/ae"
|
||||
#define FILE_DIR ".git/objects/af"
|
||||
#define FILE_DIR ".git/objects/b0"
|
||||
#define FILE_DIR ".git/objects/b1"
|
||||
#define FILE_DIR ".git/objects/b2"
|
||||
#define FILE_DIR ".git/objects/b3"
|
||||
#define FILE_DIR ".git/objects/b4"
|
||||
#define FILE_DIR ".git/objects/b5"
|
||||
#define FILE_DIR ".git/objects/b6"
|
||||
#define FILE_DIR ".git/objects/b7"
|
||||
#define FILE_DIR ".git/objects/b8"
|
||||
#define FILE_DIR ".git/objects/b9"
|
||||
#define FILE_DIR ".git/objects/ba"
|
||||
#define FILE_DIR ".git/objects/bb"
|
||||
#define FILE_DIR ".git/objects/bc"
|
||||
#define FILE_DIR ".git/objects/bd"
|
||||
#define FILE_DIR ".git/objects/be"
|
||||
#define FILE_DIR ".git/objects/bf"
|
||||
#define FILE_DIR ".git/objects/c0"
|
||||
#define FILE_DIR ".git/objects/c1"
|
||||
#define FILE_DIR ".git/objects/c2"
|
||||
#define FILE_DIR ".git/objects/c3"
|
||||
#define FILE_DIR ".git/objects/c4"
|
||||
#define FILE_DIR ".git/objects/c5"
|
||||
#define FILE_DIR ".git/objects/c6"
|
||||
#define FILE_DIR ".git/objects/c7"
|
||||
#define FILE_DIR ".git/objects/c8"
|
||||
#define FILE_DIR ".git/objects/c9"
|
||||
#define FILE_DIR ".git/objects/ca"
|
||||
#define FILE_DIR ".git/objects/cb"
|
||||
#define FILE_DIR ".git/objects/cc"
|
||||
#define FILE_DIR ".git/objects/cd"
|
||||
#define FILE_DIR ".git/objects/ce"
|
||||
#define FILE_DIR ".git/objects/cf"
|
||||
#define FILE_DIR ".git/objects/d0"
|
||||
#define FILE_DIR ".git/objects/d1"
|
||||
#define FILE_DIR ".git/objects/d2"
|
||||
#define FILE_DIR ".git/objects/d3"
|
||||
#define FILE_DIR ".git/objects/d4"
|
||||
#define FILE_DIR ".git/objects/d5"
|
||||
#define FILE_DIR ".git/objects/d6"
|
||||
#define FILE_DIR ".git/objects/d7"
|
||||
#define FILE_DIR ".git/objects/d8"
|
||||
#define FILE_DIR ".git/objects/d9"
|
||||
#define FILE_DIR ".git/objects/da"
|
||||
#define FILE_DIR ".git/objects/db"
|
||||
#define FILE_DIR ".git/objects/dc"
|
||||
#define FILE_DIR ".git/objects/dd"
|
||||
#define FILE_DIR ".git/objects/de"
|
||||
#define FILE_DIR ".git/objects/df"
|
||||
#define FILE_DIR ".git/objects/e0"
|
||||
#define FILE_DIR ".git/objects/e1"
|
||||
#define FILE_DIR ".git/objects/e2"
|
||||
#define FILE_DIR ".git/objects/e3"
|
||||
#define FILE_DIR ".git/objects/e4"
|
||||
#define FILE_DIR ".git/objects/e5"
|
||||
#define FILE_DIR ".git/objects/e6"
|
||||
#define FILE_DIR ".git/objects/e7"
|
||||
#define FILE_DIR ".git/objects/e8"
|
||||
#define FILE_DIR ".git/objects/e9"
|
||||
#define FILE_DIR ".git/objects/ea"
|
||||
#define FILE_DIR ".git/objects/eb"
|
||||
#define FILE_DIR ".git/objects/ec"
|
||||
#define FILE_DIR ".git/objects/ed"
|
||||
#define FILE_DIR ".git/objects/ee"
|
||||
#define FILE_DIR ".git/objects/ef"
|
||||
#define FILE_DIR ".git/objects/f0"
|
||||
#define FILE_DIR ".git/objects/f1"
|
||||
#define FILE_DIR ".git/objects/f2"
|
||||
#define FILE_DIR ".git/objects/f3"
|
||||
#define FILE_DIR ".git/objects/f4"
|
||||
#define FILE_DIR ".git/objects/f5"
|
||||
#define FILE_DIR ".git/objects/f6"
|
||||
#define FILE_DIR ".git/objects/f7"
|
||||
#define FILE_DIR ".git/objects/f8"
|
||||
#define FILE_DIR ".git/objects/f9"
|
||||
#define FILE_DIR ".git/objects/fa"
|
||||
#define FILE_DIR ".git/objects/fb"
|
||||
#define FILE_DIR ".git/objects/fc"
|
||||
#define FILE_DIR ".git/objects/fd"
|
||||
#define FILE_DIR ".git/objects/fe"
|
||||
#define FILE_DIR ".git/objects/ff"
|
||||
#define FILE_DIR ".git/objects/info"
|
||||
#define FILE_DIR ".git/objects/pack"
|
||||
#define FILE_DIR ".git/rebase-apply"
|
||||
#define FILE_DIR ".git/refs"
|
||||
#define FILE_DIR ".git/refs/heads"
|
||||
#define FILE_DIR ".git/refs/remotes"
|
||||
#define FILE_DIR ".git/refs/remotes/github"
|
||||
#define FILE_DIR ".git/refs/remotes/origin"
|
||||
#define FILE_DIR ".git/svn"
|
||||
#define FILE_DIR ".git/svn/refs"
|
||||
#define FILE_DIR ".git/svn/refs/remotes"
|
||||
#define FILE_DIR ".git/svn/refs/remotes/git-svn"
|
||||
#define FILE_DIR "code"
|
||||
#define FILE_DIR "code/ATMOSPHERICS"
|
||||
#define FILE_DIR "code/ATMOSPHERICS/components"
|
||||
@@ -143,7 +421,15 @@
|
||||
#define FILE_DIR "code/WorkInProgress/organs"
|
||||
#define FILE_DIR "code/WorkInProgress/SkyMarshal"
|
||||
#define FILE_DIR "code/WorkInProgress/virus2"
|
||||
#define FILE_DIR "code/WorkInProgress/virus2/Disease2"
|
||||
#define FILE_DIR "config"
|
||||
#define FILE_DIR "config/names"
|
||||
#define FILE_DIR "data"
|
||||
#define FILE_DIR "data/logs"
|
||||
#define FILE_DIR "data/logs/2011"
|
||||
#define FILE_DIR "data/logs/2011/12-December"
|
||||
#define FILE_DIR "data/player_saves"
|
||||
#define FILE_DIR "data/player_saves/c"
|
||||
#define FILE_DIR "data/player_saves/c/cib"
|
||||
#define FILE_DIR "html"
|
||||
#define FILE_DIR "icons"
|
||||
#define FILE_DIR "icons/effects"
|
||||
@@ -157,12 +443,14 @@
|
||||
#define FILE_DIR "icons/obj/machines"
|
||||
#define FILE_DIR "icons/obj/pipes"
|
||||
#define FILE_DIR "icons/pda_icons"
|
||||
#define FILE_DIR "icons/PSD files"
|
||||
#define FILE_DIR "icons/spideros_icons"
|
||||
#define FILE_DIR "icons/Testing"
|
||||
#define FILE_DIR "icons/turf"
|
||||
#define FILE_DIR "icons/vending_icons"
|
||||
#define FILE_DIR "interface"
|
||||
#define FILE_DIR "maps"
|
||||
#define FILE_DIR "music"
|
||||
#define FILE_DIR "sound"
|
||||
#define FILE_DIR "sound/ambience"
|
||||
#define FILE_DIR "sound/announcer"
|
||||
@@ -175,6 +463,7 @@
|
||||
#define FILE_DIR "sound/piano"
|
||||
#define FILE_DIR "sound/voice"
|
||||
#define FILE_DIR "sound/weapons"
|
||||
#define FILE_DIR "SQL"
|
||||
// END_FILE_DIR
|
||||
// BEGIN_PREFERENCES
|
||||
#define DEBUG
|
||||
@@ -993,6 +1282,7 @@
|
||||
#include "code\WorkInProgress\virus2\dishincubator.dm"
|
||||
#include "code\WorkInProgress\virus2\isolator.dm"
|
||||
#include "code\WorkInProgress\virus2\monkeydispensor.dm"
|
||||
#include "code\WorkInProgress\virus2\Prob.dm"
|
||||
#include "interface\skin.dmf"
|
||||
#include "maps\tgstation.2.0.8.dmm"
|
||||
// END_INCLUDE
|
||||
|
||||
@@ -1,75 +0,0 @@
|
||||
/obj/machinery/disease2/diseaseanalyser
|
||||
name = "Disease Analyser"
|
||||
icon = 'virology.dmi'
|
||||
icon_state = "analyser"
|
||||
anchored = 1
|
||||
density = 1
|
||||
|
||||
var/scanning = 0
|
||||
var/pause = 0
|
||||
|
||||
var/obj/item/weapon/virusdish/dish = null
|
||||
|
||||
/obj/machinery/disease2/diseaseanalyser/attackby(var/obj/I as obj, var/mob/user as mob)
|
||||
if(istype(I,/obj/item/weapon/virusdish))
|
||||
var/mob/living/carbon/c = user
|
||||
if(!dish)
|
||||
|
||||
dish = I
|
||||
c.drop_item()
|
||||
I.loc = src
|
||||
for(var/mob/M in viewers(src))
|
||||
if(M == user) continue
|
||||
M.show_message("\blue [user.name] inserts the [dish.name] in the [src.name]", 3)
|
||||
|
||||
|
||||
else
|
||||
user << "There is already a dish inserted"
|
||||
|
||||
//else
|
||||
return
|
||||
|
||||
|
||||
/obj/machinery/disease2/diseaseanalyser/process()
|
||||
if(stat & (NOPOWER|BROKEN))
|
||||
return
|
||||
use_power(500)
|
||||
src.updateDialog()
|
||||
|
||||
|
||||
if(scanning)
|
||||
scanning -= 1
|
||||
if(scanning == 0)
|
||||
var/r = "GNAv2 based virus lifeform"
|
||||
r += "<BR>Infection rate : [dish.virus2.infectionchance * 10]"
|
||||
r += "<BR>Spread form : [dish.virus2.spreadtype]"
|
||||
r += "<BR>Progress Speed : [dish.virus2.stageprob * 10]"
|
||||
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]."
|
||||
var/obj/item/weapon/paper/P = new /obj/item/weapon/paper(src.loc)
|
||||
P.info = r
|
||||
dish.info = r
|
||||
dish.analysed = 1
|
||||
dish.loc = src.loc
|
||||
dish = null
|
||||
icon_state = "analyser"
|
||||
|
||||
for(var/mob/O in hearers(src, null))
|
||||
O.show_message("\icon[src] \blue The [src.name] prints a sheet of paper", 3)
|
||||
else if(dish && !scanning && !pause)
|
||||
if(dish.virus2 && dish.growth > 50)
|
||||
dish.growth -= 10
|
||||
scanning = 25
|
||||
icon_state = "analyser_processing"
|
||||
else
|
||||
pause = 1
|
||||
spawn(25)
|
||||
dish.loc = src.loc
|
||||
dish = null
|
||||
for(var/mob/M in viewers(src))
|
||||
M.show_message("\icon[src] \blue The [src.name] buzzes", 2)
|
||||
pause = 0
|
||||
|
||||
|
||||
|
||||
return
|
||||
@@ -1,331 +0,0 @@
|
||||
//To simplify, all diseases have 4 stages, with effects starting at stage 2
|
||||
//Stage 1 = Rest,Minor disease
|
||||
//Stage 2 = Minimal effect
|
||||
//Stage 3 = Medium effect
|
||||
//Stage 4 = Death/Really Really really bad effect
|
||||
|
||||
|
||||
/proc/infect_virus2(var/mob/living/carbon/M,var/datum/disease2/disease/disease,var/forced = 0)
|
||||
if(prob(disease.infectionchance))
|
||||
if(M.virus2)
|
||||
return
|
||||
else
|
||||
var/score = 0
|
||||
if(!forced)
|
||||
if(istype(M, /mob/living/carbon/human))
|
||||
if(M:gloves)
|
||||
score += 5
|
||||
if(istype(M:wear_suit, /obj/item/clothing/suit/space)) score += 10
|
||||
if(istype(M:wear_suit, /obj/item/clothing/suit/bio_suit)) score += 10
|
||||
if(istype(M:head, /obj/item/clothing/head/helmet/space)) score += 5
|
||||
if(istype(M:head, /obj/item/clothing/head/bio_hood)) score += 5
|
||||
if(M.wear_mask)
|
||||
score += 5
|
||||
if((istype(M:wear_mask, /obj/item/clothing/mask) || istype(M:wear_mask, /obj/item/clothing/mask/surgical)) && !M.internal)
|
||||
score += 5
|
||||
if(M.internal)
|
||||
score += 5
|
||||
|
||||
if(score > 15)
|
||||
return
|
||||
// else if(score == 20 && prob(95))
|
||||
// return
|
||||
else if(score == 15 && prob(75))
|
||||
return
|
||||
else if(score == 10 && prob(55))
|
||||
return
|
||||
else if(score == 5 && prob(35))
|
||||
return
|
||||
|
||||
M.virus2 = disease.getcopy()
|
||||
M.virus2.minormutate()
|
||||
|
||||
for(var/datum/disease2/resistance/res in M.resistances)
|
||||
if(res.resistsdisease(M.virus2))
|
||||
M.virus2 = null
|
||||
|
||||
|
||||
|
||||
/datum/disease2/resistance
|
||||
var/list/datum/disease2/effect/resistances = list()
|
||||
|
||||
proc/resistsdisease(var/datum/disease2/disease/virus2)
|
||||
var/list/res2 = list()
|
||||
for(var/datum/disease2/effect/e in resistances)
|
||||
res2 += e.type
|
||||
for(var/datum/disease2/effectholder/holder in virus2)
|
||||
if(!(holder.effect.type in res2))
|
||||
return 0
|
||||
else
|
||||
res2 -= holder.effect.type
|
||||
if(res2.len > 0)
|
||||
return 0
|
||||
else
|
||||
return 1
|
||||
|
||||
New(var/datum/disease2/disease/virus2)
|
||||
for(var/datum/disease2/effectholder/h in virus2.effects)
|
||||
resistances += h.effect.type
|
||||
|
||||
|
||||
/proc/infect_mob_random(var/mob/living/carbon/M)
|
||||
if(!M.virus2)
|
||||
M.virus2 = new /datum/disease2/disease
|
||||
M.virus2.makerandom()
|
||||
|
||||
/datum/disease2/disease
|
||||
var/infectionchance = 10
|
||||
var/spreadtype = "Blood" // Can also be "Airborne"
|
||||
var/stage = 1
|
||||
var/stageprob = 2
|
||||
var/dead = 0
|
||||
var/clicks = 0
|
||||
|
||||
var/uniqueID = 0
|
||||
var/list/datum/disease2/effectholder/effects = list()
|
||||
proc/makerandom()
|
||||
var/datum/disease2/effectholder/holder = new /datum/disease2/effectholder
|
||||
holder.stage = 1
|
||||
holder.getrandomeffect()
|
||||
effects += holder
|
||||
holder = new /datum/disease2/effectholder
|
||||
holder.stage = 2
|
||||
holder.getrandomeffect()
|
||||
effects += holder
|
||||
holder = new /datum/disease2/effectholder
|
||||
holder.stage = 3
|
||||
holder.getrandomeffect()
|
||||
effects += holder
|
||||
holder = new /datum/disease2/effectholder
|
||||
holder.stage = 4
|
||||
holder.getrandomeffect()
|
||||
effects += holder
|
||||
uniqueID = rand(0,10000)
|
||||
infectionchance = rand(1,10)
|
||||
spreadtype = "Airborne"
|
||||
proc/minormutate()
|
||||
var/datum/disease2/effectholder/holder = pick(effects)
|
||||
holder.minormutate()
|
||||
infectionchance = min(10,infectionchance + rand(0,1))
|
||||
proc/issame(var/datum/disease2/disease/disease)
|
||||
var/list/types = list()
|
||||
var/list/types2 = list()
|
||||
for(var/datum/disease2/effectholder/d in effects)
|
||||
types += d.effect.type
|
||||
var/equal = 1
|
||||
|
||||
for(var/datum/disease2/effectholder/d in disease.effects)
|
||||
types2 += d.effect.type
|
||||
|
||||
for(var/type in types)
|
||||
if(!(type in types2))
|
||||
equal = 0
|
||||
return equal
|
||||
|
||||
proc/activate(var/mob/living/carbon/mob)
|
||||
if(dead)
|
||||
mob.virus2 = null
|
||||
return
|
||||
if(mob.stat == 2)
|
||||
return
|
||||
if(mob.radiation > 50)
|
||||
if(prob(1))
|
||||
majormutate()
|
||||
if(mob.reagents.has_reagent("spaceacillin"))
|
||||
return
|
||||
if(prob(stageprob) && prob(25 + (clicks/100)) && stage != 4)
|
||||
stage++
|
||||
clicks = 0
|
||||
for(var/datum/disease2/effectholder/e in effects)
|
||||
e.runeffect(mob,stage)
|
||||
|
||||
proc/cure_added(var/datum/disease2/resistance/res)
|
||||
if(res.resistsdisease(src))
|
||||
dead = 1
|
||||
|
||||
proc/majormutate()
|
||||
var/datum/disease2/effectholder/holder = pick(effects)
|
||||
holder.majormutate()
|
||||
|
||||
|
||||
proc/getcopy()
|
||||
// world << "getting copy"
|
||||
var/datum/disease2/disease/disease = new /datum/disease2/disease
|
||||
disease.infectionchance = infectionchance
|
||||
disease.spreadtype = spreadtype
|
||||
disease.stageprob = stageprob
|
||||
for(var/datum/disease2/effectholder/holder in effects)
|
||||
// world << "adding effects"
|
||||
var/datum/disease2/effectholder/newholder = new /datum/disease2/effectholder
|
||||
newholder.effect = new holder.effect.type
|
||||
newholder.chance = holder.chance
|
||||
newholder.cure = holder.cure
|
||||
newholder.multiplier = holder.multiplier
|
||||
newholder.happensonce = holder.happensonce
|
||||
newholder.stage = holder.stage
|
||||
disease.effects += newholder
|
||||
// world << "[newholder.effect.name]"
|
||||
// world << "[disease]"
|
||||
return disease
|
||||
|
||||
/datum/disease2/effect
|
||||
var/name = "Blanking effect"
|
||||
var/stage = 4
|
||||
var/maxm = 1
|
||||
proc/activate(var/mob/living/carbon/mob,var/multiplier)
|
||||
|
||||
/datum/disease2/effect/gibbingtons
|
||||
name = "Gibbingtons Syndrome"
|
||||
stage = 4
|
||||
activate(var/mob/living/carbon/mob,var/multiplier)
|
||||
mob.gib()
|
||||
|
||||
/datum/disease2/effect/radian
|
||||
name = "Radian's syndrome"
|
||||
stage = 4
|
||||
maxm = 3
|
||||
activate(var/mob/living/carbon/mob,var/multiplier)
|
||||
mob.radiation += (2*multiplier)
|
||||
|
||||
/datum/disease2/effect/toxins
|
||||
name = "Hyperacid Syndrome"
|
||||
stage = 3
|
||||
maxm = 3
|
||||
activate(var/mob/living/carbon/mob,var/multiplier)
|
||||
mob.adjustToxLoss(2*multiplier)
|
||||
|
||||
/datum/disease2/effect/scream
|
||||
name = "Random screaming syndrome"
|
||||
stage = 2
|
||||
activate(var/mob/living/carbon/mob,var/multiplier)
|
||||
mob.say("*scream")
|
||||
|
||||
/datum/disease2/effect/drowsness
|
||||
name = "Automated sleeping syndrome"
|
||||
stage = 2
|
||||
activate(var/mob/living/carbon/mob,var/multiplier)
|
||||
mob.drowsyness += 10
|
||||
|
||||
/datum/disease2/effect/shakey
|
||||
name = "World Shaking syndrome"
|
||||
stage = 3
|
||||
maxm = 3
|
||||
activate(var/mob/living/carbon/mob,var/multiplier)
|
||||
shake_camera(mob,5*multiplier)
|
||||
|
||||
/datum/disease2/effect/deaf
|
||||
name = "Hard of hearing syndrome"
|
||||
stage = 4
|
||||
activate(var/mob/living/carbon/mob,var/multiplier)
|
||||
mob.ear_deaf += 20
|
||||
|
||||
/datum/disease2/effect/invisible
|
||||
name = "Waiting Syndrome"
|
||||
stage = 1
|
||||
activate(var/mob/living/carbon/mob,var/multiplier)
|
||||
return
|
||||
/*
|
||||
/datum/disease2/effect/telepathic
|
||||
name = "Telepathy Syndrome"
|
||||
stage = 3
|
||||
activate(var/mob/living/carbon/mob,var/multiplier)
|
||||
mob.mutations |= 512
|
||||
*/
|
||||
/datum/disease2/effect/noface
|
||||
name = "Identity Loss syndrome"
|
||||
stage = 4
|
||||
activate(var/mob/living/carbon/mob,var/multiplier)
|
||||
mob.real_name = "Unknown"
|
||||
|
||||
/datum/disease2/effect/monkey
|
||||
name = "Monkism syndrome"
|
||||
stage = 4
|
||||
activate(var/mob/living/carbon/mob,var/multiplier)
|
||||
if(istype(mob,/mob/living/carbon/human))
|
||||
var/mob/living/carbon/human/h = mob
|
||||
h.monkeyize()
|
||||
|
||||
/datum/disease2/effect/sneeze
|
||||
name = "Coldingtons Effect"
|
||||
stage = 1
|
||||
activate(var/mob/living/carbon/mob,var/multiplier)
|
||||
mob.say("*sneeze")
|
||||
|
||||
/datum/disease2/effect/gunck
|
||||
name = "Flemmingtons"
|
||||
stage = 1
|
||||
activate(var/mob/living/carbon/mob,var/multiplier)
|
||||
mob << "\red Mucous runs down the back of your throat."
|
||||
|
||||
/datum/disease2/effect/killertoxins
|
||||
name = "Toxification syndrome"
|
||||
stage = 4
|
||||
activate(var/mob/living/carbon/mob,var/multiplier)
|
||||
mob.adjustToxLoss(15)
|
||||
/*
|
||||
/datum/disease2/effect/hallucinations
|
||||
name = "Hallucinational Syndrome"
|
||||
stage = 3
|
||||
activate(var/mob/living/carbon/mob,var/multiplier)
|
||||
mob.hallucination += 25
|
||||
*/
|
||||
/datum/disease2/effect/sleepy
|
||||
name = "Resting syndrome"
|
||||
stage = 2
|
||||
activate(var/mob/living/carbon/mob,var/multiplier)
|
||||
mob.say("*collapse")
|
||||
|
||||
/datum/disease2/effect/mind
|
||||
name = "Lazy mind syndrome"
|
||||
stage = 3
|
||||
activate(var/mob/living/carbon/mob,var/multiplier)
|
||||
mob.brainloss = 50
|
||||
|
||||
/datum/disease2/effect/suicide
|
||||
name = "Suicidal syndrome"
|
||||
stage = 4
|
||||
activate(var/mob/living/carbon/mob,var/multiplier)
|
||||
mob.suiciding = 1
|
||||
//instead of killing them instantly, just put them at -175 health and let 'em gasp for a while
|
||||
viewers(mob) << "\red <b>[mob.name] is attempting to bite off \his tongue. It looks like \he's trying to commit suicide.</b>"
|
||||
mob.oxyloss = max(175 - mob.getToxLoss() - mob.getFireLoss() - mob.getBruteLoss(), mob.getOxyLoss())
|
||||
mob.updatehealth()
|
||||
spawn(200) //in case they get revived by cryo chamber or something stupid like that, let them suicide again in 20 seconds
|
||||
mob.suiciding = 0
|
||||
|
||||
/datum/disease2/effectholder
|
||||
var/name = "Holder"
|
||||
var/datum/disease2/effect/effect
|
||||
var/chance = 0 //Chance in percentage each tick
|
||||
var/cure = "" //Type of cure it requires
|
||||
var/happensonce = 0
|
||||
var/multiplier = 1 //The chance the effects are WORSE
|
||||
var/stage = 0
|
||||
|
||||
proc/runeffect(var/mob/living/carbon/human/mob,var/stage)
|
||||
if(happensonce > -1 && effect.stage <= stage && prob(chance))
|
||||
effect.activate(mob)
|
||||
if(happensonce == 1)
|
||||
happensonce = -1
|
||||
|
||||
proc/getrandomeffect()
|
||||
var/list/datum/disease2/effect/list = list()
|
||||
for(var/e in (typesof(/datum/disease2/effect) - /datum/disease2/effect))
|
||||
// world << "Making [e]"
|
||||
var/datum/disease2/effect/f = new e
|
||||
if(f.stage == src.stage)
|
||||
list += f
|
||||
effect = pick(list)
|
||||
chance = rand(1,6)
|
||||
|
||||
proc/minormutate()
|
||||
switch(pick(1,2,3,4,5))
|
||||
if(1)
|
||||
chance = rand(0,100)
|
||||
if(2)
|
||||
multiplier = rand(1,effect.maxm)
|
||||
proc/majormutate()
|
||||
getrandomeffect()
|
||||
|
||||
/proc/dprob(var/p)
|
||||
return(prob(sqrt(p)) && prob(sqrt(p)))
|
||||
@@ -1,20 +0,0 @@
|
||||
/obj/machinery/disease2/biodestroyer
|
||||
name = "Biohazard destroyer"
|
||||
icon = 'disposal.dmi'
|
||||
icon_state = "disposal"
|
||||
var/list/accepts = list(/obj/item/clothing,/obj/item/weapon/virusdish/,/obj/item/weapon/cureimplanter,/obj/item/weapon/diseasedisk)
|
||||
density = 1
|
||||
anchored = 1
|
||||
|
||||
/obj/machinery/disease2/biodestroyer/attackby(var/obj/I as obj, var/mob/user as mob)
|
||||
for(var/path in accepts)
|
||||
if(I.type in typesof(path))
|
||||
user.drop_item()
|
||||
del(I)
|
||||
overlays += image('disposal.dmi', "dispover-handle")
|
||||
return
|
||||
user.drop_item()
|
||||
I.loc = src.loc
|
||||
|
||||
for(var/mob/O in hearers(src, null))
|
||||
O.show_message("\icon[src] \blue The [src.name] beeps", 2)
|
||||
@@ -1,42 +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 && prob(25))
|
||||
M.resistances2 += resistance
|
||||
if(M.virus2)
|
||||
M.virus2.cure_added(resistance)
|
||||
else if(works == 1)
|
||||
M.adjustToxLoss(rand(20,50))
|
||||
else if(works == 2)
|
||||
M.adjustToxLoss(rand(50,100))
|
||||
else if(works == 3)
|
||||
infect_virus2(M,virus2,1)
|
||||
@@ -1,154 +0,0 @@
|
||||
/obj/machinery/computer/curer
|
||||
name = "Cure Research Machine"
|
||||
icon = 'computer.dmi'
|
||||
icon_state = "dna"
|
||||
// brightnessred = 0
|
||||
// brightnessgreen = 2 //Used for multicoloured lighting on BS12
|
||||
// brightnessblue = 2
|
||||
var/curing
|
||||
var/virusing
|
||||
circuit = "/obj/item/weapon/circuitboard/mining"
|
||||
|
||||
var/obj/item/weapon/virusdish/dish = null
|
||||
|
||||
/obj/machinery/computer/curer/attackby(var/obj/I as obj, var/mob/user as mob)
|
||||
/*if(istype(I, /obj/item/weapon/screwdriver))
|
||||
playsound(src.loc, 'Screwdriver.ogg', 50, 1)
|
||||
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/virusdish))
|
||||
var/mob/living/carbon/c = user
|
||||
if(!dish)
|
||||
|
||||
dish = I
|
||||
c.drop_item()
|
||||
I.loc = src
|
||||
|
||||
//else
|
||||
src.attack_hand(user)
|
||||
return
|
||||
|
||||
/obj/machinery/computer/curer/attack_ai(var/mob/user as mob)
|
||||
return src.attack_hand(user)
|
||||
|
||||
/obj/machinery/computer/curer/attack_paw(var/mob/user as mob)
|
||||
|
||||
return src.attack_hand(user)
|
||||
return
|
||||
|
||||
/obj/machinery/computer/curer/attack_hand(var/mob/user as mob)
|
||||
if(..())
|
||||
return
|
||||
user.machine = src
|
||||
var/dat
|
||||
if(curing)
|
||||
dat = "Antibody production in progress"
|
||||
else if(virusing)
|
||||
dat = "Virus production in progress"
|
||||
else if(dish)
|
||||
dat = "Virus dish inserted"
|
||||
if(dish.virus2)
|
||||
if(dish.growth >= 100)
|
||||
dat += "<BR><A href='?src=\ref[src];antibody=1'>Begin antibody production</a>"
|
||||
dat += "<BR><A href='?src=\ref[src];virus=1'>Begin virus production</a>"
|
||||
else
|
||||
dat += "<BR>Insufficent cells to attempt to create cure"
|
||||
else
|
||||
dat += "<BR>Please check dish contents"
|
||||
|
||||
dat += "<BR><A href='?src=\ref[src];eject=1'>Eject disk</a>"
|
||||
else
|
||||
dat = "Please insert dish"
|
||||
|
||||
user << browse(dat, "window=computer;size=400x500")
|
||||
onclose(user, "computer")
|
||||
return
|
||||
|
||||
/obj/machinery/computer/curer/process()
|
||||
..()
|
||||
|
||||
if(stat & (NOPOWER|BROKEN))
|
||||
return
|
||||
use_power(500)
|
||||
src.updateDialog()
|
||||
|
||||
if(curing)
|
||||
curing -= 1
|
||||
if(curing == 0)
|
||||
icon_state = "dna"
|
||||
if(dish.virus2)
|
||||
createcure(dish.virus2)
|
||||
if(virusing)
|
||||
virusing -= 1
|
||||
if(virusing == 0)
|
||||
icon_state = "dna"
|
||||
if(dish.virus2)
|
||||
createvirus(dish.virus2)
|
||||
|
||||
return
|
||||
|
||||
/obj/machinery/computer/curer/Topic(href, href_list)
|
||||
if(..())
|
||||
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["antibody"])
|
||||
curing = 30
|
||||
dish.growth -= 50
|
||||
src.icon_state = "dna"
|
||||
if (href_list["virus"])
|
||||
virusing = 30
|
||||
dish.growth -= 100
|
||||
src.icon_state = "dna"
|
||||
else if(href_list["eject"])
|
||||
dish.loc = src.loc
|
||||
dish = null
|
||||
|
||||
src.add_fingerprint(usr)
|
||||
src.updateUsrDialog()
|
||||
return
|
||||
|
||||
|
||||
/obj/machinery/computer/curer/proc/createcure(var/datum/disease2/disease/virus2)
|
||||
var/obj/item/weapon/cureimplanter/implanter = new /obj/item/weapon/cureimplanter(src.loc)
|
||||
implanter.resistance = new /datum/disease2/resistance(dish.virus2)
|
||||
if(probG("Virus curing",3))
|
||||
implanter.works = 0
|
||||
else
|
||||
implanter.works = rand(1,2)
|
||||
state("The [src.name] Buzzes")
|
||||
|
||||
/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.virus2 = dish.virus2.getcopy()
|
||||
implanter.works = 3
|
||||
state("The [src.name] Buzzes")
|
||||
|
||||
|
||||
/obj/machinery/computer/curer/proc/state(var/msg)
|
||||
for(var/mob/O in hearers(src, null))
|
||||
O.show_message("\icon[src] \blue [msg]", 2)
|
||||
@@ -1,202 +0,0 @@
|
||||
/obj/machinery/computer/diseasesplicer
|
||||
name = "Disease Splicer"
|
||||
icon = 'computer.dmi'
|
||||
icon_state = "crew"
|
||||
//brightnessred = 0
|
||||
// brightnessgreen = 2
|
||||
// brightnessblue = 2
|
||||
// broken_icon
|
||||
|
||||
var/datum/disease2/effectholder/memorybank = null
|
||||
var/analysed = 0
|
||||
var/obj/item/weapon/virusdish/dish = null
|
||||
var/burning = 0
|
||||
|
||||
var/splicing = 0
|
||||
var/scanning = 0
|
||||
|
||||
/obj/machinery/computer/diseasesplicer/attackby(var/obj/I as obj, var/mob/user as mob)
|
||||
/*
|
||||
if(istype(I, /obj/item/weapon/screwdriver))
|
||||
playsound(src.loc, 'Screwdriver.ogg', 50, 1)
|
||||
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))
|
||||
var/mob/living/carbon/c = user
|
||||
if(!dish)
|
||||
|
||||
dish = I
|
||||
c.drop_item()
|
||||
I.loc = src
|
||||
if(istype(I,/obj/item/weapon/diseasedisk))
|
||||
user << "You upload the contents of the disk into the buffer"
|
||||
memorybank = I:effect
|
||||
|
||||
|
||||
//else
|
||||
src.attack_hand(user)
|
||||
return
|
||||
|
||||
/obj/machinery/computer/diseasesplicer/attack_ai(var/mob/user as mob)
|
||||
return src.attack_hand(user)
|
||||
|
||||
/obj/machinery/computer/diseasesplicer/attack_paw(var/mob/user as mob)
|
||||
|
||||
return src.attack_hand(user)
|
||||
return
|
||||
|
||||
/obj/machinery/computer/diseasesplicer/attack_hand(var/mob/user as mob)
|
||||
if(..())
|
||||
return
|
||||
user.machine = src
|
||||
var/dat
|
||||
if(splicing)
|
||||
dat = "Splicing in progress"
|
||||
else if(scanning)
|
||||
dat = "Splicing in progress"
|
||||
else if(burning)
|
||||
dat = "Data disk burning in progress"
|
||||
else
|
||||
if(dish)
|
||||
dat = "Virus dish inserted"
|
||||
|
||||
dat += "<BR>Current DNA strand : "
|
||||
if(memorybank)
|
||||
dat += "<A href='?src=\ref[src];splice=1'>"
|
||||
if(analysed)
|
||||
dat += "[memorybank.effect.name] ([5-memorybank.effect.stage])"
|
||||
else
|
||||
dat += "Unknown DNA strand ([5-memorybank.effect.stage])"
|
||||
dat += "</a>"
|
||||
|
||||
dat += "<BR><A href='?src=\ref[src];disk=1'>Burn DNA Sequence to data storage disk</a>"
|
||||
else
|
||||
dat += "Empty"
|
||||
|
||||
dat += "<BR><BR>"
|
||||
|
||||
if(dish)
|
||||
if(dish.virus2)
|
||||
if(dish.growth >= 50)
|
||||
for(var/datum/disease2/effectholder/e in dish.virus2.effects)
|
||||
dat += "<BR><A href='?src=\ref[src];grab=\ref[e]'> DNA strand"
|
||||
if(dish.analysed)
|
||||
dat += ": [e.effect.name]"
|
||||
dat += " (5-[e.effect.stage])</a>"
|
||||
else
|
||||
dat += "<BR>Insufficent cells to attempt gene splicing"
|
||||
else
|
||||
dat += "<BR>No virus found in dish"
|
||||
|
||||
dat += "<BR><BR><A href='?src=\ref[src];eject=1'>Eject disk</a>"
|
||||
else
|
||||
dat += "<BR>Please insert dish"
|
||||
|
||||
user << browse(dat, "window=computer;size=400x500")
|
||||
onclose(user, "computer")
|
||||
return
|
||||
|
||||
/obj/machinery/computer/diseasesplicer/process()
|
||||
if(stat & (NOPOWER|BROKEN))
|
||||
return
|
||||
use_power(500)
|
||||
src.updateDialog()
|
||||
|
||||
if(scanning)
|
||||
scanning -= 1
|
||||
if(!scanning)
|
||||
state("The [src.name] beeps")
|
||||
icon_state = "crew"
|
||||
if(splicing)
|
||||
splicing -= 1
|
||||
if(!splicing)
|
||||
state("The [src.name] pings")
|
||||
icon_state = "crew"
|
||||
if(burning)
|
||||
burning -= 1
|
||||
if(!burning)
|
||||
var/obj/item/weapon/diseasedisk/d = new /obj/item/weapon/diseasedisk(src.loc)
|
||||
if(analysed)
|
||||
d.name = "[memorybank.effect.name] GNA disk (Stage: [5-memorybank.effect.stage])"
|
||||
else
|
||||
d.name = "Unknown GNA disk (Stage: [5-memorybank.effect.stage])"
|
||||
d.effect = memorybank
|
||||
state("The [src.name] zings")
|
||||
icon_state = "crew"
|
||||
|
||||
|
||||
return
|
||||
|
||||
/obj/machinery/computer/diseasesplicer/Topic(href, href_list)
|
||||
if(..())
|
||||
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"])
|
||||
memorybank = locate(href_list["grab"])
|
||||
analysed = dish.analysed
|
||||
del(dish)
|
||||
dish = null
|
||||
scanning = 30
|
||||
icon_state = "crew"
|
||||
|
||||
else if(href_list["eject"])
|
||||
dish.loc = src.loc
|
||||
dish = null
|
||||
|
||||
else if(href_list["splice"])
|
||||
for(var/datum/disease2/effectholder/e in dish.virus2.effects)
|
||||
if(e.stage == memorybank.stage)
|
||||
e.effect = memorybank.effect
|
||||
splicing = 50
|
||||
dish.virus2.spreadtype = "Blood"
|
||||
icon_state = "crew"
|
||||
|
||||
else if(href_list["disk"])
|
||||
burning = 20
|
||||
icon_state = "crew"
|
||||
|
||||
src.add_fingerprint(usr)
|
||||
src.updateUsrDialog()
|
||||
return
|
||||
|
||||
/obj/machinery/computer/diseasesplicer/proc/state(var/msg)
|
||||
for(var/mob/O in hearers(src, null))
|
||||
O.show_message("\icon[src] \blue [msg]", 2)
|
||||
|
||||
|
||||
/obj/item/weapon/diseasedisk
|
||||
name = "Blank GNA disk"
|
||||
icon = 'cloning.dmi'
|
||||
icon_state = "datadisk2"
|
||||
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
|
||||
@@ -1,176 +0,0 @@
|
||||
/obj/machinery/disease2/incubator/
|
||||
name = "Pathogenic incubator"
|
||||
density = 1
|
||||
anchored = 1
|
||||
icon = 'virology.dmi'
|
||||
icon_state = "incubator"
|
||||
var/obj/item/weapon/virusdish/dish
|
||||
var/obj/item/weapon/reagent_containers/glass/beaker = null
|
||||
var/radiation = 0
|
||||
|
||||
var/on = 0
|
||||
var/power = 0
|
||||
|
||||
var/foodsupply = 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()
|
||||
if (prob(25))
|
||||
del(src)
|
||||
|
||||
meteorhit()
|
||||
del(src)
|
||||
return
|
||||
|
||||
attackby(var/obj/B as obj, var/mob/user as mob)
|
||||
if(istype(B, /obj/item/weapon/reagent_containers/glass) || istype(B,/obj/item/weapon/reagent_containers/syringe))
|
||||
|
||||
if(src.beaker)
|
||||
if(istype(beaker,/obj/item/weapon/reagent_containers/syringe))
|
||||
user << "A syringe is already loaded into the machine."
|
||||
else
|
||||
user << "A beaker is already loaded into the machine."
|
||||
return
|
||||
|
||||
src.beaker = B
|
||||
user.drop_item()
|
||||
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(src.dish)
|
||||
user << "A dish is already loaded into the machine."
|
||||
return
|
||||
|
||||
src.dish = B
|
||||
user.drop_item()
|
||||
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(stat & BROKEN) return
|
||||
if(usr.stat || usr.restrained()) return
|
||||
if(!in_range(src, usr)) return
|
||||
|
||||
usr.machine = src
|
||||
if(!dish) return
|
||||
|
||||
if (href_list["power"])
|
||||
on = !on
|
||||
if(on)
|
||||
icon_state = "incubator_on"
|
||||
else
|
||||
icon_state = "incubator"
|
||||
if (href_list["ejectchem"])
|
||||
if(beaker)
|
||||
beaker.loc = src.loc
|
||||
beaker = null
|
||||
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>"
|
||||
dat += "<A href='?src=\ref[src];close=1'>Close</A>"
|
||||
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>"
|
||||
|
||||
|
||||
user << browse("<TITLE>Pathogenic incubator</TITLE>incubator menu:<BR><BR>[dat]", "window=incubator;size=575x400")
|
||||
onclose(user, "incubator")
|
||||
return
|
||||
|
||||
|
||||
|
||||
|
||||
process()
|
||||
|
||||
if(dish && on && dish.virus2)
|
||||
use_power(50,EQUIP)
|
||||
if(!powered(EQUIP))
|
||||
on = 0
|
||||
icon_state = "incubator"
|
||||
if(foodsupply)
|
||||
foodsupply -= 1
|
||||
dish.growth += 1
|
||||
if(dish.growth == 100)
|
||||
state("The [src.name] pings")
|
||||
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")
|
||||
|
||||
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.reagents.remove_reagent("virusfood",5))
|
||||
foodsupply += 20
|
||||
if(!beaker.reagents.remove_reagent("toxins",1))
|
||||
toxins += 1
|
||||
|
||||
proc/state(var/msg)
|
||||
for(var/mob/O in hearers(src, null))
|
||||
O.show_message("\icon[src] \blue [msg]", 2)
|
||||
@@ -1,139 +0,0 @@
|
||||
/obj/machinery/disease2/isolator/
|
||||
name = "Pathogenic Isolator"
|
||||
density = 1
|
||||
anchored = 1
|
||||
icon = 'virology.dmi'
|
||||
icon_state = "isolator"
|
||||
var/datum/disease2/disease/virus2 = null
|
||||
var/isolating = 0
|
||||
var/beaker = null
|
||||
|
||||
ex_act(severity)
|
||||
switch(severity)
|
||||
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
|
||||
|
||||
attackby(var/obj/item/weapon/reagent_containers/glass/B as obj, var/mob/user as mob)
|
||||
if(!istype(B,/obj/item/weapon/reagent_containers/syringe))
|
||||
return
|
||||
|
||||
if(src.beaker)
|
||||
user << "A syringe is already loaded into the machine."
|
||||
return
|
||||
|
||||
src.beaker = B
|
||||
user.drop_item()
|
||||
B.loc = src
|
||||
if(istype(B,/obj/item/weapon/reagent_containers/syringe))
|
||||
user << "You add the syringe to the machine!"
|
||||
src.updateUsrDialog()
|
||||
icon_state = "isolator_in"
|
||||
|
||||
Topic(href, href_list)
|
||||
if(stat & BROKEN) return
|
||||
if(usr.stat || usr.restrained()) return
|
||||
if(!in_range(src, usr)) return
|
||||
|
||||
usr.machine = src
|
||||
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
|
||||
|
||||
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
|
||||
dat += "<A href='?src=\ref[src];eject=1'>Eject</A><BR><BR>"
|
||||
if(!R.total_volume)
|
||||
dat += "[beaker] is empty."
|
||||
else
|
||||
dat += "Contained reagents:<BR>"
|
||||
for(var/datum/reagent/blood/G in R.reagent_list)
|
||||
dat += " [G.name]: <A href='?src=\ref[src];isolate=[G.id]'>Isolate</a>"
|
||||
user << browse("<TITLE>Pathogenic Isolator</TITLE>Isolator menu:<BR><BR>[dat]", "window=isolator;size=575x400")
|
||||
onclose(user, "isolator")
|
||||
return
|
||||
|
||||
|
||||
|
||||
|
||||
process()
|
||||
if(isolating > 0)
|
||||
isolating -= 1
|
||||
if(isolating == 0)
|
||||
var/obj/item/weapon/virusdish/d = new /obj/item/weapon/virusdish(src.loc)
|
||||
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
|
||||
|
||||
/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))
|
||||
return
|
||||
..()
|
||||
if(prob(50))
|
||||
user << "The dish shatters"
|
||||
if(virus2.infectionchance > 0)
|
||||
infect_virus2(user,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
|
||||
@@ -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
|
||||
@@ -217,7 +217,7 @@
|
||||
return
|
||||
// with a certain chance, the mob may become immune to the disease before it starts properly
|
||||
if(stage <= 1 && clicks == 0)
|
||||
if(prob(20))
|
||||
if(prob(3))
|
||||
mob.antibodies |= antigen // 20% immunity is a good chance IMO, because it allows finding an immune person easily
|
||||
else
|
||||
if(mob.radiation > 50)
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
var/max_energy = 75
|
||||
var/amount = 30
|
||||
var/beaker = null
|
||||
var/list/dispensable_reagents = list("hydrogen","lithium","carbon","nitrogen","oxygen","fluorine","sodium","aluminum","silicon","phosphorus","sulfur","chlorine","potassium","iron","copper","mercury","radium","water","ethanol","sugar","acid",)
|
||||
var/list/dispensable_reagents = list("hydrogen","lithium","carbon","nitrogen","oxygen","fluorine","sodium","aluminum","silicon","phosphorus","sulfur","chlorine","potassium","iron","copper","mercury","radium","water","ethanol","sugar","acid","milk",)
|
||||
|
||||
ex_act(severity)
|
||||
switch(severity)
|
||||
|
||||
@@ -771,6 +771,16 @@ datum
|
||||
on_mob_life(var/mob/living/M as mob)
|
||||
if(!M) M = holder.my_atom
|
||||
M.radiation += 3
|
||||
|
||||
// radium may increase your chances to cure a disease
|
||||
if(istype(M,/mob/living/carbon)) // make sure to only use it on carbon mobs
|
||||
if(M:virus2 && prob(5))
|
||||
if(prob(50))
|
||||
M.radiation += 50 // curing it that way may kill you instead
|
||||
M.adjustToxLoss(100)
|
||||
M:antibodies |= M:virus2.antigen
|
||||
|
||||
|
||||
..()
|
||||
return
|
||||
|
||||
@@ -841,7 +851,7 @@ datum
|
||||
return
|
||||
|
||||
virus_food
|
||||
name = "Virus Food"
|
||||
name = "Dilluted Milk"
|
||||
id = "virusfood"
|
||||
description = "A mixture of water, milk, and oxygen. Virus cells can use this mixture to reproduce."
|
||||
reagent_state = LIQUID
|
||||
|
||||
@@ -147,6 +147,13 @@ datum
|
||||
required_reagents = list("silicon" = 1, "carbon" = 1)
|
||||
result_amount = 2
|
||||
|
||||
virus_food
|
||||
name = "Virus Food"
|
||||
id = "virusfood"
|
||||
result = "virusfood"
|
||||
required_reagents = list("water" = 1, "milk" = 1)
|
||||
result_amount = 5
|
||||
|
||||
leporazine
|
||||
name = "Leporazine"
|
||||
id = "leporazine"
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user