Merge pull request #1206 from Erthilo/TGUpdates

TG Update r3659 to r3681
This commit is contained in:
SkyMarshal
2012-05-31 20:00:50 -07:00
133 changed files with 1784 additions and 1545 deletions
+3 -1
View File
@@ -511,7 +511,6 @@
#include "code\game\machinery\scanner.dm"
#include "code\game\machinery\seed_extractor.dm"
#include "code\game\machinery\shieldgen.dm"
#include "code\game\machinery\sink.dm"
#include "code\game\machinery\Sleeper.dm"
#include "code\game\machinery\spaceheater.dm"
#include "code\game\machinery\status_display.dm"
@@ -787,6 +786,7 @@
#include "code\js\byjax.dm"
#include "code\js\menus.dm"
#include "code\modules\admin\admin.dm"
#include "code\modules\admin\admin_investigate.dm"
#include "code\modules\admin\admin_memo.dm"
#include "code\modules\admin\admin_verbs.dm"
#include "code\modules\admin\banjob.dm"
@@ -851,6 +851,7 @@
#include "code\modules\clothing\head\hats.dm"
#include "code\modules\clothing\head\helmets.dm"
#include "code\modules\clothing\spacesuits\captain.dm"
#include "code\modules\clothing\spacesuits\engineer.dm"
#include "code\modules\clothing\spacesuits\miscellaneous.dm"
#include "code\modules\clothing\spacesuits\ninja.dm"
#include "code\modules\clothing\spacesuits\rig.dm"
@@ -1078,6 +1079,7 @@
#include "code\modules\power\singularity\emitter.dm"
#include "code\modules\power\singularity\field_generator.dm"
#include "code\modules\power\singularity\generator.dm"
#include "code\modules\power\singularity\investigate.dm"
#include "code\modules\power\singularity\singularity.dm"
#include "code\modules\power\singularity\particle_accelerator\particle.dm"
#include "code\modules\power\singularity\particle_accelerator\particle_accelerator.dm"
+2 -1
View File
@@ -312,7 +312,8 @@ A list of items and costs is stored under the datum of every game mode, alongsid
var/temp = null //Temporary storage area for a message offering the option to destroy the radio
var/selfdestruct = 0 //Set to 1 while the radio is self destructing itself.
var/obj/item/device/radio/origradio = null
flags = FPRINT | TABLEPASS | CONDUCT | ONBELT
flags = FPRINT | TABLEPASS | CONDUCT
slot_flags = SLOT_BELT
w_class = 2.0
item_state = "radio"
throwforce = 5
@@ -1,7 +1,7 @@
/obj/item/weapon/weldpack
name = "Welding kit"
desc = "A heavy-duty, portable welding fluid carrier."
flags = ONBACK
slot_flags = SLOT_BACK
icon = 'storage.dmi'
icon_state = "welderpack"
w_class = 4.0
+2 -2
View File
@@ -44,8 +44,8 @@ var/global/list/ANTIGENS = list("[ANTIGEN_A]" = "A", "[ANTIGEN_B]" = "B", "[ANTI
icon_state = "health"
w_class = 2.0
item_state = "electronic"
flags = FPRINT | TABLEPASS | ONBELT | CONDUCT | USEDELAY
flags = FPRINT | TABLEPASS | CONDUCT | USEDELAY
slot_flags = SLOT_BELT
/obj/item/device/antibody_scanner/attack(mob/living/carbon/human/M as mob, mob/user as mob)
if(! istype(M, /mob/living/carbon) || !M:antibodies)
+5 -5
View File
@@ -103,8 +103,6 @@ proc/process_ghost_teleport_locs()
/*-----------------------------------------------------------------------------*/
/area/engine/
name = "Engineering"
icon_state = "engine"
/area/turret_protected/
@@ -848,6 +846,8 @@ proc/process_ghost_teleport_locs()
requires_power = 0//This area only covers the batteries and they deal with their own power
engineering
name = "Engineering"
icon_state = "engine"
engineering_break_room
name = "Engineering Break Room"
@@ -1068,7 +1068,7 @@ proc/process_ghost_teleport_locs()
icon_state = "surgery"
/area/medical/cryo
name = "Cryo"
name = "Cryogenics"
icon_state = "cryo"
/area/medical/exam_room
@@ -1107,14 +1107,14 @@ proc/process_ghost_teleport_locs()
/area/security/armoury
name = "Armoury"
icon_state = "security"
icon_state = "Warden"
/area/security/hos
name = "Head of Security's Office"
icon_state = "security"
/area/security/detectives_office
name = "Detectives Office"
name = "Detective's Office"
icon_state = "detective"
/area/security/range
+16 -2
View File
@@ -423,13 +423,27 @@
var/burning = null
var/hitsound = null
var/w_class = 3.0
var/protective_temperature = 0 // Placing this here to avoid runtime errors, due to tiny items being allowed on ears and being queried for this variable
flags = FPRINT | TABLEPASS
var/slot_flags = 0 //This is used to determine on which slots an item can fit.
pass_flags = PASSTABLE
pressure_resistance = 50
// causeerrorheresoifixthis
var/obj/item/master = null
//Since any item can now be a piece of clothing, this has to be put here so all items share it.
var/see_face = 1.0
var/color = null
var/body_parts_covered = 0 //see setup.dm for appropriate bit flags
var/protective_temperature = 0
var/heat_transfer_coefficient = 1 //0 prevents all transfers, 1 is invisible
var/gas_transfer_coefficient = 1 // for leaking gas from turf to mask and vice-versa (for masks right now, but at some point, i'd like to include space helmets)
var/permeability_coefficient = 1 // for chemicals/diseases
var/siemens_coefficient = 1 // for electrical admittance/conductance (electrocution checks and shit)
var/slowdown = 0 // How much clothing is slowing you down. Negative values speeds you up
var/canremove = 1 //Mostly for Ninja code at this point but basically will not allow the item to be removed if set to 0. /N
var/armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0)
var/list/allowed = null //suit storage stuff.
/obj/item/device
icon = 'device.dmi'
@@ -515,7 +529,7 @@
density = 0
anchored = 1.0
layer = 2.3 //under pipes
// flags = 64.0
// flags = CONDUCT
/obj/structure/lattice/New()
..()
+2 -13
View File
@@ -4,19 +4,7 @@
name = "clothing"
// var/obj/item/clothing/master = null
var/see_face = 1.0
var/color = null
var/body_parts_covered = 0 //see setup.dm for appropriate bit flags
var/heat_transfer_coefficient = 1 //0 prevents all transfers, 1 is invisible
var/gas_transfer_coefficient = 1 // for leaking gas from turf to mask and vice-versa (for masks right now, but at some point, i'd like to include space helmets)
var/permeability_coefficient = 1 // for chemicals/diseases
var/siemens_coefficient = 1 // for electrical admittance/conductance (electrocution checks and shit)
var/slowdown = 0 // How much clothing is slowing you down. Negative values speeds you up
var/canremove = 1 //Mostly for Ninja code at this point but basically will not allow the item to be removed if set to 0. /N
var/armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0)
@@ -28,6 +16,7 @@
/obj/item/clothing/belt
name = "belt"
flags = FPRINT | TABLEPASS | ONBELT
flags = FPRINT | TABLEPASS
slot_flags = SLOT_BELT
*/
+6 -3
View File
@@ -1845,7 +1845,8 @@
name = "bottle of Plant-B-Gone"
icon_state = "plantbgone"
item_state = "plantbgone"
flags = ONBELT|TABLEPASS|OPENCONTAINER|FPRINT|USEDELAY
flags = TABLEPASS | OPENCONTAINER | FPRINT | USEDELAY
slot_flags = SLOT_BELT
throwforce = 3
w_class = 2.0
throw_speed = 2
@@ -1859,7 +1860,8 @@
name = "weed-spray"
icon_state = "weedspray"
item_state = "spray"
flags = ONBELT|TABLEPASS|OPENCONTAINER|FPRINT|USEDELAY
flags = TABLEPASS | OPENCONTAINER | FPRINT | USEDELAY
slot_flags = SLOT_BELT
throwforce = 4
w_class = 2.0
throw_speed = 2
@@ -1873,7 +1875,8 @@
name = "pest-spray"
icon_state = "pestspray"
item_state = "spray"
flags = ONBELT|TABLEPASS|OPENCONTAINER|FPRINT|USEDELAY
flags = TABLEPASS | OPENCONTAINER | FPRINT | USEDELAY
slot_flags = SLOT_BELT
throwforce = 4
w_class = 2.0
throw_speed = 2
+2 -1
View File
@@ -3,7 +3,8 @@
desc = "You wear this on your back and put items into it."
icon_state = "backpack"
w_class = 4.0
flags = 259.0
flags = FPRINT|TABLEPASS
slot_flags = SLOT_BACK //ERROOOOO
max_w_class = 3
max_combined_w_class = 21
+2 -1
View File
@@ -129,7 +129,8 @@
icon = 'gun.dmi'
icon_state = "revolver"
item_state = "gun"
flags = FPRINT | TABLEPASS | CONDUCT | ONBELT | USEDELAY
flags = FPRINT | TABLEPASS | CONDUCT | USEDELAY
slot_flags = SLOT_BELT
w_class = 3.0
g_amt = 10
m_amt = 10
+49 -30
View File
@@ -12,7 +12,8 @@
desc = "A shield adept at blocking blunt objects from connecting with the torso of the shield wielder."
icon = 'weapons.dmi'
icon_state = "riot"
flags = FPRINT | TABLEPASS| CONDUCT| ONBACK
flags = FPRINT | TABLEPASS| CONDUCT
slot_flags = SLOT_BACK
force = 5.0
throwforce = 5.0
throw_speed = 1
@@ -31,7 +32,8 @@
desc = "A rod of pure obsidian, its very presence disrupts and dampens the powers of Nar-Sie's followers."
icon_state = "nullrod"
item_state = "nullrod"
flags = FPRINT | ONBELT | TABLEPASS
flags = FPRINT | TABLEPASS
slot_flags = SLOT_BELT
force = 10
throw_speed = 1
throw_range = 4
@@ -83,7 +85,8 @@
desc = "This thing is so unspeakably shitty you are having a hard time even holding it."
icon_state = "sord"
item_state = "sord"
flags = FPRINT | ONBELT | TABLEPASS
flags = FPRINT | TABLEPASS
slot_flags = SLOT_BELT
force = 2
throwforce = 1
w_class = 3*/
@@ -93,7 +96,8 @@
desc = "BLOOD FOR THE BLOOD GOD." //SKULLS FOR THE SKULL THRONE. --SkyMarshal
icon_state = "claymore"
item_state = "claymore"
flags = FPRINT | ONBELT | TABLEPASS
flags = FPRINT | TABLEPASS
slot_flags = SLOT_BELT
force = 40
throwforce = 10
w_class = 3
@@ -321,7 +325,8 @@
icon_state = "spectrometer"
item_state = "analyzer"
w_class = 2.0
flags = FPRINT | TABLEPASS| CONDUCT | ONBELT | OPENCONTAINER
flags = FPRINT | TABLEPASS| CONDUCT | OPENCONTAINER
slot_flags = SLOT_BELT
throwforce = 5
throw_speed = 4
throw_range = 20
@@ -342,7 +347,8 @@
desc = "The police baton of the future."
icon_state = "stunbaton"
item_state = "baton"
flags = FPRINT | ONBELT | TABLEPASS
flags = FPRINT | TABLEPASS
slot_flags = SLOT_BELT
force = 15
throwforce = 7
w_class = 3
@@ -356,7 +362,8 @@
desc = "The Captain is first and all other heads are last."
icon_state = "chainofcommand"
item_state = "chainofcommand"
flags = FPRINT | ONBELT | TABLEPASS
flags = FPRINT | TABLEPASS
slot_flags = SLOT_BELT
force = 10
throwforce = 7
w_class = 3
@@ -381,7 +388,7 @@
origin_tech = "combat=3"
/obj/item/weapon/melee/energy/sword
var/color
color
name = "energy sword"
desc = "It cuts AND cooks at the same time!"
icon_state = "sword0"
@@ -471,7 +478,7 @@
w_class = 1.0
throw_speed = 2
throw_range = 10
var/color = "white"
color = "white"
/obj/item/weapon/bedsheet/blue
icon_state = "sheetblue"
@@ -675,6 +682,7 @@
item_state = "card-id"
var/access = list()
var/registered_name = null // The name registered_name on the card
slot_flags = SLOT_ID
var/pin = 0
var/money = 0
var/assignment = null
@@ -743,7 +751,8 @@
w_class = 2.0
throw_speed = 3
throw_range = 10
flags = FPRINT | TABLEPASS | ONBELT
flags = FPRINT | TABLEPASS
slot_flags = SLOT_BELT
/obj/item/weapon/clipboard/notebook
name = "notebook"
@@ -756,7 +765,7 @@
icon = 'power.dmi'
icon_state = "coil_red"
var/amount = MAXCOIL
var/color = "red"
color = "red"
desc = "A coil of power cable."
throwforce = 10
w_class = 2.0
@@ -764,7 +773,8 @@
throw_range = 5
m_amt = 50
g_amt = 20
flags = TABLEPASS|USEDELAY|FPRINT|CONDUCT | ONBELT
flags = TABLEPASS | USEDELAY | FPRINT | CONDUCT
slot_flags = SLOT_BELT
item_state = "coil_red"
/obj/item/weapon/cable_coil/cut
@@ -797,7 +807,8 @@
desc = "Used to remove floor tiles."
icon = 'items.dmi'
icon_state = "crowbar"
flags = FPRINT | TABLEPASS| CONDUCT | ONBELT
flags = FPRINT | TABLEPASS| CONDUCT
slot_flags = SLOT_BELT
force = 5.0
throwforce = 7.0
item_state = "wrench"
@@ -840,7 +851,7 @@
name = "dummy"
invisibility = 101.0
anchored = 1.0
flags = 2.0
flags = TABLEPASS
/obj/item/weapon/extinguisher
name = "fire extinguisher"
@@ -953,7 +964,8 @@
gender = PLURAL
icon = 'items.dmi'
icon_state = "handcuff"
flags = FPRINT | TABLEPASS | CONDUCT | ONBELT
flags = FPRINT | TABLEPASS | CONDUCT
slot_flags = SLOT_BELT
throwforce = 5
w_class = 2.0
throw_speed = 2
@@ -1016,12 +1028,12 @@
throw_range = 15
layer = 4
var/list/stamped
var/see_face = 1
var/body_parts_covered = HEAD
var/heat_transfer_coefficient = 0.99
var/gas_transfer_coefficient = 1
var/permeability_coefficient = 0.99
var/siemens_coefficient = 0.80
see_face = 1
body_parts_covered = HEAD
heat_transfer_coefficient = 0.99
gas_transfer_coefficient = 1
permeability_coefficient = 0.99
siemens_coefficient = 0.80
var/iteration
/obj/item/weapon/directions
@@ -1103,7 +1115,8 @@ eternal248: Found broken and buggy Z-levels 7-12, ended up leading to my discove
name = "pen"
icon = 'paper.dmi'
icon_state = "pen"
flags = FPRINT | ONBELT | TABLEPASS
flags = FPRINT | TABLEPASS
slot_flags = SLOT_BELT
throwforce = 0
w_class = 1.0
throw_speed = 7
@@ -1136,7 +1149,8 @@ eternal248: Found broken and buggy Z-levels 7-12, ended up leading to my discove
name = "banhammer"
icon = 'items.dmi'
icon_state = "toyhammer"
flags = FPRINT | ONBELT | TABLEPASS
flags = FPRINT | TABLEPASS
slot_flags = SLOT_BELT
throwforce = 0
w_class = 1.0
throw_speed = 7
@@ -1144,12 +1158,14 @@ eternal248: Found broken and buggy Z-levels 7-12, ended up leading to my discove
/obj/item/weapon/pen/sleepypen
desc = "It's a normal black ink pen with a sharp point."
flags = FPRINT | ONBELT | TABLEPASS | OPENCONTAINER
flags = FPRINT | TABLEPASS | OPENCONTAINER
slot_flags = SLOT_BELT
origin_tech = "materials=2;biotech=1;syndicate=7"
/obj/item/weapon/pen/paralysis
desc = "It's a normal black ink pen with a sharp point."
flags = FPRINT | ONBELT | TABLEPASS | OPENCONTAINER
flags = FPRINT | TABLEPASS | OPENCONTAINER
slot_flags = SLOT_BELT
origin_tech = "materials=2;biotech=1;syndicate=5"
/obj/item/weapon/rack_parts
@@ -1173,7 +1189,8 @@ eternal248: Found broken and buggy Z-levels 7-12, ended up leading to my discove
desc = "Used for screwing."
icon = 'items.dmi'
icon_state = "screwdriver"
flags = FPRINT | TABLEPASS| CONDUCT | ONBELT
flags = FPRINT | TABLEPASS| CONDUCT
slot_flags = SLOT_BELT
force = 5.0
w_class = 1.0
throwforce = 5.0
@@ -1203,7 +1220,8 @@ eternal248: Found broken and buggy Z-levels 7-12, ended up leading to my discove
var/selfdestruct = 0.0
var/traitor_frequency = 0.0
var/obj/item/device/radio/origradio = null
flags = FPRINT | TABLEPASS| CONDUCT | ONBELT
flags = FPRINT | TABLEPASS| CONDUCT
slot_flags = SLOT_BELT
item_state = "radio"
throwforce = 5
w_class = 2.0
@@ -1685,7 +1703,7 @@ eternal248: Found broken and buggy Z-levels 7-12, ended up leading to my discove
throw_speed = 7
throw_range = 15
m_amt = 60
var/color = "cargo"
color = "cargo"
/obj/item/weapon/stamp/captain
name = "captain's rubber stamp"
@@ -1742,7 +1760,8 @@ eternal248: Found broken and buggy Z-levels 7-12, ended up leading to my discove
w_class = 1
throwforce = 2
var/cigarcount = 6
flags = ONBELT | TABLEPASS */
flags = TABLEPASS
slot_flags = SLOT_BELT*/
/obj/item/weapon/mousetrap
@@ -2047,7 +2066,7 @@ eternal248: Found broken and buggy Z-levels 7-12, ended up leading to my discove
desc = "A sachet of flavoring, designed to be used with \"LiquidFood\" rations. The flavor is indeterminable."
icon = 'food_ingredients.dmi'
var/descriptor = "disturbingly beige" //Description shown to onlookers.
var/color = "beige" //Color the icon should take on when this is applied. Also shown when it is mixed in.
color = "beige" //Color the icon should take on when this is applied. Also shown when it is mixed in.
var/newDesc = "It posesses a strange and unidentifiable taste. You try not to think to hard about it." //What gets pegged onto the description.
/obj/item/weapon/flavor/red
+129
View File
@@ -77,6 +77,135 @@ proc/countJob(rank)
del(W)
return null
/mob/living/carbon/human/proc/equip_to_appropriate_slot(obj/item/W)
if(!W)
return
if(!ishuman(src))
return
if(W.slot_flags & SLOT_BACK)
if(!src.back)
if( src.get_active_hand() == W )
src.u_equip(W)
src.back = W
update_clothing()
return
if(W.slot_flags & SLOT_ID)
if(!src.wear_id)
if( src.get_active_hand() == W )
src.u_equip(W)
src.wear_id = W
update_clothing()
return
if(W.slot_flags & SLOT_ICLOTHING)
if(!src.w_uniform)
if( src.get_active_hand() == W )
src.u_equip(W)
src.w_uniform = W
update_clothing()
return
if(W.slot_flags & SLOT_OCLOTHING)
if(!src.wear_suit)
if( src.get_active_hand() == W )
src.u_equip(W)
src.wear_suit = W
update_clothing()
return
if(W.slot_flags & SLOT_MASK)
if(!src.wear_mask)
if( src.get_active_hand() == W )
src.u_equip(W)
src.wear_mask = W
update_clothing()
return
if(W.slot_flags & SLOT_HEAD)
if(!src.head)
if( src.get_active_hand() == W )
src.u_equip(W)
src.head = W
update_clothing()
return
if(W.slot_flags & SLOT_FEET)
if(!src.shoes)
if( src.get_active_hand() == W )
src.u_equip(W)
src.shoes = W
update_clothing()
return
if(W.slot_flags & SLOT_GLOVES)
if(!src.gloves)
if( src.get_active_hand() == W )
src.u_equip(W)
src.gloves = W
update_clothing()
return
if(W.slot_flags & SLOT_EARS)
if(!src.l_ear)
if( src.get_active_hand() == W )
src.u_equip(W)
src.l_ear = W
update_clothing()
else if(!src.r_ear)
if( src.get_active_hand() == W )
src.u_equip(W)
src.r_ear = W
update_clothing()
return
if(W.slot_flags & SLOT_EYES)
if(!src.glasses)
if( src.get_active_hand() == W )
src.u_equip(W)
src.glasses = W
update_clothing()
return
if(W.slot_flags & SLOT_BELT)
if(!src.belt)
if( src.get_active_hand() == W )
src.u_equip(W)
src.belt = W
update_clothing()
return
//Suit storage
var/confirm
if (wear_suit)
if(wear_suit.allowed)
if (istype(W, /obj/item/device/pda) || istype(W, /obj/item/weapon/pen))
confirm = 1
if (is_type_in_list(W, wear_suit.allowed))
confirm = 1
if(confirm)
src.u_equip(W)
src.s_store = W
update_clothing()
return
//Pockets
if ( !( W.slot_flags & SLOT_DENYPOCKET ) )
if(!src.l_store)
if ( W.w_class <= 2 || ( W.slot_flags & SLOT_POCKET ) )
u_equip(W)
l_store = W
update_clothing()
return
if(!src.r_store)
if ( W.w_class <= 2 || ( W.slot_flags & SLOT_POCKET ) )
u_equip(W)
r_store = W
update_clothing()
return
/mob/living/carbon/human/proc/equip_if_possible(obj/item/W, slot, del_on_fail = 1) // since byond doesn't seem to have pointers, this seems like the best way to do this :/
//warning: icky code
var/equipped = 0
+2 -1
View File
@@ -2,7 +2,8 @@
name = "GPS"
icon = 'device.dmi'
icon_state = "pinoff"
flags = FPRINT | TABLEPASS| CONDUCT | ONBELT
flags = FPRINT | TABLEPASS| CONDUCT
slot_flags = SLOT_BELT
w_class = 2.0
item_state = "electronic"
throw_speed = 4
+4 -4
View File
@@ -77,7 +77,7 @@
/atom/proc/add_hiddenprint(mob/living/M as mob)
if(isnull(M)) return
if(isnull(M.key)) return
if (!( src.flags ) & 256)
if (!( src.flags ) & FPRINT)
return
if (ishuman(M))
var/mob/living/carbon/human/H = M
@@ -102,7 +102,7 @@
/atom/proc/add_fingerprint(mob/living/M as mob)
if(isnull(M)) return
if(isnull(M.key)) return
if (!( flags ) & 256)
if (!( src.flags ) & FPRINT)
return
//Smudge up dem prints some
for(var/P in fingerprints)
@@ -175,7 +175,7 @@
if (!istype(M.dna, /datum/dna))
M.dna = new /datum/dna(null)
M.check_dna()
if (!( src.flags ) & 256)
if (!( src.flags ) & FPRINT)
return 0
if(!blood_DNA || !istype(blood_DNA, /list)) //if our list of DNA doesn't exist yet (or isn't a list) initialise it.
blood_DNA = list()
@@ -291,7 +291,7 @@
/atom/proc/clean_blood()
if (!flags & 256)
if (!( src.flags ) & FPRINT)
return
if (blood_DNA )
+2 -2
View File
@@ -85,13 +85,13 @@
src.load_motd()
src.load_rules()
src.load_admins()
investigate_reset()
if (config.usealienwhitelist)
load_alienwhitelist()
if (config.usewhitelist)
load_whitelist()
LoadBansjob()
src.update_status()
makepowernets()
sun = new /datum/sun()
@@ -196,4 +196,4 @@
/obj/effect/decal/point/point()
set src in oview()
set hidden = 1
return
return
+4 -2
View File
@@ -11,7 +11,8 @@
item_state = "flashbang"
throw_speed = 4
throw_range = 20
flags = FPRINT | TABLEPASS | ONBELT | USEDELAY
flags = FPRINT | TABLEPASS | USEDELAY
slot_flags = SLOT_BELT
var/datum/effect/effect/system/bad_smoke_spread/smoke
/obj/item/weapon/mustardbomb
@@ -25,7 +26,8 @@
item_state = "flashbang"
throw_speed = 4
throw_range = 20
flags = FPRINT | TABLEPASS | CONDUCT | ONBELT
flags = FPRINT | TABLEPASS | CONDUCT
slot_flags = SLOT_BELT
var/datum/effect/effect/system/mustard_gas_spread/mustard_gas
/obj/item/weapon/smokebomb/New()
+3 -1
View File
@@ -3,11 +3,13 @@
desc = "An arcane weapon wielded by the followers of Nar-Sie"
icon_state = "cultblade"
item_state = "cultblade"
flags = FPRINT | ONBELT | TABLEPASS
flags = FPRINT | TABLEPASS
slot_flags = SLOT_BELT
force = 40
throwforce = 10
/obj/item/clothing/head/culthood
name = "cult hood"
icon_state = "culthood"
+1 -1
View File
@@ -79,7 +79,7 @@
/obj/machinery/nuclearbomb/Topic(href, href_list)
..()
if (usr.stat || usr.restrained())
if (!usr.canmove || usr.stat || usr.restrained())
return
if (!ishuman(usr))
usr << "\red You don't have the dexterity to do this!"
+2 -1
View File
@@ -2,7 +2,8 @@
name = "pinpointer"
icon = 'device.dmi'
icon_state = "pinoff"
flags = FPRINT | TABLEPASS| CONDUCT | ONBELT
flags = FPRINT | TABLEPASS| CONDUCT
slot_flags = SLOT_BELT
w_class = 2.0
item_state = "electronic"
throw_speed = 4
+2 -1
View File
@@ -5,7 +5,8 @@
item_state = "electronic"
desc = "A fragment of the legendary treasure known simply as the 'Soul Stone'. The shard still flickers with a fraction of the full artefacts power."
w_class = 1.0
flags = FPRINT | TABLEPASS | ONBELT
flags = FPRINT | TABLEPASS
slot_flags = SLOT_BELT
origin_tech = "bluespace=4;materials=4"
var/imprinted = "empty"
+73 -73
View File
@@ -1,84 +1,84 @@
/var/const
access_security = 1
access_brig = 2
access_armory = 3
access_forensics_lockers= 4
access_medical = 5
access_morgue = 6
access_tox = 7
access_tox_storage = 8
access_genetics = 9
access_engine = 10
access_engine_equip= 11
access_maint_tunnels = 12
access_external_airlocks = 13
access_emergency_storage = 14
access_change_ids = 15
access_ai_upload = 16
access_teleporter = 17
access_eva = 18
access_heads = 19
access_captain = 20
access_all_personal_lockers = 21
access_chapel_office = 22
access_tech_storage = 23
access_atmospherics = 24
access_bar = 25
access_janitor = 26
access_crematorium = 27
access_kitchen = 28
access_robotics = 29
access_rd = 30
access_cargo = 31
access_construction = 32
access_chemistry = 33
access_cargo_bot = 34
access_hydroponics = 35
access_manufacturing = 36
access_library = 37
access_lawyer = 38
access_virology = 39
access_cmo = 40
access_qm = 41
access_court = 42
access_clown = 43
access_mime = 44
access_surgery = 45
access_theatre = 46
access_research = 47
access_mining = 48
access_mining_office = 49 //not in use
access_mailsorting = 50
access_mint = 51
access_mint_vault = 52
access_heads_vault = 53
access_mining_station = 54
access_xenobiology = 55
access_ce = 56
access_hop = 57
access_hos = 58
access_RC_announce = 59 //Request console announcements
access_keycard_auth = 60 //Used for events which require at least two people to confirm them
access_tcomsat = 61 // has access to the entire telecomms satellite / machinery
/var/const/access_security = 1
/var/const/access_brig = 2
/var/const/access_armory = 3
/var/const/access_forensics_lockers= 4
/var/const/access_medical = 5
/var/const/access_morgue = 6
/var/const/access_tox = 7
/var/const/access_tox_storage = 8
/var/const/access_genetics = 9
/var/const/access_engine = 10
/var/const/access_engine_equip= 11
/var/const/access_maint_tunnels = 12
/var/const/access_external_airlocks = 13
/var/const/access_emergency_storage = 14
/var/const/access_change_ids = 15
/var/const/access_ai_upload = 16
/var/const/access_teleporter = 17
/var/const/access_eva = 18
/var/const/access_heads = 19
/var/const/access_captain = 20
/var/const/access_all_personal_lockers = 21
/var/const/access_chapel_office = 22
/var/const/access_tech_storage = 23
/var/const/access_atmospherics = 24
/var/const/access_bar = 25
/var/const/access_janitor = 26
/var/const/access_crematorium = 27
/var/const/access_kitchen = 28
/var/const/access_robotics = 29
/var/const/access_rd = 30
/var/const/access_cargo = 31
/var/const/access_construction = 32
/var/const/access_chemistry = 33
/var/const/access_cargo_bot = 34
/var/const/access_hydroponics = 35
/var/const/access_manufacturing = 36
/var/const/access_library = 37
/var/const/access_lawyer = 38
/var/const/access_virology = 39
/var/const/access_cmo = 40
/var/const/access_qm = 41
/var/const/access_court = 42
/var/const/access_clown = 43
/var/const/access_mime = 44
/var/const/access_surgery = 45
/var/const/access_theatre = 46
/var/const/access_research = 47
/var/const/access_mining = 48
/var/const/access_mining_office = 49 //not in use
/var/const/access_mailsorting = 50
/var/const/access_mint = 51
/var/const/access_mint_vault = 52
/var/const/access_heads_vault = 53
/var/const/access_mining_station = 54
/var/const/access_xenobiology = 55
/var/const/access_ce = 56
/var/const/access_hop = 57
/var/const/access_hos = 58
/var/const/access_RC_announce = 59 //Request console announcements
/var/const/access_keycard_auth = 60 //Used for events which require at least two people to confirm them
/var/const/access_tcomsat = 61 // has access to the entire telecomms satellite / machinery
//BEGIN CENTCOM ACCESS
/*Should leave plenty of room if we need to add more access levels.
Mostly for admin fun times.*/
access_cent_general = 101//General facilities.
access_cent_thunder = 102//Thunderdome.
access_cent_specops = 103//Special Ops.
access_cent_medical = 104//Medical/Research
access_cent_living = 105//Living quarters.
access_cent_storage = 106//Generic storage areas.
access_cent_teleporter = 107//Teleporter.
access_cent_creed = 108//Creed's office.
access_cent_captain = 109//Captain's office/ID comp/AI.
/var/const/access_cent_general = 101//General facilities.
/var/const/access_cent_thunder = 102//Thunderdome.
/var/const/access_cent_specops = 103//Special Ops.
/var/const/access_cent_medical = 104//Medical/Research
/var/const/access_cent_living = 105//Living quarters.
/var/const/access_cent_storage = 106//Generic storage areas.
/var/const/access_cent_teleporter = 107//Teleporter.
/var/const/access_cent_creed = 108//Creed's office.
/var/const/access_cent_captain = 109//Captain's office/ID comp/AI.
//The Syndicate
access_syndicate = 150//General Syndicate Access
/var/const/access_syndicate = 150//General Syndicate Access
//MONEY
access_crate_cash = 200
/var/const/access_crate_cash = 200
/obj/var/list/req_access = null
/obj/var/req_access_txt = "0"
@@ -233,7 +233,7 @@
if("Chef")
return list(access_kitchen)
if("Roboticist")
return list(access_robotics, access_tech_storage, access_maint_tunnels)
return list(access_robotics, access_tech_storage, access_maint_tunnels, access_morgue) //As a job that handles so many corpses, it makes sense for them to have morgue access.
if("Cargo Technician")
return list(access_maint_tunnels, access_cargo, access_cargo_bot, access_mailsorting)
if("Shaft Miner")
+1 -1
View File
@@ -91,7 +91,7 @@
H.equip_if_possible(new /obj/item/weapon/storage/backpack(H), H.slot_back)
H.equip_if_possible(new /obj/item/clothing/under/rank/atmospheric_technician(H), H.slot_w_uniform)
H.equip_if_possible(new /obj/item/clothing/shoes/black(H), H.slot_shoes)
H.equip_if_possible(new /obj/item/device/pda/engineering(H), H.slot_l_store)
H.equip_if_possible(new /obj/item/device/pda/atmos(H), H.slot_l_store)
H.equip_if_possible(new /obj/item/weapon/storage/belt/utility/atmostech/(H), H.slot_belt)
if(H.backbag == 1)
H.equip_if_possible(new /obj/item/weapon/storage/box/engineer(H), H.slot_r_hand)
+3 -3
View File
@@ -87,10 +87,10 @@
if(H.backbag == 2) H.equip_if_possible(new /obj/item/weapon/storage/backpack(H), H.slot_back)
if(H.backbag == 3) H.equip_if_possible(new /obj/item/weapon/storage/backpack/satchel(H), H.slot_back)
if(H.backbag == 4) H.equip_if_possible(new /obj/item/weapon/storage/backpack/satchel_chem(H), H.slot_back)
H.equip_if_possible(new /obj/item/device/radio/headset/headset_medsci(H), H.slot_ears)
H.equip_if_possible(new /obj/item/device/radio/headset/headset_med(H), H.slot_ears)
H.equip_if_possible(new /obj/item/clothing/under/rank/chemist(H), H.slot_w_uniform)
H.equip_if_possible(new /obj/item/clothing/shoes/white(H), H.slot_shoes)
H.equip_if_possible(new /obj/item/device/pda/medical(H), H.slot_belt)
H.equip_if_possible(new /obj/item/device/pda/chemist(H), H.slot_belt)
H.equip_if_possible(new /obj/item/clothing/suit/storage/labcoat/chemist(H), H.slot_wear_suit)
return 1
@@ -115,7 +115,7 @@
if(H.backbag == 4) H.equip_if_possible(new /obj/item/weapon/storage/backpack/satchel_gen(H), H.slot_back)
H.equip_if_possible(new /obj/item/clothing/under/rank/geneticist(H), H.slot_w_uniform)
H.equip_if_possible(new /obj/item/clothing/shoes/white(H), H.slot_shoes)
H.equip_if_possible(new /obj/item/device/pda/medical(H), H.slot_belt)
H.equip_if_possible(new /obj/item/device/pda/geneticist(H), H.slot_belt)
H.equip_if_possible(new /obj/item/clothing/suit/storage/labcoat/genetics(H), H.slot_wear_suit)
H.equip_if_possible(new /obj/item/device/flashlight/pen(H), H.slot_s_store)
return 1
+4 -1
View File
@@ -44,7 +44,7 @@
/obj/machinery/pipedispenser/Topic(href, href_list)
if(..())
return
if(unwrenched)
if(unwrenched || !usr.canmove || usr.stat || usr.restrained() || !in_range(loc, usr))
usr << browse(null, "window=pipedispenser")
return
usr.machine = src
@@ -135,6 +135,9 @@
usr.machine = src
src.add_fingerprint(usr)
if(href_list["dmake"])
if(unwrenched || !usr.canmove || usr.stat || usr.restrained() || !in_range(loc, usr))
usr << browse(null, "window=pipedispenser")
return
if(!wait)
var/p_type = text2num(href_list["dmake"])
var/obj/structure/disposalconstruct/C = new (src.loc)
-151
View File
@@ -1,151 +0,0 @@
/obj/machinery/sink
name = "sink"
icon = 'device.dmi'
icon_state = "sink"
desc = "A sink used for washing one's hands and face."
anchored = 1
var/busy = 0 //Something's being washed at the moment
var/mode = 0 //0 == fill, 1 == pour
New()
..()
verbs += /obj/machinery/sink/proc/mode_pour
attack_hand(mob/M as mob)
if(isrobot(M) || isAI(M))
return
if(busy)
M << "\red Someone's already washing something here."
return
M << "\blue You start washing up."
busy = 1
if(do_after(M,40))
M.clean_blood()
if(istype(M, /mob/living/carbon))
var/mob/living/carbon/C = M
C.clean_blood()
/*
if(C.r_hand)
C.r_hand.clean_blood() // The hand you attack with is empty anyway, the other one should not be washed while doing this.
if(C.l_hand)
C.l_hand.clean_blood()
if(C.wear_mask)
C.wear_mask.clean_blood() //- NOPE, Washing machine -Errorage
*/
if(istype(M, /mob/living/carbon/human))
/*if(C:w_uniform)
C:w_uniform.clean_blood() //- NOPE, Washing machine -Errorage
if(C:wear_suit)
C:wear_suit.clean_blood() //- NOPE, Washing machine -Errorage
if(C:shoes)
C:shoes.clean_blood()*/ //- NOPE, Washing machine -Errorage
if(C:gloves)
C:gloves.clean_blood()
/*if(C:head)
C:head.clean_blood()*/ //- NOPE, Washing machine -Errorage
for(var/mob/V in viewers(src, null))
V.show_message(text("\blue [M] washes up using \the [src]."))
busy = 0
proc/mode_pour()
set name = "Mode -> Pour"
set category = "Object"
set src in oview(1)
mode = 1
verbs -= /obj/machinery/sink/proc/mode_pour
verbs += /obj/machinery/sink/proc/mode_fill
usr << "You will now pour reagents down \the [src]."
proc/mode_fill()
set name = "Mode -> Fill"
set category = "Object"
set src in oview(1)
mode = 0
verbs -= /obj/machinery/sink/proc/mode_fill
verbs += /obj/machinery/sink/proc/mode_pour
usr << "You will now fill your container from the faucet."
attackby(var/obj/item/O as obj, var/mob/user as mob)
if(busy)
user << "\red Someone's already washing something here."
return
if (istype(O, /obj/item/weapon/reagent_containers/glass/bucket))
O:reagents.add_reagent("water", 70)
user.visible_message( \
"\blue [user] fills the [O] using the [src].", \
"\blue You fill the [O] using the [src].")
return
if (istype(O, /obj/item/weapon/reagent_containers/glass) || istype(O,/obj/item/weapon/reagent_containers/food/drinks))
if(!mode)
// fill
if(O.reagents.total_volume < O.reagents.maximum_volume)
O:reagents.add_reagent("water", 10)
user.visible_message( \
"\blue [user] fills the [O] using the [src].", \
"\blue You fill the [O] using the [src].")
else
user.visible_message( \
"\blue [user] spills water out of the overflowing [O] into the [src].", \
"\blue You spill water out of the overflowing [O] into the [src].")
else
// pour
if(O.reagents.total_volume > 0)
O.reagents.clear_reagents()
user.visible_message( \
"\blue [user] pours the contents of \the [O] into \the [src].", \
"\blue You pour the contents of \the [O] into \the [src].")
else
user << "\The [O] is empty."
return
else if (istype(O, /obj/item/weapon/melee/baton))
var/obj/item/weapon/melee/baton/B = O
if (B.charges > 0 && B.status == 1)
flick("baton_active", src)
user.Stun(10)
user.stuttering = 10
user.Weaken(10)
if(isrobot(user))
var/mob/living/silicon/robot/R = user
R.cell.charge -= 20
else
B.charges--
user.visible_message( \
"[user] was stunned by his wet [O].", \
"\red You have wet \the [O], it shocks you!")
return
var/obj/item/I = O
if(!I || !istype(I,/obj/item)) return
usr << "\blue You start washing up."
busy = 1
if(do_after(user,40))
if(!I) return //Item's been destroyed while washing
O.clean_blood()
user.visible_message( \
"\blue [user] washes \a [I] using \the [src].", \
"\blue You wash \a [I] using \the [src].")
busy = 0
shower
name = "Shower"
desc = "This is a shower. Useful for cleaning."
icon_state = "shower"
kitchen
name = "Kitchen Sink"
icon_state = "sink_alt"
kitchen2
name = "Kitchen Sink"
icon_state = "sink_alt2"
+7 -7
View File
@@ -50,7 +50,7 @@
/obj/effect/alien/resin/hitby(AM as mob|obj)
..()
for(var/mob/O in viewers(src, null))
O.show_message(text("\red <B>[src] was hit by [AM].</B>"), 1)
O.show_message("\red <B>[src] was hit by [AM].</B>", 1)
var/tforce = 0
if(ismob(AM))
tforce = 10
@@ -64,9 +64,9 @@
/obj/effect/alien/resin/attack_hand()
if ((usr.mutations & HULK))
usr << text("\blue You easily destroy the [name].")
usr << "\blue You easily destroy the [name]."
for(var/mob/O in oviewers(src))
O.show_message(text("\red [] destroys the [name]!", usr), 1)
O.show_message("\red [usr] destroys the [name]!", 1)
health = 0
healthcheck()
return
@@ -77,15 +77,15 @@
/obj/effect/alien/resin/attack_alien()
if (islarva(usr))//Safety check for larva. /N
return
usr << text("\green You claw at the [name].")
usr << "\green You claw at the [name]."
for(var/mob/O in oviewers(src))
O.show_message(text("\red [] claws at the resin!", usr), 1)
O.show_message("\red [usr] claws at the resin!", 1)
playsound(loc, 'attackblob.ogg', 100, 1)
health -= rand(10, 20)
if(health <= 0)
usr << text("\green You slice the [name] to pieces.")
usr << "\green You slice the [name] to pieces."
for(var/mob/O in oviewers(src))
O.show_message(text("\red [] slices the [name] apart!", usr), 1)
O.show_message("\red [usr] slices the [name] apart!", 1)
healthcheck()
return
+6 -5
View File
@@ -1,4 +1,4 @@
/obj/structure/closet/extinguisher
/obj/structure/extinguisher_cabinet
name = "extinguisher cabinet"
desc = "A small wall mounted cabinet designed to hold a fire extinguisher."
icon = 'closet.dmi'
@@ -6,10 +6,11 @@
anchored = 1
density = 0
var/obj/item/weapon/extinguisher/has_extinguisher = new/obj/item/weapon/extinguisher
var/opened = 0
/obj/structure/closet/extinguisher/attackby(var/obj/item/O as obj, var/mob/user as mob)
/obj/structure/extinguisher_cabinet/attackby(var/obj/item/O as obj, var/mob/user as mob)
if (isrobot(usr))
return
if (istype(O, /obj/item/weapon/extinguisher))
@@ -26,7 +27,7 @@
/obj/structure/closet/extinguisher/attack_hand(mob/user as mob)
/obj/structure/extinguisher_cabinet/attack_hand(mob/user as mob)
if(has_extinguisher)
user.put_in_hand(has_extinguisher)
has_extinguisher = null
@@ -38,13 +39,13 @@
/obj/structure/closet/extinguisher/attack_paw(mob/user as mob)
/obj/structure/extinguisher_cabinet/attack_paw(mob/user as mob)
attack_hand(user)
return
/obj/structure/closet/extinguisher/update_icon()
/obj/structure/extinguisher_cabinet/update_icon()
if(!opened)
icon_state = "extinguisher_closed"
return
+1 -1
View File
@@ -15,7 +15,7 @@
new /obj/item/clothing/shoes/black(src)
new /obj/item/device/radio/headset/headset_cargo(src)
new /obj/item/clothing/gloves/black(src)
new /obj/item/weapon/cartridge/quartermaster(src)
// new /obj/item/weapon/cartridge/quartermaster(src)
return
/obj/structure/closet/secure_closet/qm_personal
@@ -118,7 +118,7 @@
new /obj/item/device/t_scanner(src)
new /obj/item/weapon/storage/belt/utility/full(src)
new /obj/item/weapon/storage/toolbox/mechanical(src)
new /obj/item/weapon/cartridge/engineering(src)
// new /obj/item/weapon/cartridge/engineering(src)
new /obj/item/device/radio/headset/headset_eng(src)
new /obj/item/clothing/suit/hazardvest(src)
new /obj/item/clothing/mask/gas(src)
+1 -1
View File
@@ -86,7 +86,7 @@
new /obj/item/clothing/under/rank/medical/green(src)
if ("purple")
new /obj/item/clothing/under/rank/medical/purple(src)
new /obj/item/weapon/cartridge/medical(src)
// new /obj/item/weapon/cartridge/medical(src)
new /obj/item/device/radio/headset/headset_med(src)
return
+1 -1
View File
@@ -72,7 +72,7 @@
playsound(src.loc, 'blade1.ogg', 50, 1)
playsound(src.loc, "sparks", 50, 1)
for(var/mob/O in viewers(user, 3))
O.show_message(text("\blue The locker has been sliced open by [] with an energy blade!", user), 1, text("\red You hear metal being sliced and sparks flying."), 2)
O.show_message("\blue The locker has been sliced open by [user] with an energy blade!", 1, "\red You hear metal being sliced and sparks flying.", 2)
else
user << "\red Access Denied"
return
@@ -56,15 +56,15 @@
playsound(src.loc, 'blade1.ogg', 50, 1)
playsound(src.loc, "sparks", 50, 1)
for(var/mob/O in viewers(user, 3))
O.show_message(text("\blue The locker has been sliced open by [] with an energy blade!", user), 1, text("\red You hear metal being sliced and sparks flying."), 2)
O.show_message("\blue The locker has been sliced open by [user] with an energy blade!", 1, "\red You hear metal being sliced and sparks flying.", 2)
else
for(var/mob/O in viewers(user, 3))
O.show_message(text("\blue The locker has been broken by [] with an electromagnetic card!", user), 1, text("You hear a faint electrical spark."), 2)
O.show_message("\blue The locker has been broken by [user] with an electromagnetic card!", 1, "You hear a faint electrical spark.", 2)
else if(src.allowed(user))
src.locked = !src.locked
for(var/mob/O in viewers(user, 3))
if((O.client && !( O.blinded )))
O << text("\blue The locker has been []locked by [].", (src.locked ? null : "un"), user)
O << "\blue The locker has been [src.locked ? null : "un"]locked by [user]."
if(src.locked)
src.icon_state = src.icon_locked
else
+2 -2
View File
@@ -107,7 +107,7 @@
new /obj/item/device/flash(B)
new /obj/item/device/pda/security(src)
new /obj/item/clothing/suit/armor/vest(src)
new /obj/item/weapon/cartridge/security(src)
// new /obj/item/weapon/cartridge/security(src)
new /obj/item/device/radio/headset/headset_sec(src)
new /obj/item/weapon/storage/flashbang_kit(src)
new /obj/item/weapon/melee/baton(src)
@@ -140,7 +140,7 @@
new /obj/item/clothing/suit/armor/vest(src)
new /obj/item/clothing/suit/storage/gearharness(src)
new /obj/item/clothing/head/helmet(src)
new /obj/item/weapon/cartridge/security(src)
// new /obj/item/weapon/cartridge/security(src)
new /obj/item/device/pda/security(src)
new /obj/item/device/radio/headset/headset_sec(src)
new /obj/item/weapon/storage/belt/security(src)
+12 -3
View File
@@ -8,7 +8,8 @@
icon_state = "pda"
item_state = "electronic"
w_class = 1.0
flags = FPRINT | TABLEPASS | ONBELT
flags = FPRINT | TABLEPASS
slot_flags = SLOT_ID | SLOT_BELT
//Main variables
var/owner = null
@@ -134,8 +135,6 @@
/obj/item/device/pda/roboticist
icon_state = "pda-robot"
desc = "A portable microcomputer by Thinktronic Systems, LTD. This is model is a special edition with a transparent case."
note = "Congratulations, your station has chosen the Thinktronic 5230 Personal Data Assistant Deluxe Special Turbo Edition!"
/obj/item/device/pda/librarian
icon_state = "pda-libb"
@@ -143,6 +142,16 @@
note = "Congratulations, your station has chosen the Thinktronic 5290 WGW-11 Series E-reader and Personal Data Assistant!"
silent = 1 //Quiet in the library!
/obj/item/device/pda/atmos
icon_state = "pda-atmo"
/obj/item/device/pda/chemist
default_cartridge = /obj/item/weapon/cartridge/chemistry
icon_state = "pda-chem"
/obj/item/device/pda/geneticist
icon_state = "pda-gene"
/*
* The Actual PDA
*/
+7 -2
View File
@@ -41,6 +41,11 @@
icon_state = "cart-m"
access_medical = 1
chemistry
name = "ChemWhiz Cartridge"
icon_state = "cart-chem"
access_reagent_scanner = 1
security
name = "R.O.B.U.S.T. Cartridge"
icon_state = "cart-s"
@@ -91,7 +96,7 @@
name = "Signal Ace 2"
desc = "Complete with integrated radio signaler!"
icon_state = "cart-tox"
access_reagent_scanner = 1
// access_reagent_scanner = 1
New()
..()
@@ -154,7 +159,7 @@
name = "Signal Ace DELUXE"
icon_state = "cart-rd"
access_status_display = 1
access_reagent_scanner = 1
// access_reagent_scanner = 1
New()
..()
+2 -1
View File
@@ -4,7 +4,8 @@
icon_state = "aicard" // aicard-full
item_state = "electronic"
w_class = 2.0
flags = FPRINT | TABLEPASS | ONBELT
flags = FPRINT | TABLEPASS
slot_flags = SLOT_BELT
var/flush = null
origin_tech = "programming=4;materials=4"
+2 -1
View File
@@ -42,7 +42,8 @@
/obj/item/device/chameleon
name = "chameleon-projector"
icon_state = "shield0"
flags = FPRINT | TABLEPASS| CONDUCT | USEDELAY | ONBELT
flags = FPRINT | TABLEPASS| CONDUCT | USEDELAY
slot_flags = SLOT_BELT
item_state = "electronic"
throwforce = 5.0
throw_speed = 1
+2 -1
View File
@@ -6,7 +6,8 @@
icon_state = "flight0"
w_class = 2
item_state = "flight"
flags = FPRINT | ONBELT | TABLEPASS | CONDUCT
flags = FPRINT | TABLEPASS | CONDUCT
slot_flags = SLOT_BELT
m_amt = 50
g_amt = 20
var/on = 0
+2 -1
View File
@@ -4,7 +4,8 @@
icon_state = "pai"
item_state = "electronic"
w_class = 2.0
flags = FPRINT | TABLEPASS | ONBELT
flags = FPRINT | TABLEPASS
slot_flags = SLOT_BELT
origin_tech = "programming=2"
var/obj/item/device/radio/radio
var/looking_for_personality = 0
+65 -62
View File
@@ -14,7 +14,8 @@ MASS SPECTROMETER
desc = "A terahertz-ray emitter and scanner used to detect underfloor objects such as cables and pipes."
icon_state = "t-ray0"
var/on = 0
flags = FPRINT|ONBELT|TABLEPASS
flags = FPRINT | TABLEPASS
slot_flags = SLOT_BELT
w_class = 2
item_state = "electronic"
m_amt = 150
@@ -67,8 +68,8 @@ MASS SPECTROMETER
var/list/stored = list()
w_class = 3.0
item_state = "electronic"
flags = FPRINT | TABLEPASS | ONBELT | CONDUCT | USEDELAY
flags = FPRINT | TABLEPASS | CONDUCT | USEDELAY
slot_flags = SLOT_BELT
attackby(obj/item/weapon/f_card/W as obj, mob/user as mob)
..()
@@ -225,7 +226,8 @@ MASS SPECTROMETER
icon_state = "health"
item_state = "analyzer"
desc = "A hand-held body scanner able to distinguish vital signs of the subject."
flags = FPRINT | ONBELT | TABLEPASS | CONDUCT
flags = FPRINT | TABLEPASS | CONDUCT
slot_flags = SLOT_BELT
throwforce = 3
w_class = 1.0
throw_speed = 5
@@ -234,64 +236,64 @@ MASS SPECTROMETER
origin_tech = "magnets=1;biotech=1"
var/mode = 1;
proc
analyze_health_less_info(mob/living/carbon/M as mob, mob/user as mob)
var/fake_oxy = max(rand(1,40), M.getOxyLoss(), (300 - (M.getToxLoss() + M.getFireLoss() + M.getBruteLoss())))
if((M.reagents && M.reagents.has_reagent("zombiepowder")) || (M.changeling && M.changeling.changeling_fakedeath))
user.show_message(text("\blue Analyzing Results for []:\n\t Overall Status: []", M, "dead"), 1)
user.show_message(text("\blue \t Damage Specifics: []-[]-[]-[]", fake_oxy < 50 ? "\red [fake_oxy]" : fake_oxy , M.getToxLoss() > 50 ? "\red [M.getToxLoss()]" : M.getToxLoss(), M.getFireLoss() > 50 ? "\red[M.getFireLoss()]" : M.getFireLoss(), M.getBruteLoss() > 50 ? "\red[M.getBruteLoss()]" : M.getBruteLoss()), 1)
/obj/item/device/healthanalyzer/proc/analyze_health_less_info(mob/living/carbon/M as mob, mob/user as mob)
var/fake_oxy = max(rand(1,40), M.getOxyLoss(), (300 - (M.getToxLoss() + M.getFireLoss() + M.getBruteLoss())))
if((M.reagents && M.reagents.has_reagent("zombiepowder")) || (M.changeling && M.changeling.changeling_fakedeath))
user.show_message(text("\blue Analyzing Results for []:\n\t Overall Status: []", M, "dead"), 1)
user.show_message(text("\blue \t Damage Specifics: []-[]-[]-[]", fake_oxy < 50 ? "\red [fake_oxy]" : fake_oxy , M.getToxLoss() > 50 ? "\red [M.getToxLoss()]" : M.getToxLoss(), M.getFireLoss() > 50 ? "\red[M.getFireLoss()]" : M.getFireLoss(), M.getBruteLoss() > 50 ? "\red[M.getBruteLoss()]" : M.getBruteLoss()), 1)
else
user.show_message(text("\blue Analyzing Results for []:\n\t Overall Status: []", M, (M.stat > 1 ? "dead" : text("[]% healthy", M.health - M.halloss))), 1)
user.show_message(text("\blue \t Damage Specifics: []-[]-[]-[]", M.getOxyLoss() > 50 ? "\red [M.getOxyLoss()]" : M.getOxyLoss(), M.getToxLoss() > 50 ? "\red [M.getToxLoss()]" : M.getToxLoss(), M.getFireLoss() > 50 ? "\red[M.getFireLoss()]" : M.getFireLoss(), M.getBruteLoss() > 50 ? "\red[M.getBruteLoss()]" : M.getBruteLoss()), 1)
user.show_message("\blue Key: Suffocation/Toxin/Burns/Brute", 1)
user.show_message("\blue Body Temperature: [M.bodytemperature-T0C]&deg;C ([M.bodytemperature*1.8-459.67]&deg;F)", 1)
if(mode == 1 && istype(M, /mob/living/carbon/human))
var/mob/living/carbon/human/H = M
var/list/damaged = H.get_damaged_organs(1,1)
user.show_message("\blue Localized Damage, Brute/Burn:",1)
if(length(damaged)>0)
for(var/datum/organ/external/org in damaged)
user.show_message(text("\blue \t []: []\blue-[]",capitalize(org.getDisplayName()),(org.brute_dam > 0)?"\red [org.brute_dam]":0,(org.burn_dam > 0)?"\red [org.burn_dam]":0),1)
else
user.show_message("\blue \t Limbs are OK.",1)
if((M.changeling && M.changeling.changeling_fakedeath) || (M.reagents && M.reagents.has_reagent("zombiepowder")))
user.show_message(text("\blue [] | [] | [] | []", fake_oxy > 50 ? "\red Severe oxygen deprivation detected\blue" : "Subject bloodstream oxygen level normal", M.getToxLoss() > 50 ? "\red Dangerous amount of toxins detected\blue" : "Subject bloodstream toxin level minimal", M.getFireLoss() > 50 ? "\red Severe burn damage detected\blue" : "Subject burn injury status O.K", M.getBruteLoss() > 50 ? "\red Severe anatomical damage detected\blue" : "Subject brute-force injury status O.K"), 1)
else
user.show_message(text("\blue [] | [] | [] | []", M.getOxyLoss() > 50 ? "\red Severe oxygen deprivation detected\blue" : "Subject bloodstream oxygen level normal", M.getToxLoss() > 50 ? "\red Dangerous amount of toxins detected\blue" : "Subject bloodstream toxin level minimal", M.getFireLoss() > 50 ? "\red Severe burn damage detected\blue" : "Subject burn injury status O.K", M.getBruteLoss() > 50 ? "\red Severe anatomical damage detected\blue" : "Subject brute-force injury status O.K"), 1)
if (M.getCloneLoss())
user.show_message(text("\red Subject appears to have been imperfectly cloned."), 1)
for(var/datum/disease/D in M.viruses)
if(!D.hidden[SCANNER])
user.show_message(text("\red <b>Warning: [D.form] Detected</b>\nName: [D.name].\nType: [D.spread].\nStage: [D.stage]/[D.max_stages].\nPossible Cure: [D.cure]"))
if (M.reagents && M.reagents.get_reagent_amount("inaprovaline"))
user.show_message(text("\blue Bloodstream Analysis located [M.reagents:get_reagent_amount("inaprovaline")] units of rejuvenation chemicals."), 1)
if (M.getBrainLoss() >= 100 || istype(M, /mob/living/carbon/human) && M:brain_op_stage == 4.0)
user.show_message(text("\red Subject is brain dead."), 1)
else if (M.getBrainLoss() >= 60)
user.show_message(text("\red Severe brain damage detected. Subject likely to have mental retardation."), 1)
else if (M.getBrainLoss() >= 10)
user.show_message(text("\red Significant brain damage detected. Subject may have had a concussion."), 1)
if (M.virus2 || M.reagents.reagent_list.len > 0)
user.show_message(text("\red Unknown substance detected in blood."), 1)
if(ishuman(M))
var/mob/living/carbon/human/H = M
for(var/name in H.organs)
var/datum/organ/external/e = H.organs[name]
if(e.broken)
user.show_message(text("\red Bone fractures detected. Advanced scanner required for location."), 1)
break
if(ishuman(M))
if(M:vessel)
var/blood_volume = round(M:vessel.get_reagent_amount("blood"))
var/blood_percent = blood_volume / 560
blood_percent *= 100
if(blood_volume <= 448)
user.show_message("\red <b>Warning: Blood Level LOW: [blood_percent]% [blood_volume]cl")
else if(blood_volume <= 336)
user.show_message("\red <b>Warning: Blood Level CRITICAL: [blood_percent]% [blood_volume]cl")
else
user.show_message(text("\blue Analyzing Results for []:\n\t Overall Status: []", M, (M.stat > 1 ? "dead" : text("[]% healthy", M.health - M.halloss))), 1)
user.show_message(text("\blue \t Damage Specifics: []-[]-[]-[]", M.getOxyLoss() > 50 ? "\red [M.getOxyLoss()]" : M.getOxyLoss(), M.getToxLoss() > 50 ? "\red [M.getToxLoss()]" : M.getToxLoss(), M.getFireLoss() > 50 ? "\red[M.getFireLoss()]" : M.getFireLoss(), M.getBruteLoss() > 50 ? "\red[M.getBruteLoss()]" : M.getBruteLoss()), 1)
user.show_message("\blue Key: Suffocation/Toxin/Burns/Brute", 1)
user.show_message("\blue Body Temperature: [M.bodytemperature-T0C]&deg;C ([M.bodytemperature*1.8-459.67]&deg;F)", 1)
if(mode == 1 && istype(M, /mob/living/carbon/human))
var/mob/living/carbon/human/H = M
var/list/damaged = H.get_damaged_organs(1,1)
user.show_message("\blue Localized Damage, Brute/Burn:",1)
if(length(damaged)>0)
for(var/datum/organ/external/org in damaged)
user.show_message(text("\blue \t []: []\blue-[]",capitalize(org.getDisplayName()),(org.brute_dam > 0)?"\red [org.brute_dam]":0,(org.burn_dam > 0)?"\red [org.burn_dam]":0),1)
else
user.show_message("\blue \t Limbs are OK.",1)
if((M.changeling && M.changeling.changeling_fakedeath) || (M.reagents && M.reagents.has_reagent("zombiepowder")))
user.show_message(text("\blue [] | [] | [] | []", fake_oxy > 50 ? "\red Severe oxygen deprivation detected\blue" : "Subject bloodstream oxygen level normal", M.getToxLoss() > 50 ? "\red Dangerous amount of toxins detected\blue" : "Subject bloodstream toxin level minimal", M.getFireLoss() > 50 ? "\red Severe burn damage detected\blue" : "Subject burn injury status O.K", M.getBruteLoss() > 50 ? "\red Severe anatomical damage detected\blue" : "Subject brute-force injury status O.K"), 1)
else
user.show_message(text("\blue [] | [] | [] | []", M.getOxyLoss() > 50 ? "\red Severe oxygen deprivation detected\blue" : "Subject bloodstream oxygen level normal", M.getToxLoss() > 50 ? "\red Dangerous amount of toxins detected\blue" : "Subject bloodstream toxin level minimal", M.getFireLoss() > 50 ? "\red Severe burn damage detected\blue" : "Subject burn injury status O.K", M.getBruteLoss() > 50 ? "\red Severe anatomical damage detected\blue" : "Subject brute-force injury status O.K"), 1)
if (M.getCloneLoss())
user.show_message(text("\red Subject appears to have been imperfectly cloned."), 1)
for(var/datum/disease/D in M.viruses)
if(!D.hidden[SCANNER])
user.show_message(text("\red <b>Warning: [D.form] Detected</b>\nName: [D.name].\nType: [D.spread].\nStage: [D.stage]/[D.max_stages].\nPossible Cure: [D.cure]"))
if (M.reagents && M.reagents.get_reagent_amount("inaprovaline"))
user.show_message(text("\blue Bloodstream Analysis located [M.reagents:get_reagent_amount("inaprovaline")] units of rejuvenation chemicals."), 1)
if (M.getBrainLoss() >= 100 || istype(M, /mob/living/carbon/human) && M:brain_op_stage == 4.0)
user.show_message(text("\red Subject is brain dead."), 1)
else if (M.getBrainLoss() >= 60)
user.show_message(text("\red Severe brain damage detected. Subject likely to have mental retardation."), 1)
else if (M.getBrainLoss() >= 10)
user.show_message(text("\red Significant brain damage detected. Subject may have had a concussion."), 1)
if (M.virus2 || M.reagents.reagent_list.len > 0)
user.show_message(text("\red Unknown substance detected in blood."), 1)
if(ishuman(M))
var/mob/living/carbon/human/H = M
for(var/name in H.organs)
var/datum/organ/external/e = H.organs[name]
if(e.broken)
user.show_message(text("\red Bone fractures detected. Advanced scanner required for location."), 1)
break
if(ishuman(M))
if(M:vessel)
var/blood_volume = round(M:vessel.get_reagent_amount("blood"))
var/blood_percent = blood_volume / 560
blood_percent *= 100
if(blood_volume <= 448)
user.show_message("\red <b>Warning: Blood Level LOW: [blood_percent]% [blood_volume]cl")
else if(blood_volume <= 336)
user.show_message("\red <b>Warning: Blood Level CRITICAL: [blood_percent]% [blood_volume]cl")
else
user.show_message("\blue Blood Level Normal: [blood_percent]% [blood_volume]cl")
return
user.show_message("\blue Blood Level Normal: [blood_percent]% [blood_volume]cl")
return
/obj/item/device/healthanalyzer/attack(mob/M as mob, mob/user as mob)
if ((user.mutations & CLUMSY || user.getBrainLoss() >= 60) && prob(50))
@@ -331,7 +333,8 @@ MASS SPECTROMETER
icon_state = "atmos"
item_state = "analyzer"
w_class = 2.0
flags = FPRINT | TABLEPASS| CONDUCT | ONBELT
flags = FPRINT | TABLEPASS| CONDUCT
slot_flags = SLOT_BELT
throwforce = 5
throw_speed = 4
throw_range = 20
+1 -1
View File
@@ -18,7 +18,7 @@ would spawn and follow the beaker, even if it is carried or thrown.
icon = 'effects.dmi'
icon_state = "extinguish"
var/life = 15.0
flags = 2.0
flags = TABLEPASS
mouse_opacity = 0
/obj/effect/effect/smoke
+2 -1
View File
@@ -95,7 +95,8 @@
w_class = 1
throwforce = 2
var/candlecount = 5
flags = ONBELT | TABLEPASS
flags = TABLEPASS
slot_flags = SLOT_BELT
/obj/item/weapon/candlepack/update_icon()
+4 -25
View File
@@ -434,10 +434,10 @@ THERMAL GLASSES
M.disabilities &= ~1
..()
/obj/item/clothing/head/helmet/space/rig/engspace_helmet/attack_self()
/obj/item/clothing/head/helmet/space/engineer/attack_self()
toggle()
/obj/item/clothing/head/helmet/space/rig/engspace_helmet/verb/toggle()
/obj/item/clothing/head/helmet/space/engineer/verb/toggle()
set category = "Object"
set name = "Toggle Helmet Visor"
if(usr.canmove && usr.stat != 2 && !usr.restrained())
@@ -445,34 +445,13 @@ THERMAL GLASSES
src.up = !src.up
src.see_face = !src.see_face
src.flags |= HEADCOVERSEYES
icon_state = "engspace_helmet"
icon_state = "[initial(icon_state)]"
usr << "You toggle the reflective tint on."
else
src.up = !src.up
src.see_face = !src.see_face
src.flags &= ~HEADCOVERSEYES
icon_state = "engspace_helmet_clear"
usr << "You toggle the reflective tint off."
usr.update_clothing()
/obj/item/clothing/head/helmet/space/rig/cespace_helmet/attack_self()
toggle()
/obj/item/clothing/head/helmet/space/rig/cespace_helmet/verb/toggle()
set category = "Object"
set name = "Toggle Helmet Visor"
if(usr.canmove && usr.stat != 2 && !usr.restrained())
if(src.up)
src.up = !src.up
src.see_face = !src.see_face
src.flags |= HEADCOVERSEYES
icon_state = "cespace_helmet"
usr << "You toggle the reflective tint on."
else
src.up = !src.up
src.see_face = !src.see_face
src.flags &= ~HEADCOVERSEYES
icon_state = "cespace_helmet_clear"
icon_state = "[initial(icon_state)]_clear"
usr << "You toggle the reflective tint off."
usr.update_clothing()
+2 -1
View File
@@ -3,7 +3,8 @@
icon = 'robot_parts.dmi'
item_state = "buildpipe"
icon_state = "blank"
flags = FPRINT | ONBELT | TABLEPASS | CONDUCT
flags = FPRINT | TABLEPASS | CONDUCT
slot_flags = SLOT_BELT
var/construction_time = 100
var/list/construction_cost = list("metal"=20000,"glass"=5000)
+4 -1
View File
@@ -61,7 +61,8 @@
desc = "A heavy-duty, no fun allowed trash bag."
var/mode = 1; //0 = pick one at a time, 1 = pick all on tile
var/capacity = 25; //the number of trash it can carry.
flags = FPRINT | TABLEPASS | ONBELT
flags = FPRINT | TABLEPASS
slot_flags = SLOT_BELT
w_class = 2.0
/obj/item/weapon/trashbag/update_icon()
@@ -91,6 +92,7 @@
if(contents.len < capacity) //slightly redundant, but it makes it prettier in the chatbox. -Pete
user << "\blue You pick up all the trash."
for(var/obj/item/O in get_turf(W))
if(istype(O, /obj/item/weapon/disk/nuclear)) continue //No nuke disks - Nodrak
if(contents.len < capacity)
if(O.w_class <= 2)
contents += O;
@@ -100,6 +102,7 @@
else
user << "\blue The bag is full!"
else
if(istype(W, /obj/item/weapon/disk/nuclear)) return //No nuke disks - Nodrak
if(contents.len < capacity)
contents += W;
else
+2 -2
View File
@@ -42,7 +42,8 @@
icon_state = "camera"
item_state = "electropack"
w_class = 2.0
flags = 466.0
flags = FPRINT | CONDUCT | USEDELAY | TABLEPASS
slot_flags = SLOT_BELT
m_amt = 2000
throwforce = 5
throw_speed = 4
@@ -51,7 +52,6 @@
var/pictures_left = 30
var/can_use = 1
/obj/item/weapon/photo
name = "photo"
icon = 'items.dmi'
@@ -65,7 +65,8 @@ ZIPPO
icon_state = "matchbox"
item_state = "zippo"
w_class = 1
flags = ONBELT | TABLEPASS
flags = TABLEPASS
slot_flags = SLOT_BELT
var/matchcount = 10
w_class = 1.0
@@ -122,6 +123,7 @@ ZIPPO
var/lastHolder = null
var/smoketime = 300
var/butt_count = 5 //count of butt sprite variations
proc
light(var/flavor_text = "[usr] lights the [name].")
@@ -162,7 +164,6 @@ ZIPPO
processing_objects.Add(src)
process()
var/turf/location = get_turf(src)
src.smoketime--
@@ -251,6 +252,7 @@ ZIPPO
var/lastHolder = null
var/smoketime = 100
var/maxsmoketime = 100 //make sure this is equal to your smoketime
proc
light(var/flavor_text = "[usr] lights the [name].")
@@ -337,7 +339,8 @@ ZIPPO
item_state = "cigpacket"
w_class = 1
throwforce = 2
flags = ONBELT | TABLEPASS
flags = TABLEPASS
slot_flags = SLOT_BELT
var/cigcount = 6
@@ -381,7 +384,8 @@ ZIPPO
var/icon_off = "lighter-g"
w_class = 1
throwforce = 4
flags = ONBELT | TABLEPASS | CONDUCT
flags = TABLEPASS | CONDUCT
slot_flags = SLOT_BELT
var/lit = 0
/obj/item/weapon/lighter/zippo
@@ -409,16 +413,16 @@ ZIPPO
src.item_state = icon_on
if( istype(src,/obj/item/weapon/lighter/zippo) )
for(var/mob/O in viewers(user, null))
O.show_message(text("\red Without even breaking stride, [] flips open and lights [] in one smooth movement.", user, src), 1)
O.show_message(text("\red Without even breaking stride, \the [] flips open and lights \the [] in one smooth movement.", user, src), 1)
else
if(prob(75))
for(var/mob/O in viewers(user, null))
O.show_message("\red After a few attempts, [user] manages to light [src].", 1)
O.show_message("\red After a few attempts, \the [user] manages to light \the [src].", 1)
else
user << "\red <b>You burn yourself while lighting the lighter.</b>"
user.adjustFireLoss(5)
for(var/mob/O in viewers(user, null))
O.show_message("\red After a few attempts, [user] manages to light [src], they however burn their finger in the process.", 1)
O.show_message("\red After a few attempts, \the [user] manages to light \the [src], they however burn themself in the process.", 1)
user.total_luminosity += 2
processing_objects.Add(src)
@@ -471,4 +475,4 @@ ZIPPO
if(lit)
user.total_luminosity -= 2
src.sd_SetLuminosity(2)
return
return
+17 -10
View File
@@ -16,14 +16,17 @@ FLASHBANG
item_state = "emp"
throw_speed = 4
throw_range = 20
flags = FPRINT | TABLEPASS | CONDUCT | ONBELT
flags = FPRINT | TABLEPASS | CONDUCT
slot_flags = SLOT_BELT
origin_tech = "materials=2;magnets=3"
var/active = 0
var/det_time = 50
proc
prime()
clown_check(var/mob/living/user)
proc/prime()
return
proc/clown_check(var/mob/living/user)
return
afterattack(atom/target as mob|obj|turf|area, mob/user as mob)
if (istype(target, /obj/item/weapon/storage)) return ..() // Trying to put it in a full container
@@ -89,16 +92,21 @@ FLASHBANG
item_state = "flashbang"
throw_speed = 4
throw_range = 20
flags = FPRINT | TABLEPASS | CONDUCT | ONBELT
flags = FPRINT | TABLEPASS | CONDUCT
slot_flags = SLOT_BELT
origin_tech = "materials=2;combat=1"
var/active = 0
var/det_time = 30
var/banglet = 0
proc
bang(var/turf/T , var/mob/living/carbon/M)
prime()
clown_check(var/mob/living/user)
proc/bang(var/turf/T , var/mob/living/carbon/M)
return
proc/prime()
return
proc/clown_check(var/mob/living/user)
return
attackby(obj/item/weapon/W as obj, mob/user as mob)
if (isscrewdriver(W))
@@ -227,7 +235,6 @@ FLASHBANG
M << "\red Your ears start to ring!"
prime() // Prime now just handles the two loops that query for people in lockers and people who can see it.
var/turf/T = get_turf(src)
if(T)
T.hotspot_expose(700,125)
@@ -7,19 +7,29 @@
icon_state = "implant"
var/implanted = null
var/mob/imp_in = null
var/color = "b"
color = "b"
var/allow_reagents = 0
proc
trigger(emote, source as mob)
activate()
implanted(source as mob)
get_data()
hear(message, source as mob)
proc/trigger(emote, source as mob)
return
proc/activate()
return
proc/implanted(source as mob)
return
proc/get_data()
return
proc/hear(message, source as mob)
return
trigger(emote, source as mob)
return
activate()
return
@@ -38,6 +48,7 @@
implanted(source as mob)
return
get_data()
return "No information available"
@@ -449,4 +460,4 @@ the implant may become unstable and either pre-maturely inject the subject or si
usr << "You suddenly start seeing body temperatures of whoever is around you."
else
usr << "This implant is not compatible!"
return*/
return*/
@@ -6,7 +6,8 @@
name = "space cleaner"
icon_state = "cleaner"
item_state = "cleaner"
flags = ONBELT|TABLEPASS|OPENCONTAINER|FPRINT|USEDELAY
flags = TABLEPASS|OPENCONTAINER|FPRINT|USEDELAY
slot_flags = SLOT_BELT
throwforce = 3
w_class = 2.0
throw_speed = 2
@@ -117,7 +118,8 @@
name = "chem sprayer"
icon_state = "chemsprayer"
item_state = "chemsprayer"
flags = ONBELT|TABLEPASS|OPENCONTAINER|FPRINT|USEDELAY
flags = TABLEPASS|OPENCONTAINER|FPRINT|USEDELAY
slot_flags = SLOT_BELT
throwforce = 3
w_class = 3.0
throw_speed = 2
@@ -212,7 +214,6 @@
return
return
//Pepper spray, set up to make the 2 different types
/obj/item/weapon/pepperspray //This is riot control
@@ -221,7 +222,8 @@
name = "pepperspray"
icon_state = "pepperspray"
item_state = "pepperspray"
flags = ONBELT|TABLEPASS|FPRINT|USEDELAY
flags = TABLEPASS | FPRINT | USEDELAY
slot_flags = SLOT_BELT
throwforce = 3
w_class = 2.0
throw_speed = 2
@@ -236,7 +238,8 @@
name = "mace"
icon_state = "pepperspray"
item_state = "pepperspray"
flags = ONBELT|TABLEPASS|FPRINT|USEDELAY
flags = TABLEPASS | FPRINT | USEDELAY
slot_flags = SLOT_BELT
throwforce = 3
w_class = 1.0
throw_speed = 2
+1 -2
View File
@@ -63,14 +63,13 @@ var/global/list/cached_icons = list()
remover
paint_type = "remover"
/*
/obj/item/weapon/paint
name = "Paint Can"
desc = "Used to recolor floors and walls. Can not be removed by the janitor."
icon = 'items.dmi'
icon_state = "paint_neutral"
var/color = "FFFFFF"
color = "FFFFFF"
item_state = "paintcan"
w_class = 3.0
+2 -1
View File
@@ -7,7 +7,8 @@
name = "Plant Bag"
var/mode = 1; //0 = pick one at a time, 1 = pick all on tile
var/capacity = 50; //the number of plant pieces it can carry.
flags = FPRINT | TABLEPASS | ONBELT
flags = FPRINT | TABLEPASS
slot_flags = SLOT_BELT
w_class = 1
/obj/item/weapon/plantbag/attack_self(mob/user as mob)
+6 -4
View File
@@ -15,7 +15,8 @@ WELDINGTOOOL
desc = "A wrench with common uses. Can be found in your hand."
icon = 'items.dmi'
icon_state = "wrench"
flags = FPRINT | TABLEPASS| CONDUCT | ONBELT
flags = FPRINT | TABLEPASS| CONDUCT
slot_flags = SLOT_BELT
force = 5.0
throwforce = 7.0
w_class = 2.0
@@ -46,7 +47,8 @@ WELDINGTOOOL
name = "Welding Tool"
icon = 'items.dmi'
icon_state = "welder"
flags = FPRINT | TABLEPASS| CONDUCT | ONBELT
flags = FPRINT | TABLEPASS| CONDUCT
slot_flags = SLOT_BELT
force = 3.0
throwforce = 5.0
throw_speed = 1
@@ -225,7 +227,6 @@ WELDINGTOOOL
src.damtype = "brute"
src.icon_state = "welder"
src.welding = 0
return
eyecheck(mob/user as mob)
@@ -314,7 +315,8 @@ WELDINGTOOOL
desc = "This cuts wires."
icon = 'items.dmi'
icon_state = "cutters"
flags = FPRINT | TABLEPASS| CONDUCT | ONBELT
flags = FPRINT | TABLEPASS| CONDUCT
slot_flags = SLOT_BELT
force = 6.0
throw_speed = 2
throw_range = 9
+1 -1
View File
@@ -93,7 +93,7 @@
desc = "Truly, the weapon of a madman. Who would think to fight fire with an axe?"
force = 5
w_class = 4.0
flags = ONBACK
slot_flags = SLOT_BACK
force_unwielded = 5
force_wielded = 18
+2 -1
View File
@@ -55,7 +55,8 @@
item_state = "flashbang"
throw_speed = 4
throw_range = 20
flags = FPRINT | TABLEPASS | CONDUCT | ONBELT
flags = FPRINT | TABLEPASS | CONDUCT
slot_flags = SLOT_BELT
/obj/item/weapon/firbang/afterattack(atom/target as mob|obj|turf|area, mob/user as mob)
if (user.equipped() == src)
+2 -1
View File
@@ -8,7 +8,8 @@
m_amt = 10000
frequency = 1449
w_class = 5.0
flags = 323
flags = FPRINT | CONDUCT | TABLEPASS
slot_flags = SLOT_BACK
item_state = "electropack"
/obj/item/device/radio/electropack/examine()
+4 -2
View File
@@ -8,8 +8,10 @@
g_amt = 0
m_amt = 75
subspace_transmission = 1
protective_temperature = 0
canhear_range = 1 // can't hear headsets from very far away
slot_flags = SLOT_EARS
protective_temperature = 0
var/translate_binary = 0
var/translate_hive = 0
var/obj/item/device/encryptionkey/keyslot1 = null
@@ -246,4 +248,4 @@
src.name = "broken radio headset"
return
return
return
+7 -6
View File
@@ -26,7 +26,8 @@ var/GLOBAL_RADIO_TYPE = 1 // radio type to use
var/list/channels = list() //see communications.dm for full list. First channes is a "default" for :h
var/subspace_transmission = 0
// "Example" = FREQ_LISTENING|FREQ_BROADCASTING
flags = 450 // hello i'm a fucking idiot why is this 450?? CODE GODS PLEASE EXPLAIN~
flags = FPRINT | CONDUCT | TABLEPASS
slot_flags = SLOT_BELT
throw_speed = 2
throw_range = 9
w_class = 2
@@ -43,11 +44,11 @@ var/GLOBAL_RADIO_TYPE = 1 // radio type to use
/obj/item/device/radio
var/datum/radio_frequency/radio_connection
var/list/datum/radio_frequency/secure_radio_connections = new
proc
set_frequency(new_frequency)
radio_controller.remove_object(src, frequency)
frequency = new_frequency
radio_connection = radio_controller.add_object(src, frequency, RADIO_CHAT)
proc/set_frequency(new_frequency)
radio_controller.remove_object(src, frequency)
frequency = new_frequency
radio_connection = radio_controller.add_object(src, frequency, RADIO_CHAT)
+1
View File
@@ -47,6 +47,7 @@
return
/* Remove these comments to re-enable BoH BoH Singuloths.-Hawk.
if(istype(W, /obj/item/weapon/storage/backpack/holding) && !W.crit_fail)
investigate_log("has become a singularity. Caused by [user.key]","singulo")
user << "\red The Bluespace interfaces of the two devices catastrophically malfunction!"
del(W)
var/obj/machinery/singularity/singulo = new /obj/machinery/singularity (get_turf(src))
+2 -1
View File
@@ -4,7 +4,8 @@
icon = 'belts.dmi'
icon_state = "utilitybelt"
item_state = "utility"
flags = FPRINT | TABLEPASS | ONBELT
flags = FPRINT | TABLEPASS
slot_flags = SLOT_BELT
max_w_class = 3
max_combined_w_class = 21
+21
View File
@@ -1,6 +1,27 @@
obj/structure
icon = 'structures.dmi'
obj/structure/blob_act()
if(prob(50))
del(src)
obj/structure/ex_act(severity)
switch(severity)
if(1.0)
del(src)
return
if(2.0)
if(prob(50))
del(src)
return
if(3.0)
return
obj/structure/meteorhit(obj/O as obj)
del(src)
/obj/structure/girder
icon_state = "girder"
anchored = 1
+16 -16
View File
@@ -44,10 +44,10 @@ TABLE AND RACK OBJECT INTERATIONS
/obj/structure/table/attack_paw(mob/user as mob)
if ((usr.mutations & HULK))
usr << text("\blue You destroy the table.")
usr << "\blue You destroy the table."
for(var/mob/O in oviewers())
if ((O.client && !( O.blinded )))
O << text("\red [] smashes the table apart!", usr)
O << "\red [user] smashes the table apart!"
if(istype(src, /obj/structure/table/reinforced))
new /obj/item/weapon/table_parts/reinforced( src.loc )
else if(istype(src, /obj/structure/table/woodentable))
@@ -62,16 +62,16 @@ TABLE AND RACK OBJECT INTERATIONS
user.layer = TURF_LAYER
for(var/mob/O in oviewers())
if ((O.client && !( O.blinded )))
O << text("[] hides under the table!", user)
O << "[user] hides under the table!"
//Foreach goto(69)
return
/obj/structure/table/attack_alien(mob/user as mob) //Removed code for larva since it doesn't work. Previous code is now a larva ability. /N
usr << text("\green You destroy the table.")
usr << "\green You destroy the table."
for(var/mob/O in oviewers())
if ((O.client && !( O.blinded )))
O << text("\red [] slices the table apart!", user)
O << "\red [user] slices the table apart!"
if(istype(src, /obj/structure/table/reinforced))
new /obj/item/weapon/table_parts/reinforced( src.loc )
else if(istype(src, /obj/structure/table/woodentable))
@@ -85,10 +85,10 @@ TABLE AND RACK OBJECT INTERATIONS
/obj/structure/table/attack_animal(mob/living/simple_animal/user as mob) //Removed code for larva since it doesn't work. Previous code is now a larva ability. /N
if(user.wall_smash)
usr << text("\red You destroy the table.")
usr << "\red You destroy the table."
for(var/mob/O in oviewers())
if ((O.client && !( O.blinded )))
O << text("\red [] smashes the table apart!", user)
O << "\red [user] smashes the table apart!"
if(istype(src, /obj/structure/table/reinforced))
new /obj/item/weapon/table_parts/reinforced( src.loc )
else if(istype(src, /obj/structure/table/woodentable))
@@ -103,11 +103,11 @@ TABLE AND RACK OBJECT INTERATIONS
/obj/structure/table/attack_hand(mob/user as mob)
if (usr.mutations & HULK)
usr << text("\blue You destroy the table.")
if ((usr.mutations & HULK))
usr << "\blue You destroy the table."
for(var/mob/O in oviewers())
if ((O.client && !( O.blinded )))
O << text("\red [] smashes the table apart!", usr)
O << "\red [user] smashes the table apart!"
if(istype(src, /obj/structure/table/reinforced))
new /obj/item/weapon/table_parts/reinforced( src.loc )
else if(istype(src, /obj/structure/table/woodentable))
@@ -190,7 +190,7 @@ TABLE AND RACK OBJECT INTERATIONS
G.affecting.Weaken(5)
for(var/mob/O in viewers(world.view, src))
if (O.client)
O << text("\red [] puts [] on the table.", G.assailant, G.affecting)
O << "\red [G.assailant] puts [G.affecting] on the table."
del(W)
return
@@ -214,7 +214,7 @@ TABLE AND RACK OBJECT INTERATIONS
playsound(src.loc, 'blade1.ogg', 50, 1)
playsound(src.loc, "sparks", 50, 1)
for(var/mob/O in viewers(user, 4))
O.show_message(text("\blue The table was sliced apart by []!", user), 1, text("\red You hear metal coming apart."), 2)
O.show_message("\blue The table was sliced apart by [user]!", 1, "\red You hear metal coming apart.", 2)
new /obj/item/weapon/table_parts( src.loc )
del(src)
return
@@ -236,7 +236,7 @@ TABLE AND RACK OBJECT INTERATIONS
G.affecting.Weaken(5)
for(var/mob/O in viewers(world.view, src))
if (O.client)
O << text("\red [] puts [] on the wooden table.", G.assailant, G.affecting)
O << "\red [G.assailant] puts [G.affecting] on the wooden table."
del(W)
return
if (istype(W, /obj/item/weapon/wrench))
@@ -256,7 +256,7 @@ TABLE AND RACK OBJECT INTERATIONS
playsound(src.loc, 'blade1.ogg', 50, 1)
playsound(src.loc, "sparks", 50, 1)
for(var/mob/O in viewers(user, 4))
O.show_message(text("\blue The wooden table was sliced apart by []!", user), 1, text("\red You hear wood coming apart."), 2)
O.show_message("\blue The wooden table was sliced apart by [user]!", 1, "\red You hear wood coming apart.", 2)
new /obj/item/weapon/table_parts/wood( src.loc )
del(src)
return
@@ -278,7 +278,7 @@ TABLE AND RACK OBJECT INTERATIONS
G.affecting.Weaken(5)
for(var/mob/O in viewers(world.view, src))
if (O.client)
O << text("\red [] puts [] on the reinforced table.", G.assailant, G.affecting)
O << "\red [G.assailant] puts [G.affecting] on the reinforced table."
del(W)
return
@@ -326,7 +326,7 @@ TABLE AND RACK OBJECT INTERATIONS
playsound(src.loc, 'blade1.ogg', 50, 1)
playsound(src.loc, "sparks", 50, 1)
for(var/mob/O in viewers(user, 4))
O.show_message(text("\blue The reinforced table was sliced apart by []!", user), 1, text("\red You hear metal coming apart."), 2)
O.show_message("\blue The reinforced table was sliced apart by [user]!", 1, "\red You hear metal coming apart.", 2)
new /obj/item/weapon/table_parts/reinforced( src.loc )
del(src)
return
+5 -3
View File
@@ -5,7 +5,8 @@
var/datum/gas_mixture/air_contents = null
var/distribute_pressure = ONE_ATMOSPHERE
flags = FPRINT | TABLEPASS | CONDUCT | ONBACK
flags = FPRINT | TABLEPASS | CONDUCT
slot_flags = SLOT_BACK
pressure_resistance = ONE_ATMOSPHERE*5
@@ -34,7 +35,7 @@
set src in usr
..()
if(air_contents.oxygen < 1 && loc==usr)
usr << text("\red <B>The meter on the [src.name] indicates you are almost out of air!</B>")
usr << "\red <B>The meter on the [src.name] indicates you are almost out of air!</B>"
usr << sound('alert.ogg')
@@ -43,6 +44,7 @@
desc = "Contains dangerous plasma. Do not inhale."
icon_state = "plasma"
flags = FPRINT | TABLEPASS | CONDUCT
slot_flags = null //they have no straps!
/obj/item/weapon/tank/blob_act()
if(prob(50))
@@ -282,7 +284,7 @@
else
descriptive = "furiously hot"
usr << text("\blue \The \icon[][src] feels []", icon, descriptive)
usr << "\blue \The \icon[icon][src] feels [descriptive]"
return
+2 -1
View File
@@ -2,7 +2,8 @@
name = "emergency oxygen tank"
desc = "Used for emergencies. Contains very little oxygen, so try to conserve it until you actually need it."
icon_state = "emergency"
flags = FPRINT | TABLEPASS | ONBELT | CONDUCT
flags = FPRINT | TABLEPASS | CONDUCT
slot_flags = SLOT_BELT
w_class = 2.0
force = 4.0
distribute_pressure = ONE_ATMOSPHERE*O2STANDARD
+163 -178
View File
@@ -10,195 +10,180 @@
var/valve_open = 0
var/toggle = 1
proc
process_activation(var/obj/item/device/D)
/obj/item/device/transfer_valve/proc/process_activation(var/obj/item/device/D)
IsAssemblyHolder()
return 1
/obj/item/device/transfer_valve/IsAssemblyHolder()
return 1
attackby(obj/item/item, mob/user)
if(istype(item, /obj/item/weapon/tank))
if(tank_one && tank_two)
user << "<span class='warning'>There are already two tanks attached, remove one first.</span>"
return
/obj/item/device/transfer_valve/attackby(obj/item/item, mob/user)
if(istype(item, /obj/item/weapon/tank))
if(tank_one && tank_two)
user << "<span class='warning'>There are already two tanks attached, remove one first.</span>"
return
if(!tank_one)
tank_one = item
user.drop_item()
item.loc = src
user << "<span class='notice'>You attach the tank to the transfer valve.</span>"
else if(!tank_two)
tank_two = item
user.drop_item()
item.loc = src
user << "<span class='notice'>You attach the tank to the transfer valve.</span>"
if(!tank_one)
tank_one = item
user.drop_item()
item.loc = src
user << "<span class='notice'>You attach the tank to the transfer valve.</span>"
else if(!tank_two)
tank_two = item
user.drop_item()
item.loc = src
user << "<span class='notice'>You attach the tank to the transfer valve.</span>"
update_icon()
update_icon()
//TODO: Have this take an assemblyholder
else if(isassembly(item))
var/obj/item/device/assembly/A = item
if(A.secured)
user << "<span class='notice'>The device is secured.</span>"
return
if(attached_device)
user << "<span class='warning'>There is already an device attached to the valve, remove it first.</span>"
return
user.remove_from_mob(item)
attached_device = A
A.loc = src
user << "<span class='notice'>You attach the [item] to the valve controls and secure it.</span>"
A.holder = src
A.toggle_secure()
bombers += "[key_name(user)] attached a [item] to a transfer valve."
message_admins("[key_name_admin(user)] attached a [item] to a transfer valve.")
log_game("[key_name_admin(user)] attached a [item] to a transfer valve.")
attacher = key_name(user)
return
HasProximity(atom/movable/AM as mob|obj)
if(!attached_device) return
attached_device.HasProximity(AM)
return
attack_self(mob/user as mob)
user.machine = src
var/dat = {"<B> Valve properties: </B>
<BR> <B> Attachment one:</B> [tank_one] [tank_one ? "<A href='?src=\ref[src];tankone=1'>Remove</A>" : ""]
<BR> <B> Attachment two:</B> [tank_two] [tank_two ? "<A href='?src=\ref[src];tanktwo=1'>Remove</A>" : ""]
<BR> <B> Valve attachment:</B> [attached_device ? "<A href='?src=\ref[src];device=1'>[attached_device]</A>" : "None"] [attached_device ? "<A href='?src=\ref[src];rem_device=1'>Remove</A>" : ""]
<BR> <B> Valve status: </B> [ valve_open ? "<A href='?src=\ref[src];open=1'>Closed</A> <B>Open</B>" : "<B>Closed</B> <A href='?src=\ref[src];open=1'>Open</A>"]"}
user << browse(dat, "window=trans_valve;size=600x300")
onclose(user, "trans_valve")
return
Topic(href, href_list)
..()
if ( usr.stat || usr.restrained() )
else if(isassembly(item))
var/obj/item/device/assembly/A = item
if(A.secured)
user << "<span class='notice'>The device is secured.</span>"
return
if (src.loc == usr)
if(tank_one && href_list["tankone"])
split_gases()
valve_open = 0
tank_one.loc = get_turf(src)
tank_one = null
update_icon()
else if(tank_two && href_list["tanktwo"])
split_gases()
valve_open = 0
tank_two.loc = get_turf(src)
tank_two = null
update_icon()
else if(href_list["open"])
toggle_valve()
else if(attached_device)
if(href_list["rem_device"])
attached_device.loc = get_turf(src)
attached_device:holder = null
attached_device = null
update_icon()
if(href_list["device"])
attached_device.attack_self(usr)
src.attack_self(usr)
src.add_fingerprint(usr)
return
return
process_activation(var/obj/item/device/D)
if(toggle)
toggle = 0
toggle_valve()
spawn(50) // To stop a signal being spammed from a proxy sensor constantly going off or whatever
toggle = 1
process()
update_icon()
src.overlays = new/list()
src.underlays = new/list()
if(!tank_one && !tank_two && !attached_device)
icon_state = "valve_1"
return
icon_state = "valve"
var/tank_one_icon = ""
var/tank_two_icon = ""
if(tank_one)
tank_one_icon = tank_one.icon_state
if(tank_two)
tank_two_icon = tank_two.icon_state
if(tank_one)
var/icon/I = new(src.icon, icon_state = "[tank_one_icon]")
//var/obj/effect/overlay/tank_one_overlay = new
//tank_one_overlay.icon = src.icon
//tank_one_overlay.icon_state = tank_one_icon
src.underlays += I
if(tank_two)
var/icon/J = new(src.icon, icon_state = "[tank_two_icon]")
//I.Flip(EAST) this breaks the perspective!
J.Shift(WEST, 13)
//var/obj/underlay/tank_two_overlay = new
//tank_two_overlay.icon = I
src.underlays += J
if(attached_device)
var/icon/K = new(src.icon, icon_state = "device")
//var/obj/effect/overlay/device_overlay = new
//device_overlay.icon = src.icon
//device_overlay.icon_state = device_icon
src.overlays += K
proc
merge_gases()
tank_two.air_contents.volume += tank_one.air_contents.volume
var/datum/gas_mixture/temp
temp = tank_one.air_contents.remove_ratio(1)
tank_two.air_contents.merge(temp)
split_gases()
if (!valve_open || !tank_one || !tank_two)
return
var/ratio1 = tank_one.air_contents.volume/tank_two.air_contents.volume
var/datum/gas_mixture/temp
temp = tank_two.air_contents.remove_ratio(ratio1)
tank_one.air_contents.merge(temp)
tank_two.air_contents.volume -= tank_one.air_contents.volume
/*
Exadv1: I know this isn't how it's going to work, but this was just to check
it explodes properly when it gets a signal (and it does).
*/
toggle_valve()
if(valve_open==0 && (tank_one && tank_two))
valve_open = 1
var/turf/bombturf = get_turf(src)
var/bombarea = bombturf.loc.name
var/log_str = "Bomb valve opened in [bombarea] with device attacher: [attacher]. Last touched by: [src.fingerprintslast]"
bombers += log_str
message_admins(log_str)
log_game(log_str)
merge_gases()
spawn(20) // In case one tank bursts
for (var/i=0,i<5,i++)
src.update_icon()
sleep(10)
src.update_icon()
else if(valve_open==1 && (tank_one && tank_two))
split_gases()
valve_open = 0
src.update_icon()
// this doesn't do anything but the timer etc. expects it to be here
// eventually maybe have it update icon to show state (timer, prox etc.) like old bombs
c_state()
user << "<span class='warning'>There is already an device attached to the valve, remove it first.</span>"
return
user.remove_from_mob(item)
attached_device = A
A.loc = src
user << "<span class='notice'>You attach the [item] to the valve controls and secure it.</span>"
A.holder = src
A.toggle_secure()
bombers += "[key_name(user)] attached a [item] to a transfer valve."
message_admins("[key_name_admin(user)] attached a [item] to a transfer valve.")
log_game("[key_name_admin(user)] attached a [item] to a transfer valve.")
attacher = key_name(user)
return
/obj/item/device/transfer_valve/HasProximity(atom/movable/AM as mob|obj)
if(!attached_device) return
attached_device.HasProximity(AM)
return
/obj/item/device/transfer_valve/attack_self(mob/user as mob)
user.machine = src
var/dat = {"<B> Valve properties: </B>
<BR> <B> Attachment one:</B> [tank_one] [tank_one ? "<A href='?src=\ref[src];tankone=1'>Remove</A>" : ""]
<BR> <B> Attachment two:</B> [tank_two] [tank_two ? "<A href='?src=\ref[src];tanktwo=1'>Remove</A>" : ""]
<BR> <B> Valve attachment:</B> [attached_device ? "<A href='?src=\ref[src];device=1'>[attached_device]</A>" : "None"] [attached_device ? "<A href='?src=\ref[src];rem_device=1'>Remove</A>" : ""]
<BR> <B> Valve status: </B> [ valve_open ? "<A href='?src=\ref[src];open=1'>Closed</A> <B>Open</B>" : "<B>Closed</B> <A href='?src=\ref[src];open=1'>Open</A>"]"}
user << browse(dat, "window=trans_valve;size=600x300")
onclose(user, "trans_valve")
return
/obj/item/device/transfer_valve/Topic(href, href_list)
..()
if ( usr.stat || usr.restrained() )
return
if (src.loc == usr)
if(tank_one && href_list["tankone"])
split_gases()
valve_open = 0
tank_one.loc = get_turf(src)
tank_one = null
update_icon()
else if(tank_two && href_list["tanktwo"])
split_gases()
valve_open = 0
tank_two.loc = get_turf(src)
tank_two = null
update_icon()
else if(href_list["open"])
toggle_valve()
else if(attached_device)
if(href_list["rem_device"])
attached_device.loc = get_turf(src)
attached_device:holder = null
attached_device = null
update_icon()
if(href_list["device"])
attached_device.attack_self(usr)
src.attack_self(usr)
src.add_fingerprint(usr)
return
return
/obj/item/device/transfer_valve/process_activation(var/obj/item/device/D)
if(toggle)
toggle = 0
toggle_valve()
spawn(50) // To stop a signal being spammed from a proxy sensor constantly going off or whatever
toggle = 1
/obj/item/device/transfer_valve/process()
return
/obj/item/device/transfer_valve/update_icon()
overlays = null
underlays = null
if(!tank_one && !tank_two && !attached_device)
icon_state = "valve_1"
return
icon_state = "valve"
if(tank_one)
overlays += "[tank_one.icon_state]"
if(tank_two)
var/icon/J = new(icon, icon_state = "[tank_two.icon_state]")
J.Shift(WEST, 13)
underlays += J
if(attached_device)
overlays += "device"
/obj/item/device/transfer_valve/proc/merge_gases()
tank_two.air_contents.volume += tank_one.air_contents.volume
var/datum/gas_mixture/temp
temp = tank_one.air_contents.remove_ratio(1)
tank_two.air_contents.merge(temp)
/obj/item/device/transfer_valve/proc/split_gases()
if (!valve_open || !tank_one || !tank_two)
return
var/ratio1 = tank_one.air_contents.volume/tank_two.air_contents.volume
var/datum/gas_mixture/temp
temp = tank_two.air_contents.remove_ratio(ratio1)
tank_one.air_contents.merge(temp)
tank_two.air_contents.volume -= tank_one.air_contents.volume
/*
Exadv1: I know this isn't how it's going to work, but this was just to check
it explodes properly when it gets a signal (and it does).
*/
/obj/item/device/transfer_valve/proc/toggle_valve()
if(valve_open==0 && (tank_one && tank_two))
valve_open = 1
var/turf/bombturf = get_turf(src)
var/bombarea = bombturf.loc.name
var/log_str = "Bomb valve opened in [bombarea] with device attacher: [attacher]. Last touched by: [src.fingerprintslast]"
bombers += log_str
message_admins(log_str)
log_game(log_str)
merge_gases()
spawn(20) // In case one tank bursts
for (var/i=0,i<5,i++)
src.update_icon()
sleep(10)
src.update_icon()
else if(valve_open==1 && (tank_one && tank_two))
split_gases()
valve_open = 0
src.update_icon()
// this doesn't do anything but the timer etc. expects it to be here
// eventually maybe have it update icon to show state (timer, prox etc.) like old bombs
/obj/item/device/transfer_valve/proc/c_state()
return
/obj/structure/falsewall/
/obj/structure/falsewall
attack_hand(mob/user as mob)
if(density)
// Open wall
+2 -1
View File
@@ -312,7 +312,8 @@ A list of items and costs is stored under the datum of every game mode, alongsid
var/temp = null //Temporary storage area for a message offering the option to destroy the radio
var/selfdestruct = 0 //Set to 1 while the radio is self destructing itself.
var/obj/item/device/radio/origradio = null
flags = FPRINT | TABLEPASS | CONDUCT | ONBELT
flags = FPRINT | TABLEPASS | CONDUCT
slot_flags = SLOT_BELT
w_class = 2.0
item_state = "radio"
throwforce = 5
+96 -16
View File
@@ -1,4 +1,4 @@
//todo: flushing, flushing heads, showers actually cleaning people
//todo: toothbrushes, and some sort of "toilet-filthinator" for the hos
/obj/structure/toilet
name = "toilet"
@@ -8,18 +8,43 @@
density = 0
anchored = 1
var/open = 0
var/mob/swirlie = null
/obj/structure/toilet/New()
open = round(rand(0, 1))
update_icon()
/obj/structure/toilet/attack_hand()
open = !open
update_icon()
if(!swirlie)
open = !open
update_icon()
else
usr.visible_message("<span class='danger'>[usr] slams the toilet seat onto [swirlie.name]'s head!</span>", "<span class='notice'>You slam the toilet seat onto [swirlie.name]'s head!</span>", "You hear reverberating porcelain.")
swirlie.adjustBruteLoss(8)
/obj/structure/toilet/update_icon()
icon_state = "toilet[open]"
/obj/structure/toilet/attackby(var/obj/item/I, var/mob/user)
if(istype(I, /obj/item/weapon/grab))
var/obj/item/weapon/grab/G = I
var/mob/GM = G.affecting
if(ismob(G.affecting))
if(G.state>1 && GM.loc == get_turf(src))
if(open && !swirlie)
user.visible_message("<span class='danger'>[user] starts to give [GM.name] a swirlie!</span>", "<span class='notice'>You start to give [GM.name] a swirlie!</span>")
swirlie = GM
if(do_after(user, 30, 5, 0))
user.visible_message("<span class='danger'>[user] gives [GM.name] a swirlie!</span>", "<span class='notice'>You give [GM.name] a swirlie!</span>", "You hear a toilet flushing.")
if(!GM.internal)
GM.adjustOxyLoss(5)
swirlie = null
else
user.visible_message("<span class='danger'>[user] slams [GM.name] into the [src]!</span>", "<span class='notice'>You slam [GM.name] into the [src]!</span>")
GM.adjustBruteLoss(8)
else
user << "<span class='notice'>You need a tighter grip.</span>"
/obj/structure/urinal
@@ -30,9 +55,20 @@
density = 0
anchored = 1
/obj/structure/urinal/attackby(var/obj/item/I, var/mob/user)
if(istype(I, /obj/item/weapon/grab))
var/obj/item/weapon/grab/G = I
var/mob/GM = G.affecting
if(ismob(G.affecting))
if(G.state>1 && GM.loc == get_turf(src))
user.visible_message("<span class='danger'>[user] slams [GM.name] into the [src]!</span>", "<span class='notice'>You slam [GM.name] into the [src]!</span>")
GM.adjustBruteLoss(8)
else
user << "<span class='notice'>You need a tighter grip.</span>"
/obj/structure/shower
/obj/machinery/shower
name = "shower"
desc = "The HS-451. Installed in the 2550s by the Nanotrasen Hygiene Division."
icon = 'watercloset.dmi'
@@ -41,7 +77,9 @@
anchored = 1
var/on = 0
var/obj/effect/mist/mymist = null
var/ismist = 0 //needs a var so we can make it linger~
var/ismist = 0 //needs a var so we can make it linger~
var/watertemp = "normal" //freezing, normal, or boiling
var/mobpresent = 0 //true if there is a mob on the shower's loc, this is to ease process()
//add heat controls? when emagged, you can freeze to death in it?
@@ -52,22 +90,37 @@
layer = MOB_LAYER + 1
mouse_opacity = 0
/obj/structure/shower/attack_hand(mob/M as mob)
/obj/machinery/shower/attack_hand(mob/M as mob)
on = !on
update_icon()
if(on && M.loc == loc)
wash(M)
check_heat(M)
/obj/structure/shower/attackby(mob/M as mob)
attack_hand(M)
/obj/machinery/shower/attackby(var/obj/item/I, var/mob/user)
if(I.type == /obj/item/device/analyzer)
user << "<span class='notice'>The water temperature seems to be [watertemp].</span>"
if(istype(I, /obj/item/weapon/wrench))
user << "<span class='notice'>You begin to adjust the temperature valve with the [I].</span>"
if(do_after(user, 50))
switch(watertemp)
if("normal")
watertemp = "freezing"
if("freezing")
watertemp = "boiling"
if("boiling")
watertemp = "normal"
user.visible_message("<span class='notice'>[user] adjusts the shower with the [I].</span>", "<span class='notice'>You adjust the shower with the [I].</span>")
/obj/structure/shower/update_icon()
overlays = null
/obj/machinery/shower/update_icon() //this is terribly unreadable, but basically it makes the shower mist up
overlays = null //once it's been on for a while, in addition to handling the water overlay.
if(mymist)
del(mymist)
if(on)
overlays += image('watercloset.dmi', src, "water", MOB_LAYER + 1, dir)
if(watertemp == "freezing")
return
if(!ismist)
spawn(50)
if(src && on)
@@ -84,13 +137,20 @@
del(mymist)
ismist = 0
/obj/structure/shower/HasEntered(atom/movable/O as obj|mob)
/obj/machinery/shower/HasEntered(atom/movable/O)
..()
wash(O)
if(ismob(O))
mobpresent += 1
check_heat(O)
/obj/machinery/shower/Uncrossed(atom/movable/O)
if(ismob(O))
mobpresent -= 1
..()
//Yes, showers are super powerful as far as washing goes.
/obj/structure/shower/proc/wash(atom/movable/O as obj|mob)
..()
/obj/machinery/shower/proc/wash(atom/movable/O as obj|mob)
if(!on) return
O.clean_blood()
@@ -108,10 +168,10 @@
var/mob/living/carbon/human/washer = O
if(washer.head)
washer.head.clean_blood()
if(washer.w_uniform)
washer.w_uniform.clean_blood()
if(washer.wear_suit)
washer.wear_suit.clean_blood()
else if(washer.w_uniform)
washer.w_uniform.clean_blood()
if(washer.shoes)
washer.shoes.clean_blood()
if(washer.gloves)
@@ -129,6 +189,26 @@
for(var/obj/effect/overlay/R in tile)
del(R)
/obj/machinery/shower/process()
if(!on || !mobpresent) return
for(var/mob/living/carbon/C in loc)
check_heat(C)
/obj/machinery/shower/proc/check_heat(mob/M as mob)
if(!on || watertemp == "normal") return
if(iscarbon(M))
var/mob/living/carbon/C = M
if(watertemp == "freezing")
C.bodytemperature = min(100, C.bodytemperature - 80)
C << "<span class='warning'>The water is freezing!</span>"
return
if(watertemp == "boiling")
C.bodytemperature = max(500, C.bodytemperature + 35)
C.adjustFireLoss(10)
C << "<span class='danger'>The water is searing!</span>"
return
/obj/item/weapon/bikehorn/rubberducky
@@ -177,7 +257,7 @@
else
C.clean_blood() //other things that can't wear gloves should just wash the mob.
for(var/mob/V in viewers(src, null))
V.show_message(text("\blue [M] washes their hands using \the [src]."))
V.show_message("\blue [M] washes their hands using \the [src].")
/obj/structure/sink/attackby(var/obj/item/O as obj, var/mob/user as mob)
if(busy)
+5 -5
View File
@@ -82,7 +82,7 @@
if(istype(M, /mob/living/carbon/human) || istype(M, /mob/living/carbon/monkey))
for(var/mob/O in viewers(world.view, src.loc))
O << text("<font color='red'>[M] triggered the \icon[] [src]</font>", src)
O << "<font color='red'>[M] triggered the \icon[src] [src]</font>"
triggered = 1
call(src,triggerproc)(M)
@@ -162,7 +162,7 @@
for(var/mob/O in viewers(user, null))
if(O == user)
continue
O.show_message(text("\red <B>[user] accidentally sets off the mousetrap, breaking their fingers.</B>"), 1)
O.show_message("\red <B>[user] accidentally sets off the mousetrap, breaking their fingers.</B>", 1)
return
user << "\blue You disarm the mousetrap."
armed = !armed
@@ -179,7 +179,7 @@
for(var/mob/O in viewers(user, null))
if(O == user)
continue
O.show_message(text("\red <B>[user] accidentally sets off the mousetrap, breaking their fingers.</B>"), 1)
O.show_message("\red <B>[user] accidentally sets off the mousetrap, breaking their fingers.</B>", 1)
return
..()
@@ -192,12 +192,12 @@
for(var/mob/O in viewers(H, null))
if(O == H)
continue
O.show_message(text("\red <B>[H] accidentally steps on the mousetrap.</B>"), 1)
O.show_message("\red <B>[H] accidentally steps on the mousetrap.</B>", 1)
..()
/obj/item/weapon/mousetrap/hitby(A as mob|obj)
if(!armed)
return ..()
for(var/mob/O in viewers(src, null))
O.show_message(text("\red <B>The mousetrap is triggered by [A].</B>"), 1)
O.show_message("\red <B>The mousetrap is triggered by [A].</B>", 1)
src.triggered(null)
+19 -17
View File
@@ -68,7 +68,7 @@
..()
for(var/mob/O in viewers(src, null))
O.show_message(text("\red <B>[src] was hit by [AM].</B>"), 1)
O.show_message("\red <B>[src] was hit by [AM].</B>", 1)
var/tforce = 0
if(ismob(AM))
tforce = 40
@@ -90,12 +90,14 @@
..()
return
//These all need to be rewritten to use visiblemessage()
/obj/structure/window/attack_hand()
if ((usr.mutations & HULK))
usr << text("\blue You smash through the window.")
usr << "\blue You smash through the window."
for(var/mob/O in oviewers())
if ((O.client && !( O.blinded )))
O << text("\red [] smashes through the window!", usr)
O << "\red [usr] smashes through the window!"
src.health = 0
new /obj/item/weapon/shard( src.loc )
if(reinf) new /obj/item/stack/rods( src.loc)
@@ -112,10 +114,10 @@
/obj/structure/window/attack_paw()
if ((usr.mutations & HULK))
usr << text("\blue You smash through the window.")
usr << "\blue You smash through the window."
for(var/mob/O in oviewers())
if ((O.client && !( O.blinded )))
O << text("\red [] smashes through the window!", usr)
O << "\red [usr] smashes through the window!"
src.health = 0
new /obj/item/weapon/shard( src.loc )
if(reinf) new /obj/item/stack/rods( src.loc)
@@ -126,17 +128,17 @@
/obj/structure/window/attack_alien()
if (istype(usr, /mob/living/carbon/alien/larva))//Safety check for larva. /N
return
usr << text("\green You smash against the window.")
usr << "\green You smash against the window."
for(var/mob/O in oviewers())
if ((O.client && !( O.blinded )))
O << text("\red [] smashes against the window.", usr)
O << "\red [usr] smashes against the window."
playsound(src.loc, 'Glasshit.ogg', 100, 1)
src.health -= 15
if(src.health <= 0)
usr << text("\green You smash through the window.")
usr << "\green You smash through the window."
for(var/mob/O in oviewers())
if ((O.client && !( O.blinded )))
O << text("\red [] smashes through the window!", usr)
O << "\red [usr] smashes through the window!"
src.health = 0
new /obj/item/weapon/shard(src.loc)
if(reinf)
@@ -150,17 +152,17 @@
/obj/structure/window/attack_animal(mob/living/simple_animal/M as mob)
if (M.melee_damage_upper == 0)
return
M << text("\green You smash against the window.")
M << "\green You smash against the window."
for(var/mob/O in viewers(src, null))
if ((O.client && !( O.blinded )))
O << text("\red [] smashes against the window.", M)
O << "\red [M] smashes against the window."
playsound(src.loc, 'Glasshit.ogg', 100, 1)
src.health -= M.melee_damage_upper
if(src.health <= 0)
M << text("\green You smash through the window.")
M << "\green You smash through the window."
for(var/mob/O in viewers(src, null))
if ((O.client && !( O.blinded )))
O << text("\red [] smashes through the window!", M)
O << "\red [M] smashes through the window!"
src.health = 0
new /obj/item/weapon/shard(src.loc)
if(reinf)
@@ -174,17 +176,17 @@
if(!istype(usr, /mob/living/carbon/metroid/adult))
return
usr<< text("\green You smash against the window.")
usr<< "\green You smash against the window."
for(var/mob/O in oviewers())
if ((O.client && !( O.blinded )))
O << text("\red [] smashes against the window.", usr)
O << "\red [usr] smashes against the window."
playsound(src.loc, 'Glasshit.ogg', 100, 1)
src.health -= rand(10,15)
if(src.health <= 0)
usr << text("\green You smash through the window.")
usr << "\green You smash through the window."
for(var/mob/O in oviewers())
if ((O.client && !( O.blinded )))
O << text("\red [] smashes through the window!", usr)
O << "\red [usr] smashes through the window!"
src.health = 0
new /obj/item/weapon/shard(src.loc)
if(reinf)
+21 -17
View File
@@ -3,10 +3,11 @@
atom/var/list/suit_fibers
atom/proc/add_fibers(mob/living/carbon/human/M)
if(M.gloves)
if(M.gloves.transfer_blood) //bloodied gloves transfer blood to touched objects
if(add_blood(M.gloves.bloody_hands_mob)) //only reduces the bloodiness of our gloves if the item wasn't already bloody
M.gloves.transfer_blood--
if(M.gloves && istype(M.gloves,/obj/item/clothing/))
var/obj/item/clothing/gloves/G = M.gloves
if(G.transfer_blood) //bloodied gloves transfer blood to touched objects
if(add_blood(G.bloody_hands_mob)) //only reduces the bloodiness of our gloves if the item wasn't already bloody
G.transfer_blood--
else if(M.bloody_hands)
if(add_blood(M.bloody_hands_mob))
M.bloody_hands--
@@ -618,10 +619,11 @@ turf/Exited(mob/living/carbon/human/M)
M.track_blood--
src.add_bloody_footprints(M.track_blood_mob,1,M.dir,get_tracks(M),M.track_blood_type)
else if(istype(M,/mob/living/carbon/human))
if(M.shoes)
if(M.shoes.track_blood > 0)
M.shoes.track_blood--
src.add_bloody_footprints(M.shoes.track_blood_mob,1,M.dir,M.shoes.name,M.shoes.track_blood_type) // And bloody tracks end here
if(M.shoes && istype(M.shoes,/obj/item/clothing/shoes))
var/obj/item/clothing/shoes/S = M.shoes
if(S.track_blood > 0)
S.track_blood--
src.add_bloody_footprints(S.track_blood_mob,1,M.dir,S.name,S.track_blood_type) // And bloody tracks end here
. = ..()
turf/Entered(mob/living/carbon/human/M)
if(istype(M,/mob/living) && !istype(M,/mob/living/carbon/metroid))
@@ -636,10 +638,11 @@ turf/Entered(mob/living/carbon/human/M)
M.track_blood--
src.add_bloody_footprints(M.track_blood_mob,0,M.dir,get_tracks(M),M.track_blood_type)
else if(istype(M,/mob/living/carbon/human))
if(M.shoes && !istype(src,/turf/space))
if(M.shoes.track_blood > 0)
M.shoes.track_blood--
src.add_bloody_footprints(M.shoes.track_blood_mob,0,M.dir,M.shoes.name,M.shoes.track_blood_type)
if(M.shoes && istype(M.shoes,/obj/item/clothing/shoes) && !istype(src,/turf/space))
var/obj/item/clothing/shoes/S = M.shoes
if(S.track_blood > 0)
S.track_blood--
src.add_bloody_footprints(S.track_blood_mob,0,M.dir,S.name,S.track_blood_type)
for(var/obj/effect/decal/cleanable/B in src)
@@ -654,11 +657,12 @@ turf/Entered(mob/living/carbon/human/M)
track_type = "oil"
if(istype(M,/mob/living/carbon/human))
if(M.shoes)
M.shoes.add_blood(B.blood_owner)
M.shoes.track_blood_mob = B.blood_owner
M.shoes.track_blood = max(M.shoes.track_blood,8)
M.shoes.track_blood_type = track_type
if(M.shoes && istype(M.shoes,/obj/item/clothing/shoes))
var/obj/item/clothing/shoes/S = M.shoes
S.add_blood(B.blood_owner)
S.track_blood_mob = B.blood_owner
S.track_blood = max(S.track_blood,8)
S.track_blood_type = track_type
else
M.add_blood(B.blood_owner)
M.track_blood_mob = B.blood_owner
+43
View File
@@ -0,0 +1,43 @@
//By Carnwennan
//This system was made as an alternative to all the in-game lists and variables used to log stuff in-game.
//lists and variables are great. However, they have several major flaws:
//Firstly, they use memory. TGstation has one of the highest memory usage of all the ss13 branches.
//Secondly, they are usually stored in an object. This means that they aren't centralised. It also means that
//the data is lost when the object is deleted! This is especially annoying for things like the singulo engine!
#define INVESTIGATE_DIR "data/investigate/"
//SYSTEM
/proc/investigate_subject2file(var/subject)
switch(subject)
if("singulo")
return file("[INVESTIGATE_DIR]singulo.html")
if("silicon")
return file("[INVESTIGATE_DIR]silicon.html")
else
return
/proc/investigate_reset()
if(fdel(INVESTIGATE_DIR)) return 1
return 0
/atom/proc/investigate_log(var/message, var/subject)
if(!message) return
var/F = investigate_subject2file(subject)
if(!F) return
F << "<small>[time2text(world.timeofday,"hh:mm")] \ref[src] ([x],[y],[z])</small> || [src] [message]<br>"
//ADMINVERBS
/client/proc/investigate_show( subject in list("singulo","silicon") )
set name = "Investigate"
set category = "Admin"
if(!holder) return
var/F = investigate_subject2file(subject)
if(!F)
src << "<font color='red'>Error: admin_investigate: [INVESTIGATE_DIR][subject] is an invalid path or cannot be accessed.</font>"
return
src << browse(F,"window=investigate;size=800x300")
+3 -1
View File
@@ -105,6 +105,7 @@
//Admin Observer
if (holder.level >= -1)
verbs += /client/proc/investigate_show
verbs += /client/proc/cmd_admin_say
verbs += /client/proc/cmd_admin_gib_self
verbs += /client/proc/deadmin_self
@@ -423,10 +424,11 @@
verbs -= /client/proc/deadmin_self
verbs -= /client/proc/jumptocoord
verbs -= /client/proc/everyone_random
verbs -= /client/proc/giveruntimelog //used by coders to retrieve runtime logs
verbs -= /client/proc/giveruntimelog //used by coders to retrieve runtime logs
verbs -= /client/proc/getserverlog
verbs -= /client/proc/cinematic //show a cinematic sequence
verbs -= /client/proc/admin_memo
verbs -= /client/proc/investigate_show
verbs -= /client/proc/cmd_admin_change_custom_event
verbs -= /client/proc/admin_invis
verbs -= /client/proc/callprocgen
+20 -5
View File
@@ -62,17 +62,32 @@
var/const/WIRE_RADIO_RECEIVE = 8 //Allows Pulsed(1) to call Activate()
var/const/WIRE_RADIO_PULSE = 16 //Allows Pulse(1) to send a radio message
proc/activate() //What the device does when turned on
return
proc/pulsed(var/radio = 0) //Called when another assembly acts on this one, var/radio will determine where it came from for wire calcs
pulse(var/radio = 0) //Called when this device attempts to act on another device, var/radio determines if it was sent via radio or direct
return
proc/pulse(var/radio = 0) //Called when this device attempts to act on another device, var/radio determines if it was sent via radio or direct
return
proc/toggle_secure() //Code that has to happen when the assembly is un\secured goes here
return
proc/attach_assembly(var/obj/A, var/mob/user) //Called when an assembly is attacked by another
return
proc/process_cooldown() //Called via spawn(10) to have it count down the cooldown var
return
proc/holder_movement() //Called when the holder is moved
return
proc/interact(mob/user as mob) //Called when attack_self is called
return
proc/process_cooldown()
process_cooldown()
cooldown--
if(cooldown <= 0) return 0
spawn(10)
@@ -88,7 +103,7 @@
return 1
proc/pulse(var/radio = 0)
pulse(var/radio = 0)
if(holder && (wires & WIRE_PULSE))
holder.process_activation(src, 1, 0)
if(holder && (wires & WIRE_PULSE_SPECIAL))
@@ -219,4 +234,4 @@ Desc: If true is an object that can be attached to an assembly holder but is a s
//Remember to have it set its loc somewhere in here
*/
*/
+9 -6
View File
@@ -1,5 +1,3 @@
//This file was auto-corrected by findeclaration.exe on 29/05/2012 15:03:05
/obj/item/device/assembly_holder
name = "Assembly"
desc = "Holds various devices"//Fix this by adding dynamic desc
@@ -18,10 +16,15 @@
var/obj/item/device/assembly/a_right = null
var/obj/special_assembly = null
proc
attach(var/obj/item/device/D, var/obj/item/device/D2, var/mob/user)
attach_special(var/obj/O, var/mob/user)
process_activation(var/obj/item/device/D)
proc/attach(var/obj/item/device/D, var/obj/item/device/D2, var/mob/user)
return
proc/attach_special(var/obj/O, var/mob/user)
return
proc/process_activation(var/obj/item/device/D)
return
IsAssemblyHolder()
+15 -10
View File
@@ -11,9 +11,6 @@
item_state = "flashbang"
w_class = 2.0
force = 2.0
throw_speed = 4
throw_range = 20
flags = FPRINT | TABLEPASS | CONDUCT | ONBELT | USEDELAY
var/obj/item/weapon/reagent_containers/glass/beaker_one
var/obj/item/weapon/reagent_containers/glass/beaker_two
var/obj/item/device/assembly/attached_device
@@ -27,6 +24,10 @@
var/list/allowed_containers = list("/obj/item/weapon/reagent_containers/glass/beaker", "/obj/item/weapon/reagent_containers/glass/dispenser", "/obj/item/weapon/reagent_containers/glass/bottle")
var/affected_area = 3
var/mob/attacher = "Unknown"
throw_speed = 4
throw_range = 20
flags = FPRINT | TABLEPASS | CONDUCT | USEDELAY
slot_flags = SLOT_BELT
attackby(var/obj/item/weapon/W, var/mob/user)
if(path || !active)
@@ -784,7 +785,7 @@
/obj/structure/table,
/obj/structure/closet/secure_closet,
/obj/structure/closet,
/obj/machinery/sink,
/obj/structure/sink,
/obj/item/weapon/storage,
/obj/machinery/atmospherics/unary/cryo_cell,
/obj/item/weapon/chem_grenade,
@@ -1304,7 +1305,8 @@
amount_per_transfer_from_this = 5
volume = 30
possible_transfer_amounts = null
flags = FPRINT | ONBELT | TABLEPASS | OPENCONTAINER
flags = FPRINT | TABLEPASS | OPENCONTAINER
slot_flags = SLOT_BELT
/obj/item/weapon/reagent_containers/hypospray/attack_paw(mob/user as mob)
return src.attack_hand(user)
@@ -1349,9 +1351,9 @@
possible_transfer_amounts = null
flags = FPRINT
var/mode = 1
var/charge_cost = 100
var/charge_cost = 50
var/charge_tick = 0
var/recharge_time = 10 //Time it takes for shots to recharge (in seconds)
var/recharge_time = 5 //Time it takes for shots to recharge (in seconds)
New()
..()
@@ -1372,13 +1374,13 @@
if(R && R.cell)
if(mode == 1 && reagents.total_volume < 30) //Don't recharge reagents and drain power if the storage is full.
R.cell.use(charge_cost) //Take power from borg...
reagents.add_reagent("tricordrazine",10) //And fill hypo with reagent.
reagents.add_reagent("tricordrazine",5) //And fill hypo with reagent.
if(mode == 2 && reagents.total_volume < 30)
R.cell.use(charge_cost)
reagents.add_reagent("inaprovaline", 10)
reagents.add_reagent("inaprovaline", 5)
if(mode == 3 && reagents.total_volume < 30)
R.cell.use(charge_cost)
reagents.add_reagent("spaceacillin", 10)
reagents.add_reagent("spaceacillin", 5)
//update_icon()
return 1
@@ -1402,16 +1404,19 @@
playsound(src.loc, 'pop.ogg', 50, 0) //Change the mode
if(mode == 1)
mode = 2
charge_tick = 0 //Prevents wasted chems/cell charge if you're cycling through modes.
reagents.clear_reagents() //Flushes whatever was in the storage previously, so you don't get chems all mixed up.
user << "\blue Synthesizer is now producing 'Inaprovaline'."
return
if(mode == 2)
mode = 3
charge_tick = 0
reagents.clear_reagents()
user << "\blue Synthesizer is now producing 'Spaceacillin'."
return
if(mode == 3)
mode = 1
charge_tick = 0
reagents.clear_reagents()
user << "\blue Synthesizer is now producing 'Tricordrazine'."
return
+1
View File
@@ -4,6 +4,7 @@
name = "ears"
w_class = 1.0
throwforce = 2
slot_flags = SLOT_EARS
var/twoeared = 0
/obj/item/clothing/ears/attack_hand(mob/user as mob)
+2 -1
View File
@@ -296,7 +296,8 @@
icon = 'weapons.dmi'
icon_state = "baton"
item_state = "classic_baton"
flags = FPRINT | ONBELT | TABLEPASS
flags = FPRINT | TABLEPASS
slot_flags = SLOT_BELT
force = 10
/obj/item/clothing/under/pirate
+1
View File
@@ -5,6 +5,7 @@
icon = 'glasses.dmi'
w_class = 2.0
flags = GLASSESCOVERSEYES
slot_flags = SLOT_EYES
var/vision_flags = 0
var/darkness_view = 0//Base human is 2
var/invisa_view = 0
+1
View File
@@ -12,6 +12,7 @@
var/wired = 0
var/obj/item/weapon/cell/cell = 0
body_parts_covered = HANDS
slot_flags = SLOT_GLOVES
/obj/item/clothing/gloves/boxing
+20 -20
View File
@@ -3,7 +3,7 @@
name = "head"
icon = 'hats.dmi'
body_parts_covered = HEAD
var/list/allowed = list()
slot_flags = SLOT_HEAD
/obj/item/clothing/head/cakehat
name = "cake-hat"
@@ -83,8 +83,24 @@
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/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
// CHUMP HELMETS: COOKING THEM DESTROYS THE CHUMP HELMET SPAWN.
/obj/item/clothing/head/helmet/cueball
name = "cueball helmet"
@@ -109,6 +125,8 @@
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!"
@@ -118,24 +136,6 @@
flags = FPRINT | TABLEPASS | BLOCKHAIR
flags_inv = HIDEMASK|HIDEEARS|HIDEEYES
/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/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/cardborg
name = "cardborg helmet"
desc = "A helmet made out of a box."
+1
View File
@@ -8,6 +8,7 @@
heat_transfer_coefficient = 0.30
permeability_coefficient = 0.90
flags = FPRINT | TABLEPASS
slot_flags = SLOT_ICLOTHING
var/has_sensor = 1//For the crew computer 2 = unable to change mode
var/sensor_mode = 0
/*
+1
View File
@@ -73,6 +73,7 @@
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"
+1
View File
@@ -5,6 +5,7 @@
gender = PLURAL //Carn: for grammarically correct text-parsing
body_parts_covered = FEET
slot_flags = SLOT_FEET
protective_temperature = 500
heat_transfer_coefficient = 0.10
@@ -0,0 +1,37 @@
/obj/item/clothing/head/helmet/space/engineer
name = "environment suit helmet"
desc = "A special helmet designed for work in a hazardous, low-pressure environment. Has radiation shielding and a visor that can be toggled on and off."
flags = FPRINT | TABLEPASS | HEADSPACE | HEADCOVERSEYES
see_face = 0.0
flags_inv = HIDEEARS
icon_state = "engspace_helmet"
item_state = "engspace_helmet"
protective_temperature = 5000
armor = list(melee = 20, bullet = 5, laser = 10,energy = 5, bomb = 15, bio = 100, rad = 75)
var/up = 0
/obj/item/clothing/head/helmet/space/engineer/ce
name = "chief engineer's environment suit helmet"
desc = "A special helmet designed for work in a hazardous, low-pressure environment. Has radiation shielding and a visor that can be toggled on and off."
icon_state = "cespace_helmet"
item_state = "cespace_helmet"
/obj/item/clothing/suit/space/engineer
name = "environment suit"
desc = "An environment suit that protects against hazardous, low pressure environments. Has radiation shielding."
icon_state = "engspace_suit"
item_state = "engspace_suit"
protective_temperature = 5000 //For not dieing near a fire, but still not being great in a full inferno
slowdown = 2
armor = list(melee = 20, bullet = 5, laser = 10,energy = 5, bomb = 15, bio = 100, rad = 75)
allowed = list(/obj/item/device/flashlight, /obj/item/weapon/tank, /obj/item/device/t_scanner, /obj/item/weapon/rcd, /obj/item/weapon/crowbar, \
/obj/item/weapon/screwdriver, /obj/item/weapon/weldingtool, /obj/item/weapon/wirecutters, /obj/item/weapon/wrench, /obj/item/device/multitool, \
/obj/item/device/radio, /obj/item/device/analyzer)
//yes, you can fit everything and your dog in it.
//i figure this might mitigate some of the inevitable bitching about it being a downgrade from the rig.
/obj/item/clothing/suit/space/engineer/ce
name = "chief engineer's environment suit"
desc = "An environment suit that protects against hazardous, low pressure environments. Has radiation shielding and Chief Engineer colours."
icon_state = "cespace_suit"
item_state = "cespace_suit"
-29
View File
@@ -15,29 +15,12 @@
item_state = "rig0-mining"
color = "mining"
/obj/item/clothing/head/helmet/space/rig/elite
name = "advanced RIG helmet"
icon_state = "rig0-white"
item_state = "rig0-white"
color = "white"
/obj/item/clothing/head/helmet/space/rig/engspace_helmet
name = "engineering space helmet"
desc = "A special helmet designed for work in a hazardous, low-pressure environment. Has radiation shielding and a visor that can be toggled on and off."
icon_state = "engspace_helmet"
item_state = "engspace_helmet"
see_face = 0.0
var/up = 0
/obj/item/clothing/head/helmet/space/rig/cespace_helmet
name = "chief engineer's space helmet"
desc = "A special helmet designed for work in a hazardous, low-pressure environment. Has radiation shielding and a visor that can be toggled on and off."
icon_state = "cespace_helmet"
item_state = "cespace_helmet"
see_face = 0.0
var/up = 0
/obj/item/clothing/head/helmet/space/rig/security
name = "security RIG helmet"
icon_state = "rig0-security"
@@ -63,18 +46,6 @@
name = "advanced RIG suit"
protective_temperature = 10000
/obj/item/clothing/suit/space/rig/engspace_suit
name = "engineering space suit"
icon_state = "engspace_suit"
item_state = "engspace_suit"
/obj/item/clothing/suit/space/rig/cespace_suit
name = "chief engineer's space suit"
desc = "A special suit that protects against hazardous, low pressure environments. Has radiation and fire shielding, and Chief Engineer colours."
icon_state = "cespace_suit"
item_state = "cespace_suit"
protective_temperature = 10000
/obj/item/clothing/suit/space/rig/security
name = "security RIG suit"
desc = "A suit specially designed for security to offer minor protection from environmental hazards, and greater protection from human hazards"
+2 -1
View File
@@ -3,5 +3,6 @@
name = "suit"
var/fire_resist = T0C+100
flags = FPRINT | TABLEPASS
var/list/allowed = list(/obj/item/weapon/tank/emergency_oxygen)
allowed = list(/obj/item/weapon/tank/emergency_oxygen)
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0)
slot_flags = SLOT_OCLOTHING
+6 -6
View File
@@ -37,14 +37,14 @@ mob/living/carbon/proc/handle_hallucinations()
//src << "Traitor Items"
if(!halitem)
halitem = new
var/list/slots_free = list("1,1","3,1")
if(l_hand) slots_free -= "1,1"
if(r_hand) slots_free -= "3,1"
var/list/slots_free = list(ui_lhand,ui_rhand)
if(l_hand) slots_free -= ui_lhand
if(r_hand) slots_free -= ui_rhand
if(istype(src,/mob/living/carbon/human))
var/mob/living/carbon/human/H = src
if(!H.belt) slots_free += "3,0"
if(!H.l_store) slots_free += "4,0"
if(!H.r_store) slots_free += "5,0"
if(!H.belt) slots_free += ui_belt
if(!H.l_store) slots_free += ui_storage1
if(!H.r_store) slots_free += ui_storage2
if(slots_free.len)
halitem.screen_loc = pick(slots_free)
halitem.layer = 50
+1 -1
View File
@@ -1096,7 +1096,7 @@
reagents.add_reagent("nutriment",12)
afterattack(obj/O as obj, mob/user as mob)
if(istype(O,/obj/machinery/sink) && !wrapped)
if(istype(O,/obj/structure/sink) && !wrapped)
user << "You place [name] under a stream of water..."
loc = get_turf(O)
return Expand()
+4 -2
View File
@@ -154,7 +154,8 @@ proc/move_mining_shuttle()
name = "Miner's pickaxe"
icon = 'items.dmi'
icon_state = "pickaxe"
flags = FPRINT | TABLEPASS| CONDUCT | ONBELT
flags = FPRINT | TABLEPASS| CONDUCT
slot_flags = SLOT_BELT
force = 15.0
throwforce = 4.0
item_state = "pickaxe"
@@ -238,7 +239,8 @@ proc/move_mining_shuttle()
name = "Shovel"
icon = 'items.dmi'
icon_state = "shovel"
flags = FPRINT | TABLEPASS| CONDUCT | ONBELT
flags = FPRINT | TABLEPASS| CONDUCT
slot_flags = SLOT_BELT
force = 8.0
throwforce = 4.0
item_state = "shovel"
+2 -1
View File
@@ -6,7 +6,8 @@
name = "Mining Satchel"
var/mode = 1; //0 = pick one at a time, 1 = pick all on tile
var/capacity = 50; //the number of ore pieces it can carry.
flags = FPRINT | TABLEPASS | ONBELT
flags = FPRINT | TABLEPASS
slot_flags = SLOT_BELT
w_class = 1
/obj/item/weapon/satchel/attack_self(mob/user as mob)
@@ -601,11 +601,12 @@
..()
if(M.gloves)
if(M.gloves.cell)
if(M.gloves && istype(M.gloves,/obj/item/clothing/gloves))
var/obj/item/clothing/gloves/G = M.gloves
if(G.cell)
if(M.a_intent == "hurt")//Stungloves. Any contact will stun the alien.
if(M.gloves.cell.charge >= 2500)
M.gloves.cell.charge -= 2500
if(G.cell.charge >= 2500)
G.cell.charge -= 2500
Weaken(5)
if (stuttering < 5)
@@ -367,11 +367,12 @@
..()
if(M.gloves)
if(M.gloves.cell)
if(M.gloves && istype(M.gloves,/obj/item/clothing/gloves))
var/obj/item/clothing/gloves/G = M.gloves
if(G.cell)
if(M.a_intent == "hurt")//Stungloves. Any contact will stun the alien.
if(M.gloves.cell.charge >= 2500)
M.gloves.cell.charge -= 2500
if(G.cell.charge >= 2500)
G.cell.charge -= 2500
Weaken(5)
if (stuttering < 5)
+51 -30
View File
@@ -27,19 +27,19 @@
var/list/skills = null
// var/b_type
var/obj/item/clothing/suit/wear_suit = null
var/obj/item/clothing/under/w_uniform = null
var/obj/item/clothing/shoes/shoes = null
var/obj/item/weapon/belt = null
var/obj/item/clothing/gloves/gloves = null
var/obj/item/clothing/glasses/glasses = null
var/obj/item/clothing/head/head = null
var/obj/item/clothing/ears/l_ear = null
var/obj/item/clothing/ears/r_ear = null
var/obj/item/wear_suit = null
var/obj/item/w_uniform = null
var/obj/item/shoes = null
var/obj/item/belt = null
var/obj/item/gloves = null
var/obj/item/glasses = null
var/obj/item/head = null
var/obj/item/l_ear = null
var/obj/item/r_ear = null
var/obj/item/weapon/card/id/wear_id = null
var/obj/item/weapon/r_store = null
var/obj/item/weapon/l_store = null
var/obj/item/weapon/s_store = null
var/obj/item/r_store = null
var/obj/item/l_store = null
var/obj/item/s_store = null
var/icon/stand_icon = null
var/icon/lying_icon = null
@@ -553,7 +553,7 @@
return
if (!istype(W, /obj/item))
return
if (!( W.flags & ONBACK ))
if (!( W.slot_flags & SLOT_BACK ))
return
if(istype(W,/obj/item/weapon/twohanded) && W:wielded)
usr << "<span class='warning'>Unwield the [initial(W.name)] first!</span>"
@@ -577,7 +577,10 @@
if (emptyHand)
wear_suit.DblClick()
return
if (!( istype(W, /obj/item/clothing/suit) ))
if (!istype(W, /obj/item))
return
if (!( W.slot_flags & SLOT_OCLOTHING ))
return
return
u_equip(W)
wear_suit = W
@@ -587,7 +590,9 @@
if (emptyHand)
gloves.DblClick()
return
if (!( istype(W, /obj/item/clothing/gloves) ))
if (!istype(W, /obj/item))
return
if (!( W.slot_flags & SLOT_GLOVES ))
return
u_equip(W)
gloves = W
@@ -597,7 +602,9 @@
if (emptyHand)
shoes.DblClick()
return
if (!( istype(W, /obj/item/clothing/shoes) ))
if (!istype(W, /obj/item))
return
if (!( W.slot_flags & SLOT_FEET ))
return
u_equip(W)
shoes = W
@@ -607,7 +614,9 @@
if (emptyHand)
belt.DblClick()
return
if (!W || !W.flags || !( W.flags & ONBELT ))
if (!istype(W, /obj/item))
return
if (!( W.slot_flags & SLOT_BELT ))
return
u_equip(W)
belt = W
@@ -617,7 +626,9 @@
if (emptyHand)
glasses.DblClick()
return
if (!( istype(W, /obj/item/clothing/glasses) ))
if (!istype(W, /obj/item))
return
if (!( W.slot_flags & SLOT_EYES ))
return
u_equip(W)
glasses = W
@@ -627,10 +638,9 @@
if (emptyHand)
head.DblClick()
return
if (( istype(W, /obj/item/weapon/paper) ))
u_equip(W)
head = W
else if (!( istype(W, /obj/item/clothing/head) ))
if (!istype(W, /obj/item))
return
if (!( W.slot_flags & SLOT_HEAD ))
return
u_equip(W)
head = W
@@ -682,7 +692,10 @@
if (emptyHand)
w_uniform.DblClick()
return
if (!( istype(W, /obj/item/clothing/under) ))
if (!istype(W, /obj/item))
return
if (!( W.slot_flags & SLOT_ICLOTHING ))
return
return
u_equip(W)
w_uniform = W
@@ -694,7 +707,9 @@
return
if (!w_uniform)
return
if (!istype(W, /obj/item/weapon/card/id) && !istype(W, /obj/item/device/pda) )
if (!istype(W, /obj/item))
return
if (!( W.slot_flags & SLOT_ID ))
return
u_equip(W)
wear_id = W
@@ -704,19 +719,25 @@
if (emptyHand)
l_store.DblClick()
return
if ((!( istype(W, /obj/item) ) || W.w_class > 2 || !( w_uniform )))
if (!istype(W, /obj/item))
return
u_equip(W)
l_store = W
if ( ( W.slot_flags & SLOT_DENYPOCKET ) )
return
if ( W.w_class <= 2 || ( W.slot_flags & SLOT_POCKET ) )
u_equip(W)
l_store = W
if("storage2")
if (r_store)
if (emptyHand)
r_store.DblClick()
return
if ((!( istype(W, /obj/item) ) || W.w_class > 2 || !( w_uniform )))
if (!istype(W, /obj/item))
return
u_equip(W)
r_store = W
if ( ( W.slot_flags & SLOT_DENYPOCKET ) )
return
if ( W.w_class <= 2 || ( W.slot_flags & SLOT_POCKET ) )
u_equip(W)
r_store = W
if("suit storage")
if (s_store)
if (emptyHand)
@@ -9,11 +9,13 @@
visible_message("\red <B>[M] attempted to touch [src]!</B>")
return 0
if(M.gloves)
if(M.gloves.cell)
if(M.a_intent == "hurt")
if(M.gloves.cell.charge >= 2500)
M.gloves.cell.charge -= 2500
if(M.gloves && istype(M.gloves,/obj/item/clothing/gloves))
var/obj/item/clothing/gloves/G = M.gloves
if(G.cell)
if(M.a_intent == "hurt")//Stungloves. Any contact will stun the alien.
if(G.cell.charge >= 2500)
G.cell.charge -= 2500
visible_message("\red <B>[src] has been touched with the stun gloves by [M]!</B>")
M.attack_log += text("\[[time_stamp()]\] <font color='red'>Stungloved [src.name] ([src.ckey])</font>")
src.attack_log += text("\[[time_stamp()]\] <font color='orange'>Has been stungloved by [M.name] ([M.ckey])</font>")
@@ -153,10 +153,11 @@ emp_act
if(H.wear_suit) H.wear_suit.add_blood(src)
else if(H.w_uniform) H.w_uniform.add_blood(src)
if(H.shoes) H.shoes.add_blood(src)
if (H.gloves)
H.gloves.add_blood(H)
H.gloves.transfer_blood = 2
H.gloves.bloody_hands_mob = H
if (H.gloves && istype(H.gloves,/obj/item/clothing/gloves))
var/obj/item/clothing/gloves/G = H.gloves
G.add_blood(H)
G.transfer_blood = 2
G.bloody_hands_mob = H
else
H.add_blood(H)
H.bloody_hands = 2
@@ -197,4 +198,4 @@ emp_act
if(src.wear_suit) src.wear_suit.add_blood(src)
if(src.w_uniform) src.w_uniform.add_blood(src)
UpdateDamageIcon()
UpdateDamageIcon()
+14 -2
View File
@@ -1348,8 +1348,20 @@
else
blind.layer = 0
if ((disabilities & 1 && ((glasses && !glasses.prescription) || !glasses)) || (glasses && glasses.prescription && !(disabilities & 1)))
client.screen += hud_used.vimpaired
if(disabilities & 1)
if(!glasses)
client.screen += hud_used.vimpaired
else if (glasses && istype(glasses,/obj/item/clothing/glasses))
var/obj/item/clothing/glasses/G = glasses
if(!G.prescription)
client.screen += hud_used.vimpaired
else
client.screen += hud_used.vimpaired
else
if(glasses && istype(glasses,/obj/item/clothing/glasses))
var/obj/item/clothing/glasses/G = glasses
if(G.prescription)
client.screen += hud_used.vimpaired
if (eye_blurry)
client.screen += hud_used.blurry
@@ -384,7 +384,7 @@
for(var/mob/O in viewers(src, null))
if ((O.client && !( O.blinded )))
O.show_message(text("\red <B>[M.name] has bit [src]!</B>"), 1)
bruteloss += rand(1, 3)
adjustBruteLoss(rand(1, 3))
updatehealth()
return
@@ -463,11 +463,13 @@
if(M.gloves)
if(M.gloves.cell)
if(M.gloves && istype(M.gloves,/obj/item/clothing/gloves))
var/obj/item/clothing/gloves/G = M.gloves
if(G.cell)
if(M.a_intent == "hurt")//Stungloves. Any contact will stun the alien.
if(M.gloves.cell.charge >= 2500)
M.gloves.cell.charge -= 2500
if(G.cell.charge >= 2500)
G.cell.charge -= 2500
for(var/mob/O in viewers(src, null))
if ((O.client && !( O.blinded )))
O.show_message("\red <B>[src] has been touched with the stun gloves by [M]!</B>", 1, "\red You hear someone fall.", 2)
@@ -210,11 +210,13 @@
if (istype(loc, /turf) && istype(loc.loc, /area/start))
M << "No attacking people at spawn, you jackass."
return
if(M.gloves)
if(M.gloves.cell)
if(M.a_intent == "hurt")
if(M.gloves.cell.charge >= 2500)
M.gloves.cell.charge -= 2500
if(M.gloves && istype(M.gloves,/obj/item/clothing/gloves))
var/obj/item/clothing/gloves/G = M.gloves
if(G.cell)
if(M.a_intent == "hurt")//Stungloves. Any contact will stun the alien.
if(G.cell.charge >= 2500)
G.cell.charge -= 2500
Weaken(5)
if (stuttering < 5)
stuttering = 5
@@ -7,6 +7,7 @@
w_class = 100.0
item_state = "electronic"
flags = FPRINT|TABLEPASS | CONDUCT
var/list/modules = list()
var/obj/item/emag = null
var/obj/item/borg/upgrade/jetpack = null
@@ -60,12 +61,12 @@
..()
src.modules += new /obj/item/borg/sight/hud/med(src)
src.modules += new /obj/item/device/healthanalyzer(src)
src.modules += new /obj/item/weapon/reagent_containers/borghypo
src.modules += new /obj/item/weapon/reagent_containers/borghypo(src)
src.modules += new /obj/item/weapon/reagent_containers/glass/large(src)
src.modules += new /obj/item/weapon/reagent_containers/robodropper(src)
src.modules += new /obj/item/weapon/reagent_containers/syringe
src.modules += new /obj/item/weapon/extinguisher/mini
src.emag = new /obj/item/weapon/circular_saw
src.modules += new /obj/item/weapon/reagent_containers/syringe(src)
src.modules += new /obj/item/weapon/extinguisher/mini(src)
src.emag = new /obj/item/weapon/circular_saw(src)
return
@@ -143,8 +144,8 @@
New()
..()
src.modules += new /obj/item/weapon/soap/nanotrasen(src)
src.modules += new /obj/item/weapon/trashbag
src.modules += new/obj/item/weapon/mop
src.modules += new /obj/item/weapon/trashbag(src)
src.modules += new/obj/item/weapon/mop(src)
src.emag = new /obj/item/weapon/cleaner(src)
var/datum/reagents/R = new/datum/reagents(1000)
+2 -1
View File
@@ -9,7 +9,8 @@
throw_range = 10
var/obj/item/weapon/pen/haspen //The stored pen.
var/obj/item/weapon/paper/toppaper //The topmost piece of paper.
flags = FPRINT | TABLEPASS | ONBELT
flags = FPRINT | TABLEPASS
slot_flags = SLOT_BELT
pressure_resistance = 10
/obj/item/weapon/clipboard/New()

Some files were not shown because too many files have changed in this diff Show More