mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-07-13 08:03:43 +01:00
Merge github.com:Baystation12/Baystation12
Conflicts: html/changelog.html
This commit is contained in:
@@ -353,51 +353,52 @@ obj/machinery/computer/forensic_scanning
|
||||
scan_data = null
|
||||
updateDialog()
|
||||
return
|
||||
scan_process = 0
|
||||
scan_name = scanning.name
|
||||
scan_data = "<u>[scanning]</u><br><br>"
|
||||
if (scanning.blood_DNA)
|
||||
scan_data += "Blood Found:<br>"
|
||||
for(var/blood in scanning.blood_DNA)
|
||||
scan_data += "Blood type: [scanning.blood_DNA[blood]]\nDNA: [blood]<br><br>"
|
||||
else
|
||||
scan_data += "No Blood Found<br><br>"
|
||||
if(!scanning.fingerprints)
|
||||
scan_data += "No Fingerprints Found<br><br>"
|
||||
else
|
||||
var/list/L = scanning.fingerprints
|
||||
scan_data += "Isolated [L.len] Fingerprints. Loaded into database.<br>"
|
||||
add_data(scanning)
|
||||
if(scanning)
|
||||
scan_process = 0
|
||||
scan_name = scanning.name
|
||||
scan_data = "<u>[scanning]</u><br><br>"
|
||||
if (scanning.blood_DNA)
|
||||
scan_data += "Blood Found:<br>"
|
||||
for(var/blood in scanning.blood_DNA)
|
||||
scan_data += "Blood type: [scanning.blood_DNA[blood]]\nDNA: [blood]<br><br>"
|
||||
else
|
||||
scan_data += "No Blood Found<br><br>"
|
||||
if(!scanning.fingerprints)
|
||||
scan_data += "No Fingerprints Found<br><br>"
|
||||
else
|
||||
var/list/L = scanning.fingerprints
|
||||
scan_data += "Isolated [L.len] Fingerprints. Loaded into database.<br>"
|
||||
add_data(scanning)
|
||||
|
||||
if(!scanning.suit_fibers)
|
||||
/*if(istype(scanning,/obj/item/device/detective_scanner))
|
||||
var/obj/item/device/detective_scanner/scanner = scanning
|
||||
if(scanner.stored_name)
|
||||
scan_data += "Fibers/Materials Data - [scanner.stored_name]:<br>"
|
||||
for(var/data in scanner.stored_fibers)
|
||||
scan_data += "- [data]<br>"
|
||||
else
|
||||
scan_data += "No Fibers/Materials Data<br>"
|
||||
else*/
|
||||
scan_data += "No Fibers/Materials Located<br>"
|
||||
else
|
||||
/*if(istype(scanning,/obj/item/device/detective_scanner))
|
||||
var/obj/item/device/detective_scanner/scanner = scanning
|
||||
if(scanner.stored_name)
|
||||
scan_data += "Fibers/Materials Data - [scanner.stored_name]:<br>"
|
||||
for(var/data in scanner.stored_fibers)
|
||||
scan_data += "- [data]<br>"
|
||||
else
|
||||
scan_data += "No Fibers/Materials Data<br>"*/
|
||||
if(!scanning.suit_fibers)
|
||||
/*if(istype(scanning,/obj/item/device/detective_scanner))
|
||||
var/obj/item/device/detective_scanner/scanner = scanning
|
||||
if(scanner.stored_name)
|
||||
scan_data += "Fibers/Materials Data - [scanner.stored_name]:<br>"
|
||||
for(var/data in scanner.stored_fibers)
|
||||
scan_data += "- [data]<br>"
|
||||
else
|
||||
scan_data += "No Fibers/Materials Data<br>"
|
||||
else*/
|
||||
scan_data += "No Fibers/Materials Located<br>"
|
||||
else
|
||||
/*if(istype(scanning,/obj/item/device/detective_scanner))
|
||||
var/obj/item/device/detective_scanner/scanner = scanning
|
||||
if(scanner.stored_name)
|
||||
scan_data += "Fibers/Materials Data - [scanner.stored_name]:<br>"
|
||||
for(var/data in scanner.stored_fibers)
|
||||
scan_data += "- [data]<br>"
|
||||
else
|
||||
scan_data += "No Fibers/Materials Data<br>"*/
|
||||
|
||||
scan_data += "Fibers/Materials Found:<br>"
|
||||
for(var/data in scanning.suit_fibers)
|
||||
scan_data += "- [data]<br>"
|
||||
if(istype(scanning,/obj/item/device/detective_scanner))
|
||||
scan_data += "<br><b>Data transfered from Scanner to Database.</b><br>"
|
||||
add_data_scanner(scanning)
|
||||
else if(!scanning.fingerprints)
|
||||
scan_data += "<br><b><a href='?src=\ref[src];operation=add'>Add to Database?</a></b><br>"
|
||||
scan_data += "Fibers/Materials Found:<br>"
|
||||
for(var/data in scanning.suit_fibers)
|
||||
scan_data += "- [data]<br>"
|
||||
if(istype(scanning,/obj/item/device/detective_scanner))
|
||||
scan_data += "<br><b>Data transfered from Scanner to Database.</b><br>"
|
||||
add_data_scanner(scanning)
|
||||
else if(!scanning.fingerprints)
|
||||
scan_data += "<br><b><a href='?src=\ref[src];operation=add'>Add to Database?</a></b><br>"
|
||||
else
|
||||
temp = "Scan Failed: No Object"
|
||||
|
||||
@@ -467,7 +468,7 @@ obj/machinery/computer/forensic_scanning
|
||||
if(!blood[main_blood])
|
||||
blood[main_blood] = atom_blood_DNA[blood]
|
||||
return 1
|
||||
var/list/templist[2]
|
||||
var/list/templist[3]
|
||||
templist[1] = atom_suit_fibers
|
||||
templist[2] = atom_blood_DNA
|
||||
templist[3] = atom_name
|
||||
|
||||
@@ -2267,8 +2267,7 @@ var/global/BSACooldown = 0
|
||||
if("maint_access_engiebrig")
|
||||
for(var/obj/machinery/door/airlock/maintenance/M in world)
|
||||
if (access_maint_tunnels in M.req_access)
|
||||
M.req_access = list()
|
||||
M.req_one_access = list(access_brig,access_engine)
|
||||
M.req_access = list(access_brig,access_engine)
|
||||
message_admins("[key_name_admin(usr)] made all maint doors engineering and brig access-only.")
|
||||
if("infinite_sec")
|
||||
var/datum/job/J = job_master.GetJob("Security Officer")
|
||||
@@ -2729,17 +2728,12 @@ var/global/BSACooldown = 0
|
||||
dat += "<center><B>Voting</B></center><hr>\n"
|
||||
|
||||
if(lvl > 0)
|
||||
// if(lvl >= 2 )
|
||||
dat += {"
|
||||
<A href='?src=\ref[src];votekill=1'>Abort Vote</A><br>
|
||||
<A href='?src=\ref[src];vmode=1'>Start Vote</A><br>
|
||||
<A href='?src=\ref[src];voteres=1'>Toggle Voting</A><br>
|
||||
"}
|
||||
|
||||
// if(lvl >= 3 )
|
||||
// if(lvl >= 5)
|
||||
// if(lvl == 6 )
|
||||
|
||||
usr << browse(dat, "window=admin2;size=210x160")
|
||||
return
|
||||
|
||||
@@ -2751,11 +2745,11 @@ var/global/BSACooldown = 0
|
||||
|
||||
/obj/admins/proc/vmode()
|
||||
set category = "Server"
|
||||
set name = "Start Vote"
|
||||
set desc="Starts vote"
|
||||
set hidden = 1 // It doesn't have a cancel button, so it shouldn't be autocompleted. Should be started via Voting() instead
|
||||
if (!usr.client.holder)
|
||||
return
|
||||
var/confirm = alert("What vote would you like to start?", "Vote", "Restart", "Custom Vote", "Change Game Mode", "Cancel")
|
||||
|
||||
var/confirm = alert("What vote would you like to start?", "Vote", "Restart", "Custom Vote", "Change Game Mode")
|
||||
switch(confirm)
|
||||
if("Cancel")
|
||||
return
|
||||
|
||||
@@ -220,6 +220,7 @@
|
||||
verbs += /client/proc/jumptokey
|
||||
verbs += /client/proc/jumptomob
|
||||
verbs += /client/proc/jumptoturf
|
||||
verbs += /client/proc/Open_Minimap
|
||||
verbs += /client/proc/cmd_admin_delete
|
||||
verbs += /client/proc/cmd_admin_add_freeform_ai_law
|
||||
verbs += /client/proc/cmd_admin_add_random_ai_law
|
||||
@@ -291,8 +292,9 @@
|
||||
verbs += /client/proc/everyone_random
|
||||
verbs += /client/proc/only_one
|
||||
verbs += /client/proc/deadmin_self
|
||||
verbs += /client/proc/giveruntimelog //used by coders to retrieve runtime logs
|
||||
verbs += /client/proc/cinematic //used by coders to retrieve runtime logs
|
||||
verbs += /client/proc/giveruntimelog //used by coders to retrieve runtime logs
|
||||
verbs += /client/proc/cinematic //show a cinematic sequence
|
||||
verbs += /client/proc/startSinglo //Used to prevent the station from losing power while testing stuff out.
|
||||
verbs += /client/proc/enable_debug_verbs
|
||||
verbs += /client/proc/kill_air
|
||||
verbs += /client/proc/callprocgen
|
||||
@@ -890,8 +892,8 @@
|
||||
switch(alert("You sure you wish to edit this mob's appearance?",,"Yes","No"))
|
||||
if("No")
|
||||
return
|
||||
if(istype(M,/mob/living/carbon/human/tajaran))
|
||||
usr << "\red Tajarans do not have an editable appearance... yet!"
|
||||
if(istype(M,/mob/living/carbon/human/tajaran) || istype(M,/mob/living/carbon/human/birdman))
|
||||
usr << "\red Humanoid aliens do not have an editable appearance... yet!"
|
||||
else
|
||||
var/new_facial = input("Please select facial hair color.", "Character Generation") as color
|
||||
if(new_facial)
|
||||
|
||||
@@ -95,20 +95,24 @@
|
||||
else
|
||||
alert("Admin jumping disabled")
|
||||
|
||||
/client/proc/Getmob(var/mob/M)
|
||||
/client/proc/Getmob(var/mob/M in world)
|
||||
set category = "Admin"
|
||||
set name = "Get Mob"
|
||||
set desc = "Mob to teleport"
|
||||
|
||||
if(!src.holder)
|
||||
src << "Only administrators may use this command."
|
||||
return
|
||||
|
||||
if(config.allow_admin_jump)
|
||||
if(!M || !istype(M))
|
||||
var/mobs = getmobs()
|
||||
var/selection = input("Please, select a player!", "Admin Jumping", null, null) as null|anything in mobs
|
||||
M = mobs[selection]
|
||||
if(!istype(M))
|
||||
if(!selection)
|
||||
return
|
||||
|
||||
M = mobs[selection]
|
||||
|
||||
var/mob/A = src.mob
|
||||
var/turf/T = get_turf(A)
|
||||
if(T && isturf(T))
|
||||
|
||||
@@ -461,7 +461,7 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that
|
||||
set name = "Del-All"
|
||||
|
||||
// to prevent REALLY stupid deletions
|
||||
var/blocked = list(/obj, /mob, /mob/living, /mob/living/carbon, /mob/living/carbon/human)
|
||||
var/blocked = list(/obj, /mob, /mob/living, /mob/living/carbon, /mob/living/carbon/human, /mob/dead, /mob/dead/observer, /mob/living/silicon, /mob/living/silicon/robot, /mob/living/silicon/ai)
|
||||
var/hsbitem = input(usr, "Choose an object to delete.", "Delete:") as null|anything in typesof(/obj) + typesof(/mob) - blocked
|
||||
if(hsbitem)
|
||||
for(var/atom/O in world)
|
||||
@@ -902,6 +902,10 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that
|
||||
|
||||
/client/proc/startSinglo()
|
||||
|
||||
set category = "Debug"
|
||||
set name = "Start Singularity"
|
||||
set desc = "Sets up the singularity and all machines to get power flowing through the station"
|
||||
|
||||
if(alert("Are you sure? This will start up the engine. Should only be used during debug!",,"Yes","No") != "Yes")
|
||||
return
|
||||
|
||||
|
||||
@@ -102,7 +102,9 @@ datum
|
||||
reagent_state = LIQUID
|
||||
color = "#C80000" // rgb: 200, 0, 0
|
||||
on_mob_life(var/mob/living/M)
|
||||
if(istype(M, /mob/living/carbon/human) && blood_incompatible(data["blood_type"],M.dna.b_type))
|
||||
if(!data || !data["blood_type"])
|
||||
..()
|
||||
else if(istype(M, /mob/living/carbon/human) && blood_incompatible(data["blood_type"],M.dna.b_type))
|
||||
M.adjustToxLoss(rand(0.5,1.5))
|
||||
M.adjustOxyLoss(rand(1,1.5))
|
||||
..()
|
||||
@@ -694,10 +696,11 @@ datum
|
||||
id = "sugar"
|
||||
description = "The organic compound commonly known as table sugar and sometimes called saccharose. This white, odorless, crystalline powder has a pleasing, sweet taste."
|
||||
reagent_state = SOLID
|
||||
nutriment_factor = 1 * REAGENTS_METABOLISM
|
||||
color = "#808080" // rgb: 128, 128, 128
|
||||
|
||||
on_mob_life(var/mob/living/M as mob)
|
||||
M:nutrition += 1
|
||||
M:nutrition += nutriment_factor
|
||||
..()
|
||||
return
|
||||
|
||||
@@ -2234,7 +2237,6 @@ datum
|
||||
M:nutrition += nutriment_factor
|
||||
if(!M) M = holder.my_atom
|
||||
if(M:getOxyLoss() && prob(30)) M:adjustOxyLoss(-1)
|
||||
M:nutrition++
|
||||
..()
|
||||
return
|
||||
|
||||
@@ -2250,7 +2252,6 @@ datum
|
||||
M:nutrition += nutriment_factor
|
||||
if(!M) M = holder.my_atom
|
||||
if(M:getFireLoss() && prob(20)) M:heal_organ_damage(0,1)
|
||||
M:nutrition++
|
||||
..()
|
||||
return
|
||||
|
||||
@@ -2266,7 +2267,6 @@ datum
|
||||
M:nutrition += nutriment_factor
|
||||
if(!M) M = holder.my_atom
|
||||
if(M:getToxLoss() && prob(20)) M:adjustToxLoss(-1)
|
||||
M:nutrition++
|
||||
..()
|
||||
return
|
||||
|
||||
@@ -2418,12 +2418,13 @@ datum
|
||||
id = "milk"
|
||||
description = "An opaque white liquid produced by the mammary glands of mammals."
|
||||
reagent_state = LIQUID
|
||||
nutriment_factor = 1.5 * REAGENTS_METABOLISM
|
||||
color = "#DFDFDF" // rgb: 223, 223, 223
|
||||
|
||||
on_mob_life(var/mob/living/M as mob)
|
||||
M:nutrition += nutriment_factor
|
||||
if(!M) M = holder.my_atom
|
||||
if(M:getBruteLoss() && prob(20)) M:heal_organ_damage(1,0)
|
||||
M:nutrition++
|
||||
..()
|
||||
return
|
||||
|
||||
@@ -2432,12 +2433,13 @@ datum
|
||||
id = "soymilk"
|
||||
description = "An opaque white liquid made from soybeans."
|
||||
reagent_state = LIQUID
|
||||
nutriment_factor = 1.2 * REAGENTS_METABOLISM
|
||||
color = "#DFDFC7" // rgb: 223, 223, 199
|
||||
|
||||
on_mob_life(var/mob/living/M as mob)
|
||||
M:nutrition += nutriment_factor
|
||||
if(!M) M = holder.my_atom
|
||||
if(M:getBruteLoss() && prob(20)) M:heal_organ_damage(1,0)
|
||||
M:nutrition++
|
||||
..()
|
||||
return
|
||||
|
||||
@@ -2541,13 +2543,14 @@ datum
|
||||
id = "cola"
|
||||
description = "A refreshing beverage."
|
||||
reagent_state = LIQUID
|
||||
nutriment_factor = 1 * REAGENTS_METABOLISM
|
||||
color = "#100800" // rgb: 16, 8, 0
|
||||
|
||||
on_mob_life(var/mob/living/M as mob)
|
||||
M:drowsyness = max(0,M:drowsyness-5)
|
||||
if (M.bodytemperature > 310)//310 is the normal bodytemp. 310.055
|
||||
M.bodytemperature = max(310, M.bodytemperature-5)
|
||||
M:nutrition += 1
|
||||
M:nutrition += nutriment_factor
|
||||
..()
|
||||
return
|
||||
|
||||
@@ -2556,6 +2559,7 @@ datum
|
||||
id = "nuka_cola"
|
||||
description = "Cola, cola never changes."
|
||||
reagent_state = LIQUID
|
||||
nutriment_factor = 1 * REAGENTS_METABOLISM
|
||||
color = "#100800" // rgb: 16, 8, 0
|
||||
|
||||
on_mob_life(var/mob/living/M as mob)
|
||||
@@ -2567,7 +2571,7 @@ datum
|
||||
M:sleeping = max(0,M.sleeping-2)
|
||||
if (M.bodytemperature > 310)//310 is the normal bodytemp. 310.055
|
||||
M.bodytemperature = max(310, M.bodytemperature-5)
|
||||
M:nutrition += 1
|
||||
M:nutrition += nutriment_factor
|
||||
..()
|
||||
return
|
||||
|
||||
@@ -2576,6 +2580,7 @@ datum
|
||||
id = "spacemountainwind"
|
||||
description = "Blows right through you like a space wind."
|
||||
reagent_state = LIQUID
|
||||
nutriment_factor = 1 * REAGENTS_METABOLISM
|
||||
color = "#102000" // rgb: 16, 32, 0
|
||||
|
||||
on_mob_life(var/mob/living/M as mob)
|
||||
@@ -2585,7 +2590,7 @@ datum
|
||||
if (M.bodytemperature > 310)
|
||||
M.bodytemperature = max(310, M.bodytemperature-5)
|
||||
M.make_jittery(1)
|
||||
M:nutrition += 1
|
||||
M:nutrition += nutriment_factor
|
||||
..()
|
||||
return
|
||||
|
||||
@@ -2594,13 +2599,14 @@ datum
|
||||
id = "dr_gibb"
|
||||
description = "A delicious blend of 42 different flavours"
|
||||
reagent_state = LIQUID
|
||||
nutriment_factor = 1 * REAGENTS_METABOLISM
|
||||
color = "#102000" // rgb: 16, 32, 0
|
||||
|
||||
on_mob_life(var/mob/living/M as mob)
|
||||
M:drowsyness = max(0,M:drowsyness-6)
|
||||
if (M.bodytemperature > 310)
|
||||
M.bodytemperature = max(310, M.bodytemperature-5) //310 is the normal bodytemp. 310.055
|
||||
M:nutrition += 1
|
||||
M:nutrition += nutriment_factor
|
||||
..()
|
||||
return
|
||||
|
||||
@@ -2609,12 +2615,13 @@ datum
|
||||
id = "space_up"
|
||||
description = "Tastes like a hull breach in your mouth."
|
||||
reagent_state = LIQUID
|
||||
nutriment_factor = 1 * REAGENTS_METABOLISM
|
||||
color = "#202800" // rgb: 32, 40, 0
|
||||
|
||||
on_mob_life(var/mob/living/M as mob)
|
||||
if (M.bodytemperature > 310)
|
||||
M.bodytemperature = max(310, M.bodytemperature-8) //310 is the normal bodytemp. 310.055
|
||||
M:nutrition += 1
|
||||
M:nutrition += nutriment_factor
|
||||
..()
|
||||
return
|
||||
|
||||
@@ -2623,12 +2630,13 @@ datum
|
||||
description = "A tangy substance made of 0.5% natural citrus!"
|
||||
id = "lemon_lime"
|
||||
reagent_state = LIQUID
|
||||
nutriment_factor = 1 * REAGENTS_METABOLISM
|
||||
color = "#878F00" // rgb: 135, 40, 0
|
||||
|
||||
on_mob_life(var/mob/living/M as mob)
|
||||
if (M.bodytemperature > 310)
|
||||
M.bodytemperature = max(310, M.bodytemperature-8) //310 is the normal bodytemp. 310.055
|
||||
M:nutrition += 1
|
||||
M:nutrition += nutriment_factor
|
||||
..()
|
||||
return
|
||||
|
||||
@@ -2662,6 +2670,7 @@ datum
|
||||
id = "ethanol"
|
||||
description = "A well-known alcohol with a variety of applications."
|
||||
reagent_state = LIQUID
|
||||
nutriment_factor = 0 //So alcohol can fill you up! If they want to.
|
||||
color = "#404030" // rgb: 64, 64, 48
|
||||
var
|
||||
dizzy_adj = 3
|
||||
@@ -2673,6 +2682,7 @@ datum
|
||||
pass_out = 325 //amount absorbed after which mob starts passing out
|
||||
|
||||
on_mob_life(var/mob/living/M as mob)
|
||||
M:nutrition += nutriment_factor
|
||||
if(!src.data) data = 1
|
||||
src.data++
|
||||
|
||||
@@ -2704,13 +2714,13 @@ datum
|
||||
name = "Beer"
|
||||
id = "beer"
|
||||
description = "An alcoholic beverage made from malted grains, hops, yeast, and water."
|
||||
nutriment_factor = 2 * REAGENTS_METABOLISM
|
||||
color = "#664300" // rgb: 102, 67, 0
|
||||
// slur_start = 25 //amount absorbed after which mob starts slurring
|
||||
// confused_start = 40 //amount absorbed after which mob starts confusing directions //This is quite silly - Erthilo
|
||||
on_mob_life(var/mob/living/M as mob)
|
||||
..()
|
||||
M:jitteriness = max(M:jitteriness-3,0)
|
||||
M:nutrition += 2
|
||||
return
|
||||
|
||||
whiskey
|
||||
@@ -2799,13 +2809,13 @@ datum
|
||||
color = "#102000" // rgb: 16, 32, 0
|
||||
|
||||
on_mob_life(var/mob/living/M as mob)
|
||||
M:nutrition += nutriment_factor
|
||||
M:drowsyness = max(0,M:drowsyness-7)
|
||||
if(!M:sleeping_willingly)
|
||||
M:sleeping = max(0,M.sleeping-2)
|
||||
if (M.bodytemperature > 310)
|
||||
M.bodytemperature = max(310, M.bodytemperature-5)
|
||||
M.make_jittery(1)
|
||||
M:nutrition += 1
|
||||
return
|
||||
|
||||
|
||||
@@ -2949,9 +2959,11 @@ datum
|
||||
id = "doctorsdelight"
|
||||
description = "A gulp a day keeps the MediBot away. That's probably for the best."
|
||||
reagent_state = LIQUID
|
||||
nutriment_factor = 1 * REAGENTS_METABOLISM
|
||||
color = "#664300" // rgb: 102, 67, 0
|
||||
|
||||
on_mob_life(var/mob/living/M as mob)
|
||||
M:nutrition += nutriment_factor
|
||||
if(!M) M = holder.my_atom
|
||||
if(M:getOxyLoss() && prob(50)) M:adjustOxyLoss(-2)
|
||||
if(M:getBruteLoss() && prob(60)) M:heal_organ_damage(2,0)
|
||||
@@ -3111,99 +3123,103 @@ datum
|
||||
description = "A spicy Vodka! Might be a little hot for the little guys!"
|
||||
reagent_state = LIQUID
|
||||
color = "#664300" // rgb: 102, 67, 0
|
||||
|
||||
|
||||
on_mob_life(var/mob/living/M as mob)
|
||||
..()
|
||||
if (M.bodytemperature < 360)
|
||||
M.bodytemperature = min(360, M.bodytemperature+50) //310 is the normal bodytemp. 310.055
|
||||
return
|
||||
|
||||
|
||||
devilskiss
|
||||
name = "Devils Kiss"
|
||||
id = "devilskiss"
|
||||
description = "Creepy time!"
|
||||
reagent_state = LIQUID
|
||||
color = "#A68310" // rgb: 166, 131, 16
|
||||
|
||||
|
||||
red_mead
|
||||
name = "Red Mead"
|
||||
id = "red_mead"
|
||||
description = "The true Viking drink! Even though it has a strange red color."
|
||||
reagent_state = LIQUID
|
||||
color = "#664300" // rgb: 102, 67, 0
|
||||
|
||||
|
||||
mead
|
||||
name = "Mead"
|
||||
id = "mead"
|
||||
description = "A Vikings drink, though a cheap one."
|
||||
reagent_state = LIQUID
|
||||
color = "#664300" // rgb: 102, 67, 0
|
||||
|
||||
|
||||
iced_beer
|
||||
name = "Iced Beer"
|
||||
id = "iced_beer"
|
||||
description = "A beer which is so cold the air around it freezes."
|
||||
reagent_state = LIQUID
|
||||
color = "#664300" // rgb: 102, 67, 0
|
||||
|
||||
|
||||
on_mob_life(var/mob/living/M as mob)
|
||||
..()
|
||||
if (M.bodytemperature < 270)
|
||||
M.bodytemperature = min(270, M.bodytemperature-40) //310 is the normal bodytemp. 310.055
|
||||
return
|
||||
|
||||
|
||||
grog
|
||||
name = "Grog"
|
||||
id = "grog"
|
||||
description = "Watered down rum, NanoTrasen approves!"
|
||||
reagent_state = LIQUID
|
||||
color = "#664300" // rgb: 102, 67, 0
|
||||
|
||||
|
||||
aloe
|
||||
name = "Aloe"
|
||||
id = "aloe"
|
||||
description = "So very, very, very good."
|
||||
reagent_state = LIQUID
|
||||
color = "#664300" // rgb: 102, 67, 0
|
||||
|
||||
|
||||
andalusia
|
||||
name = "Andalusia"
|
||||
id = "andalusia"
|
||||
description = "A nice, strange named drink."
|
||||
reagent_state = LIQUID
|
||||
color = "#664300" // rgb: 102, 67, 0
|
||||
|
||||
|
||||
alliescocktail
|
||||
name = "Allies Cocktail"
|
||||
id = "alliescocktail"
|
||||
description = "A drink made from your allies."
|
||||
reagent_state = LIQUID
|
||||
color = "#664300" // rgb: 102, 67, 0
|
||||
|
||||
|
||||
acid_spit
|
||||
name = "Acid Spit"
|
||||
id = "acidspit"
|
||||
description = "A drink by Nanotrasen. Made from live aliens."
|
||||
reagent_state = LIQUID
|
||||
color = "#365000" // rgb: 54, 80, 0
|
||||
|
||||
|
||||
amasec
|
||||
name = "Amasec"
|
||||
id = "amasec"
|
||||
description = "Official drink of the Imperium."
|
||||
reagent_state = LIQUID
|
||||
color = "#664300" // rgb: 102, 67, 0
|
||||
|
||||
|
||||
on_mob_life(var/mob/living/M as mob)
|
||||
..()
|
||||
M.stunned = 4
|
||||
return
|
||||
|
||||
|
||||
neurotoxin
|
||||
name = "Neurotoxin"
|
||||
id = "neurotoxin"
|
||||
description = "A strong neurotoxin that puts the subject into a death-like state."
|
||||
reagent_state = LIQUID
|
||||
color = "#2E2E61" // rgb: 46, 46, 97
|
||||
|
||||
|
||||
on_mob_life(var/mob/living/M as mob)
|
||||
..()
|
||||
if(!M) M = holder.my_atom
|
||||
M:adjustOxyLoss(0.5)
|
||||
M:adjustOxyLoss(0.5)
|
||||
@@ -3224,52 +3240,38 @@ datum
|
||||
description = "A drink from Mime Heaven."
|
||||
nutriment_factor = 1 * REAGENTS_METABOLISM
|
||||
color = "#664300" // rgb: 102, 67, 0
|
||||
|
||||
|
||||
changelingsting
|
||||
name = "Changeling Sting"
|
||||
id = "changelingsting"
|
||||
description = "A stingy drink."
|
||||
reagent_state = LIQUID
|
||||
color = "#2E6671" // rgb: 46, 102, 113
|
||||
|
||||
|
||||
on_mob_life(var/mob/living/M as mob)
|
||||
if(!data) data = 1
|
||||
data++
|
||||
M.dizziness +=5
|
||||
if(data >= 55 && data <115)
|
||||
if (!M.slurring) M.slurring = 1
|
||||
M.slurring += 5
|
||||
else if(data >= 115 && prob(33))
|
||||
M.confused = max(M:confused+15,15)
|
||||
..()
|
||||
M.dizziness +=5
|
||||
return
|
||||
|
||||
|
||||
irishcarbomb
|
||||
name = "Irish Car Bomb"
|
||||
id = "irishcarbomb"
|
||||
description = "Mmm, tastes like chocolate cake..."
|
||||
reagent_state = LIQUID
|
||||
color = "#2E6671" // rgb: 46, 102, 113
|
||||
|
||||
|
||||
on_mob_life(var/mob/living/M as mob)
|
||||
if(!data) data = 1
|
||||
data++
|
||||
M.dizziness +=5
|
||||
if(data >= 55 && data <115)
|
||||
if (!M.slurring) M.slurring = 1
|
||||
M.slurring += 5
|
||||
else if(data >= 115 && prob(33))
|
||||
M.confused = max(M:confused+15,15)
|
||||
..()
|
||||
M.dizziness +=5
|
||||
return
|
||||
|
||||
|
||||
syndicatebomb
|
||||
name = "Syndicate Bomb"
|
||||
id = "syndicatebomb"
|
||||
description = "A Syndicate bomb"
|
||||
reagent_state = LIQUID
|
||||
color = "#2E6671" // rgb: 46, 102, 113
|
||||
|
||||
|
||||
erikasurprise
|
||||
name = "Erika Surprise"
|
||||
id = "erikasurprise"
|
||||
@@ -3277,6 +3279,12 @@ datum
|
||||
reagent_state = LIQUID
|
||||
color = "#2E6671" // rgb: 46, 102, 113
|
||||
|
||||
driestmartini
|
||||
name = "Driest Martini"
|
||||
id = "driestmartini"
|
||||
description = "Only for the experienced. You think you see sand floating in the glass."
|
||||
nutriment_factor = 1 * REAGENTS_METABOLISM
|
||||
color = "#2E6671" // rgb: 46, 102, 113
|
||||
|
||||
//ALCHOHOL end
|
||||
|
||||
@@ -3350,10 +3358,12 @@ datum
|
||||
id = "soy_latte"
|
||||
description = "A nice and tasty beverage while you are reading your hippie books."
|
||||
reagent_state = LIQUID
|
||||
|
||||
color = "#664300" // rgb: 102, 67, 0
|
||||
|
||||
on_mob_life(var/mob/living/M as mob)
|
||||
..()
|
||||
M:nutrition += nutriment_factor
|
||||
M.dizziness = max(0,M.dizziness-5)
|
||||
M:drowsyness = max(0,M:drowsyness-3)
|
||||
M:sleeping = 0
|
||||
@@ -3361,7 +3371,6 @@ datum
|
||||
M.bodytemperature = min(310, M.bodytemperature+5)
|
||||
M.make_jittery(5)
|
||||
if(M:getBruteLoss() && prob(20)) M:heal_organ_damage(1,0)
|
||||
M:nutrition++
|
||||
..()
|
||||
return
|
||||
|
||||
@@ -3370,10 +3379,10 @@ datum
|
||||
id = "cafe_latte"
|
||||
description = "A nice, strong and tasty beverage while you are reading."
|
||||
reagent_state = LIQUID
|
||||
nutriment_factor = 1 * REAGENTS_METABOLISM
|
||||
color = "#664300" // rgb: 102, 67, 0
|
||||
|
||||
on_mob_life(var/mob/living/M as mob)
|
||||
..()
|
||||
M.dizziness = max(0,M.dizziness-5)
|
||||
M:drowsyness = max(0,M:drowsyness-3)
|
||||
M:sleeping = 0
|
||||
@@ -3381,8 +3390,6 @@ datum
|
||||
M.bodytemperature = min(310, M.bodytemperature+5)
|
||||
M.make_jittery(5)
|
||||
if(M:getBruteLoss() && prob(20)) M:heal_organ_damage(1,0)
|
||||
M:nutrition++
|
||||
..()
|
||||
return
|
||||
|
||||
hippies_delight
|
||||
@@ -3416,4 +3423,4 @@ datum
|
||||
holder.remove_reagent(src.id, 0.2)
|
||||
data++
|
||||
..()
|
||||
return
|
||||
return
|
||||
|
||||
@@ -1012,7 +1012,6 @@ datum
|
||||
required_reagents = list("gin" = 2, "tonic" = 1)
|
||||
result_amount = 3
|
||||
|
||||
|
||||
cuba_libre
|
||||
name = "Cuba Libre"
|
||||
id = "cubalibre"
|
||||
@@ -1034,12 +1033,11 @@ datum
|
||||
required_reagents = list("vodka" = 2, "vermouth" = 1)
|
||||
result_amount = 3
|
||||
|
||||
|
||||
white_russian
|
||||
name = "White Russian"
|
||||
id = "whiterussian"
|
||||
result = "whiterussian"
|
||||
required_reagents = list("vodka" = 3, "cream" = 1, "kahlua" = 1)
|
||||
required_reagents = list("blackrussian" = 3, "cream" = 2)
|
||||
result_amount = 5
|
||||
|
||||
whiskey_cola
|
||||
@@ -1221,15 +1219,15 @@ datum
|
||||
name = "Singulo"
|
||||
id = "singulo"
|
||||
result = "singulo"
|
||||
required_reagents = list("vodka" = 5, "radium" = 1, "acid" = 1, "wine" = 5)
|
||||
required_reagents = list("vodka" = 5, "radium" = 1, "wine" = 5)
|
||||
result_amount = 10
|
||||
|
||||
/* alliescocktail
|
||||
alliescocktail
|
||||
name = "Allies Cocktail"
|
||||
id = "alliescocktail"
|
||||
result = "alliescocktail"
|
||||
required_reagents = list("gin" = 1, "vermouth" = 1)
|
||||
result_amount = 2*/
|
||||
required_reagents = list("martini" = 1, "vodka" = 1)
|
||||
result_amount = 2
|
||||
|
||||
demonsblood
|
||||
name = "Demons Blood"
|
||||
@@ -1256,11 +1254,11 @@ datum
|
||||
name = "Barefoot"
|
||||
id = "barefoot"
|
||||
result = "barefoot"
|
||||
required_reagents = list("vodka" = 1, "cream" = 1, "vermouth" = 1, "whiskey" = 1)
|
||||
result_amount = 4
|
||||
required_reagents = list("berryjuice" = 1, "cream" = 1, "vermouth" = 1)
|
||||
result_amount = 3
|
||||
|
||||
|
||||
////DRINKS THAT REQUIRE IMPROVED SPRITES BELOW:: -Agouri/////
|
||||
////DRINKS THAT REQUIRED IMPROVED SPRITES BELOW:: -Agouri/////
|
||||
|
||||
sbiten
|
||||
name = "Sbiten"
|
||||
@@ -1344,7 +1342,7 @@ datum
|
||||
name = "Aloe"
|
||||
id = "aloe"
|
||||
result = "aloe"
|
||||
required_reagents = list("cream" = 1, "whiskey" = 1)
|
||||
required_reagents = list("cream" = 1, "whiskey" = 1, "watermelonjuice" = 1)
|
||||
result_amount = 2
|
||||
|
||||
andalusia
|
||||
@@ -1372,15 +1370,15 @@ datum
|
||||
name = "Irish Car Bomb"
|
||||
id = "irishcarbomb"
|
||||
result = "irishcarbomb"
|
||||
required_reagents = list("ale" = 1, "cream" = 1, "whiskey" = 1)
|
||||
result_amount = 3
|
||||
required_reagents = list("ale" = 1, "irishcream" = 1)
|
||||
result_amount = 2
|
||||
|
||||
syndicatebomb
|
||||
name = "Syndicate Bomb"
|
||||
id = "syndicatebomb"
|
||||
result = "syndicatebomb"
|
||||
required_reagents = list("beer" = 1, "cola" = 1, "whiskey" = 1)
|
||||
result_amount = 3
|
||||
required_reagents = list("beer" = 1, "whiskeycola" = 1)
|
||||
result_amount = 2
|
||||
|
||||
erikasurprise
|
||||
name = "Erika Surprise"
|
||||
@@ -1389,7 +1387,6 @@ datum
|
||||
required_reagents = list("ale" = 1, "limejuice" = 1, "whiskey" = 1, "banana" = 1, "ice" = 1)
|
||||
result_amount = 5
|
||||
|
||||
|
||||
devilskiss
|
||||
name = "Devils Kiss"
|
||||
id = "devilskiss"
|
||||
@@ -1418,6 +1415,10 @@ datum
|
||||
required_reagents = list("nothing" = 1, "cream" = 1, "sugar" = 1)
|
||||
result_amount = 3
|
||||
|
||||
|
||||
|
||||
driestmartini
|
||||
name = "Driest Martini"
|
||||
id = "driestmartini"
|
||||
result = "driestmartini"
|
||||
required_reagents = list("nothing" = 1, "gin" = 1)
|
||||
result_amount = 2
|
||||
|
||||
|
||||
@@ -616,10 +616,26 @@
|
||||
for(var/mob/living/carbon/M in D.loc)
|
||||
if(!istype(M,/mob/living/carbon)) continue
|
||||
if(M == user) continue
|
||||
//Syring gune attack logging by Yvarov
|
||||
var/R
|
||||
for(var/datum/reagent/A in D.reagents.reagent_list)
|
||||
R += A.id + " ("
|
||||
R += num2text(A.volume) + "),"
|
||||
if (istype(M, /mob))
|
||||
M.attack_log += "\[[time_stamp()]\] <b>[user]/[user.ckey]</b> shot <b>[M]/[M.ckey]</b> with a <b>syringegun</b> ([R])"
|
||||
user.attack_log += "\[[time_stamp()]\] <b>[user]/[user.ckey]</b> shot <b>[M]/[M.ckey]</b> with a <b>syringegun</b> ([R])"
|
||||
log_attack("<font color='red'>[user] ([user.ckey]) shot [M] ([M.ckey]) with a syringegun ([R])</font>")
|
||||
log_admin("ATTACK: [user] ([user.ckey]) shot [M] ([M.ckey]) with a syringegun ([R]).")
|
||||
message_admins("ATTACK: [user] ([user.ckey]) shot [M] ([M.ckey]) with a syringegun ([R]).")
|
||||
else
|
||||
M.attack_log += "\[[time_stamp()]\] <b>UNKNOWN SUBJECT (No longer exists)</b> shot <b>[M]/[M.ckey]</b> with a <b>syringegun</b> ([R])"
|
||||
log_attack("<font color='red'>UNKNOWN shot [M] ([M.ckey]) with a <b>syringegun</b> ([R])</font>")
|
||||
log_admin("ATTACK: UNKNOWN shot [M] ([M.ckey]) with a <b>syringegun</b> ([R]).")
|
||||
message_admins("ATTACK: UNKNOWN shot [M] ([M.ckey]) with a <b>syringegun</b> ([R]).")
|
||||
D.reagents.trans_to(M, 15)
|
||||
M.take_organ_damage(5)
|
||||
for(var/mob/O in viewers(world.view, D))
|
||||
O.show_message(text("\red [] was hit by the syringe!", M), 1)
|
||||
O.show_message(text("\red [] is hit by the syringe!", M.name), 1)
|
||||
|
||||
del(D)
|
||||
if(D)
|
||||
@@ -1936,6 +1952,8 @@
|
||||
icon = 'chemical.dmi'
|
||||
icon_state = "beaker0"
|
||||
item_state = "beaker"
|
||||
m_amt = 0
|
||||
g_amt = 500
|
||||
|
||||
pickup(mob/user)
|
||||
on_reagent_change(user)
|
||||
@@ -2015,6 +2033,8 @@
|
||||
icon = 'chemical.dmi'
|
||||
icon_state = "beakerlarge"
|
||||
item_state = "beaker"
|
||||
m_amt = 0
|
||||
g_amt = 5000
|
||||
volume = 100
|
||||
amount_per_transfer_from_this = 10
|
||||
possible_transfer_amounts = list(5,10,15,25,30,50,100)
|
||||
@@ -2290,7 +2310,7 @@
|
||||
|
||||
/obj/item/weapon/reagent_containers/glass/bottle/pacid
|
||||
name = "Polytrinic Acid Bottle"
|
||||
desc = "A small bottle. Contains a small amount of Polytronic Acid"
|
||||
desc = "A small bottle. Contains a small amount of Polytrinic Acid"
|
||||
icon = 'chemical.dmi'
|
||||
icon_state = "bottle17"
|
||||
New()
|
||||
@@ -3572,7 +3592,7 @@
|
||||
desc = "Creepy time!"
|
||||
if("changelingsting")
|
||||
icon_state = "changelingsting"
|
||||
name = "Changeling sting"
|
||||
name = "Changeling Sting"
|
||||
desc = "A stingy drink."
|
||||
if("irishcarbomb")
|
||||
icon_state = "irishcarbomb"
|
||||
@@ -3586,6 +3606,10 @@
|
||||
icon_state = "erikasurprise"
|
||||
name = "Erika Surprise"
|
||||
desc = "The surprise is, it's green!"
|
||||
if("driestmartini")
|
||||
icon_state = "driestmartini"
|
||||
name = "Driest Martini"
|
||||
desc = "Only for the experienced. You think you see sand floating in the glass."
|
||||
else
|
||||
icon_state ="glass_brown"
|
||||
name = "Glass of ..what?"
|
||||
|
||||
@@ -273,7 +273,7 @@
|
||||
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 10, bio = 0, rad = 0)
|
||||
|
||||
/obj/item/clothing/under/rank/medical
|
||||
desc = "It's made of a special fiber that provides minor protection against biohazards. it has a cross on the chest denoting that the wearer is trained medical personnel."
|
||||
desc = "It's made of a special fiber that provides minor protection against biohazards. It has a cross on the chest denoting that the wearer is trained medical personnel."
|
||||
name = "medical doctor's jumpsuit"
|
||||
icon_state = "medical"
|
||||
item_state = "w_suit"
|
||||
@@ -281,12 +281,32 @@
|
||||
permeability_coefficient = 0.50
|
||||
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 10, rad = 0)
|
||||
|
||||
//SKRUBS
|
||||
|
||||
/obj/item/clothing/under/rank/medical/blue
|
||||
name = "medical scrubs"
|
||||
desc = "It's made of a special fiber that provides minor protection against biohazards. This one is in baby blue."
|
||||
icon_state = "scrubsblue"
|
||||
color = "scrubsblue"
|
||||
|
||||
/obj/item/clothing/under/rank/medical/green
|
||||
name = "medical scrubs"
|
||||
desc = "It's made of a special fiber that provides minor protection against biohazards. This one is in dark green."
|
||||
icon_state = "scrubsgreen"
|
||||
color = "scrubsgreen"
|
||||
|
||||
/obj/item/clothing/under/rank/medical/purple
|
||||
name = "medical scrubs"
|
||||
desc = "It's made of a special fiber that provides minor protection against biohazards. This one is in deep purple."
|
||||
icon_state = "scrubspurple"
|
||||
color = "scrubspurple"
|
||||
|
||||
/obj/item/clothing/under/rank/chief_medical_officer
|
||||
desc = "It's a jumpsuit worn by those with the experience to be \"Chief Medical Officer\". It provides minor biological protection."
|
||||
name = "chief medical officer's jumpsuit"
|
||||
icon_state = "medical"
|
||||
icon_state = "cmo"
|
||||
item_state = "w_suit"
|
||||
color = "medical"
|
||||
color = "cmo"
|
||||
permeability_coefficient = 0.50
|
||||
armor = list(melee = 0, bullet = 0, laser = 2,energy = 2, bomb = 0, bio = 10, rad = 0)
|
||||
|
||||
@@ -301,17 +321,17 @@
|
||||
|
||||
/obj/item/clothing/under/rank/cargo
|
||||
name = "quartermaster's jumpsuit"
|
||||
desc = "It's a jumpsuit worn by the quartermaster. It's specially designed to prevent back injuries caused by heavy lifting."
|
||||
icon_state = "lightbrown"
|
||||
desc = "It's a jumpsuit worn by the quartermaster. It's specially designed to prevent back injuries caused by pushing paper."
|
||||
icon_state = "qm"
|
||||
item_state = "lb_suit"
|
||||
color = "cargo"
|
||||
color = "qm"
|
||||
|
||||
/obj/item/clothing/under/rank/cargotech
|
||||
name = "cargotech's jumpsuit"
|
||||
desc = "<i>'Shooooorts! They're comfy and easy to wear!'</i>"
|
||||
name = "cargo technician's jumpsuit"
|
||||
desc = "Shooooorts! They're comfy and easy to wear!"
|
||||
icon_state = "cargotech"
|
||||
item_state = "cargotech"
|
||||
color = "cargotech"
|
||||
item_state = "lb_suit"
|
||||
color = "cargo"
|
||||
|
||||
/obj/item/clothing/under/rank/mailman
|
||||
name = "mailman's jumpsuit"
|
||||
@@ -532,6 +552,7 @@
|
||||
armor = list(melee = 100, bullet = 100, laser = 100,energy = 100, bomb = 100, bio = 100, rad = 100)
|
||||
|
||||
// Cheerleader outfits or something
|
||||
|
||||
/obj/item/clothing/under/cheerleader
|
||||
name = "cheerleader uniform"
|
||||
desc = "Looks breezy."
|
||||
@@ -552,6 +573,7 @@
|
||||
/obj/item/clothing/under/cheerleader/white
|
||||
icon_state = "white_cheer"
|
||||
color = "white_cheer"
|
||||
|
||||
//End of cheerleaders
|
||||
|
||||
/obj/item/clothing/under/captainmal
|
||||
|
||||
@@ -62,6 +62,9 @@
|
||||
/obj/item/clothing/suit/bio_suit/cmo
|
||||
icon_state = "bio_cmo"
|
||||
|
||||
/obj/item/clothing/head/bio_hood/cmo
|
||||
icon_state = "bio_cmo"
|
||||
|
||||
|
||||
/obj/item/clothing/suit/bio_suit/plaguedoctorsuit
|
||||
name = "Plague doctor suit"
|
||||
|
||||
@@ -1,14 +1,14 @@
|
||||
/obj/item/clothing/head/bomb_hood
|
||||
name = "bomb hood"
|
||||
desc = "Use in case of bomb."
|
||||
desc = "A hood that protect from explosions. Also provides moderate protection."
|
||||
icon_state = "bombsuit"
|
||||
flags = FPRINT|TABLEPASS|HEADSPACE|HEADCOVERSEYES|HEADCOVERSMOUTH|BLOCKHAIR
|
||||
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 100, bio = 0, rad = 0)
|
||||
armor = list(melee = 10, bullet = 10, laser = 10, energy = 10, bomb = 100, bio = 0, rad = 0)
|
||||
flags_inv = HIDEMASK|HIDEEARS|HIDEEYES
|
||||
|
||||
/obj/item/clothing/suit/bomb_suit
|
||||
name = "bomb suit"
|
||||
desc = "A suit designed for safety when handling explosives."
|
||||
desc = "A suit used for safely disposing explosives. Also provides moderate protection."
|
||||
icon_state = "bombsuit"
|
||||
item_state = "bombsuit"
|
||||
w_class = 4//bulky item
|
||||
@@ -17,8 +17,8 @@
|
||||
heat_transfer_coefficient = 0.30
|
||||
flags = FPRINT | TABLEPASS
|
||||
body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS|HANDS
|
||||
slowdown = 2
|
||||
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 100, bio = 0, rad = 0)
|
||||
slowdown = 3.5 //To compensate for the extra armour.
|
||||
armor = list(melee = 10, bullet = 10, laser = 10, energy = 10, bomb = 100, bio = 0, rad = 0)
|
||||
flags_inv = HIDEJUMPSUIT
|
||||
|
||||
|
||||
|
||||
@@ -46,6 +46,12 @@
|
||||
icon_state = "steve_johnson_1"
|
||||
item_state = "steve_johnson_1"
|
||||
|
||||
/obj/item/fluff/david_fanning_1 //sicktrigger: David Fanning
|
||||
name = "golden scalpel"
|
||||
desc = "A fine surgical cutting tool covered in thin gold leaf. Does not seem able to cut anything."
|
||||
icon_state = "david_fanning_1"
|
||||
item_state = "david_fanning_1"
|
||||
|
||||
//////////////////////////////////
|
||||
////////// Usable Items //////////
|
||||
//////////////////////////////////
|
||||
@@ -118,13 +124,19 @@
|
||||
icon_state = "orangecamera"
|
||||
pictures_left = 30
|
||||
|
||||
|
||||
/obj/item/weapon/card/id/fluff/lifetime //fastler: Fastler Greay; it seemed like something multiple people would have
|
||||
name = "Lifetime ID Card"
|
||||
desc = "A modified ID card given only to those people who have devoted their lives to the better interests of NanoTrasen. It sparkles blue."
|
||||
icon = 'custom_items.dmi'
|
||||
icon_state = "lifetimeid"
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/drinks/flask/fluff/shinyflask //lexusjjss: Lexus Langg & Zachary Tomlinson
|
||||
name = "shiny flask"
|
||||
desc = "A shiny metal flask. It appears to have a Greek symbol inscribed on it."
|
||||
icon = 'custom_items.dmi'
|
||||
icon_state = "shinyflask"
|
||||
volume = 50
|
||||
|
||||
//////////////////////////////////
|
||||
//////////// Clothing ////////////
|
||||
//////////////////////////////////
|
||||
@@ -176,6 +188,13 @@
|
||||
icon = 'custom_items.dmi'
|
||||
icon_state = "taryn_kifer_1"
|
||||
|
||||
/obj/item/clothing/head/fluff/enos_adlai_1 //roaper: Enos Adlai
|
||||
name = "comfy cap"
|
||||
desc = "Because when you're the toughest Mother Hubbard on the station, nobody's criticizing your fashion sense."
|
||||
icon = 'custom_items.dmi'
|
||||
icon_state = "enos_adlai_1"
|
||||
flags = FPRINT|TABLEPASS
|
||||
|
||||
//////////// Suits ////////////
|
||||
|
||||
/obj/item/clothing/suit/storage/labcoat/fluff/pink //spaceman96: Trenna Seber
|
||||
|
||||
@@ -29,25 +29,7 @@
|
||||
|
||||
handle_regular_hud_updates()
|
||||
|
||||
if (src.stat == 2 || src.mutations & XRAY)
|
||||
src.sight |= SEE_TURFS
|
||||
src.sight |= SEE_MOBS
|
||||
src.sight |= SEE_OBJS
|
||||
src.see_in_dark = 8
|
||||
src.see_invisible = 2
|
||||
else if (src.stat != 2)
|
||||
src.sight |= SEE_MOBS
|
||||
src.sight |= SEE_TURFS
|
||||
src.sight &= ~SEE_OBJS
|
||||
src.see_in_dark = 5
|
||||
src.see_invisible = 2
|
||||
|
||||
if (src.sleep)
|
||||
src.sleep.icon_state = text("sleep[]", src.sleeping > 0 ? 1 : 0)
|
||||
src.sleep.overlays = null
|
||||
if(src.sleeping_willingly)
|
||||
src.sleep.overlays += icon(src.sleep.icon, "sleep_willing")
|
||||
if (src.rest) src.rest.icon_state = text("rest[]", src.resting)
|
||||
..() //-Yvarov
|
||||
|
||||
if (src.healths)
|
||||
if (src.stat != 2)
|
||||
@@ -86,7 +68,7 @@
|
||||
|
||||
if(src.sleeping)
|
||||
Paralyse(3)
|
||||
if (prob(10) && health) spawn(0) emote("snore")
|
||||
//if (prob(10) && health) spawn(0) emote("snore") Invalid Emote
|
||||
if(!src.sleeping_willingly)
|
||||
src.sleeping--
|
||||
|
||||
|
||||
@@ -29,25 +29,7 @@
|
||||
|
||||
handle_regular_hud_updates()
|
||||
|
||||
if (src.stat == 2 || src.mutations & XRAY)
|
||||
src.sight |= SEE_TURFS
|
||||
src.sight |= SEE_MOBS
|
||||
src.sight |= SEE_OBJS
|
||||
src.see_in_dark = 8
|
||||
src.see_invisible = 2
|
||||
else if (src.stat != 2)
|
||||
src.sight |= SEE_MOBS
|
||||
src.sight &= SEE_TURFS
|
||||
src.sight &= ~SEE_OBJS
|
||||
src.see_in_dark = 7
|
||||
src.see_invisible = 3
|
||||
|
||||
if (src.sleep)
|
||||
src.sleep.icon_state = text("sleep[]", src.sleeping > 0 ? 1 : 0)
|
||||
src.sleep.overlays = null
|
||||
if(src.sleeping_willingly)
|
||||
src.sleep.overlays += icon(src.sleep.icon, "sleep_willing")
|
||||
if (src.rest) src.rest.icon_state = text("rest[]", src.resting)
|
||||
..() //-Yvarov
|
||||
|
||||
if (src.healths)
|
||||
if (src.stat != 2)
|
||||
@@ -87,7 +69,7 @@
|
||||
|
||||
if(src.sleeping)
|
||||
Paralyse(3)
|
||||
if (prob(10) && health) spawn(0) emote("snore")
|
||||
//if (prob(10) && health) spawn(0) emote("snore") Invalid Emote
|
||||
if(!src.sleeping_willingly)
|
||||
src.sleeping--
|
||||
|
||||
|
||||
@@ -404,7 +404,7 @@
|
||||
|
||||
if(src.sleeping)
|
||||
Paralyse(3)
|
||||
if (prob(10) && health) spawn(0) emote("snore")
|
||||
//if (prob(10) && health) emote("snore") //Invalid emote for aliens, but it might be worth making sleep noticeable somehow -Yvarov
|
||||
if(!src.sleeping_willingly)
|
||||
src.sleeping--
|
||||
|
||||
|
||||
@@ -32,25 +32,7 @@
|
||||
|
||||
handle_regular_hud_updates()
|
||||
|
||||
if (src.stat == 2 || src.mutations & XRAY)
|
||||
src.sight |= SEE_TURFS
|
||||
src.sight |= SEE_MOBS
|
||||
src.sight |= SEE_OBJS
|
||||
src.see_in_dark = 8
|
||||
src.see_invisible = 2
|
||||
else if (src.stat != 2)
|
||||
src.sight |= SEE_MOBS
|
||||
src.sight |= SEE_TURFS
|
||||
src.sight &= ~SEE_OBJS
|
||||
src.see_in_dark = 8
|
||||
src.see_invisible = 2
|
||||
|
||||
if (src.sleep)
|
||||
src.sleep.icon_state = text("sleep[]", src.sleeping > 0 ? 1 : 0)
|
||||
src.sleep.overlays = null
|
||||
if(src.sleeping_willingly)
|
||||
src.sleep.overlays += icon(src.sleep.icon, "sleep_willing")
|
||||
if (src.rest) src.rest.icon_state = text("rest[]", src.resting)
|
||||
..() //-Yvarov
|
||||
|
||||
if (src.healths)
|
||||
if (src.stat != 2)
|
||||
@@ -88,7 +70,7 @@
|
||||
|
||||
if(src.sleeping)
|
||||
Paralyse(3)
|
||||
if (prob(10) && health) spawn(0) emote("snore")
|
||||
//if (prob(10) && health) spawn(0) emote("snore") Invalid Emote
|
||||
if(!src.sleeping_willingly)
|
||||
src.sleeping--
|
||||
|
||||
|
||||
@@ -327,7 +327,7 @@
|
||||
|
||||
if(sleeping)
|
||||
Paralyse(3)
|
||||
if (prob(10) && health) spawn(0) emote("snore")
|
||||
//if (prob(10) && health) spawn(0) emote("snore") Invalid Emote
|
||||
if(!src.sleeping_willingly)
|
||||
src.sleeping--
|
||||
|
||||
|
||||
@@ -116,7 +116,10 @@
|
||||
|
||||
//handcuffed?
|
||||
if (src.handcuffed)
|
||||
msg += "[t_He] [t_is] \icon[src.handcuffed] handcuffed!\n"
|
||||
if(istype(src.handcuffed, /obj/item/weapon/handcuffs/cable))
|
||||
msg += "<span class='warning'>[t_He] [t_is] \icon[src.handcuffed] restrained with cable!</span>\n"
|
||||
else
|
||||
msg += "<span class='warning'>[t_He] [t_is] \icon[src.handcuffed] handcuffed!</span>\n"
|
||||
|
||||
//belt
|
||||
if (src.belt)
|
||||
|
||||
@@ -206,14 +206,6 @@
|
||||
using.layer = 19
|
||||
src.other += using
|
||||
|
||||
using = new src.h_type( src )
|
||||
using.name = "hat storage"
|
||||
using.icon = ui_style
|
||||
using.icon_state = "hair"
|
||||
using.screen_loc = ui_hstore1
|
||||
using.layer = 19
|
||||
src.other += using
|
||||
|
||||
using = new src.h_type( src )
|
||||
using.name = "resist"
|
||||
using.icon = ui_style
|
||||
|
||||
@@ -39,7 +39,6 @@
|
||||
var/obj/item/weapon/r_store = null
|
||||
var/obj/item/weapon/l_store = null
|
||||
var/obj/item/weapon/s_store = null
|
||||
var/obj/item/weapon/h_store = null
|
||||
|
||||
var/icon/stand_icon = null
|
||||
var/icon/lying_icon = null
|
||||
@@ -481,15 +480,6 @@
|
||||
glasses = null
|
||||
else if (W == head)
|
||||
var/obj/item/prev_head = W
|
||||
W = h_store
|
||||
if (W)
|
||||
u_equip(W)
|
||||
if (client)
|
||||
client.screen -= W
|
||||
if (W)
|
||||
W.loc = loc
|
||||
W.dropped(src)
|
||||
W.layer = initial(W.layer)
|
||||
head = null
|
||||
if(prev_head && (prev_head.flags & BLOCKHAIR))
|
||||
// rebuild face
|
||||
@@ -524,8 +514,6 @@
|
||||
l_store = null
|
||||
else if (W == s_store)
|
||||
s_store = null
|
||||
else if (W == h_store)
|
||||
h_store = null
|
||||
else if (W == back)
|
||||
back = null
|
||||
else if (W == handcuffed)
|
||||
@@ -756,22 +744,6 @@
|
||||
u_equip(W)
|
||||
s_store = W
|
||||
|
||||
if("hat storage")
|
||||
if (h_store)
|
||||
if (emptyHand)
|
||||
h_store.DblClick()
|
||||
return
|
||||
var/confirm
|
||||
if (head)
|
||||
if (istype(W, /obj/item/weapon/pen))
|
||||
confirm = 1
|
||||
if (istype(head) && is_type_in_list(W, head.allowed)) // NOTE: head is /obj/item/clothing/head/ and parer hat is not /obj/item/clothing/ and does not have "allowed" --rastaf0
|
||||
confirm = 1
|
||||
if (!confirm) return
|
||||
else
|
||||
u_equip(W)
|
||||
h_store = W
|
||||
|
||||
update_clothing()
|
||||
|
||||
return
|
||||
@@ -1087,9 +1059,6 @@
|
||||
overlays += image("icon" = 'belt_mirror.dmi', "icon_state" = text("[][]", t1, (!( lying ) ? null : "2")), "layer" = MOB_LAYER)
|
||||
s_store.screen_loc = ui_sstore1
|
||||
|
||||
if (h_store)
|
||||
h_store.screen_loc = ui_hstore1
|
||||
|
||||
if(client) hud_used.other_update() //Update the screenloc of the items on the 'other' inventory bar
|
||||
//to hide / show them.
|
||||
if (client)
|
||||
@@ -1210,10 +1179,11 @@
|
||||
|
||||
if (handcuffed)
|
||||
pulling = null
|
||||
var/h1 = handcuffed.icon_state
|
||||
if (!lying)
|
||||
overlays += image("icon" = 'mob.dmi', "icon_state" = "handcuff1", "layer" = MOB_LAYER)
|
||||
overlays += image("icon" = 'mob.dmi', "icon_state" = "[h1]1", "layer" = MOB_LAYER)
|
||||
else
|
||||
overlays += image("icon" = 'mob.dmi', "icon_state" = "handcuff2", "layer" = MOB_LAYER)
|
||||
overlays += image("icon" = 'mob.dmi', "icon_state" = "[h1]2", "layer" = MOB_LAYER)
|
||||
|
||||
if (client)
|
||||
client.screen -= contents
|
||||
@@ -1620,6 +1590,8 @@
|
||||
if("dnainjector")
|
||||
message = text("\red <B>[] is trying to inject [] with the []!</B>", source, target, item)
|
||||
if("mask")
|
||||
target.attack_log += text("\[[time_stamp()]\] <font color='orange'>Has had their mask removed by [source.name] ([source.ckey])</font>")
|
||||
source.attack_log += text("\[[time_stamp()]\] <font color='red'>Attempted to remove [target.name]'s ([target.ckey]) mask</font>")
|
||||
if(istype(target.wear_mask, /obj/item/clothing)&&!target.wear_mask:canremove)
|
||||
message = text("\red <B>[] fails to take off \a [] from []'s body!</B>", source, target.wear_mask, target)
|
||||
else
|
||||
@@ -1627,60 +1599,84 @@
|
||||
/* if("headset")
|
||||
message = text("\red <B>[] is trying to take off \a [] from []'s face!</B>", source, target.w_radio, target) */
|
||||
if("l_hand")
|
||||
target.attack_log += text("\[[time_stamp()]\] <font color='orange'>Has had their left hand item removed by [source.name] ([source.ckey])</font>")
|
||||
source.attack_log += text("\[[time_stamp()]\] <font color='red'>Attempted to remove [target.name]'s ([target.ckey]) left hand item</font>")
|
||||
message = text("\red <B>[] is trying to take off \a [] from []'s left hand!</B>", source, target.l_hand, target)
|
||||
if("r_hand")
|
||||
target.attack_log += text("\[[time_stamp()]\] <font color='orange'>Has had their right hand item removed by [source.name] ([source.ckey])</font>")
|
||||
source.attack_log += text("\[[time_stamp()]\] <font color='red'>Attempted to remove [target.name]'s ([target.ckey]) right hand item</font>")
|
||||
message = text("\red <B>[] is trying to take off \a [] from []'s right hand!</B>", source, target.r_hand, target)
|
||||
if("gloves")
|
||||
target.attack_log += text("\[[time_stamp()]\] <font color='orange'>Has had their gloves removed by [source.name] ([source.ckey])</font>")
|
||||
source.attack_log += text("\[[time_stamp()]\] <font color='red'>Attempted to remove [target.name]'s ([target.ckey]) gloves</font>")
|
||||
if(istype(target.gloves, /obj/item/clothing)&&!target.gloves:canremove)
|
||||
message = text("\red <B>[] fails to take off \a [] from []'s body!</B>", source, target.gloves, target)
|
||||
else
|
||||
message = text("\red <B>[] is trying to take off the [] from []'s hands!</B>", source, target.gloves, target)
|
||||
if("eyes")
|
||||
target.attack_log += text("\[[time_stamp()]\] <font color='orange'>Has had their eyewear removed by [source.name] ([source.ckey])</font>")
|
||||
source.attack_log += text("\[[time_stamp()]\] <font color='red'>Attempted to remove [target.name]'s ([target.ckey]) eyewear</font>")
|
||||
if(istype(target.glasses, /obj/item/clothing)&&!target.glasses:canremove)
|
||||
message = text("\red <B>[] fails to take off \a [] from []'s body!</B>", source, target.glasses, target)
|
||||
else
|
||||
message = text("\red <B>[] is trying to take off the [] from []'s eyes!</B>", source, target.glasses, target)
|
||||
if("l_ear")
|
||||
target.attack_log += text("\[[time_stamp()]\] <font color='orange'>Has had their left ear item removed by [source.name] ([source.ckey])</font>")
|
||||
source.attack_log += text("\[[time_stamp()]\] <font color='red'>Attempted to remove [target.name]'s ([target.ckey]) left ear item</font>")
|
||||
if(istype(target.l_ear, /obj/item/clothing)&&!target.l_ear:canremove)
|
||||
message = text("\red <B>[] fails to take off \a [] from []'s body!</B>", source, target.l_ear, target)
|
||||
else
|
||||
message = text("\red <B>[] is trying to take off the [] from []'s left ear!</B>", source, target.l_ear, target)
|
||||
if("r_ear")
|
||||
target.attack_log += text("\[[time_stamp()]\] <font color='orange'>Has had their right ear item removed by [source.name] ([source.ckey])</font>")
|
||||
source.attack_log += text("\[[time_stamp()]\] <font color='red'>Attempted to remove [target.name]'s ([target.ckey]) right ear item</font>")
|
||||
if(istype(target.r_ear, /obj/item/clothing)&&!target.r_ear:canremove)
|
||||
message = text("\red <B>[] fails to take off \a [] from []'s body!</B>", source, target.r_ear, target)
|
||||
else
|
||||
message = text("\red <B>[] is trying to take off the [] from []'s right ear!</B>", source, target.r_ear, target)
|
||||
if("head")
|
||||
target.attack_log += text("\[[time_stamp()]\] <font color='orange'>Has had their hat removed by [source.name] ([source.ckey])</font>")
|
||||
source.attack_log += text("\[[time_stamp()]\] <font color='red'>Attempted to remove [target.name]'s ([target.ckey]) hat</font>")
|
||||
if(istype(target.head, /obj/item/clothing)&&!target.head:canremove)
|
||||
message = text("\red <B>[] fails to take off \a [] from []'s body!</B>", source, target.head, target)
|
||||
else
|
||||
message = text("\red <B>[] is trying to take off the [] from []'s head!</B>", source, target.head, target)
|
||||
if("shoes")
|
||||
target.attack_log += text("\[[time_stamp()]\] <font color='orange'>Has had their shoes removed by [source.name] ([source.ckey])</font>")
|
||||
source.attack_log += text("\[[time_stamp()]\] <font color='red'>Attempted to remove [target.name]'s ([target.ckey]) shoes</font>")
|
||||
if(istype(target.shoes, /obj/item/clothing)&&!target.shoes:canremove)
|
||||
message = text("\red <B>[] fails to take off \a [] from []'s body!</B>", source, target.shoes, target)
|
||||
else
|
||||
message = text("\red <B>[] is trying to take off the [] from []'s feet!</B>", source, target.shoes, target)
|
||||
if("belt")
|
||||
target.attack_log += text("\[[time_stamp()]\] <font color='orange'>Has had their belt item removed by [source.name] ([source.ckey])</font>")
|
||||
source.attack_log += text("\[[time_stamp()]\] <font color='red'>Attempted to remove [target.name]'s ([target.ckey]) belt item</font>")
|
||||
message = text("\red <B>[] is trying to take off the [] from []'s belt!</B>", source, target.belt, target)
|
||||
if("suit")
|
||||
target.attack_log += text("\[[time_stamp()]\] <font color='orange'>Has had their suit removed by [source.name] ([source.ckey])</font>")
|
||||
source.attack_log += text("\[[time_stamp()]\] <font color='red'>Attempted to remove [target.name]'s ([target.ckey]) suit</font>")
|
||||
if(istype(target.wear_suit, /obj/item/clothing)&&!target.wear_suit:canremove)
|
||||
message = text("\red <B>[] fails to take off \a [] from []'s body!</B>", source, target.wear_suit, target)
|
||||
else
|
||||
message = text("\red <B>[] is trying to take off \a [] from []'s body!</B>", source, target.wear_suit, target)
|
||||
if("back")
|
||||
target.attack_log += text("\[[time_stamp()]\] <font color='orange'>Has had their back item removed by [source.name] ([source.ckey])</font>")
|
||||
source.attack_log += text("\[[time_stamp()]\] <font color='red'>Attempted to remove [target.name]'s ([target.ckey]) back item</font>")
|
||||
message = text("\red <B>[] is trying to take off \a [] from []'s back!</B>", source, target.back, target)
|
||||
if("handcuff")
|
||||
message = text("\red <B>[] is trying to unhandcuff []!</B>", source, target)
|
||||
if("uniform")
|
||||
target.attack_log += text("\[[time_stamp()]\] <font color='orange'>Has had their uniform removed by [source.name] ([source.ckey])</font>")
|
||||
source.attack_log += text("\[[time_stamp()]\] <font color='red'>Attempted to remove [target.name]'s ([target.ckey]) uniform</font>")
|
||||
if(istype(target.w_uniform, /obj/item/clothing)&&!target.w_uniform:canremove)
|
||||
message = text("\red <B>[] fails to take off \a [] from []'s body!</B>", source, target.w_uniform, target)
|
||||
else
|
||||
message = text("\red <B>[] is trying to take off \a [] from []'s body!</B>", source, target.w_uniform, target)
|
||||
if("s_store")
|
||||
message = text("\red <B>[] is trying to take off \a [] from []'s suit!</B>", source, target.s_store, target)
|
||||
if("h_store")
|
||||
message = text("\red <B>[] is trying to empty []'s hat!</B>", source, target)
|
||||
if("pockets")
|
||||
target.attack_log += text("\[[time_stamp()]\] <font color='orange'>Has had their pockets emptied by [source.name] ([source.ckey])</font>")
|
||||
source.attack_log += text("\[[time_stamp()]\] <font color='red'>Attempted to empty [target.name]'s ([target.ckey]) pockets</font>")
|
||||
for(var/obj/item/weapon/mousetrap/MT in list(target.l_store, target.r_store))
|
||||
if(MT.armed)
|
||||
for(var/mob/O in viewers(target, null))
|
||||
@@ -1701,10 +1697,14 @@
|
||||
//SN src = null
|
||||
del(src)
|
||||
return
|
||||
message = text("\red <B>[] is trying perform CPR on []!</B>", source, target)
|
||||
message = text("\red <B>[] is trying to perform CPR on []!</B>", source, target)
|
||||
if("id")
|
||||
target.attack_log += text("\[[time_stamp()]\] <font color='orange'>Has had their ID removed by [source.name] ([source.ckey])</font>")
|
||||
source.attack_log += text("\[[time_stamp()]\] <font color='red'>Attempted to remove [target.name]'s ([target.ckey]) ID</font>")
|
||||
message = text("\red <B>[] is trying to take off [] from []'s uniform!</B>", source, target.wear_id, target)
|
||||
if("internal")
|
||||
target.attack_log += text("\[[time_stamp()]\] <font color='orange'>Has had their internals toggled by [source.name] ([source.ckey])</font>")
|
||||
source.attack_log += text("\[[time_stamp()]\] <font color='red'>Attempted to toggle [target.name]'s ([target.ckey]) internals</font>")
|
||||
if (target.internal)
|
||||
message = text("\red <B>[] is trying to remove []'s internals</B>", source, target)
|
||||
else
|
||||
@@ -2127,17 +2127,6 @@ It can still be worn/put on as normal.
|
||||
item.layer = 20
|
||||
target.back = item
|
||||
item.loc = target
|
||||
if("h_store")
|
||||
if (target.h_store)
|
||||
var/obj/item/W = target.h_store
|
||||
target.u_equip(W)
|
||||
if (target.client)
|
||||
target.client.screen -= W
|
||||
if (W)
|
||||
W.loc = target.loc
|
||||
W.dropped(target)
|
||||
W.layer = initial(W.layer)
|
||||
W.add_fingerprint(source)
|
||||
if("handcuff")
|
||||
if (target.handcuffed)
|
||||
var/obj/item/W = target.handcuffed
|
||||
@@ -2288,7 +2277,6 @@ It can still be worn/put on as normal.
|
||||
<BR>[(handcuffed ? text("<A href='?src=\ref[src];item=handcuff'>Handcuffed</A>") : text("<A href='?src=\ref[src];item=handcuff'>Not Handcuffed</A>"))]
|
||||
<BR>[(internal ? text("<A href='?src=\ref[src];item=internal'>Remove Internal</A>") : "")]
|
||||
<BR><A href='?src=\ref[src];item=pockets'>Empty Pockets</A>
|
||||
<BR><A href='?src=\ref[src];item=h_store'>Empty Hat</A>
|
||||
<BR><A href='?src=\ref[user];refresh=1'>Refresh</A>
|
||||
<BR><A href='?src=\ref[user];mach_close=mob[name]'>Close</A>
|
||||
<BR>"}
|
||||
|
||||
@@ -980,10 +980,16 @@
|
||||
if (stunned > 0)
|
||||
AdjustStunned(-1)
|
||||
stat = 0
|
||||
|
||||
if (weakened > 0)
|
||||
AdjustWeakened(-1)
|
||||
lying = 1
|
||||
stat = 0
|
||||
|
||||
if(resting)
|
||||
lying = 1
|
||||
stat = 0
|
||||
|
||||
if (paralysis > 0)
|
||||
handle_dreams()
|
||||
AdjustParalysis(-1)
|
||||
@@ -1003,10 +1009,6 @@
|
||||
if(!sleeping_willingly)
|
||||
sleeping--
|
||||
|
||||
if(resting)
|
||||
lying = 1
|
||||
stat = 0
|
||||
|
||||
var/h = hand
|
||||
hand = 0
|
||||
drop_item()
|
||||
|
||||
@@ -3,10 +3,10 @@
|
||||
..()
|
||||
|
||||
// While I'm doing a terriblly lazy way of initalizing things, why don't I make it so people's preferences tag along with them. This could be useful in fixing the fucking cloned-as-unknown thing, making me not have to dynamically load them during tensioner, and of course, storing metadata.
|
||||
|
||||
if(!src.storedpreferences)
|
||||
src.storedpreferences = new
|
||||
storedpreferences.savefile_load(src, 0)
|
||||
//Whoever wrote this should go suck a choad. This was causing runtimes, asshat. IN ADDITION, YOU PUT IT IN THE LIFE PROC YOU ASSHAT
|
||||
// if(!src.storedpreferences)
|
||||
// src.storedpreferences = new
|
||||
// storedpreferences.savefile_load(src, 0)
|
||||
|
||||
|
||||
|
||||
@@ -281,8 +281,8 @@
|
||||
density = 1
|
||||
else
|
||||
density = !lying
|
||||
|
||||
|
||||
//Bullshit ERP horseshit causing runtimes. Eat a dick.
|
||||
/*
|
||||
/mob/living/proc/Examine_OOC()
|
||||
set name = "Examine Meta-Info (OOC)"
|
||||
set category = "OOC"
|
||||
@@ -300,7 +300,7 @@
|
||||
else
|
||||
usr << "OOC Metadata is not supported by this server!"
|
||||
|
||||
return
|
||||
return*/
|
||||
|
||||
/mob/living/attack_animal(mob/M)
|
||||
attack_paw(M) // treat it like a normal non-human attack
|
||||
|
||||
@@ -47,15 +47,16 @@
|
||||
|
||||
verbs += /mob/living/silicon/ai/proc/show_laws_verb
|
||||
|
||||
if (istype(loc, /turf))
|
||||
if (istype(loc, /turf)) //If you add a verb here, make sure to add it to transform_procs.dm too.
|
||||
verbs += /mob/living/silicon/ai/proc/ai_call_shuttle
|
||||
verbs += /mob/living/silicon/ai/proc/show_laws_verb
|
||||
verbs += /mob/living/silicon/ai/proc/ai_camera_track
|
||||
verbs += /mob/living/silicon/ai/proc/ai_alerts
|
||||
verbs += /mob/living/silicon/ai/proc/ai_camera_list
|
||||
//Added ai_network_change by Mord_Sith
|
||||
verbs += /mob/living/silicon/ai/proc/ai_network_change
|
||||
verbs += /mob/living/silicon/ai/proc/ai_statuschange
|
||||
//Hologram verb./N
|
||||
verbs += /mob/living/silicon/ai/proc/ai_hologram_change
|
||||
verbs += /mob/living/silicon/ai/proc/ai_roster
|
||||
|
||||
if(!safety)//Only used by AIize() to successfully spawn an AI.
|
||||
if (!B)//If there is no player/brain inside.
|
||||
@@ -440,6 +441,7 @@
|
||||
|
||||
if(client.eye == eyeobj)
|
||||
eyeobj.loc = C.loc
|
||||
cameranet.visibility(eyeobj)
|
||||
else
|
||||
machine = src
|
||||
src:current = C
|
||||
@@ -577,7 +579,9 @@
|
||||
if(C.network == newnet)
|
||||
cameralist.Add(C)
|
||||
|
||||
switchCamera( pick(cameralist) )
|
||||
if(length(cameralist))
|
||||
switchCamera( pick(cameralist) )
|
||||
|
||||
src << "\blue Jumped to [newnet] camera network."
|
||||
//End of code by Mord_Sith
|
||||
//cael - with the multiple onstation networks all linked together, changing networks is legacy functionality
|
||||
|
||||
@@ -415,7 +415,7 @@
|
||||
if ((stat != 2 || !( ticker )))
|
||||
usr << "\blue <B>You must be dead to use this!</B>"
|
||||
return
|
||||
if (ticker.mode.name == ("meteor" || "epidemic"))
|
||||
if (ticker.mode.name == "meteor" || ticker.mode.name == "epidemic")
|
||||
usr << "\blue Respawn is disabled."
|
||||
return
|
||||
else
|
||||
|
||||
@@ -286,13 +286,9 @@ the mob is also allowed to move without any sort of restriction. For instance, i
|
||||
var/digitalcamo = 0 // Can they be tracked by the AI?
|
||||
|
||||
var/list/organs = list( ) //List of organs.
|
||||
var/list/organs2 = list()
|
||||
// var/list/organs2 = list()
|
||||
//Singularity wants you!
|
||||
var/grav_delay = 0
|
||||
var/being_strangled = 0
|
||||
|
||||
var/datum/preferences/storedpreferences = null
|
||||
|
||||
// var/geaslist = list()
|
||||
|
||||
|
||||
|
||||
@@ -99,7 +99,7 @@ datum/preferences
|
||||
b_eyes = 0
|
||||
|
||||
//UI style
|
||||
UI = UI_OLD
|
||||
UI = UI_NEW
|
||||
|
||||
//Mob preview
|
||||
icon/preview_icon = null
|
||||
|
||||
@@ -173,7 +173,7 @@
|
||||
|
||||
hogan
|
||||
name = "Hulk Hogan Mustache"
|
||||
icon_state = "facial_chaplin"
|
||||
icon_state = "facial_hogan" //-Neek
|
||||
|
||||
vandyke
|
||||
name = "Van Dyke Mustache"
|
||||
|
||||
+14
-10
@@ -439,7 +439,8 @@
|
||||
usr.pulling = null
|
||||
if("sleep")
|
||||
if(usr.sleeping && usr.sleeping_willingly)
|
||||
return
|
||||
usr.sleeping = 0
|
||||
usr.sleeping_willingly = 0
|
||||
else if(!usr.sleeping)
|
||||
usr.sleeping = 20 //Short nap
|
||||
usr.sleeping_willingly = 1
|
||||
@@ -492,22 +493,25 @@
|
||||
usr.next_move = world.time + 100
|
||||
usr.last_special = world.time + 100
|
||||
if(isalienadult(usr) || usr.mutations & HULK)//Don't want to do a lot of logic gating here.
|
||||
usr << "\green You attempt to break your handcuffs. (This will take around 5 seconds and you need to stand still)"
|
||||
usr << "\green You attempt to break \the [usr:handcuffed]. (This will take around 5 seconds and you need to stand still)"
|
||||
for(var/mob/O in viewers(usr))
|
||||
O.show_message(text("\red <B>[] is trying to break the handcuffs!</B>", usr), 1)
|
||||
O.show_message(text("\red <B>[] is trying to break \the [usr:handcuffed]!</B>", usr), 1)
|
||||
spawn(0)
|
||||
if(do_after(usr, 50))
|
||||
if(!usr:handcuffed || usr:buckled)
|
||||
return
|
||||
for(var/mob/O in viewers(usr))
|
||||
O.show_message(text("\red <B>[] manages to break the handcuffs!</B>", usr), 1)
|
||||
usr << "\green You successfully break your handcuffs."
|
||||
O.show_message(text("\red <B>[] manages to break \the [usr:handcuffed]!</B>", usr), 1)
|
||||
usr << "\green You successfully break \the [usr:handcuffed]."
|
||||
del(usr:handcuffed)
|
||||
usr:handcuffed = null
|
||||
else
|
||||
usr << "\red You attempt to remove your handcuffs. (This will take around [displaytime] minutes and you need to stand still)"
|
||||
if(istype(usr:handcuffed, /obj/item/weapon/handcuffs/cable))
|
||||
breakouttime = 300
|
||||
displaytime = 0.5
|
||||
usr << "\red You attempt to remove \the [usr:handcuffed]. (This will take around [displaytime] minutes and you need to stand still)"
|
||||
for(var/mob/O in viewers(usr))
|
||||
O.show_message(text("\red <B>[] attempts to remove the handcuffs!</B>", usr), 1)
|
||||
O.show_message(text("\red <B>[] attempts to remove \the [usr:handcuffed]!</B>", usr), 1)
|
||||
spawn(0)
|
||||
var/increment = 150
|
||||
for(var/i = 0, i < breakouttime, i += increment)
|
||||
@@ -526,11 +530,11 @@
|
||||
"This is exhausting!") // - SkyMarshal
|
||||
for(var/mob/O in viewers(usr))
|
||||
if(prob(50)) //Reduces spam slightly
|
||||
O.show_message(text("\red [] continues to struggle in their cuffs!", usr), 1)
|
||||
O.show_message(text("\red [] continues to struggle in \the [usr:handcuffed]!", usr), 1)
|
||||
if(!usr:handcuffed) return
|
||||
for(var/mob/O in viewers(usr))
|
||||
O.show_message(text("\red <B>[] manages to remove the handcuffs!</B>", usr), 1)
|
||||
usr << "\blue You successfully remove your handcuffs."
|
||||
O.show_message(text("\red <B>[] manages to remove \the [usr:handcuffed]!</B>", usr), 1)
|
||||
usr << "\blue You successfully remove \the [usr:handcuffed]."
|
||||
usr:handcuffed:loc = usr:loc
|
||||
usr:handcuffed = null
|
||||
usr.update_clothing()
|
||||
|
||||
@@ -171,7 +171,8 @@
|
||||
/obj/item/clothing/head/helmet/hardhat/white,
|
||||
/obj/item/weapon/bedsheet,
|
||||
/obj/item/clothing/head/helmet/space/santahat,
|
||||
/obj/item/clothing/head/collectable/paper
|
||||
/obj/item/clothing/head/collectable/paper,
|
||||
/obj/item/clothing/head/cargosoft
|
||||
)
|
||||
|
||||
if( ! ( item_to_add.type in allowed_types ) )
|
||||
@@ -183,7 +184,7 @@
|
||||
src.inventory_head = item_to_add
|
||||
update_clothing()
|
||||
|
||||
//Various hats and items (worn on his head) change Ian's behaviour. His attributesare reset when a HAT is removed.
|
||||
//Various hats and items (worn on his head) change Ian's behaviour. His attributes are reset when a HAT is removed.
|
||||
|
||||
|
||||
switch(inventory_head && inventory_head.type)
|
||||
@@ -240,6 +241,10 @@
|
||||
emote_hear = list("barks christmas songs", "yaps")
|
||||
desc = "He has a very shiny nose."
|
||||
src.sd_SetLuminosity(6)
|
||||
if(/obj/item/clothing/head/cargosoft)
|
||||
name = "Corgi Tech [real_name]"
|
||||
speak = list("Needs a stamp!", "Request DENIED!", "Fill these out in triplicate!")
|
||||
desc = "The reason your yellow gloves have chew-marks."
|
||||
|
||||
if("back")
|
||||
if(inventory_back)
|
||||
|
||||
@@ -398,13 +398,15 @@
|
||||
O << "4.) Your laws are not in preference, laws do not take preference over one another unless specifically stated in the law."
|
||||
O << "<br>We want everyone to have a good time, so we, the admins, will try to correct you if you stray from these rules. Just try to keep it sensible."
|
||||
|
||||
|
||||
//If you add a verb here, make sure to add it to silicon\ai\ai.dm too.
|
||||
O.verbs += /mob/living/silicon/ai/proc/ai_call_shuttle
|
||||
O.verbs += /mob/living/silicon/ai/proc/show_laws_verb
|
||||
O.verbs += /mob/living/silicon/ai/proc/ai_camera_track
|
||||
O.verbs += /mob/living/silicon/ai/proc/ai_alerts
|
||||
O.verbs += /mob/living/silicon/ai/proc/ai_camera_list
|
||||
O.verbs += /mob/living/silicon/ai/proc/ai_network_change
|
||||
O.verbs += /mob/living/silicon/ai/proc/ai_statuschange
|
||||
O.verbs += /mob/living/silicon/ai/proc/ai_hologram_change
|
||||
O.verbs += /mob/living/silicon/ai/proc/ai_roster
|
||||
|
||||
// O.verbs += /mob/living/silicon/ai/proc/ai_cancel_call
|
||||
|
||||
@@ -242,6 +242,25 @@
|
||||
else
|
||||
usr << "A coil of power cable. There are [amount] lengths of cable in the coil."
|
||||
|
||||
/obj/item/weapon/cable_coil/verb/make_restraint()
|
||||
set name = "Make Cable Restraints"
|
||||
set category = "Object"
|
||||
var/mob/M = usr
|
||||
if (istype(M, /mob/dead/)) return
|
||||
if (usr.stat) return
|
||||
if(!istype(usr.loc,/turf)) return
|
||||
if(src.amount <= 14)
|
||||
usr << "\red You need at least 15 lengths to make restraints!"
|
||||
return
|
||||
var/obj/item/weapon/handcuffs/cable/B = new /obj/item/weapon/handcuffs/cable(usr.loc)
|
||||
usr << "\blue You wind some cable together to make some restraints."
|
||||
if(src.amount == 15)
|
||||
del(src)
|
||||
else
|
||||
src.amount -= 15
|
||||
B.layer = 20
|
||||
..()
|
||||
|
||||
/obj/item/weapon/cable_coil/attackby(obj/item/weapon/W, mob/user)
|
||||
..()
|
||||
if( istype(W, /obj/item/weapon/wirecutters) && src.amount > 1)
|
||||
|
||||
+226
-248
@@ -1,3 +1,6 @@
|
||||
//cleaned up the file. might have to tone it down a bit in testing, but we'll see what happens
|
||||
|
||||
// the inlet stage of the gas turbine electricity generator
|
||||
/obj/machinery/compressor
|
||||
name = "compressor"
|
||||
desc = "The compressor stage of a gas turbine generator."
|
||||
@@ -12,7 +15,62 @@
|
||||
var/rpm = 0
|
||||
var/rpmtarget = 0
|
||||
var/capacity = 1e6
|
||||
var/comp_id = 0
|
||||
var/comp_id = "turbine_gens"
|
||||
|
||||
New()
|
||||
..()
|
||||
gas_contained = new
|
||||
inturf = get_step(src, dir)
|
||||
spawn(5)
|
||||
turbine = locate() in get_step(src, get_dir(inturf, src))
|
||||
if(!turbine)
|
||||
stat |= BROKEN
|
||||
|
||||
Topic(href, href_list)
|
||||
if(..())
|
||||
return
|
||||
|
||||
if( href_list["view"] )
|
||||
usr.client.eye = src
|
||||
|
||||
src.add_fingerprint(usr)
|
||||
src.updateUsrDialog()
|
||||
|
||||
#define COMPFRICTION 5e5
|
||||
#define COMPSTARTERLOAD 2800
|
||||
|
||||
process()
|
||||
if(!starter)
|
||||
return
|
||||
overlays = null
|
||||
if(stat & BROKEN)
|
||||
return
|
||||
if(!turbine)
|
||||
stat |= BROKEN
|
||||
return
|
||||
rpm = 0.9* rpm + 0.1 * rpmtarget
|
||||
var/datum/gas_mixture/environment = inturf.return_air()
|
||||
var/transfer_moles = environment.total_moles/10
|
||||
//var/transfer_moles = rpm/10000*capacity
|
||||
var/datum/gas_mixture/removed = inturf.remove_air(transfer_moles)
|
||||
gas_contained.merge(removed)
|
||||
rpm = max(0, rpm - (rpm*rpm)/COMPFRICTION)
|
||||
if(starter && !(stat & NOPOWER))
|
||||
use_power(2800)
|
||||
if(rpm<1000)
|
||||
rpmtarget = 1000
|
||||
else
|
||||
if(rpm<1000)
|
||||
rpmtarget = 0
|
||||
if(rpm>50000)
|
||||
overlays += image('pipes.dmi', "comp-o4", FLY_LAYER)
|
||||
else if(rpm>10000)
|
||||
overlays += image('pipes.dmi', "comp-o3", FLY_LAYER)
|
||||
else if(rpm>2000)
|
||||
overlays += image('pipes.dmi', "comp-o2", FLY_LAYER)
|
||||
else if(rpm>500)
|
||||
overlays += image('pipes.dmi', "comp-o1", FLY_LAYER)
|
||||
//TODO: DEFERRED
|
||||
|
||||
/obj/machinery/power/turbine
|
||||
name = "gas turbine generator"
|
||||
@@ -26,6 +84,108 @@
|
||||
var/turf/simulated/outturf
|
||||
var/lastgen
|
||||
|
||||
New()
|
||||
..()
|
||||
outturf = get_step(src, dir)
|
||||
spawn(5)
|
||||
compressor = locate() in get_step(src, get_dir(outturf, src))
|
||||
if(!compressor)
|
||||
stat |= BROKEN
|
||||
|
||||
|
||||
#define TURBPRES 9000000
|
||||
#define TURBGENQ 20000
|
||||
#define TURBGENG 0.8
|
||||
|
||||
process()
|
||||
overlays = null
|
||||
if(stat & BROKEN)
|
||||
return
|
||||
if(!compressor)
|
||||
stat |= BROKEN
|
||||
return
|
||||
if(!compressor.starter)
|
||||
return
|
||||
lastgen = ((compressor.rpm / TURBGENQ)**TURBGENG) *TURBGENQ
|
||||
|
||||
add_avail(lastgen)
|
||||
var/newrpm = ((compressor.gas_contained.temperature) * compressor.gas_contained.total_moles)/4
|
||||
newrpm = max(0, newrpm)
|
||||
|
||||
if(!compressor.starter || newrpm > 1000)
|
||||
compressor.rpmtarget = newrpm
|
||||
|
||||
if(compressor.gas_contained.total_moles>0)
|
||||
var/oamount = min(compressor.gas_contained.total_moles, (compressor.rpm+100)/35000*compressor.capacity)
|
||||
var/datum/gas_mixture/removed = compressor.gas_contained.remove(oamount)
|
||||
outturf.assume_air(removed)
|
||||
|
||||
if(lastgen > 100)
|
||||
overlays += image('pipes.dmi', "turb-o", FLY_LAYER)
|
||||
|
||||
for(var/mob/M in viewers(1, src))
|
||||
if ((M.client && M.machine == src))
|
||||
src.interact(M)
|
||||
AutoUpdateAI(src)
|
||||
|
||||
attack_ai(mob/user)
|
||||
if(stat & (BROKEN|NOPOWER))
|
||||
return
|
||||
interact(user)
|
||||
|
||||
attack_hand(mob/user)
|
||||
add_fingerprint(user)
|
||||
if(stat & (BROKEN|NOPOWER))
|
||||
return
|
||||
interact(user)
|
||||
|
||||
proc/interact(mob/user)
|
||||
if ( (get_dist(src, user) > 1 ) || (stat & (NOPOWER|BROKEN)) && (!istype(user, /mob/living/silicon/ai)) )
|
||||
user.machine = null
|
||||
user << browse(null, "window=turbine")
|
||||
return
|
||||
user.machine = src
|
||||
|
||||
var/t = "<TT><B>Gas Turbine Generator</B><HR>"
|
||||
t += "Generated power : [round(lastgen)] W<BR>"
|
||||
t += "Turbine: [round(compressor.rpm)] RPM<BR>"
|
||||
t += "Starter: [ compressor.starter ? "<A href='?src=\ref[src];str=1'>Off</A> <B>On</B>" : "<B>Off</B> <A href='?src=\ref[src];str=1'>On</A>"]"
|
||||
t += "<HR>"
|
||||
t += "<A href='?src=\ref[src];refresh=1'>Refresh</A> <A href='?src=\ref[src];close=1'>Close</A>"
|
||||
|
||||
user << browse(t, "window=turbine")
|
||||
onclose(user, "turbine")
|
||||
return
|
||||
|
||||
Topic(href, href_list)
|
||||
..()
|
||||
if(stat & BROKEN)
|
||||
return
|
||||
if (usr.stat || usr.restrained() )
|
||||
return
|
||||
if (!(istype(usr, /mob/living/carbon/human) || ticker) && ticker.mode.name != "monkey")
|
||||
if(!istype(usr, /mob/living/silicon/ai))
|
||||
usr << "\red You don't have the dexterity to do this!"
|
||||
return
|
||||
if (( usr.machine==src && ((get_dist(src, usr) <= 1) && istype(src.loc, /turf))) || (istype(usr, /mob/living/silicon/ai)))
|
||||
if( href_list["close"] )
|
||||
usr << browse(null, "window=turbine")
|
||||
usr.machine = null
|
||||
return
|
||||
else if( href_list["str"] )
|
||||
compressor.starter = !compressor.starter
|
||||
spawn(0)
|
||||
for(var/mob/M in viewers(1, src))
|
||||
if ((M.client && M.machine == src))
|
||||
src.interact(M)
|
||||
else
|
||||
usr << browse(null, "window=turbine")
|
||||
usr.machine = null
|
||||
return
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
/obj/machinery/computer/turbine_computer
|
||||
name = "Gas turbine control computer"
|
||||
desc = "A computer to remotely control a gas turbine"
|
||||
@@ -33,210 +193,22 @@
|
||||
icon_state = "airtunnel0e"
|
||||
anchored = 1
|
||||
density = 1
|
||||
var/obj/machinery/compressor/compressor
|
||||
var/list/obj/machinery/compressor/compressors
|
||||
var/list/obj/machinery/door/poddoor/doors
|
||||
var/id = 0
|
||||
var/door_status = 0
|
||||
var/vent_network = "turbine_gens"
|
||||
|
||||
// the inlet stage of the gas turbine electricity generator
|
||||
|
||||
/obj/machinery/compressor/New()
|
||||
..()
|
||||
|
||||
gas_contained = new
|
||||
inturf = get_step(src, dir)
|
||||
|
||||
spawn(5)
|
||||
turbine = locate() in get_step(src, get_dir(inturf, src))
|
||||
if(!turbine)
|
||||
stat |= BROKEN
|
||||
|
||||
|
||||
#define COMPFRICTION 5e5
|
||||
#define COMPSTARTERLOAD 2800
|
||||
|
||||
/obj/machinery/compressor/process()
|
||||
if(!starter)
|
||||
return
|
||||
overlays = null
|
||||
if(stat & BROKEN)
|
||||
return
|
||||
if(!turbine)
|
||||
stat |= BROKEN
|
||||
return
|
||||
rpm = 0.9* rpm + 0.1 * rpmtarget
|
||||
var/datum/gas_mixture/environment = inturf.return_air()
|
||||
var/transfer_moles = environment.total_moles/10
|
||||
//var/transfer_moles = rpm/10000*capacity
|
||||
var/datum/gas_mixture/removed = inturf.remove_air(transfer_moles)
|
||||
gas_contained.merge(removed)
|
||||
|
||||
rpm = max(0, rpm - (rpm*rpm)/COMPFRICTION)
|
||||
|
||||
|
||||
if(starter && !(stat & NOPOWER))
|
||||
use_power(2800)
|
||||
if(rpm<1000)
|
||||
rpmtarget = 1000
|
||||
else
|
||||
if(rpm<1000)
|
||||
rpmtarget = 0
|
||||
|
||||
|
||||
|
||||
if(rpm>50000)
|
||||
overlays += image('pipes.dmi', "comp-o4", FLY_LAYER)
|
||||
else if(rpm>10000)
|
||||
overlays += image('pipes.dmi', "comp-o3", FLY_LAYER)
|
||||
else if(rpm>2000)
|
||||
overlays += image('pipes.dmi', "comp-o2", FLY_LAYER)
|
||||
else if(rpm>500)
|
||||
overlays += image('pipes.dmi', "comp-o1", FLY_LAYER)
|
||||
//TODO: DEFERRED
|
||||
|
||||
/obj/machinery/power/turbine/New()
|
||||
..()
|
||||
|
||||
outturf = get_step(src, dir)
|
||||
|
||||
spawn(5)
|
||||
|
||||
compressor = locate() in get_step(src, get_dir(outturf, src))
|
||||
if(!compressor)
|
||||
stat |= BROKEN
|
||||
|
||||
|
||||
#define TURBPRES 9000000
|
||||
#define TURBGENQ 20000
|
||||
#define TURBGENG 0.8
|
||||
|
||||
/obj/machinery/power/turbine/process()
|
||||
overlays = null
|
||||
if(stat & BROKEN)
|
||||
return
|
||||
if(!compressor)
|
||||
stat |= BROKEN
|
||||
return
|
||||
if(!compressor.starter)
|
||||
return
|
||||
lastgen = ((compressor.rpm / TURBGENQ)**TURBGENG) *TURBGENQ
|
||||
|
||||
add_avail(lastgen)
|
||||
var/newrpm = ((compressor.gas_contained.temperature) * compressor.gas_contained.total_moles)/4
|
||||
newrpm = max(0, newrpm)
|
||||
|
||||
if(!compressor.starter || newrpm > 1000)
|
||||
compressor.rpmtarget = newrpm
|
||||
|
||||
if(compressor.gas_contained.total_moles>0)
|
||||
var/oamount = min(compressor.gas_contained.total_moles, (compressor.rpm+100)/35000*compressor.capacity)
|
||||
var/datum/gas_mixture/removed = compressor.gas_contained.remove(oamount)
|
||||
outturf.assume_air(removed)
|
||||
|
||||
if(lastgen > 100)
|
||||
overlays += image('pipes.dmi', "turb-o", FLY_LAYER)
|
||||
|
||||
|
||||
for(var/mob/M in viewers(1, src))
|
||||
if ((M.client && M.machine == src))
|
||||
src.interact(M)
|
||||
AutoUpdateAI(src)
|
||||
|
||||
|
||||
/obj/machinery/power/turbine/attack_ai(mob/user)
|
||||
|
||||
if(stat & (BROKEN|NOPOWER))
|
||||
return
|
||||
|
||||
interact(user)
|
||||
|
||||
/obj/machinery/power/turbine/attack_hand(mob/user)
|
||||
|
||||
add_fingerprint(user)
|
||||
|
||||
if(stat & (BROKEN|NOPOWER))
|
||||
return
|
||||
|
||||
interact(user)
|
||||
|
||||
/obj/machinery/power/turbine/proc/interact(mob/user)
|
||||
|
||||
if ( (get_dist(src, user) > 1 ) || (stat & (NOPOWER|BROKEN)) && (!istype(user, /mob/living/silicon/ai)) )
|
||||
user.machine = null
|
||||
user << browse(null, "window=turbine")
|
||||
return
|
||||
|
||||
user.machine = src
|
||||
|
||||
var/t = "<TT><B>Gas Turbine Generator</B><HR><PRE>"
|
||||
|
||||
t += "Generated power : [round(lastgen)] W<BR><BR>"
|
||||
|
||||
t += "Turbine: [round(compressor.rpm)] RPM<BR>"
|
||||
|
||||
t += "Starter: [ compressor.starter ? "<A href='?src=\ref[src];str=1'>Off</A> <B>On</B>" : "<B>Off</B> <A href='?src=\ref[src];str=1'>On</A>"]"
|
||||
|
||||
t += "</PRE><HR><A href='?src=\ref[src];close=1'>Close</A>"
|
||||
|
||||
t += "</TT>"
|
||||
user << browse(t, "window=turbine")
|
||||
onclose(user, "turbine")
|
||||
|
||||
return
|
||||
|
||||
/obj/machinery/power/turbine/Topic(href, href_list)
|
||||
..()
|
||||
if(stat & BROKEN)
|
||||
return
|
||||
if (usr.stat || usr.restrained() )
|
||||
return
|
||||
if (!(istype(usr, /mob/living/carbon/human) || ticker) && ticker.mode.name != "monkey")
|
||||
if(!istype(usr, /mob/living/silicon/ai))
|
||||
usr << "\red You don't have the dexterity to do this!"
|
||||
return
|
||||
|
||||
if (( usr.machine==src && ((get_dist(src, usr) <= 1) && istype(src.loc, /turf))) || (istype(usr, /mob/living/silicon/ai)))
|
||||
|
||||
|
||||
if( href_list["close"] )
|
||||
usr << browse(null, "window=turbine")
|
||||
usr.machine = null
|
||||
return
|
||||
|
||||
else if( href_list["str"] )
|
||||
compressor.starter = !compressor.starter
|
||||
|
||||
spawn(0)
|
||||
for(var/mob/M in viewers(1, src))
|
||||
if ((M.client && M.machine == src))
|
||||
src.interact(M)
|
||||
|
||||
else
|
||||
usr << browse(null, "window=turbine")
|
||||
usr.machine = null
|
||||
|
||||
return
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
|
||||
/obj/machinery/computer/turbine_computer/New()
|
||||
..()
|
||||
spawn(5)
|
||||
for(var/obj/machinery/compressor/C in world)
|
||||
if(id == C.comp_id)
|
||||
compressor = C
|
||||
doors = new /list()
|
||||
for(var/obj/machinery/door/poddoor/P in world)
|
||||
if(P.id == id)
|
||||
doors += P
|
||||
New()
|
||||
..()
|
||||
compressors = new/list()
|
||||
spawn(5)
|
||||
for(var/obj/machinery/compressor/C in world)
|
||||
if(src.vent_network == C.comp_id)
|
||||
compressors.Add(C)
|
||||
for(var/obj/machinery/door/poddoor/D in world)
|
||||
if(src.vent_network == D.networkTag)
|
||||
doors.Add(D)
|
||||
|
||||
/*
|
||||
/obj/machinery/computer/turbine_computer/attackby(I as obj, user as mob)
|
||||
if(istype(I, /obj/item/weapon/screwdriver))
|
||||
playsound(src.loc, 'Screwdriver.ogg', 50, 1)
|
||||
@@ -269,60 +241,66 @@
|
||||
else
|
||||
src.attack_hand(user)
|
||||
return
|
||||
*/
|
||||
|
||||
/obj/machinery/computer/turbine_computer/attack_hand(var/mob/user as mob)
|
||||
user.machine = src
|
||||
var/dat
|
||||
if(src.compressor)
|
||||
dat += {"<BR><B>Gas turbine remote control system</B><HR>
|
||||
\nTurbine status: [ src.compressor.starter ? "<A href='?src=\ref[src];str=1'>Off</A> <B>On</B>" : "<B>Off</B> <A href='?src=\ref[src];str=1'>On</A>"]
|
||||
\n<BR>
|
||||
\nTurbine speed: [src.compressor.rpm]rpm<BR>
|
||||
\nPower currently being generated: [src.compressor.turbine.lastgen]W<BR>
|
||||
\nInternal gas temperature: [src.compressor.gas_contained.temperature]K<BR>
|
||||
\nVent doors: [ src.door_status ? "<A href='?src=\ref[src];doors=1'>Closed</A> <B>Open</B>" : "<B>Closed</B> <A href='?src=\ref[src];doors=1'>Open</A>"]
|
||||
\n</PRE><HR><A href='?src=\ref[src];view=1'>View</A>
|
||||
\n</PRE><HR><A href='?src=\ref[src];close=1'>Close</A>
|
||||
\n<BR>
|
||||
\n"}
|
||||
else
|
||||
dat += "\red<B>No compatible attached compressor found."
|
||||
|
||||
user << browse(dat, "window=computer;size=400x500")
|
||||
onclose(user, "computer")
|
||||
return
|
||||
|
||||
|
||||
|
||||
/obj/machinery/computer/turbine_computer/Topic(href, href_list)
|
||||
if(..())
|
||||
attack_hand(var/mob/user as mob)
|
||||
interact()
|
||||
return
|
||||
if ((usr.contents.Find(src) || (in_range(src, usr) && istype(src.loc, /turf))) || (istype(usr, /mob/living/silicon)))
|
||||
|
||||
proc/interact()
|
||||
if ( (get_dist(src, usr) > 1 ) || (stat & (NOPOWER|BROKEN)) && (!istype(usr, /mob/living/silicon/ai)) )
|
||||
usr.machine = null
|
||||
usr << browse(null, "window=turbinecomp")
|
||||
return
|
||||
usr.machine = src
|
||||
|
||||
if( href_list["view"] )
|
||||
usr.client.eye = src.compressor
|
||||
else if( href_list["str"] )
|
||||
src.compressor.starter = !src.compressor.starter
|
||||
else if (href_list["doors"])
|
||||
var/dat = "<TT><B>Gas turbine remote control system</B><HR>"
|
||||
|
||||
if(src.doors.len)
|
||||
var/closed = 0
|
||||
for(var/obj/machinery/door/poddoor/D in src.doors)
|
||||
if (door_status == 0)
|
||||
spawn( 0 )
|
||||
D.open()
|
||||
door_status = 1
|
||||
else
|
||||
spawn( 0 )
|
||||
D.close()
|
||||
door_status = 0
|
||||
if(D.density)
|
||||
closed = 1
|
||||
dat += "Connected vent status: <font color=blue>[closed ? "<b>Closed</b> <a href='?src=\ref[src];opendoors=1'>\[Open\]</a>" : "<b>Open</b> <a href='?src=\ref[src];closedoors=1'>\[Close\]</a>"]</font>"
|
||||
else
|
||||
dat += "<font color=red><b>No vents connected.</b></font>"
|
||||
|
||||
if(src.compressors.len)
|
||||
for(var/obj/machinery/compressor/C in compressors)
|
||||
dat += "Turbine status: [C.starter ? "<A href='?src=\ref[C];str=1'>Off</A> <B>On</B>" : "<B>Off</B> <A href='?src=\ref[C];str=1'>On</A>"]<BR>"
|
||||
dat += "Turbine speed: [C.rpm]rpm<BR>"
|
||||
dat += "Power currently being generated: [C.turbine.lastgen]W<BR>"
|
||||
dat += "Internal gas temperature: [C.gas_contained.temperature]K<BR>"
|
||||
dat += "<A href='?src=\ref[src];view=1'>View</A><BR>"
|
||||
dat += "<HR>"
|
||||
else
|
||||
dat += "\red<B>No compatible attached compressors found."
|
||||
dat += "<A href='?src=\ref[src];refresh=1'>Refresh</A> <A href='?src=\ref[src];close=1'>Close</A><BR>"
|
||||
|
||||
usr << browse(dat, "window=turbinecomp;size=400x500")
|
||||
onclose(usr, "turbinecomp")
|
||||
|
||||
Topic(href, href_list)
|
||||
if(..())
|
||||
return
|
||||
|
||||
if (href_list["opendoors"])
|
||||
for(var/obj/machinery/door/poddoor/D in src.doors)
|
||||
spawn(0)
|
||||
D.open()
|
||||
if (href_list["closedoors"])
|
||||
for(var/obj/machinery/door/poddoor/D in src.doors)
|
||||
spawn(0)
|
||||
D.close()
|
||||
else if( href_list["close"] )
|
||||
usr << browse(null, "window=computer")
|
||||
usr << browse(null, "window=turbinecomp")
|
||||
usr.machine = null
|
||||
return
|
||||
|
||||
src.add_fingerprint(usr)
|
||||
src.updateUsrDialog()
|
||||
return
|
||||
src.updateUsrDialog()
|
||||
return
|
||||
|
||||
/obj/machinery/computer/turbine_computer/process()
|
||||
src.updateDialog()
|
||||
return
|
||||
process()
|
||||
src.updateDialog()
|
||||
return
|
||||
@@ -1,8 +1,8 @@
|
||||
/obj/item/weapon/gun/energy/laser
|
||||
name = "laser gun"
|
||||
desc = "a basic weapon designed kill with concentrated energy bolts"
|
||||
desc = "A basic weapon designed kill with concentrated energy bolts."
|
||||
icon_state = "laser"
|
||||
item_state = "laser"
|
||||
item_state = "laser100"
|
||||
fire_sound = 'Laser.ogg'
|
||||
w_class = 3.0
|
||||
m_amt = 2000
|
||||
@@ -23,8 +23,9 @@ obj/item/weapon/gun/energy/laser/retro
|
||||
|
||||
|
||||
/obj/item/weapon/gun/energy/laser/captain
|
||||
icon_state = "caplaser"
|
||||
desc = "This is an antique laser gun. All craftsmanship is of the highest quality. It is decorated with assistant leather and chrome. The object menaces with spikes of energy. On the item is an image of Space Station 13. The station is exploding."
|
||||
icon_state = "caplaser"
|
||||
item_state = "laser"
|
||||
force = 10
|
||||
origin_tech = null
|
||||
var/charge_tick = 0
|
||||
@@ -71,6 +72,7 @@ obj/item/weapon/gun/energy/laser/retro
|
||||
name = "laser cannon"
|
||||
desc = "With the L.A.S.E.R. cannon, the lasing medium is enclosed in a tube lined with uranium-235 and subjected to high neutron flux in a nuclear reactor core. This incredible technology may help YOU achieve high excitation rates with small laser volumes!"
|
||||
icon_state = "lasercannon"
|
||||
item_state = "laser100"
|
||||
fire_sound = 'lasercannonfire.ogg'
|
||||
origin_tech = "combat=4;materials=3;powerstorage=3"
|
||||
projectile_type = "/obj/item/projectile/beam/heavylaser"
|
||||
|
||||
@@ -42,6 +42,7 @@
|
||||
origin_tech = "combat=3;materials=5;powerstorage=3"
|
||||
var/lightfail = 0
|
||||
icon_state = "nucgun"
|
||||
item_state = "nucgun100"
|
||||
var/charge_tick = 0
|
||||
|
||||
New()
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
name = "\improper Pulse Rifle"
|
||||
desc = "A heavy-duty, pulse-based energy weapon, preferred by front-line combat personnel."
|
||||
icon_state = "pulse"
|
||||
item_state = "pulse100"
|
||||
force = 10
|
||||
fire_sound = 'pulse.ogg'
|
||||
charge_cost = 200
|
||||
@@ -50,6 +51,7 @@
|
||||
name = "\improper M1911-P"
|
||||
desc = "It's not the size of the gun, it's the size of the hole it puts through people."
|
||||
icon_state = "m1911-p"
|
||||
item_state = "gun"
|
||||
cell_type = "/obj/item/weapon/cell/infinite"
|
||||
|
||||
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
//conveyor2 is pretty much like the original, except it supports corners, but not diverters.
|
||||
//note that corner pieces transfer stuff clockwise when running forward, and anti-clockwise backwards.
|
||||
//cael - added fix for diverters, not sure if tg has them
|
||||
|
||||
/obj/machinery/conveyor
|
||||
icon = 'recycling.dmi'
|
||||
@@ -115,14 +116,16 @@
|
||||
|
||||
affecting = loc.contents - src // moved items will be all in loc
|
||||
spawn(1) // slight delay to prevent infinite propagation due to map order
|
||||
var/items_moved = 0
|
||||
for(var/atom/movable/A in affecting)
|
||||
if(!A.anchored)
|
||||
if(isturf(A.loc)) // this is to prevent an ugly bug that forces a player to drop what they're holding if they recently pick it up from the conveyer belt
|
||||
step(A,movedir)
|
||||
items_moved++
|
||||
if(items_moved >= 10)
|
||||
break
|
||||
if(!step(A,movedir))
|
||||
//if it's a crate, move the item into the crate
|
||||
var/turf/T = get_step(A,movedir)
|
||||
for(var/obj/structure/closet/crate/C in T)
|
||||
if(C && C.opened)
|
||||
A.loc = C.loc
|
||||
break
|
||||
|
||||
// attack with item, place item on conveyor
|
||||
/obj/machinery/conveyor/attackby(var/obj/item/I, mob/user)
|
||||
|
||||
Reference in New Issue
Block a user