Merge branch 'master' of github.com:Baystation12/Baystation12 into TGUpdates

Conflicts:
	code/game/machinery/doors/airlock.dm
	code/game/machinery/doors/door.dm
	code/game/objects/transfer_valve.dm
	code/game/turf.dm
	code/modules/clothing/gloves.dm
	maps/tgstation.2.0.8.dmm
This commit is contained in:
Erthilo
2012-06-19 22:09:30 +01:00
139 changed files with 16602 additions and 15345 deletions
+9 -9
View File
@@ -513,10 +513,10 @@ obj/machinery/computer/forensic_scanning
prints[print] = atom_fingerprints[print]
else
var/list/templist[4]
templist[1] = atom_suit_fibers.Copy()
templist[2] = atom_blood_DNA.Copy()
templist[1] = atom_suit_fibers ? atom_suit_fibers.Copy() : null
templist[2] = atom_blood_DNA ? atom_blood_DNA.Copy() : null
templist[3] = atom_name
templist[4] = atom_fingerprints.Copy()
templist[4] = atom_fingerprints ? atom_fingerprints.Copy() : null
misc[atom_reference] = templist //Store it!
//Has prints.
if(atom_fingerprints)
@@ -560,17 +560,17 @@ obj/machinery/computer/forensic_scanning
//It's not in there! We gotta add it.
update_fingerprints(main_print, atom_fingerprints[main_print])
var/list/data_point[4]
data_point[1] = atom_fingerprints.Copy()
data_point[2] = atom_suit_fibers.Copy()
data_point[3] = atom_blood_DNA.Copy()
data_point[1] = atom_fingerprints ? atom_fingerprints.Copy() : null
data_point[2] = atom_suit_fibers ? atom_suit_fibers.Copy() : null
data_point[3] = atom_blood_DNA ? atom_blood_DNA.Copy() : null
data_point[4] = atom_name
data_entry[atom_reference] = data_point
continue
//No print at all! New data entry, go!
var/list/data_point[4]
data_point[1] = atom_fingerprints.Copy()
data_point[2] = atom_suit_fibers.Copy()
data_point[3] = atom_blood_DNA.Copy()
data_point[1] = atom_fingerprints ? atom_fingerprints.Copy() : null
data_point[2] = atom_suit_fibers ? atom_suit_fibers.Copy() : null
data_point[3] = atom_blood_DNA ? atom_blood_DNA.Copy() : null
data_point[4] = atom_name
var/list/new_file[2]
new_file[1] = atom_fingerprints[main_print]
+3 -3
View File
@@ -164,9 +164,9 @@
blood[main_blood] = A.blood_DNA[blood]
return 1
var/list/sum_list[4] //Pack it back up!
sum_list[1] = A.fingerprints.Copy()
sum_list[2] = A.suit_fibers.Copy()
sum_list[3] = A.blood_DNA.Copy()
sum_list[1] = A.fingerprints ? A.fingerprints.Copy() : null
sum_list[2] = A.suit_fibers ? A.suit_fibers.Copy() : null
sum_list[3] = A.blood_DNA ? A.blood_DNA.Copy() : null
sum_list[4] = "\The [A] in \the [get_area(A)]"
stored["\ref [A]"] = sum_list
return 0
+16 -2
View File
@@ -1577,6 +1577,7 @@ var/global/BSACooldown = 0
return
alert("Cannot make this mob a traitor! It has no mind!")
if (href_list["create_object"])
if (src.rank in list("Admin Candidate", "Trial Admin", "Badmin", "Game Admin", "Game Master"))
return create_object(usr)
@@ -2343,7 +2344,6 @@ var/global/BSACooldown = 0
dat += "<tr><td>[H]</td><td>H.dna = null</td></tr>"
dat += "</table>"
usr << browse(dat, "window=fingerprints;size=440x410")
else
if (usr)
log_admin("[key_name(usr)] used secret [href_list["secretsadmin"]]")
if (ok)
@@ -2376,6 +2376,16 @@ var/global/BSACooldown = 0
J.spawn_positions = -1
message_admins("[key_name_admin(usr)] has removed the cap on security officers.")
return
if(href_list["vsc"])
if ((src.rank in list( "Moderator", "Temporary Admin", "Admin Candidate", "Trial Admin", "Badmin", "Game Admin", "Game Master" )))
if(href_list["vsc"] == "airflow")
vsc.ChangeSettingsDialog(usr,vsc.settings)
if(href_list["vsc"] == "plasma")
vsc.ChangeSettingsDialog(usr,vsc.plc.settings)
if(href_list["vsc"] == "default")
vsc.SetDefault(usr)
if (href_list["rnd_max"])
for(var/obj/machinery/computer/rdconsole/C in world)
for(var/datum/tech/T in C.files.known_tech)
@@ -2704,8 +2714,12 @@ var/global/BSACooldown = 0
dat += "<A href='?src=\ref[src];create_turf=1'>Create Turf</A><br>"
if(lvl >= 5)
dat += "<A href='?src=\ref[src];create_mob=1'>Create Mob</A><br>"
if(lvl >= 3 )
dat += "<br><A href='?src=\ref[src];vsc=airflow'>Edit Airflow Settings</A><br>"
dat += "<A href='?src=\ref[src];vsc=plasma'>Edit Plasma Settings</A><br>"
dat += "<A href='?src=\ref[src];vsc=default'>Choose a default ZAS setting</A><br>"
// if(lvl == 6 )
usr << browse(dat, "window=admin2;size=210x180")
usr << browse(dat, "window=admin2;size=210x280")
return
/*
/obj/admins/proc/goons()
+3 -3
View File
@@ -200,8 +200,8 @@
else
dat += "<td>No Assigned Role</td>"
*/
dat += {"<td>IP: [M.client.address]<br>
CID: [M.client.computer_id]</td>
dat += {"<td>IP: [M.client ? M.client.address : "Disconnected"]<br>
CID: [M.client ? M.client.computer_id : "Disconnected"]</td>
"}
dat += {"<td><A HREF='?src=\ref[src];player_info=[M.ckey]'>[player_has_info(M.ckey) ? "Info" : "N/A"] </A></td>
@@ -341,7 +341,7 @@
if(M)
dat += "<tr><td><a href='?src=\ref[src];adminplayeropts=\ref[M]'>[M.real_name]</a>[M.client ? "" : " <i>(logged out)</i>"][M.stat == 2 ? " <b><font color=red>(DEAD)</font></b>" : ""]</td>"
dat += "<td><A href='?src=\ref[usr];priv_msg=\ref[M]'>PM</A></td>"
var/turf/mob_loc = get_turf_loc(M)
var/turf/mob_loc = get_turf(M)
dat += "<td>[mob_loc.loc]</td></tr>"
else
dat += "<tr><td><i>Head not found!</i></td></tr>"
+7 -7
View File
@@ -213,7 +213,7 @@
if(new_value == null) return
if(variable=="luminosity")
O.sd_SetLuminosity(new_value)
O.ul_SetLuminosity(new_value)
else
O.vars[variable] = new_value
@@ -222,7 +222,7 @@
for(var/mob/M in world)
if ( istype(M , O.type) )
if(variable=="luminosity")
M.sd_SetLuminosity(new_value)
M.ul_SetLuminosity(new_value)
else
M.vars[variable] = O.vars[variable]
@@ -230,7 +230,7 @@
for(var/obj/A in world)
if ( istype(A , O.type) )
if(variable=="luminosity")
A.sd_SetLuminosity(new_value)
A.ul_SetLuminosity(new_value)
else
A.vars[variable] = O.vars[variable]
@@ -238,7 +238,7 @@
for(var/turf/A in world)
if ( istype(A , O.type) )
if(variable=="luminosity")
A.sd_SetLuminosity(new_value)
A.ul_SetLuminosity(new_value)
else
A.vars[variable] = O.vars[variable]
@@ -247,7 +247,7 @@
for(var/mob/M in world)
if (M.type == O.type)
if(variable=="luminosity")
M.sd_SetLuminosity(new_value)
M.ul_SetLuminosity(new_value)
else
M.vars[variable] = O.vars[variable]
@@ -255,7 +255,7 @@
for(var/obj/A in world)
if (A.type == O.type)
if(variable=="luminosity")
A.sd_SetLuminosity(new_value)
A.ul_SetLuminosity(new_value)
else
A.vars[variable] = O.vars[variable]
@@ -263,7 +263,7 @@
for(var/turf/A in world)
if (A.type == O.type)
if(variable=="luminosity")
A.sd_SetLuminosity(new_value)
A.ul_SetLuminosity(new_value)
else
A.vars[variable] = O.vars[variable]
+1 -1
View File
@@ -531,7 +531,7 @@ var/list/forbidden_varedit_object_types = list(
if(variable=="luminosity")
var/var_new = input("Enter new number:","Num",O.vars[variable]) as null|num
if(var_new == null) return
O.sd_SetLuminosity(var_new)
O.ul_SetLuminosity(var_new)
else
var/var_new = input("Enter new number:","Num",O.vars[variable]) as null|num
if(var_new==null) return
+1 -1
View File
@@ -45,7 +45,7 @@
if(src.holder.rank == "Game Master" || src.holder.rank == "Game Admin")
log_admin("[key_name(src)] played a local sound [S]")
message_admins("[key_name_admin(src)] played a local sound [S]", 1)
playsound(get_turf_loc(src.mob), S, 50, 0, 0)
playsound(get_turf(src.mob), S, 50, 0, 0)
return
//feedback_add_details("admin_verb","PLS") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
+39 -3
View File
@@ -389,7 +389,7 @@ datum
// if(50 to INFINITY)
// M:adjustToxLoss(0.1)
data++
holder.remove_reagent(src.id, 0.1)
holder.remove_reagent(src.id, 0.04)
..()
return
@@ -1819,14 +1819,15 @@ datum
if(!data) data = 1
data++
switch(data)
if(1)
if(10)
M:confused += 2
M:drowsyness += 2
if(2 to 50)
if(11 to 50)
M:sleeping += 5
if(51 to INFINITY)
M:sleeping += 5
M:adjustToxLoss(2)
holder.remove_reagent(src.id, 0.04)
..()
return
@@ -2749,12 +2750,47 @@ datum
color = "#664300" // rgb: 102, 67, 0
dizzy_adj = 3
absinthe
name = "Absinthe"
id = "absinthe"
description = "Watch out that the Green Fairy doesn't come for you!"
color = "#33EE00" // rgb: lots, ??, ??
dizzy_adj = 5
slur_start = 25
confused_start = 100
//copy paste from LSD... shoot me
on_mob_life(var/mob/M)
if(!M) M = holder.my_atom
if(!data) data = 1
data++
M:hallucination += 5
if(volume > REAGENTS_OVERDOSE)
M:adjustToxLoss(1)
// if(data >= 100)
// M:adjustToxLoss(0.1)
..()
return
rum
name = "Rum"
id = "rum"
description = "Yohoho and all that."
color = "#664300" // rgb: 102, 67, 0
deadrum
name = "Deadrum"
id = "rum"
description = "Popular with the sailors. Not very popular with everyone else."
color = "#664300" // rgb: 102, 67, 0
on_mob_life(var/mob/living/M as mob)
..()
M.dizziness +=5
if(volume > REAGENTS_OVERDOSE)
M:adjustToxLoss(1)
return
vodka
name = "Vodka"
id = "vodka"
+8 -8
View File
@@ -684,8 +684,8 @@ datum
if(chosen)
// Calculate previous position for transition
var/turf/FROM = get_turf_loc(holder.my_atom) // the turf of origin we're travelling FROM
var/turf/TO = get_turf_loc(chosen) // the turf of origin we're travelling TO
var/turf/FROM = get_turf(holder.my_atom) // the turf of origin we're travelling FROM
var/turf/TO = get_turf(chosen) // the turf of origin we're travelling TO
playsound(TO, 'phasein.ogg', 100, 1)
@@ -733,16 +733,16 @@ datum
var/list/critters = typesof(/obj/effect/critter) - /obj/effect/critter // list of possible critters
playsound(get_turf_loc(holder.my_atom), 'phasein.ogg', 100, 1)
playsound(get_turf(holder.my_atom), 'phasein.ogg', 100, 1)
for(var/mob/living/carbon/human/M in viewers(get_turf_loc(holder.my_atom), null))
for(var/mob/living/carbon/human/M in viewers(get_turf(holder.my_atom), null))
if(M:eyecheck() <= 0)
flick("e_flash", M.flash)
for(var/i = 1, i <= created_volume, i++)
var/chosen = pick(critters)
var/obj/effect/critter/C = new chosen
C.loc = get_turf_loc(holder.my_atom)
C.loc = get_turf(holder.my_atom)
if(prob(50))
for(var/j = 1, j <= rand(1, 3), j++)
step(C, pick(NORTH,SOUTH,EAST,WEST))
@@ -759,9 +759,9 @@ datum
var/list/borks = typesof(/obj/item/weapon/reagent_containers/food/snacks) - /obj/item/weapon/reagent_containers/food/snacks
// BORK BORK BORK
playsound(get_turf_loc(holder.my_atom), 'phasein.ogg', 100, 1)
playsound(get_turf(holder.my_atom), 'phasein.ogg', 100, 1)
for(var/mob/living/carbon/human/M in viewers(get_turf_loc(holder.my_atom), null))
for(var/mob/living/carbon/human/M in viewers(get_turf(holder.my_atom), null))
if(M:eyecheck() <= 0)
flick("e_flash", M.flash)
@@ -769,7 +769,7 @@ datum
var/chosen = pick(borks)
var/obj/B = new chosen
if(B)
B.loc = get_turf_loc(holder.my_atom)
B.loc = get_turf(holder.my_atom)
if(prob(50))
for(var/j = 1, j <= rand(1, 3), j++)
step(B, pick(NORTH,SOUTH,EAST,WEST))
+24
View File
@@ -3009,6 +3009,14 @@
..()
reagents.add_reagent("rum", 100)
/obj/item/weapon/reagent_containers/food/drinks/bottle/deadrum
name = "Deadrum Bumbo"
desc = "Tastes a lot sweeter than ordinary rum (that's to help disguise the kick)."
icon_state = "deadrumbottle"
New()
..()
reagents.add_reagent("deadrum", 100)
/obj/item/weapon/reagent_containers/food/drinks/bottle/holywater
name = "Flask of Holy Water"
desc = "A flask of the chaplain's holy water."
@@ -3057,6 +3065,14 @@
..()
reagents.add_reagent("wine", 100)
/obj/item/weapon/reagent_containers/food/drinks/bottle/absinthe
name = "Jailbreaker Verte"
desc = "Twenty-fourth century Green Fairy, one sip of this and you just know you're gonna have a good time."
icon_state = "absinthebottle"
New()
..()
reagents.add_reagent("absinthe", 100)
//////////////////////////JUICES AND STUFF ///////////////////////
/obj/item/weapon/reagent_containers/food/drinks/bottle/orangejuice
@@ -3727,6 +3743,14 @@
icon_state = "glass_brown"
name = "Glass of bilk"
desc = "A brew of milk and beer. For those alcoholics who fear osteoporosis."
if("absinthe")
icon_state = "glass_green"
name = "Glass of absinthe"
desc = "A glass of the Green Fairy."
if("deadrum")
icon_state = "glass_brown"
name = "Glass of Dead Rum"
desc = "Dangerously sweet rum. You won't be getting scurvy any time soon!"
else
icon_state ="glass_brown"
name = "Glass of ..what?"
File diff suppressed because it is too large Load Diff
+13 -13
View File
@@ -6,7 +6,7 @@
vision_flags = BLIND
/obj/item/clothing/glasses/meson
name = "Optical Meson Scanner"
name = "optical meson scanners"
desc = "Used for seeing walls, floors, and stuff through anything."
icon_state = "meson"
item_state = "glasses"
@@ -17,13 +17,13 @@
prescription = 1
/obj/item/clothing/glasses/science
name = "Science Goggles"
name = "science goggles"
desc = "Used for !!SCIENCE!!"
icon_state = "purple"
item_state = "glasses"
/obj/item/clothing/glasses/night
name = "Night Vision Goggles"
name = "night vision goggles"
desc = "You can totally see in the dark now!"
icon_state = "night"
item_state = "glasses"
@@ -32,7 +32,7 @@
darkness_view = 3
/obj/item/clothing/glasses/material
name = "Optical Material Scanner"
name = "optical material scanners"
desc = "Very confusing glasses."
icon_state = "material"
item_state = "glasses"
@@ -40,20 +40,20 @@
vision_flags = SEE_OBJS
/obj/item/clothing/glasses/regular
name = "Prescription Glasses"
name = "prescription glasses"
desc = "Made by Nerd. Co."
icon_state = "glasses"
item_state = "glasses"
prescription = 1
/obj/item/clothing/glasses/regular/hipster
name = "Prescription Glasses"
name = "prescription glasses"
desc = "Made by Uncool. Co."
icon_state = "hipster_glasses"
item_state = "hipster_glasses"
/obj/item/clothing/glasses/gglasses
name = "Green Glasses"
name = "green glasses"
desc = "Forest green glasses, like the kind you'd wear when hatching a nasty scheme."
icon_state = "gglasses"
item_state = "gglasses"
@@ -98,20 +98,20 @@
invisa_view = 2
/obj/item/clothing/glasses/thermal/monocle
name = "Thermoncle"
desc = "A monocle thermal."
name = "thermoncle"
desc = "A monocle outfitted with thermals."
icon_state = "thermoncle"
item_state = "glasses"
flags = null //doesn't protect eyes because it's a monocle, duh
/obj/item/clothing/glasses/thermal/eyepatch
name = "Optical Thermal Eyepatch"
desc = "An eyepatch with built-in thermal optics"
name = "optical thermal eyepatch"
desc = "An eyepatch with built-in thermal optics."
icon_state = "eyepatch"
item_state = "eyepatch"
/obj/item/clothing/glasses/thermal/jensen
name = "Optical Thermal Implants"
desc = "A set of implantable lenses designed to augment your vision"
name = "optical thermal implants"
desc = "A set of implantable lenses designed to augment your vision."
icon_state = "thermalimplants"
item_state = "syringe_kit"
+1 -1
View File
@@ -99,7 +99,7 @@
/obj/item/clothing/gloves/swat
desc = "These tactical gloves are somewhat fire and impact-resistant."
name = "\improper SWAT Gloves"
name = "\improper SWAT gloves"
icon_state = "black"
item_state = "swat_gl"
siemens_coefficient = 0
+153 -153
View File
@@ -1,153 +1,153 @@
// HATS. OH MY WHAT A FINE CHAPEAU, GOOD SIR.
/obj/item/clothing/head
name = "head"
icon = 'hats.dmi'
body_parts_covered = HEAD
slot_flags = SLOT_HEAD
/obj/item/clothing/head/cakehat
name = "cake-hat"
desc = "It's tasty looking!"
icon_state = "cake0"
var/onfire = 0.0
var/status = 0
flags = FPRINT|TABLEPASS|HEADSPACE|HEADCOVERSEYES
var/fire_resist = T0C+1300 //this is the max temp it can stand before you start to cook. although it might not burn away, you take damage
/obj/item/clothing/head/caphat
name = "captain's hat"
icon_state = "captain"
desc = "It's good being the king."
flags = FPRINT|TABLEPASS|SUITSPACE
item_state = "caphat"
/obj/item/clothing/head/centhat
name = "\improper CentComm. hat"
icon_state = "centcom"
desc = "It's good to be emperor."
flags = FPRINT|TABLEPASS|SUITSPACE
item_state = "centhat"
/obj/item/clothing/head/deathsquad/beret
name = "officer's beret"
desc = "An armored beret commonly used by special operations officers."
icon_state = "beret_badge"
flags = FPRINT|TABLEPASS
armor = list(melee = 65, bullet = 55, laser = 35,energy = 20, bomb = 30, bio = 30, rad = 30)
/obj/item/clothing/head/powdered_wig
name = "powdered wig"
desc = "A powdered wig."
icon_state = "pwig"
item_state = "pwig"
/obj/item/clothing/head/that
name = "top-hat"
desc = "It's an amish looking hat."
icon_state = "tophat"
item_state = "that"
flags = FPRINT|TABLEPASS
/obj/item/clothing/head/chefhat
name = "chef's hat"
desc = "It's a hat used by chefs to keep hair out of your food. Judging by the food in the mess, they don't work."
icon_state = "chef"
item_state = "chef"
desc = "The commander in chef's head wear."
flags = FPRINT | TABLEPASS
/obj/item/clothing/head/redcoat
name = "redcoat's hat"
icon_state = "redcoat"
desc = "<i>'I guess it's a redhead.'</i>"
flags = FPRINT | TABLEPASS
/obj/item/clothing/head/mailman
name = "mailman's hat"
icon_state = "mailman"
desc = "<i>'Right-on-time'</i> mail service head wear."
flags = FPRINT | TABLEPASS
/obj/item/clothing/head/plaguedoctorhat
name = "plague doctor's hat"
desc = "These were once used by Plague doctors. They're pretty much useless."
icon_state = "plaguedoctor"
flags = FPRINT | TABLEPASS
permeability_coefficient = 0.01
/obj/item/clothing/head/beret
name = "beret"
desc = "A beret, a mime's favorite headwear."
icon_state = "beret"
flags = FPRINT | TABLEPASS
/obj/item/clothing/head/chaplain_hood
name = "chaplain's hood"
desc = "It's hood that covers the head. It keeps you warm during the space winters."
icon_state = "chaplain_hood"
flags = FPRINT|TABLEPASS|HEADSPACE|HEADCOVERSEYES|BLOCKHAIR
/obj/item/clothing/head/nun_hood
name = "nun hood"
desc = "Maximum piety in this star system."
icon_state = "nun_hood"
flags = FPRINT|TABLEPASS|HEADSPACE|HEADCOVERSEYES|BLOCKHAIR
/obj/item/clothing/head/hasturhood
name = "hastur's hood"
desc = "It's unspeakably stylish"
icon_state = "hasturhood"
flags = FPRINT|TABLEPASS|HEADSPACE|HEADCOVERSEYES|BLOCKHAIR
/obj/item/clothing/head/nursehat
name = "nurse's hat"
desc = "It allows quick identification of trained medical personnel."
icon_state = "nursehat"
flags = FPRINT|TABLEPASS
/obj/item/clothing/head/helmet/cueball
name = "cueball helmet"
desc = "A large, featureless white orb mean to be worn on your head. How do you even see out of this thing?"
icon_state = "cueball"
flags = FPRINT|TABLEPASS|SUITSPACE|HEADCOVERSEYES|HEADCOVERSMOUTH|BLOCKHAIR
item_state="cueball"
flags_inv = 0
/obj/item/clothing/head/secsoft
name = "soft cap"
desc = "It's baseball hat in tasteful red colour."
icon_state = "secsoft"
flags = FPRINT|TABLEPASS|HEADCOVERSEYES
item_state = "helmet"
/obj/item/clothing/head/cargosoft
name = "cargo cap"
desc = "It's a baseball hat in a tasteless yellow colour."
icon_state = "cargosoft"
flags = FPRINT|TABLEPASS|HEADCOVERSEYES
item_state = "helmet"
var/flipped = 0
// CHUMP HELMETS: COOKING THEM DESTROYS THE CHUMP HELMET SPAWN.
/obj/item/clothing/head/syndicatefake
name = "red space-helmet replica"
desc = "A plastic replica of a red space space helmet. This is a toy, it is not made for use in space!"
icon_state = "syndicate"
item_state = "syndicate"
see_face = 0.0
flags = FPRINT | TABLEPASS | BLOCKHAIR
flags_inv = HIDEMASK|HIDEEARS|HIDEEYES
/obj/item/clothing/head/helmet/cardborg
name = "cardborg helmet"
desc = "A helmet made out of a box."
icon_state = "cardborg_h"
item_state = "cardborg_h"
flags = FPRINT | TABLEPASS | HEADCOVERSEYES | HEADCOVERSMOUTH
see_face = 0.0
armor = list(melee = 0, bullet = 0, laser = 2,energy = 2, bomb = 0, bio = 0, rad = 0)
flags_inv = HIDEMASK|HIDEEARS|HIDEEYES
// HATS. OH MY WHAT A FINE CHAPEAU, GOOD SIR.
/obj/item/clothing/head
name = "head"
icon = 'hats.dmi'
body_parts_covered = HEAD
slot_flags = SLOT_HEAD
/obj/item/clothing/head/cakehat
name = "cake hat"
desc = "It's tasty looking!"
icon_state = "cake0"
var/onfire = 0.0
var/status = 0
flags = FPRINT|TABLEPASS|HEADSPACE|HEADCOVERSEYES
var/fire_resist = T0C+1300 //this is the max temp it can stand before you start to cook. although it might not burn away, you take damage
/obj/item/clothing/head/caphat
name = "captain's hat"
icon_state = "captain"
desc = "It's good being the king."
flags = FPRINT|TABLEPASS|SUITSPACE
item_state = "caphat"
/obj/item/clothing/head/centhat
name = "\improper CentComm. hat"
icon_state = "centcom"
desc = "It's good to be emperor."
flags = FPRINT|TABLEPASS|SUITSPACE
item_state = "centhat"
/obj/item/clothing/head/deathsquad/beret
name = "officer's beret"
desc = "An armored beret commonly used by special operations officers."
icon_state = "beret_badge"
flags = FPRINT|TABLEPASS
armor = list(melee = 65, bullet = 55, laser = 35,energy = 20, bomb = 30, bio = 30, rad = 30)
/obj/item/clothing/head/powdered_wig
name = "powdered wig"
desc = "A powdered wig."
icon_state = "pwig"
item_state = "pwig"
/obj/item/clothing/head/that
name = "top hat"
desc = "It's an amish looking hat."
icon_state = "tophat"
item_state = "that"
flags = FPRINT|TABLEPASS
/obj/item/clothing/head/chefhat
name = "chef's hat"
desc = "It's a hat used by chefs to keep hair out of your food. Judging by the food in the mess, they don't work."
icon_state = "chef"
item_state = "chef"
//desc = "The commander in chef's head wear." //Two descriptions, wha? -Deus
flags = FPRINT | TABLEPASS
/obj/item/clothing/head/redcoat
name = "redcoat's hat"
icon_state = "redcoat"
desc = "<i>'I guess it's a redhead.'</i>"
flags = FPRINT | TABLEPASS
/obj/item/clothing/head/mailman
name = "mailman's hat"
icon_state = "mailman"
desc = "<i>'Right-on-time'</i> mail service head wear."
flags = FPRINT | TABLEPASS
/obj/item/clothing/head/plaguedoctorhat
name = "plague doctor's hat"
desc = "These were once used by plague doctors. They're pretty much useless."
icon_state = "plaguedoctor"
flags = FPRINT | TABLEPASS
permeability_coefficient = 0.01
/obj/item/clothing/head/beret
name = "beret"
desc = "A beret, a mime's favorite headwear."
icon_state = "beret"
flags = FPRINT | TABLEPASS
/obj/item/clothing/head/chaplain_hood
name = "chaplain's hood"
desc = "It's hood that covers the head. It keeps you warm during the space winters."
icon_state = "chaplain_hood"
flags = FPRINT|TABLEPASS|HEADSPACE|HEADCOVERSEYES|BLOCKHAIR
/obj/item/clothing/head/nun_hood
name = "nun hood"
desc = "Maximum piety in this star system."
icon_state = "nun_hood"
flags = FPRINT|TABLEPASS|HEADSPACE|HEADCOVERSEYES|BLOCKHAIR
/obj/item/clothing/head/hasturhood
name = "hastur's hood"
desc = "It's unspeakably stylish!"
icon_state = "hasturhood"
flags = FPRINT|TABLEPASS|HEADSPACE|HEADCOVERSEYES|BLOCKHAIR
/obj/item/clothing/head/nursehat
name = "nurse's hat"
desc = "It allows quick identification of trained medical personnel."
icon_state = "nursehat"
flags = FPRINT|TABLEPASS
/obj/item/clothing/head/helmet/cueball
name = "cueball helmet"
desc = "A large, featureless white orb mean to be worn on your head. How do you even see out of this thing?"
icon_state = "cueball"
flags = FPRINT|TABLEPASS|SUITSPACE|HEADCOVERSEYES|HEADCOVERSMOUTH|BLOCKHAIR
item_state="cueball"
flags_inv = 0
/obj/item/clothing/head/secsoft
name = "security cap"
desc = "It's a baseball hat in a tasteful red colour."
icon_state = "secsoft"
flags = FPRINT|TABLEPASS|HEADCOVERSEYES
item_state = "helmet"
/obj/item/clothing/head/cargosoft
name = "cargo cap"
desc = "It's a baseball hat in a tasteless yellow colour."
icon_state = "cargosoft"
flags = FPRINT|TABLEPASS|HEADCOVERSEYES
item_state = "helmet"
var/flipped = 0
// CHUMP HELMETS: COOKING THEM DESTROYS THE CHUMP HELMET SPAWN.
/obj/item/clothing/head/syndicatefake
name = "red space helmet replica"
desc = "A plastic replica of a red space helmet. This is a toy, it is not made for use in space!"
icon_state = "syndicate"
item_state = "syndicate"
see_face = 0.0
flags = FPRINT | TABLEPASS | BLOCKHAIR
flags_inv = HIDEMASK|HIDEEARS|HIDEEYES
/obj/item/clothing/head/helmet/cardborg
name = "cardborg helmet"
desc = "A helmet made out of a box."
icon_state = "cardborg_h"
item_state = "cardborg_h"
flags = FPRINT | TABLEPASS | HEADCOVERSEYES | HEADCOVERSMOUTH
see_face = 0.0
armor = list(melee = 0, bullet = 0, laser = 2,energy = 2, bomb = 0, bio = 0, rad = 0)
flags_inv = HIDEMASK|HIDEEARS|HIDEEYES
+82 -82
View File
@@ -1,82 +1,82 @@
/obj/item/clothing/head/helmet
name = "helmet"
desc = "Standard Security gear. Protects the head from impacts."
icon_state = "helmet"
flags = FPRINT | TABLEPASS | SUITSPACE | HEADCOVERSEYES
item_state = "helmet"
armor = list(melee = 50, bullet = 15, laser = 50,energy = 10, bomb = 25, bio = 0, rad = 0)
protective_temperature = 500
heat_transfer_coefficient = 0.10
flags_inv = HIDEEARS|HIDEEYES
/obj/item/clothing/head/helmet/warden
name = "warden's hat"
desc = "It's a special helmet issued to the Warden of a securiy force. Protects the head from impacts."
icon_state = "wardencap"
flags_inv = 0
/obj/item/clothing/head/helmet/swat
name = "\improper SWAT helmet"
desc = "They're often used by highly trained Swat Members."
icon_state = "swat"
flags = FPRINT | TABLEPASS | SUITSPACE | HEADSPACE | HEADCOVERSEYES
item_state = "swat"
armor = list(melee = 80, bullet = 60, laser = 50,energy = 25, bomb = 50, bio = 10, rad = 0)
flags_inv = HIDEEARS|HIDEEYES
/obj/item/clothing/head/helmet/thunderdome
name = "\improper Thunderdome helmet"
desc = "<i>'Let the battle commence!'</i>"
icon_state = "thunderdome"
flags = FPRINT | TABLEPASS | SUITSPACE | HEADSPACE | HEADCOVERSEYES
item_state = "thunderdome"
armor = list(melee = 80, bullet = 60, laser = 50,energy = 10, bomb = 25, bio = 10, rad = 0)
/obj/item/clothing/head/helmet/welding
name = "welding helmet"
desc = "A head-mounted face cover designed to protect the wearer completely from space-arc eye."
icon_state = "welding"
flags = FPRINT | TABLEPASS | SUITSPACE | HEADCOVERSEYES | HEADCOVERSMOUTH
see_face = 0.0
item_state = "welding"
protective_temperature = 1300
m_amt = 3000
g_amt = 1000
var/up = 0
armor = list(melee = 10, bullet = 5, laser = 10,energy = 5, bomb = 10, bio = 5, rad = 10)
flags_inv = HIDEMASK|HIDEEARS|HIDEEYES
/obj/item/clothing/head/helmet/that
name = "sturdy top-hat"
desc = "It's an amish looking armored top hat."
icon_state = "tophat"
item_state = "that"
flags = FPRINT|TABLEPASS
armor = list(melee = 0, bullet = 0, laser = 2,energy = 2, bomb = 0, bio = 0, rad = 0)
flags_inv = 0
/obj/item/clothing/head/helmet/greenbandana
name = "green bandana"
desc = "It's a green bandana with some fine nanotech lining."
icon_state = "greenbandana"
item_state = "greenbandana"
flags = FPRINT|TABLEPASS
armor = list(melee = 5, bullet = 5, laser = 5,energy = 5, bomb = 15, bio = 15, rad = 15)
flags_inv = 0
/obj/item/clothing/head/helmet/riot
name = "riot helmet"
desc = "It's a helmet specifically designed to protect against close range attacks."
icon_state = "riot"
item_state = "helmet"
flags = FPRINT|TABLEPASS|SUITSPACE|HEADCOVERSEYES
armor = list(melee = 82, bullet = 15, laser = 5,energy = 5, bomb = 5, bio = 2, rad = 0)
flags_inv = HIDEEARS
/obj/item/clothing/head/helmet/cap
name = "captain's cap"
desc = "You fear to wear it for the negligence it brings."
icon_state = "capcap"
flags = FPRINT|TABLEPASS|SUITSPACE
armor = list(melee = 0, bullet = 0, laser = 2,energy = 2, bomb = 0, bio = 0, rad = 0)
flags_inv = 0
/obj/item/clothing/head/helmet
name = "helmet"
desc = "Standard Security gear. Protects the head from impacts."
icon_state = "helmet"
flags = FPRINT | TABLEPASS | SUITSPACE | HEADCOVERSEYES
item_state = "helmet"
armor = list(melee = 50, bullet = 15, laser = 50,energy = 10, bomb = 25, bio = 0, rad = 0)
protective_temperature = 500
heat_transfer_coefficient = 0.10
flags_inv = HIDEEARS|HIDEEYES
/obj/item/clothing/head/helmet/warden
name = "warden's hat"
desc = "It's a special hat issued to the Warden of a securiy force. Protects the head from impacts."
icon_state = "wardencap"
flags_inv = 0
/obj/item/clothing/head/helmet/swat
name = "\improper SWAT helmet"
desc = "They're often used by highly trained SWAT officers."
icon_state = "swat"
flags = FPRINT | TABLEPASS | SUITSPACE | HEADSPACE | HEADCOVERSEYES
item_state = "swat"
armor = list(melee = 80, bullet = 60, laser = 50,energy = 25, bomb = 50, bio = 10, rad = 0)
flags_inv = HIDEEARS|HIDEEYES
/obj/item/clothing/head/helmet/thunderdome
name = "\improper Thunderdome helmet"
desc = "<i>'Let the battle commence!'</i>"
icon_state = "thunderdome"
flags = FPRINT | TABLEPASS | SUITSPACE | HEADSPACE | HEADCOVERSEYES
item_state = "thunderdome"
armor = list(melee = 80, bullet = 60, laser = 50,energy = 10, bomb = 25, bio = 10, rad = 0)
/obj/item/clothing/head/helmet/welding
name = "welding helmet"
desc = "A head-mounted face cover designed to protect the wearer completely from space-arc eye."
icon_state = "welding"
flags = FPRINT | TABLEPASS | SUITSPACE | HEADCOVERSEYES | HEADCOVERSMOUTH
see_face = 0.0
item_state = "welding"
protective_temperature = 1300
m_amt = 3000
g_amt = 1000
var/up = 0
armor = list(melee = 10, bullet = 5, laser = 10,energy = 5, bomb = 10, bio = 5, rad = 10)
flags_inv = HIDEMASK|HIDEEARS|HIDEEYES
/obj/item/clothing/head/helmet/that
name = "sturdy top hat"
desc = "It's an amish looking armored top hat."
icon_state = "tophat"
item_state = "that"
flags = FPRINT|TABLEPASS
armor = list(melee = 0, bullet = 0, laser = 2,energy = 2, bomb = 0, bio = 0, rad = 0)
flags_inv = 0
/obj/item/clothing/head/helmet/greenbandana
name = "green bandana"
desc = "It's a green bandana with some fine nanotech lining."
icon_state = "greenbandana"
item_state = "greenbandana"
flags = FPRINT|TABLEPASS
armor = list(melee = 5, bullet = 5, laser = 5,energy = 5, bomb = 15, bio = 15, rad = 15)
flags_inv = 0
/obj/item/clothing/head/helmet/riot
name = "riot helmet"
desc = "It's a helmet specifically designed to protect against close range attacks."
icon_state = "riot"
item_state = "helmet"
flags = FPRINT|TABLEPASS|SUITSPACE|HEADCOVERSEYES
armor = list(melee = 82, bullet = 15, laser = 5,energy = 5, bomb = 5, bio = 2, rad = 0)
flags_inv = HIDEEARS
/obj/item/clothing/head/helmet/cap
name = "captain's cap"
desc = "You fear to wear it for the negligence it brings."
icon_state = "capcap"
flags = FPRINT|TABLEPASS|SUITSPACE
armor = list(melee = 0, bullet = 0, laser = 2,energy = 2, bomb = 0, bio = 0, rad = 0)
flags_inv = 0
File diff suppressed because it is too large Load Diff
+179 -179
View File
@@ -1,180 +1,180 @@
// MASK WAS THAT MOVIE WITH THAT GUY WITH THE MESSED UP FACE. WHAT'S HIS NAME . . . JIM CARREY, I THINK.
//why is this up here -Pete
//also: please someone make this less terrible, why are things that work with internals not all under one parent, why why why why why whyyyyyyyyyyyyyyy
/obj/item/clothing/mask
name = "mask"
icon = 'masks.dmi'
body_parts_covered = HEAD
armor = list(melee = 0, bullet = 0, laser = 2,energy = 2, bomb = 0, bio = 0, rad = 0)
slot_flags = SLOT_MASK
/obj/item/clothing/mask/breath
desc = "A close-fitting mask that can be connected to an air supply."
name = "breath mask"
icon_state = "breath"
item_state = "breath"
flags = FPRINT | TABLEPASS | SUITSPACE | HEADSPACE | MASKCOVERSMOUTH
w_class = 2
protective_temperature = 420
heat_transfer_coefficient = 0.90
gas_transfer_coefficient = 0.10
permeability_coefficient = 0.50
/obj/item/clothing/mask/breath/medical
desc = "A close-fitting sterile mask that can be connected to an air supply."
name = "medical mask"
icon_state = "medical"
item_state = "medical"
//WHY DOES THIS EXIST
/obj/item/clothing/mask/spiderman
desc = "A mask of Deadpool!"
name = "\improper Deadpool mask"
icon_state = "spiderman"
item_state = "spiderman"
flags = FPRINT|TABLEPASS|SUITSPACE|HEADSPACE|MASKCOVERSMOUTH|BLOCKHAIR
w_class = 3
protective_temperature = 420
gas_transfer_coefficient = 0.01
permeability_coefficient = 0.01
/obj/item/clothing/mask/balaclava
name = "balaclava"
desc = "LOADSAMONEY"
icon_state = "balaclava"
item_state = "balaclava"
see_face = 0.0
flags = FPRINT|TABLEPASS|HEADSPACE|BLOCKHAIR
w_class = 2
/obj/item/clothing/mask/luchador
name = "Luchador Mask"
desc = "Worn by robust fighters, flying high to defeat their foes!"
icon_state = "luchag"
item_state = "luchag"
flags = FPRINT|TABLEPASS|HEADSPACE|BLOCKHAIR
see_face = 0.0
w_class = 2
/obj/item/clothing/mask/luchador/tecnicos
name = "Tecnicos Mask"
desc = "Worn by robust fighters who uphold justice and fight honorably."
icon_state = "luchador"
item_state = "luchador"
/obj/item/clothing/mask/luchador/rudos
name = "Rudos Mask"
desc = "Worn by robust fighters who are willing to do anything to win."
icon_state = "luchar"
item_state = "luchar"
/obj/item/clothing/mask/muzzle
name = "muzzle"
desc = "To stop that awful noise."
icon_state = "muzzle"
item_state = "muzzle"
flags = FPRINT|TABLEPASS|MASKCOVERSMOUTH
w_class = 2
gas_transfer_coefficient = 0.90
/obj/item/clothing/mask/surgical
name = "sterile mask"
desc = "A sterile mask designed to help prevent the spread of diseases."
icon_state = "sterile"
item_state = "sterile"
w_class = 1
flags = FPRINT|TABLEPASS|HEADSPACE|MASKCOVERSMOUTH
gas_transfer_coefficient = 0.90
permeability_coefficient = 0.05
armor = list(melee = 0, bullet = 0, laser = 2,energy = 2, bomb = 0, bio = 75, rad = 0)
/obj/item/clothing/mask/fakemoustache
name = "fake moustache"
desc = "Warning: moustache is fake."
icon_state = "fake-moustache"
flags = FPRINT|TABLEPASS
see_face = 0.0 //Well, it's a disguise, of course.
//This now uses the alt sprites, like the emergency gasmask. -Pete
/obj/item/clothing/mask/gas
name = "gas mask"
desc = "A face-covering mask that can be connected to an air supply."
icon_state = "gas_alt"
flags = FPRINT|TABLEPASS|SUITSPACE|MASKCOVERSMOUTH|MASKCOVERSEYES
flags_inv = HIDEEARS|HIDEEYES
w_class = 3.0
see_face = 0.0
item_state = "gas_alt"
protective_temperature = 500
heat_transfer_coefficient = 0.01
gas_transfer_coefficient = 0.01
permeability_coefficient = 0.01
/obj/item/clothing/mask/gas/plaguedoctor
name = "plague doctor mask"
desc = "A modernised version of the classic design, this mask will not only filter out toxins but it can also be connected to an air supply."
icon_state = "plaguedoctor"
item_state = "gas_mask"
armor = list(melee = 0, bullet = 0, laser = 2,energy = 2, bomb = 0, bio = 75, rad = 0)
/*
/obj/item/clothing/mask/gas/emergency
name = "emergency gas mask"
desc = "A face-covering mask that can be connected to an air supply. For use in emergencies."
icon_state = "gas_alt"
item_state = "gas_alt"
*/
/obj/item/clothing/mask/gas/swat
name = "\improper SWAT mask"
desc = "A close-fitting tactical mask that can be connected to an air supply."
icon_state = "swat"
/obj/item/clothing/mask/gas/syndicate
name = "syndicate mask"
desc = "A close-fitting tactical mask that can be connected to an air supply."
icon_state = "swat"
/obj/item/clothing/mask/gas/voice
name = "gas mask"
//desc = "A face-covering mask that can be connected to an air supply. It seems to house some odd electronics."
var/mode = 0// 0==Scouter | 1==Night Vision | 2==Thermal | 3==Meson
var/voice = "Unknown"
var/vchange = 0//This didn't do anything before. It now checks if the mask has special functions/N
origin_tech = "syndicate=4"
/obj/item/clothing/mask/gas/voice/space_ninja
name = "ninja mask"
desc = "A close-fitting mask that acts both as an air filter and a post-modern fashion statement."
icon_state = "s-ninja"
item_state = "s-ninja_mask"
vchange = 1
/obj/item/clothing/mask/gas/clown_hat
name = "clown wig and mask"
desc = "A true prankster's facial attire. A clown is incomplete without his wig and mask."
icon_state = "clown"
item_state = "clown_hat"
/obj/item/clothing/mask/gas/sexyclown
name = "sexy-clown wig and mask"
desc = "A feminine clown mask for the dabbling crossdressers or female entertainers."
icon_state = "sexyclown"
item_state = "sexyclown"
/obj/item/clothing/mask/gas/mime
name = "mime mask"
desc = "The traditional mime's mask. It has an eerie facial posture."
icon_state = "mime"
item_state = "mime"
/obj/item/clothing/mask/gas/monkeymask
name = "monkey mask"
desc = "A mask used when acting as a monkey."
icon_state = "monkeymask"
item_state = "monkeymask"
/obj/item/clothing/mask/gas/sexymime
name = "sexy mime mask"
desc = "A traditional female mime's mask."
icon_state = "sexymime"
// MASK WAS THAT MOVIE WITH THAT GUY WITH THE MESSED UP FACE. WHAT'S HIS NAME . . . JIM CARREY, I THINK.
//why is this up here -Pete
//also: please someone make this less terrible, why are things that work with internals not all under one parent, why why why why why whyyyyyyyyyyyyyyy
/obj/item/clothing/mask
name = "mask"
icon = 'masks.dmi'
body_parts_covered = HEAD
armor = list(melee = 0, bullet = 0, laser = 2,energy = 2, bomb = 0, bio = 0, rad = 0)
slot_flags = SLOT_MASK
/obj/item/clothing/mask/breath
desc = "A close-fitting mask that can be connected to an air supply."
name = "breath mask"
icon_state = "breath"
item_state = "breath"
flags = FPRINT | TABLEPASS | SUITSPACE | HEADSPACE | MASKCOVERSMOUTH
w_class = 2
protective_temperature = 420
heat_transfer_coefficient = 0.90
gas_transfer_coefficient = 0.10
permeability_coefficient = 0.50
/obj/item/clothing/mask/breath/medical
desc = "A close-fitting sterile mask that can be connected to an air supply."
name = "medical mask"
icon_state = "medical"
item_state = "medical"
//WHY DOES THIS EXIST
/obj/item/clothing/mask/spiderman
desc = "A mask of Deadpool!"
name = "\improper Deadpool mask"
icon_state = "spiderman"
item_state = "spiderman"
flags = FPRINT|TABLEPASS|SUITSPACE|HEADSPACE|MASKCOVERSMOUTH|BLOCKHAIR
w_class = 3
protective_temperature = 420
gas_transfer_coefficient = 0.01
permeability_coefficient = 0.01
/obj/item/clothing/mask/balaclava
name = "balaclava"
desc = "A black mask that does a good job of keeping your face warm."
icon_state = "balaclava"
item_state = "balaclava"
see_face = 0.0
flags = FPRINT|TABLEPASS|HEADSPACE|BLOCKHAIR
w_class = 2
/obj/item/clothing/mask/luchador
name = "luchador mask"
desc = "Worn by robust fighters, flying high to defeat their foes!"
icon_state = "luchag"
item_state = "luchag"
flags = FPRINT|TABLEPASS|HEADSPACE|BLOCKHAIR
see_face = 0.0
w_class = 2
/obj/item/clothing/mask/luchador/tecnicos
name = "tecnicos mask"
desc = "Worn by robust fighters who uphold justice and fight honorably."
icon_state = "luchador"
item_state = "luchador"
/obj/item/clothing/mask/luchador/rudos
name = "rudos mask"
desc = "Worn by robust fighters who are willing to do anything to win."
icon_state = "luchar"
item_state = "luchar"
/obj/item/clothing/mask/muzzle
name = "muzzle"
desc = "To stop that awful noise."
icon_state = "muzzle"
item_state = "muzzle"
flags = FPRINT|TABLEPASS|MASKCOVERSMOUTH
w_class = 2
gas_transfer_coefficient = 0.90
/obj/item/clothing/mask/surgical
name = "sterile mask"
desc = "A sterile mask designed to help prevent the spread of diseases."
icon_state = "sterile"
item_state = "sterile"
w_class = 1
flags = FPRINT|TABLEPASS|HEADSPACE|MASKCOVERSMOUTH
gas_transfer_coefficient = 0.90
permeability_coefficient = 0.05
armor = list(melee = 0, bullet = 0, laser = 2,energy = 2, bomb = 0, bio = 75, rad = 0)
/obj/item/clothing/mask/fakemoustache
name = "fake moustache"
desc = "Warning: moustache is fake."
icon_state = "fake-moustache"
flags = FPRINT|TABLEPASS
see_face = 0.0 //Well, it's a disguise, of course.
//This now uses the alt sprites, like the emergency gasmask. -Pete
/obj/item/clothing/mask/gas
name = "gas mask"
desc = "A face-covering mask that can be connected to an air supply."
icon_state = "gas_alt"
flags = FPRINT|TABLEPASS|SUITSPACE|MASKCOVERSMOUTH|MASKCOVERSEYES
flags_inv = HIDEEARS|HIDEEYES
w_class = 3.0
see_face = 0.0
item_state = "gas_alt"
protective_temperature = 500
heat_transfer_coefficient = 0.01
gas_transfer_coefficient = 0.01
permeability_coefficient = 0.01
/obj/item/clothing/mask/gas/plaguedoctor
name = "plague doctor mask"
desc = "A modernised version of the classic design, this mask will not only filter out toxins but it can also be connected to an air supply."
icon_state = "plaguedoctor"
item_state = "gas_mask"
armor = list(melee = 0, bullet = 0, laser = 2,energy = 2, bomb = 0, bio = 75, rad = 0)
/*
/obj/item/clothing/mask/gas/emergency
name = "emergency gas mask"
desc = "A face-covering mask that can be connected to an air supply. For use in emergencies."
icon_state = "gas_alt"
item_state = "gas_alt"
*/
/obj/item/clothing/mask/gas/swat
name = "\improper SWAT mask"
desc = "A close-fitting tactical mask that can be connected to an air supply."
icon_state = "swat"
/obj/item/clothing/mask/gas/syndicate
name = "syndicate mask"
desc = "A close-fitting tactical mask that can be connected to an air supply."
icon_state = "swat"
/obj/item/clothing/mask/gas/voice
name = "gas mask"
//desc = "A face-covering mask that can be connected to an air supply. It seems to house some odd electronics."
var/mode = 0// 0==Scouter | 1==Night Vision | 2==Thermal | 3==Meson
var/voice = "Unknown"
var/vchange = 0//This didn't do anything before. It now checks if the mask has special functions/N
origin_tech = "syndicate=4"
/obj/item/clothing/mask/gas/voice/space_ninja
name = "ninja mask"
desc = "A close-fitting mask that acts both as an air filter and a post-modern fashion statement."
icon_state = "s-ninja"
item_state = "s-ninja_mask"
vchange = 1
/obj/item/clothing/mask/gas/clown_hat
name = "clown wig and mask"
desc = "A true prankster's facial attire. A clown is incomplete without his wig and mask."
icon_state = "clown"
item_state = "clown_hat"
/obj/item/clothing/mask/gas/sexyclown
name = "sexy-clown wig and mask"
desc = "A feminine clown mask for the dabbling crossdressers or female entertainers."
icon_state = "sexyclown"
item_state = "sexyclown"
/obj/item/clothing/mask/gas/mime
name = "mime mask"
desc = "The traditional mime's mask. It has an eerie facial posture."
icon_state = "mime"
item_state = "mime"
/obj/item/clothing/mask/gas/monkeymask
name = "monkey mask"
desc = "A mask used when acting as a monkey."
icon_state = "monkeymask"
item_state = "monkeymask"
/obj/item/clothing/mask/gas/sexymime
name = "sexy mime mask"
desc = "A traditional female mime's mask."
icon_state = "sexymime"
item_state = "sexymime"
+184 -184
View File
@@ -1,185 +1,185 @@
/obj/item/clothing/shoes
name = "shoes"
icon = 'shoes.dmi'
desc = "Comfortable-looking shoes."
gender = PLURAL //Carn: for grammarically correct text-parsing
body_parts_covered = FEET
slot_flags = SLOT_FEET
protective_temperature = 500
heat_transfer_coefficient = 0.10
permeability_coefficient = 0.50
slowdown = SHOES_SLOWDOWN
armor = list(melee = 0, bullet = 0, laser = 2,energy = 2, bomb = 0, bio = 0, rad = 0)
/obj/item/clothing/shoes/syndigaloshes
desc = "A pair of brown shoes. They seem to have extra grip."
name = "brown shoes"
icon_state = "brown"
item_state = "brown"
permeability_coefficient = 0.05
flags = NOSLIP
origin_tech = "syndicate=3"
var/list/clothing_choices = list()
/obj/item/clothing/shoes/syndigaloshes/all
/obj/item/clothing/shoes/black
name = "black shoes"
icon_state = "black"
color = "black"
desc = "A pair of black shoes."
redcoat
color = "redcoat" //Exists for washing machines. Is not different from black shoes in any way.
/obj/item/clothing/shoes/brown
name = "brown shoes"
desc = "A pair of brown shoes."
icon_state = "brown"
color = "brown"
captain
color = "captain" //Exists for washing machines. Is not different from brown shoes in any way.
hop
color = "hop" //Exists for washing machines. Is not different from brown shoes in any way.
ce
color = "chief" //Exists for washing machines. Is not different from brown shoes in any way.
rd
color = "director" //Exists for washing machines. Is not different from brown shoes in any way.
cmo
color = "medical" //Exists for washing machines. Is not different from brown shoes in any way.
cmo
color = "cargo" //Exists for washing machines. Is not different from brown shoes in any way.
/obj/item/clothing/shoes/blue
name = "blue shoes"
icon_state = "blue"
color = "blue"
/obj/item/clothing/shoes/green
name = "green shoes"
icon_state = "green"
color = "green"
/obj/item/clothing/shoes/yellow
name = "yellow shoes"
icon_state = "yellow"
color = "yellow"
/obj/item/clothing/shoes/mime
name = "mime shoes"
icon_state = "mime"
color = "mime"
/obj/item/clothing/shoes/purple
name = "purple shoes"
icon_state = "purple"
color = "purple"
/obj/item/clothing/shoes/brown
name = "brown shoes"
icon_state = "brown"
color = "brown"
/obj/item/clothing/shoes/orange
name = "orange shoes"
icon_state = "orange"
var/chained = 0
color = "orange"
/obj/item/clothing/shoes/swat
name = "\improper SWAT shoes"
desc = "When you want to turn up the heat."
icon_state = "swat"
armor = list(melee = 80, bullet = 60, laser = 50,energy = 25, bomb = 50, bio = 10, rad = 0)
flags = NOSLIP
/obj/item/clothing/shoes/combat //Basically SWAT shoes combined with galoshes.
name = "combat boots"
desc = "When you REALLY want to turn up the heat"
icon_state = "swat"
armor = list(melee = 80, bullet = 60, laser = 50,energy = 25, bomb = 50, bio = 10, rad = 0)
flags = NOSLIP
/obj/item/clothing/shoes/space_ninja
name = "ninja shoes"
desc = "A pair of running shoes. Excellent for running and even better for smashing skulls."
icon_state = "s-ninja"
protective_temperature = 700
permeability_coefficient = 0.01
flags = NOSLIP
armor = list(melee = 60, bullet = 50, laser = 30,energy = 15, bomb = 30, bio = 30, rad = 30)
/obj/item/clothing/shoes/white
name = "white shoes"
icon_state = "white"
permeability_coefficient = 0.25
color = "white"
/obj/item/clothing/shoes/sandal
desc = "A pair of rather plain, wooden sandals."
name = "sandals"
icon_state = "wizard"
/obj/item/clothing/shoes/sandal/marisa
desc = "A pair of magic, black shoes."
name = "magic shoes"
icon_state = "black"
/obj/item/clothing/shoes/galoshes
desc = "Rubber boots"
name = "galoshes"
icon_state = "galoshes"
permeability_coefficient = 0.05
flags = NOSLIP
slowdown = SHOES_SLOWDOWN+1
/obj/item/clothing/shoes/magboots
desc = "Magnetic boots, often used during extravehicular activity to ensure the user remains safely attached to the vehicle."
name = "magboots"
icon_state = "magboots0"
protective_temperature = 800
heat_transfer_coefficient = 0.01
var/magpulse = 0
// flags = NOSLIP //disabled by default
/obj/item/clothing/shoes/clown_shoes
desc = "The prankster's standard-issue clowning shoes. Damn they're huge!"
name = "clown shoes"
icon_state = "clown"
item_state = "clown_shoes"
slowdown = SHOES_SLOWDOWN+1
color = "clown"
/obj/item/clothing/shoes/jackboots
name = "jackboots"
desc = "Nanotrasen-issue Security combat boots for combat scenarios or combat situations. All combat, all the time."
icon_state = "jackboots"
item_state = "jackboots"
color = "hosred"
/obj/item/clothing/shoes/purpleboots
name = "purple boots"
desc = "A pair of flashy purple boots."
icon_state = "purpleboots"
item_state = "purpleboots"
/obj/item/clothing/shoes/yellowboots
name = "yellow boots"
desc = "A pair of flashy yellow boots."
icon_state = "yellowboots"
item_state = "yellowboots"
/obj/item/clothing/shoes/whiteboots
name = "white boots"
desc = "A pair of flashy white boots."
icon_state = "whiteboots"
item_state = "whiteboots"
/obj/item/clothing/shoes/fullbrown
name = "full brown shoes"
icon_state = "fullbrown"
/obj/item/clothing/shoes
name = "shoes"
icon = 'shoes.dmi'
desc = "Comfortable-looking shoes."
gender = PLURAL //Carn: for grammarically correct text-parsing
body_parts_covered = FEET
slot_flags = SLOT_FEET
protective_temperature = 500
heat_transfer_coefficient = 0.10
permeability_coefficient = 0.50
slowdown = SHOES_SLOWDOWN
armor = list(melee = 0, bullet = 0, laser = 2,energy = 2, bomb = 0, bio = 0, rad = 0)
/obj/item/clothing/shoes/syndigaloshes
desc = "A pair of brown shoes. They seem to have extra grip."
name = "brown shoes"
icon_state = "brown"
item_state = "brown"
permeability_coefficient = 0.05
flags = NOSLIP
origin_tech = "syndicate=3"
var/list/clothing_choices = list()
/obj/item/clothing/shoes/syndigaloshes/all
/obj/item/clothing/shoes/black
name = "black shoes"
icon_state = "black"
color = "black"
desc = "A pair of black shoes."
redcoat
color = "redcoat" //Exists for washing machines. Is not different from black shoes in any way.
/obj/item/clothing/shoes/brown
name = "brown shoes"
desc = "A pair of brown shoes."
icon_state = "brown"
color = "brown"
captain
color = "captain" //Exists for washing machines. Is not different from brown shoes in any way.
hop
color = "hop" //Exists for washing machines. Is not different from brown shoes in any way.
ce
color = "chief" //Exists for washing machines. Is not different from brown shoes in any way.
rd
color = "director" //Exists for washing machines. Is not different from brown shoes in any way.
cmo
color = "medical" //Exists for washing machines. Is not different from brown shoes in any way.
cmo
color = "cargo" //Exists for washing machines. Is not different from brown shoes in any way.
/obj/item/clothing/shoes/blue
name = "blue shoes"
icon_state = "blue"
color = "blue"
/obj/item/clothing/shoes/green
name = "green shoes"
icon_state = "green"
color = "green"
/obj/item/clothing/shoes/yellow
name = "yellow shoes"
icon_state = "yellow"
color = "yellow"
/obj/item/clothing/shoes/mime
name = "mime shoes"
icon_state = "mime"
color = "mime"
/obj/item/clothing/shoes/purple
name = "purple shoes"
icon_state = "purple"
color = "purple"
/obj/item/clothing/shoes/brown
name = "brown shoes"
icon_state = "brown"
color = "brown"
/obj/item/clothing/shoes/orange
name = "orange shoes"
icon_state = "orange"
var/chained = 0
color = "orange"
/obj/item/clothing/shoes/swat
name = "\improper SWAT shoes"
desc = "When you want to turn up the heat."
icon_state = "swat"
armor = list(melee = 80, bullet = 60, laser = 50,energy = 25, bomb = 50, bio = 10, rad = 0)
flags = NOSLIP
/obj/item/clothing/shoes/combat //Basically SWAT shoes combined with galoshes.
name = "combat boots"
desc = "When you REALLY want to turn up the heat."
icon_state = "swat"
armor = list(melee = 80, bullet = 60, laser = 50,energy = 25, bomb = 50, bio = 10, rad = 0)
flags = NOSLIP
/obj/item/clothing/shoes/space_ninja
name = "ninja shoes"
desc = "A pair of running shoes. Excellent for running and even better for smashing skulls."
icon_state = "s-ninja"
protective_temperature = 700
permeability_coefficient = 0.01
flags = NOSLIP
armor = list(melee = 60, bullet = 50, laser = 30,energy = 15, bomb = 30, bio = 30, rad = 30)
/obj/item/clothing/shoes/white
name = "white shoes"
icon_state = "white"
permeability_coefficient = 0.25
color = "white"
/obj/item/clothing/shoes/sandal
desc = "A pair of rather plain, wooden sandals."
name = "sandals"
icon_state = "wizard"
/obj/item/clothing/shoes/sandal/marisa
desc = "A pair of magic, black shoes."
name = "magic shoes"
icon_state = "black"
/obj/item/clothing/shoes/galoshes
desc = "Rubber boots."
name = "galoshes"
icon_state = "galoshes"
permeability_coefficient = 0.05
flags = NOSLIP
slowdown = SHOES_SLOWDOWN+1
/obj/item/clothing/shoes/magboots
desc = "Magnetic boots, often used during extravehicular activity to ensure the user remains safely attached to the vehicle."
name = "magboots"
icon_state = "magboots0"
protective_temperature = 800
heat_transfer_coefficient = 0.01
var/magpulse = 0
// flags = NOSLIP //disabled by default
/obj/item/clothing/shoes/clown_shoes
desc = "The prankster's standard-issue clowning shoes. Damn they're huge!"
name = "clown shoes"
icon_state = "clown"
item_state = "clown_shoes"
slowdown = SHOES_SLOWDOWN+1
color = "clown"
/obj/item/clothing/shoes/jackboots
name = "jackboots"
desc = "Nanotrasen issue Security combat boots for combat scenarios or combat situations. All combat, all the time."
icon_state = "jackboots"
item_state = "jackboots"
color = "hosred"
/obj/item/clothing/shoes/purpleboots
name = "purple boots"
desc = "A pair of flashy purple boots."
icon_state = "purpleboots"
item_state = "purpleboots"
/obj/item/clothing/shoes/yellowboots
name = "yellow boots"
desc = "A pair of flashy yellow boots."
icon_state = "yellowboots"
item_state = "yellowboots"
/obj/item/clothing/shoes/whiteboots
name = "white boots"
desc = "A pair of flashy white boots."
icon_state = "whiteboots"
item_state = "whiteboots"
/obj/item/clothing/shoes/fullbrown
name = "full brown shoes"
icon_state = "fullbrown"
color = "fullbrown"
+2 -2
View File
@@ -5,7 +5,7 @@ Space suit parts
*/
/obj/item/clothing/head/helmet/space
name = "Space helmet"
name = "space helmet"
icon_state = "space"
desc = "A special helmet designed for work in a hazardous, low-pressure environment."
flags = FPRINT | TABLEPASS | HEADSPACE | HEADCOVERSEYES | BLOCKHAIR
@@ -17,7 +17,7 @@ Space suit parts
/obj/item/clothing/suit/space
name = "Space suit"
name = "space suit"
desc = "A suit that protects against low pressure environments. Has a big 13 on the back."
icon_state = "space"
item_state = "s_suit"
+1 -1
View File
@@ -10,7 +10,7 @@
/obj/item/clothing/suit/armor/captain
name = "Captain's armor"
name = "captain's armor"
desc = "A bulky, heavy-duty piece of exclusive Nanotrasen armor. YOU are in charge!"
icon_state = "caparmor"
item_state = "capspacesuit"
+27 -25
View File
@@ -1,9 +1,11 @@
//Fixing the typos here was a pain. -Deus
/obj/item/clothing/head/helmet/space/syndicate
name = "red space helmet"
desc = "Top secret Spess Helmet."
desc = "Top secret spess helmet."
icon_state = "syndicate"
item_state = "syndicate"
desc = "Has a tag: Totally not property of an enemy corporation, honest."
//desc = "Has a tag: Totally not property of an enemy corporation, honest." Again, two descriptions. -Deus
armor = list(melee = 60, bullet = 50, laser = 30,energy = 15, bomb = 30, bio = 30, rad = 30)
@@ -20,106 +22,106 @@
/obj/item/clothing/head/helmet/space/syndicate/green
name = "Green Space Helmet"
name = "green space helmet"
icon_state = "syndicate-helm-green"
item_state = "syndicate-helm-green"
/obj/item/clothing/suit/space/syndicate/green
name = "Green Space Suit"
name = "green space suit"
icon_state = "syndicate-green"
item_state = "syndicate-green"
/obj/item/clothing/head/helmet/space/syndicate/green/dark
name = "Dark Green Space Helmet"
name = "dark green space helmet"
icon_state = "syndicate-helm-green-dark"
item_state = "syndicate-helm-green-dark"
/obj/item/clothing/suit/space/syndicate/green/dark
name = "Dark Green Space Suit"
name = "dark green space suit"
icon_state = "syndicate-green-dark"
item_state = "syndicate-green-dark"
/obj/item/clothing/head/helmet/space/syndicate/orange
name = "Orange Space Helmet"
name = "orange space helmet"
icon_state = "syndicate-helm-orange"
item_state = "syndicate-helm-orange"
/obj/item/clothing/suit/space/syndicate/orange
name = "Orange Space Suit"
name = "orange space suit"
icon_state = "syndicate-orange"
item_state = "syndicate-orange"
/obj/item/clothing/head/helmet/space/syndicate/blue
name = "Blue Space Helmet"
name = "blue space helmet"
icon_state = "syndicate-helm-blue"
item_state = "syndicate-helm-blue"
/obj/item/clothing/suit/space/syndicate/blue
name = "Blue Space Suit"
name = "blue space suit"
icon_state = "syndicate-blue"
item_state = "syndicate-blue"
/obj/item/clothing/head/helmet/space/syndicate/black
name = "Black Space Helmet"
name = "black space helmet"
icon_state = "syndicate-helm-black"
item_state = "syndicate-helm-black"
/obj/item/clothing/suit/space/syndicate/black
name = "Black Space Suit"
name = "black space suit"
icon_state = "syndicate-black"
item_state = "syndicate-black"
/obj/item/clothing/head/helmet/space/syndicate/black/green
name = "Black Space Helmet"
name = "black and green space helmet"
icon_state = "syndicate-helm-black-green"
item_state = "syndicate-helm-black-green"
/obj/item/clothing/suit/space/syndicate/black/green
name = "Black and Green Space Suit"
name = "black and green space suit"
icon_state = "syndicate-black-green"
item_state = "syndicate-black-green"
/obj/item/clothing/head/helmet/space/syndicate/black/blue
name = "Black Space Helmet"
name = "black and blue space helmet"
icon_state = "syndicate-helm-black-blue"
item_state = "syndicate-helm-black-blue"
armor = list(melee = 70, bullet = 70, laser = 60, energy = 30, bomb = 30, bio = 50, rad = 50)
/obj/item/clothing/suit/space/syndicate/black/blue
name = "Black and Blue Space Suit"
name = "black and blue space suit"
icon_state = "syndicate-black-blue"
item_state = "syndicate-black-blue"
armor = list(melee = 70, bullet = 70, laser = 60, energy = 30, bomb = 30, bio = 50, rad = 50)
slowdown = 2
/obj/item/clothing/head/helmet/space/syndicate/black/med
name = "Black Space Helmet"
name = "medic's space helmet"
icon_state = "syndicate-helm-black-med"
item_state = "syndicate-helm-black"
armor = list(melee = 50, bullet = 40, laser = 30,energy = 15, bomb = 30, bio = 100, rad = 100)
/obj/item/clothing/suit/space/syndicate/black/med
name = "Green Space Suit"
name = "medic's space suit"
icon_state = "syndicate-black-med"
item_state = "syndicate-black"
armor = list(melee = 50, bullet = 40, laser = 30,energy = 15, bomb = 30, bio = 100, rad = 100)
@@ -128,27 +130,27 @@
/obj/item/clothing/head/helmet/space/syndicate/black/orange
name = "Black Space Helmet"
name = "black and orange space helmet"
icon_state = "syndicate-helm-black-orange"
item_state = "syndicate-helm-black"
/obj/item/clothing/suit/space/syndicate/black/orange
name = "Black and Orange Space Suit"
name = "black and orange space suit"
icon_state = "syndicate-black-orange"
item_state = "syndicate-black"
/obj/item/clothing/head/helmet/space/syndicate/black/red
name = "Black Space Helmet"
name = "black and red space helmet"
icon_state = "syndicate-helm-black-red"
item_state = "syndicate-helm-black-red"
armor = list(melee = 70, bullet = 70, laser = 60, energy = 30, bomb = 30, bio = 30, rad = 30)
/obj/item/clothing/suit/space/syndicate/black/red
name = "Black and Red Space Suit"
name = "black and red space suit"
icon_state = "syndicate-black-red"
item_state = "syndicate-black-red"
armor = list(melee = 70, bullet = 70, laser = 60, energy = 30, bomb = 30, bio = 30, rad = 30)
@@ -157,14 +159,14 @@
/obj/item/clothing/head/helmet/space/syndicate/black/engie
name = "Black Space Helmet"
name = "black engineering space helmet"
icon_state = "syndicate-helm-black-engie"
item_state = "syndicate-helm-black"
armor = list(melee = 60, bullet = 50, laser = 30,energy = 15, bomb = 50, bio = 30, rad = 100)
/obj/item/clothing/suit/space/syndicate/black/engie
name = "Black Engineering Space Suit"
name = "black engineering space suit"
icon_state = "syndicate-black-engie"
item_state = "syndicate-black"
armor = list(melee = 60, bullet = 50, laser = 30,energy = 15, bomb = 50, bio = 30, rad = 100)
@@ -174,7 +176,7 @@
/obj/item/clothing/head/helmet/space/syndicate/elite
name = "black space helmet"
desc = "Professionals Have Standards, Be Polite, Be Efficient, Have a plan to kill everyone you meet."
desc = "Professionals have standards: be polite, be efficient, have a plan to kill everyone you meet."
icon_state = "syndicate-helm-black"
item_state = "syndicate-helm-black"
armor = list(melee = 65, bullet = 55, laser = 35,energy = 20, bomb = 30, bio = 30, rad = 30)
+4 -4
View File
@@ -1,14 +1,14 @@
/obj/item/clothing/head/helmet/space/nasavoid
name = "NASA Void Helmet"
desc = "A high tech, NASA Centcom branch designed, dark red space suit helmet. Used for AI satellite maintenance."
name = "NASA void helmet"
desc = "A high tech, NASA Centcom branch designed, dark red space helmet. Used for AI satellite maintenance."
icon_state = "void"
item_state = "void"
see_face = 1
/obj/item/clothing/suit/space/nasavoid
name = "NASA Voidsuit"
name = "NASA voidsuit"
icon_state = "void"
item_state = "void"
desc = "A high tech, NASA Centcom branch designed, dark red Space suit. Used for AI satellite maintenance."
desc = "A high tech, NASA Centcom branch designed, dark red space suit. Used for AI satellite maintenance."
slowdown = 1
+8 -8
View File
@@ -14,13 +14,13 @@
armor = list(melee = 50, bullet = 15, laser = 50, energy = 10, bomb = 25, bio = 0, rad = 0)
/obj/item/clothing/suit/armor/vest/warden
name = "Warden's jacket"
name = "warden's jacket"
desc = "An armoured jacket with silver rank pips and livery."
icon_state = "warden_jacket"
item_state = "armor"
/obj/item/clothing/suit/armor/riot
name = "Riot Suit"
name = "riot suit"
desc = "A suit of armor with heavy padding to protect against melee attacks. Looks like it might impair movement."
icon_state = "riot"
item_state = "swat_suit"
@@ -31,7 +31,7 @@
/obj/item/clothing/suit/armor/bulletproof
name = "Bulletproof Vest"
name = "bulletproof vest"
desc = "A vest that excels in protecting the wearer against high-velocity solid projectiles."
icon_state = "bulletproof"
item_state = "armor"
@@ -39,7 +39,7 @@
/obj/item/clothing/suit/armor/laserproof
name = "Ablative Armor Vest"
name = "ablative armour vest"
desc = "A vest that excels in protecting the wearer against energy projectiles."
icon_state = "armor_reflec"
item_state = "armor_reflec"
@@ -47,7 +47,7 @@
/obj/item/clothing/suit/storage/gearharness
name = "gear harness"
desc = "A simple security harness, used for storing small objects"
desc = "A simple security harness, used for storing small objects."
icon_state = "gearharness"
item_state = "gearharness"
body_parts_covered = UPPER_TORSO|LOWER_TORSO
@@ -56,8 +56,8 @@
flags_inv = 0
/obj/item/clothing/suit/armor/reactive
name = "Reactive Teleport Armor"
desc = "Someone seperated our Research Director from his own head!"
name = "reactive teleport armour"
desc = "Someone separated our Research Director from their own head!"
var/active = 0.0
icon_state = "reactiveoff"
item_state = "reactiveoff"
@@ -66,7 +66,7 @@
armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0)
/obj/item/clothing/suit/storage/armourrigvest
name = "armour rig vest"
name = "armoured rig vest"
desc = "An important looking armoured vest, outfitted with pockets."
icon_state = "armourrigvest"
item_state = "armourrigvest"
+2 -2
View File
@@ -9,7 +9,7 @@
/obj/item/clothing/suit/bio_suit
name = "bio suit"
desc = "A suit that protects against biological contamination."
desc = "A suit that protects against biological contaminants."
icon_state = "bio"
item_state = "bio_suit"
w_class = 4//bulky item
@@ -67,7 +67,7 @@
/obj/item/clothing/suit/bio_suit/plaguedoctorsuit
name = "Plague doctor suit"
name = "plague doctor suit"
desc = "It protected doctors from the Black Death, back then. You bet your arse it's gonna help you against viruses."
icon_state = "plaguedoctor"
item_state = "bio_suit"
+2 -2
View File
@@ -1,6 +1,6 @@
/obj/item/clothing/head/bomb_hood
name = "bomb hood"
desc = "A hood that protect from explosions. Also provides moderate protection."
desc = "A hood that protects against explosions."
icon_state = "bombsuit"
flags = FPRINT|TABLEPASS|HEADSPACE|HEADCOVERSEYES|HEADCOVERSMOUTH|BLOCKHAIR
armor = list(melee = 10, bullet = 10, laser = 10, energy = 10, bomb = 100, bio = 0, rad = 0)
@@ -8,7 +8,7 @@
/obj/item/clothing/suit/bomb_suit
name = "bomb suit"
desc = "A suit used for safely disposing explosives. Also provides moderate protection."
desc = "A suit that protects against explosions."
icon_state = "bombsuit"
item_state = "bombsuit"
w_class = 4//bulky item
+3 -3
View File
@@ -1,5 +1,5 @@
/obj/item/clothing/head/det_hat
name = "hat"
name = "detective's hat"
desc = "Someone who wears this will look very smart."
icon_state = "detective"
allowed = list(/obj/item/weapon/reagent_containers/food/snacks/candy_corn, /obj/item/weapon/pen)
@@ -7,7 +7,7 @@
/obj/item/clothing/suit/storage/det_suit
name = "coat"
name = "detective's coat"
desc = "An 18th-century multi-purpose trenchcoat. Someone who wears this means serious business."
icon_state = "detective"
item_state = "det_suit"
@@ -17,7 +17,7 @@
/obj/item/clothing/suit/det_suit/armor
name = "armor"
name = "detective's armor"
desc = "An armored vest with a detective's badge on it."
icon_state = "detective-armor"
item_state = "armor"
+5 -5
View File
@@ -29,8 +29,8 @@
slowdown = 1.5
/obj/item/clothing/head/helmet/space/fire_helmet
name = "Fire Helmet"
desc = "A helmet designed to protect against fires in sealed areas, which often create extreme pressures."
name = "fire helmet"
desc = "A helmet designed to protect against extreme temperature and pressure."
flags = FPRINT | TABLEPASS | HEADSPACE | HEADCOVERSEYES | BLOCKHAIR
see_face = 0.0
permeability_coefficient = 0.01
@@ -43,14 +43,14 @@
/obj/item/clothing/head/radiation
name = "Radiation Hood"
name = "radiation hood"
icon_state = "rad"
desc = "A hood with radiation protective properties. Label: Made with lead, do not eat insulation"
desc = "A hood that protects against radiation. Label: Made with lead, do not eat insulation."
flags = FPRINT|TABLEPASS|HEADSPACE|HEADCOVERSEYES|HEADCOVERSMOUTH|BLOCKHAIR
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 60, rad = 20)
/obj/item/clothing/suit/radiation
name = "Radiation suit"
name = "radiation suit"
desc = "A suit that protects against radiation. Label: Made with lead, do not eat insulation."
icon_state = "rad"
item_state = "rad_suit"
+2 -2
View File
@@ -37,7 +37,7 @@
item_state = "tdgreen"
/obj/item/clothing/suit/armor/swat
name = "swat suit"
name = "SWAT armour"
desc = "A heavily armored suit that protects against moderate damage. Used in special operations."
icon_state = "deathsquad"
item_state = "swat_suit"
@@ -53,7 +53,7 @@
flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT
/obj/item/clothing/suit/storage/officer
name = "officer jacket"
name = "officer's jacket"
desc = "An armored jacket used in special operations."
icon_state = "detective"
item_state = "det_suit"
+3 -3
View File
@@ -1,5 +1,5 @@
/obj/item/clothing/head/helmet/HoS
name = "Head of Security Hat"
name = "head of security's hat"
desc = "The hat of the Head of Security. For showing the officers who's in charge."
icon_state = "hoscap"
flags = FPRINT | TABLEPASS | SUITSPACE | HEADCOVERSEYES
@@ -7,7 +7,7 @@
flags_inv = HIDEEARS
/obj/item/clothing/head/helmet/HoS/dermal
name = "Dermal Armour Patch"
name = "dermal armour patch"
desc = "You're not quite sure how you manage to take it on and off, but it implants nicely in your head."
icon_state = "dermal"
item_state = "dermal"
@@ -24,7 +24,7 @@
/obj/item/clothing/suit/armor/hos/jensen
name = "armored trenchcoat"
desc = "A trenchoat augmented with a special alloy for some protection and style"
desc = "A trenchoat augmented with a special alloy for some protection and style."
icon_state = "jensencoat"
item_state = "jensencoat"
flags_inv = 0
+4 -4
View File
@@ -27,22 +27,22 @@
item_state = "labgreen"
/obj/item/clothing/suit/storage/labcoat/genetics
name = "Geneticist Labcoat"
name = "geneticist's labcoat"
desc = "A suit that protects against minor chemical spills. Has a blue stripe on the shoulder."
icon_state = "labcoat_gen_open"
/obj/item/clothing/suit/storage/labcoat/chemist
name = "Chemist Labcoat"
name = "chemist's labcoat"
desc = "A suit that protects against minor chemical spills. Has an orange stripe on the shoulder."
icon_state = "labcoat_chem_open"
/obj/item/clothing/suit/storage/labcoat/virologist
name = "Virologist Labcoat"
name = "virologist's labcoat"
desc = "A suit that protects against minor chemical spills. Has a green stripe on the shoulder."
icon_state = "labcoat_vir_open"
/obj/item/clothing/suit/storage/labcoat/science
name = "Scientist Labcoat"
name = "scientist's labcoat"
desc = "A suit that protects against minor chemical spills. Has a purple stripe on the shoulder."
icon_state = "labcoat_tox_open"
+7 -7
View File
@@ -17,7 +17,7 @@
/obj/item/clothing/suit/bluetag
name = "blue laser tag armour"
desc = "Blue Pride, Station Wide"
desc = "Blue pride, station wide."
icon_state = "bluetag"
item_state = "bluetag"
body_parts_covered = UPPER_TORSO|LOWER_TORSO|ARMS
@@ -26,7 +26,7 @@
/obj/item/clothing/suit/redtag
name = "red laser tag armour"
desc = "Pew pew pew"
desc = "Pew pew pew!"
icon_state = "redtag"
item_state = "redtag"
body_parts_covered = UPPER_TORSO|LOWER_TORSO|ARMS
@@ -44,7 +44,7 @@
/obj/item/clothing/suit/storage/chef
name = "chef's apron"
desc = "An apron used by a high class chef. Has a few pockets for nic-naks."
desc = "An apron used by a high class chef. Has a few pockets for knick-knacks."
icon_state = "chef"
item_state = "chef"
gas_transfer_coefficient = 0.90
@@ -90,7 +90,7 @@
/obj/item/clothing/suit/storage/captunic
name = "captain's parade tunic"
desc = "Worn by a Captain to show their class."
desc = "Worn by a captain to show their class."
icon_state = "captunic"
item_state = "bio_suit"
body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|ARMS
@@ -114,7 +114,7 @@
/obj/item/clothing/suit/storage/chaplain_hoodie
name = "chaplain hoodie"
desc = "This suit says to you 'hush'!"
desc = "This suit says to you, 'hush'!"
icon_state = "chaplain_hoodie"
item_state = "chaplain_hoodie"
body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|ARMS
@@ -122,7 +122,7 @@
/obj/item/clothing/suit/hastur
name = "\improper Hastur's robes"
desc = "Robes not meant to be worn by man"
desc = "Robes not meant to be worn by man."
icon_state = "hastur"
item_state = "hastur"
body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|ARMS
@@ -158,7 +158,7 @@
/obj/item/clothing/suit/holidaypriest
name = "holiday priest"
desc = "This is a nice holiday my son."
desc = "This is a nice holiday, my son."
icon_state = "holidaypriest"
item_state = "holidaypriest"
body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|ARMS
+6 -6
View File
@@ -15,13 +15,13 @@
icon_state = "wizard-fake"
/obj/item/clothing/head/wizard/marisa
name = "Witch Hat"
name = "witch hat"
desc = "Strange-looking hat-wear, makes you want to cast fireballs."
icon_state = "marisa"
/obj/item/clothing/head/wizard/magus
name = "Magus Helm"
desc = "A mysterious helmet that hums with an unearthly power"
name = "magus helm"
desc = "A mysterious helmet that hums with an unearthly power."
icon_state = "magus"
item_state = "magus"
@@ -48,14 +48,14 @@
/obj/item/clothing/suit/wizrobe/marisa
name = "Witch Robe"
name = "witch robe"
desc = "Magic is all about the spell power, ZE!"
icon_state = "marisa"
item_state = "marisarobe"
/obj/item/clothing/suit/wizrobe/magusblue
name = "Magus Robe"
desc = "A set of armoured robes that seem to radiate a dark power"
name = "magus robe"
desc = "A set of armoured robes that seem to radiate a dark power."
icon_state = "magusblue"
item_state = "magusblue"
+5 -5
View File
@@ -27,14 +27,14 @@
/obj/item/clothing/under/lawyer/bluesuit
name = "Blue Suit"
desc = "A classy suit and tie"
name = "blue suit"
desc = "A classy suit and tie."
icon_state = "bluesuit"
item_state = "bluesuit"
color = "bluesuit"
/obj/item/clothing/suit/lawyer/bluejacket
name = "Blue Suit Jacket"
name = "blue suit jacket"
desc = "A snappy dress jacket."
icon_state = "suitjacket_blue_open"
item_state = "suitjacket_blue_open"
@@ -42,13 +42,13 @@
/obj/item/clothing/under/lawyer/purpsuit
name = "Purple Suit"
name = "purple suit"
icon_state = "lawyer_purp"
item_state = "lawyer_purp"
color = "lawyer_purp"
/obj/item/clothing/suit/lawyer/purpjacket
name = "Purple Suit Jacket"
name = "purple suit jacket"
desc = "A snappy dress jacket."
icon_state = "suitjacket_purp"
item_state = "suitjacket_purp"
+29
View File
@@ -104,6 +104,14 @@
icon_on = "bluezippoon"
icon_off = "bluezippo"
/obj/item/weapon/lighter/zippo/fluff/riley_rohtin_1 //rawrtaicho: Riley Rohtin
name = "Riley's black zippo"
desc = "A black zippo lighter, which holds some form of sentimental value."
icon = 'custom_items.dmi'
icon_state = "blackzippo"
icon_on = "blackzippoon"
icon_off = "blackzippo"
/obj/item/weapon/fluff/cado_keppel_1 //sparklysheep: Cado Keppel
name = "purple comb"
desc = "A pristine purple comb made from flexible plastic. It has a small K etched into its side."
@@ -138,6 +146,27 @@
icon_state = "shinyflask"
volume = 50
/obj/item/weapon/storage/pill_bottle/fluff/listermedbottle //compactninja: Lister Black
name = "Pill bottle (anti-depressants)"
desc = "Contains pills used to deal with depression. They appear to be prescribed to Lister Black"
New()
..()
new /obj/item/weapon/reagent_containers/pill/fluff/listermed( src )
new /obj/item/weapon/reagent_containers/pill/fluff/listermed( src )
new /obj/item/weapon/reagent_containers/pill/fluff/listermed( src )
new /obj/item/weapon/reagent_containers/pill/fluff/listermed( src )
new /obj/item/weapon/reagent_containers/pill/fluff/listermed( src )
new /obj/item/weapon/reagent_containers/pill/fluff/listermed( src )
new /obj/item/weapon/reagent_containers/pill/fluff/listermed( src )
/obj/item/weapon/reagent_containers/pill/fluff/listermed
name = "anti-depressant pill"
desc = "Used to deal with depression."
icon_state = "pill9"
New()
..()
reagents.add_reagent("stoxin", 5)
reagents.add_reagent("sugar", 10)
reagents.add_reagent("ethanol", 5)
//////////////////////////////////
//////////// Clothing ////////////
//////////////////////////////////
+8 -2
View File
@@ -72,6 +72,7 @@
var/mineralAmtList = list("Uranium" = 5, "Iron" = 5, "Diamond" = 5, "Gold" = 5, "Silver" = 5, "Plasma" = 5/*, "Adamantine" = 5*/)
var/mineralSpawnChanceList = list("Uranium" = 5, "Iron" = 50, "Diamond" = 1, "Gold" = 5, "Silver" = 5, "Plasma" = 25/*, "Adamantine" =5*/)//Currently, Adamantine won't spawn as it has no uses. -Durandan
var/mineralChance = 10 //means 10% chance of this plot changing to a mineral deposit
var/artifactChance = 0.5
/turf/simulated/mineral/random/New()
..()
@@ -98,6 +99,11 @@
if(M)
src = M
M.levelupdate()
else if (prob(artifactChance))
//spawn a rare, xeno-archaelogical artifact here
new/obj/machinery/artifact(src)
return
/turf/simulated/mineral/random/high_chance
@@ -193,8 +199,8 @@
if(old_icon) W.icon_state = old_icon
*/
W.opacity = 1
W.sd_SetOpacity(0)
W.sd_LumReset()
W.ul_SetOpacity(0)
W.ul_Recalculate()
W.levelupdate()
return W
@@ -4,6 +4,7 @@
see_invisible = 15
see_in_dark = 100
verbs += /mob/dead/observer/proc/dead_tele
taj_talk_understand = 1
if(body)
var/turf/location = get_turf(body)//Where is the mob located?
+1 -1
View File
@@ -48,7 +48,7 @@
/mob/proc/death(gibbed)
timeofdeath = world.time
var/log_file = file("[time2text(world.timeofday, "statistics/DD-MM-YYYY.txt")]")
log_file << "Death | \The [get_area(src)] | [bruteloss], [oxyloss], [toxloss], [fireloss][attack_log && attack_log.len? " | attack_log[attack_log.len]" : ""]"
log_file << "Death | \The [get_area(src)] | [bruteloss], [oxyloss], [toxloss], [fireloss][attack_log && attack_log.len? " | [attack_log[attack_log.len]]" : ""]"
if(client)
client.onDeath()
@@ -149,7 +149,7 @@ I kind of like the right click only--the window version can get a little confusi
vents.Add(temp_vent)
var/atom/a = get_turf_loc(temp_vent)
var/atom/a = get_turf(temp_vent)
ventAreas.Add(a.loc)
@@ -23,7 +23,7 @@
for(var/obj/machinery/atmospherics/unary/vent_pump/vent in vents)
if(vent.loc.z != loc.z)
continue
var/atom/a = get_turf_loc(vent)
var/atom/a = get_turf(vent)
choices.Add(a.loc)
var/turf/startloc = loc
var/obj/selection = input("Select a destination.", "Duct System") in choices
+10 -4
View File
@@ -125,8 +125,8 @@
G.process()
if(isturf(loc) && rand(1,1000) == 1) //0.1% chance of playing a scary sound to someone who's in complete darkness
var/turf/currentTurf = loc
if(!currentTurf.sd_lumcount)
var/turf/currentTurf = get_turf(src)
if(!max(currentTurf.ul_GetRed(), currentTurf.ul_GetGreen(), currentTurf.ul_GetBlue()))
playsound_local(src,pick(scarySounds),50, 1, -1)
src.moved_recently = max(0, moved_recently-1)
@@ -495,7 +495,12 @@
if(!breath || (breath.total_moles == 0))
if(reagents.has_reagent("inaprovaline"))
return
adjustOxyLoss(HUMAN_MAX_OXYLOSS)
if(health < config.health_threshold_crit)
// in crit, we pretend your metabolism has become slower, which
// will reduce the rate at which you lose health
adjustOxyLoss(round(HUMAN_MAX_OXYLOSS / 2))
else
adjustOxyLoss(HUMAN_MAX_OXYLOSS)
oxygen_alert = max(oxygen_alert, 1)
@@ -820,7 +825,8 @@
if(mutantrace == "plant") //couldn't think of a better place to place it, since it handles nutrition -- Urist
var/light_amount = 0 //how much light there is in the place, affects receiving nutrition and healing
if(istype(loc,/turf)) //else, there's considered to be no light
light_amount = min(10,loc:sd_lumcount) - 5 //hardcapped so it's not abused by having a ton of flashlights
var/turf/currentTurf = get_turf(src)
light_amount = min(10,max(currentTurf.ul_GetRed(), currentTurf.ul_GetGreen(), currentTurf.ul_GetBlue())) - 5 //hardcapped so it's not abused by having a ton of flashlights
if(nutrition < 500) //so they can't store nutrition to survive without light forever
nutrition += light_amount
if(light_amount > 0) //if there's enough light, heal
@@ -258,7 +258,7 @@
for(var/obj/machinery/atmospherics/unary/vent_pump/vent in vents)
if(vent.loc.z != loc.z)
continue
var/atom/a = get_turf_loc(vent)
var/atom/a = get_turf(vent)
choices.Add(a.loc)
var/turf/startloc = loc
var/obj/selection = input("Select a destination.", "Duct System") in choices
@@ -22,7 +22,7 @@
for(var/obj/machinery/atmospherics/unary/vent_pump/vent in vents)
if(vent.loc.z != loc.z)
continue
var/atom/a = get_turf_loc(vent)
var/atom/a = get_turf(vent)
choices.Add(a.loc)
var/turf/startloc = loc
var/obj/selection = input("Select a destination.", "Duct System") in choices
+4 -3
View File
@@ -673,9 +673,7 @@
return health
/mob/proc/UpdateLuminosity()
if(total_luminosity == last_luminosity) return 0//nothing to do here
last_luminosity = total_luminosity
sd_SetLuminosity(min(total_luminosity,7))//Current hardcode max at 7, should likely be a const somewhere else
ul_SetLuminosity(LuminosityRed, LuminosityGreen, LuminosityBlue)//Current hardcode max at 7, should likely be a const somewhere else
return 1
/mob/MouseDrop(mob/M as mob)
@@ -715,6 +713,9 @@
M.LAssailant = null
else
M.LAssailant = usr
if(istype(src, /obj/machinery/artifact))
var/obj/machinery/artifact/A = src
A.attack_hand(usr)
return
/atom/verb/examine()
+2 -2
View File
@@ -55,8 +55,8 @@
var/obj/screen/gun/run/gun_run_icon = null
var/obj/screen/gun/mode/gun_setting_icon = null
var/total_luminosity = 0 //This controls luminosity for mobs, when you pick up lights and such this is edited. If you want the mob to use lights it must update its lum in its life proc or such. Note clamp this value around 7 or such to prevent massive light lag.
var/last_luminosity = 0
// var/total_luminosity = 0 //This controls luminosity for mobs, when you pick up lights and such this is edited. If you want the mob to use lights it must update its lum in its life proc or such. Note clamp this value around 7 or such to prevent massive light lag.
// var/last_luminosity = 0
/*A bunch of this stuff really needs to go under their own defines instead of being globally attached to mob.
A variable should only be globally attached to turfs/objects/whatever, when it is in fact needed as such.
+1 -2
View File
@@ -448,8 +448,7 @@ datum/preferences
// Modify this if you added more jobs and it looks like a mess. Add the jobs in the splitJobs that you want to trigger and intitate a new table.
if(splitJobs == null)
if (ticker.current_state >= GAME_STATE_PLAYING
)
if (ticker && ticker.current_state >= GAME_STATE_PLAYING)
splitJobs = list()
else
splitJobs = list("Chief Engineer")
+2 -2
View File
@@ -104,7 +104,7 @@
emote_hear = list("barks", "woofs", "yaps","pants")
emote_see = list("shakes its head", "shivers")
desc = "It's a corgi."
src.sd_SetLuminosity(0)
src.ul_SetLuminosity(0)
inventory_head.loc = src.loc
inventory_head = null
else
@@ -239,7 +239,7 @@
name = "Rudolph the Red-Nosed Corgi"
emote_hear = list("barks christmas songs", "yaps")
desc = "He has a very shiny nose."
src.sd_SetLuminosity(6)
src.ul_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!")
+1 -1
View File
@@ -354,7 +354,7 @@
user << "You start adding cables to the APC frame..."
playsound(src.loc, 'Deconstruct.ogg', 50, 1)
if(do_after(user, 20) && C.amount >= 10)
var/turf/T = get_turf_loc(src)
var/turf/T = get_turf(src)
var/obj/structure/cable/N = T.get_cable_node()
if (prob(50) && electrocute_mob(usr, N, N))
var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread
+6 -6
View File
@@ -83,12 +83,12 @@
var/area/A = src.loc.loc
brightness = A.area_lights_luminosity
else
brightness = rand(6,9)
if(prob(10))
brightness = rand(6,7)
if(prob(5))
broken(1)
if("bulb")
brightness = 3
if(prob(25))
brightness = rand(4,5)
if(prob(15))
broken(1)
spawn(1)
update()
@@ -123,7 +123,7 @@
var/oldlum = luminosity
//luminosity = on * brightness
sd_SetLuminosity(on * brightness) // *DAL*
ul_SetLuminosity(on * brightness, on * brightness, ( fitting != "bulb" ? on * brightness : round(on*brightness/2) ) ) // *DAL*
// if the state changed, inc the switching counter
if(oldlum != luminosity)
@@ -137,7 +137,7 @@
status = LIGHT_BURNED
icon_state = "[base_state]-burned"
on = 0
sd_SetLuminosity(0)
ul_SetLuminosity(0)
active_power_usage = (luminosity * 20)
if(on != on_gs)
on_gs = on
+21 -21
View File
@@ -1,23 +1,23 @@
/* Overview of sd_DynamicAreaLighting as modified for SS13
*
*
* Use sd_SetLuminosity(value) to change the luminosity of an atom
* Use ul_SetLuminosity(value) to change the luminosity of an atom
* rather than setting the luminosity var directly.
* Avoid having luminous objects at compile-time since this can mess up
* the lighting system during map load. Instead use sd_SetLuminosity() in
* the lighting system during map load. Instead use ul_SetLuminosity() in
* the atom's New() proc after a small spawn delay.
*
* Use sd_SetOpacity(value) to change the opacity of an atom (e.g. doors)
* Use ul_SetOpacity(value) to change the opacity of an atom (e.g. doors)
* rather than setting the opacity var directly. This ensures that lighting
* will be blocked/unblocked as necessary.
*
* If creating a new opaque atom (e.g. a wall) at runtime, create the atom,
* set its opacity var to zero, then perform sd_SetOpacity(1)
* set its opacity var to zero, then perform ul_SetOpacity(1)
* e.g.:
*
* var/obj/block/B = new(loc)
* B.opacity = 0
* B.sd_SetOpacity(1)
* B.ul_SetOpacity(1)
*
*
* The library creates multiple instances of each /area to split a mapped area
@@ -52,13 +52,13 @@ Using sd_DynamicAreaLighting
1) Luminosity changes at run time.
If your program makes changes in luminosity while it is
running, you need to use sd_SetLuminosity(new_luminosity)
running, you need to use ul_SetLuminosity(new_luminosity)
so the library can remove the effect of the old luminosity
and apply the new effect.
2) Opacity changes at run time.
As with luminosity changes, you need to use
sd_SetOpacity(new_opacity) if your program changes the opacity
ul_SetOpacity(new_opacity) if your program changes the opacity
of atoms at runtime.
3) New atoms that change the opacity of a location.
@@ -67,17 +67,17 @@ Using sd_DynamicAreaLighting
sd_StripLocalLum() to strip the luminosity effect of
anything shining on that space, create the new atom, then
use sd_ApplyLocalLum() to reapply the luminosity effect.
Examine the sd_SetOpacity() proc for an example of the
Examine the ul_SetOpacity() proc for an example of the
procedure.
All areas will automatically use the sd_DynamicAreaLighting
library when it is included in your project. You may disable
lighting effect in an area by specifically setting the area's
sd_lighting var to 0. For example:
ul_Lighting var to 0. For example:
area/always_lit
luminosity = 1
sd_lighting = 0
ul_Lighting = 0
This library chops areas into 5 separate areas of differing
light effect, so you may want to modify area Enter(), Exit(),
@@ -253,17 +253,17 @@ All atoms have the following procs:
IMPORTANT! Each sd_StripLocalLum() call should have a matching
sd_ApplyLocalLum() to restore the local effect.
sd_SetLuminosity(new_luminosity as num)
ul_SetLuminosity(new_luminosity as num)
Sets the atom's luminosity, making adjustments to the
sd_lumcount of local turfs.
sd_SetOpacity(new_opacity as num)
ul_SetOpacity(new_opacity as num)
Sets the atom's opacity, making adjustments to the
sd_lumcount of local turfs.
Areas have one additional proc and 4 variables:
var
sd_lighting
ul_Lighting
Turn this flag off to prevent sd_DynamicAreaLighting
from effecting this area.
DEFAULT VALUE: 1 (allow dynamic lighting)
@@ -304,7 +304,7 @@ Turfs have these additional procs and vars:
Places the turf in the appropriate sd_dark area,
depending on its brightness (sd_lumcount).
sd_LumReset()
ul_Recalculate()
Resets a turf's lumcount by stripping local luminosity,
zeroing the lumcount, then reapplying local luminosity.
@@ -436,7 +436,7 @@ atom
return affected
sd_SetLuminosity(new_luminosity as num)
ul_SetLuminosity(new_luminosity as num)
/* This proc should be called everytime you want to change the
luminosity of an atom instead of setting it directly.
@@ -448,7 +448,7 @@ atom
sd_ApplyLum()
sd_SetOpacity(new_opacity as num)
ul_SetOpacity(new_opacity as num)
/* if(opacity != new_opacity)
var/list/affected = sd_StripLocalLum()
opacity = new_opacity
@@ -567,7 +567,7 @@ turf
sd_lumcount = 0 // the brightness of the turf
proc
sd_LumReset()
ul_Recalculate()
/* Clear local lum, reset this turf's sd_lumcount, and
re-apply local lum*/
var/list/affected = sd_StripLocalLum()
@@ -580,7 +580,7 @@ turf
sd_LumUpdate()
set background = 1
var/area/Loc = loc
if(!istype(Loc) || !Loc.sd_lighting) return
if(!istype(Loc) || !Loc.ul_Lighting) return
// change the turf's area depending on its brightness
// restrict light to valid levels
@@ -685,7 +685,7 @@ area
var
/* Turn this flag off to prevent sd_DynamicAreaLighting from affecting
this area */
sd_lighting = 1
ul_Lighting = 1
/* This var determines if an area is outside (affected by sunlight) or
not. */
@@ -718,7 +718,7 @@ area
..()
if(!tag) tag = "[type]"
spawn(1) // wait a tick
if(sd_lighting)
if(ul_Lighting)
// see if this area was created by the library
if(!findtext(tag, "sd_L"))
/* show the dark overlay so areas outside of luminous regions
@@ -731,7 +731,7 @@ area
if(!tag) tag = "[type]"
spawn(1) // wait a tick
if(sd_lighting)
if(ul_Lighting)
// see if this area was created by the library
if(!sd_created)
/* show the dark overlay so areas outside of luminous regions
@@ -14,7 +14,7 @@
New()
spawn(1)
src.sd_SetLuminosity(5)
src.ul_SetLuminosity(5)
Del()
+1 -1
View File
@@ -123,7 +123,7 @@
//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)
if(C && C.opened && !istype(A, /obj/structure/closet/crate))
A.loc = C.loc
break
+912
View File
@@ -0,0 +1,912 @@
//Part of ISaidNo's public release around July 2011(ish)
//much thanks from everyone
// this goes in gameticker.dm's setup() proc and works in conjuction with landmarks manually placed on the map
/*var/list/artispawn = list()
for(var/obj/landmark/S in world)
if (S.name == "Artifact spawn")
artispawn.Add(S.loc)
if(artispawn.len)
var/artiamt = rand(2,8)
while(artiamt > 0)
var/artiloc = pick(artispawn)
if (prob(66)) new/obj/machinery/artifact(artiloc)
--artiamt*/
// this is the entirety of artifacts.dm
// Artifact Research - these are used in the research system, depending on how yours is set up these could probably be
// ignored if not incorporatable
/*
/datum/artiresearch/
var/name = "artifact research"
var/bonustype = null // What kind of artifact it gives a bonus to identifying
var/bonusamtO = 0 // Bonus % to identifying origin
var/bonusamtT = 0 // Bonus % to identifying trigger
var/bonusamtE = 0 // Bonus % to identifying effect/range
var/bonusTime = 0 // Seconds reduced from analysis time
/datum/artiresearch/ancient1
name = "Ancient Artifacts"
bonustype = "ancient"
bonusamtO = 75
bonusamtT = 5
bonusamtE = 5
/datum/artiresearch/martian1
name = "Martian Artifacts"
bonustype = "martian"
bonusamtO = 75
bonusamtT = 5
bonusamtE = 5
/datum/artiresearch/crystal1
name = "Wizard Artifacts"
bonustype = "wizard"
bonusamtO = 75
bonusamtT = 5
bonusamtE = 5
/datum/artiresearch/eldritch1
name = "Eldritch Artifacts"
bonustype = "eldritch"
bonusamtO = 75
bonusamtT = 5
bonusamtE = 5
/datum/artiresearch/precursor1
name = "Precursor Artifacts"
bonustype = "precursor"
bonusamtO = 75
bonusamtT = 5
bonusamtE = 5
/datum/artiresearch/general1
name = "General Artifacts"
bonustype = "all"
bonusamtO = 15
bonusamtT = 5
bonusamtE = 5
/datum/artiresearch/analyser1
name = "Analysis Algorithms"
bonustype = "analyser"
bonusTime = 10
/datum/artiresearch/ancient2
name = "Ancient Mechanisms"
bonustype = "ancient"
bonusamtO = 10
bonusamtT = 75
bonusamtE = 5
/datum/artiresearch/martian2
name = "Martian Bio-triggers"
bonustype = "martian"
bonusamtO = 10
bonusamtT = 75
bonusamtE = 5
/datum/artiresearch/crystal2
name = "Wizard Rituals"
bonustype = "wizard"
bonusamtO = 10
bonusamtT = 75
bonusamtE = 5
/datum/artiresearch/eldritch2
name = "Eldritch Invocations"
bonustype = "eldritch"
bonusamtO = 10
bonusamtT = 75
bonusamtE = 5
/datum/artiresearch/precursor2
name = "Precursor Sequencing"
bonustype = "precursor"
bonusamtO = 10
bonusamtT = 75
bonusamtE = 5
/datum/artiresearch/general2
name = "General Activation Procedure"
bonustype = "all"
bonusamtO = 5
bonusamtT = 15
bonusamtE = 5
/datum/artiresearch/analyser2
name = "Advanced Analysis Software"
bonustype = "analyser"
bonusTime = 10
/datum/artiresearch/ancient3
name = "Ancient Technology"
bonustype = "ancient"
bonusamtO = 10
bonusamtT = 15
bonusamtE = 80
/datum/artiresearch/martian3
name = "Martian Bioengineering"
bonustype = "martian"
bonusamtO = 10
bonusamtT = 15
bonusamtE = 80
/datum/artiresearch/crystal3
name = "Wizard Enchantments"
bonustype = "wizard"
bonusamtO = 10
bonusamtT = 15
bonusamtE = 80
/datum/artiresearch/eldritch3
name = "Eldritch Curses"
bonustype = "eldritch"
bonusamtO = 10
bonusamtT = 15
bonusamtE = 80
/datum/artiresearch/precursor3
name = "Precursor Circuits"
bonustype = "precursor"
bonusamtO = 10
bonusamtT = 15
bonusamtE = 80
/datum/artiresearch/general3
name = "General Power Capacity"
bonustype = "all"
bonusamtO = 5
bonusamtT = 5
bonusamtE = 15
/datum/artiresearch/analyser3
name = "High-Grade Analysis Process"
bonustype = "analyser"
bonusTime = 15
*/
////////////////////////////////////////////////////////////////////////////////////////////////////////
// the actual code for artifacts
/obj/machinery/artifact
name = "alien artifact"
desc = "A large alien device."
icon = 'anomaly.dmi'
icon_state = "ano0"
anchored = 0
density = 1
var/activated = 0 // Whether or not the artifact has been unlocked.
var/charged = 1 // Whether the artifact is ready to have it's effect.
var/chargetime = 0 // How much time until the artifact is charged.
var/recharge = 5 // How long does it take this artifact to recharge?
var/origin = null // Used in the randomisation/research of the artifact.
var/trigger = "touch" // What activates it?
var/triggerX = "none" // Used for more varied triggers
var/effecttype = "healing" // What does it do?
var/effectmode = "aura" // How does it carry out the effect?
var/aurarange = 4 // How far the artifact will extend an aura effect.
New()
..()
// Origin and appearance randomisation
// cael - need some more icons
src.origin = pick("ancient","martian","wizard","eldritch","precursor")
switch(src.origin)
if("ancient") src.icon_state = pick("ano2")
if("martian") src.icon_state = pick("ano4")
if("wizard") src.icon_state = pick("ano0","ano1")
if("eldritch") src.icon_state = pick("ano3")
if("precursor") src.icon_state = pick("ano5")
// Low-ish random chance to not look like it's origin
if(prob(20)) src.icon_state = pick("ano0","ano1","ano2","ano3","ano4","ano5")
// Power randomisation
src.trigger = pick("force","energy","chemical","heat")
if (src.trigger == "chemical") src.triggerX = pick("hydrogen","corrosive","volatile","toxic")
// Ancient Artifacts focus on robotic/technological effects
// Martian Artifacts focus on biological effects
// Wizard Artifacts focus on weird shit
// Eldritch Artifacts are 100% bad news
// Precursor Artifacts do everything
switch(src.origin)
if("ancient") src.effecttype = pick("roboheal","robohurt","cellcharge","celldrain")
if("martian") src.effecttype = pick("healing","injure","stun","planthelper")
if("wizard") src.effecttype = pick("stun","forcefield","teleport")
if("eldritch") src.effecttype = pick("injure","stun","robohurt","celldrain")
if("precursor") src.effecttype = pick("healing","injure","stun","roboheal","robohurt","cellcharge","celldrain","planthelper","forcefield","teleport")
// Select range based on the power
var/canworldpulse = 1
switch(src.effecttype)
if("healing") src.effectmode = pick("aura","pulse","contact")
if("injure") src.effectmode = pick("aura","pulse","contact")
if("stun") src.effectmode = pick("aura","pulse","contact")
if("roboheal") src.effectmode = pick("aura","pulse","contact")
if("robohurt") src.effectmode = pick("aura","pulse","contact")
if("cellcharge") src.effectmode = pick("aura","pulse")
if("celldrain") src.effectmode = pick("aura","pulse")
if("planthelper")
src.effectmode = pick("aura","pulse")
canworldpulse = 0
if("forcefield")
src.effectmode = "contact"
canworldpulse = 0
if("teleport") src.effectmode = pick("pulse","contact")
// Recharge timer & range setup
if (src.effectmode == "aura") src.aurarange = rand(1,4)
if (src.effectmode == "contact")
src.recharge = rand(5,15)
if (src.effectmode == "pulse")
src.aurarange = rand(2,14)
src.recharge = rand(5,20)
if (canworldpulse == 1 && prob(1))
src.effectmode = "worldpulse"
src.recharge = rand(40,120)
attack_hand(var/mob/user as mob)
if (istype(user, /mob/living/silicon/ai) || istype(user, /mob/dead/)) return
if (istype(user, /mob/living/silicon/robot))
if (get_dist(user, src) > 1)
user << "\red You can't reach [src] from here."
return
for(var/mob/O in viewers(src, null))
O.show_message(text("<b>[]</b> touches [].", user, src), 1)
src.add_fingerprint(user)
src.Artifact_Contact(user)
attackby(obj/item/weapon/W as obj, mob/living/user as mob)
/*if (istype(W, /obj/item/weapon/cargotele))
W:cargoteleport(src, user)
return*/
if (src.trigger == "chemical" && istype(W, /obj/item/weapon/reagent_containers/))
switch(src.triggerX)
if("hydrogen")
if (W.reagents.has_reagent("hydrogen") || W.reagents.has_reagent("water")) src.Artifact_Activate()
if("corrosive")
if (W.reagents.has_reagent("acid") || W.reagents.has_reagent("pacid") || W.reagents.has_reagent("diethylamine")) src.Artifact_Activate()
if("volatile")
if (W.reagents.has_reagent("plasma") || W.reagents.has_reagent("thermite")) src.Artifact_Activate()
if("toxic")
if (W.reagents.has_reagent("toxin") || W.reagents.has_reagent("cyanide") || W.reagents.has_reagent("amanitin") || W.reagents.has_reagent("neurotoxin")) src.Artifact_Activate()
..()
if (src.trigger == "force" && W.force >= 30 && !src.activated) src.Artifact_Activate()
if (src.trigger == "energy")
if (istype(W,/obj/item/weapon/melee/baton) && W:status) src.Artifact_Activate()
if (istype(W,/obj/item/weapon/melee/energy)) src.Artifact_Activate()
if (istype(W,/obj/item/weapon/melee/cultblade)) src.Artifact_Activate()
if (istype(W,/obj/item/weapon/gun/energy/)) src.Artifact_Activate()
if (istype(W,/obj/item/device/multitool)) src.Artifact_Activate()
if (istype(W,/obj/item/weapon/card/emag)) src.Artifact_Activate()
if (src.trigger == "heat")
if (istype(W,/obj/item/weapon/match) && W:lit) src.Artifact_Activate()
if (istype(W, /obj/item/weapon/weldingtool) && W:welding) src.Artifact_Activate()
if (istype(W, /obj/item/weapon/lighter) && W:lit) src.Artifact_Activate()
//Bump(atom/A)
Bumped(M as mob|obj)
if (istype(M,/obj/item/weapon/) && src.trigger == "force" && M:throwforce >= 30) src.Artifact_Activate()
bullet_act(var/obj/item/projectile/P)
if (src.trigger == "force")
if(istype(P,/obj/item/projectile/bullet)) src.Artifact_Activate()
else if(istype(P,/obj/item/projectile/hivebotbullet)) src.Artifact_Activate()
if (src.trigger == "energy")
if(istype(P,/obj/item/projectile/beam)) src.Artifact_Activate()
else if(istype(P,/obj/item/projectile/ion)) src.Artifact_Activate()
else if(istype(P,/obj/item/projectile/energy)) src.Artifact_Activate()
else if(istype(P,/obj/item/projectile/bluetag)) src.Artifact_Activate()
else if(istype(P,/obj/item/projectile/redtag)) src.Artifact_Activate()
if (src.trigger == "heat")
if(istype(P,/obj/item/projectile/temp)) src.Artifact_Activate()
ex_act(severity)
switch(severity)
if(1.0) del src
if(2.0)
if (prob(50)) del src
if (src.trigger == "force") src.Artifact_Activate()
if (src.trigger == "heat") src.Artifact_Activate()
if(3.0)
if (src.trigger == "force") src.Artifact_Activate()
if (src.trigger == "heat") src.Artifact_Activate()
return
temperature_expose(null, temp, volume)
if (src.trigger == "heat") src.Artifact_Activate()
process()
..()
if (!src.activated) return
if (src.chargetime > 0)
src.chargetime--
else src.charged = 1
if (src.effectmode == "aura")
switch(src.effecttype)
if("healing")
for (var/mob/living/carbon/M in range(src.aurarange,src))
if(prob(10)) M << "\blue You feel a soothing energy radiating from something nearby."
M.adjustBruteLoss(-1)
M.adjustFireLoss(-1)
M.adjustToxLoss(-1)
M.adjustOxyLoss(-1)
M.adjustBrainLoss(-1)
if("injure")
for (var/mob/living/carbon/M in range(src.aurarange,src))
if(prob(10)) M << "\red You feel a painful force radiating from something nearby."
M.adjustBruteLoss(1)
M.adjustFireLoss(1)
M.adjustToxLoss(1)
M.adjustOxyLoss(1)
M.adjustBrainLoss(1)
if("stun")
for (var/mob/living/carbon/M in range(src.aurarange,src))
if(prob(10)) M << "\red Energy radiating from the [src] is making you feel numb."
if(prob(20))
M << "\red Your body goes numb for a moment."
M.stunned += 2
M.weakened += 2
M.stuttering += 2
if("roboheal")
for (var/mob/living/silicon/robot/M in range(src.aurarange,src))
if(prob(10)) M << "\blue SYSTEM ALERT: Beneficial energy field detected!"
M.adjustBruteLoss(-1)
M.adjustFireLoss(-1)
M.updatehealth()
if("robohurt")
for (var/mob/living/silicon/robot/M in range(src.aurarange,src))
if(prob(10)) M << "\red SYSTEM ALERT: Harmful energy field detected!"
M.adjustBruteLoss(1)
M.adjustFireLoss(1)
if("cellcharge")
for (var/obj/machinery/power/apc/C in range(src.aurarange,src))
for (var/obj/item/weapon/cell/B in C.contents)
B.charge += 10
for (var/obj/machinery/power/smes/S in range (src.aurarange,src)) S.charge += 20
for (var/mob/living/silicon/robot/M in range(src.aurarange,src))
for (var/obj/item/weapon/cell/D in M.contents)
D.charge += 10
if(prob(10)) M << "\blue SYSTEM ALERT: Energy boosting field detected!"
if("celldrain")
for (var/obj/machinery/power/apc/C in range(src.aurarange,src))
for (var/obj/item/weapon/cell/B in C.contents)
B.charge -= 10
for (var/obj/machinery/power/smes/S in range (src.aurarange,src)) S.charge -= 20
for (var/mob/living/silicon/robot/M in range(src.aurarange,src))
for (var/obj/item/weapon/cell/D in M.contents)
D.charge -= 10
if(prob(10)) M << "\red SYSTEM ALERT: Energy draining field detected!"
if("planthelper")
for (var/obj/machinery/hydroponics/H in range(src.aurarange,src))
//makes weeds and shrooms and stuff more potent too
if(H.planted)
H.waterlevel += 2
H.nutrilevel += 2
if(H.toxic > 0)
H.toxic -= 1
H.health += 1
if(H.pestlevel > 0)
H.pestlevel -= 1
if(H.weedlevel > 0)
H.weedlevel -= 1
H.lastcycle += 5
if (src.effectmode == "pulse")
if (!src.charged) return
for(var/mob/O in viewers(src, null))
O.show_message(text("<b>[]</b> emits a pulse of energy!", src), 1)
switch(src.effecttype)
if("healing")
for (var/mob/living/carbon/M in range(src.aurarange,src))
M << "\blue A wave of energy invigorates you."
M.adjustBruteLoss(5)
M.adjustFireLoss(5)
M.adjustToxLoss(5)
M.adjustOxyLoss(5)
M.adjustBrainLoss(5)
src.charged = 0
src.chargetime = src.recharge
if("injure")
for (var/mob/living/carbon/M in range(src.aurarange,src))
M << "\red A wave of energy causes you great pain!"
M.adjustBruteLoss(5)
M.adjustFireLoss(5)
M.adjustToxLoss(5)
M.adjustOxyLoss(5)
M.adjustBrainLoss(5)
M.stunned += 3
M.weakened += 3
src.charged = 0
src.chargetime = src.recharge
if("stun")
for (var/mob/living/carbon/M in range(src.aurarange,src))
M << "\red A wave of energy overwhelms your senses!"
M.paralysis += 3
M.stunned += 4
M.weakened += 4
M.stuttering += 4
src.charged = 0
src.chargetime = src.recharge
if("roboheal")
for (var/mob/living/silicon/robot/M in range(src.aurarange,src))
M << "\blue SYSTEM ALERT: Structural damage has been repaired by energy pulse!"
M.adjustBruteLoss(-10)
M.adjustFireLoss(-10)
src.charged = 0
src.chargetime = src.recharge
if("robohurt")
for (var/mob/living/silicon/robot/M in range(src.aurarange,src))
M << "\red SYSTEM ALERT: Structural damage inflicted by energy pulse!"
M.adjustBruteLoss(10)
M.adjustFireLoss(10)
src.charged = 0
src.chargetime = src.recharge
if("cellcharge")
for (var/obj/machinery/power/apc/C in range(src.aurarange,src))
for (var/obj/item/weapon/cell/B in C.contents)
B.charge += 250
for (var/obj/machinery/power/smes/S in range (src.aurarange,src)) S.charge += 400
for (var/mob/living/silicon/robot/M in range(src.aurarange,src))
for (var/obj/item/weapon/cell/D in M.contents)
D.charge += 250
M << "\blue SYSTEM ALERT: Large energy boost detected!"
src.charged = 0
src.chargetime = src.recharge
if("celldrain")
for (var/obj/machinery/power/apc/C in range(src.aurarange,src))
for (var/obj/item/weapon/cell/B in C.contents)
B.charge -= 500
for (var/obj/machinery/power/smes/S in range (src.aurarange,src)) S.charge -= 400
for (var/mob/living/silicon/robot/M in range(src.aurarange,src))
for (var/obj/item/weapon/cell/D in M.contents)
D.charge -= 500
M << "\red SYSTEM ALERT: Severe energy drain detected!"
src.charged = 0
src.chargetime = src.recharge
if("planthelper")
//makes weeds and shrooms and stuff more potent too
for (var/obj/machinery/hydroponics/H in range(src.aurarange,src))
if(H.planted)
H.dead = 0
H.waterlevel = 200
H.nutrilevel = 200
H.toxic = 0
H.health = 100
H.pestlevel = 0
H.weedlevel = 0
H.lastcycle = H.cycledelay
if("teleport")
for (var/mob/living/M in range(src.aurarange,src))
var/list/randomturfs = new/list()
for(var/turf/T in orange(M, 30))
if(!istype(T, /turf/simulated/floor) || T.density)
continue
randomturfs.Add(T)
if(randomturfs.len > 0)
M << "\red You are displaced by a strange force!"
M.loc = pick(randomturfs)
var/datum/effect/effect/system/spark_spread/sparks = new /datum/effect/effect/system/spark_spread()
sparks.set_up(3, 0, get_turf(src)) //no idea what the 0 is
sparks.start()
src.charged = 0
src.chargetime = src.recharge
if (src.effectmode == "worldpulse")
if (!src.charged) return
for(var/mob/O in viewers(src, null))
O.show_message(text("<b>[]</b> emits a powerful burst of energy!", src), 1)
switch(src.effecttype)
if("healing")
for (var/mob/living/carbon/M in world)
M << "\blue Waves of soothing energy wash over you."
M.adjustBruteLoss(-3)
M.adjustFireLoss(-3)
M.adjustToxLoss(-3)
M.adjustOxyLoss(-3)
M.adjustBrainLoss(-3)
src.charged = 0
src.chargetime = src.recharge
if("injure")
for (var/mob/living/carbon/M in world)
M << "\red A wave of painful energy strikes you!"
M.adjustBruteLoss(3)
M.adjustFireLoss(3)
M.adjustToxLoss(3)
M.adjustOxyLoss(3)
M.adjustBrainLoss(3)
src.charged = 0
src.chargetime = src.recharge
if("stun")
for (var/mob/living/carbon/M in world)
M << "\red A powerful force causes you to black out momentarily."
M.paralysis += 5
M.stunned += 8
M.weakened += 8
M.stuttering += 8
src.charged = 0
src.chargetime = src.recharge
if("roboheal")
for (var/mob/living/silicon/robot/M in world)
M << "\blue SYSTEM ALERT: Structural damage has been repaired by energy pulse!"
M.adjustBruteLoss(-5)
M.adjustFireLoss(-5)
src.charged = 0
src.chargetime = src.recharge
if("robohurt")
for (var/mob/living/silicon/robot/M in world)
M << "\red SYSTEM ALERT: Structural damage inflicted by energy pulse!"
M.adjustBruteLoss(5)
M.adjustFireLoss(5)
src.charged = 0
src.chargetime = src.recharge
if("cellcharge")
for (var/obj/machinery/power/apc/C in world)
for (var/obj/item/weapon/cell/B in C.contents)
B.charge += 100
for (var/obj/machinery/power/smes/S in range (src.aurarange,src)) S.charge += 250
for (var/mob/living/silicon/robot/M in world)
for (var/obj/item/weapon/cell/D in M.contents)
D.charge += 100
M << "\blue SYSTEM ALERT: Energy boost detected!"
src.charged = 0
src.chargetime = src.recharge
if("celldrain")
for (var/obj/machinery/power/apc/C in world)
for (var/obj/item/weapon/cell/B in C.contents)
B.charge -= 250
for (var/obj/machinery/power/smes/S in range (src.aurarange,src)) S.charge -= 250
for (var/mob/living/silicon/robot/M in world)
for (var/obj/item/weapon/cell/D in M.contents)
D.charge -= 250
M << "\red SYSTEM ALERT: Energy drain detected!"
src.charged = 0
src.chargetime = src.recharge
if("teleport")
for (var/mob/living/M in world)
var/list/randomturfs = new/list()
for(var/turf/T in orange(M, 15))
if(!istype(T, /turf/simulated/floor) || T.density)
continue
randomturfs.Add(T)
if(randomturfs.len > 0)
M << "\red You are displaced by a strange force!"
M.loc = pick(randomturfs)
var/datum/effect/effect/system/spark_spread/sparks = new /datum/effect/effect/system/spark_spread()
sparks.set_up(3, 0, get_turf(src)) //no idea what the 0 is
sparks.start()
src.charged = 0
src.chargetime = src.recharge
/obj/machinery/artifact/proc/Artifact_Activate()
src.activated = 1
for(var/mob/O in viewers(src, null))
O.show_message(text("<b>[]</b> activates!", src), 1)
var/artioverlay = src.icon_state + "-[rand(1,3)]"
src.overlays += image('artifacts.dmi', artioverlay)
/obj/machinery/artifact/proc/Artifact_Contact(var/mob/user as mob)
// Trigger Code
if (istype (user,/mob/living/carbon/) && src.trigger == "touch" && !src.activated) src.Artifact_Activate()
else if (src.trigger != "touch" && !src.activated) user << "Nothing happens."
// Effect Code
if (src.effectmode == "contact" && src.activated && src.charged)
switch(src.effecttype)
if("healing")
if (istype(user, /mob/living/carbon/human/))
user << "\blue You feel a soothing energy invigorate you."
var/mob/living/carbon/human/H = user
for(var/A in H.organs)
var/datum/organ/external/affecting = null
if(!H.organs[A]) continue
affecting = H.organs[A]
if(!istype(affecting, /datum/organ/external)) continue
affecting.heal_damage(25, 25) //fixes getting hit after ingestion, killing you when game updates organ health
for(var/datum/organ/wound/W in affecting.wounds)
W.stopbleeding()
W.is_healing = 1
//user:heal_organ_damage(25, 25)
//
user.adjustOxyLoss(-25)
user.adjustToxLoss(-25)
user.adjustBruteLoss(-25)
user.adjustFireLoss(-25)
user.adjustBrainLoss(-25)
user.radiation -= min(user.radiation, 25)
user.nutrition += 50
H.bodytemperature = initial(H.bodytemperature)
//
H.vessel.add_reagent("blood",50)
spawn(1)
H.fixblood()
H.update_body()
H.update_face()
H.UpdateDamageIcon()
//
src.charged = 0
src.chargetime = src.recharge
else user << "Nothing happens."
if("injure")
if (istype(user, /mob/living/carbon/))
user << "\red A painful discharge of energy strikes you!"
user.adjustOxyLoss(25)
user.adjustToxLoss(25)
user.adjustBruteLoss(25)
user.adjustFireLoss(25)
user.adjustBrainLoss(25)
user.radiation += 25
user.nutrition -= min(50, user.nutrition)
user.stunned += 6
user.weakened += 6
src.charged = 0
src.chargetime = src.recharge
else user << "Nothing happens."
if("stun")
if (istype(user, /mob/living/carbon/))
user << "\red A powerful force overwhelms your consciousness."
user.paralysis += 30
user.stunned += 45
user.weakened += 45
user.stuttering += 45
src.charged = 0
src.chargetime = src.recharge
else user << "Nothing happens."
if("roboheal")
if (istype(user, /mob/living/silicon/robot))
user << "\blue Your systems report damaged components mending by themselves!"
user.adjustBruteLoss(-30)
user.adjustFireLoss(-30)
src.charged = 0
src.chargetime = src.recharge
else user << "Nothing happens."
if("robohurt")
if (istype(user, /mob/living/silicon/robot))
user << "\red Your systems report severe damage has been inflicted!"
user.adjustBruteLoss(40)
user.adjustFireLoss(40)
src.charged = 0
src.chargetime = src.recharge
else user << "Nothing happens."
if("forcefield")
var/obj/effect/energy_field/E = new /obj/effect/energy_field(locate(src.x + 2,src.y,src.z))
E.strength = 1
E = new /obj/effect/energy_field(locate(src.x + 2,src.y + 1,src.z))
E.strength = 1
E = new /obj/effect/energy_field(locate(src.x + 2,src.y + 2,src.z))
E.strength = 1
E = new /obj/effect/energy_field(locate(src.x + 2,src.y - 1,src.z))
E.strength = 1
E = new /obj/effect/energy_field(locate(src.x + 2,src.y - 2,src.z))
E.strength = 1
E = new /obj/effect/energy_field(locate(src.x - 2,src.y,src.z))
E.strength = 1
E = new /obj/effect/energy_field(locate(src.x - 2,src.y + 1,src.z))
E.strength = 1
E = new /obj/effect/energy_field(locate(src.x - 2,src.y + 2,src.z))
E.strength = 1
E = new /obj/effect/energy_field(locate(src.x - 2,src.y - 1,src.z))
E.strength = 1
E = new /obj/effect/energy_field(locate(src.x - 2,src.y - 2,src.z))
E.strength = 1
E = new /obj/effect/energy_field(locate(src.x,src.y + 2,src.z))
E.strength = 1
E = new /obj/effect/energy_field(locate(src.x + 1,src.y + 2,src.z))
E.strength = 1
E = new /obj/effect/energy_field(locate(src.x - 1,src.y + 2,src.z))
E.strength = 1
E = new /obj/effect/energy_field(locate(src.x,src.y - 2,src.z))
E.strength = 1
E = new /obj/effect/energy_field(locate(src.x + 1,src.y - 2,src.z))
E.strength = 1
E = new /obj/effect/energy_field(locate(src.x - 1,src.y - 2,src.z))
E.strength = 1
src.charged = 0
src.chargetime = src.recharge
spawn (src.recharge)
for(var/obj/effect/energy_field/F in range(5,src))
del F
if("teleport")
var/list/randomturfs = new/list()
for(var/turf/T in orange(user, 50))
if(!istype(T, /turf/simulated/floor) || T.density)
continue
randomturfs.Add(T)
if(randomturfs.len > 0)
user << "\red You are suddenly zapped away elsewhere!"
user.loc = pick(randomturfs)
var/datum/effect/effect/system/spark_spread/sparks = new /datum/effect/effect/system/spark_spread()
sparks.set_up(3, 0, get_turf(src)) //no idea what the 0 is
sparks.start()
else if (src.effectmode == "contact" && src.activated && !src.charged) user << "The artifact feels warm, but nothing interesting happens."
////////////////////////////////////////////////////////////////////////////////////////////////////////
/*
/obj/submachine/artifact_analyser
name = "Artifact Analyser"
desc = "Studies the structure of artifacts to discover their uses."
icon = 'artifacts.dmi'
icon_state = "AAn-off"
anchored = 1
density = 1
var/working = 0
var/accuO = 0
var/accuT = 0
var/accuE1 = 0
var/accuE2 = 0
var/aorigin = "None"
var/atrigger = "None"
var/aeffect1 = "None"
var/aeffect2 = "None"
var/list/allorigins = list("Ancient Robots","Martian","Wizard Federation","Extradimensional","Precursor")
var/list/alltriggers = list("Contact with Living Organism","Heavy Impact","Contact with Energy Source","Contact with Hydrogen","Contact with Corrosive Substance","Contact with Volatile Substance","Contact with Toxins","Exposure to Heat")
var/list/alleffects = list("Healing Device","Anti-biological Weapon","Non-lethal Stunning Trap","Mechanoid Repair Module","Mechanoid Deconstruction Device","Power Generator","Power Drain","Stellar Mineral Attractor","Agriculture Regulator","Shield Generator","Space-Time Displacer")
var/list/allranges = list("Constant Short-Range Energy Field","Medium Range Energy Pulses","Long Range Energy Pulses","Extreme Range Energy Pulses","Requires contact with subject")
attack_hand(var/mob/user as mob)
user.machine = src
if (!src.working)
var/dat = {"<B>Artifact Analyser</B><BR>
<HR><BR>
<B>Artifact Origin:</B> [aorigin] ([accuO]%)<BR>
<B>Activation Trigger:</B> [atrigger] ([accuT]%)<BR>
<B>Artifact Function:</B> [aeffect1] ([accuE1]%)<BR>
<B>Artifact Range:</B> [aeffect2] ([accuE2]%)<BR><BR>
<HR><BR>
<A href='?src=\ref[src];ops=1'>Analyse Artifact<BR>
<A href='?src=\ref[src];ops=2'>Label Artifact"}
user << browse(dat, "window=artanalyser;size=400x500")
onclose(user, "artanalyser")
else
var/dat = {"<B>Artifact Analyser</B><BR>
<HR><BR>
<B>Please wait. Analysis in progress.</B><BR>"}
user << browse(dat, "window=artanalyser;size=450x500")
onclose(user, "artanalyser")
Topic(href, href_list)
if(href_list["ops"])
var/operation = text2num(href_list["ops"])
if(operation == 1) // Analyse Artifact
var/findarti = 0
for(var/obj/machinery/artifact/A in range(1,src))
findarti++
if (findarti == 1)
for(var/obj/machinery/artifact/A in range(1,src))
A.anchored = 1
src.working = 1
src.icon_state = "AAn-on"
var/time = 40
for(var/i = artifact_research.starting_tier, i <= artifact_research.max_tiers, i++)
for(var/datum/artiresearch/R in artifact_research.researched_items[i])
if (R.bonustype == "analyser") time -= R.bonusTime
time *= 10
for(var/mob/O in hearers(src, null))
O.show_message(text("<b>[]</b> states, 'Commencing analysis.'", src), 1)
AA_Analyse()
spawn(time)
for(var/obj/machinery/artifact/A in range(1,src))
A.anchored = 0
src.working = 0
icon_state = "AAn-off"
for(var/mob/O in hearers(src, null))
O.show_message(text("<b>[]</b> states, 'Analysis complete.'", src), 1)
else if (findarti > 1)
for(var/mob/O in hearers(src, null))
O.show_message(text("<b>[]</b> states, 'Cannot analyse. Too many artifacts nearby.'", src), 1)
else
for(var/mob/O in hearers(src, null))
O.show_message(text("<b>[]</b> states, 'Cannot analyse. No artifact found.'", src), 1)
if(operation == 2) // Label Artifact
var/input = input(usr, "What do you want to name this artifact?.", "What?", "")
if (input)
for(var/obj/machinery/artifact/A in range(1,src))
A.name = input
src.updateUsrDialog()
proc
AA_FailedAnalysis(var/failtype)
switch(failtype)
if(1)
src.aorigin = "Failed to Identify"
if (prob(20)) src.aorigin = pick(src.allorigins)
if(2)
src.atrigger = "Failed to Identify"
if (prob(20)) src.atrigger = pick(src.alltriggers)
if(3)
src.aeffect1 = "Failed to Identify"
if (prob(20)) src.aeffect1 = pick(src.alleffects)
if(4)
src.aeffect2 = "Failed to Identify"
if (prob(20)) src.aeffect2 = pick(src.allranges)
AA_Analyse()
src.accuO = rand(0,10)
src.accuT = rand(0,10)
src.accuE1 = rand(0,10)
src.accuE2 = rand(0,10)
// Calculate report accuracy
for (var/obj/machinery/artifact/A in range(1,src))
for(var/i = artifact_research.starting_tier, i <= artifact_research.max_tiers, i++)
for(var/datum/artiresearch/R in artifact_research.researched_items[i])
if (R.bonustype == A.origin)
src.accuO += R.bonusamtO
src.accuT += R.bonusamtT
src.accuE1 += R.bonusamtE
src.accuE2 += R.bonusamtE
if (R.bonustype == "all")
src.accuO += R.bonusamtO
src.accuT += R.bonusamtT
src.accuE1 += R.bonusamtE
src.accuE2 += R.bonusamtE
if (src.accuO > 100) src.accuO = 100
if (src.accuT > 100) src.accuT = 100
if (src.accuE1 > 100) src.accuE1 = 100
if (src.accuE2 > 100) src.accuE2 = 100
// Roll to generate report
for (var/obj/machinery/artifact/A in range(1,src))
if (prob(accuO))
switch(A.origin)
if("ancient") src.aorigin = "Ancient Robots"
if("martian") src.aorigin = "Martian"
if("wizard") src.aorigin = "Wizard Federation"
if("eldritch") src.aorigin = "Extradimensional"
if("precursor") src.aorigin = "Precursor"
else src.aorigin = "Unknown Origin"
else AA_FailedAnalysis(1)
if (prob(accuT))
switch(A.trigger)
if("touch") src.atrigger = "Contact with Living Organism"
if("force") src.atrigger = "Heavy Impact"
if("energy") src.atrigger = "Contact with Energy Source"
if("chemical")
switch(A.triggerX)
if("hydrogen") src.atrigger = "Contact with Hydrogen"
if("corrosive") src.atrigger = "Contact with Corrosive Substance"
if("volatile") src.atrigger = "Contact with Volatile Substance"
if("toxin") src.atrigger = "Contact with Toxins"
if("heat") src.atrigger = "Exposure to Heat"
else src.atrigger = "Unknown Trigger"
else AA_FailedAnalysis(2)
if (prob(accuE1))
switch(A.effecttype)
if("healing") src.aeffect1 = "Healing Device"
if("injure") src.aeffect1 = "Anti-biological Weapon"
if("stun") src.aeffect1 = "Non-lethal Stunning Trap"
if("roboheal") src.aeffect1 = "Mechanoid Repair Module"
if("robohurt") src.aeffect1 = "Mechanoid Deconstruction Device"
if("cellcharge") src.aeffect1 = "Power Generator"
if("celldrain") src.aeffect1 = "Power Drain"
if("planthelper") src.aeffect1 = "Agriculture Regulator"
if("forcefield") src.aeffect1 = "Shield Generator"
if("teleport") src.aeffect1 = "Space-Time Displacer"
else src.aeffect1 = "Unknown Effect"
else AA_FailedAnalysis(3)
if (prob(accuE2))
switch(A.effectmode)
if("aura") src.aeffect2 = "Constant Short-Range Energy Field"
if("pulse")
if(A.aurarange > 7) src.aeffect2 = "Long Range Energy Pulses"
else src.aeffect2 = "Medium Range Energy Pulses"
if("worldpulse") src.aeffect2 = "Extreme Range Energy Pulses"
if("contact") src.aeffect2 = "Requires contact with subject"
else src.aeffect2 = "Unknown Range"
else AA_FailedAnalysis(4)
*/
// this was used in QM for a time but it fell into disuse and wasn't removed, the purpose being to check if an artifact
// was benevolent or malicious, to determine whether QMs would be paid or punished for shipping it
/proc/artifact_checkgood(var/obj/machinery/artifact/A)
switch(A.effecttype)
if("healing") return 1
if("injure") return 0
if("stun") return 0
if("roboheal") return 1
if("robohurt") return 0
if("cellcharge") return 1
if("celldrain") return 1
if("planthelper") return 1
if("forcefield") return 1
if("teleport") return 0