Files
vgstation13/code/defines/obj.dm
johnsonmt88@gmail.com c930622bea Attack verbs!
Instead of 'x has been attacked with y by z' it now reads 'x has been 'y.attack_verb-ed' with y by z'!
Example:
Monkeyman has been bashed in the head with a riot shield by Nodrak!
or
Monkeyman has been stabbed in the chest with an energy sword by Nodrak!

- Every obj now has a list named "attack_verbs"
- When declaring an object, just use attack_verb = list("verb1", "verb2") and so on to initialize the list for that specific item.
- I've added a bunch of these to a ton of items already, feel free to modify or add more. Just try to stay away from gimmicky verbs (clown stuff being the exception.)

clothing.dm and spawner.dm only had a single definition in each of them, so their definitins have been moved to obj.dm and their original dm files deleted. I'm not sure about spawner but clothing had all of its other definitions removed recently.

radio.dm was a completely blank file, so it was removed.

Changelog updated

git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4182 316c924e-a436-60f5-8080-3fe189b3f50e
2012-07-26 05:21:24 +00:00

1464 lines
40 KiB
Plaintext

//This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:31
/obj
//var/datum/module/mod //not used
var/m_amt = 0 // metal
var/g_amt = 0 // glass
var/w_amt = 0 // waster amounts
var/origin_tech = null //Used by R&D to determine what research bonuses it grants.
var/reliability = 100 //Used by SOME devices to determine how reliable they are.
var/crit_fail = 0
var/unacidable = 0 //universal "unacidabliness" var, here so you can use it in any obj.
var/datum/marked_datum
animate_movement = 2
var/throwforce = 1
var/list/attack_verb = list() //Used in attackby() to say how something was attacked "[x] has been [z.attack_verb] by [y] with [z]"
proc/handle_internal_lifeform(mob/lifeform_inside_me, breath_request)
//Return: (NONSTANDARD)
// null if object handles breathing logic for lifeform
// datum/air_group to tell lifeform to process using that breath return
//DEFAULT: Take air from turf to give to have mob process
if(breath_request>0)
return remove_air(breath_request)
else
return null
proc/initialize()
/obj/structure/signpost
icon = 'icons/obj/stationobjs.dmi'
icon_state = "signpost"
anchored = 1
density = 1
attackby(obj/item/weapon/W as obj, mob/user as mob)
return attack_hand(user)
attack_hand(mob/user as mob)
switch(alert("Travel back to ss13?",,"Yes","No"))
if("Yes")
if(user.z != src.z) return
user.loc.loc.Exited(user)
user.loc = pick(latejoin)
if("No")
return
/obj/effect/mark
var/mark = ""
icon = 'icons/misc/mark.dmi'
icon_state = "blank"
anchored = 1
layer = 99
mouse_opacity = 0
unacidable = 1//Just to be sure.
/obj/admins
name = "admins"
var/rank = null
var/owner = null
var/state = 1
//state = 1 for playing : default
//state = 2 for observing
/obj/effect/beam
name = "beam"
unacidable = 1//Just to be sure.
var/def_zone
pass_flags = PASSTABLE
/obj/structure/bedsheetbin
name = "linen bin"
desc = "A bin for containing bedsheets. It looks rather cosy."
icon = 'icons/obj/items.dmi'
icon_state = "bedbin"
var/amount = 23.0
anchored = 1.0
/obj/effect/begin
name = "begin"
icon = 'icons/obj/stationobjs.dmi'
icon_state = "begin"
anchored = 1.0
unacidable = 1
/obj/effect/datacore
name = "datacore"
var/medical[] = list()
var/general[] = list()
var/security[] = list()
//This list tracks characters spawned in the world and cannot be modified in-game. Currently referenced by respawn_character().
var/locked[] = list()
/obj/effect/equip_e
name = "equip e"
var/mob/source = null
var/s_loc = null
var/t_loc = null
var/obj/item/item = null
var/place = null
/obj/effect/equip_e/human
name = "human"
var/mob/living/carbon/human/target = null
/obj/effect/equip_e/monkey
name = "monkey"
var/mob/living/carbon/monkey/target = null
/obj/effect/sign/securearea
desc = "A warning sign which reads 'SECURE AREA'. This obviously applies to a nun-Clown."
name = "SECURE AREA"
icon = 'icons/obj/decals.dmi'
icon_state = "securearea"
anchored = 1.0
opacity = 0
density = 0
/obj/effect/sign/biohazard
desc = "A warning sign which reads 'BIOHAZARD'"
name = "BIOHAZARD"
icon = 'icons/obj/decals.dmi'
icon_state = "bio"
anchored = 1.0
opacity = 0
density = 0
/obj/effect/sign/electricshock
desc = "A warning sign which reads 'HIGH VOLTAGE'"
name = "HIGH VOLTAGE"
icon = 'icons/obj/decals.dmi'
icon_state = "shock"
anchored = 1.0
opacity = 0
density = 0
/obj/effect/sign/examroom
desc = "A guidance sign which reads 'EXAM ROOM'"
name = "EXAM"
icon = 'icons/obj/decals.dmi'
icon_state = "examroom"
anchored = 1.0
opacity = 0
density = 0
/obj/effect/sign/vacuum
desc = "A warning sign which reads 'HARD VACUUM AHEAD'"
name = "HARD VACUUM AHEAD"
icon = 'icons/obj/decals.dmi'
icon_state = "space"
anchored = 1.0
opacity = 0
density = 0
/obj/effect/sign/deathsposal
desc = "A warning sign which reads 'DISPOSAL LEADS TO SPACE'"
name = "DISPOSAL LEADS TO SPACE"
icon = 'icons/obj/decals.dmi'
icon_state = "deathsposal"
anchored = 1.0
opacity = 0
density = 0
/obj/effect/sign/pods
desc = "A warning sign which reads 'ESCAPE PODS'"
name = "ESCAPE PODS"
icon = 'icons/obj/decals.dmi'
icon_state = "pods"
anchored = 1.0
opacity = 0
density = 0
/obj/effect/sign/fire
desc = "A warning sign which reads 'DANGER: FIRE'"
name = "DANGER: FIRE"
icon = 'icons/obj/decals.dmi'
icon_state = "fire"
anchored = 1.0
opacity = 0
density = 0
/obj/effect/sign/nosmoking_1
desc = "A warning sign which reads 'NO SMOKING'"
name = "NO SMOKING"
icon = 'icons/obj/decals.dmi'
icon_state = "nosmoking"
anchored = 1.0
opacity = 0
density = 0
/obj/effect/sign/nosmoking_2
desc = "A warning sign which reads 'NO SMOKING'"
name = "NO SMOKING"
icon = 'icons/obj/decals.dmi'
icon_state = "nosmoking2"
anchored = 1.0
opacity = 0
density = 0
/obj/effect/sign/redcross
desc = "The Intergalactic symbol of Medical institutions. You'll probably get help here.'"
name = "Med-Bay"
icon = 'icons/obj/decals.dmi'
icon_state = "redcross"
anchored = 1.0
opacity = 0
density = 0
/obj/effect/sign/goldenplaque
desc = "To be Robust is not an action or a way of life, but a mental state. Only those with the force of Will strong enough to act during a crisis, saving friend from foe, are truly Robust. Stay Robust my friends."
name = "The Most Robust Men Award for Robustness"
icon = 'icons/obj/decals.dmi'
icon_state = "goldenplaque"
anchored = 1.0
opacity = 0
density = 0
/*/obj/item/weapon/plaque_assembly //commenting this out until there's a better rework
desc = "Put this on a wall and engrave an epitaph"
name = "Plaque Assembly"
icon = 'icons/obj/decals.dmi'
icon_state = "goldenplaque"
/obj/item/weapon/plaque_assembly/afterattack(atom/A as mob|obj|turf|area, mob/user as mob)
if(istype(A,/turf/simulated/wall) || istype(A,/turf/simulated/shuttle/wall) || istype(A,/turf/unsimulated/wall))
var/epitaph = input("What would you like to engrave", null)
if(epitaph)
var/obj/effect/sign/goldenplaque/gp = new/obj/effect/sign/goldenplaque(A)
gp.name = epitaph
gp.layer = 2.9
del(src)*/
/obj/effect/sign/maltesefalcon1 //The sign is 64x32, so it needs two tiles. ;3
desc = "The Maltese Falcon, Space Bar and Grill."
name = "The Maltese Falcon"
icon = 'icons/obj/decals.dmi'
icon_state = "maltesefalcon1"
anchored = 1.0
opacity = 0
density = 0
/obj/effect/sign/maltesefalcon2
desc = "The Maltese Falcon, Space Bar and Grill."
name = "The Maltese Falcon"
icon = 'icons/obj/decals.dmi'
icon_state = "maltesefalcon2"
anchored = 1.0
opacity = 0
density = 0
/obj/effect/sign/science//These 3 have multiple types, just var-edit the icon_state to whatever one you want on the map
desc = "A warning sign which reads 'SCIENCE!'"
name = "SCIENCE!"
icon = 'icons/obj/decals.dmi'
icon_state = "science1"
anchored = 1.0
opacity = 0
density = 0
/obj/effect/sign/chemistry
desc = "A warning sign which reads 'CHEMISTY'"
name = "CHEMISTRY"
icon = 'icons/obj/decals.dmi'
icon_state = "chemistry1"
anchored = 1.0
opacity = 0
density = 0
/obj/effect/sign/botany
desc = "A warning sign which reads 'HYDROPONICS'"
name = "HYDROPONICS"
icon = 'icons/obj/decals.dmi'
icon_state = "hydro1"
anchored = 1.0
opacity = 0
density = 0
/obj/hud
name = "hud"
unacidable = 1
var/mob/mymob = null
var/list/adding = null
var/list/other = null
var/obj/screen/druggy = null
var/vimpaired = null
var/obj/screen/alien_view = null
var/obj/screen/g_dither = null
var/obj/screen/blurry = null
var/list/darkMask = null
var/obj/screen/r_hand_hud_object = null
var/obj/screen/l_hand_hud_object = null
var/show_intent_icons = 0
var/list/obj/screen/hotkeybuttons = null
var/hotkey_ui_hidden = 0 //This is to hide the buttons that can be used via hotkeys. (hotkeybuttons list of buttons)
var/h_type = /obj/screen //this is like...the most pointless thing ever. Use a god damn define!
/obj/item
name = "item"
icon = 'icons/obj/items.dmi'
var/icon/blood_overlay = null //this saves our blood splatter overlay, which will be processed not to go over the edges of the sprite
var/abstract = 0
var/force = 0
var/item_state = null
var/damtype = "brute"
var/r_speed = 1.0
var/health = null
var/burn_point = null
var/burning = null
var/hitsound = null
var/w_class = 3.0
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/flags_inv //This flag is used to determine when items in someone's inventory cover others. IE helmets making it so you can't see glasses, etc.
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/verb/verb_pickup()
set src in oview(1)
set category = "Object"
set name = "Pick up"
if(!usr.canmove || usr.stat || usr.restrained())
return
if(ishuman(usr))
if(usr.get_active_hand() == null)
src.attack_hand(usr)
else
usr << "\red You already have something in your hand."
else
usr << "\red This mob type can't use this verb."
/obj/item/device
icon = 'icons/obj/device.dmi'
/obj/item/device/infra_sensor
name = "Infrared Sensor"
desc = "Scans for infrared beams in the vicinity."
icon_state = "infra_sensor"
var/passive = 1.0
flags = FPRINT | TABLEPASS| CONDUCT
item_state = "electronic"
m_amt = 150
origin_tech = "magnets=2"
/obj/item/device/multitool
name = "multitool"
desc = "Used for pulsing wires to test which to cut. Not recommended by doctors."
icon_state = "multitool"
flags = FPRINT | TABLEPASS| CONDUCT
force = 5.0
w_class = 2.0
throwforce = 5.0
throw_range = 15
throw_speed = 3
desc = "You can use this on airlocks or APCs to try to hack them without cutting wires."
m_amt = 50
g_amt = 20
origin_tech = "magnets=1;engineering=1"
var/obj/machinery/telecomms/buffer // simple machine buffer for device linkage
/obj/item/blueprints
name = "station blueprints"
desc = "Blueprints of the station. There's stamp \"Classified\" and several coffee stains on it."
icon = 'icons/obj/items.dmi'
icon_state = "blueprints"
attack_verb = list("attacked", "bapped", "hit")
/obj/item/apc_frame
name = "APC frame"
desc = "Used for repairing or building APCs"
icon = 'icons/obj/apc_repair.dmi'
icon_state = "apc_frame"
flags = FPRINT | TABLEPASS| CONDUCT
/obj/effect/landmark
name = "landmark"
icon = 'icons/mob/screen1.dmi'
icon_state = "x2"
anchored = 1.0
unacidable = 1
/obj/effect/landmark/alterations
name = "alterations"
/obj/effect/laser
name = "laser"
desc = "IT BURNS!!!"
icon = 'icons/obj/projectiles.dmi'
var/damage = 0.0
var/range = 10.0
/obj/structure/lattice
desc = "A lightweight support lattice."
name = "lattice"
icon = 'icons/obj/structures.dmi'
icon_state = "latticefull"
density = 0
anchored = 1.0
layer = 2.3 //under pipes
// flags = CONDUCT
/obj/structure/lattice/New()
..()
if(!(istype(src.loc, /turf/space)))
del(src)
for(var/obj/structure/lattice/LAT in src.loc)
if(LAT != src)
del(LAT)
icon = 'icons/obj/smoothlattice.dmi'
icon_state = "latticeblank"
updateOverlays()
for (var/dir in cardinal)
var/obj/structure/lattice/L
if(locate(/obj/structure/lattice, get_step(src, dir)))
L = locate(/obj/structure/lattice, get_step(src, dir))
L.updateOverlays()
/obj/structure/lattice/Del()
for (var/dir in cardinal)
var/obj/structure/lattice/L
if(locate(/obj/structure/lattice, get_step(src, dir)))
L = locate(/obj/structure/lattice, get_step(src, dir))
L.updateOverlays(src.loc)
..()
/obj/structure/lattice/proc/updateOverlays()
//if(!(istype(src.loc, /turf/space)))
// del(src)
spawn(1)
overlays = list()
var/dir_sum = 0
for (var/direction in cardinal)
if(locate(/obj/structure/lattice, get_step(src, direction)))
dir_sum += direction
else
if(!(istype(get_step(src, direction), /turf/space)))
dir_sum += direction
icon_state = "lattice[dir_sum]"
return
/*
overlays += icon(icon,"lattice-middlebar") //the nw-se bar in the cneter
for (var/dir in cardinal)
if(locate(/obj/structure/lattice, get_step(src, dir)))
src.overlays += icon(icon,"lattice-[dir2text(dir)]")
else
src.overlays += icon(icon,"lattice-nc-[dir2text(dir)]") //t for turf
if(!(istype(get_step(src, dir), /turf/space)))
src.overlays += icon(icon,"lattice-t-[dir2text(dir)]") //t for turf
//if ( !( (locate(/obj/structure/lattice, get_step(src, SOUTH))) || (locate(/obj/structure/lattice, get_step(src, EAST))) ))
// src.overlays += icon(icon,"lattice-c-se")
if ( !( (locate(/obj/structure/lattice, get_step(src, NORTH))) || (locate(/obj/structure/lattice, get_step(src, WEST))) ))
src.overlays += icon(icon,"lattice-c-nw")
if ( !( (locate(/obj/structure/lattice, get_step(src, NORTH))) || (locate(/obj/structure/lattice, get_step(src, EAST))) ))
src.overlays += icon(icon,"lattice-c-ne")
if ( !( (locate(/obj/structure/lattice, get_step(src, SOUTH))) || (locate(/obj/structure/lattice, get_step(src, WEST))) ))
src.overlays += icon(icon,"lattice-c-sw")
if(!(overlays))
icon_state = "latticefull"
*/
/obj/effect/list_container
name = "list container"
/obj/effect/list_container/mobl
name = "mobl"
var/master = null
var/list/container = list( )
/obj/structure/m_tray
name = "morgue tray"
desc = "Apply corpse before closing."
icon = 'icons/obj/stationobjs.dmi'
icon_state = "morguet"
density = 1
layer = 2.0
var/obj/structure/morgue/connected = null
anchored = 1.0
/obj/structure/c_tray
name = "crematorium tray"
desc = "Apply body before burning."
icon = 'icons/obj/stationobjs.dmi'
icon_state = "cremat"
density = 1
layer = 2.0
var/obj/structure/crematorium/connected = null
anchored = 1.0
/obj/structure/cable
level = 1
anchored =1
var/netnum = 0
name = "power cable"
desc = "A flexible superconducting cable for heavy-duty power transfer"
icon = 'icons/obj/power_cond_red.dmi'
icon_state = "0-1"
var/d1 = 0
var/d2 = 1
layer = 2.44 //Just below unary stuff, which is at 2.45 and above pipes, which are at 2.4
var/color="red"
var/obj/structure/powerswitch/power_switch
/obj/structure/cable/yellow
color="yellow"
icon = 'icons/obj/power_cond_yellow.dmi'
/obj/structure/cable/green
color="green"
icon = 'icons/obj/power_cond_green.dmi'
/obj/structure/cable/blue
color="blue"
icon = 'icons/obj/power_cond_blue.dmi'
/obj/structure/cable/pink
color="pink"
icon = 'icons/obj/power_cond_pink.dmi'
/obj/structure/cable/orange
color="orange"
icon = 'icons/obj/power_cond_orange.dmi'
/obj/structure/cable/cyan
color="cyan"
icon = 'icons/obj/power_cond_cyan.dmi'
/obj/structure/cable/white
color="white"
icon = 'icons/obj/power_cond_white.dmi'
/obj/effect/manifest
name = "manifest"
icon = 'icons/mob/screen1.dmi'
icon_state = "x"
unacidable = 1//Just to be sure.
/obj/structure/morgue
name = "morgue"
desc = "Used to keep bodies in untill someone fetches them."
icon = 'icons/obj/stationobjs.dmi'
icon_state = "morgue1"
density = 1
var/obj/structure/m_tray/connected = null
anchored = 1.0
/obj/structure/crematorium
name = "crematorium"
desc = "A human incinerator. Works well on barbeque nights."
icon = 'icons/obj/stationobjs.dmi'
icon_state = "crema1"
density = 1
var/obj/structure/c_tray/connected = null
anchored = 1.0
var/cremating = 0
var/id = 1
var/locked = 0
/obj/effect/mine
name = "Mine"
desc = "I Better stay away from that thing."
density = 1
anchored = 1
layer = 3
icon = 'icons/obj/weapons.dmi'
icon_state = "uglymine"
var/triggerproc = "explode" //name of the proc thats called when the mine is triggered
var/triggered = 0
/obj/effect/mine/dnascramble
name = "Radiation Mine"
icon_state = "uglymine"
triggerproc = "triggerrad"
/obj/effect/mine/plasma
name = "Plasma Mine"
icon_state = "uglymine"
triggerproc = "triggerplasma"
/obj/effect/mine/kick
name = "Kick Mine"
icon_state = "uglymine"
triggerproc = "triggerkick"
/obj/effect/mine/n2o
name = "N2O Mine"
icon_state = "uglymine"
triggerproc = "triggern2o"
/obj/effect/mine/stun
name = "Stun Mine"
icon_state = "uglymine"
triggerproc = "triggerstun"
/obj/effect/overlay
name = "overlay"
unacidable = 1
var/i_attached//Added for possible image attachments to objects. For hallucinations and the like.
/obj/effect/overlay/beam//Not actually a projectile, just an effect.
name="beam"
icon='icons/effects/beam.dmi'
icon_state="b_beam"
var/tmp/atom/BeamSource
New()
..()
spawn(10) del src
/obj/effect/portal
name = "portal"
desc = "Looks unstable. Best to test it with the clown."
icon = 'icons/obj/stationobjs.dmi'
icon_state = "portal"
density = 1
unacidable = 1//Can't destroy energy portals.
var/failchance = 5
var/obj/item/target = null
var/creator = null
anchored = 1.0
/obj/effect/projection
name = "Projection"
desc = "This looks like a projection of something."
anchored = 1.0
/obj/structure/rack
name = "rack"
desc = "Different from the Middle Ages version."
icon = 'icons/obj/objects.dmi'
icon_state = "rack"
density = 1
flags = FPRINT
anchored = 1.0
throwpass = 1 //You can throw objects over this, despite it's density.
/obj/effect/shut_controller
name = "shut controller"
var/moving = null
var/list/parts = list( )
/obj/effect/landmark/start
name = "start"
icon = 'icons/mob/screen1.dmi'
icon_state = "x"
anchored = 1.0
/obj/structure/stool
name = "stool"
desc = "Apply butt."
icon = 'icons/obj/objects.dmi'
icon_state = "stool"
anchored = 1.0
flags = FPRINT
pressure_resistance = 3*ONE_ATMOSPHERE
/obj/structure/stool/bed
name = "bed"
desc = "This is used to lie in, sleep in or strap on."
icon_state = "bed"
var/mob/living/buckled_mob
/obj/structure/stool/bed/alien
name = "resting contraption"
desc = "This looks similar to contraptions from earth. Could aliens be stealing our technology?"
icon_state = "abed"
/obj/structure/stool/bed/nest
name = "alien nest"
desc = "It's a gruesome pile of thick, sticky resin shaped like a nest."
icon = 'icons/mob/alien.dmi'
icon_state = "nest"
var/health = 100
/obj/structure/stool/bed/chair //YES, chairs are a type of bed, which are a type of stool. This works, believe me. -Pete
name = "chair"
desc = "You sit in this. Either by will or force."
icon_state = "chair"
/obj/structure/stool/bed/chair/comfy
name = "comfy chair"
desc = "It looks comfy."
/obj/structure/stool/bed/chair/comfy/brown
icon_state = "comfychair_brown"
/obj/structure/stool/bed/chair/comfy/beige
icon_state = "comfychair_beige"
/obj/structure/stool/bed/chair/comfy/teal
icon_state = "comfychair_teal"
/obj/structure/stool/bed/chair/office
anchored = 0
/obj/structure/stool/bed/chair/comfy/black
icon_state = "comfychair_black"
/obj/structure/stool/bed/chair/comfy/lime
icon_state = "comfychair_lime"
/obj/structure/stool/bed/chair/office/Move()
..()
if(buckled_mob)
if(buckled_mob.buckled == src)
buckled_mob.loc = src.loc
buckled_mob.dir = src.dir
/obj/structure/stool/bed/chair/office/light
icon_state = "officechair_white"
/obj/structure/stool/bed/chair/office/dark
icon_state = "officechair_dark"
/obj/structure/table
name = "table"
desc = "A square piece of metal standing on four metal legs. It can not move."
icon = 'icons/obj/structures.dmi'
icon_state = "table"
density = 1
anchored = 1.0
layer = 2.8
throwpass = 1 //You can throw objects over this, despite it's density.")
/obj/structure/table/New()
..()
for(var/obj/structure/table/T in src.loc)
if(T != src)
del(T)
update_icon()
for(var/direction in list(1,2,4,8,5,6,9,10))
if(locate(/obj/structure/table,get_step(src,direction)))
var/obj/structure/table/T = locate(/obj/structure/table,get_step(src,direction))
T.update_icon()
/obj/structure/table/Del()
for(var/direction in list(1,2,4,8,5,6,9,10))
if(locate(/obj/structure/table,get_step(src,direction)))
var/obj/structure/table/T = locate(/obj/structure/table,get_step(src,direction))
T.update_icon()
..()
/obj/structure/table/update_icon()
spawn(2) //So it properly updates when deleting
var/dir_sum = 0
for(var/direction in list(1,2,4,8,5,6,9,10))
var/skip_sum = 0
for(var/obj/structure/window/W in src.loc)
if(W.dir == direction) //So smooth tables don't go smooth through windows
skip_sum = 1
continue
var/inv_direction //inverse direction
switch(direction)
if(1)
inv_direction = 2
if(2)
inv_direction = 1
if(4)
inv_direction = 8
if(8)
inv_direction = 4
if(5)
inv_direction = 10
if(6)
inv_direction = 9
if(9)
inv_direction = 6
if(10)
inv_direction = 5
for(var/obj/structure/window/W in get_step(src,direction))
if(W.dir == inv_direction) //So smooth tables don't go smooth through windows when the window is on the other table's tile
skip_sum = 1
continue
if(!skip_sum) //means there is a window between the two tiles in this direction
if(locate(/obj/structure/table,get_step(src,direction)))
if(direction <5)
dir_sum += direction
else
if(direction == 5) //This permits the use of all table directions. (Set up so clockwise around the central table is a higher value, from north)
dir_sum += 16
if(direction == 6)
dir_sum += 32
if(direction == 8) //Aherp and Aderp. Jezes I am stupid. -- SkyMarshal
dir_sum += 8
if(direction == 10)
dir_sum += 64
if(direction == 9)
dir_sum += 128
var/table_type = 0 //stand_alone table
if(dir_sum%16 in cardinal)
table_type = 1 //endtable
dir_sum %= 16
if(dir_sum%16 in list(3,12))
table_type = 2 //1 tile thick, streight table
if(dir_sum%16 == 3) //3 doesn't exist as a dir
dir_sum = 2
if(dir_sum%16 == 12) //12 doesn't exist as a dir.
dir_sum = 4
if(dir_sum%16 in list(5,6,9,10))
if(locate(/obj/structure/table,get_step(src.loc,dir_sum%16)))
table_type = 3 //full table (not the 1 tile thick one, but one of the 'tabledir' tables)
else
table_type = 2 //1 tile thick, corner table (treated the same as streight tables in code later on)
dir_sum %= 16
if(dir_sum%16 in list(13,14,7,11)) //Three-way intersection
table_type = 5 //full table as three-way intersections are not sprited, would require 64 sprites to handle all combinations. TOO BAD -- SkyMarshal
switch(dir_sum%16) //Begin computation of the special type tables. --SkyMarshal
if(7)
if(dir_sum == 23)
table_type = 6
dir_sum = 8
else if(dir_sum == 39)
dir_sum = 4
table_type = 6
else if(dir_sum == 55 || dir_sum == 119 || dir_sum == 247 || dir_sum == 183)
dir_sum = 4
table_type = 3
else
dir_sum = 4
if(11)
if(dir_sum == 75)
dir_sum = 5
table_type = 6
else if(dir_sum == 139)
dir_sum = 9
table_type = 6
else if(dir_sum == 203 || dir_sum == 219 || dir_sum == 251 || dir_sum == 235)
dir_sum = 8
table_type = 3
else
dir_sum = 8
if(13)
if(dir_sum == 29)
dir_sum = 10
table_type = 6
else if(dir_sum == 141)
dir_sum = 6
table_type = 6
else if(dir_sum == 189 || dir_sum == 221 || dir_sum == 253 || dir_sum == 157)
dir_sum = 1
table_type = 3
else
dir_sum = 1
if(14)
if(dir_sum == 46)
dir_sum = 1
table_type = 6
else if(dir_sum == 78)
dir_sum = 2
table_type = 6
else if(dir_sum == 110 || dir_sum == 254 || dir_sum == 238 || dir_sum == 126)
dir_sum = 2
table_type = 3
else
dir_sum = 2 //These translate the dir_sum to the correct dirs from the 'tabledir' icon_state.
if(dir_sum%16 == 15)
table_type = 4 //4-way intersection, the 'middle' table sprites will be used.
if(istype(src,/obj/structure/table/reinforced))
switch(table_type)
if(0)
icon_state = "reinf_table"
if(1)
icon_state = "reinf_1tileendtable"
if(2)
icon_state = "reinf_1tilethick"
if(3)
icon_state = "reinf_tabledir"
if(4)
icon_state = "reinf_middle"
if(5)
icon_state = "reinf_tabledir2"
if(6)
icon_state = "reinf_tabledir3"
else if(istype(src,/obj/structure/table/woodentable))
switch(table_type)
if(0)
icon_state = "wood_table"
if(1)
icon_state = "wood_1tileendtable"
if(2)
icon_state = "wood_1tilethick"
if(3)
icon_state = "wood_tabledir"
if(4)
icon_state = "wood_middle"
if(5)
icon_state = "wood_tabledir2"
if(6)
icon_state = "wood_tabledir3"
else
switch(table_type)
if(0)
icon_state = "table"
if(1)
icon_state = "table_1tileendtable"
if(2)
icon_state = "table_1tilethick"
if(3)
icon_state = "tabledir"
if(4)
icon_state = "table_middle"
if(5)
icon_state = "tabledir2"
if(6)
icon_state = "tabledir3"
if (dir_sum in list(1,2,4,8,5,6,9,10))
dir = dir_sum
else
dir = 2
/obj/structure/table/reinforced
name = "reinforced table"
desc = "A version of the four legged table. It is stronger."
icon_state = "reinf_table"
var/status = 2
/obj/structure/table/woodentable
name = "wooden table"
desc = "Do not apply fire to this. Rumour says it burns easily."
icon_state = "wood_table"
/obj/structure/mopbucket
desc = "Fill it with water, but don't forget a mop!"
name = "mop bucket"
icon = 'icons/obj/janitor.dmi'
icon_state = "mopbucket"
density = 1
flags = FPRINT
pressure_resistance = ONE_ATMOSPHERE
flags = FPRINT | TABLEPASS | OPENCONTAINER
var/amount_per_transfer_from_this = 5 //shit I dunno, adding this so syringes stop runtime erroring. --NeoFite
/obj/structure/kitchenspike
name = "a meat spike"
icon = 'icons/obj/kitchen.dmi'
icon_state = "spike"
desc = "A spike for collecting meat from animals"
density = 1
anchored = 1
var/meat = 0
var/occupied = 0
var/meattype = 0 // 0 - Nothing, 1 - Monkey, 2 - Xeno
/obj/structure/displaycase
name = "Display Case"
icon = 'icons/obj/stationobjs.dmi'
icon_state = "glassbox1"
desc = "A display case for prized possessions. It taunts you to kick it."
density = 1
anchored = 1
unacidable = 1//Dissolving the case would also delete the gun.
var/health = 30
var/occupied = 1
var/destroyed = 0
/obj/effect/showcase
name = "Showcase"
icon = 'icons/obj/stationobjs.dmi'
icon_state = "showcase_1"
desc = "A stand with the empty body of a cyborg bolted to it."
density = 1
anchored = 1
unacidable = 1//temporary until I decide whether the borg can be removed. -veyveyr
//BEGIN BRAINS=====================================================
/obj/item/brain
name = "brain"
desc = "A piece of juicy meat found in a persons head."
icon = 'icons/obj/surgery.dmi'
icon_state = "brain2"
flags = TABLEPASS
force = 1.0
w_class = 1.0
throwforce = 1.0
throw_speed = 3
throw_range = 5
origin_tech = "biotech=3"
attack_verb = list("attacked", "slapped", "whacked")
var/mob/living/carbon/brain/brainmob = null
New()
..()
//Shifting the brain "mob" over to the brain object so it's easier to keep track of. --NEO
//WASSSSSUUUPPPP /N
spawn(5)
if(brainmob && brainmob.client)
brainmob.client.screen.len = null //clear the hud
proc
transfer_identity(var/mob/living/carbon/human/H)
name = "[H]'s brain"
brainmob = new(src)
brainmob.name = H.real_name
brainmob.real_name = H.real_name
brainmob.dna = H.dna
brainmob.timeofhostdeath = H.timeofdeath
if(H.mind)
H.mind.transfer_to(brainmob)
brainmob << "\blue You might feel slightly disoriented. That's normal when your brain gets cut out."
return
//END BRAINS=====================================================
// Basically this Metroid Core catalyzes reactions that normally wouldn't happen anywhere
/obj/item/metroid_core
name = "metroid core"
desc = "A very slimy and tender part of a Metroid. They also legend to have \"magical powers\"."
icon = 'icons/obj/surgery.dmi'
icon_state = "metroid core"
flags = TABLEPASS
force = 1.0
w_class = 1.0
throwforce = 1.0
throw_speed = 3
throw_range = 6
origin_tech = "biotech=4"
var/POWERFLAG = 0 // sshhhhhhh
var/Flush = 30
var/Uses = 5 // uses before it goes inert
New()
..()
var/datum/reagents/R = new/datum/reagents(100)
reagents = R
R.my_atom = src
POWERFLAG = rand(1,10)
Uses = rand(7, 25)
//flags |= NOREACT
spawn()
Life()
proc/Life()
while(src)
sleep(25)
Flush--
if(Flush <= 0)
reagents.clear_reagents()
Flush = 30
/obj/structure/noticeboard
name = "Notice Board"
icon = 'icons/obj/stationobjs.dmi'
icon_state = "nboard00"
flags = FPRINT
desc = "A board for pinning important notices upon."
density = 0
anchored = 1
var/notices = 0
/obj/effect/deskclutter
name = "desk clutter"
icon = 'icons/obj/items.dmi'
icon_state = "deskclutter"
desc = "Some clutter the detective has accumalated over the years..."
anchored = 1
/obj/item/mouse_drag_pointer = MOUSE_ACTIVE_POINTER
// TODO: robust mixology system! (and merge with beakers, maybe)
/obj/item/weapon/glass
name = "empty glass"
desc = "Emptysville."
icon = 'icons/obj/kitchen.dmi'
icon_state = "glass_empty"
item_state = "beaker"
flags = FPRINT | TABLEPASS | OPENCONTAINER
var/datum/substance/inside = null
throwforce = 5
g_amt = 100
New()
..()
src.pixel_x = rand(-5, 5)
src.pixel_y = rand(-5, 5)
/*
/obj/item/weapon/storage/glassbox
name = "Glassware Box"
icon_state = "beakerbox"
item_state = "syringe_kit"
New()
..()
new /obj/item/weapon/glass( src )
new /obj/item/weapon/glass( src )
new /obj/item/weapon/glass( src )
new /obj/item/weapon/glass( src )
new /obj/item/weapon/glass( src )
new /obj/item/weapon/glass( src )
new /obj/item/weapon/glass( src )
*/
/obj/structure/falsewall
name = "wall"
desc = "A huge chunk of metal used to seperate rooms."
icon = 'icons/turf/walls.dmi'
icon_state = ""
density = 1
opacity = 1
anchored = 1
/obj/structure/falsewall/gold
name = "gold wall"
desc = "A wall with gold plating. Swag"
icon_state = ""
/obj/structure/falsewall/silver
name = "silver wall"
desc = "A wall with silver plating. Shiny"
icon_state = ""
/obj/structure/falsewall/diamond
name = "diamond wall"
desc = "A wall with diamond plating. You monster"
icon_state = ""
/obj/structure/falsewall/uranium
name = "uranium wall"
desc = "A wall with uranium plating. This is probably a bad idea"
icon_state = ""
/obj/structure/falsewall/plasma
name = "plasma wall"
desc = "A wall with plasma plating. This is definately a bad idea"
icon_state = ""
/obj/structure/falsewall/bananium
name = "bananium wall"
desc = "A wall with bananium plating. Honk"
icon_state = ""
/obj/structure/falsewall/sand
name = "sandstone wall"
desc = "A wall with sandstone plating."
icon_state = ""
/*/obj/structure/falsewall/wood
name = "wooden wall"
desc = "A wall with classy wooden paneling."
icon_state = ""*/
/obj/structure/falserwall
name = "r wall"
desc = "A huge chunk of reinforced metal used to seperate rooms."
icon = 'icons/turf/walls.dmi'
icon_state = "r_wall"
density = 1
opacity = 1
anchored = 1
/obj/item/stack
var/singular_name
var/amount = 1
var/max_amount //also see stack recipes initialisation, param "max_res_amount" must be equal to this max_amount
/obj/item/stack/rods
name = "metal rods"
desc = "Some rods. Can be used for building, or something."
singular_name = "metal rod"
icon_state = "rods"
flags = FPRINT | TABLEPASS| CONDUCT
w_class = 3.0
force = 9.0
throwforce = 15.0
throw_speed = 5
throw_range = 20
m_amt = 1875
max_amount = 60
attack_verb = list("hit", "bludgeoned", "whacked")
/obj/item/stack/sheet
name = "sheet"
// var/const/length = 2.5 //2.5*1.5*0.01*100000 == 3750 == m_amt
// var/const/width = 1.5
// var/const/height = 0.01
flags = FPRINT | TABLEPASS
w_class = 3.0
force = 5
throwforce = 5
max_amount = 50
throw_speed = 3
throw_range = 3
attack_verb = list("bashed", "battered", "bludgeoned", "thrashed", "smashed")
var/perunit = 3750
/obj/item/stack/sheet/attackby(obj/item/weapon/W as obj, mob/user as mob)
if (istype(W, /obj/item/weapon/sheetsnatcher))
var/obj/item/weapon/sheetsnatcher/S = W
if(!S.mode)
S.add(src,user)
else
for (var/obj/item/stack/sheet/stack in locate(src.x,src.y,src.z))
S.add(stack,user)
..()
/obj/item/stack/sheet/wood
name = "wooden planks"
desc = "One can only guess that this is a bunch of wood."
singular_name = "wood plank"
icon_state = "sheet-wood"
origin_tech = "materials=1;biotech=1"
/obj/item/stack/sheet/sandstone
name = "sandstone bricks"
desc = "This appears to be a combination of both sand and stone."
singular_name = "sandstone brick"
icon_state = "sheet-sandstone"
throw_speed = 4
throw_range = 5
origin_tech = "materials=1"
/obj/item/stack/sheet/glass
name = "glass"
desc = "HOLY HELL! That is a lot of glass."
singular_name = "glass sheet"
icon_state = "sheet-glass"
g_amt = 3750
origin_tech = "materials=1"
/obj/item/stack/sheet/rglass
name = "reinforced glass"
desc = "Glass which seems to have rods or something stuck in them."
singular_name = "reinforced glass sheet"
icon_state = "sheet-rglass"
g_amt = 3750
m_amt = 1875
origin_tech = "materials=2"
/obj/item/stack/sheet/rglass/cyborg
name = "reinforced glass"
desc = "Glass which seems to have rods or something stuck in them."
singular_name = "reinforced glass sheet"
icon_state = "sheet-rglass"
g_amt = 0
m_amt = 0
/obj/item/stack/sheet/cloth
name = "cloth"
desc = "This roll of cloth is made from only the finest chemicals and bunny rabbits."
singular_name = "cloth roll"
icon_state = "sheet-cloth"
origin_tech = "materials=2"
/obj/item/stack/sheet/metal
name = "metal"
desc = "Sheets made out off metal. It has been dubbed Metal Sheets."
singular_name = "metal sheet"
icon_state = "sheet-metal"
m_amt = 3750
throwforce = 14.0
flags = FPRINT | TABLEPASS | CONDUCT
origin_tech = "materials=1"
/obj/item/stack/sheet/metal/cyborg
name = "metal"
desc = "Sheets made out off metal. It has been dubbed Metal Sheets."
singular_name = "metal sheet"
icon_state = "sheet-metal"
m_amt = 0
throwforce = 14.0
flags = FPRINT | TABLEPASS | CONDUCT
/obj/item/stack/sheet/plasteel
name = "plasteel"
singular_name = "plasteel sheet"
desc = "This sheet is an alloy of iron and plasma."
icon_state = "sheet-plasteel"
item_state = "sheet-metal"
m_amt = 7500
throwforce = 15.0
flags = FPRINT | TABLEPASS | CONDUCT
origin_tech = "materials=2"
/obj/item/stack/tile/plasteel
name = "floor tiles"
singular_name = "floor tile"
desc = "Those could work as a pretty decent throwing weapon"
icon_state = "tile"
w_class = 3.0
force = 6.0
m_amt = 937.5
throwforce = 15.0
throw_speed = 5
throw_range = 20
flags = FPRINT | TABLEPASS | CONDUCT
max_amount = 60
/obj/item/stack/tile/grass
name = "grass tiles"
singular_name = "grass floor tile"
desc = "A patch of grass like they often use on golf courses"
icon_state = "tile_grass"
w_class = 3.0
force = 1.0
throwforce = 1.0
throw_speed = 5
throw_range = 20
flags = FPRINT | TABLEPASS | CONDUCT
max_amount = 60
origin_tech = "biotech=1"
/obj/item/stack/tile/wood
name = "wood floor tiles"
singular_name = "wood floor tile"
desc = "an easy to fit wood floor tile"
icon_state = "tile-wood"
w_class = 3.0
force = 1.0
throwforce = 1.0
throw_speed = 5
throw_range = 20
flags = FPRINT | TABLEPASS | CONDUCT
max_amount = 60
/obj/item/stack/light_w
name = "wired glass tiles"
singular_name = "wired glass floor tile"
desc = "A glass tile, which is wired, somehow."
icon_state = "glass_wire"
w_class = 3.0
force = 3.0
throwforce = 5.0
throw_speed = 5
throw_range = 20
flags = FPRINT | TABLEPASS | CONDUCT
max_amount = 60
attackby(var/obj/item/O as obj, var/mob/user as mob)
..()
if(istype(O,/obj/item/weapon/wirecutters))
var/obj/item/weapon/cable_coil/CC = new/obj/item/weapon/cable_coil(user.loc)
CC.amount = 5
amount--
new/obj/item/stack/sheet/glass(user.loc)
if(amount <= 0)
user.drop_from_inventory(src)
del(src)
if(istype(O,/obj/item/stack/sheet/metal))
var/obj/item/stack/sheet/metal/M = O
M.amount--
if(M.amount <= 0)
user.drop_from_inventory(M)
del(M)
amount--
new/obj/item/stack/tile/light(user.loc)
if(amount <= 0)
user.drop_from_inventory(src)
del(src)
/obj/item/stack/tile/light
name = "light tiles"
singular_name = "light floor tile"
desc = "A floor tile, made out off glass. It produces light."
icon_state = "tile_e"
w_class = 3.0
force = 3.0
throwforce = 5.0
throw_speed = 5
throw_range = 20
flags = FPRINT | TABLEPASS | CONDUCT
max_amount = 60
attack_verb = list("bashed", "battered", "bludgeoned", "thrashed", "smashed")
var/on = 1
var/state //0 = fine, 1 = flickering, 2 = breaking, 3 = broken
New()
..()
if(prob(5))
state = 3 //broken
else if(prob(5))
state = 2 //breaking
else if(prob(10))
state = 1 //flickering occasionally
else
state = 0 //fine
attackby(var/obj/item/O as obj, var/mob/user as mob)
..()
if(istype(O,/obj/item/weapon/crowbar))
new/obj/item/stack/sheet/metal(user.loc)
amount--
new/obj/item/stack/light_w(user.loc)
if(amount <= 0)
user.drop_from_inventory(src)
del(src)
/obj/item/stack/sheet/cardboard //BubbleWrap
name = "cardboard"
desc = "Large sheets of card, like boxes folded flat."
singular_name = "cardboard sheet"
icon_state = "sheet-card"
flags = FPRINT | TABLEPASS
origin_tech = "materials=1"
/obj/item/weapon/beach_ball
icon = 'icons/misc/beach.dmi'
icon_state = "ball"
name = "beach ball"
item_state = "beachball"
density = 0
anchored = 0
w_class = 1.0
force = 0.0
throwforce = 0.0
throw_speed = 1
throw_range = 20
flags = FPRINT | USEDELAY | TABLEPASS | CONDUCT
afterattack(atom/target as mob|obj|turf|area, mob/user as mob)
user.drop_item()
src.throw_at(target, throw_range, throw_speed)
/obj/effect/stop
var/victim = null
icon_state = "empty"
name = "Geas"
desc = "You can't resist."
// name = ""
/obj/item/clothing
name = "clothing"
/obj/effect/spawner
name = "object spawner"