diff --git a/code/defines/obj/weapon.dm b/code/defines/obj/weapon.dm
index 00524b0aa80..4ab016f5b13 100644
--- a/code/defines/obj/weapon.dm
+++ b/code/defines/obj/weapon.dm
@@ -1,10 +1,3 @@
-/obj/item/weapon
- name = "weapon"
- icon = 'icons/obj/weapons.dmi'
-
-/obj/item/weapon/shield
- name = "shield"
-
/obj/item/weapon/phone
name = "red phone"
desc = "Should anything ever go wrong..."
@@ -19,132 +12,6 @@
attack_verb = list("called", "rang")
hitsound = 'sound/weapons/ring.ogg'
-/obj/item/weapon/shield/riot
- name = "riot shield"
- desc = "A shield adept at blocking blunt objects from connecting with the torso of the shield wielder."
- icon = 'icons/obj/weapons.dmi'
- icon_state = "riot"
- flags = FPRINT | TABLEPASS| CONDUCT
- slot_flags = SLOT_BACK
- force = 5.0
- throwforce = 5.0
- throw_speed = 1
- throw_range = 4
- w_class = 4.0
- g_amt = 7500
- m_amt = 1000
- origin_tech = "materials=2"
- attack_verb = list("shoved", "bashed")
- var/cooldown = 0 //shield bash cooldown. based on world.time
-
- IsShield()
- return 1
-
- attackby(obj/item/weapon/W as obj, mob/user as mob)
- if(istype(W, /obj/item/weapon/melee/baton))
- if(cooldown < world.time - 25)
- user.visible_message("[user] bashes [src] with [W]!")
- playsound(user.loc, 'sound/effects/shieldbash.ogg', 50, 1)
- cooldown = world.time
- else
- ..()
-
-/obj/item/weapon/shield/energy
- name = "energy combat shield"
- desc = "A shield capable of stopping most projectile and melee attacks. It can be retracted, expanded, and stored anywhere."
- icon = 'icons/obj/weapons.dmi'
- icon_state = "eshield0" // eshield1 for expanded
- flags = FPRINT | TABLEPASS| CONDUCT
- force = 3.0
- throwforce = 5.0
- throw_speed = 1
- throw_range = 4
- w_class = 1
- origin_tech = "materials=4;magnets=3;syndicate=4"
- attack_verb = list("shoved", "bashed")
- var/active = 0
-
-
-/obj/item/weapon/nullrod
- name = "null rod"
- 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 | TABLEPASS
- slot_flags = SLOT_BELT
- force = 15
- throw_speed = 1
- throw_range = 4
- throwforce = 10
- w_class = 1
-
-/obj/item/weapon/sord
- name = "\improper SORD"
- desc = "This thing is so unspeakably shitty you are having a hard time even holding it."
- icon_state = "sord"
- item_state = "sord"
- flags = FPRINT | TABLEPASS
- slot_flags = SLOT_BELT
- force = 2
- throwforce = 1
- w_class = 3
- attack_verb = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut")
-
-/obj/item/weapon/sord/attack(mob/living/carbon/M as mob, mob/living/carbon/user as mob)
- playsound(loc, 'sound/weapons/bladeslice.ogg', 50, 1, -1)
- return ..()
-
-/obj/item/weapon/claymore
- name = "claymore"
- desc = "What are you standing around staring at this for? Get to killing!"
- icon_state = "claymore"
- item_state = "claymore"
- flags = FPRINT | TABLEPASS | CONDUCT
- slot_flags = SLOT_BELT
- force = 40
- throwforce = 10
- w_class = 3
- attack_verb = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut")
-
- IsShield()
- return 1
-
-/obj/item/weapon/claymore/attack(mob/living/carbon/M as mob, mob/living/carbon/user as mob)
- playsound(loc, 'sound/weapons/bladeslice.ogg', 50, 1, -1)
- return ..()
-
-/obj/item/weapon/katana
- name = "katana"
- desc = "Woefully underpowered in D20"
- icon_state = "katana"
- item_state = "katana"
- flags = FPRINT | TABLEPASS | CONDUCT
- slot_flags = SLOT_BELT | SLOT_BACK
- force = 40
- throwforce = 10
- w_class = 3
- attack_verb = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut")
-
-/obj/item/weapon/katana/IsShield()
- return 1
-
-/obj/item/weapon/katana/attack(mob/living/carbon/M as mob, mob/living/carbon/user as mob)
- playsound(loc, 'sound/weapons/bladeslice.ogg', 50, 1, -1)
- return ..()
-
-/obj/item/weapon/rsf
- name = "\improper Rapid-Service-Fabricator"
- desc = "A device used to rapidly deploy service items."
- icon = 'icons/obj/items.dmi'
- icon_state = "rcd"
- opacity = 0
- density = 0
- anchored = 0.0
- var/matter = 0
- var/mode = 1
- flags = TABLEPASS
- w_class = 3.0
-
/obj/item/weapon/rsp
name = "\improper Rapid-Seed-Producer (RSP)"
desc = "A device used to rapidly deploy seeds."
@@ -158,18 +25,6 @@
flags = TABLEPASS
w_class = 3.0
-/obj/item/weapon/rcd_ammo
- name = "compressed matter cartridge"
- desc = "Highly compressed matter for the RCD."
- icon = 'icons/obj/ammo.dmi'
- icon_state = "rcd"
- item_state = "rcdammo"
- opacity = 0
- density = 0
- anchored = 0.0
- origin_tech = "materials=2"
- m_amt = 30000
- g_amt = 15000
/obj/item/weapon/spacecash
name = "space cash"
@@ -217,90 +72,6 @@
access = access_crate_cash
desc = "It's worth 1000 credits."
-/obj/item/device/mass_spectrometer
- desc = "A hand-held mass spectrometer which identifies trace chemicals in a blood sample."
- name = "mass-spectrometer"
- icon_state = "spectrometer"
- item_state = "analyzer"
- w_class = 2.0
- flags = FPRINT | TABLEPASS| CONDUCT | OPENCONTAINER
- slot_flags = SLOT_BELT
- throwforce = 5
- throw_speed = 4
- throw_range = 20
- m_amt = 30
- g_amt = 20
- origin_tech = "magnets=2;biotech=2"
- var/details = 0
- var/recent_fail = 0
-
-/obj/item/device/mass_spectrometer/adv
- name = "advanced mass-spectrometer"
- icon_state = "adv_spectrometer"
- details = 1
- origin_tech = "magnets=4;biotech=2"
-
-/obj/item/weapon/melee/chainofcommand
- name = "chain of command"
- desc = "A tool used by great men to placate the frothing masses."
- icon_state = "chain"
- item_state = "chain"
- flags = FPRINT | TABLEPASS | CONDUCT
- slot_flags = SLOT_BELT
- force = 10
- throwforce = 7
- w_class = 3
- origin_tech = "combat=4"
- attack_verb = list("flogged", "whipped", "lashed", "disciplined")
-
-/obj/item/weapon/melee/energy
- var/active = 0
-
-/obj/item/weapon/melee/energy/axe
- name = "energy axe"
- desc = "An energised battle axe."
- icon_state = "axe0"
- force = 40.0
- throwforce = 25.0
- throw_speed = 1
- throw_range = 5
- w_class = 3.0
- flags = FPRINT | CONDUCT | NOSHIELD | TABLEPASS
- origin_tech = "combat=3"
- attack_verb = list("attacked", "chopped", "cleaved", "torn", "cut")
-
-/obj/item/weapon/melee/energy/sword
- color
- name = "energy sword"
- desc = "May the force be within you."
- icon_state = "sword0"
- force = 3.0
- throwforce = 5.0
- throw_speed = 1
- throw_range = 5
- w_class = 2.0
- flags = FPRINT | TABLEPASS | NOSHIELD
- origin_tech = "magnets=3;syndicate=4"
- attack_verb = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut")
-
-/obj/item/weapon/melee/energy/sword/pirate
- name = "energy cutlass"
- desc = "Arrrr matey."
- icon_state = "cutlass0"
-
-/obj/item/weapon/melee/energy/blade
- name = "energy blade"
- desc = "A concentrated beam of energy in the shape of a blade. Very stylish... and lethal."
- icon_state = "blade"
- force = 70.0//Normal attacks deal very high damage.
- throwforce = 1//Throwing or dropping the item deletes it.
- throw_speed = 1
- throw_range = 1
- w_class = 4.0//So you can't hide it in your pocket or some such.
- flags = FPRINT | TABLEPASS | NOSHIELD
- attack_verb = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut")
- var/datum/effect/effect/system/spark_spread/spark_system
-
/obj/item/weapon/bananapeel
name = "banana peel"
desc = "A peel from a banana."
@@ -359,34 +130,6 @@
attack_verb = list("HONKED")
var/spam_flag = 0
-/obj/item/stack/medical
- name = "medical pack"
- singular_name = "medical pack"
- icon = 'icons/obj/items.dmi'
- amount = 5
- max_amount = 5
- w_class = 1
- throw_speed = 4
- throw_range = 20
- var/heal_brute = 0
- var/heal_burn = 0
-
-/obj/item/stack/medical/bruise_pack
- name = "bruise pack"
- singular_name = "bruise pack"
- desc = "A pack designed to treat blunt-force trauma."
- icon_state = "brutepack"
- heal_brute = 60
- origin_tech = "biotech=1"
-
-/obj/item/stack/medical/ointment
- name = "ointment"
- desc = "Used to treat those nasty burns."
- gender = PLURAL
- singular_name = "ointment"
- icon_state = "ointment"
- heal_burn = 40
- origin_tech = "biotech=1"
/obj/item/weapon/c_tube
name = "cardboard tube"
@@ -398,181 +141,6 @@
throw_speed = 4
throw_range = 5
-/obj/item/weapon/card
- name = "card"
- desc = "Does card things."
- icon = 'icons/obj/card.dmi'
- w_class = 1.0
-
- var/list/files = list( )
-
-/obj/item/weapon/card/data
- name = "data disk"
- desc = "A disk of data."
- icon_state = "data"
- var/function = "storage"
- var/data = "null"
- var/special = null
- item_state = "card-id"
-
-/obj/item/weapon/card/data/clown
- name = "coordinates to clown planet"
- icon_state = "data"
- item_state = "card-id"
- layer = 3
- level = 2
- desc = "This card contains coordinates to the fabled Clown Planet. Handle with care."
- function = "teleporter"
- data = "Clown Land"
-
-/obj/item/weapon/card/emag
- desc = "It's a card with a magnetic strip attached to some circuitry."
- name = "cryptographic sequencer"
- icon_state = "emag"
- item_state = "card-id"
- origin_tech = "magnets=2;syndicate=2"
-
-/obj/item/weapon/card/id
- name = "identification card"
- desc = "A card used to provide ID and determine access across the station."
- icon_state = "id"
- item_state = "card-id"
- var/access = list()
- var/registered_name = null // The name registered_name on the card
- slot_flags = SLOT_ID
-
- var/assignment = null
- var/dorm = 0 // determines if this ID has claimed a dorm already
-
-/obj/item/weapon/card/id/silver
- name = "identification card"
- desc = "A silver card which shows honour and dedication."
- icon_state = "silver"
- item_state = "silver_id"
-
-/obj/item/weapon/card/id/gold
- name = "identification card"
- desc = "A golden card which shows power and might."
- icon_state = "gold"
- item_state = "gold_id"
-
-/obj/item/weapon/card/id/syndicate
- name = "agent card"
- access = list(access_maint_tunnels, access_syndicate)
- origin_tech = "syndicate=3"
-
-/obj/item/weapon/card/id/syndicate/afterattack(var/obj/item/weapon/O as obj, mob/user as mob)
- if(istype(O, /obj/item/weapon/card/id))
- var/obj/item/weapon/card/id/I = O
- src.access |= I.access
- if(istype(user, /mob/living) && user.mind)
- if(user.mind.special_role)
- usr << "\blue The card's microscanners activate as you pass it over the ID, copying its access."
-
-
-/obj/item/weapon/card/id/syndicate_command
- name = "syndicate ID card"
- desc = "An ID straight from the Syndicate."
- registered_name = "Syndicate"
- assignment = "Syndicate Overlord"
- access = list(access_syndicate)
-
-/obj/item/weapon/card/id/captains_spare
- name = "captain's spare ID"
- desc = "The spare ID of the High Lord himself."
- icon_state = "gold"
- item_state = "gold_id"
- registered_name = "Captain"
- assignment = "Captain"
- New()
- access = get_access("Captain")
- ..()
-
-/obj/item/weapon/card/id/centcom
- name = "\improper CentCom. ID"
- desc = "An ID straight from Cent. Com."
- icon_state = "centcom"
- registered_name = "Central Command"
- assignment = "General"
- New()
- access = get_all_centcom_access()
- ..()
-
-#define MAXCOIL 30
-/obj/item/weapon/cable_coil
- name = "cable coil"
- icon = 'icons/obj/power.dmi'
- icon_state = "coil_red"
- var/amount = MAXCOIL
- color = "red"
- desc = "A coil of power cable."
- throwforce = 10
- w_class = 2.0
- throw_speed = 2
- throw_range = 5
- m_amt = 50
- g_amt = 20
- flags = TABLEPASS | USEDELAY | FPRINT | CONDUCT
- slot_flags = SLOT_BELT
- item_state = "coil_red"
- attack_verb = list("whipped", "lashed", "disciplined", "flogged")
-
-/obj/item/weapon/cable_coil/cut
- item_state = "coil_red2"
-
-/obj/item/weapon/cable_coil/yellow
- color = "yellow"
- icon_state = "coil_yellow"
-
-/obj/item/weapon/cable_coil/blue
- color = "blue"
- icon_state = "coil_blue"
-
-/obj/item/weapon/cable_coil/green
- color = "green"
- icon_state = "coil_green"
-
-/obj/item/weapon/cable_coil/pink
- color = "pink"
- icon_state = "coil_pink"
-
-/obj/item/weapon/cable_coil/orange
- color = "orange"
- icon_state = "coil_orange"
-
-/obj/item/weapon/cable_coil/cyan
- color = "cyan"
- icon_state = "coil_cyan"
-
-/obj/item/weapon/cable_coil/white
- color = "white"
- icon_state = "coil_white"
-
-/obj/item/weapon/cable_coil/random/New()
- color = pick("red","yellow","green","blue","pink")
- icon_state = "coil_[color]"
- ..()
-
-
-/obj/item/weapon/crowbar
- name = "crowbar"
- desc = "Used to hit floors"
- icon = 'icons/obj/items.dmi'
- icon_state = "crowbar"
- flags = FPRINT | TABLEPASS| CONDUCT
- slot_flags = SLOT_BELT
- force = 5.0
- throwforce = 7.0
- item_state = "crowbar"
- w_class = 2.0
- m_amt = 50
- origin_tech = "engineering=1"
- attack_verb = list("attacked", "bashed", "battered", "bludgeoned", "whacked")
-
-/obj/item/weapon/crowbar/red
- icon = 'icons/obj/items.dmi'
- icon_state = "red_crowbar"
- item_state = "crowbar_red"
/obj/item/weapon/cane
name = "cane"
@@ -635,70 +203,6 @@
item_state = "gift"
w_class = 4.0
-/obj/item/weapon/hand_tele
- name = "hand tele"
- desc = "A portable item using blue-space technology."
- icon = 'icons/obj/device.dmi'
- icon_state = "hand_tele"
- item_state = "electronic"
- throwforce = 5
- w_class = 2.0
- throw_speed = 3
- throw_range = 5
- m_amt = 10000
- origin_tech = "magnets=1;bluespace=3"
-
-/obj/item/weapon/handcuffs
- name = "handcuffs"
- desc = "Use this to keep prisoners in line."
- gender = PLURAL
- icon = 'icons/obj/items.dmi'
- icon_state = "handcuff"
- flags = FPRINT | TABLEPASS | CONDUCT
- slot_flags = SLOT_BELT
- throwforce = 5
- w_class = 2.0
- throw_speed = 2
- throw_range = 5
- m_amt = 500
- origin_tech = "materials=1"
- var/dispenser = 0
- var/breakouttime = 1200 //Deciseconds = 120s = 2 minutes
-
-/obj/item/weapon/handcuffs/cable
- name = "cable restraints"
- desc = "Looks like some cables tied together. Could be used to tie something up."
- icon_state = "cuff_red"
- breakouttime = 300 //Deciseconds = 30s
-
-/obj/item/weapon/handcuffs/cable/red
- icon_state = "cuff_red"
-
-/obj/item/weapon/handcuffs/cable/yellow
- icon_state = "cuff_yellow"
-
-/obj/item/weapon/handcuffs/cable/blue
- icon_state = "cuff_blue"
-
-/obj/item/weapon/handcuffs/cable/green
- icon_state = "cuff_green"
-
-/obj/item/weapon/handcuffs/cable/pink
- icon_state = "cuff_pink"
-
-/obj/item/weapon/handcuffs/cable/orange
- icon_state = "cuff_orange"
-
-/obj/item/weapon/handcuffs/cable/cyan
- icon_state = "cuff_cyan"
-
-/obj/item/weapon/handcuffs/cable/white
- icon_state = "cuff_white"
-
-/obj/item/weapon/handcuffs/cyborg
- dispenser = 1
-
-
/obj/item/weapon/legcuffs
name = "legcuffs"
desc = "Use this to keep prisoners in line."
@@ -748,22 +252,7 @@
SA.health = 0
..()
-/obj/item/weapon/locator
- name = "locator"
- desc = "Used to track those with locater implants."
- icon = 'icons/obj/device.dmi'
- icon_state = "locator"
- var/temp = null
- var/frequency = 1451
- var/broadcasting = null
- var/listening = 1.0
- flags = FPRINT | TABLEPASS| CONDUCT
- w_class = 2.0
- item_state = "electronic"
- throw_speed = 4
- throw_range = 20
- m_amt = 400
- origin_tech = "magnets=1"
+
/obj/item/weapon/caution
desc = "Caution! Wet Floor!"
@@ -795,58 +284,6 @@
throw_range = 15
//layer = 4
-/obj/item/weapon/paper/Court
- name = "paper- 'Judgement'"
- info = "For crimes against the station, the offender is sentenced to:
\n
\n"
-
-/obj/item/weapon/paper/Toxin
- name = "paper- 'Chemical Information'"
- info = "Known Onboard Toxins:
\n\tGrade A Semi-Liquid Plasma:
\n\t\tHighly poisonous. You cannot sustain concentrations above 15 units.
\n\t\tA gas mask fails to filter plasma after 50 units.
\n\t\tWill attempt to diffuse like a gas.
\n\t\tFiltered by scrubbers.
\n\t\tThere is a bottled version which is very different
\n\t\t\tfrom the version found in canisters!
\n
\n\t\tWARNING: Highly Flammable. Keep away from heat sources
\n\t\texcept in a enclosed fire area!
\n\t\tWARNING: It is a crime to use this without authorization.
\nKnown Onboard Anti-Toxin:
\n\tAnti-Toxin Type 01P: Works against Grade A Plasma.
\n\t\tBest if injected directly into bloodstream.
\n\t\tA full injection is in every regular Med-Kit.
\n\t\tSpecial toxin Kits hold around 7.
\n
\nKnown Onboard Chemicals (other):
\n\tRejuvenation T#001:
\n\t\tEven 1 unit injected directly into the bloodstream
\n\t\t\twill cure paralysis and sleep toxins.
\n\t\tIf administered to a dying patient it will prevent
\n\t\t\tfurther damage for about units*3 seconds.
\n\t\t\tit will not cure them or allow them to be cured.
\n\t\tIt can be administeredd to a non-dying patient
\n\t\t\tbut the chemicals disappear just as fast.
\n\tSleep Toxin T#054:
\n\t\t5 units wilkl induce precisely 1 minute of sleep.
\n\t\t\tThe effect are cumulative.
\n\t\tWARNING: It is a crime to use this without authorization"
-
-/obj/item/weapon/paper/courtroom
- name = "paper- 'A Crash Course in Legal SOP on SS13'"
- info = "Roles:
\nThe Detective is basically the investigator and prosecutor.
\nThe Staff Assistant can perform these functions with written authority from the Detective.
\nThe Captain/HoP/Warden is ct as the judicial authority.
\nThe Security Officers are responsible for executing warrants, security during trial, and prisoner transport.
\n
\nInvestigative Phase:
\nAfter the crime has been committed the Detective's job is to gather evidence and try to ascertain not only who did it but what happened. He must take special care to catalogue everything and don't leave anything out. Write out all the evidence on paper. Make sure you take an appropriate number of fingerprints. IF he must ask someone questions he has permission to confront them. If the person refuses he can ask a judicial authority to write a subpoena for questioning. If again he fails to respond then that person is to be jailed as insubordinate and obstructing justice. Said person will be released after he cooperates.
\n
\nONCE the FT has a clear idea as to who the criminal is he is to write an arrest warrant on the piece of paper. IT MUST LIST THE CHARGES. The FT is to then go to the judicial authority and explain a small version of his case. If the case is moderately acceptable the authority should sign it. Security must then execute said warrant.
\n
\nPre-Pre-Trial Phase:
\nNow a legal representative must be presented to the defendant if said defendant requests one. That person and the defendant are then to be given time to meet (in the jail IS ACCEPTABLE). The defendant and his lawyer are then to be given a copy of all the evidence that will be presented at trial (rewriting it all on paper is fine). THIS IS CALLED THE DISCOVERY PACK. With a few exceptions, THIS IS THE ONLY EVIDENCE BOTH SIDES MAY USE AT TRIAL. IF the prosecution will be seeking the death penalty it MUST be stated at this time. ALSO if the defense will be seeking not guilty by mental defect it must state this at this time to allow ample time for examination.
\nNow at this time each side is to compile a list of witnesses. By default, the defendant is on both lists regardless of anything else. Also the defense and prosecution can compile more evidence beforehand BUT in order for it to be used the evidence MUST also be given to the other side.\nThe defense has time to compile motions against some evidence here.
\nPossible Motions:
\n1. Invalidate Evidence- Something with the evidence is wrong and the evidence is to be thrown out. This includes irrelevance or corrupt security.
\n2. Free Movement- Basically the defendant is to be kept uncuffed before and during the trial.
\n3. Subpoena Witness- If the defense presents god reasons for needing a witness but said person fails to cooperate then a subpoena is issued.
\n4. Drop the Charges- Not enough evidence is there for a trial so the charges are to be dropped. The FT CAN RETRY but the judicial authority must carefully reexamine the new evidence.
\n5. Declare Incompetent- Basically the defendant is insane. Once this is granted a medical official is to examine the patient. If he is indeed insane he is to be placed under care of the medical staff until he is deemed competent to stand trial.
\n
\nALL SIDES MOVE TO A COURTROOM
\nPre-Trial Hearings:
\nA judicial authority and the 2 sides are to meet in the trial room. NO ONE ELSE BESIDES A SECURITY DETAIL IS TO BE PRESENT. The defense submits a plea. If the plea is guilty then proceed directly to sentencing phase. Now the sides each present their motions to the judicial authority. He rules on them. Each side can debate each motion. Then the judicial authority gets a list of crew members. He first gets a chance to look at them all and pick out acceptable and available jurors. Those jurors are then called over. Each side can ask a few questions and dismiss jurors they find too biased. HOWEVER before dismissal the judicial authority MUST agree to the reasoning.
\n
\nThe Trial:
\nThe trial has three phases.
\n1. Opening Arguments- Each side can give a short speech. They may not present ANY evidence.
\n2. Witness Calling/Evidence Presentation- The prosecution goes first and is able to call the witnesses on his approved list in any order. He can recall them if necessary. During the questioning the lawyer may use the evidence in the questions to help prove a point. After every witness the other side has a chance to cross-examine. After both sides are done questioning a witness the prosecution can present another or recall one (even the EXACT same one again!). After prosecution is done the defense can call witnesses. After the initial cases are presented both sides are free to call witnesses on either list.
\nFINALLY once both sides are done calling witnesses we move onto the next phase.
\n3. Closing Arguments- Same as opening.
\nThe jury then deliberates IN PRIVATE. THEY MUST ALL AGREE on a verdict. REMEMBER: They mix between some charges being guilty and others not guilty (IE if you supposedly killed someone with a gun and you unfortunately picked up a gun without authorization then you CAN be found not guilty of murder BUT guilty of possession of illegal weaponry.). Once they have agreed they present their verdict. If unable to reach a verdict and feel they will never they call a deadlocked jury and we restart at Pre-Trial phase with an entirely new set of jurors.
\n
\nSentencing Phase:
\nIf the death penalty was sought (you MUST have gone through a trial for death penalty) then skip to the second part.
\nI. Each side can present more evidence/witnesses in any order. There is NO ban on emotional aspects or anything. The prosecution is to submit a suggested penalty. After all the sides are done then the judicial authority is to give a sentence.
\nII. The jury stays and does the same thing as I. Their sole job is to determine if the death penalty is applicable. If NOT then the judge selects a sentence.
\n
\nTADA you're done. Security then executes the sentence and adds the applicable convictions to the person's record.
\n"
-
-/obj/item/weapon/paper/hydroponics
- name = "paper- 'Greetings from Billy Bob'"
- info = "Hey fellow botanist!
\n
\nI didn't trust the station folk so I left
\na couple of weeks ago. But here's some
\ninstructions on how to operate things here.
\nYou can grow plants and each iteration they become
\nstronger, more potent and have better yield, if you
\nknow which ones to pick. Use your botanist's analyzer
\nfor that. You can turn harvested plants into seeds
\nat the seed extractor, and replant them for better stuff!
\nSometimes if the weed level gets high in the tray
\nmutations into different mushroom or weed species have
\nbeen witnessed. On the rare occassion even weeds mutate!
\n
\nEither way, have fun!
\n
\nBest regards,
\nBilly Bob Johnson.
\n
\nPS.
\nHere's a few tips:
\nIn nettles, potency = damage
\nIn amanitas, potency = deadliness + side effect
\nIn Liberty caps, potency = drug power + effect
\nIn chilis, potency = heat
\nNutrients keep mushrooms alive!
\nWater keeps weeds such as nettles alive!
\nAll other plants need both."
-
-/obj/item/weapon/paper/djstation
- name = "paper - 'DJ Listening Outpost'"
- info = "Welcome new owner!
You have purchased the latest in listening equipment. The telecommunication setup we created is the best in listening to common and private radio fequencies. Here is a step by step guide to start listening in on those saucy radio channels:
- Equip yourself with a multi-tool
- Use the multitool on each machine, that is the broadcaster, receiver and the relay.
- Turn all the machines on, it has already been configured for you to listen on.
Simple as that. Now to listen to the private channels, you'll have to configure the intercoms, located on the front desk. Here is a list of frequencies for you to listen on.
- 145.7 - Common Channel
- 144.7 - Private AI Channel
- 135.9 - Security Channel
- 135.7 - Engineering Channel
- 135.5 - Medical Channel
- 135.3 - Command Channel
- 135.1 - Science Channel
- 134.9 - Mining Channel
- 134.7 - Cargo Channel
"
-
-/obj/item/weapon/paper/flag
- icon_state = "flag_neutral"
- item_state = "paper"
- anchored = 1.0
-
-/obj/item/weapon/paper/jobs
- name = "paper- 'Job Information'"
- info = "Information on all formal jobs that can be assigned on Space Station 13 can be found on this document.
\nThe data will be in the following form.
\nGenerally lower ranking positions come first in this list.
\n
\nJob Name general access>lab access-engine access-systems access (atmosphere control)
\n\tJob Description
\nJob Duties (in no particular order)
\nTips (where applicable)
\n
\nResearch Assistant 1>1-0-0
\n\tThis is probably the lowest level position. Anyone who enters the space station after the initial job\nassignment will automatically receive this position. Access with this is restricted. Head of Personnel should\nappropriate the correct level of assistance.
\n1. Assist the researchers.
\n2. Clean up the labs.
\n3. Prepare materials.
\n
\nStaff Assistant 2>0-0-0
\n\tThis position assists the security officer in his duties. The staff assisstants should primarily br\npatrolling the ship waiting until they are needed to maintain ship safety.\n(Addendum: Updated/Elevated Security Protocols admit issuing of low level weapons to security personnel)
\n1. Patrol ship/Guard key areas
\n2. Assist security officer
\n3. Perform other security duties.
\n
\nTechnical Assistant 1>0-0-1
\n\tThis is yet another low level position. The technical assistant helps the engineer and the statian\ntechnician with the upkeep and maintenance of the station. This job is very important because it usually\ngets to be a heavy workload on station technician and these helpers will alleviate that.
\n1. Assist Station technician and Engineers.
\n2. Perform general maintenance of station.
\n3. Prepare materials.
\n
\nMedical Assistant 1>1-0-0
\n\tThis is the fourth position yet it is slightly less common. This position doesn't have much power\noutside of the med bay. Consider this position like a nurse who helps to upkeep medical records and the\nmaterials (filling syringes and checking vitals)
\n1. Assist the medical personnel.
\n2. Update medical files.
\n3. Prepare materials for medical operations.
\n
\nResearch Technician 2>3-0-0
\n\tThis job is primarily a step up from research assistant. These people generally do not get their own lab\nbut are more hands on in the experimentation process. At this level they are permitted to work as consultants to\nthe others formally.
\n1. Inform superiors of research.
\n2. Perform research alongside of official researchers.
\n
\nDetective 3>2-0-0
\n\tThis job is in most cases slightly boring at best. Their sole duty is to\nperform investigations of crine scenes and analysis of the crime scene. This\nalleviates SOME of the burden from the security officer. This person's duty\nis to draw conclusions as to what happened and testify in court. Said person\nalso should stroe the evidence ly.
\n1. Perform crime-scene investigations/draw conclusions.
\n2. Store and catalogue evidence properly.
\n3. Testify to superiors/inquieries on findings.
\n
\nStation Technician 2>0-2-3
\n\tPeople assigned to this position must work to make sure all the systems aboard Space Station 13 are operable.\nThey should primarily work in the computer lab and repairing faulty equipment. They should work with the\natmospheric technician.
\n1. Maintain SS13 systems.
\n2. Repair equipment.
\n
\nAtmospheric Technician 3>0-0-4
\n\tThese people should primarily work in the atmospheric control center and lab. They have the very important\njob of maintaining the delicate atmosphere on SS13.
\n1. Maintain atmosphere on SS13
\n2. Research atmospheres on the space station. (safely please!)
\n
\nEngineer 2>1-3-0
\n\tPeople working as this should generally have detailed knowledge as to how the propulsion systems on SS13\nwork. They are one of the few classes that have unrestricted access to the engine area.
\n1. Upkeep the engine.
\n2. Prevent fires in the engine.
\n3. Maintain a safe orbit.
\n
\nMedical Researcher 2>5-0-0
\n\tThis position may need a little clarification. Their duty is to make sure that all experiments are safe and\nto conduct experiments that may help to improve the station. They will be generally idle until a new laboratory\nis constructed.
\n1. Make sure the station is kept safe.
\n2. Research medical properties of materials studied of Space Station 13.
\n
\nScientist 2>5-0-0
\n\tThese people study the properties, particularly the toxic properties, of materials handled on SS13.\nTechnically they can also be called Plasma Technicians as plasma is the material they routinly handle.
\n1. Research plasma
\n2. Make sure all plasma is properly handled.
\n
\nMedical Doctor (Officer) 2>0-0-0
\n\tPeople working this job should primarily stay in the medical area. They should make sure everyone goes to\nthe medical bay for treatment and examination. Also they should make sure that medical supplies are kept in\norder.
\n1. Heal wounded people.
\n2. Perform examinations of all personnel.
\n3. Moniter usage of medical equipment.
\n
\nSecurity Officer 3>0-0-0
\n\tThese people should attempt to keep the peace inside the station and make sure the station is kept safe. One\nside duty is to assist in repairing the station. They also work like general maintenance personnel. They are not\ngiven a weapon and must use their own resources.
\n(Addendum: Updated/Elevated Security Protocols admit issuing of weapons to security personnel)
\n1. Maintain order.
\n2. Assist others.
\n3. Repair structural problems.
\n
\nHead of Security 4>5-2-2
\n\tPeople assigned as Head of Security should issue orders to the security staff. They should\nalso carefully moderate the usage of all security equipment. All security matters should be reported to this person.
\n1. Oversee security.
\n2. Assign patrol duties.
\n3. Protect the station and staff.
\n
\nHead of Personnel 4>4-2-2
\n\tPeople assigned as head of personnel will find themselves moderating all actions done by personnel. \nAlso they have the ability to assign jobs and access levels.
\n1. Assign duties.
\n2. Moderate personnel.
\n3. Moderate research.
\n
\nCaptain 5>5-5-5 (unrestricted station wide access)
\n\tThis is the highest position youi can aquire on Space Station 13. They are allowed anywhere inside the\nspace station and therefore should protect their ID card. They also have the ability to assign positions\nand access levels. They should not abuse their power.
\n1. Assign all positions on SS13
\n2. Inspect the station for any problems.
\n3. Perform administrative duties.
\n"
-
-/obj/item/weapon/paper/photograph
- name = "photo"
- icon_state = "photo"
- var/photo_id = 0.0
- item_state = "paper"
-
-/obj/item/weapon/paper/sop
- name = "paper- 'Standard Operating Procedure'"
- info = "Alert Levels:
\nBlue- Emergency
\n\t1. Caused by fire
\n\t2. Caused by manual interaction
\n\tAction:
\n\t\tClose all fire doors. These can only be opened by reseting the alarm
\nRed- Ejection/Self Destruct
\n\t1. Caused by module operating computer.
\n\tAction:
\n\t\tAfter the specified time the module will eject completely.
\n
\nEngine Maintenance Instructions:
\n\tShut off ignition systems:
\n\tActivate internal power
\n\tActivate orbital balance matrix
\n\tRemove volatile liquids from area
\n\tWear a fire suit
\n
\n\tAfter
\n\t\tDecontaminate
\n\t\tVisit medical examiner
\n
\nToxin Laboratory Procedure:
\n\tWear a gas mask regardless
\n\tGet an oxygen tank.
\n\tActivate internal atmosphere
\n
\n\tAfter
\n\t\tDecontaminate
\n\t\tVisit medical examiner
\n
\nDisaster Procedure:
\n\tFire:
\n\t\tActivate sector fire alarm.
\n\t\tMove to a safe area.
\n\t\tGet a fire suit
\n\t\tAfter:
\n\t\t\tAssess Damage
\n\t\t\tRepair damages
\n\t\t\tIf needed, Evacuate
\n\tMeteor Shower:
\n\t\tActivate fire alarm
\n\t\tMove to the back of ship
\n\t\tAfter
\n\t\t\tRepair damage
\n\t\t\tIf needed, Evacuate
\n\tAccidental Reentry:
\n\t\tActivate fire alrms in front of ship.
\n\t\tMove volatile matter to a fire proof area!
\n\t\tGet a fire suit.
\n\t\tStay secure until an emergency ship arrives.
\n
\n\t\tIf ship does not arrive-
\n\t\t\tEvacuate to a nearby safe area!"
-
-/obj/item/weapon/banhammer
- desc = "A banhammer"
- name = "banhammer"
- icon = 'icons/obj/items.dmi'
- icon_state = "toyhammer"
- flags = FPRINT | TABLEPASS
- slot_flags = SLOT_BELT
- throwforce = 0
- w_class = 1.0
- throw_speed = 7
- throw_range = 15
- attack_verb = list("banned")
-
/obj/item/weapon/rack_parts
name = "rack parts"
desc = "Parts of a rack."
@@ -855,32 +292,6 @@
flags = FPRINT | TABLEPASS| CONDUCT
m_amt = 3750
-/* //gtfo my object tree
-/obj/item/weapon/rubber_chicken
- name = "rubber chicken"
- desc = "A rubber chicken, isn't that hilarious?"
- icon = 'icons/obj/items.dmi'
- icon_state = "rubber_chicken"
- item_state = "rubber_chicken"
- w_class = 2.0
-*/
-
-/obj/item/weapon/screwdriver
- name = "screwdriver"
- desc = "You can be totally screwwy with this."
- icon = 'icons/obj/items.dmi'
- icon_state = "screwdriver"
- flags = FPRINT | TABLEPASS| CONDUCT
- slot_flags = SLOT_BELT
- force = 5.0
- w_class = 1.0
- throwforce = 5.0
- throw_speed = 3
- throw_range = 5
- g_amt = 0
- m_amt = 75
- attack_verb = list("stabbed")
-
/obj/item/weapon/shard
name = "shard"
icon = 'icons/obj/shards.dmi'
@@ -1017,138 +428,6 @@
m_amt = 40
attack_verb = list("whipped", "lashed", "disciplined", "tickled")
-/obj/item/weapon/wrapping_paper
- name = "wrapping paper"
- desc = "You can use this to wrap items in."
- icon = 'icons/obj/items.dmi'
- icon_state = "wrap_paper"
- var/amount = 20.0
-
-/obj/item/weapon/cell
- name = "power cell"
- desc = "A rechargable electrochemical power cell."
- icon = 'icons/obj/power.dmi'
- icon_state = "cell"
- item_state = "cell"
- origin_tech = "powerstorage=1"
- flags = FPRINT|TABLEPASS
- force = 5.0
- throwforce = 5.0
- throw_speed = 3
- throw_range = 5
- w_class = 3.0
- pressure_resistance = 80
- var/charge = 0 // note %age conveted to actual charge in New
- var/maxcharge = 1000
- m_amt = 700
- g_amt = 50
- var/rigged = 0 // true if rigged to explode
- var/minor_fault = 0 //If not 100% reliable, it will build up faults.
- var/construction_cost = list("metal"=750,"glass"=75)
- var/construction_time=100
-
-/obj/item/weapon/cell/crap
- name = "\improper Nanotrasen brand rechargable AA battery"
- desc = "You can't top the plasma top." //TOTALLY TRADEMARK INFRINGEMENT
- origin_tech = "powerstorage=0"
- maxcharge = 500
- g_amt = 40
-
-/obj/item/weapon/cell/crap/empty/New()
- ..()
- charge = 0
-
-/obj/item/weapon/cell/secborg
- name = "\improper Security borg rechargable D battery"
- origin_tech = "powerstorage=0"
- maxcharge = 600 //600 max charge / 100 charge per shot = six shots
- g_amt = 40
-
-/obj/item/weapon/cell/secborg/empty/New()
- ..()
- charge = 0
-
-/obj/item/weapon/cell/high
- name = "high-capacity power cell"
- origin_tech = "powerstorage=2"
- icon_state = "hcell"
- maxcharge = 10000
- g_amt = 60
-
-/obj/item/weapon/cell/high/empty/New()
- ..()
- charge = 0
-
-/obj/item/weapon/cell/super
- name = "super-capacity power cell"
- origin_tech = "powerstorage=5"
- icon_state = "scell"
- maxcharge = 20000
- g_amt = 70
- construction_cost = list("metal"=750,"glass"=100)
-
-/obj/item/weapon/cell/super/empty/New()
- ..()
- charge = 0
-
-/obj/item/weapon/cell/hyper
- name = "hyper-capacity power cell"
- origin_tech = "powerstorage=6"
- icon_state = "hpcell"
- maxcharge = 30000
- g_amt = 80
- construction_cost = list("metal"=500,"glass"=150,"gold"=200,"silver"=200)
-
-/obj/item/weapon/cell/hyper/empty/New()
- ..()
- charge = 0
-
-/obj/item/weapon/cell/infinite
- name = "infinite-capacity power cell!"
- icon_state = "icell"
- origin_tech = null
- maxcharge = 30000
- g_amt = 80
- use()
- return 1
-
-/obj/item/weapon/cell/potato
- name = "potato battery"
- desc = "A rechargable starch based power cell."
- origin_tech = "powerstorage=1"
- icon = 'icons/obj/power.dmi' //'icons/obj/harvest.dmi'
- icon_state = "potato_cell" //"potato_battery"
- charge = 100
- maxcharge = 300
- m_amt = 0
- g_amt = 0
- minor_fault = 1
-
-/obj/item/weapon/camera_bug/attack_self(mob/usr as mob)
- var/list/cameras = new/list()
- for (var/obj/machinery/camera/C in cameranet.cameras)
- if (C.bugged && C.status)
- cameras.Add(C)
- if (length(cameras) == 0)
- usr << "\red No bugged functioning cameras found."
- return
-
- var/list/friendly_cameras = new/list()
-
- for (var/obj/machinery/camera/C in cameras)
- friendly_cameras.Add(C.c_tag)
-
- var/target = input("Select the camera to observe", null) as null|anything in friendly_cameras
- if (!target)
- return
- for (var/obj/machinery/camera/C in cameras)
- if (C.c_tag == target)
- target = C
- break
- if (usr.stat == 2) return
-
- usr.client.eye = target
-
/obj/item/weapon/module
icon = 'icons/obj/module.dmi'
@@ -1184,19 +463,6 @@
desc = "Charging circuits for power cells."
-/obj/item/weapon/a_gift
- name = "gift"
- desc = "PRESENTS!!!! eek!"
- icon = 'icons/obj/items.dmi'
- icon_state = "gift1"
- item_state = "gift1"
- pressure_resistance = 70
-
-/obj/item/weapon/a_gift/New()
- pixel_x = rand(-10,10)
- pixel_y = rand(-10,10)
- return ..()
-
/obj/item/device/camera_bug
name = "camera bug"
icon = 'icons/obj/device.dmi'
@@ -1206,204 +472,31 @@
throw_speed = 4
throw_range = 20
+/obj/item/weapon/camera_bug/attack_self(mob/usr as mob)
+ var/list/cameras = new/list()
+ for (var/obj/machinery/camera/C in cameranet.cameras)
+ if (C.bugged && C.status)
+ cameras.Add(C)
+ if (length(cameras) == 0)
+ usr << "\red No bugged functioning cameras found."
+ return
-/obj/item/weapon/kitchen
- icon = 'icons/obj/kitchen.dmi'
+ var/list/friendly_cameras = new/list()
-/obj/item/weapon/kitchen/rollingpin
- name = "rolling pin"
- desc = "Used to knock out the Bartender."
- icon_state = "rolling_pin"
- force = 8.0
- throwforce = 10.0
- throw_speed = 2
- throw_range = 7
- w_class = 3.0
- attack_verb = list("bashed", "battered", "bludgeoned", "thrashed", "whacked") //I think the rollingpin attackby will end up ignoring this anyway.
+ for (var/obj/machinery/camera/C in cameras)
+ friendly_cameras.Add(C.c_tag)
-/obj/item/weapon/kitchenknife
- name = "kitchen knife"
- icon = 'icons/obj/kitchen.dmi'
- icon_state = "knife"
- desc = "A general purpose Chef's Knife made by SpaceCook Incorporated. Guaranteed to stay sharp for years to come."
- flags = FPRINT | TABLEPASS | CONDUCT
- force = 10.0
- w_class = 3.0
- throwforce = 6.0
- throw_speed = 3
- throw_range = 6
- m_amt = 12000
- origin_tech = "materials=1"
- attack_verb = list("slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut")
+ var/target = input("Select the camera to observe", null) as null|anything in friendly_cameras
+ if (!target)
+ return
+ for (var/obj/machinery/camera/C in cameras)
+ if (C.c_tag == target)
+ target = C
+ break
+ if (usr.stat == 2) return
-/obj/item/weapon/kitchenknife/ritual
- name = "ritual knife"
- desc = "The unearthly energies that once powered this blade are now dormant."
- icon = 'icons/obj/wizard.dmi'
- icon_state = "render"
+ usr.client.eye = target
-/obj/item/weapon/butch
- name = "butcher's Cleaver"
- icon = 'icons/obj/kitchen.dmi'
- icon_state = "butch"
- desc = "A huge thing used for chopping and chopping up meat. This includes clowns and clown-by-products."
- flags = FPRINT | TABLEPASS | CONDUCT
- force = 15.0
- w_class = 2.0
- throwforce = 8.0
- throw_speed = 3
- throw_range = 6
- m_amt = 12000
- origin_tech = "materials=1"
- attack_verb = list("cleaved", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut")
-
-/obj/item/weapon/butch/attack(mob/living/carbon/M as mob, mob/living/carbon/user as mob)
- playsound(loc, 'sound/weapons/bladeslice.ogg', 50, 1, -1)
- return ..()
-
-/obj/item/weapon/tray
- name = "tray"
- icon = 'icons/obj/food.dmi'
- icon_state = "tray"
- desc = "A metal tray to lay food on."
- throwforce = 12.0
- throwforce = 10.0
- throw_speed = 1
- throw_range = 5
- w_class = 3.0
- flags = FPRINT | TABLEPASS | CONDUCT
- m_amt = 3000
- /* // NOPE
- var/food_total= 0
- var/burger_amt = 0
- var/cheese_amt = 0
- var/fries_amt = 0
- var/classyalcdrink_amt = 0
- var/alcdrink_amt = 0
- var/bottle_amt = 0
- var/soda_amt = 0
- var/carton_amt = 0
- var/pie_amt = 0
- var/meatbreadslice_amt = 0
- var/salad_amt = 0
- var/miscfood_amt = 0
- */
- var/list/carrying = list() // List of things on the tray. - Doohl
- var/max_carry = 10 // w_class = 1 -- takes up 1
- // w_class = 2 -- takes up 3
- // w_class = 3 -- takes up 5
-
-
-/obj/item/weapon/kitchen/utensil
- force = 5.0
- w_class = 1.0
- throwforce = 5.0
- throw_speed = 3
- throw_range = 5
- flags = FPRINT | TABLEPASS | CONDUCT
- origin_tech = "materials=1"
- attack_verb = list("attacked", "stabbed", "poked")
-
-
-/obj/item/weapon/kitchen/utensil/fork
- name = "fork"
- desc = "Pointy."
- icon_state = "fork"
-
-/obj/item/weapon/kitchen/utensil/knife
- name = "knife"
- desc = "Can cut through any food."
- icon_state = "knife"
- force = 10.0
- throwforce = 10.0
-
-/obj/item/weapon/kitchen/utensil/spoon
- name = "spoon"
- desc = "SPOON!"
- icon_state = "spoon"
- attack_verb = list("attacked", "poked")
-
-/obj/item/weapon/scalpel
- name = "scalpel"
- desc = "Cut, cut, and once more cut."
- icon = 'icons/obj/surgery.dmi'
- icon_state = "scalpel"
- flags = FPRINT | TABLEPASS | CONDUCT
- force = 10.0
- w_class = 1.0
- throwforce = 5.0
- throw_speed = 3
- throw_range = 5
- m_amt = 10000
- g_amt = 5000
- origin_tech = "materials=1;biotech=1"
- attack_verb = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut")
-
-/obj/item/weapon/retractor
- name = "retractor"
- desc = "Retracts stuff."
- icon = 'icons/obj/surgery.dmi'
- icon_state = "retractor"
- m_amt = 10000
- g_amt = 5000
- flags = FPRINT | TABLEPASS | CONDUCT
- w_class = 1.0
- origin_tech = "materials=1;biotech=1"
-
-/obj/item/weapon/hemostat
- name = "hemostat"
- desc = "You think you have seen this before."
- icon = 'icons/obj/surgery.dmi'
- icon_state = "hemostat"
- m_amt = 5000
- g_amt = 2500
- flags = FPRINT | TABLEPASS | CONDUCT
- w_class = 1.0
- origin_tech = "materials=1;biotech=1"
- attack_verb = list("attacked", "pinched")
-
-/obj/item/weapon/cautery
- name = "cautery"
- desc = "This stops bleeding."
- icon = 'icons/obj/surgery.dmi'
- icon_state = "cautery"
- m_amt = 5000
- g_amt = 2500
- flags = FPRINT | TABLEPASS | CONDUCT
- w_class = 1.0
- origin_tech = "materials=1;biotech=1"
- attack_verb = list("burnt")
-
-/obj/item/weapon/surgicaldrill
- name = "surgical drill"
- desc = "You can drill using this item. You dig?"
- icon = 'icons/obj/surgery.dmi'
- icon_state = "drill"
- hitsound = 'sound/weapons/circsawhit.ogg'
- m_amt = 15000
- g_amt = 10000
- flags = FPRINT | TABLEPASS | CONDUCT
- force = 15.0
- w_class = 1.0
- origin_tech = "materials=1;biotech=1"
- attack_verb = list("drilled")
-
-/obj/item/weapon/circular_saw
- name = "circular saw"
- desc = "For heavy duty cutting."
- icon = 'icons/obj/surgery.dmi'
- icon_state = "saw3"
- hitsound = 'sound/weapons/circsawhit.ogg'
- flags = FPRINT | TABLEPASS | CONDUCT
- force = 15.0
- w_class = 1.0
- throwforce = 9.0
- throw_speed = 3
- throw_range = 5
- m_amt = 20000
- g_amt = 10000
- origin_tech = "materials=1;biotech=1"
- attack_verb = list("attacked", "slashed", "sawed", "cut")
/obj/item/weapon/syntiflesh
name = "syntiflesh"
diff --git a/code/game/objects/items/devices/scanners.dm b/code/game/objects/items/devices/scanners.dm
index 9cab9d90297..9b89066b5c9 100644
--- a/code/game/objects/items/devices/scanners.dm
+++ b/code/game/objects/items/devices/scanners.dm
@@ -215,6 +215,23 @@ MASS SPECTROMETER
src.add_fingerprint(user)
return
+/obj/item/device/mass_spectrometer
+ desc = "A hand-held mass spectrometer which identifies trace chemicals in a blood sample."
+ name = "mass-spectrometer"
+ icon_state = "spectrometer"
+ item_state = "analyzer"
+ w_class = 2.0
+ flags = FPRINT | TABLEPASS| CONDUCT | OPENCONTAINER
+ slot_flags = SLOT_BELT
+ throwforce = 5
+ throw_speed = 4
+ throw_range = 20
+ m_amt = 30
+ g_amt = 20
+ origin_tech = "magnets=2;biotech=2"
+ var/details = 0
+ var/recent_fail = 0
+
/obj/item/device/mass_spectrometer/New()
..()
var/datum/reagents/R = new/datum/reagents(5)
@@ -265,3 +282,8 @@ MASS SPECTROMETER
reagents.clear_reagents()
return
+/obj/item/device/mass_spectrometer/adv
+ name = "advanced mass-spectrometer"
+ icon_state = "adv_spectrometer"
+ details = 1
+ origin_tech = "magnets=4;biotech=2"
\ No newline at end of file
diff --git a/code/game/objects/items/devices/shields.dm b/code/game/objects/items/devices/shields.dm
deleted file mode 100644
index 665c79e0d90..00000000000
--- a/code/game/objects/items/devices/shields.dm
+++ /dev/null
@@ -1,32 +0,0 @@
-/obj/item/weapon/cloaking_device
- name = "cloaking device"
- desc = "Use this to become invisible to the human eyesocket."
- icon = 'icons/obj/device.dmi'
- icon_state = "shield0"
- var/active = 0.0
- flags = FPRINT | TABLEPASS| CONDUCT
- item_state = "electronic"
- throwforce = 10.0
- throw_speed = 2
- throw_range = 10
- w_class = 2.0
- origin_tech = "magnets=3;syndicate=4"
-
-
-/obj/item/weapon/cloaking_device/attack_self(mob/user as mob)
- src.active = !( src.active )
- if (src.active)
- user << "\blue The cloaking device is now active."
- src.icon_state = "shield1"
- else
- user << "\blue The cloaking device is now inactive."
- src.icon_state = "shield0"
- src.add_fingerprint(user)
- return
-
-/obj/item/weapon/cloaking_device/emp_act(severity)
- active = 0
- icon_state = "shield0"
- if(ismob(loc))
- loc:update_icons()
- ..()
diff --git a/code/game/objects/items/stacks/medical.dm b/code/game/objects/items/stacks/medical.dm
index 31882fca830..c1bfa7db94f 100644
--- a/code/game/objects/items/stacks/medical.dm
+++ b/code/game/objects/items/stacks/medical.dm
@@ -1,5 +1,14 @@
-
-//What is this even used for?
+/obj/item/stack/medical
+ name = "medical pack"
+ singular_name = "medical pack"
+ icon = 'icons/obj/items.dmi'
+ amount = 5
+ max_amount = 5
+ w_class = 1
+ throw_speed = 4
+ throw_range = 20
+ var/heal_brute = 0
+ var/heal_burn = 0
/obj/item/stack/medical/attack(mob/living/carbon/M as mob, mob/user as mob)
if (M.stat == 2)
@@ -57,3 +66,20 @@
M.heal_organ_damage((src.heal_brute/2), (src.heal_burn/2))
use(1)
+
+/obj/item/stack/medical/bruise_pack
+ name = "bruise pack"
+ singular_name = "bruise pack"
+ desc = "A pack designed to treat blunt-force trauma."
+ icon_state = "brutepack"
+ heal_brute = 60
+ origin_tech = "biotech=1"
+
+/obj/item/stack/medical/ointment
+ name = "ointment"
+ desc = "Used to treat those nasty burns."
+ gender = PLURAL
+ singular_name = "ointment"
+ icon_state = "ointment"
+ heal_burn = 40
+ origin_tech = "biotech=1"
\ No newline at end of file
diff --git a/code/defines/obj/toy.dm b/code/game/objects/items/toys.dm
similarity index 92%
rename from code/defines/obj/toy.dm
rename to code/game/objects/items/toys.dm
index d2814be14a1..7ed87a53c50 100644
--- a/code/defines/obj/toy.dm
+++ b/code/game/objects/items/toys.dm
@@ -1,3 +1,17 @@
+/* Toys!
+ * ContainsL
+ * Balloons
+ * Fake telebeacon
+ * Fake singularity
+ * Toy gun
+ * Toy crossbow
+ * Toy swords
+ * Crayons
+ * Snap pops
+ * Water flower
+ */
+
+
/obj/item/toy
throwforce = 0
throw_speed = 4
@@ -5,83 +19,68 @@
force = 0
-/////////Toy Mechs/////////
-
-/obj/item/toy/prize
+/*
+ * Balloons
+ */
+/obj/item/toy/balloon
+ name = "water balloon"
+ desc = "A translucent balloon. There's nothing in it."
icon = 'icons/obj/toy.dmi'
- icon_state = "ripleytoy"
- var/cooldown = 0
+ icon_state = "waterballoon-e"
+ item_state = "balloon-empty"
-//all credit to skasi for toy mech fun ideas
-/obj/item/toy/prize/attack_self(mob/user as mob)
- if(cooldown < world.time - 8)
- user << "You play with [src]."
- playsound(user, 'sound/mecha/mechstep.ogg', 20, 1)
- cooldown = world.time
+/obj/item/toy/balloon/New()
+ var/datum/reagents/R = new/datum/reagents(10)
+ reagents = R
+ R.my_atom = src
-/obj/item/toy/prize/attack_hand(mob/user as mob)
- if(loc == user)
- if(cooldown < world.time - 8)
- user << "You play with [src]."
- playsound(user, 'sound/mecha/mechturn.ogg', 20, 1)
- cooldown = world.time
- return
- ..()
+/obj/item/toy/balloon/attack(mob/living/carbon/human/M as mob, mob/user as mob)
+ return
-/obj/item/toy/prize/ripley
- name = "toy ripley"
- desc = "Mini-Mecha action figure! Collect them all! 1/11."
+/obj/item/toy/balloon/afterattack(atom/A as mob|obj, mob/user as mob)
+ if (istype(A, /obj/structure/reagent_dispensers/watertank) && get_dist(src,A) <= 1)
+ A.reagents.trans_to(src, 10)
+ user << "\blue You fill the balloon with the contents of [A]."
+ src.desc = "A translucent balloon with some form of liquid sloshing around in it."
+ src.update_icon()
+ return
-/obj/item/toy/prize/fireripley
- name = "toy firefighting ripley"
- desc = "Mini-Mecha action figure! Collect them all! 2/11."
- icon_state = "fireripleytoy"
+/obj/item/toy/balloon/attackby(obj/O as obj, mob/user as mob)
+ if(istype(O, /obj/item/weapon/reagent_containers/glass))
+ if(O.reagents)
+ if(O.reagents.total_volume < 1)
+ user << "The [O] is empty."
+ else if(O.reagents.total_volume >= 1)
+ if(O.reagents.has_reagent("pacid", 1))
+ user << "The acid chews through the balloon!"
+ O.reagents.reaction(user)
+ del(src)
+ else
+ src.desc = "A translucent balloon with some form of liquid sloshing around in it."
+ user << "\blue You fill the balloon with the contents of [O]."
+ O.reagents.trans_to(src, 10)
+ src.update_icon()
+ return
-/obj/item/toy/prize/deathripley
- name = "toy deathsquad ripley"
- desc = "Mini-Mecha action figure! Collect them all! 3/11."
- icon_state = "deathripleytoy"
-
-/obj/item/toy/prize/gygax
- name = "toy gygax"
- desc = "Mini-Mecha action figure! Collect them all! 4/11."
- icon_state = "gygaxtoy"
-
-/obj/item/toy/prize/durand
- name = "toy durand"
- desc = "Mini-Mecha action figure! Collect them all! 5/11."
- icon_state = "durandprize"
-
-/obj/item/toy/prize/honk
- name = "toy H.O.N.K."
- desc = "Mini-Mecha action figure! Collect them all! 6/11."
- icon_state = "honkprize"
-
-/obj/item/toy/prize/marauder
- name = "toy marauder"
- desc = "Mini-Mecha action figure! Collect them all! 7/11."
- icon_state = "marauderprize"
-
-/obj/item/toy/prize/seraph
- name = "toy seraph"
- desc = "Mini-Mecha action figure! Collect them all! 8/11."
- icon_state = "seraphprize"
-
-/obj/item/toy/prize/mauler
- name = "toy mauler"
- desc = "Mini-Mecha action figure! Collect them all! 9/11."
- icon_state = "maulerprize"
-
-/obj/item/toy/prize/odysseus
- name = "toy odysseus"
- desc = "Mini-Mecha action figure! Collect them all! 10/11."
- icon_state = "odysseusprize"
-
-/obj/item/toy/prize/phazon
- name = "toy phazon"
- desc = "Mini-Mecha action figure! Collect them all! 11/11."
- icon_state = "phazonprize"
+/obj/item/toy/balloon/throw_impact(atom/hit_atom)
+ if(src.reagents.total_volume >= 1)
+ src.visible_message("\red The [src] bursts!","You hear a pop and a splash.")
+ src.reagents.reaction(get_turf(hit_atom))
+ for(var/atom/A in get_turf(hit_atom))
+ src.reagents.reaction(A)
+ src.icon_state = "burst"
+ spawn(5)
+ if(src)
+ del(src)
+ return
+/obj/item/toy/balloon/update_icon()
+ if(src.reagents.total_volume >= 1)
+ icon_state = "waterballoon"
+ item_state = "balloon"
+ else
+ icon_state = "waterballoon-e"
+ item_state = "balloon-empty"
/obj/item/toy/syndicateballoon
name = "syndicate balloon"
@@ -95,6 +94,9 @@
item_state = "syndballoon"
w_class = 4.0
+/*
+ * Fake telebeacon
+ */
/obj/item/toy/blink
name = "electronic blink toy game"
desc = "Blink. Blink. Blink. Ages 8 and up."
@@ -102,44 +104,18 @@
icon_state = "beacon"
item_state = "signaler"
+/*
+ * Fake singularity
+ */
/obj/item/toy/spinningtoy
name = "Gravitational Singularity"
desc = "\"Singulo\" brand spinning toy."
icon = 'icons/obj/singularity.dmi'
icon_state = "singularity_s1"
-/obj/item/toy/ammo/gun
- name = "ammo-caps"
- desc = "There are 7 caps left! Make sure to recyle the box in an autolathe when it gets empty."
- icon = 'icons/obj/ammo.dmi'
- icon_state = "357-7"
- flags = FPRINT | TABLEPASS| CONDUCT
- w_class = 1.0
- g_amt = 10
- m_amt = 10
- var/amount_left = 7.0
-
- update_icon()
- src.icon_state = text("357-[]", src.amount_left)
- src.desc = text("There are [] caps\s left! Make sure to recycle the box in an autolathe when it gets empty.", src.amount_left)
- return
-
-/obj/item/toy/ammo/crossbow
- name = "foam dart"
- desc = "Its nerf or nothing! Ages 8 and up."
- icon = 'icons/obj/toy.dmi'
- icon_state = "foamdart"
- flags = FPRINT | TABLEPASS
- w_class = 1.0
-
-/obj/effect/foam_dart_dummy
- name = ""
- desc = ""
- icon = 'icons/obj/toy.dmi'
- icon_state = "null"
- anchored = 1
- density = 0
-
+/*
+ * Toy gun: Why isnt this an /obj/item/weapon/gun?
+ */
/obj/item/toy/gun
name = "cap gun"
desc = "There are 0 caps left. Looks almost like the real thing! Ages 8 and up. Please recycle in an autolathe when you're out of caps!"
@@ -197,35 +173,27 @@
for(var/mob/O in viewers(user, null))
O.show_message(text("\red [] fires a cap gun at []!", user, target), 1, "\red You hear a gunshot", 2)
-/obj/item/toy/sword
- name = "toy sword"
- desc = "A cheap, plastic replica of an energy sword. Realistic sounds! Ages 8 and up."
- icon = 'icons/obj/weapons.dmi'
- icon_state = "sword0"
- item_state = "sword0"
- var/active = 0.0
- w_class = 2.0
- flags = FPRINT | TABLEPASS | NOSHIELD
- attack_verb = list("attacked", "struck", "hit")
+/obj/item/toy/ammo/gun
+ name = "ammo-caps"
+ desc = "There are 7 caps left! Make sure to recyle the box in an autolathe when it gets empty."
+ icon = 'icons/obj/ammo.dmi'
+ icon_state = "357-7"
+ flags = FPRINT | TABLEPASS| CONDUCT
+ w_class = 1.0
+ g_amt = 10
+ m_amt = 10
+ var/amount_left = 7.0
- attack_self(mob/user as mob)
- src.active = !( src.active )
- if (src.active)
- user << "\blue You extend the plastic blade with a quick flick of your wrist."
- playsound(user, 'sound/weapons/saberon.ogg', 50, 1)
- src.icon_state = "swordblue"
- src.item_state = "swordblue"
- src.w_class = 4
- else
- user << "\blue You push the plastic blade back down into the handle."
- playsound(user, 'sound/weapons/saberoff.ogg', 50, 1)
- src.icon_state = "sword0"
- src.item_state = "sword0"
- src.w_class = 2
- src.add_fingerprint(user)
+ update_icon()
+ src.icon_state = text("357-[]", src.amount_left)
+ src.desc = text("There are [] caps\s left! Make sure to recycle the box in an autolathe when it gets empty.", src.amount_left)
return
-/obj/item/toy/crossbow
+/*
+ * Toy crossbow
+ */
+
+ /obj/item/toy/crossbow
name = "foam dart crossbow"
desc = "A weapon favored by many overactive children. Ages 8 and up."
icon = 'icons/obj/gun.dmi'
@@ -322,16 +290,70 @@
user.Weaken(5)
return
-/obj/item/weapon/storage/crayonbox
- name = "box of crayons"
- desc = "A box of crayons for all your rune drawing needs."
- icon = 'icons/obj/crayons.dmi'
- icon_state = "crayonbox"
+/obj/item/toy/ammo/crossbow
+ name = "foam dart"
+ desc = "Its nerf or nothing! Ages 8 and up."
+ icon = 'icons/obj/toy.dmi'
+ icon_state = "foamdart"
+ flags = FPRINT | TABLEPASS
+ w_class = 1.0
+
+/obj/effect/foam_dart_dummy
+ name = ""
+ desc = ""
+ icon = 'icons/obj/toy.dmi'
+ icon_state = "null"
+ anchored = 1
+ density = 0
+
+
+/*
+ * Toy swords
+ */
+/obj/item/toy/sword
+ name = "toy sword"
+ desc = "A cheap, plastic replica of an energy sword. Realistic sounds! Ages 8 and up."
+ icon = 'icons/obj/weapons.dmi'
+ icon_state = "sword0"
+ item_state = "sword0"
+ var/active = 0.0
w_class = 2.0
- storage_slots = 6
- can_hold = list(
- "/obj/item/toy/crayon"
- )
+ flags = FPRINT | TABLEPASS | NOSHIELD
+ attack_verb = list("attacked", "struck", "hit")
+
+ attack_self(mob/user as mob)
+ src.active = !( src.active )
+ if (src.active)
+ user << "\blue You extend the plastic blade with a quick flick of your wrist."
+ playsound(user, 'sound/weapons/saberon.ogg', 50, 1)
+ src.icon_state = "swordblue"
+ src.item_state = "swordblue"
+ src.w_class = 4
+ else
+ user << "\blue You push the plastic blade back down into the handle."
+ playsound(user, 'sound/weapons/saberoff.ogg', 50, 1)
+ src.icon_state = "sword0"
+ src.item_state = "sword0"
+ src.w_class = 2
+ src.add_fingerprint(user)
+ return
+
+/obj/item/toy/katana
+ name = "replica katana"
+ desc = "Woefully underpowered in D20."
+ icon = 'icons/obj/weapons.dmi'
+ icon_state = "katana"
+ item_state = "katana"
+ flags = FPRINT | TABLEPASS | CONDUCT
+ slot_flags = SLOT_BELT | SLOT_BACK
+ force = 5
+ throwforce = 5
+ w_class = 3
+ attack_verb = list("attacked", "slashed", "stabbed", "sliced")
+
+/*
+ * Crayons
+ */
/obj/item/toy/crayon
name = "crayon"
@@ -346,6 +368,9 @@
var/instant = 0
var/colourName = "red" //for updateIcon purposes
+/*
+ * Snap pops
+ */
/obj/item/toy/snappop
name = "snap pop"
desc = "Wow!"
@@ -377,6 +402,9 @@
playsound(src, 'sound/effects/snap.ogg', 50, 1)
del(src)
+/*
+ * Water flower
+ */
/obj/item/toy/waterflower
name = "Water Flower"
desc = "A seemingly innocent sunflower...with a twist."
@@ -444,75 +472,81 @@
..()
return
-/obj/item/toy/balloon
- name = "water balloon"
- desc = "A translucent balloon. There's nothing in it."
+
+/*
+ * Mech prizes
+ */
+/obj/item/toy/prize
icon = 'icons/obj/toy.dmi'
- icon_state = "waterballoon-e"
- item_state = "balloon-empty"
+ icon_state = "ripleytoy"
+ var/cooldown = 0
-/obj/item/toy/balloon/New()
- var/datum/reagents/R = new/datum/reagents(10)
- reagents = R
- R.my_atom = src
+//all credit to skasi for toy mech fun ideas
+/obj/item/toy/prize/attack_self(mob/user as mob)
+ if(cooldown < world.time - 8)
+ user << "You play with [src]."
+ playsound(user, 'sound/mecha/mechstep.ogg', 20, 1)
+ cooldown = world.time
-/obj/item/toy/balloon/attack(mob/living/carbon/human/M as mob, mob/user as mob)
- return
+/obj/item/toy/prize/attack_hand(mob/user as mob)
+ if(loc == user)
+ if(cooldown < world.time - 8)
+ user << "You play with [src]."
+ playsound(user, 'sound/mecha/mechturn.ogg', 20, 1)
+ cooldown = world.time
+ return
+ ..()
-/obj/item/toy/balloon/afterattack(atom/A as mob|obj, mob/user as mob)
- if (istype(A, /obj/structure/reagent_dispensers/watertank) && get_dist(src,A) <= 1)
- A.reagents.trans_to(src, 10)
- user << "\blue You fill the balloon with the contents of [A]."
- src.desc = "A translucent balloon with some form of liquid sloshing around in it."
- src.update_icon()
- return
+/obj/item/toy/prize/ripley
+ name = "toy ripley"
+ desc = "Mini-Mecha action figure! Collect them all! 1/11."
-/obj/item/toy/balloon/attackby(obj/O as obj, mob/user as mob)
- if(istype(O, /obj/item/weapon/reagent_containers/glass))
- if(O.reagents)
- if(O.reagents.total_volume < 1)
- user << "The [O] is empty."
- else if(O.reagents.total_volume >= 1)
- if(O.reagents.has_reagent("pacid", 1))
- user << "The acid chews through the balloon!"
- O.reagents.reaction(user)
- del(src)
- else
- src.desc = "A translucent balloon with some form of liquid sloshing around in it."
- user << "\blue You fill the balloon with the contents of [O]."
- O.reagents.trans_to(src, 10)
- src.update_icon()
- return
+/obj/item/toy/prize/fireripley
+ name = "toy firefighting ripley"
+ desc = "Mini-Mecha action figure! Collect them all! 2/11."
+ icon_state = "fireripleytoy"
-/obj/item/toy/balloon/throw_impact(atom/hit_atom)
- if(src.reagents.total_volume >= 1)
- src.visible_message("\red The [src] bursts!","You hear a pop and a splash.")
- src.reagents.reaction(get_turf(hit_atom))
- for(var/atom/A in get_turf(hit_atom))
- src.reagents.reaction(A)
- src.icon_state = "burst"
- spawn(5)
- if(src)
- del(src)
- return
+/obj/item/toy/prize/deathripley
+ name = "toy deathsquad ripley"
+ desc = "Mini-Mecha action figure! Collect them all! 3/11."
+ icon_state = "deathripleytoy"
-/obj/item/toy/balloon/update_icon()
- if(src.reagents.total_volume >= 1)
- icon_state = "waterballoon"
- item_state = "balloon"
- else
- icon_state = "waterballoon-e"
- item_state = "balloon-empty"
+/obj/item/toy/prize/gygax
+ name = "toy gygax"
+ desc = "Mini-Mecha action figure! Collect them all! 4/11."
+ icon_state = "gygaxtoy"
-/obj/item/toy/katana
- name = "replica katana"
- desc = "Woefully underpowered in D20."
- icon = 'icons/obj/weapons.dmi'
- icon_state = "katana"
- item_state = "katana"
- flags = FPRINT | TABLEPASS | CONDUCT
- slot_flags = SLOT_BELT | SLOT_BACK
- force = 5
- throwforce = 5
- w_class = 3
- attack_verb = list("attacked", "slashed", "stabbed", "sliced")
\ No newline at end of file
+/obj/item/toy/prize/durand
+ name = "toy durand"
+ desc = "Mini-Mecha action figure! Collect them all! 5/11."
+ icon_state = "durandprize"
+
+/obj/item/toy/prize/honk
+ name = "toy H.O.N.K."
+ desc = "Mini-Mecha action figure! Collect them all! 6/11."
+ icon_state = "honkprize"
+
+/obj/item/toy/prize/marauder
+ name = "toy marauder"
+ desc = "Mini-Mecha action figure! Collect them all! 7/11."
+ icon_state = "marauderprize"
+
+/obj/item/toy/prize/seraph
+ name = "toy seraph"
+ desc = "Mini-Mecha action figure! Collect them all! 8/11."
+ icon_state = "seraphprize"
+
+/obj/item/toy/prize/mauler
+ name = "toy mauler"
+ desc = "Mini-Mecha action figure! Collect them all! 9/11."
+ icon_state = "maulerprize"
+
+/obj/item/toy/prize/odysseus
+ name = "toy odysseus"
+ desc = "Mini-Mecha action figure! Collect them all! 10/11."
+ icon_state = "odysseusprize"
+
+/obj/item/toy/prize/phazon
+ name = "toy phazon"
+ desc = "Mini-Mecha action figure! Collect them all! 11/11."
+ icon_state = "phazonprize"
\ No newline at end of file
diff --git a/code/game/objects/items/weapons/RCD.dm b/code/game/objects/items/weapons/RCD.dm
index 298cfb1a48c..a80a892af6f 100644
--- a/code/game/objects/items/weapons/RCD.dm
+++ b/code/game/objects/items/weapons/RCD.dm
@@ -184,3 +184,16 @@ RCD
..()
desc = "A device used to rapidly build walls/floor."
canRwall = 1
+
+/obj/item/weapon/rcd_ammo
+ name = "compressed matter cartridge"
+ desc = "Highly compressed matter for the RCD."
+ icon = 'icons/obj/ammo.dmi'
+ icon_state = "rcd"
+ item_state = "rcdammo"
+ opacity = 0
+ density = 0
+ anchored = 0.0
+ origin_tech = "materials=2"
+ m_amt = 30000
+ g_amt = 15000
\ No newline at end of file
diff --git a/code/game/objects/items/weapons/RSF.dm b/code/game/objects/items/weapons/RSF.dm
index b122382e5fe..47ceab0d8df 100644
--- a/code/game/objects/items/weapons/RSF.dm
+++ b/code/game/objects/items/weapons/RSF.dm
@@ -3,6 +3,19 @@ CONTAINS:
RSF
*/
+/obj/item/weapon/rsf
+ name = "\improper Rapid-Service-Fabricator"
+ desc = "A device used to rapidly deploy service items."
+ icon = 'icons/obj/items.dmi'
+ icon_state = "rcd"
+ opacity = 0
+ density = 0
+ anchored = 0.0
+ var/matter = 0
+ var/mode = 1
+ flags = TABLEPASS
+ w_class = 3.0
+
/obj/item/weapon/rsf/New()
desc = "A RSF. It currently holds [matter]/30 fabrication-units."
return
diff --git a/code/game/objects/items/weapons/cards_ids.dm b/code/game/objects/items/weapons/cards_ids.dm
index ca36682c879..4e229dba336 100644
--- a/code/game/objects/items/weapons/cards_ids.dm
+++ b/code/game/objects/items/weapons/cards_ids.dm
@@ -11,6 +11,23 @@
/*
* DATA CARDS - Used for the teleporter
*/
+/obj/item/weapon/card
+ name = "card"
+ desc = "Does card things."
+ icon = 'icons/obj/card.dmi'
+ w_class = 1.0
+
+ var/list/files = list( )
+
+/obj/item/weapon/card/data
+ name = "data disk"
+ desc = "A disk of data."
+ icon_state = "data"
+ var/function = "storage"
+ var/data = "null"
+ var/special = null
+ item_state = "card-id"
+
/obj/item/weapon/card/data/verb/label(t as text)
set name = "Label Disk"
set category = "Object"
@@ -23,10 +40,38 @@
src.add_fingerprint(usr)
return
+/obj/item/weapon/card/data/clown
+ name = "coordinates to clown planet"
+ icon_state = "data"
+ item_state = "card-id"
+ layer = 3
+ level = 2
+ desc = "This card contains coordinates to the fabled Clown Planet. Handle with care."
+ function = "teleporter"
+ data = "Clown Land"
/*
* ID CARDS
*/
+/obj/item/weapon/card/emag
+ desc = "It's a card with a magnetic strip attached to some circuitry."
+ name = "cryptographic sequencer"
+ icon_state = "emag"
+ item_state = "card-id"
+ origin_tech = "magnets=2;syndicate=2"
+
+/obj/item/weapon/card/id
+ name = "identification card"
+ desc = "A card used to provide ID and determine access across the station."
+ icon_state = "id"
+ item_state = "card-id"
+ var/access = list()
+ var/registered_name = null // The name registered_name on the card
+ slot_flags = SLOT_ID
+
+ var/assignment = null
+ var/dorm = 0 // determines if this ID has claimed a dorm already
+
/obj/item/weapon/card/id/attack_self(mob/user as mob)
for(var/mob/O in viewers(user, null))
O.show_message(text("[] shows you: \icon[] []: assignment: []", user, src, src.name, src.assignment), 1)
@@ -50,6 +95,33 @@
usr << text("\icon[] []: The current assignment on the card is [].", src, src.name, src.assignment)
return
+
+/obj/item/weapon/card/id/silver
+ name = "identification card"
+ desc = "A silver card which shows honour and dedication."
+ icon_state = "silver"
+ item_state = "silver_id"
+
+/obj/item/weapon/card/id/gold
+ name = "identification card"
+ desc = "A golden card which shows power and might."
+ icon_state = "gold"
+ item_state = "gold_id"
+
+/obj/item/weapon/card/id/syndicate
+ name = "agent card"
+ access = list(access_maint_tunnels, access_syndicate)
+ origin_tech = "syndicate=3"
+
+/obj/item/weapon/card/id/syndicate/afterattack(var/obj/item/weapon/O as obj, mob/user as mob)
+ if(istype(O, /obj/item/weapon/card/id))
+ var/obj/item/weapon/card/id/I = O
+ src.access |= I.access
+ if(istype(user, /mob/living) && user.mind)
+ if(user.mind.special_role)
+ usr << "\blue The card's microscanners activate as you pass it over the ID, copying its access."
+
+
/obj/item/weapon/card/id/syndicate/attack_self(mob/user as mob)
if(!src.registered_name)
//Stop giving the players unsanitized unputs! You are giving ways for players to intentionally crash clients! -Nodrak
@@ -69,3 +141,31 @@
user << "\blue You successfully forge the ID card."
else
..()
+
+/obj/item/weapon/card/id/syndicate_command
+ name = "syndicate ID card"
+ desc = "An ID straight from the Syndicate."
+ registered_name = "Syndicate"
+ assignment = "Syndicate Overlord"
+ access = list(access_syndicate)
+
+/obj/item/weapon/card/id/captains_spare
+ name = "captain's spare ID"
+ desc = "The spare ID of the High Lord himself."
+ icon_state = "gold"
+ item_state = "gold_id"
+ registered_name = "Captain"
+ assignment = "Captain"
+ New()
+ access = get_access("Captain")
+ ..()
+
+/obj/item/weapon/card/id/centcom
+ name = "\improper CentCom. ID"
+ desc = "An ID straight from Cent. Com."
+ icon_state = "centcom"
+ registered_name = "Central Command"
+ assignment = "General"
+ New()
+ access = get_all_centcom_access()
+ ..()
\ No newline at end of file
diff --git a/code/game/objects/items/weapons/gift_wrappaper.dm b/code/game/objects/items/weapons/gift_wrappaper.dm
index 442ab99a10e..c56a1acd86e 100644
--- a/code/game/objects/items/weapons/gift_wrappaper.dm
+++ b/code/game/objects/items/weapons/gift_wrappaper.dm
@@ -7,11 +7,23 @@
/*
* Gifts
*/
-
+/obj/item/weapon/a_gift
+ name = "gift"
+ desc = "PRESENTS!!!! eek!"
+ icon = 'icons/obj/items.dmi'
+ icon_state = "gift1"
+ item_state = "gift1"
+ pressure_resistance = 70
/obj/item/weapon/a_gift/New()
..()
- icon_state = "gift[pick("1", "2", "3")]"
+ pixel_x = rand(-10,10)
+ pixel_y = rand(-10,10)
+ if(w_class > 0 && w_class < 4)
+ icon_state = "gift[w_class]"
+ else
+ icon_state = "gift[pick(1, 2, 3)]"
+ return
/obj/item/weapon/gift/attack_self(mob/user as mob)
user.drop_item()
@@ -107,6 +119,13 @@
/*
* Wrapping Paper
*/
+/obj/item/weapon/wrapping_paper
+ name = "wrapping paper"
+ desc = "You can use this to wrap items in."
+ icon = 'icons/obj/items.dmi'
+ icon_state = "wrap_paper"
+ var/amount = 20.0
+
/obj/item/weapon/wrapping_paper/attackby(obj/item/weapon/W as obj, mob/user as mob)
..()
if (!( locate(/obj/structure/table, src.loc) ))
diff --git a/code/game/objects/items/weapons/handcuffs.dm b/code/game/objects/items/weapons/handcuffs.dm
index 17b578461a7..e95338168d2 100644
--- a/code/game/objects/items/weapons/handcuffs.dm
+++ b/code/game/objects/items/weapons/handcuffs.dm
@@ -1,3 +1,20 @@
+/obj/item/weapon/handcuffs
+ name = "handcuffs"
+ desc = "Use this to keep prisoners in line."
+ gender = PLURAL
+ icon = 'icons/obj/items.dmi'
+ icon_state = "handcuff"
+ flags = FPRINT | TABLEPASS | CONDUCT
+ slot_flags = SLOT_BELT
+ throwforce = 5
+ w_class = 2.0
+ throw_speed = 2
+ throw_range = 5
+ m_amt = 500
+ origin_tech = "materials=1"
+ var/dispenser = 0
+ var/breakouttime = 1200 //Deciseconds = 120s = 2 minutes
+
/obj/item/weapon/handcuffs/attack(mob/living/carbon/C as mob, mob/user as mob)
if(istype(src, /obj/item/weapon/handcuffs/cyborg) && isrobot(user))
if(!C.handcuffed)
@@ -73,4 +90,37 @@
playsound(src.loc, 'sound/weapons/handcuffs.ogg', 30, 1, -2)
O.process()
return
- return
\ No newline at end of file
+ return
+
+/obj/item/weapon/handcuffs/cable
+ name = "cable restraints"
+ desc = "Looks like some cables tied together. Could be used to tie something up."
+ icon_state = "cuff_red"
+ breakouttime = 300 //Deciseconds = 30s
+
+/obj/item/weapon/handcuffs/cable/red
+ icon_state = "cuff_red"
+
+/obj/item/weapon/handcuffs/cable/yellow
+ icon_state = "cuff_yellow"
+
+/obj/item/weapon/handcuffs/cable/blue
+ icon_state = "cuff_blue"
+
+/obj/item/weapon/handcuffs/cable/green
+ icon_state = "cuff_green"
+
+/obj/item/weapon/handcuffs/cable/pink
+ icon_state = "cuff_pink"
+
+/obj/item/weapon/handcuffs/cable/orange
+ icon_state = "cuff_orange"
+
+/obj/item/weapon/handcuffs/cable/cyan
+ icon_state = "cuff_cyan"
+
+/obj/item/weapon/handcuffs/cable/white
+ icon_state = "cuff_white"
+
+/obj/item/weapon/handcuffs/cyborg
+ dispenser = 1
\ No newline at end of file
diff --git a/code/game/objects/items/weapons/kitchen.dm b/code/game/objects/items/weapons/kitchen.dm
index 4922f6e04db..8039e83b2dc 100644
--- a/code/game/objects/items/weapons/kitchen.dm
+++ b/code/game/objects/items/weapons/kitchen.dm
@@ -1,23 +1,52 @@
/* Kitchen tools
* Contains:
+ * Utensils
+ * Spoons
* Forks
* Knives
+ * Kitchen knives
+ * Butcher's cleaver
* Rolling Pins
* Trays
*/
+/obj/item/weapon/kitchen
+ icon = 'icons/obj/kitchen.dmi'
+
+/*
+ * Utensils
+ */
+/obj/item/weapon/kitchen/utensil
+ force = 5.0
+ w_class = 1.0
+ throwforce = 5.0
+ throw_speed = 3
+ throw_range = 5
+ flags = FPRINT | TABLEPASS | CONDUCT
+ origin_tech = "materials=1"
+ attack_verb = list("attacked", "stabbed", "poked")
/obj/item/weapon/kitchen/utensil/New()
if (prob(60))
src.pixel_y = rand(0, 4)
return
-
-
+/*
+ * Spoons
+ */
+ /obj/item/weapon/kitchen/utensil/spoon
+ name = "spoon"
+ desc = "SPOON!"
+ icon_state = "spoon"
+ attack_verb = list("attacked", "poked")
/*
* Forks
*/
+/obj/item/weapon/kitchen/utensil/fork
+ name = "fork"
+ desc = "Pointy."
+ icon_state = "fork"
/obj/item/weapon/kitchen/utensil/fork/attack(mob/living/carbon/M as mob, mob/living/carbon/user as mob)
if(!istype(M))
@@ -45,6 +74,13 @@
/*
* Knives
*/
+/obj/item/weapon/kitchen/utensil/knife
+ name = "knife"
+ desc = "Can cut through any food."
+ icon_state = "knife"
+ force = 10.0
+ throwforce = 10.0
+
/obj/item/weapon/kitchen/utensil/knife/attack(target as mob, mob/living/user as mob)
if ((CLUMSY in user.mutations) && prob(50))
user << "\red You accidentally cut yourself with the [src]."
@@ -53,10 +89,67 @@
playsound(loc, 'sound/weapons/bladeslice.ogg', 50, 1, -1)
return ..()
+/*
+ * Kitchen knives
+ */
+/obj/item/weapon/kitchenknife
+ name = "kitchen knife"
+ icon = 'icons/obj/kitchen.dmi'
+ icon_state = "knife"
+ desc = "A general purpose Chef's Knife made by SpaceCook Incorporated. Guaranteed to stay sharp for years to come."
+ flags = FPRINT | TABLEPASS | CONDUCT
+ force = 10.0
+ w_class = 3.0
+ throwforce = 6.0
+ throw_speed = 3
+ throw_range = 6
+ m_amt = 12000
+ origin_tech = "materials=1"
+ attack_verb = list("slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut")
+
+/obj/item/weapon/kitchenknife/ritual
+ name = "ritual knife"
+ desc = "The unearthly energies that once powered this blade are now dormant."
+ icon = 'icons/obj/wizard.dmi'
+ icon_state = "render"
+
+/*
+ * Bucher's cleaver
+ */
+/obj/item/weapon/butch
+ name = "butcher's Cleaver"
+ icon = 'icons/obj/kitchen.dmi'
+ icon_state = "butch"
+ desc = "A huge thing used for chopping and chopping up meat. This includes clowns and clown-by-products."
+ flags = FPRINT | TABLEPASS | CONDUCT
+ force = 15.0
+ w_class = 2.0
+ throwforce = 8.0
+ throw_speed = 3
+ throw_range = 6
+ m_amt = 12000
+ origin_tech = "materials=1"
+ attack_verb = list("cleaved", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut")
+
+/obj/item/weapon/butch/attack(mob/living/carbon/M as mob, mob/living/carbon/user as mob)
+ playsound(loc, 'sound/weapons/bladeslice.ogg', 50, 1, -1)
+ return ..()
+
/*
* Rolling Pins
*/
+/obj/item/weapon/kitchen/rollingpin
+ name = "rolling pin"
+ desc = "Used to knock out the Bartender."
+ icon_state = "rolling_pin"
+ force = 8.0
+ throwforce = 10.0
+ throw_speed = 2
+ throw_range = 7
+ w_class = 3.0
+ attack_verb = list("bashed", "battered", "bludgeoned", "thrashed", "whacked") //I think the rollingpin attackby will end up ignoring this anyway.
+
/obj/item/weapon/kitchen/rollingpin/attack(mob/living/M as mob, mob/living/user as mob)
if ((CLUMSY in user.mutations) && prob(50))
user << "\red The [src] slips out of your hand and hits your head."
@@ -94,6 +187,38 @@
/*
* Trays - Agouri
*/
+/obj/item/weapon/tray
+ name = "tray"
+ icon = 'icons/obj/food.dmi'
+ icon_state = "tray"
+ desc = "A metal tray to lay food on."
+ throwforce = 12.0
+ throwforce = 10.0
+ throw_speed = 1
+ throw_range = 5
+ w_class = 3.0
+ flags = FPRINT | TABLEPASS | CONDUCT
+ m_amt = 3000
+ /* // NOPE
+ var/food_total= 0
+ var/burger_amt = 0
+ var/cheese_amt = 0
+ var/fries_amt = 0
+ var/classyalcdrink_amt = 0
+ var/alcdrink_amt = 0
+ var/bottle_amt = 0
+ var/soda_amt = 0
+ var/carton_amt = 0
+ var/pie_amt = 0
+ var/meatbreadslice_amt = 0
+ var/salad_amt = 0
+ var/miscfood_amt = 0
+ */
+ var/list/carrying = list() // List of things on the tray. - Doohl
+ var/max_carry = 10 // w_class = 1 -- takes up 1
+ // w_class = 2 -- takes up 3
+ // w_class = 3 -- takes up 5
+
/obj/item/weapon/tray/attack(mob/living/carbon/M as mob, mob/living/carbon/user as mob)
// Drop all the things. All of them.
diff --git a/code/game/objects/items/weapons/melee/energy.dm b/code/game/objects/items/weapons/melee/energy.dm
new file mode 100644
index 00000000000..3b277e1abce
--- /dev/null
+++ b/code/game/objects/items/weapons/melee/energy.dm
@@ -0,0 +1,47 @@
+/obj/item/weapon/melee/energy
+ var/active = 0
+
+/obj/item/weapon/melee/energy/axe
+ name = "energy axe"
+ desc = "An energised battle axe."
+ icon_state = "axe0"
+ force = 40.0
+ throwforce = 25.0
+ throw_speed = 1
+ throw_range = 5
+ w_class = 3.0
+ flags = FPRINT | CONDUCT | NOSHIELD | TABLEPASS
+ origin_tech = "combat=3"
+ attack_verb = list("attacked", "chopped", "cleaved", "torn", "cut")
+
+/obj/item/weapon/melee/energy/sword
+ color
+ name = "energy sword"
+ desc = "May the force be within you."
+ icon_state = "sword0"
+ force = 3.0
+ throwforce = 5.0
+ throw_speed = 1
+ throw_range = 5
+ w_class = 2.0
+ flags = FPRINT | TABLEPASS | NOSHIELD
+ origin_tech = "magnets=3;syndicate=4"
+ attack_verb = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut")
+
+/obj/item/weapon/melee/energy/sword/pirate
+ name = "energy cutlass"
+ desc = "Arrrr matey."
+ icon_state = "cutlass0"
+
+/obj/item/weapon/melee/energy/blade
+ name = "energy blade"
+ desc = "A concentrated beam of energy in the shape of a blade. Very stylish... and lethal."
+ icon_state = "blade"
+ force = 70.0//Normal attacks deal very high damage.
+ throwforce = 1//Throwing or dropping the item deletes it.
+ throw_speed = 1
+ throw_range = 1
+ w_class = 4.0//So you can't hide it in your pocket or some such.
+ flags = FPRINT | TABLEPASS | NOSHIELD
+ attack_verb = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut")
+ var/datum/effect/effect/system/spark_spread/spark_system
\ No newline at end of file
diff --git a/code/game/objects/items/weapons/melee/misc.dm b/code/game/objects/items/weapons/melee/misc.dm
new file mode 100644
index 00000000000..2d09e6036b1
--- /dev/null
+++ b/code/game/objects/items/weapons/melee/misc.dm
@@ -0,0 +1,12 @@
+/obj/item/weapon/melee/chainofcommand
+ name = "chain of command"
+ desc = "A tool used by great men to placate the frothing masses."
+ icon_state = "chain"
+ item_state = "chain"
+ flags = FPRINT | TABLEPASS | CONDUCT
+ slot_flags = SLOT_BELT
+ force = 10
+ throwforce = 7
+ w_class = 3
+ origin_tech = "combat=4"
+ attack_verb = list("flogged", "whipped", "lashed", "disciplined")
\ No newline at end of file
diff --git a/code/game/objects/items/weapons/power_cells.dm b/code/game/objects/items/weapons/power_cells.dm
new file mode 100644
index 00000000000..3336e6c208c
--- /dev/null
+++ b/code/game/objects/items/weapons/power_cells.dm
@@ -0,0 +1,99 @@
+/obj/item/weapon/cell
+ name = "power cell"
+ desc = "A rechargable electrochemical power cell."
+ icon = 'icons/obj/power.dmi'
+ icon_state = "cell"
+ item_state = "cell"
+ origin_tech = "powerstorage=1"
+ flags = FPRINT|TABLEPASS
+ force = 5.0
+ throwforce = 5.0
+ throw_speed = 3
+ throw_range = 5
+ w_class = 3.0
+ pressure_resistance = 80
+ var/charge = 0 // note %age conveted to actual charge in New
+ var/maxcharge = 1000
+ m_amt = 700
+ g_amt = 50
+ var/rigged = 0 // true if rigged to explode
+ var/minor_fault = 0 //If not 100% reliable, it will build up faults.
+ var/construction_cost = list("metal"=750,"glass"=75)
+ var/construction_time=100
+
+/obj/item/weapon/cell/crap
+ name = "\improper Nanotrasen brand rechargable AA battery"
+ desc = "You can't top the plasma top." //TOTALLY TRADEMARK INFRINGEMENT
+ origin_tech = "powerstorage=0"
+ maxcharge = 500
+ g_amt = 40
+
+/obj/item/weapon/cell/crap/empty/New()
+ ..()
+ charge = 0
+
+/obj/item/weapon/cell/secborg
+ name = "\improper Security borg rechargable D battery"
+ origin_tech = "powerstorage=0"
+ maxcharge = 600 //600 max charge / 100 charge per shot = six shots
+ g_amt = 40
+
+/obj/item/weapon/cell/secborg/empty/New()
+ ..()
+ charge = 0
+
+/obj/item/weapon/cell/high
+ name = "high-capacity power cell"
+ origin_tech = "powerstorage=2"
+ icon_state = "hcell"
+ maxcharge = 10000
+ g_amt = 60
+
+/obj/item/weapon/cell/high/empty/New()
+ ..()
+ charge = 0
+
+/obj/item/weapon/cell/super
+ name = "super-capacity power cell"
+ origin_tech = "powerstorage=5"
+ icon_state = "scell"
+ maxcharge = 20000
+ g_amt = 70
+ construction_cost = list("metal"=750,"glass"=100)
+
+/obj/item/weapon/cell/super/empty/New()
+ ..()
+ charge = 0
+
+/obj/item/weapon/cell/hyper
+ name = "hyper-capacity power cell"
+ origin_tech = "powerstorage=6"
+ icon_state = "hpcell"
+ maxcharge = 30000
+ g_amt = 80
+ construction_cost = list("metal"=500,"glass"=150,"gold"=200,"silver"=200)
+
+/obj/item/weapon/cell/hyper/empty/New()
+ ..()
+ charge = 0
+
+/obj/item/weapon/cell/infinite
+ name = "infinite-capacity power cell!"
+ icon_state = "icell"
+ origin_tech = null
+ maxcharge = 30000
+ g_amt = 80
+ use()
+ return 1
+
+/obj/item/weapon/cell/potato
+ name = "potato battery"
+ desc = "A rechargable starch based power cell."
+ origin_tech = "powerstorage=1"
+ icon = 'icons/obj/power.dmi' //'icons/obj/harvest.dmi'
+ icon_state = "potato_cell" //"potato_battery"
+ charge = 100
+ maxcharge = 300
+ m_amt = 0
+ g_amt = 0
+ minor_fault = 1
\ No newline at end of file
diff --git a/code/game/objects/items/weapons/shields.dm b/code/game/objects/items/weapons/shields.dm
new file mode 100644
index 00000000000..30d199cf97e
--- /dev/null
+++ b/code/game/objects/items/weapons/shields.dm
@@ -0,0 +1,80 @@
+/obj/item/weapon/shield
+ name = "shield"
+
+/obj/item/weapon/shield/riot
+ name = "riot shield"
+ desc = "A shield adept at blocking blunt objects from connecting with the torso of the shield wielder."
+ icon = 'icons/obj/weapons.dmi'
+ icon_state = "riot"
+ flags = FPRINT | TABLEPASS| CONDUCT
+ slot_flags = SLOT_BACK
+ force = 5.0
+ throwforce = 5.0
+ throw_speed = 1
+ throw_range = 4
+ w_class = 4.0
+ g_amt = 7500
+ m_amt = 1000
+ origin_tech = "materials=2"
+ attack_verb = list("shoved", "bashed")
+ var/cooldown = 0 //shield bash cooldown. based on world.time
+
+ IsShield()
+ return 1
+
+ attackby(obj/item/weapon/W as obj, mob/user as mob)
+ if(istype(W, /obj/item/weapon/melee/baton))
+ if(cooldown < world.time - 25)
+ user.visible_message("[user] bashes [src] with [W]!")
+ playsound(user.loc, 'sound/effects/shieldbash.ogg', 50, 1)
+ cooldown = world.time
+ else
+ ..()
+
+/obj/item/weapon/shield/energy
+ name = "energy combat shield"
+ desc = "A shield capable of stopping most projectile and melee attacks. It can be retracted, expanded, and stored anywhere."
+ icon = 'icons/obj/weapons.dmi'
+ icon_state = "eshield0" // eshield1 for expanded
+ flags = FPRINT | TABLEPASS| CONDUCT
+ force = 3.0
+ throwforce = 5.0
+ throw_speed = 1
+ throw_range = 4
+ w_class = 1
+ origin_tech = "materials=4;magnets=3;syndicate=4"
+ attack_verb = list("shoved", "bashed")
+ var/active = 0
+
+/obj/item/weapon/cloaking_device
+ name = "cloaking device"
+ desc = "Use this to become invisible to the human eyesocket."
+ icon = 'icons/obj/device.dmi'
+ icon_state = "shield0"
+ var/active = 0.0
+ flags = FPRINT | TABLEPASS| CONDUCT
+ item_state = "electronic"
+ throwforce = 10.0
+ throw_speed = 2
+ throw_range = 10
+ w_class = 2.0
+ origin_tech = "magnets=3;syndicate=4"
+
+
+/obj/item/weapon/cloaking_device/attack_self(mob/user as mob)
+ src.active = !( src.active )
+ if (src.active)
+ user << "\blue The cloaking device is now active."
+ src.icon_state = "shield1"
+ else
+ user << "\blue The cloaking device is now inactive."
+ src.icon_state = "shield0"
+ src.add_fingerprint(user)
+ return
+
+/obj/item/weapon/cloaking_device/emp_act(severity)
+ active = 0
+ icon_state = "shield0"
+ if(ismob(loc))
+ loc:update_icons()
+ ..()
diff --git a/code/game/objects/items/weapons/storage/misc.dm b/code/game/objects/items/weapons/storage/misc.dm
index 2a29e26ef21..e2ca8708f41 100644
--- a/code/game/objects/items/weapons/storage/misc.dm
+++ b/code/game/objects/items/weapons/storage/misc.dm
@@ -76,6 +76,16 @@
/*
* Crayon Box
*/
+/obj/item/weapon/storage/crayonbox
+ name = "box of crayons"
+ desc = "A box of crayons for all your rune drawing needs."
+ icon = 'icons/obj/crayons.dmi'
+ icon_state = "crayonbox"
+ w_class = 2.0
+ storage_slots = 6
+ can_hold = list(
+ "/obj/item/toy/crayon"
+ )
/obj/item/weapon/storage/crayonbox/New()
..()
diff --git a/code/game/objects/items/weapons/surgery_tools.dm b/code/game/objects/items/weapons/surgery_tools.dm
index 3c728523eca..8b64956651f 100644
--- a/code/game/objects/items/weapons/surgery_tools.dm
+++ b/code/game/objects/items/weapons/surgery_tools.dm
@@ -3,7 +3,7 @@
* Retractor
* Hemostat
* Cautery
- * Surgical Drill - MIA!
+ * Surgical Drill
* Scalpel
* Circular Saw
*/
@@ -11,6 +11,17 @@
/*
* Retractor
*/
+/obj/item/weapon/retractor
+ name = "retractor"
+ desc = "Retracts stuff."
+ icon = 'icons/obj/surgery.dmi'
+ icon_state = "retractor"
+ m_amt = 10000
+ g_amt = 5000
+ flags = FPRINT | TABLEPASS | CONDUCT
+ w_class = 1.0
+ origin_tech = "materials=1;biotech=1"
+
/obj/item/weapon/retractor/attack(mob/living/carbon/M as mob, mob/living/carbon/user as mob)
if(!istype(M))
return
@@ -84,6 +95,18 @@
/*
* Hemostat
*/
+/obj/item/weapon/hemostat
+ name = "hemostat"
+ desc = "You think you have seen this before."
+ icon = 'icons/obj/surgery.dmi'
+ icon_state = "hemostat"
+ m_amt = 5000
+ g_amt = 2500
+ flags = FPRINT | TABLEPASS | CONDUCT
+ w_class = 1.0
+ origin_tech = "materials=1;biotech=1"
+ attack_verb = list("attacked", "pinched")
+
/obj/item/weapon/hemostat/attack(mob/living/carbon/M as mob, mob/living/carbon/user as mob)
if(!istype(M))
return
@@ -169,6 +192,18 @@
/*
* Cautery
*/
+/obj/item/weapon/cautery
+ name = "cautery"
+ desc = "This stops bleeding."
+ icon = 'icons/obj/surgery.dmi'
+ icon_state = "cautery"
+ m_amt = 5000
+ g_amt = 2500
+ flags = FPRINT | TABLEPASS | CONDUCT
+ w_class = 1.0
+ origin_tech = "materials=1;biotech=1"
+ attack_verb = list("burnt")
+
/obj/item/weapon/cautery/attack(mob/living/carbon/M as mob, mob/living/carbon/user as mob)
if(!istype(M))
return
@@ -245,12 +280,40 @@
/*
* Surgical Drill
*/
-//obj/item/weapon/surgicaldrill
+/obj/item/weapon/surgicaldrill
+ name = "surgical drill"
+ desc = "You can drill using this item. You dig?"
+ icon = 'icons/obj/surgery.dmi'
+ icon_state = "drill"
+ hitsound = 'sound/weapons/circsawhit.ogg'
+ m_amt = 15000
+ g_amt = 10000
+ flags = FPRINT | TABLEPASS | CONDUCT
+ force = 15.0
+ w_class = 1.0
+ origin_tech = "materials=1;biotech=1"
+ attack_verb = list("drilled")
/*
* Scalpel
*/
+/obj/item/weapon/scalpel
+ name = "scalpel"
+ desc = "Cut, cut, and once more cut."
+ icon = 'icons/obj/surgery.dmi'
+ icon_state = "scalpel"
+ flags = FPRINT | TABLEPASS | CONDUCT
+ force = 10.0
+ w_class = 1.0
+ throwforce = 5.0
+ throw_speed = 3
+ throw_range = 5
+ m_amt = 10000
+ g_amt = 5000
+ origin_tech = "materials=1;biotech=1"
+ attack_verb = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut")
+
/obj/item/weapon/scalpel/attack(mob/living/carbon/M as mob, mob/living/carbon/user as mob)
if(!istype(M))
return ..()
@@ -453,6 +516,23 @@
/*
* Circular Saw
*/
+/obj/item/weapon/circular_saw
+ name = "circular saw"
+ desc = "For heavy duty cutting."
+ icon = 'icons/obj/surgery.dmi'
+ icon_state = "saw3"
+ hitsound = 'sound/weapons/circsawhit.ogg'
+ flags = FPRINT | TABLEPASS | CONDUCT
+ force = 15.0
+ w_class = 1.0
+ throwforce = 9.0
+ throw_speed = 3
+ throw_range = 5
+ m_amt = 20000
+ g_amt = 10000
+ origin_tech = "materials=1;biotech=1"
+ attack_verb = list("attacked", "slashed", "sawed", "cut")
+
/obj/item/weapon/circular_saw/attack(mob/living/carbon/M as mob, mob/living/carbon/user as mob)
if(!istype(M))
return ..()
diff --git a/code/game/objects/items/weapons/teleportation.dm b/code/game/objects/items/weapons/teleportation.dm
index 50bd785455d..52375b492b7 100644
--- a/code/game/objects/items/weapons/teleportation.dm
+++ b/code/game/objects/items/weapons/teleportation.dm
@@ -7,6 +7,23 @@
/*
* Locator
*/
+/obj/item/weapon/locator
+ name = "locator"
+ desc = "Used to track those with locater implants."
+ icon = 'icons/obj/device.dmi'
+ icon_state = "locator"
+ var/temp = null
+ var/frequency = 1451
+ var/broadcasting = null
+ var/listening = 1.0
+ flags = FPRINT | TABLEPASS| CONDUCT
+ w_class = 2.0
+ item_state = "electronic"
+ throw_speed = 4
+ throw_range = 20
+ m_amt = 400
+ origin_tech = "magnets=1"
+
/obj/item/weapon/locator/attack_self(mob/user as mob)
user.set_machine(src)
var/dat
@@ -105,6 +122,19 @@ Frequency:
/*
* Hand-tele
*/
+/obj/item/weapon/hand_tele
+ name = "hand tele"
+ desc = "A portable item using blue-space technology."
+ icon = 'icons/obj/device.dmi'
+ icon_state = "hand_tele"
+ item_state = "electronic"
+ throwforce = 5
+ w_class = 2.0
+ throw_speed = 3
+ throw_range = 5
+ m_amt = 10000
+ origin_tech = "magnets=1;bluespace=3"
+
/obj/item/weapon/hand_tele/attack_self(mob/user as mob)
var/turf/current_location = get_turf(user)//What turf is the user on?
if(!current_location||current_location.z==2||current_location.z>=7)//If turf was not found or they're on z level 2 or >7 which does not currently exist.
diff --git a/code/game/objects/items/weapons/tools.dm b/code/game/objects/items/weapons/tools.dm
index fd141b01b76..95bec1f9e22 100644
--- a/code/game/objects/items/weapons/tools.dm
+++ b/code/game/objects/items/weapons/tools.dm
@@ -4,10 +4,11 @@
* Note: Multitools are /obj/item/device
*
* Contains:
- * Wrench
- * Screwdriver
- * Wirecutters
- * Welding Tool
+ * Wrench
+ * Screwdriver
+ * Wirecutters
+ * Welding Tool
+ * Crowbar
*/
/*
@@ -31,6 +32,22 @@
/*
* Screwdriver
*/
+/obj/item/weapon/screwdriver
+ name = "screwdriver"
+ desc = "You can be totally screwwy with this."
+ icon = 'icons/obj/items.dmi'
+ icon_state = "screwdriver"
+ flags = FPRINT | TABLEPASS| CONDUCT
+ slot_flags = SLOT_BELT
+ force = 5.0
+ w_class = 1.0
+ throwforce = 5.0
+ throw_speed = 3
+ throw_range = 5
+ g_amt = 0
+ m_amt = 75
+ attack_verb = list("stabbed")
+
/obj/item/weapon/screwdriver/New()
switch(pick("red","blue","purple","brown","green","cyan","yellow"))
if ("red")
@@ -393,4 +410,28 @@
var/gen_amount = ((world.time-last_gen)/25)
reagents += (gen_amount)
if(reagents > max_fuel)
- reagents = max_fuel
\ No newline at end of file
+ reagents = max_fuel
+
+/*
+ * Crowbar
+ */
+
+/obj/item/weapon/crowbar
+ name = "crowbar"
+ desc = "Used to hit floors"
+ icon = 'icons/obj/items.dmi'
+ icon_state = "crowbar"
+ flags = FPRINT | TABLEPASS| CONDUCT
+ slot_flags = SLOT_BELT
+ force = 5.0
+ throwforce = 7.0
+ item_state = "crowbar"
+ w_class = 2.0
+ m_amt = 50
+ origin_tech = "engineering=1"
+ attack_verb = list("attacked", "bashed", "battered", "bludgeoned", "whacked")
+
+/obj/item/weapon/crowbar/red
+ icon = 'icons/obj/items.dmi'
+ icon_state = "red_crowbar"
+ item_state = "crowbar_red"
\ No newline at end of file
diff --git a/code/game/objects/items/weapons/weaponry.dm b/code/game/objects/items/weapons/weaponry.dm
new file mode 100644
index 00000000000..f1bcd25aaac
--- /dev/null
+++ b/code/game/objects/items/weapons/weaponry.dm
@@ -0,0 +1,79 @@
+/obj/item/weapon/banhammer
+ desc = "A banhammer"
+ name = "banhammer"
+ icon = 'icons/obj/items.dmi'
+ icon_state = "toyhammer"
+ flags = FPRINT | TABLEPASS
+ slot_flags = SLOT_BELT
+ throwforce = 0
+ w_class = 1.0
+ throw_speed = 7
+ throw_range = 15
+ attack_verb = list("banned")
+
+/obj/item/weapon/nullrod
+ name = "null rod"
+ 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 | TABLEPASS
+ slot_flags = SLOT_BELT
+ force = 15
+ throw_speed = 1
+ throw_range = 4
+ throwforce = 10
+ w_class = 1
+
+/obj/item/weapon/sord
+ name = "\improper SORD"
+ desc = "This thing is so unspeakably shitty you are having a hard time even holding it."
+ icon_state = "sord"
+ item_state = "sord"
+ flags = FPRINT | TABLEPASS
+ slot_flags = SLOT_BELT
+ force = 2
+ throwforce = 1
+ w_class = 3
+ attack_verb = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut")
+
+/obj/item/weapon/sord/attack(mob/living/carbon/M as mob, mob/living/carbon/user as mob)
+ playsound(loc, 'sound/weapons/bladeslice.ogg', 50, 1, -1)
+ return ..()
+
+/obj/item/weapon/claymore
+ name = "claymore"
+ desc = "What are you standing around staring at this for? Get to killing!"
+ icon_state = "claymore"
+ item_state = "claymore"
+ flags = FPRINT | TABLEPASS | CONDUCT
+ slot_flags = SLOT_BELT
+ force = 40
+ throwforce = 10
+ w_class = 3
+ attack_verb = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut")
+
+ IsShield()
+ return 1
+
+/obj/item/weapon/claymore/attack(mob/living/carbon/M as mob, mob/living/carbon/user as mob)
+ playsound(loc, 'sound/weapons/bladeslice.ogg', 50, 1, -1)
+ return ..()
+
+/obj/item/weapon/katana
+ name = "katana"
+ desc = "Woefully underpowered in D20"
+ icon_state = "katana"
+ item_state = "katana"
+ flags = FPRINT | TABLEPASS | CONDUCT
+ slot_flags = SLOT_BELT | SLOT_BACK
+ force = 40
+ throwforce = 10
+ w_class = 3
+ attack_verb = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut")
+
+/obj/item/weapon/katana/IsShield()
+ return 1
+
+/obj/item/weapon/katana/attack(mob/living/carbon/M as mob, mob/living/carbon/user as mob)
+ playsound(loc, 'sound/weapons/bladeslice.ogg', 50, 1, -1)
+ return ..()
\ No newline at end of file
diff --git a/code/game/objects/weapons.dm b/code/game/objects/weapons.dm
index 9d9b8a6bd61..533c752f118 100644
--- a/code/game/objects/weapons.dm
+++ b/code/game/objects/weapons.dm
@@ -1,3 +1,7 @@
+/obj/item/weapon
+ name = "weapon"
+ icon = 'icons/obj/weapons.dmi'
+
/obj/item/weapon/Bump(mob/M as mob)
spawn(0)
..()
diff --git a/code/modules/paperwork/paper.dm b/code/modules/paperwork/paper.dm
index 97a5b8d7e17..4fe296f333c 100644
--- a/code/modules/paperwork/paper.dm
+++ b/code/modules/paperwork/paper.dm
@@ -1,3 +1,7 @@
+/*
+ * Paper
+ */
+
/obj/item/weapon/paper
name = "paper"
gender = PLURAL
@@ -291,4 +295,46 @@
user << "You stamp the paper with your rubber stamp."
add_fingerprint(user)
- return
\ No newline at end of file
+ return
+
+/*
+ * Premade paper
+ */
+/obj/item/weapon/paper/Court
+ name = "paper- 'Judgement'"
+ info = "For crimes against the station, the offender is sentenced to:
\n
\n"
+
+/obj/item/weapon/paper/Toxin
+ name = "paper- 'Chemical Information'"
+ info = "Known Onboard Toxins:
\n\tGrade A Semi-Liquid Plasma:
\n\t\tHighly poisonous. You cannot sustain concentrations above 15 units.
\n\t\tA gas mask fails to filter plasma after 50 units.
\n\t\tWill attempt to diffuse like a gas.
\n\t\tFiltered by scrubbers.
\n\t\tThere is a bottled version which is very different
\n\t\t\tfrom the version found in canisters!
\n
\n\t\tWARNING: Highly Flammable. Keep away from heat sources
\n\t\texcept in a enclosed fire area!
\n\t\tWARNING: It is a crime to use this without authorization.
\nKnown Onboard Anti-Toxin:
\n\tAnti-Toxin Type 01P: Works against Grade A Plasma.
\n\t\tBest if injected directly into bloodstream.
\n\t\tA full injection is in every regular Med-Kit.
\n\t\tSpecial toxin Kits hold around 7.
\n
\nKnown Onboard Chemicals (other):
\n\tRejuvenation T#001:
\n\t\tEven 1 unit injected directly into the bloodstream
\n\t\t\twill cure paralysis and sleep toxins.
\n\t\tIf administered to a dying patient it will prevent
\n\t\t\tfurther damage for about units*3 seconds.
\n\t\t\tit will not cure them or allow them to be cured.
\n\t\tIt can be administeredd to a non-dying patient
\n\t\t\tbut the chemicals disappear just as fast.
\n\tSleep Toxin T#054:
\n\t\t5 units wilkl induce precisely 1 minute of sleep.
\n\t\t\tThe effect are cumulative.
\n\t\tWARNING: It is a crime to use this without authorization"
+
+/obj/item/weapon/paper/courtroom
+ name = "paper- 'A Crash Course in Legal SOP on SS13'"
+ info = "Roles:
\nThe Detective is basically the investigator and prosecutor.
\nThe Staff Assistant can perform these functions with written authority from the Detective.
\nThe Captain/HoP/Warden is ct as the judicial authority.
\nThe Security Officers are responsible for executing warrants, security during trial, and prisoner transport.
\n
\nInvestigative Phase:
\nAfter the crime has been committed the Detective's job is to gather evidence and try to ascertain not only who did it but what happened. He must take special care to catalogue everything and don't leave anything out. Write out all the evidence on paper. Make sure you take an appropriate number of fingerprints. IF he must ask someone questions he has permission to confront them. If the person refuses he can ask a judicial authority to write a subpoena for questioning. If again he fails to respond then that person is to be jailed as insubordinate and obstructing justice. Said person will be released after he cooperates.
\n
\nONCE the FT has a clear idea as to who the criminal is he is to write an arrest warrant on the piece of paper. IT MUST LIST THE CHARGES. The FT is to then go to the judicial authority and explain a small version of his case. If the case is moderately acceptable the authority should sign it. Security must then execute said warrant.
\n
\nPre-Pre-Trial Phase:
\nNow a legal representative must be presented to the defendant if said defendant requests one. That person and the defendant are then to be given time to meet (in the jail IS ACCEPTABLE). The defendant and his lawyer are then to be given a copy of all the evidence that will be presented at trial (rewriting it all on paper is fine). THIS IS CALLED THE DISCOVERY PACK. With a few exceptions, THIS IS THE ONLY EVIDENCE BOTH SIDES MAY USE AT TRIAL. IF the prosecution will be seeking the death penalty it MUST be stated at this time. ALSO if the defense will be seeking not guilty by mental defect it must state this at this time to allow ample time for examination.
\nNow at this time each side is to compile a list of witnesses. By default, the defendant is on both lists regardless of anything else. Also the defense and prosecution can compile more evidence beforehand BUT in order for it to be used the evidence MUST also be given to the other side.\nThe defense has time to compile motions against some evidence here.
\nPossible Motions:
\n1. Invalidate Evidence- Something with the evidence is wrong and the evidence is to be thrown out. This includes irrelevance or corrupt security.
\n2. Free Movement- Basically the defendant is to be kept uncuffed before and during the trial.
\n3. Subpoena Witness- If the defense presents god reasons for needing a witness but said person fails to cooperate then a subpoena is issued.
\n4. Drop the Charges- Not enough evidence is there for a trial so the charges are to be dropped. The FT CAN RETRY but the judicial authority must carefully reexamine the new evidence.
\n5. Declare Incompetent- Basically the defendant is insane. Once this is granted a medical official is to examine the patient. If he is indeed insane he is to be placed under care of the medical staff until he is deemed competent to stand trial.
\n
\nALL SIDES MOVE TO A COURTROOM
\nPre-Trial Hearings:
\nA judicial authority and the 2 sides are to meet in the trial room. NO ONE ELSE BESIDES A SECURITY DETAIL IS TO BE PRESENT. The defense submits a plea. If the plea is guilty then proceed directly to sentencing phase. Now the sides each present their motions to the judicial authority. He rules on them. Each side can debate each motion. Then the judicial authority gets a list of crew members. He first gets a chance to look at them all and pick out acceptable and available jurors. Those jurors are then called over. Each side can ask a few questions and dismiss jurors they find too biased. HOWEVER before dismissal the judicial authority MUST agree to the reasoning.
\n
\nThe Trial:
\nThe trial has three phases.
\n1. Opening Arguments- Each side can give a short speech. They may not present ANY evidence.
\n2. Witness Calling/Evidence Presentation- The prosecution goes first and is able to call the witnesses on his approved list in any order. He can recall them if necessary. During the questioning the lawyer may use the evidence in the questions to help prove a point. After every witness the other side has a chance to cross-examine. After both sides are done questioning a witness the prosecution can present another or recall one (even the EXACT same one again!). After prosecution is done the defense can call witnesses. After the initial cases are presented both sides are free to call witnesses on either list.
\nFINALLY once both sides are done calling witnesses we move onto the next phase.
\n3. Closing Arguments- Same as opening.
\nThe jury then deliberates IN PRIVATE. THEY MUST ALL AGREE on a verdict. REMEMBER: They mix between some charges being guilty and others not guilty (IE if you supposedly killed someone with a gun and you unfortunately picked up a gun without authorization then you CAN be found not guilty of murder BUT guilty of possession of illegal weaponry.). Once they have agreed they present their verdict. If unable to reach a verdict and feel they will never they call a deadlocked jury and we restart at Pre-Trial phase with an entirely new set of jurors.
\n
\nSentencing Phase:
\nIf the death penalty was sought (you MUST have gone through a trial for death penalty) then skip to the second part.
\nI. Each side can present more evidence/witnesses in any order. There is NO ban on emotional aspects or anything. The prosecution is to submit a suggested penalty. After all the sides are done then the judicial authority is to give a sentence.
\nII. The jury stays and does the same thing as I. Their sole job is to determine if the death penalty is applicable. If NOT then the judge selects a sentence.
\n
\nTADA you're done. Security then executes the sentence and adds the applicable convictions to the person's record.
\n"
+
+/obj/item/weapon/paper/hydroponics
+ name = "paper- 'Greetings from Billy Bob'"
+ info = "Hey fellow botanist!
\n
\nI didn't trust the station folk so I left
\na couple of weeks ago. But here's some
\ninstructions on how to operate things here.
\nYou can grow plants and each iteration they become
\nstronger, more potent and have better yield, if you
\nknow which ones to pick. Use your botanist's analyzer
\nfor that. You can turn harvested plants into seeds
\nat the seed extractor, and replant them for better stuff!
\nSometimes if the weed level gets high in the tray
\nmutations into different mushroom or weed species have
\nbeen witnessed. On the rare occassion even weeds mutate!
\n
\nEither way, have fun!
\n
\nBest regards,
\nBilly Bob Johnson.
\n
\nPS.
\nHere's a few tips:
\nIn nettles, potency = damage
\nIn amanitas, potency = deadliness + side effect
\nIn Liberty caps, potency = drug power + effect
\nIn chilis, potency = heat
\nNutrients keep mushrooms alive!
\nWater keeps weeds such as nettles alive!
\nAll other plants need both."
+
+/obj/item/weapon/paper/djstation
+ name = "paper - 'DJ Listening Outpost'"
+ info = "Welcome new owner!
You have purchased the latest in listening equipment. The telecommunication setup we created is the best in listening to common and private radio fequencies. Here is a step by step guide to start listening in on those saucy radio channels:
- Equip yourself with a multi-tool
- Use the multitool on each machine, that is the broadcaster, receiver and the relay.
- Turn all the machines on, it has already been configured for you to listen on.
Simple as that. Now to listen to the private channels, you'll have to configure the intercoms, located on the front desk. Here is a list of frequencies for you to listen on.
- 145.7 - Common Channel
- 144.7 - Private AI Channel
- 135.9 - Security Channel
- 135.7 - Engineering Channel
- 135.5 - Medical Channel
- 135.3 - Command Channel
- 135.1 - Science Channel
- 134.9 - Mining Channel
- 134.7 - Cargo Channel
"
+
+/obj/item/weapon/paper/flag
+ icon_state = "flag_neutral"
+ item_state = "paper"
+ anchored = 1.0
+
+/obj/item/weapon/paper/jobs
+ name = "paper- 'Job Information'"
+ info = "Information on all formal jobs that can be assigned on Space Station 13 can be found on this document.
\nThe data will be in the following form.
\nGenerally lower ranking positions come first in this list.
\n
\nJob Name general access>lab access-engine access-systems access (atmosphere control)
\n\tJob Description
\nJob Duties (in no particular order)
\nTips (where applicable)
\n
\nResearch Assistant 1>1-0-0
\n\tThis is probably the lowest level position. Anyone who enters the space station after the initial job\nassignment will automatically receive this position. Access with this is restricted. Head of Personnel should\nappropriate the correct level of assistance.
\n1. Assist the researchers.
\n2. Clean up the labs.
\n3. Prepare materials.
\n
\nStaff Assistant 2>0-0-0
\n\tThis position assists the security officer in his duties. The staff assisstants should primarily br\npatrolling the ship waiting until they are needed to maintain ship safety.\n(Addendum: Updated/Elevated Security Protocols admit issuing of low level weapons to security personnel)
\n1. Patrol ship/Guard key areas
\n2. Assist security officer
\n3. Perform other security duties.
\n
\nTechnical Assistant 1>0-0-1
\n\tThis is yet another low level position. The technical assistant helps the engineer and the statian\ntechnician with the upkeep and maintenance of the station. This job is very important because it usually\ngets to be a heavy workload on station technician and these helpers will alleviate that.
\n1. Assist Station technician and Engineers.
\n2. Perform general maintenance of station.
\n3. Prepare materials.
\n
\nMedical Assistant 1>1-0-0
\n\tThis is the fourth position yet it is slightly less common. This position doesn't have much power\noutside of the med bay. Consider this position like a nurse who helps to upkeep medical records and the\nmaterials (filling syringes and checking vitals)
\n1. Assist the medical personnel.
\n2. Update medical files.
\n3. Prepare materials for medical operations.
\n
\nResearch Technician 2>3-0-0
\n\tThis job is primarily a step up from research assistant. These people generally do not get their own lab\nbut are more hands on in the experimentation process. At this level they are permitted to work as consultants to\nthe others formally.
\n1. Inform superiors of research.
\n2. Perform research alongside of official researchers.
\n
\nDetective 3>2-0-0
\n\tThis job is in most cases slightly boring at best. Their sole duty is to\nperform investigations of crine scenes and analysis of the crime scene. This\nalleviates SOME of the burden from the security officer. This person's duty\nis to draw conclusions as to what happened and testify in court. Said person\nalso should stroe the evidence ly.
\n1. Perform crime-scene investigations/draw conclusions.
\n2. Store and catalogue evidence properly.
\n3. Testify to superiors/inquieries on findings.
\n
\nStation Technician 2>0-2-3
\n\tPeople assigned to this position must work to make sure all the systems aboard Space Station 13 are operable.\nThey should primarily work in the computer lab and repairing faulty equipment. They should work with the\natmospheric technician.
\n1. Maintain SS13 systems.
\n2. Repair equipment.
\n
\nAtmospheric Technician 3>0-0-4
\n\tThese people should primarily work in the atmospheric control center and lab. They have the very important\njob of maintaining the delicate atmosphere on SS13.
\n1. Maintain atmosphere on SS13
\n2. Research atmospheres on the space station. (safely please!)
\n
\nEngineer 2>1-3-0
\n\tPeople working as this should generally have detailed knowledge as to how the propulsion systems on SS13\nwork. They are one of the few classes that have unrestricted access to the engine area.
\n1. Upkeep the engine.
\n2. Prevent fires in the engine.
\n3. Maintain a safe orbit.
\n
\nMedical Researcher 2>5-0-0
\n\tThis position may need a little clarification. Their duty is to make sure that all experiments are safe and\nto conduct experiments that may help to improve the station. They will be generally idle until a new laboratory\nis constructed.
\n1. Make sure the station is kept safe.
\n2. Research medical properties of materials studied of Space Station 13.
\n
\nScientist 2>5-0-0
\n\tThese people study the properties, particularly the toxic properties, of materials handled on SS13.\nTechnically they can also be called Plasma Technicians as plasma is the material they routinly handle.
\n1. Research plasma
\n2. Make sure all plasma is properly handled.
\n
\nMedical Doctor (Officer) 2>0-0-0
\n\tPeople working this job should primarily stay in the medical area. They should make sure everyone goes to\nthe medical bay for treatment and examination. Also they should make sure that medical supplies are kept in\norder.
\n1. Heal wounded people.
\n2. Perform examinations of all personnel.
\n3. Moniter usage of medical equipment.
\n
\nSecurity Officer 3>0-0-0
\n\tThese people should attempt to keep the peace inside the station and make sure the station is kept safe. One\nside duty is to assist in repairing the station. They also work like general maintenance personnel. They are not\ngiven a weapon and must use their own resources.
\n(Addendum: Updated/Elevated Security Protocols admit issuing of weapons to security personnel)
\n1. Maintain order.
\n2. Assist others.
\n3. Repair structural problems.
\n
\nHead of Security 4>5-2-2
\n\tPeople assigned as Head of Security should issue orders to the security staff. They should\nalso carefully moderate the usage of all security equipment. All security matters should be reported to this person.
\n1. Oversee security.
\n2. Assign patrol duties.
\n3. Protect the station and staff.
\n
\nHead of Personnel 4>4-2-2
\n\tPeople assigned as head of personnel will find themselves moderating all actions done by personnel. \nAlso they have the ability to assign jobs and access levels.
\n1. Assign duties.
\n2. Moderate personnel.
\n3. Moderate research.
\n
\nCaptain 5>5-5-5 (unrestricted station wide access)
\n\tThis is the highest position youi can aquire on Space Station 13. They are allowed anywhere inside the\nspace station and therefore should protect their ID card. They also have the ability to assign positions\nand access levels. They should not abuse their power.
\n1. Assign all positions on SS13
\n2. Inspect the station for any problems.
\n3. Perform administrative duties.
\n"
+
+/obj/item/weapon/paper/photograph
+ name = "photo"
+ icon_state = "photo"
+ var/photo_id = 0.0
+ item_state = "paper"
+
+/obj/item/weapon/paper/sop
+ name = "paper- 'Standard Operating Procedure'"
+ info = "Alert Levels:
\nBlue- Emergency
\n\t1. Caused by fire
\n\t2. Caused by manual interaction
\n\tAction:
\n\t\tClose all fire doors. These can only be opened by reseting the alarm
\nRed- Ejection/Self Destruct
\n\t1. Caused by module operating computer.
\n\tAction:
\n\t\tAfter the specified time the module will eject completely.
\n
\nEngine Maintenance Instructions:
\n\tShut off ignition systems:
\n\tActivate internal power
\n\tActivate orbital balance matrix
\n\tRemove volatile liquids from area
\n\tWear a fire suit
\n
\n\tAfter
\n\t\tDecontaminate
\n\t\tVisit medical examiner
\n
\nToxin Laboratory Procedure:
\n\tWear a gas mask regardless
\n\tGet an oxygen tank.
\n\tActivate internal atmosphere
\n
\n\tAfter
\n\t\tDecontaminate
\n\t\tVisit medical examiner
\n
\nDisaster Procedure:
\n\tFire:
\n\t\tActivate sector fire alarm.
\n\t\tMove to a safe area.
\n\t\tGet a fire suit
\n\t\tAfter:
\n\t\t\tAssess Damage
\n\t\t\tRepair damages
\n\t\t\tIf needed, Evacuate
\n\tMeteor Shower:
\n\t\tActivate fire alarm
\n\t\tMove to the back of ship
\n\t\tAfter
\n\t\t\tRepair damage
\n\t\t\tIf needed, Evacuate
\n\tAccidental Reentry:
\n\t\tActivate fire alrms in front of ship.
\n\t\tMove volatile matter to a fire proof area!
\n\t\tGet a fire suit.
\n\t\tStay secure until an emergency ship arrives.
\n
\n\t\tIf ship does not arrive-
\n\t\t\tEvacuate to a nearby safe area!"
diff --git a/code/modules/power/cable.dm b/code/modules/power/cable.dm
index c6f4f4600a4..fd99360fc0c 100644
--- a/code/modules/power/cable.dm
+++ b/code/modules/power/cable.dm
@@ -153,6 +153,26 @@
// the cable coil object, used for laying cable
+#define MAXCOIL 30
+/obj/item/weapon/cable_coil
+ name = "cable coil"
+ icon = 'icons/obj/power.dmi'
+ icon_state = "coil_red"
+ var/amount = MAXCOIL
+ color = "red"
+ desc = "A coil of power cable."
+ throwforce = 10
+ w_class = 2.0
+ throw_speed = 2
+ throw_range = 5
+ m_amt = 50
+ g_amt = 20
+ flags = TABLEPASS | USEDELAY | FPRINT | CONDUCT
+ slot_flags = SLOT_BELT
+ item_state = "coil_red"
+ attack_verb = list("whipped", "lashed", "disciplined", "flogged")
+
+
/obj/item/weapon/cable_coil/New(loc, length = MAXCOIL, var/param_color = null)
..()
src.amount = length
@@ -162,14 +182,6 @@
pixel_y = rand(-2,2)
updateicon()
-
-/obj/item/weapon/cable_coil/cut/New(loc)
- ..()
- src.amount = rand(1,2)
- pixel_x = rand(-2,2)
- pixel_y = rand(-2,2)
- updateicon()
-
/obj/item/weapon/cable_coil/proc/updateicon()
if (!color)
color = pick("red", "yellow", "blue", "green")
@@ -492,3 +504,46 @@ obj/structure/cable/proc/cableColor(var/colorC)
icon = 'icons/obj/power_cond_cyan.dmi'
if("white")
icon = 'icons/obj/power_cond_white.dmi'
+
+/obj/item/weapon/cable_coil/cut
+ item_state = "coil_red2"
+
+/obj/item/weapon/cable_coil/cut/New(loc)
+ ..()
+ src.amount = rand(1,2)
+ pixel_x = rand(-2,2)
+ pixel_y = rand(-2,2)
+ updateicon()
+
+/obj/item/weapon/cable_coil/yellow
+ color = "yellow"
+ icon_state = "coil_yellow"
+
+/obj/item/weapon/cable_coil/blue
+ color = "blue"
+ icon_state = "coil_blue"
+
+/obj/item/weapon/cable_coil/green
+ color = "green"
+ icon_state = "coil_green"
+
+/obj/item/weapon/cable_coil/pink
+ color = "pink"
+ icon_state = "coil_pink"
+
+/obj/item/weapon/cable_coil/orange
+ color = "orange"
+ icon_state = "coil_orange"
+
+/obj/item/weapon/cable_coil/cyan
+ color = "cyan"
+ icon_state = "coil_cyan"
+
+/obj/item/weapon/cable_coil/white
+ color = "white"
+ icon_state = "coil_white"
+
+/obj/item/weapon/cable_coil/random/New()
+ color = pick("red","yellow","green","blue","pink")
+ icon_state = "coil_[color]"
+ ..()
\ No newline at end of file
diff --git a/tgstation.dme b/tgstation.dme
index 168e5d32f03..e5d087e7b74 100644
--- a/tgstation.dme
+++ b/tgstation.dme
@@ -140,7 +140,6 @@
#include "code\datums\spells\wizard.dm"
#include "code\defines\obj.dm"
#include "code\defines\obj\hydro.dm"
-#include "code\defines\obj\toy.dm"
#include "code\defines\obj\weapon.dm"
#include "code\defines\procs\AStar.dm"
#include "code\defines\procs\captain_announce.dm"
@@ -421,6 +420,7 @@
#include "code\game\objects\items\latexballoon.dm"
#include "code\game\objects\items\shooting_range.dm"
#include "code\game\objects\items\tk_grab.dm"
+#include "code\game\objects\items\toys.dm"
#include "code\game\objects\items\trash.dm"
#include "code\game\objects\items\devices\aicard.dm"
#include "code\game\objects\items\devices\chameleonproj.dm"
@@ -431,7 +431,6 @@
#include "code\game\objects\items\devices\paicard.dm"
#include "code\game\objects\items\devices\powersink.dm"
#include "code\game\objects\items\devices\scanners.dm"
-#include "code\game\objects\items\devices\shields.dm"
#include "code\game\objects\items\devices\taperecorder.dm"
#include "code\game\objects\items\devices\traitordevices.dm"
#include "code\game\objects\items\devices\transfer_valve.dm"
@@ -480,9 +479,11 @@
#include "code\game\objects\items\weapons\mop.dm"
#include "code\game\objects\items\weapons\paint.dm"
#include "code\game\objects\items\weapons\paiwire.dm"
+#include "code\game\objects\items\weapons\power_cells.dm"
#include "code\game\objects\items\weapons\RCD.dm"
#include "code\game\objects\items\weapons\RSF.dm"
#include "code\game\objects\items\weapons\scrolls.dm"
+#include "code\game\objects\items\weapons\shields.dm"
#include "code\game\objects\items\weapons\stunbaton.dm"
#include "code\game\objects\items\weapons\surgery_tools.dm"
#include "code\game\objects\items\weapons\swords_axes_etc.dm"
@@ -491,6 +492,7 @@
#include "code\game\objects\items\weapons\tools.dm"
#include "code\game\objects\items\weapons\trashbag.dm"
#include "code\game\objects\items\weapons\twohanded.dm"
+#include "code\game\objects\items\weapons\weaponry.dm"
#include "code\game\objects\items\weapons\wires.dm"
#include "code\game\objects\items\weapons\grenades\chem_grenade.dm"
#include "code\game\objects\items\weapons\grenades\emgrenade.dm"
@@ -506,6 +508,8 @@
#include "code\game\objects\items\weapons\implants\implantnanoaug.dm"
#include "code\game\objects\items\weapons\implants\implantpad.dm"
#include "code\game\objects\items\weapons\implants\implantuplink.dm"
+#include "code\game\objects\items\weapons\melee\energy.dm"
+#include "code\game\objects\items\weapons\melee\misc.dm"
#include "code\game\objects\items\weapons\secstorage\sbriefcase.dm"
#include "code\game\objects\items\weapons\secstorage\secstorage.dm"
#include "code\game\objects\items\weapons\secstorage\ssafe.dm"