mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-08-28 14:37:04 +01:00
Porting much of Aryn's stuff
-Sounds -Detective Work -Hallucinations Tweaked server air alarm Tweaked gibs Working on de-derping surgery Ported some BS12 stuff (stunned radio and adminwho) Player's mind datum now holds their antagonist preferences.
This commit is contained in:
@@ -65,8 +65,12 @@ MASS SPECTROMETER
|
||||
icon_state = "forensic0"
|
||||
var/amount = 20.0
|
||||
var/printing = 0.0
|
||||
var/fibers_index = 0
|
||||
var/list/stored_fibers = null
|
||||
var/stored_name = null
|
||||
var/list/stored_name = null
|
||||
var/prints_index = 0
|
||||
var/list/stored_prints = null
|
||||
var/list/prints_name = null
|
||||
w_class = 3.0
|
||||
item_state = "electronic"
|
||||
flags = FPRINT | TABLEPASS | ONBELT | CONDUCT | USEDELAY
|
||||
@@ -106,7 +110,7 @@ MASS SPECTROMETER
|
||||
/obj/item/device/detective_scanner/attack(mob/living/carbon/human/M as mob, mob/user as mob)
|
||||
|
||||
if (!ishuman(M))
|
||||
user << "\red [M] is not humas and cannot have the fingerprints."
|
||||
user << "\red [M] is not human and cannot have the fingerprints."
|
||||
return 0
|
||||
if (( !( istype(M.dna, /datum/dna) ) || M.gloves) )
|
||||
user << "\blue No fingerprints found on [M]"
|
||||
@@ -145,26 +149,37 @@ MASS SPECTROMETER
|
||||
user << "\blue Blood type: [A.blood_type]\nDNA: [A.blood_DNA]"
|
||||
else
|
||||
user << "\blue No blood found on [A]."
|
||||
if (!( A.fingerprints ))
|
||||
user << "\blue Unable to locate any fingerprints on [A]!"
|
||||
if (!( A.fingerprints ) && !(A.suit_fibers))
|
||||
user << "\blue Unable to locate any fingerprints or fibers on [A]!"
|
||||
return 0
|
||||
if(!( A.fingerprints ))
|
||||
user << "\blue Unable to locate any fingerprints on [A]!"
|
||||
else
|
||||
if ((src.amount < 1 && src.printing))
|
||||
user << "\blue Fingerprints found. Need more cards to print."
|
||||
src.printing = 0
|
||||
src.icon_state = text("forensic[]", src.printing)
|
||||
if (src.printing)
|
||||
src.amount--
|
||||
var/obj/item/weapon/f_card/F = new /obj/item/weapon/f_card( user.loc )
|
||||
F.amount = 1
|
||||
F.fingerprints = A.fingerprints
|
||||
F.icon_state = "fingerprint1"
|
||||
user << "\blue Done printing."
|
||||
var/list/L = params2list(A.fingerprints)
|
||||
user << text("\blue Isolated [L.len] fingerprints.")
|
||||
for(var/i in L)
|
||||
user << text("\blue \t [i]")
|
||||
//Foreach goto(186)
|
||||
var/list/L = params2list(A.fingerprints)
|
||||
stored_prints[prints_index] = L
|
||||
prints_name[prints_index] = A.name
|
||||
user << text("\blue Isolated [L.len] fingerprints. Stored in memory.")
|
||||
if(!A.suit_fibers)
|
||||
user << "\blue No Fibers/Materials Located."
|
||||
else
|
||||
user << "\blue Fibers/Materials Data Stored: Scan with Hi-Res Forensic Scanner to retrieve."
|
||||
stored_fibers[fibers_index] = A.suit_fibers
|
||||
stored_name[fibers_index] = A.name
|
||||
// else
|
||||
// if ((src.amount < 1 && src.printing))
|
||||
// user << "\blue Fingerprints found. Need more cards to print."
|
||||
// src.printing = 0
|
||||
// src.icon_state = text("forensic[]", src.printing)
|
||||
// if (src.printing)
|
||||
// src.amount--
|
||||
// var/obj/item/weapon/f_card/F = new /obj/item/weapon/f_card( user.loc )
|
||||
// F.amount = 1
|
||||
// F.fingerprints = A.fingerprints
|
||||
// F.icon_state = "fingerprint1"
|
||||
// user << "\blue Done printing."
|
||||
// for(var/i in L)
|
||||
// user << text("\blue \t [i]")
|
||||
// //Foreach goto(186)
|
||||
return
|
||||
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
//HUMANS
|
||||
|
||||
/proc/gibs(atom/location, var/list/viruses)
|
||||
new /obj/effect/gibspawner/human(get_turf(location),viruses)
|
||||
/proc/gibs(atom/location, var/list/viruses, var/datum/dna/MobDNA)
|
||||
new /obj/effect/gibspawner/human(get_turf(location),viruses,MobDNA)
|
||||
|
||||
/proc/xgibs(atom/location, var/list/viruses)
|
||||
new /obj/effect/gibspawner/xeno(get_turf(location),viruses)
|
||||
@@ -16,13 +16,13 @@
|
||||
var/list/gibamounts = list()
|
||||
var/list/gibdirections = list() //of lists
|
||||
|
||||
New(location, var/list/viruses)
|
||||
New(location, var/list/viruses, var/datum/dna/MobDNA)
|
||||
..()
|
||||
|
||||
if(istype(loc,/turf)) //basically if a badmin spawns it
|
||||
Gib(loc,viruses)
|
||||
Gib(loc,viruses,MobDNA)
|
||||
|
||||
proc/Gib(atom/location, var/list/viruses = list())
|
||||
proc/Gib(atom/location, var/list/viruses = list(), var/datum/dna/MobDNA = null)
|
||||
if(gibtypes.len != gibamounts.len || gibamounts.len != gibdirections.len)
|
||||
world << "\red Gib list length mismatch!"
|
||||
return
|
||||
@@ -50,6 +50,12 @@
|
||||
gib.viruses += viruus
|
||||
viruus.holder = gib
|
||||
viruus.spread_type = CONTACT_FEET
|
||||
if(MobDNA)
|
||||
gib.blood_DNA = MobDNA.unique_enzymes
|
||||
if(MobDNA.b_type)
|
||||
gib.blood_type = MobDNA.b_type
|
||||
if(MobDNA.original_name != "Unknown")
|
||||
gib.OriginalMob = MobDNA.original_name
|
||||
var/list/directions = gibdirections[i]
|
||||
if(directions.len)
|
||||
gib.streak(directions)
|
||||
|
||||
@@ -1,78 +0,0 @@
|
||||
//CONTAINS:
|
||||
//Evidence bags and stuff
|
||||
///////////
|
||||
//Shamelessly ripped from Mini's old code.
|
||||
|
||||
/obj/item/weapon/evidencebag
|
||||
name = "evidence bag"
|
||||
desc = "An empty evidence bag."
|
||||
icon = 'storage.dmi'
|
||||
icon_state = "evidenceobj"
|
||||
w_class = 1
|
||||
|
||||
/* buggy and stuff
|
||||
/obj/item/weapon/evidencebag/attackby(obj/item/weapon/O, mob/user as mob)
|
||||
return src.afterattack(O, user)
|
||||
*/
|
||||
|
||||
/obj/item/weapon/evidencebag/afterattack(obj/item/O, mob/user as mob)
|
||||
|
||||
//Now you can put it into a briefcase, if it is in your hand. Otherwise, if it is evidence on the ground, it picks it up.
|
||||
if(istype(O, /obj/item/weapon/storage) && O in user)
|
||||
user << "You put the evidence bag into the [O]."
|
||||
return ..()
|
||||
if(!(O && istype(O)) || O.anchored == 1)
|
||||
user << "You can't put that inside the [src]!"
|
||||
return ..()
|
||||
if(O in user)
|
||||
user << "You are wearing that."
|
||||
return
|
||||
if(src.contents.len > 0)
|
||||
user << "The [src] already has something inside it."
|
||||
return ..()
|
||||
if(istype(O.loc, /obj/item/weapon/storage))
|
||||
user << "This is broke as hell."
|
||||
return
|
||||
/* var/obj/item/weapon/storage/U = O.loc
|
||||
w_class = O.w_class
|
||||
for(var/i, i < U.contents.len, i++)
|
||||
if(O in U.contents[i])
|
||||
U.contents[i] = null
|
||||
O.loc = src
|
||||
continue*/
|
||||
user << "You put the [O] inside the [src]."
|
||||
icon_state = "evidence"
|
||||
src.underlays += O
|
||||
desc = "An evidence bag containing \a [O]. [O.desc]"
|
||||
O.loc = src
|
||||
w_class = O.w_class
|
||||
return
|
||||
|
||||
|
||||
/obj/item/weapon/evidencebag/attack_self(mob/user as mob)
|
||||
if (src.contents.len > 0)
|
||||
var/obj/item/I = src.contents[1]
|
||||
user << "You take the [I] out of the [src]."
|
||||
src.underlays -= I
|
||||
I.loc = get_turf(user.loc)
|
||||
w_class = 1
|
||||
src.icon_state = "evidenceobj"
|
||||
desc = "An empty evidence bag."
|
||||
else
|
||||
user << "[src] is empty."
|
||||
src.icon_state = "evidenceobj"
|
||||
return
|
||||
|
||||
/obj/item/weapon/storage/box/evidence
|
||||
name = "evidence bag box"
|
||||
desc = "A box claiming to contain evidence bags."
|
||||
New()
|
||||
new /obj/item/weapon/evidencebag(src)
|
||||
new /obj/item/weapon/evidencebag(src)
|
||||
new /obj/item/weapon/evidencebag(src)
|
||||
new /obj/item/weapon/evidencebag(src)
|
||||
new /obj/item/weapon/evidencebag(src)
|
||||
new /obj/item/weapon/f_card(src)
|
||||
new /obj/item/weapon/f_card(src)
|
||||
..()
|
||||
return
|
||||
@@ -575,6 +575,8 @@ CIRCULAR SAW
|
||||
S.open = 0
|
||||
if(S.display_name == "chest" && H:embryo_op_stage == 1.0)
|
||||
H:embryo_op_stage = 0.0
|
||||
if(S.display_name == "groin" && H:appendix_op_stage == 1.0)
|
||||
H:appendix_op_stage = 0.0
|
||||
|
||||
H.updatehealth()
|
||||
H.UpdateDamageIcon()
|
||||
@@ -630,13 +632,13 @@ CIRCULAR SAW
|
||||
if(user.zone_sel.selecting == "groin")
|
||||
if(istype(M, /mob/living/carbon/human))
|
||||
switch(M:appendix_op_stage)
|
||||
if(0.0)
|
||||
if(M != user)
|
||||
for(var/mob/O in (viewers(M) - user - M))
|
||||
O.show_message("\red [M] is beginning to have \his abdomen cut open with [src] by [user].", 1)
|
||||
M << "\red [user] begins to cut open your abdomen with [src]!"
|
||||
user << "\red You cut [M]'s abdomen open with [src]!"
|
||||
M:appendix_op_stage = 1.0
|
||||
// if(0.0)
|
||||
// if(M != user)
|
||||
// for(var/mob/O in (viewers(M) - user - M))
|
||||
// O.show_message("\red [M] is beginning to have \his abdomen cut open with [src] by [user].", 1)
|
||||
// M << "\red [user] begins to cut open your abdomen with [src]!"
|
||||
// user << "\red You cut [M]'s abdomen open with [src]!"
|
||||
// M:appendix_op_stage = 1.0
|
||||
if(3.0)
|
||||
if(M != user)
|
||||
for(var/mob/O in (viewers(M) - user - M))
|
||||
@@ -857,6 +859,8 @@ CIRCULAR SAW
|
||||
S.bleeding = 1
|
||||
if(S.display_name == "chest")
|
||||
H:embryo_op_stage = 1.0
|
||||
if(S.display_name == "groin")
|
||||
H:appendix_op_stage = 1.0
|
||||
|
||||
H.updatehealth()
|
||||
H.UpdateDamageIcon()
|
||||
|
||||
Reference in New Issue
Block a user