Merge github.com:Baystation12/Baystation12

Conflicts:
	html/changelog.html
This commit is contained in:
cib
2012-05-19 19:42:30 +02:00
153 changed files with 15174 additions and 13698 deletions
+45 -44
View File
@@ -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
+4 -10
View File
@@ -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
+6 -4
View File
@@ -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)
+7 -3
View File
@@ -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))
+5 -1
View File
@@ -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
+64 -57
View File
@@ -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
+19 -18
View File
@@ -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
+27 -3
View File
@@ -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?"
+32 -10
View File
@@ -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
+3
View File
@@ -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"
+5 -5
View File
@@ -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
+20 -1
View File
@@ -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
+36 -48
View File
@@ -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>"}
+6 -4
View File
@@ -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()
+7 -7
View File
@@ -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
+8 -4
View File
@@ -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
+1 -1
View File
@@ -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
+1 -5
View File
@@ -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()
+1 -1
View File
@@ -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
View File
@@ -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()
+7 -2
View File
@@ -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)
+3 -1
View File
@@ -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
+19
View File
@@ -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
View File
@@ -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"
+8 -5
View File
@@ -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)