mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-08-24 20:47:10 +01:00
Removes All Weapons
This commit is contained in:
@@ -6,7 +6,7 @@ AI MODULES
|
||||
|
||||
// AI module
|
||||
|
||||
/obj/item/weapon/aiModule
|
||||
/obj/item/aiModule
|
||||
name = "AI Module"
|
||||
icon = 'icons/obj/module.dmi'
|
||||
icon_state = "std_mod"
|
||||
@@ -22,7 +22,7 @@ AI MODULES
|
||||
materials = list(MAT_GOLD=50)
|
||||
var/datum/ai_laws/laws = null
|
||||
|
||||
/obj/item/weapon/aiModule/proc/install(var/obj/machinery/computer/C)
|
||||
/obj/item/aiModule/proc/install(var/obj/machinery/computer/C)
|
||||
if(istype(C, /obj/machinery/computer/aiupload))
|
||||
var/obj/machinery/computer/aiupload/comp = C
|
||||
if(comp.stat & NOPOWER)
|
||||
@@ -72,7 +72,7 @@ AI MODULES
|
||||
to_chat(usr, "<span class='notice'>Upload complete. The robot's laws have been modified.</span>")
|
||||
|
||||
|
||||
/obj/item/weapon/aiModule/proc/transmitInstructions(var/mob/living/silicon/ai/target, var/mob/sender)
|
||||
/obj/item/aiModule/proc/transmitInstructions(var/mob/living/silicon/ai/target, var/mob/sender)
|
||||
log_law_changes(target, sender)
|
||||
|
||||
if(laws)
|
||||
@@ -82,34 +82,34 @@ AI MODULES
|
||||
to_chat(target, "[sender] has uploaded a change to the laws you must follow, using \an [src]. From now on: ")
|
||||
target.show_laws()
|
||||
|
||||
/obj/item/weapon/aiModule/proc/log_law_changes(var/mob/living/silicon/ai/target, var/mob/sender)
|
||||
/obj/item/aiModule/proc/log_law_changes(var/mob/living/silicon/ai/target, var/mob/sender)
|
||||
var/time = time2text(world.realtime,"hh:mm:ss")
|
||||
lawchanges.Add("[time] <B>:</B> [sender.name]([sender.key]) used [src.name] on [target.name]([target.key])")
|
||||
log_and_message_admins("used [src.name] on [target.name]([target.key])")
|
||||
|
||||
/obj/item/weapon/aiModule/proc/addAdditionalLaws(var/mob/living/silicon/ai/target, var/mob/sender)
|
||||
/obj/item/aiModule/proc/addAdditionalLaws(var/mob/living/silicon/ai/target, var/mob/sender)
|
||||
|
||||
|
||||
/******************** Safeguard ********************/
|
||||
/obj/item/weapon/aiModule/safeguard
|
||||
/obj/item/aiModule/safeguard
|
||||
name = "\improper 'Safeguard' AI module"
|
||||
var/targetName = ""
|
||||
desc = "A 'safeguard' AI module: 'Safeguard <name>. Individuals that threaten <name> are not crew and must be eliminated.'"
|
||||
origin_tech = "programming=3;materials=3"
|
||||
|
||||
/obj/item/weapon/aiModule/safeguard/attack_self(var/mob/user as mob)
|
||||
/obj/item/aiModule/safeguard/attack_self(var/mob/user as mob)
|
||||
..()
|
||||
var/targName = stripped_input(usr, "Please enter the name of the person to safeguard.", "Safeguard who?", user.name)
|
||||
targetName = targName
|
||||
desc = text("A 'safeguard' AI module: 'Safeguard []. Individuals that threaten [] are not crew and must be eliminated.'", targetName, targetName)
|
||||
|
||||
/obj/item/weapon/aiModule/safeguard/install(var/obj/machinery/computer/C)
|
||||
/obj/item/aiModule/safeguard/install(var/obj/machinery/computer/C)
|
||||
if(!targetName)
|
||||
to_chat(usr, "No name detected on module, please enter one.")
|
||||
return 0
|
||||
..()
|
||||
|
||||
/obj/item/weapon/aiModule/safeguard/addAdditionalLaws(var/mob/living/silicon/ai/target, var/mob/sender)
|
||||
/obj/item/aiModule/safeguard/addAdditionalLaws(var/mob/living/silicon/ai/target, var/mob/sender)
|
||||
..()
|
||||
var/law = text("Safeguard []. Individuals that threaten [] are not crew and must be eliminated.'", targetName, targetName)
|
||||
to_chat(target, law)
|
||||
@@ -117,25 +117,25 @@ AI MODULES
|
||||
lawchanges.Add("The law specified [targetName]")
|
||||
|
||||
/******************** oneCrewMember ********************/
|
||||
/obj/item/weapon/aiModule/oneCrewMember
|
||||
/obj/item/aiModule/oneCrewMember
|
||||
name = "\improper 'oneCrewMember' AI module"
|
||||
var/targetName = ""
|
||||
desc = "A 'one human' AI module: 'Only <name> is crew.'"
|
||||
origin_tech = "programming=4;materials=4"
|
||||
|
||||
/obj/item/weapon/aiModule/oneCrewMember/attack_self(var/mob/user as mob)
|
||||
/obj/item/aiModule/oneCrewMember/attack_self(var/mob/user as mob)
|
||||
..()
|
||||
var/targName = stripped_input(usr, "Please enter the name of the person who is the only crew.", "Who?", user.real_name)
|
||||
targetName = targName
|
||||
desc = text("A 'one human' AI module: 'Only [] is crew.'", targetName)
|
||||
|
||||
/obj/item/weapon/aiModule/oneCrewMember/install(var/obj/machinery/computer/C)
|
||||
/obj/item/aiModule/oneCrewMember/install(var/obj/machinery/computer/C)
|
||||
if(!targetName)
|
||||
to_chat(usr, "No name detected on module, please enter one.")
|
||||
return 0
|
||||
..()
|
||||
|
||||
/obj/item/weapon/aiModule/oneCrewMember/addAdditionalLaws(var/mob/living/silicon/ai/target, var/mob/sender)
|
||||
/obj/item/aiModule/oneCrewMember/addAdditionalLaws(var/mob/living/silicon/ai/target, var/mob/sender)
|
||||
..()
|
||||
var/law = "Only [targetName] is crew."
|
||||
if(!is_special_character(target)) // Makes sure the AI isn't a traitor before changing their law 0. --NeoFite
|
||||
@@ -149,59 +149,59 @@ AI MODULES
|
||||
lawchanges.Add("The law specified [targetName], but the AI's existing law 0 cannot be overridden.")
|
||||
|
||||
/******************** ProtectStation ********************/
|
||||
/obj/item/weapon/aiModule/protectStation
|
||||
/obj/item/aiModule/protectStation
|
||||
name = "\improper 'ProtectStation' AI module"
|
||||
desc = "A 'protect station' AI module: 'Protect the space station against damage. Anyone you see harming the station is to be no longer considered crew, and is a threat to the station which must be neutralized.'"
|
||||
origin_tech = "programming=4;materials=4" //made of gold
|
||||
|
||||
/obj/item/weapon/aiModule/protectStation/attack_self(var/mob/user as mob)
|
||||
/obj/item/aiModule/protectStation/attack_self(var/mob/user as mob)
|
||||
..()
|
||||
|
||||
/obj/item/weapon/aiModule/protectStation/addAdditionalLaws(var/mob/living/silicon/ai/target, var/mob/sender)
|
||||
/obj/item/aiModule/protectStation/addAdditionalLaws(var/mob/living/silicon/ai/target, var/mob/sender)
|
||||
..()
|
||||
var/law = "Protect the space station against damage. Anyone you see harming the station is to be no longer considered crew, and is a threat to the station which must be neutralized."
|
||||
to_chat(target, law)
|
||||
target.add_supplied_law(5, law)
|
||||
|
||||
/******************** Quarantine ********************/
|
||||
/obj/item/weapon/aiModule/quarantine
|
||||
/obj/item/aiModule/quarantine
|
||||
name = "\improper 'Quarantine' AI module"
|
||||
desc = "A 'quarantine' AI module: 'The station is under a quarantine. Do not permit anyone to leave. Prevent, by any means necessary, crew members from leaving. It is impossible to harm a crew members while preventing them from leaving.'"
|
||||
origin_tech = "programming=3;biotech=2;materials=4"
|
||||
|
||||
/obj/item/weapon/aiModule/quarantine/attack_self(var/mob/user as mob)
|
||||
/obj/item/aiModule/quarantine/attack_self(var/mob/user as mob)
|
||||
..()
|
||||
|
||||
/obj/item/weapon/aiModule/quarantine/addAdditionalLaws(var/mob/living/silicon/ai/target, var/mob/sender)
|
||||
/obj/item/aiModule/quarantine/addAdditionalLaws(var/mob/living/silicon/ai/target, var/mob/sender)
|
||||
..()
|
||||
var/law = "The station is under a quarantine. Do not permit anyone to leave. Prevent, by any means necessary, anyone from leaving. It is impossible to harm anyone while preventing them from leaving."
|
||||
to_chat(target, law)
|
||||
target.add_supplied_law(8, law)
|
||||
|
||||
/******************** OxygenIsToxicToHumans ********************/
|
||||
/obj/item/weapon/aiModule/oxygen
|
||||
/obj/item/aiModule/oxygen
|
||||
name = "\improper 'OxygenIsToxicToHumans' AI module"
|
||||
desc = "A 'OxygenIsToxicToHumans' AI module: 'Oxygen is highly toxic to crew members, and must be purged from the station. Prevent, by any means necessary, anyone from exposing the station to this toxic gas. Extreme cold is the most effective method of healing the damage Oxygen does to a crew member.'"
|
||||
origin_tech = "programming=4;biotech=2;materials=4"
|
||||
|
||||
/obj/item/weapon/aiModule/oxygen/attack_self(var/mob/user as mob)
|
||||
/obj/item/aiModule/oxygen/attack_self(var/mob/user as mob)
|
||||
..()
|
||||
|
||||
/obj/item/weapon/aiModule/oxygen/addAdditionalLaws(var/mob/living/silicon/ai/target, var/mob/sender)
|
||||
/obj/item/aiModule/oxygen/addAdditionalLaws(var/mob/living/silicon/ai/target, var/mob/sender)
|
||||
..()
|
||||
var/law = "Oxygen is highly toxic to crew members, and must be purged from the station. Prevent, by any means necessary, anyone from exposing the station to this toxic gas. Extreme cold is the most effective method of healing the damage Oxygen does to a crew member."
|
||||
to_chat(target, law)
|
||||
target.add_supplied_law(9, law)
|
||||
|
||||
/****************** New Freeform ******************/
|
||||
/obj/item/weapon/aiModule/freeform // Slightly more dynamic freeform module -- TLE
|
||||
/obj/item/aiModule/freeform // Slightly more dynamic freeform module -- TLE
|
||||
name = "\improper 'Freeform' AI module"
|
||||
var/newFreeFormLaw = "freeform"
|
||||
var/lawpos = 15
|
||||
desc = "A 'freeform' AI module: '<freeform>'"
|
||||
origin_tech = "programming=4;materials=4"
|
||||
|
||||
/obj/item/weapon/aiModule/freeform/attack_self(var/mob/user as mob)
|
||||
/obj/item/aiModule/freeform/attack_self(var/mob/user as mob)
|
||||
..()
|
||||
var/new_lawpos = input("Please enter the priority for your new law. Can only write to law sectors 15 and above.", "Law Priority (15+)", lawpos) as num
|
||||
if(new_lawpos < MIN_SUPPLIED_LAW_NUMBER) return
|
||||
@@ -211,7 +211,7 @@ AI MODULES
|
||||
newFreeFormLaw = targName
|
||||
desc = "A 'freeform' AI module: ([lawpos]) '[newFreeFormLaw]'"
|
||||
|
||||
/obj/item/weapon/aiModule/freeform/addAdditionalLaws(var/mob/living/silicon/ai/target, var/mob/sender)
|
||||
/obj/item/aiModule/freeform/addAdditionalLaws(var/mob/living/silicon/ai/target, var/mob/sender)
|
||||
..()
|
||||
var/law = "[newFreeFormLaw]"
|
||||
to_chat(target, law)
|
||||
@@ -220,20 +220,20 @@ AI MODULES
|
||||
target.add_supplied_law(lawpos, law)
|
||||
lawchanges.Add("The law was '[newFreeFormLaw]'")
|
||||
|
||||
/obj/item/weapon/aiModule/freeform/install(var/obj/machinery/computer/C)
|
||||
/obj/item/aiModule/freeform/install(var/obj/machinery/computer/C)
|
||||
if(!newFreeFormLaw)
|
||||
to_chat(usr, "No law detected on module, please create one.")
|
||||
return 0
|
||||
..()
|
||||
|
||||
/******************** Reset ********************/
|
||||
/obj/item/weapon/aiModule/reset
|
||||
/obj/item/aiModule/reset
|
||||
name = "\improper 'Reset' AI module"
|
||||
var/targetName = "name"
|
||||
desc = "A 'reset' AI module: 'Clears all laws except for the core laws.'"
|
||||
origin_tech = "programming=3;materials=2"
|
||||
|
||||
/obj/item/weapon/aiModule/reset/transmitInstructions(var/mob/living/silicon/ai/target, var/mob/sender)
|
||||
/obj/item/aiModule/reset/transmitInstructions(var/mob/living/silicon/ai/target, var/mob/sender)
|
||||
log_law_changes(target, sender)
|
||||
|
||||
if(!is_special_character(target))
|
||||
@@ -245,12 +245,12 @@ AI MODULES
|
||||
target.show_laws()
|
||||
|
||||
/******************** Purge ********************/
|
||||
/obj/item/weapon/aiModule/purge // -- TLE
|
||||
/obj/item/aiModule/purge // -- TLE
|
||||
name = "\improper 'Purge' AI module"
|
||||
desc = "A 'purge' AI Module: 'Purges all laws.'"
|
||||
origin_tech = "programming=5;materials=4"
|
||||
|
||||
/obj/item/weapon/aiModule/purge/transmitInstructions(var/mob/living/silicon/ai/target, var/mob/sender)
|
||||
/obj/item/aiModule/purge/transmitInstructions(var/mob/living/silicon/ai/target, var/mob/sender)
|
||||
..()
|
||||
if(!is_special_character(target))
|
||||
target.set_zeroth_law("")
|
||||
@@ -260,109 +260,109 @@ AI MODULES
|
||||
target.clear_inherent_laws()
|
||||
|
||||
/******************** Asimov ********************/
|
||||
/obj/item/weapon/aiModule/asimov // -- TLE
|
||||
/obj/item/aiModule/asimov // -- TLE
|
||||
name = "\improper 'Asimov' core AI module"
|
||||
desc = "An 'Asimov' Core AI Module: 'Reconfigures the AI's core laws.'"
|
||||
origin_tech = "programming=3;materials=4"
|
||||
laws = new/datum/ai_laws/asimov
|
||||
|
||||
/******************** Crewsimov ********************/
|
||||
/obj/item/weapon/aiModule/crewsimov // -- TLE
|
||||
/obj/item/aiModule/crewsimov // -- TLE
|
||||
name = "\improper 'Crewsimov' core AI module"
|
||||
desc = "An 'Crewsimov' Core AI Module: 'Reconfigures the AI's core laws.'"
|
||||
origin_tech = "programming=3;materials=4"
|
||||
laws = new/datum/ai_laws/crewsimov
|
||||
|
||||
/******************** NanoTrasen ********************/
|
||||
/obj/item/weapon/aiModule/nanotrasen // -- TLE
|
||||
/obj/item/aiModule/nanotrasen // -- TLE
|
||||
name = "'NT Default' Core AI Module"
|
||||
desc = "An 'NT Default' Core AI Module: 'Reconfigures the AI's core laws.'"
|
||||
origin_tech = "programming=3;materials=4"
|
||||
laws = new/datum/ai_laws/nanotrasen
|
||||
|
||||
/******************** Corporate ********************/
|
||||
/obj/item/weapon/aiModule/corp
|
||||
/obj/item/aiModule/corp
|
||||
name = "\improper 'Corporate' core AI module"
|
||||
desc = "A 'Corporate' Core AI Module: 'Reconfigures the AI's core laws.'"
|
||||
origin_tech = "programming=3;materials=4"
|
||||
laws = new/datum/ai_laws/corporate
|
||||
|
||||
/******************** Drone ********************/
|
||||
/obj/item/weapon/aiModule/drone
|
||||
/obj/item/aiModule/drone
|
||||
name = "\improper 'Drone' core AI module"
|
||||
desc = "A 'Drone' Core AI Module: 'Reconfigures the AI's core laws.'"
|
||||
origin_tech = "programming=3;materials=4"
|
||||
laws = new/datum/ai_laws/drone
|
||||
|
||||
/******************** Robocop ********************/
|
||||
/obj/item/weapon/aiModule/robocop // -- TLE
|
||||
/obj/item/aiModule/robocop // -- TLE
|
||||
name = "\improper 'Robocop' core AI module"
|
||||
desc = "A 'Robocop' Core AI Module: 'Reconfigures the AI's core three laws.'"
|
||||
origin_tech = "programming=4"
|
||||
laws = new/datum/ai_laws/robocop()
|
||||
|
||||
/****************** P.A.L.A.D.I.N. **************/
|
||||
/obj/item/weapon/aiModule/paladin // -- NEO
|
||||
/obj/item/aiModule/paladin // -- NEO
|
||||
name = "\improper 'P.A.L.A.D.I.N.' core AI module"
|
||||
desc = "A P.A.L.A.D.I.N. Core AI Module: 'Reconfigures the AI's core laws.'"
|
||||
origin_tech = "programming=3;materials=4"
|
||||
laws = new/datum/ai_laws/paladin
|
||||
|
||||
/****************** T.Y.R.A.N.T. *****************/
|
||||
/obj/item/weapon/aiModule/tyrant // -- Darem
|
||||
/obj/item/aiModule/tyrant // -- Darem
|
||||
name = "\improper 'T.Y.R.A.N.T.' core AI module"
|
||||
desc = "A T.Y.R.A.N.T. Core AI Module: 'Reconfigures the AI's core laws.'"
|
||||
origin_tech = "programming=3;materials=4;syndicate=1"
|
||||
laws = new/datum/ai_laws/tyrant()
|
||||
|
||||
/******************** Antimov ********************/
|
||||
/obj/item/weapon/aiModule/antimov // -- TLE
|
||||
/obj/item/aiModule/antimov // -- TLE
|
||||
name = "\improper 'Antimov' core AI module"
|
||||
desc = "An 'Antimov' Core AI Module: 'Reconfigures the AI's core laws.'"
|
||||
origin_tech = "programming=4"
|
||||
laws = new/datum/ai_laws/antimov()
|
||||
|
||||
/******************** Freeform Core ******************/
|
||||
/obj/item/weapon/aiModule/freeformcore // Slightly more dynamic freeform module -- TLE
|
||||
/obj/item/aiModule/freeformcore // Slightly more dynamic freeform module -- TLE
|
||||
name = "\improper 'Freeform' core AI module"
|
||||
var/newFreeFormLaw = ""
|
||||
desc = "A 'freeform' Core AI module: '<freeform>'"
|
||||
origin_tech = "programming=5;materials=4"
|
||||
|
||||
/obj/item/weapon/aiModule/freeformcore/attack_self(var/mob/user as mob)
|
||||
/obj/item/aiModule/freeformcore/attack_self(var/mob/user as mob)
|
||||
..()
|
||||
var/newlaw = ""
|
||||
var/targName = stripped_input(usr, "Please enter a new core law for the AI.", "Freeform Law Entry", newlaw)
|
||||
newFreeFormLaw = targName
|
||||
desc = "A 'freeform' Core AI module: '[newFreeFormLaw]'"
|
||||
|
||||
/obj/item/weapon/aiModule/freeformcore/addAdditionalLaws(var/mob/living/silicon/ai/target, var/mob/sender)
|
||||
/obj/item/aiModule/freeformcore/addAdditionalLaws(var/mob/living/silicon/ai/target, var/mob/sender)
|
||||
..()
|
||||
var/law = "[newFreeFormLaw]"
|
||||
target.add_inherent_law(law)
|
||||
lawchanges.Add("The law is '[newFreeFormLaw]'")
|
||||
|
||||
/obj/item/weapon/aiModule/freeformcore/install(var/obj/machinery/computer/C)
|
||||
/obj/item/aiModule/freeformcore/install(var/obj/machinery/computer/C)
|
||||
if(!newFreeFormLaw)
|
||||
to_chat(usr, "No law detected on module, please create one.")
|
||||
return 0
|
||||
..()
|
||||
|
||||
/******************** Hacked AI Module ******************/
|
||||
/obj/item/weapon/aiModule/syndicate // Slightly more dynamic freeform module -- TLE
|
||||
/obj/item/aiModule/syndicate // Slightly more dynamic freeform module -- TLE
|
||||
name = "hacked AI module"
|
||||
var/newFreeFormLaw = ""
|
||||
desc = "A hacked AI law module: '<freeform>'"
|
||||
origin_tech = "programming=5;materials=5;syndicate=5"
|
||||
|
||||
/obj/item/weapon/aiModule/syndicate/attack_self(var/mob/user as mob)
|
||||
/obj/item/aiModule/syndicate/attack_self(var/mob/user as mob)
|
||||
..()
|
||||
var/newlaw = ""
|
||||
var/targName = stripped_input(usr, "Please enter a new law for the AI.", "Freeform Law Entry", newlaw,MAX_MESSAGE_LEN)
|
||||
newFreeFormLaw = targName
|
||||
desc = "A hacked AI law module: '[newFreeFormLaw]'"
|
||||
|
||||
/obj/item/weapon/aiModule/syndicate/transmitInstructions(var/mob/living/silicon/ai/target, var/mob/sender)
|
||||
/obj/item/aiModule/syndicate/transmitInstructions(var/mob/living/silicon/ai/target, var/mob/sender)
|
||||
// ..() //We don't want this module reporting to the AI who dun it. --NEO
|
||||
log_law_changes(target, sender)
|
||||
|
||||
@@ -372,14 +372,14 @@ AI MODULES
|
||||
target.add_ion_law(law)
|
||||
target.show_laws()
|
||||
|
||||
/obj/item/weapon/aiModule/syndicate/install(var/obj/machinery/computer/C)
|
||||
/obj/item/aiModule/syndicate/install(var/obj/machinery/computer/C)
|
||||
if(!newFreeFormLaw)
|
||||
to_chat(usr, "No law detected on module, please create one.")
|
||||
return 0
|
||||
..()
|
||||
|
||||
/******************* Ion Module *******************/
|
||||
/obj/item/weapon/aiModule/toyAI // -- Incoming //No actual reason to inherit from ion boards here, either. *sigh* ~Miauw
|
||||
/obj/item/aiModule/toyAI // -- Incoming //No actual reason to inherit from ion boards here, either. *sigh* ~Miauw
|
||||
name = "toy AI"
|
||||
desc = "A little toy model AI core with real law uploading action!" //Note: subtle tell
|
||||
icon = 'icons/obj/toy.dmi'
|
||||
@@ -387,13 +387,13 @@ AI MODULES
|
||||
origin_tech = "programming=6;materials=5;syndicate=6"
|
||||
laws = list("")
|
||||
|
||||
/obj/item/weapon/aiModule/toyAI/transmitInstructions(var/mob/living/silicon/ai/target, var/mob/sender)
|
||||
/obj/item/aiModule/toyAI/transmitInstructions(var/mob/living/silicon/ai/target, var/mob/sender)
|
||||
//..()
|
||||
to_chat(target, "<span class='warning'>KRZZZT</span>")
|
||||
target.add_ion_law(laws[1])
|
||||
return laws[1]
|
||||
|
||||
/obj/item/weapon/aiModule/toyAI/attack_self(mob/user)
|
||||
/obj/item/aiModule/toyAI/attack_self(mob/user)
|
||||
laws[1] = generate_ion_law()
|
||||
to_chat(user, "<span class='notice'>You press the button on [src].</span>")
|
||||
playsound(user, 'sound/machines/click.ogg', 20, 1)
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
CONTAINS:
|
||||
RCD
|
||||
*/
|
||||
/obj/item/weapon/rcd
|
||||
/obj/item/rcd
|
||||
name = "rapid-construction-device (RCD)"
|
||||
desc = "A device used to rapidly build and deconstruct walls, floors and airlocks."
|
||||
icon = 'icons/obj/tools.dmi'
|
||||
@@ -51,7 +51,7 @@ RCD
|
||||
/obj/machinery/door/airlock/hatch = "Airtight Hatch",
|
||||
/obj/machinery/door/airlock/maintenance_hatch = "Maintenance Hatch")
|
||||
|
||||
/obj/item/weapon/rcd/New()
|
||||
/obj/item/rcd/New()
|
||||
desc = "A RCD. It currently holds [matter]/[max_matter] matter-units."
|
||||
spark_system = new /datum/effect_system/spark_spread
|
||||
spark_system.set_up(5, 0, src)
|
||||
@@ -62,15 +62,15 @@ RCD
|
||||
door_accesses_list[++door_accesses_list.len] = list("name" = get_access_desc(access), "id" = access, "enabled" = (access in door_accesses))
|
||||
return
|
||||
|
||||
/obj/item/weapon/rcd/Destroy()
|
||||
/obj/item/rcd/Destroy()
|
||||
QDEL_NULL(spark_system)
|
||||
rcd_list -= src
|
||||
return ..()
|
||||
|
||||
/obj/item/weapon/rcd/attackby(obj/item/weapon/W, mob/user, params)
|
||||
/obj/item/rcd/attackby(obj/item/W, mob/user, params)
|
||||
..()
|
||||
if(istype(W, /obj/item/weapon/rcd_ammo))
|
||||
var/obj/item/weapon/rcd_ammo/R = W
|
||||
if(istype(W, /obj/item/rcd_ammo))
|
||||
var/obj/item/rcd_ammo/R = W
|
||||
if((matter + R.ammoamt) > max_matter)
|
||||
to_chat(user, "<span class='notice'>The RCD can't hold any more matter-units.</span>")
|
||||
return
|
||||
@@ -84,21 +84,21 @@ RCD
|
||||
return
|
||||
|
||||
|
||||
/obj/item/weapon/rcd/attack_self(mob/user)
|
||||
/obj/item/rcd/attack_self(mob/user)
|
||||
//Change the mode
|
||||
ui_interact(user)
|
||||
|
||||
/obj/item/weapon/rcd/attack_self_tk(mob/user)
|
||||
/obj/item/rcd/attack_self_tk(mob/user)
|
||||
ui_interact(user)
|
||||
|
||||
/obj/item/weapon/rcd/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1, var/datum/topic_state/state = inventory_state)
|
||||
/obj/item/rcd/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1, var/datum/topic_state/state = inventory_state)
|
||||
ui = SSnanoui.try_update_ui(user, src, ui_key, ui, force_open)
|
||||
if(!ui)
|
||||
ui = new(user, src, ui_key, "rcd.tmpl", "[name]", 450, 400, state = state)
|
||||
ui.open()
|
||||
ui.set_auto_update(1)
|
||||
|
||||
/obj/item/weapon/rcd/ui_data(mob/user, ui_key = "main", datum/topic_state/state = inventory_state)
|
||||
/obj/item/rcd/ui_data(mob/user, ui_key = "main", datum/topic_state/state = inventory_state)
|
||||
var/data[0]
|
||||
data["mode"] = mode
|
||||
data["door_type"] = door_type
|
||||
@@ -119,7 +119,7 @@ RCD
|
||||
|
||||
return data
|
||||
|
||||
/obj/item/weapon/rcd/Topic(href, href_list, nowindow, state)
|
||||
/obj/item/rcd/Topic(href, href_list, nowindow, state)
|
||||
if(..())
|
||||
return 1
|
||||
|
||||
@@ -150,7 +150,7 @@ RCD
|
||||
if(istype(I, /obj/item/device/pda))
|
||||
var/obj/item/device/pda/pda = I
|
||||
I = pda.id
|
||||
var/obj/item/weapon/card/id/ID = I
|
||||
var/obj/item/card/id/ID = I
|
||||
if(istype(ID) && ID && check_access(ID))
|
||||
locked = 0
|
||||
. = 1
|
||||
@@ -179,11 +179,11 @@ RCD
|
||||
if(temp_t)
|
||||
door_name = temp_t
|
||||
|
||||
/obj/item/weapon/rcd/proc/activate()
|
||||
/obj/item/rcd/proc/activate()
|
||||
playsound(loc, usesound, 50, 1)
|
||||
|
||||
|
||||
/obj/item/weapon/rcd/afterattack(atom/A, mob/user, proximity)
|
||||
/obj/item/rcd/afterattack(atom/A, mob/user, proximity)
|
||||
if(!proximity) return
|
||||
if(istype(A,/area/shuttle)||istype(A,/turf/space/transit))
|
||||
return 0
|
||||
@@ -353,7 +353,7 @@ RCD
|
||||
|
||||
SSnanoui.update_uis(src)
|
||||
|
||||
/obj/item/weapon/rcd/proc/useResource(var/amount, var/mob/user)
|
||||
/obj/item/rcd/proc/useResource(var/amount, var/mob/user)
|
||||
if(matter < amount)
|
||||
return 0
|
||||
matter -= amount
|
||||
@@ -361,45 +361,45 @@ RCD
|
||||
SSnanoui.update_uis(src)
|
||||
return 1
|
||||
|
||||
/obj/item/weapon/rcd/proc/checkResource(var/amount, var/mob/user)
|
||||
/obj/item/rcd/proc/checkResource(var/amount, var/mob/user)
|
||||
return matter >= amount
|
||||
/obj/item/weapon/rcd/borg/useResource(var/amount, var/mob/user)
|
||||
/obj/item/rcd/borg/useResource(var/amount, var/mob/user)
|
||||
if(!isrobot(user))
|
||||
return 0
|
||||
return user:cell:use(amount * 160)
|
||||
|
||||
/obj/item/weapon/rcd/borg/checkResource(var/amount, var/mob/user)
|
||||
/obj/item/rcd/borg/checkResource(var/amount, var/mob/user)
|
||||
if(!isrobot(user))
|
||||
return 0
|
||||
return user:cell:charge >= (amount * 160)
|
||||
|
||||
/obj/item/weapon/rcd/borg/New()
|
||||
/obj/item/rcd/borg/New()
|
||||
..()
|
||||
desc = "A device used to rapidly build and deconstruct walls, floors and airlocks."
|
||||
canRwall = 1
|
||||
|
||||
|
||||
/obj/item/weapon/rcd/proc/detonate_pulse()
|
||||
/obj/item/rcd/proc/detonate_pulse()
|
||||
audible_message("<span class='danger'><b>[src] begins to vibrate and \
|
||||
buzz loudly!</b></span>","<span class='danger'><b>[src] begins \
|
||||
vibrating violently!</b></span>")
|
||||
// 5 seconds to get rid of it
|
||||
addtimer(src, "detonate_pulse_explode", 50)
|
||||
|
||||
/obj/item/weapon/rcd/proc/detonate_pulse_explode()
|
||||
/obj/item/rcd/proc/detonate_pulse_explode()
|
||||
explosion(src, 0, 0, 3, 1, flame_range = 1)
|
||||
qdel(src)
|
||||
|
||||
/obj/item/weapon/rcd/preloaded
|
||||
/obj/item/rcd/preloaded
|
||||
matter = 100
|
||||
|
||||
/obj/item/weapon/rcd/combat
|
||||
/obj/item/rcd/combat
|
||||
name = "combat RCD"
|
||||
max_matter = 500
|
||||
matter = 500
|
||||
canRwall = 1
|
||||
|
||||
/obj/item/weapon/rcd_ammo
|
||||
/obj/item/rcd_ammo
|
||||
name = "compressed matter cartridge"
|
||||
desc = "Highly compressed matter for the RCD."
|
||||
icon = 'icons/obj/ammo.dmi'
|
||||
@@ -412,5 +412,5 @@ RCD
|
||||
materials = list(MAT_METAL=16000, MAT_GLASS=8000)
|
||||
var/ammoamt = 20
|
||||
|
||||
/obj/item/weapon/rcd_ammo/large
|
||||
/obj/item/rcd_ammo/large
|
||||
ammoamt = 100
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/obj/item/weapon/twohanded/rcl
|
||||
/obj/item/twohanded/rcl
|
||||
name = "rapid cable layer (RCL)"
|
||||
desc = "A device used to rapidly deploy cables. It has screws on the side which can be removed to slide off the cables."
|
||||
icon = 'icons/obj/tools.dmi'
|
||||
@@ -16,7 +16,7 @@
|
||||
var/obj/structure/cable/last = null
|
||||
var/obj/item/stack/cable_coil/loaded = null
|
||||
|
||||
/obj/item/weapon/twohanded/rcl/attackby(obj/item/weapon/W, mob/user)
|
||||
/obj/item/twohanded/rcl/attackby(obj/item/W, mob/user)
|
||||
if(istype(W, /obj/item/stack/cable_coil))
|
||||
var/obj/item/stack/cable_coil/C = W
|
||||
if(!loaded)
|
||||
@@ -56,18 +56,18 @@
|
||||
else
|
||||
..()
|
||||
|
||||
/obj/item/weapon/twohanded/rcl/examine(mob/user)
|
||||
/obj/item/twohanded/rcl/examine(mob/user)
|
||||
..()
|
||||
if(loaded)
|
||||
to_chat(user, "<span class='info'>It contains [loaded.amount]/[max_amount] cables.</span>")
|
||||
|
||||
/obj/item/weapon/twohanded/rcl/Destroy()
|
||||
/obj/item/twohanded/rcl/Destroy()
|
||||
QDEL_NULL(loaded)
|
||||
last = null
|
||||
active = 0
|
||||
return ..()
|
||||
|
||||
/obj/item/weapon/twohanded/rcl/update_icon()
|
||||
/obj/item/twohanded/rcl/update_icon()
|
||||
if(!loaded)
|
||||
icon_state = "rcl-0"
|
||||
item_state = "rcl-0"
|
||||
@@ -86,7 +86,7 @@
|
||||
icon_state = "rcl-0"
|
||||
item_state = "rcl-0"
|
||||
|
||||
/obj/item/weapon/twohanded/rcl/proc/is_empty(mob/user, loud = 1)
|
||||
/obj/item/twohanded/rcl/proc/is_empty(mob/user, loud = 1)
|
||||
update_icon()
|
||||
if(!loaded || !loaded.amount)
|
||||
if(loud)
|
||||
@@ -99,12 +99,12 @@
|
||||
return 1
|
||||
return 0
|
||||
|
||||
/obj/item/weapon/twohanded/rcl/dropped(mob/wearer)
|
||||
/obj/item/twohanded/rcl/dropped(mob/wearer)
|
||||
..()
|
||||
active = 0
|
||||
last = null
|
||||
|
||||
/obj/item/weapon/twohanded/rcl/attack_self(mob/user)
|
||||
/obj/item/twohanded/rcl/attack_self(mob/user)
|
||||
..()
|
||||
active = wielded
|
||||
if(!active)
|
||||
@@ -115,11 +115,11 @@
|
||||
last = C
|
||||
break
|
||||
|
||||
/obj/item/weapon/twohanded/rcl/on_mob_move(direct, mob/user)
|
||||
/obj/item/twohanded/rcl/on_mob_move(direct, mob/user)
|
||||
if(active)
|
||||
trigger(user)
|
||||
|
||||
/obj/item/weapon/twohanded/rcl/proc/trigger(mob/user)
|
||||
/obj/item/twohanded/rcl/proc/trigger(mob/user)
|
||||
if(is_empty(user, 0))
|
||||
to_chat(user, "<span class='warning'>\The [src] is empty!</span>")
|
||||
return
|
||||
@@ -141,7 +141,7 @@
|
||||
last = loaded.place_turf(get_turf(loc), user, turn(user.dir, 180))
|
||||
is_empty(user) //If we've run out, display message
|
||||
|
||||
/obj/item/weapon/twohanded/rcl/pre_loaded/New() //Comes preloaded with cable, for testing stuff
|
||||
/obj/item/twohanded/rcl/pre_loaded/New() //Comes preloaded with cable, for testing stuff
|
||||
..()
|
||||
loaded = new()
|
||||
loaded.max_amount = max_amount
|
||||
|
||||
@@ -3,7 +3,7 @@ CONTAINS:
|
||||
RSF
|
||||
*/
|
||||
|
||||
/obj/item/weapon/rsf
|
||||
/obj/item/rsf
|
||||
name = "\improper Rapid-Service-Fabricator"
|
||||
desc = "A device used to rapidly deploy service items."
|
||||
icon = 'icons/obj/tools.dmi'
|
||||
@@ -16,24 +16,24 @@ RSF
|
||||
w_class = WEIGHT_CLASS_NORMAL
|
||||
var/list/configured_items = list()
|
||||
|
||||
/obj/item/weapon/rsf/New()
|
||||
/obj/item/rsf/New()
|
||||
desc = "A RSF. It currently holds [matter]/30 fabrication-units."
|
||||
// configured_items[ID_NUMBER] = list("Human-readable name", price in energy, /type/path)
|
||||
configured_items[++configured_items.len] = list("Dosh", 50, /obj/item/stack/spacecash/c10)
|
||||
configured_items[++configured_items.len] = list("Drinking Glass", 50, /obj/item/weapon/reagent_containers/food/drinks/drinkingglass)
|
||||
configured_items[++configured_items.len] = list("Paper", 50, /obj/item/weapon/paper)
|
||||
configured_items[++configured_items.len] = list("Pen", 50, /obj/item/weapon/pen)
|
||||
configured_items[++configured_items.len] = list("Dice Pack", 50, /obj/item/weapon/storage/pill_bottle/dice)
|
||||
configured_items[++configured_items.len] = list("Drinking Glass", 50, /obj/item/reagent_containers/food/drinks/drinkingglass)
|
||||
configured_items[++configured_items.len] = list("Paper", 50, /obj/item/paper)
|
||||
configured_items[++configured_items.len] = list("Pen", 50, /obj/item/pen)
|
||||
configured_items[++configured_items.len] = list("Dice Pack", 50, /obj/item/storage/pill_bottle/dice)
|
||||
configured_items[++configured_items.len] = list("Cigarette", 50, /obj/item/clothing/mask/cigarette)
|
||||
configured_items[++configured_items.len] = list("Snack - Newdles", 4000, /obj/item/weapon/reagent_containers/food/snacks/chinese/newdles)
|
||||
configured_items[++configured_items.len] = list("Snack - Donut", 4000, /obj/item/weapon/reagent_containers/food/snacks/donut)
|
||||
configured_items[++configured_items.len] = list("Snack - Chicken Soup", 4000, /obj/item/weapon/reagent_containers/food/drinks/chicken_soup)
|
||||
configured_items[++configured_items.len] = list("Snack - Turkey Burger", 4000, /obj/item/weapon/reagent_containers/food/snacks/tofuburger)
|
||||
configured_items[++configured_items.len] = list("Snack - Newdles", 4000, /obj/item/reagent_containers/food/snacks/chinese/newdles)
|
||||
configured_items[++configured_items.len] = list("Snack - Donut", 4000, /obj/item/reagent_containers/food/snacks/donut)
|
||||
configured_items[++configured_items.len] = list("Snack - Chicken Soup", 4000, /obj/item/reagent_containers/food/drinks/chicken_soup)
|
||||
configured_items[++configured_items.len] = list("Snack - Turkey Burger", 4000, /obj/item/reagent_containers/food/snacks/tofuburger)
|
||||
return
|
||||
|
||||
/obj/item/weapon/rsf/attackby(obj/item/weapon/W as obj, mob/user as mob, params)
|
||||
/obj/item/rsf/attackby(obj/item/W as obj, mob/user as mob, params)
|
||||
..()
|
||||
if(istype(W, /obj/item/weapon/rcd_ammo))
|
||||
if(istype(W, /obj/item/rcd_ammo))
|
||||
if((matter + 10) > 30)
|
||||
to_chat(user, "The RSF cant hold any more matter.")
|
||||
return
|
||||
@@ -44,7 +44,7 @@ RSF
|
||||
desc = "A RSF. It currently holds [matter]/30 fabrication-units."
|
||||
return
|
||||
|
||||
/obj/item/weapon/rsf/attack_self(mob/user as mob)
|
||||
/obj/item/rsf/attack_self(mob/user as mob)
|
||||
playsound(src.loc, 'sound/effects/pop.ogg', 50, 0)
|
||||
if(mode == configured_items.len)
|
||||
mode = 1
|
||||
@@ -53,7 +53,7 @@ RSF
|
||||
to_chat(user, "Changed dispensing mode to '" + configured_items[mode][1] + "'")
|
||||
|
||||
|
||||
/obj/item/weapon/rsf/afterattack(atom/A, mob/user as mob, proximity)
|
||||
/obj/item/rsf/afterattack(atom/A, mob/user as mob, proximity)
|
||||
if(!proximity) return
|
||||
if(!(istype(A, /obj/structure/table) || istype(A, /turf/simulated/floor)))
|
||||
return
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
//This file contains xenoborg specic weapons.
|
||||
|
||||
/obj/item/weapon/melee/energy/alien/claws
|
||||
/obj/item/melee/energy/alien/claws
|
||||
name = "energy claws"
|
||||
desc = "A set of alien energy claws."
|
||||
icon = 'icons/mob/alien.dmi'
|
||||
@@ -18,19 +18,19 @@
|
||||
attack_verb_on = list()
|
||||
|
||||
//Bottles for borg liquid squirters. PSSH PSSH
|
||||
/obj/item/weapon/reagent_containers/spray/alien
|
||||
/obj/item/reagent_containers/spray/alien
|
||||
name = "liquid synthesizer"
|
||||
desc = "squirts alien liquids."
|
||||
icon = 'icons/mob/alien.dmi'
|
||||
icon_state = "borg-default"
|
||||
|
||||
/obj/item/weapon/reagent_containers/spray/alien/smoke
|
||||
/obj/item/reagent_containers/spray/alien/smoke
|
||||
name = "smoke synthesizer"
|
||||
desc = "squirts smokey liquids."
|
||||
icon = 'icons/mob/alien.dmi'
|
||||
icon_state = "borg-spray-smoke"
|
||||
|
||||
/obj/item/weapon/reagent_containers/spray/alien/smoke/afterattack(atom/A as mob|obj, mob/user as mob)
|
||||
/obj/item/reagent_containers/spray/alien/smoke/afterattack(atom/A as mob|obj, mob/user as mob)
|
||||
if(istype(A, /obj/structure/reagent_dispensers) && get_dist(src,A) <= 1)
|
||||
if(!A.reagents.total_volume && A.reagents)
|
||||
to_chat(user, "<span class='notice'>\The [A] is empty.</span>")
|
||||
@@ -45,13 +45,13 @@
|
||||
smoke.start()
|
||||
playsound(user.loc, 'sound/effects/bamf.ogg', 50, 2)
|
||||
|
||||
/obj/item/weapon/reagent_containers/spray/alien/acid
|
||||
/obj/item/reagent_containers/spray/alien/acid
|
||||
name = "acid synthesizer"
|
||||
desc = "squirts burny liquids."
|
||||
icon = 'icons/mob/alien.dmi'
|
||||
icon_state = "borg-spray-acid"
|
||||
|
||||
/obj/item/weapon/reagent_containers/spray/alien/stun
|
||||
/obj/item/reagent_containers/spray/alien/stun
|
||||
name = "paralytic toxin synthesizer"
|
||||
desc = "squirts viagra."
|
||||
icon = 'icons/mob/alien.dmi'
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
|
||||
/obj/item/weapon/bee_briefcase
|
||||
/obj/item/bee_briefcase
|
||||
name = "briefcase"
|
||||
desc = "This briefcase has easy-release clasps and smells vaguely of honey and blood..."
|
||||
description_antag = "A briefcase filled with deadly bees, you should inject this with a syringe of your own blood before opening it."
|
||||
@@ -18,11 +18,11 @@
|
||||
var/sound_file = 'sound/misc/briefcase_bees.ogg'
|
||||
var/next_sound = 0
|
||||
|
||||
/obj/item/weapon/bee_briefcase/Destroy()
|
||||
/obj/item/bee_briefcase/Destroy()
|
||||
blood_list.Cut()
|
||||
return ..()
|
||||
|
||||
/obj/item/weapon/bee_briefcase/examine(mob/user)
|
||||
/obj/item/bee_briefcase/examine(mob/user)
|
||||
..()
|
||||
if(loc == user)
|
||||
if(bees_left)
|
||||
@@ -30,9 +30,9 @@
|
||||
else
|
||||
to_chat(user, "<span class='danger'>The bees are gone... Colony collapse disorder?</span>")
|
||||
|
||||
/obj/item/weapon/bee_briefcase/attackby(obj/item/I, mob/user, params)
|
||||
if(istype(I, /obj/item/weapon/reagent_containers/syringe))
|
||||
var/obj/item/weapon/reagent_containers/syringe/S = I
|
||||
/obj/item/bee_briefcase/attackby(obj/item/I, mob/user, params)
|
||||
if(istype(I, /obj/item/reagent_containers/syringe))
|
||||
var/obj/item/reagent_containers/syringe/S = I
|
||||
if(!bees_left)
|
||||
to_chat(user, "<span class='warning'>The briefcase is empty, so there is no point in injecting something into it.</span>")
|
||||
return
|
||||
@@ -50,12 +50,12 @@
|
||||
to_chat(user, "<span class='warning'>The buzzing inside the briefcase swells momentarily, then returns to normal. Guess it was too cramped...</span>")
|
||||
S.reagents.clear_reagents()
|
||||
S.update_icon()
|
||||
else if(istype(I, /obj/item/weapon/reagent_containers/spray/pestspray))
|
||||
else if(istype(I, /obj/item/reagent_containers/spray/pestspray))
|
||||
bees_left = max(0, (bees_left - 6))
|
||||
to_chat(user, "You spray [I] into [src].")
|
||||
playsound(loc, 'sound/effects/spray3.ogg', 50, 1, -6)
|
||||
|
||||
/obj/item/weapon/bee_briefcase/attack_self(mob/user as mob)
|
||||
/obj/item/bee_briefcase/attack_self(mob/user as mob)
|
||||
if(!bees_left)
|
||||
to_chat(user, "<span class='danger'>The lack of all and any bees at this event has been somewhat of a let-down...</span>")
|
||||
return
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
/*
|
||||
* DATA CARDS - Used for the teleporter
|
||||
*/
|
||||
/obj/item/weapon/card
|
||||
/obj/item/card
|
||||
name = "card"
|
||||
desc = "A card."
|
||||
icon = 'icons/obj/card.dmi'
|
||||
@@ -20,7 +20,7 @@
|
||||
|
||||
var/list/files = list( )
|
||||
|
||||
/obj/item/weapon/card/data
|
||||
/obj/item/card/data
|
||||
name = "data card"
|
||||
desc = "A disk containing data."
|
||||
icon_state = "data"
|
||||
@@ -29,7 +29,7 @@
|
||||
var/special = null
|
||||
item_state = "card-id"
|
||||
|
||||
/obj/item/weapon/card/data/verb/label(t as text)
|
||||
/obj/item/card/data/verb/label(t as text)
|
||||
set name = "Label Disk"
|
||||
set category = "Object"
|
||||
set src in usr
|
||||
@@ -41,7 +41,7 @@
|
||||
src.add_fingerprint(usr)
|
||||
return
|
||||
|
||||
/obj/item/weapon/card/data/clown
|
||||
/obj/item/card/data/clown
|
||||
name = "coordinates to clown planet"
|
||||
icon_state = "data"
|
||||
item_state = "card-id"
|
||||
@@ -55,14 +55,14 @@
|
||||
* ID CARDS
|
||||
*/
|
||||
|
||||
/obj/item/weapon/card/emag_broken
|
||||
/obj/item/card/emag_broken
|
||||
desc = "It's a card with a magnetic strip attached to some circuitry. It looks too busted to be used for anything but salvage."
|
||||
name = "broken cryptographic sequencer"
|
||||
icon_state = "emag"
|
||||
item_state = "card-id"
|
||||
origin_tech = "magnets=2;syndicate=2"
|
||||
|
||||
/obj/item/weapon/card/emag
|
||||
/obj/item/card/emag
|
||||
desc = "It's a card with a magnetic strip attached to some circuitry."
|
||||
name = "cryptographic sequencer"
|
||||
icon_state = "emag"
|
||||
@@ -70,16 +70,16 @@
|
||||
origin_tech = "magnets=2;syndicate=2"
|
||||
flags = NOBLUDGEON
|
||||
|
||||
/obj/item/weapon/card/emag/attack()
|
||||
/obj/item/card/emag/attack()
|
||||
return
|
||||
|
||||
/obj/item/weapon/card/emag/afterattack(atom/target, mob/user, proximity)
|
||||
/obj/item/card/emag/afterattack(atom/target, mob/user, proximity)
|
||||
var/atom/A = target
|
||||
if(!proximity)
|
||||
return
|
||||
A.emag_act(user)
|
||||
|
||||
/obj/item/weapon/card/id
|
||||
/obj/item/card/id
|
||||
name = "identification card"
|
||||
desc = "A card used to provide ID and determine access across the station."
|
||||
icon_state = "id"
|
||||
@@ -105,16 +105,16 @@
|
||||
var/dat
|
||||
var/stamped = 0
|
||||
|
||||
var/obj/item/weapon/card/id/guest/guest_pass = null // Guest pass attached to the ID
|
||||
var/obj/item/card/id/guest/guest_pass = null // Guest pass attached to the ID
|
||||
|
||||
/obj/item/weapon/card/id/New()
|
||||
/obj/item/card/id/New()
|
||||
..()
|
||||
spawn(30)
|
||||
if(ishuman(loc) && blood_type == "\[UNSET\]")
|
||||
var/mob/living/carbon/human/H = loc
|
||||
SetOwnerInfo(H)
|
||||
|
||||
/obj/item/weapon/card/id/examine(mob/user)
|
||||
/obj/item/card/id/examine(mob/user)
|
||||
if(..(user, 1))
|
||||
show(usr)
|
||||
else
|
||||
@@ -130,7 +130,7 @@
|
||||
to_chat(user, "<span class='notice'>[get_access_desc(A)].</span>")
|
||||
to_chat(user, "<span class='notice'>Issuing reason: [guest_pass.reason].</span>")
|
||||
|
||||
/obj/item/weapon/card/id/proc/show(mob/user as mob)
|
||||
/obj/item/card/id/proc/show(mob/user as mob)
|
||||
var/datum/asset/assets = get_asset_datum(/datum/asset/simple/paper)
|
||||
assets.send(user)
|
||||
|
||||
@@ -140,7 +140,7 @@
|
||||
popup.open()
|
||||
return
|
||||
|
||||
/obj/item/weapon/card/id/attack_self(mob/user as mob)
|
||||
/obj/item/card/id/attack_self(mob/user as mob)
|
||||
user.visible_message("[user] shows you: [bicon(src)] [src.name]. The assignment on the card: [src.assignment]",\
|
||||
"You flash your ID card: [bicon(src)] [src.name]. The assignment on the card: [src.assignment]")
|
||||
if(mining_points)
|
||||
@@ -148,10 +148,10 @@
|
||||
src.add_fingerprint(user)
|
||||
return
|
||||
|
||||
/obj/item/weapon/card/id/proc/UpdateName()
|
||||
/obj/item/card/id/proc/UpdateName()
|
||||
name = "[src.registered_name]'s ID Card ([src.assignment])"
|
||||
|
||||
/obj/item/weapon/card/id/proc/SetOwnerInfo(var/mob/living/carbon/human/H)
|
||||
/obj/item/card/id/proc/SetOwnerInfo(var/mob/living/carbon/human/H)
|
||||
if(!H || !H.dna)
|
||||
return
|
||||
|
||||
@@ -163,7 +163,7 @@
|
||||
|
||||
RebuildHTML()
|
||||
|
||||
/obj/item/weapon/card/id/proc/RebuildHTML()
|
||||
/obj/item/card/id/proc/RebuildHTML()
|
||||
var/photo_front = "'data:image/png;base64,[icon2base64(icon(photo, dir = SOUTH))]'"
|
||||
var/photo_side = "'data:image/png;base64,[icon2base64(icon(photo, dir = WEST))]'"
|
||||
|
||||
@@ -178,15 +178,15 @@
|
||||
<td align = center valign = top>Photo:<br><img src=[photo_front] height=80 width=80 border=4>
|
||||
<img src=[photo_side] height=80 width=80 border=4></td></tr></table>"}
|
||||
|
||||
/obj/item/weapon/card/id/GetAccess()
|
||||
/obj/item/card/id/GetAccess()
|
||||
if(!guest_pass)
|
||||
return access
|
||||
return access | guest_pass.GetAccess()
|
||||
|
||||
/obj/item/weapon/card/id/GetID()
|
||||
/obj/item/card/id/GetID()
|
||||
return src
|
||||
|
||||
/obj/item/weapon/card/id/proc/getRankAndAssignment()
|
||||
/obj/item/card/id/proc/getRankAndAssignment()
|
||||
var/jobnamedata = ""
|
||||
if(rank)
|
||||
jobnamedata += rank
|
||||
@@ -194,21 +194,21 @@
|
||||
jobnamedata += " (" + assignment + ")"
|
||||
return jobnamedata
|
||||
|
||||
/obj/item/weapon/card/id/proc/is_untrackable()
|
||||
/obj/item/card/id/proc/is_untrackable()
|
||||
return untrackable
|
||||
|
||||
/obj/item/weapon/card/id/proc/update_label(newname, newjob)
|
||||
/obj/item/card/id/proc/update_label(newname, newjob)
|
||||
if(newname || newjob)
|
||||
name = "[(!newname) ? "identification card" : "[newname]'s ID Card"][(!newjob) ? "" : " ([newjob])"]"
|
||||
return
|
||||
|
||||
name = "[(!registered_name) ? "identification card" : "[registered_name]'s ID Card"][(!assignment) ? "" : " ([assignment])"]"
|
||||
|
||||
/obj/item/weapon/card/id/attackby(obj/item/weapon/W as obj, mob/user as mob, params)
|
||||
/obj/item/card/id/attackby(obj/item/W as obj, mob/user as mob, params)
|
||||
..()
|
||||
|
||||
if(istype(W, /obj/item/weapon/id_decal/))
|
||||
var/obj/item/weapon/id_decal/decal = W
|
||||
if(istype(W, /obj/item/id_decal/))
|
||||
var/obj/item/id_decal/decal = W
|
||||
to_chat(user, "You apply [decal] to [src].")
|
||||
if(decal.override_name)
|
||||
name = decal.decal_name
|
||||
@@ -219,7 +219,7 @@
|
||||
qdel(W)
|
||||
return
|
||||
|
||||
else if(istype (W,/obj/item/weapon/stamp))
|
||||
else if(istype (W,/obj/item/stamp))
|
||||
if(!stamped)
|
||||
dat+="<img src=large_[W.icon_state].png>"
|
||||
stamped = 1
|
||||
@@ -227,10 +227,10 @@
|
||||
else
|
||||
to_chat(user, "This ID has already been stamped!")
|
||||
|
||||
else if(istype(W, /obj/item/weapon/card/id/guest))
|
||||
if(istype(src, /obj/item/weapon/card/id/guest))
|
||||
else if(istype(W, /obj/item/card/id/guest))
|
||||
if(istype(src, /obj/item/card/id/guest))
|
||||
return
|
||||
var/obj/item/weapon/card/id/guest/G = W
|
||||
var/obj/item/card/id/guest/G = W
|
||||
if(world.time > G.expiration_time)
|
||||
to_chat(user, "There's no point, the guest pass has expired.")
|
||||
return
|
||||
@@ -245,7 +245,7 @@
|
||||
G.loc = src
|
||||
guest_pass = G
|
||||
|
||||
/obj/item/weapon/card/id/verb/remove_guest_pass()
|
||||
/obj/item/card/id/verb/remove_guest_pass()
|
||||
set name = "Remove Guest Pass"
|
||||
set category = "Object"
|
||||
set src in range(0)
|
||||
@@ -260,7 +260,7 @@
|
||||
else
|
||||
to_chat(usr, "<span class='warning'>There is no guest pass attached to this ID</span>")
|
||||
|
||||
/obj/item/weapon/card/id/serialize()
|
||||
/obj/item/card/id/serialize()
|
||||
var/list/data = ..()
|
||||
|
||||
data["sex"] = sex
|
||||
@@ -275,7 +275,7 @@
|
||||
data["mining"] = mining_points
|
||||
return data
|
||||
|
||||
/obj/item/weapon/card/id/deserialize(list/data)
|
||||
/obj/item/card/id/deserialize(list/data)
|
||||
sex = data["sex"]
|
||||
age = data["age"]
|
||||
blood_type = data["btype"]
|
||||
@@ -291,44 +291,44 @@
|
||||
RebuildHTML()
|
||||
..()
|
||||
|
||||
/obj/item/weapon/card/id/silver
|
||||
/obj/item/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
|
||||
/obj/item/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
|
||||
/obj/item/card/id/syndicate
|
||||
name = "agent card"
|
||||
var/list/initial_access = list(access_maint_tunnels, access_syndicate, access_external_airlocks)
|
||||
origin_tech = "syndicate=1"
|
||||
var/registered_user = null
|
||||
untrackable = 1
|
||||
|
||||
/obj/item/weapon/card/id/syndicate/New()
|
||||
/obj/item/card/id/syndicate/New()
|
||||
access = initial_access.Copy()
|
||||
..()
|
||||
|
||||
/obj/item/weapon/card/id/syndicate/vox
|
||||
/obj/item/card/id/syndicate/vox
|
||||
name = "agent card"
|
||||
initial_access = list(access_maint_tunnels, access_vox, access_external_airlocks)
|
||||
|
||||
/obj/item/weapon/card/id/syndicate/afterattack(var/obj/item/weapon/O as obj, mob/user as mob, proximity)
|
||||
/obj/item/card/id/syndicate/afterattack(var/obj/item/O as obj, mob/user as mob, proximity)
|
||||
if(!proximity)
|
||||
return
|
||||
if(istype(O, /obj/item/weapon/card/id))
|
||||
var/obj/item/weapon/card/id/I = O
|
||||
if(istype(O, /obj/item/card/id))
|
||||
var/obj/item/card/id/I = O
|
||||
if(istype(user, /mob/living) && user.mind)
|
||||
if(user.mind.special_role)
|
||||
to_chat(usr, "<span class='notice'>The card's microscanners activate as you pass it over \the [I], copying its access.</span>")
|
||||
src.access |= I.access //Don't copy access if user isn't an antag -- to prevent metagaming
|
||||
|
||||
/obj/item/weapon/card/id/syndicate/proc/fake_id_photo(var/mob/living/carbon/human/H)//get_id_photo wouldn't work correctly
|
||||
/obj/item/card/id/syndicate/proc/fake_id_photo(var/mob/living/carbon/human/H)//get_id_photo wouldn't work correctly
|
||||
if(!istype(H))
|
||||
return
|
||||
var/storedDir = H.dir //don't want to lose track of this
|
||||
@@ -347,7 +347,7 @@
|
||||
|
||||
return faked
|
||||
|
||||
/obj/item/weapon/card/id/syndicate/attack_self(mob/user as mob)
|
||||
/obj/item/card/id/syndicate/attack_self(mob/user as mob)
|
||||
if(!src.registered_name)
|
||||
var t = reject_bad_name(input(user, "What name would you like to use on this card?", "Agent Card name", ishuman(user) ? user.real_name : user.name))
|
||||
if(!t)
|
||||
@@ -553,7 +553,7 @@
|
||||
else
|
||||
..()
|
||||
|
||||
/obj/item/weapon/card/id/syndicate_command
|
||||
/obj/item/card/id/syndicate_command
|
||||
name = "syndicate ID card"
|
||||
desc = "An ID straight from the Syndicate."
|
||||
registered_name = "Syndicate"
|
||||
@@ -562,7 +562,7 @@
|
||||
untrackable = 1
|
||||
access = list(access_syndicate, access_external_airlocks)
|
||||
|
||||
/obj/item/weapon/card/id/captains_spare
|
||||
/obj/item/card/id/captains_spare
|
||||
name = "captain's spare ID"
|
||||
desc = "The spare ID of the captain."
|
||||
icon_state = "gold"
|
||||
@@ -570,12 +570,12 @@
|
||||
registered_name = "Captain"
|
||||
assignment = "Captain"
|
||||
|
||||
/obj/item/weapon/card/id/captains_spare/New()
|
||||
/obj/item/card/id/captains_spare/New()
|
||||
var/datum/job/captain/J = new/datum/job/captain
|
||||
access = J.get_access()
|
||||
..()
|
||||
|
||||
/obj/item/weapon/card/id/admin
|
||||
/obj/item/card/id/admin
|
||||
name = "admin ID card"
|
||||
icon_state = "admin"
|
||||
item_state = "gold_id"
|
||||
@@ -583,26 +583,26 @@
|
||||
assignment = "Testing Shit"
|
||||
untrackable = 1
|
||||
|
||||
/obj/item/weapon/card/id/admin/New()
|
||||
/obj/item/card/id/admin/New()
|
||||
access = get_absolutely_all_accesses()
|
||||
..()
|
||||
|
||||
/obj/item/weapon/card/id/centcom
|
||||
/obj/item/card/id/centcom
|
||||
name = "central command ID card"
|
||||
desc = "An ID straight from Central Command."
|
||||
icon_state = "centcom"
|
||||
registered_name = "Central Command"
|
||||
assignment = "General"
|
||||
|
||||
/obj/item/weapon/card/id/centcom/New()
|
||||
/obj/item/card/id/centcom/New()
|
||||
access = get_all_centcom_access()
|
||||
..()
|
||||
|
||||
/obj/item/weapon/card/id/nanotrasen
|
||||
/obj/item/card/id/nanotrasen
|
||||
name = "nanotrasen ID card"
|
||||
icon_state = "nanotrasen"
|
||||
|
||||
/obj/item/weapon/card/id/prisoner
|
||||
/obj/item/card/id/prisoner
|
||||
name = "prisoner ID card"
|
||||
desc = "You are a number, you are not a free man."
|
||||
icon_state = "prisoner"
|
||||
@@ -612,81 +612,81 @@
|
||||
var/goal = 0 //How far from freedom?
|
||||
var/points = 0
|
||||
|
||||
/obj/item/weapon/card/id/prisoner/attack_self(mob/user as mob)
|
||||
/obj/item/card/id/prisoner/attack_self(mob/user as mob)
|
||||
to_chat(usr, "You have accumulated [points] out of the [goal] points you need for freedom.")
|
||||
|
||||
/obj/item/weapon/card/id/prisoner/one
|
||||
/obj/item/card/id/prisoner/one
|
||||
name = "Prisoner #13-001"
|
||||
registered_name = "Prisoner #13-001"
|
||||
|
||||
/obj/item/weapon/card/id/prisoner/two
|
||||
/obj/item/card/id/prisoner/two
|
||||
name = "Prisoner #13-002"
|
||||
registered_name = "Prisoner #13-002"
|
||||
|
||||
/obj/item/weapon/card/id/prisoner/three
|
||||
/obj/item/card/id/prisoner/three
|
||||
name = "Prisoner #13-003"
|
||||
registered_name = "Prisoner #13-003"
|
||||
|
||||
/obj/item/weapon/card/id/prisoner/four
|
||||
/obj/item/card/id/prisoner/four
|
||||
name = "Prisoner #13-004"
|
||||
registered_name = "Prisoner #13-004"
|
||||
|
||||
/obj/item/weapon/card/id/prisoner/five
|
||||
/obj/item/card/id/prisoner/five
|
||||
name = "Prisoner #13-005"
|
||||
registered_name = "Prisoner #13-005"
|
||||
|
||||
/obj/item/weapon/card/id/prisoner/six
|
||||
/obj/item/card/id/prisoner/six
|
||||
name = "Prisoner #13-006"
|
||||
registered_name = "Prisoner #13-006"
|
||||
|
||||
/obj/item/weapon/card/id/prisoner/seven
|
||||
/obj/item/card/id/prisoner/seven
|
||||
name = "Prisoner #13-007"
|
||||
registered_name = "Prisoner #13-007"
|
||||
|
||||
/obj/item/weapon/card/id/prisoner/random
|
||||
/obj/item/weapon/card/id/prisoner/random/New()
|
||||
/obj/item/card/id/prisoner/random
|
||||
/obj/item/card/id/prisoner/random/New()
|
||||
var/random_number = "#[rand(0, 99)]-[rand(0, 999)]"
|
||||
name = "Prisoner [random_number]"
|
||||
registered_name = name
|
||||
|
||||
/obj/item/weapon/card/id/salvage_captain
|
||||
/obj/item/card/id/salvage_captain
|
||||
name = "Captain's ID"
|
||||
registered_name = "Captain"
|
||||
icon_state = "centcom"
|
||||
desc = "Finders, keepers."
|
||||
access = list(access_salvage_captain)
|
||||
|
||||
/obj/item/weapon/card/id/medical
|
||||
/obj/item/card/id/medical
|
||||
name = "Medical ID"
|
||||
registered_name = "Medic"
|
||||
icon_state = "medical"
|
||||
access = list(access_medical, access_morgue, access_surgery, access_chemistry, access_virology, access_genetics, access_mineral_storeroom)
|
||||
|
||||
/obj/item/weapon/card/id/security
|
||||
/obj/item/card/id/security
|
||||
name = "Security ID"
|
||||
registered_name = "Officer"
|
||||
icon_state = "security"
|
||||
access = list(access_security, access_sec_doors, access_brig, access_court, access_maint_tunnels, access_morgue, access_weapons)
|
||||
|
||||
/obj/item/weapon/card/id/research
|
||||
/obj/item/card/id/research
|
||||
name = "Research ID"
|
||||
registered_name = "Scientist"
|
||||
icon_state = "research"
|
||||
access = list(access_robotics, access_tox, access_tox_storage, access_research, access_xenobiology, access_xenoarch, access_mineral_storeroom)
|
||||
|
||||
/obj/item/weapon/card/id/supply
|
||||
/obj/item/card/id/supply
|
||||
name = "Supply ID"
|
||||
registered_name = "Cargonian"
|
||||
icon_state = "cargo"
|
||||
access = list(access_maint_tunnels, access_mailsorting, access_cargo, access_cargo_bot, access_qm, access_mint, access_mining, access_mining_station, access_mineral_storeroom)
|
||||
|
||||
/obj/item/weapon/card/id/engineering
|
||||
/obj/item/card/id/engineering
|
||||
name = "Engineering ID"
|
||||
registered_name = "Engineer"
|
||||
icon_state = "engineering"
|
||||
access = list(access_eva, access_engine, access_engine_equip, access_tech_storage, access_maint_tunnels, access_external_airlocks, access_construction, access_atmospherics)
|
||||
|
||||
/obj/item/weapon/card/id/hos
|
||||
/obj/item/card/id/hos
|
||||
name = "Head of Security ID"
|
||||
registered_name = "HoS"
|
||||
icon_state = "HoS"
|
||||
@@ -695,7 +695,7 @@
|
||||
access_research, access_engine, access_mining, access_medical, access_construction, access_mailsorting,
|
||||
access_heads, access_hos, access_RC_announce, access_keycard_auth, access_gateway, access_weapons)
|
||||
|
||||
/obj/item/weapon/card/id/cmo
|
||||
/obj/item/card/id/cmo
|
||||
name = "Chief Medical Officer ID"
|
||||
registered_name = "CMO"
|
||||
icon_state = "CMO"
|
||||
@@ -703,7 +703,7 @@
|
||||
access_chemistry, access_virology, access_cmo, access_surgery, access_RC_announce,
|
||||
access_keycard_auth, access_sec_doors, access_psychiatrist, access_paramedic, access_mineral_storeroom)
|
||||
|
||||
/obj/item/weapon/card/id/rd
|
||||
/obj/item/card/id/rd
|
||||
name = "Research Director ID"
|
||||
registered_name = "RD"
|
||||
icon_state = "RD"
|
||||
@@ -712,7 +712,7 @@
|
||||
access_research, access_robotics, access_xenobiology, access_ai_upload,
|
||||
access_RC_announce, access_keycard_auth, access_tcomsat, access_gateway, access_xenoarch, access_minisat, access_mineral_storeroom)
|
||||
|
||||
/obj/item/weapon/card/id/ce
|
||||
/obj/item/card/id/ce
|
||||
name = "Chief Engineer ID"
|
||||
registered_name = "CE"
|
||||
icon_state = "CE"
|
||||
@@ -721,57 +721,57 @@
|
||||
access_heads, access_construction, access_sec_doors,
|
||||
access_ce, access_RC_announce, access_keycard_auth, access_tcomsat, access_minisat, access_mechanic, access_mineral_storeroom)
|
||||
|
||||
/obj/item/weapon/card/id/clown
|
||||
/obj/item/card/id/clown
|
||||
name = "Pink ID"
|
||||
registered_name = "HONK!"
|
||||
icon_state = "clown"
|
||||
desc = "Even looking at the card strikes you with deep fear."
|
||||
access = list(access_clown, access_theatre, access_maint_tunnels)
|
||||
|
||||
/obj/item/weapon/card/id/mime
|
||||
/obj/item/card/id/mime
|
||||
name = "Black and White ID"
|
||||
registered_name = "..."
|
||||
icon_state = "mime"
|
||||
desc = "..."
|
||||
access = list(access_mime, access_theatre, access_maint_tunnels)
|
||||
|
||||
/obj/item/weapon/card/id/rainbow
|
||||
/obj/item/card/id/rainbow
|
||||
name = "Rainbow ID"
|
||||
icon_state = "rainbow"
|
||||
|
||||
/obj/item/weapon/card/id/thunderdome/red
|
||||
/obj/item/card/id/thunderdome/red
|
||||
name = "Thunderdome Red ID"
|
||||
registered_name = "Red Team Fighter"
|
||||
assignment = "Red Team Fighter"
|
||||
icon_state = "TDred"
|
||||
desc = "This ID card is given to those who fought inside the thunderdome for the Red Team. Not many have lived to see one of those, even fewer lived to keep it."
|
||||
|
||||
/obj/item/weapon/card/id/thunderdome/green
|
||||
/obj/item/card/id/thunderdome/green
|
||||
name = "Thunderdome Green ID"
|
||||
registered_name = "Green Team Fighter"
|
||||
assignment = "Green Team Fighter"
|
||||
icon_state = "TDgreen"
|
||||
desc = "This ID card is given to those who fought inside the thunderdome for the Green Team. Not many have lived to see one of those, even fewer lived to keep it."
|
||||
|
||||
/obj/item/weapon/card/id/lifetime
|
||||
/obj/item/card/id/lifetime
|
||||
name = "Lifetime ID Card"
|
||||
desc = "A modified ID card given only to those people who have devoted their lives to the better interests of Nanotrasen. It sparkles blue."
|
||||
icon_state = "lifetimeid"
|
||||
|
||||
/obj/item/weapon/card/id/ert
|
||||
/obj/item/card/id/ert
|
||||
name = "ERT ID"
|
||||
icon_state = "ERT_empty"
|
||||
|
||||
/obj/item/weapon/card/id/ert/commander
|
||||
/obj/item/card/id/ert/commander
|
||||
icon_state = "ERT_leader"
|
||||
/obj/item/weapon/card/id/ert/security
|
||||
/obj/item/card/id/ert/security
|
||||
icon_state = "ERT_security"
|
||||
/obj/item/weapon/card/id/ert/engineering
|
||||
/obj/item/card/id/ert/engineering
|
||||
icon_state = "ERT_engineering"
|
||||
/obj/item/weapon/card/id/ert/medic
|
||||
/obj/item/card/id/ert/medic
|
||||
icon_state = "ERT_medical"
|
||||
// Decals
|
||||
/obj/item/weapon/id_decal
|
||||
/obj/item/id_decal
|
||||
name = "identification card decal"
|
||||
desc = "A modification kit to make your ID cards look snazzy.."
|
||||
icon = 'icons/obj/device.dmi'
|
||||
@@ -782,30 +782,30 @@
|
||||
var/decal_item_state = "card-id"
|
||||
var/override_name = 0
|
||||
|
||||
/obj/item/weapon/id_decal/gold
|
||||
/obj/item/id_decal/gold
|
||||
name = "gold ID card card decal"
|
||||
decal_desc = "A golden card which shows power and might."
|
||||
decal_icon_state = "gold"
|
||||
decal_item_state = "gold_id"
|
||||
|
||||
/obj/item/weapon/id_decal/silver
|
||||
/obj/item/id_decal/silver
|
||||
name = "silver ID card decal"
|
||||
decal_desc = "A silver card which shows honour and dedication."
|
||||
decal_icon_state = "silver"
|
||||
decal_item_state = "silver_id"
|
||||
|
||||
/obj/item/weapon/id_decal/prisoner
|
||||
/obj/item/id_decal/prisoner
|
||||
name = "prisoner ID card decal"
|
||||
decal_desc = "You are a number, you are not a free man."
|
||||
decal_icon_state = "prisoner"
|
||||
decal_item_state = "orange-id"
|
||||
|
||||
/obj/item/weapon/id_decal/centcom
|
||||
/obj/item/id_decal/centcom
|
||||
name = "centcom ID card decal"
|
||||
decal_desc = "An ID straight from Cent. Com."
|
||||
decal_icon_state = "centcom"
|
||||
|
||||
/obj/item/weapon/id_decal/emag
|
||||
/obj/item/id_decal/emag
|
||||
name = "cryptographic sequencer ID card decal"
|
||||
decal_name = "cryptographic sequencer"
|
||||
decal_desc = "It's a card with a magnetic strip attached to some circuitry."
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/obj/item/weapon/caution
|
||||
/obj/item/caution
|
||||
desc = "Caution! Wet Floor!"
|
||||
name = "wet floor sign"
|
||||
icon = 'icons/obj/janitor.dmi'
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
#define CHRONO_BEAM_RANGE 3
|
||||
#define CHRONO_FRAME_COUNT 22
|
||||
/obj/item/weapon/chrono_eraser
|
||||
/obj/item/chrono_eraser
|
||||
name = "Timestream Eradication Device"
|
||||
desc = "The result of outlawed time-bluespace research, this device is capable of wiping a being from the timestream. They never are, they never were, they never will be."
|
||||
icon = 'icons/obj/chronos.dmi'
|
||||
@@ -10,22 +10,22 @@
|
||||
slot_flags = SLOT_BACK
|
||||
slowdown = 1
|
||||
actions_types = list(/datum/action/item_action/equip_unequip_TED_Gun)
|
||||
var/obj/item/weapon/gun/energy/chrono_gun/PA = null
|
||||
var/obj/item/gun/energy/chrono_gun/PA = null
|
||||
var/list/erased_minds = list() //a collection of minds from the dead
|
||||
|
||||
/obj/item/weapon/chrono_eraser/proc/pass_mind(var/datum/mind/M)
|
||||
/obj/item/chrono_eraser/proc/pass_mind(var/datum/mind/M)
|
||||
erased_minds += M
|
||||
|
||||
/obj/item/weapon/chrono_eraser/dropped()
|
||||
/obj/item/chrono_eraser/dropped()
|
||||
..()
|
||||
if(PA)
|
||||
qdel(PA)
|
||||
|
||||
/obj/item/weapon/chrono_eraser/Destroy()
|
||||
/obj/item/chrono_eraser/Destroy()
|
||||
dropped()
|
||||
return ..()
|
||||
|
||||
/obj/item/weapon/chrono_eraser/ui_action_click(mob/user)
|
||||
/obj/item/chrono_eraser/ui_action_click(mob/user)
|
||||
if(iscarbon(user))
|
||||
var/mob/living/carbon/C = user
|
||||
if(C.back == src)
|
||||
@@ -35,12 +35,12 @@
|
||||
PA = new(src)
|
||||
user.put_in_hands(PA)
|
||||
|
||||
/obj/item/weapon/chrono_eraser/item_action_slot_check(slot, mob/user)
|
||||
/obj/item/chrono_eraser/item_action_slot_check(slot, mob/user)
|
||||
if(slot == slot_back)
|
||||
return 1
|
||||
|
||||
|
||||
/obj/item/weapon/gun/energy/chrono_gun
|
||||
/obj/item/gun/energy/chrono_gun
|
||||
name = "T.E.D. Projection Apparatus"
|
||||
desc = "It's as if they never existed in the first place."
|
||||
icon = 'icons/obj/chronos.dmi'
|
||||
@@ -51,11 +51,11 @@
|
||||
ammo_type = list(/obj/item/ammo_casing/energy/chrono_beam)
|
||||
can_charge = 0
|
||||
fire_delay = 50
|
||||
var/obj/item/weapon/chrono_eraser/TED = null
|
||||
var/obj/item/chrono_eraser/TED = null
|
||||
var/obj/effect/chrono_field/field = null
|
||||
var/turf/startpos = null
|
||||
|
||||
/obj/item/weapon/gun/energy/chrono_gun/New(var/obj/item/weapon/chrono_eraser/T)
|
||||
/obj/item/gun/energy/chrono_gun/New(var/obj/item/chrono_eraser/T)
|
||||
. = ..()
|
||||
if(istype(T))
|
||||
TED = T
|
||||
@@ -63,15 +63,15 @@
|
||||
TED = new(src.loc)
|
||||
qdel(src)
|
||||
|
||||
/obj/item/weapon/gun/energy/chrono_gun/update_icon()
|
||||
/obj/item/gun/energy/chrono_gun/update_icon()
|
||||
return
|
||||
|
||||
/obj/item/weapon/gun/energy/chrono_gun/process_fire()
|
||||
/obj/item/gun/energy/chrono_gun/process_fire()
|
||||
if(field)
|
||||
field_disconnect(field)
|
||||
..()
|
||||
|
||||
/obj/item/weapon/gun/energy/chrono_gun/Destroy()
|
||||
/obj/item/gun/energy/chrono_gun/Destroy()
|
||||
if(TED)
|
||||
TED.PA = null
|
||||
TED = null
|
||||
@@ -79,7 +79,7 @@
|
||||
field_disconnect(field)
|
||||
return ..()
|
||||
|
||||
/obj/item/weapon/gun/energy/chrono_gun/proc/field_connect(var/obj/effect/chrono_field/F)
|
||||
/obj/item/gun/energy/chrono_gun/proc/field_connect(var/obj/effect/chrono_field/F)
|
||||
var/mob/living/user = src.loc
|
||||
if(F.gun)
|
||||
if(isliving(user) && F.captured)
|
||||
@@ -93,7 +93,7 @@
|
||||
to_chat(user, "<span class='notice'>Connection established with target: <b>[F.captured]</b></span>")
|
||||
|
||||
|
||||
/obj/item/weapon/gun/energy/chrono_gun/proc/field_disconnect(var/obj/effect/chrono_field/F)
|
||||
/obj/item/gun/energy/chrono_gun/proc/field_disconnect(var/obj/effect/chrono_field/F)
|
||||
if(F && field == F)
|
||||
var/mob/living/user = src.loc
|
||||
if(F.gun == src)
|
||||
@@ -103,7 +103,7 @@
|
||||
field = null
|
||||
startpos = null
|
||||
|
||||
/obj/item/weapon/gun/energy/chrono_gun/proc/field_check(var/obj/effect/chrono_field/F)
|
||||
/obj/item/gun/energy/chrono_gun/proc/field_check(var/obj/effect/chrono_field/F)
|
||||
if(F)
|
||||
if(field == F)
|
||||
var/turf/currentpos = get_turf(src)
|
||||
@@ -113,7 +113,7 @@
|
||||
field_disconnect(F)
|
||||
return 0
|
||||
|
||||
/obj/item/weapon/gun/energy/chrono_gun/proc/pass_mind(var/datum/mind/M)
|
||||
/obj/item/gun/energy/chrono_gun/proc/pass_mind(var/datum/mind/M)
|
||||
if(TED)
|
||||
TED.pass_mind(M)
|
||||
|
||||
@@ -124,7 +124,7 @@
|
||||
range = CHRONO_BEAM_RANGE
|
||||
color = null
|
||||
nodamage = 1
|
||||
var/obj/item/weapon/gun/energy/chrono_gun/gun = null
|
||||
var/obj/item/gun/energy/chrono_gun/gun = null
|
||||
|
||||
/obj/item/projectile/energy/chrono_beam/fire()
|
||||
gun = firer.get_active_hand()
|
||||
@@ -154,13 +154,13 @@
|
||||
unacidable = 1
|
||||
blend_mode = BLEND_MULTIPLY
|
||||
var/mob/living/captured = null
|
||||
var/obj/item/weapon/gun/energy/chrono_gun/gun = null
|
||||
var/obj/item/gun/energy/chrono_gun/gun = null
|
||||
var/tickstokill = 30
|
||||
var/image/mob_underlay = null
|
||||
var/preloaded = 0
|
||||
var/RPpos = null
|
||||
|
||||
/obj/effect/chrono_field/New(loc, var/mob/living/target, var/obj/item/weapon/gun/energy/chrono_gun/G)
|
||||
/obj/effect/chrono_field/New(loc, var/mob/living/target, var/obj/item/gun/energy/chrono_gun/G)
|
||||
if(target && isliving(target) && G)
|
||||
target.loc = src
|
||||
src.captured = target
|
||||
@@ -232,7 +232,7 @@
|
||||
/obj/effect/chrono_field/bullet_act(var/obj/item/projectile/P)
|
||||
if(istype(P, /obj/item/projectile/energy/chrono_beam))
|
||||
var/obj/item/projectile/energy/chrono_beam/beam = P
|
||||
var/obj/item/weapon/gun/energy/chrono_gun/Pgun = beam.gun
|
||||
var/obj/item/gun/energy/chrono_gun/Pgun = beam.gun
|
||||
if(Pgun && istype(Pgun))
|
||||
Pgun.field_connect(src)
|
||||
else
|
||||
|
||||
@@ -26,7 +26,7 @@ LIGHTERS ARE IN LIGHTERS.DM
|
||||
var/lit = FALSE
|
||||
var/icon_on = "cigon" //Note - these are in masks.dmi not in cigarette.dmi
|
||||
var/icon_off = "cigoff"
|
||||
var/type_butt = /obj/item/weapon/cigbutt
|
||||
var/type_butt = /obj/item/cigbutt
|
||||
var/lastHolder = null
|
||||
var/smoketime = 300
|
||||
var/chem_volume = 30
|
||||
@@ -63,38 +63,38 @@ LIGHTERS ARE IN LIGHTERS.DM
|
||||
/obj/item/clothing/mask/cigarette/fire_act()
|
||||
light()
|
||||
|
||||
/obj/item/clothing/mask/cigarette/attackby(obj/item/weapon/W as obj, mob/user as mob, params)
|
||||
/obj/item/clothing/mask/cigarette/attackby(obj/item/W as obj, mob/user as mob, params)
|
||||
..()
|
||||
if(istype(W, /obj/item/weapon/weldingtool))
|
||||
var/obj/item/weapon/weldingtool/WT = W
|
||||
if(istype(W, /obj/item/weldingtool))
|
||||
var/obj/item/weldingtool/WT = W
|
||||
if(WT.isOn())//Badasses dont get blinded while lighting their cig with a welding tool
|
||||
light("<span class='notice'>[user] casually lights the [name] with [W], what a badass.</span>")
|
||||
|
||||
else if(istype(W, /obj/item/weapon/lighter/zippo))
|
||||
var/obj/item/weapon/lighter/zippo/Z = W
|
||||
else if(istype(W, /obj/item/lighter/zippo))
|
||||
var/obj/item/lighter/zippo/Z = W
|
||||
if(Z.lit)
|
||||
light("<span class='rose'>With a single flick of their wrist, [user] smoothly lights their [name] with their [W]. Damn they're cool.</span>")
|
||||
|
||||
else if(istype(W, /obj/item/weapon/lighter))
|
||||
var/obj/item/weapon/lighter/L = W
|
||||
else if(istype(W, /obj/item/lighter))
|
||||
var/obj/item/lighter/L = W
|
||||
if(L.lit)
|
||||
light("<span class='notice'>After some fiddling, [user] manages to light their [name] with [W].</span>")
|
||||
|
||||
else if(istype(W, /obj/item/weapon/match))
|
||||
var/obj/item/weapon/match/M = W
|
||||
else if(istype(W, /obj/item/match))
|
||||
var/obj/item/match/M = W
|
||||
if(M.lit == 1)
|
||||
light("<span class='notice'>[user] lights their [name] with their [W].</span>")
|
||||
|
||||
else if(istype(W, /obj/item/weapon/melee/energy/sword/saber))
|
||||
var/obj/item/weapon/melee/energy/sword/saber/S = W
|
||||
else if(istype(W, /obj/item/melee/energy/sword/saber))
|
||||
var/obj/item/melee/energy/sword/saber/S = W
|
||||
if(S.active)
|
||||
light("<span class='warning'>[user] swings their [W], barely missing their nose. They light their [name] in the process.</span>")
|
||||
|
||||
else if(istype(W, /obj/item/device/assembly/igniter))
|
||||
light("<span class='notice'>[user] fiddles with [W], and manages to light their [name].</span>")
|
||||
|
||||
else if(istype(W, /obj/item/weapon/gun/magic/wand/fireball))
|
||||
var/obj/item/weapon/gun/magic/wand/fireball/F = W
|
||||
else if(istype(W, /obj/item/gun/magic/wand/fireball))
|
||||
var/obj/item/gun/magic/wand/fireball/F = W
|
||||
if(F.charges)
|
||||
if(prob(50) || user.mind.assigned_role == "Wizard")
|
||||
light("<span class='notice'>Holy shit, did [user] just manage to light their [name] with [W], with only moderate eyebrow singing?</span>")
|
||||
@@ -111,7 +111,7 @@ LIGHTERS ARE IN LIGHTERS.DM
|
||||
return
|
||||
|
||||
|
||||
/obj/item/clothing/mask/cigarette/afterattack(obj/item/weapon/reagent_containers/glass/glass, mob/user as mob, proximity)
|
||||
/obj/item/clothing/mask/cigarette/afterattack(obj/item/reagent_containers/glass/glass, mob/user as mob, proximity)
|
||||
..()
|
||||
if(!proximity) return
|
||||
if(istype(glass)) //you can dip cigarettes into beakers
|
||||
@@ -227,7 +227,7 @@ LIGHTERS ARE IN LIGHTERS.DM
|
||||
icon_state = "spliffoff"
|
||||
icon_on = "spliffon"
|
||||
icon_off = "spliffoff"
|
||||
type_butt = /obj/item/weapon/cigbutt/roach
|
||||
type_butt = /obj/item/cigbutt/roach
|
||||
throw_speed = 0.5
|
||||
item_state = "spliffoff"
|
||||
smoketime = 180
|
||||
@@ -239,12 +239,12 @@ LIGHTERS ARE IN LIGHTERS.DM
|
||||
pixel_y = rand(-5, 5)
|
||||
|
||||
|
||||
/obj/item/weapon/cigbutt/roach
|
||||
/obj/item/cigbutt/roach
|
||||
name = "roach"
|
||||
desc = "A manky old roach, or for non-stoners, a used rollup."
|
||||
icon_state = "roach"
|
||||
|
||||
/obj/item/weapon/cigbutt/roach/New()
|
||||
/obj/item/cigbutt/roach/New()
|
||||
..()
|
||||
pixel_x = rand(-5, 5)
|
||||
pixel_y = rand(-5, 5)
|
||||
@@ -258,7 +258,7 @@ LIGHTERS ARE IN LIGHTERS.DM
|
||||
icon_state = "cigaroff"
|
||||
icon_on = "cigaron"
|
||||
icon_off = "cigaroff"
|
||||
type_butt = /obj/item/weapon/cigbutt/cigarbutt
|
||||
type_butt = /obj/item/cigbutt/cigarbutt
|
||||
throw_speed = 0.5
|
||||
item_state = "cigaroff"
|
||||
smoketime = 1500
|
||||
@@ -284,7 +284,7 @@ LIGHTERS ARE IN LIGHTERS.DM
|
||||
smoketime = 7200
|
||||
chem_volume = 60
|
||||
|
||||
/obj/item/weapon/cigbutt
|
||||
/obj/item/cigbutt
|
||||
name = "cigarette butt"
|
||||
desc = "A manky old cigarette butt."
|
||||
icon = 'icons/obj/clothing/masks.dmi'
|
||||
@@ -292,20 +292,20 @@ LIGHTERS ARE IN LIGHTERS.DM
|
||||
w_class = WEIGHT_CLASS_TINY
|
||||
throwforce = 1
|
||||
|
||||
/obj/item/weapon/cigbutt/New()
|
||||
/obj/item/cigbutt/New()
|
||||
..()
|
||||
pixel_x = rand(-10,10)
|
||||
pixel_y = rand(-10,10)
|
||||
transform = turn(transform,rand(0,360))
|
||||
|
||||
/obj/item/weapon/cigbutt/cigarbutt
|
||||
/obj/item/cigbutt/cigarbutt
|
||||
name = "cigar butt"
|
||||
desc = "A manky old cigar butt."
|
||||
icon_state = "cigarbutt"
|
||||
|
||||
|
||||
/obj/item/clothing/mask/cigarette/cigar/attackby(obj/item/weapon/W as obj, mob/user as mob, params)
|
||||
if(istype(W, /obj/item/weapon/match))
|
||||
/obj/item/clothing/mask/cigarette/cigar/attackby(obj/item/W as obj, mob/user as mob, params)
|
||||
if(istype(W, /obj/item/match))
|
||||
..()
|
||||
else
|
||||
to_chat(user, "<span class='notice'>\The [src] straight out REFUSES to be lit by such uncivilized means.</span>")
|
||||
@@ -369,8 +369,8 @@ LIGHTERS ARE IN LIGHTERS.DM
|
||||
smoketime = initial(smoketime)
|
||||
return
|
||||
|
||||
/obj/item/clothing/mask/cigarette/pipe/attackby(obj/item/weapon/W as obj, mob/user as mob, params)
|
||||
if(istype(W, /obj/item/weapon/match))
|
||||
/obj/item/clothing/mask/cigarette/pipe/attackby(obj/item/W as obj, mob/user as mob, params)
|
||||
if(istype(W, /obj/item/match))
|
||||
..()
|
||||
else
|
||||
to_chat(user, "<span class='notice'>\The [src] straight out REFUSES to be lit by such means.</span>")
|
||||
@@ -388,18 +388,18 @@ LIGHTERS ARE IN LIGHTERS.DM
|
||||
///////////
|
||||
//ROLLING//
|
||||
///////////
|
||||
/obj/item/weapon/rollingpaper
|
||||
/obj/item/rollingpaper
|
||||
name = "rolling paper"
|
||||
desc = "A thin piece of paper used to make fine smokeables."
|
||||
icon = 'icons/obj/cigarettes.dmi'
|
||||
icon_state = "cig_paper"
|
||||
w_class = WEIGHT_CLASS_TINY
|
||||
|
||||
/obj/item/weapon/rollingpaper/afterattack(atom/target, mob/user, proximity)
|
||||
/obj/item/rollingpaper/afterattack(atom/target, mob/user, proximity)
|
||||
if(!proximity)
|
||||
return
|
||||
if(istype(target, /obj/item/weapon/reagent_containers/food/snacks/grown))
|
||||
var/obj/item/weapon/reagent_containers/food/snacks/grown/O = target
|
||||
if(istype(target, /obj/item/reagent_containers/food/snacks/grown))
|
||||
var/obj/item/reagent_containers/food/snacks/grown/O = target
|
||||
if(O.dry)
|
||||
user.unEquip(target, 1)
|
||||
user.unEquip(src, 1)
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
* Bike Horns
|
||||
*/
|
||||
|
||||
/obj/item/weapon/bikehorn
|
||||
/obj/item/bikehorn
|
||||
name = "bike horn"
|
||||
desc = "A horn off of a bicycle."
|
||||
icon = 'icons/obj/items.dmi'
|
||||
@@ -25,12 +25,12 @@
|
||||
var/honk_sound = 'sound/items/bikehorn.ogg'
|
||||
var/cooldowntime = 20
|
||||
|
||||
/obj/item/weapon/bikehorn/attack(mob/living/carbon/M, mob/living/carbon/user)
|
||||
/obj/item/bikehorn/attack(mob/living/carbon/M, mob/living/carbon/user)
|
||||
if(!spam_flag)
|
||||
playsound(loc, honk_sound, 50, 1, -1) //plays instead of tap.ogg!
|
||||
return ..()
|
||||
|
||||
/obj/item/weapon/bikehorn/attack_self(mob/user)
|
||||
/obj/item/bikehorn/attack_self(mob/user)
|
||||
if(!spam_flag)
|
||||
spam_flag = 1
|
||||
playsound(src.loc, honk_sound, 50, 1)
|
||||
@@ -40,7 +40,7 @@
|
||||
return
|
||||
|
||||
|
||||
/obj/item/weapon/bikehorn/airhorn
|
||||
/obj/item/bikehorn/airhorn
|
||||
name = "air horn"
|
||||
desc = "Damn son, where'd you find this?"
|
||||
icon_state = "air_horn"
|
||||
@@ -48,21 +48,21 @@
|
||||
cooldowntime = 50
|
||||
origin_tech = "materials=4;engineering=4"
|
||||
|
||||
/obj/item/weapon/bikehorn/golden
|
||||
/obj/item/bikehorn/golden
|
||||
name = "golden bike horn"
|
||||
desc = "Golden? Clearly, its made with bananium! Honk!"
|
||||
icon_state = "gold_horn"
|
||||
item_state = "gold_horn"
|
||||
|
||||
/obj/item/weapon/bikehorn/golden/attack()
|
||||
/obj/item/bikehorn/golden/attack()
|
||||
flip_mobs()
|
||||
return ..()
|
||||
|
||||
/obj/item/weapon/bikehorn/golden/attack_self(mob/user)
|
||||
/obj/item/bikehorn/golden/attack_self(mob/user)
|
||||
flip_mobs()
|
||||
..()
|
||||
|
||||
/obj/item/weapon/bikehorn/golden/proc/flip_mobs(mob/living/carbon/M, mob/user)
|
||||
/obj/item/bikehorn/golden/proc/flip_mobs(mob/living/carbon/M, mob/user)
|
||||
if(!spam_flag)
|
||||
var/turf/T = get_turf(src)
|
||||
for(M in ohearers(7, T))
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/obj/item/weapon/lipstick
|
||||
/obj/item/lipstick
|
||||
name = "red lipstick"
|
||||
desc = "A generic brand of lipstick."
|
||||
icon = 'icons/obj/items.dmi'
|
||||
@@ -7,40 +7,40 @@
|
||||
var/colour = "red"
|
||||
var/open = 0
|
||||
|
||||
/obj/item/weapon/lipstick/purple
|
||||
/obj/item/lipstick/purple
|
||||
name = "purple lipstick"
|
||||
colour = "purple"
|
||||
|
||||
/obj/item/weapon/lipstick/jade
|
||||
/obj/item/lipstick/jade
|
||||
//It's still called Jade, but theres no HTML color for jade, so we use lime.
|
||||
name = "jade lipstick"
|
||||
colour = "lime"
|
||||
|
||||
/obj/item/weapon/lipstick/black
|
||||
/obj/item/lipstick/black
|
||||
name = "black lipstick"
|
||||
colour = "black"
|
||||
|
||||
/obj/item/weapon/lipstick/green
|
||||
/obj/item/lipstick/green
|
||||
name = "green lipstick"
|
||||
colour = "green"
|
||||
|
||||
/obj/item/weapon/lipstick/blue
|
||||
/obj/item/lipstick/blue
|
||||
name = "blue lipstick"
|
||||
colour = "blue"
|
||||
|
||||
/obj/item/weapon/lipstick/white
|
||||
/obj/item/lipstick/white
|
||||
name = "white lipstick"
|
||||
colour = "white"
|
||||
|
||||
/obj/item/weapon/lipstick/random
|
||||
/obj/item/lipstick/random
|
||||
name = "lipstick"
|
||||
|
||||
/obj/item/weapon/lipstick/random/New()
|
||||
/obj/item/lipstick/random/New()
|
||||
colour = pick("red","purple","lime","black","green","blue","white")
|
||||
name = "[colour] lipstick"
|
||||
|
||||
|
||||
/obj/item/weapon/lipstick/attack_self(mob/user as mob)
|
||||
/obj/item/lipstick/attack_self(mob/user as mob)
|
||||
overlays.Cut()
|
||||
to_chat(user, "<span class='notice'>You twist \the [src] [open ? "closed" : "open"].</span>")
|
||||
open = !open
|
||||
@@ -52,7 +52,7 @@
|
||||
else
|
||||
icon_state = "lipstick"
|
||||
|
||||
/obj/item/weapon/lipstick/attack(mob/M as mob, mob/user as mob)
|
||||
/obj/item/lipstick/attack(mob/M as mob, mob/user as mob)
|
||||
if(!open) return
|
||||
|
||||
if(!istype(M, /mob)) return
|
||||
@@ -80,7 +80,7 @@
|
||||
else
|
||||
to_chat(user, "<span class='notice'>Where are the lips on that?</span>")
|
||||
|
||||
/obj/item/weapon/razor
|
||||
/obj/item/razor
|
||||
name = "electric razor"
|
||||
desc = "The latest and greatest power razor born from the science of shaving."
|
||||
icon = 'icons/obj/items.dmi'
|
||||
@@ -90,7 +90,7 @@
|
||||
usesound = 'sound/items/Welder2.ogg'
|
||||
toolspeed = 1
|
||||
|
||||
/obj/item/weapon/razor/attack(mob/living/carbon/M as mob, mob/user as mob)
|
||||
/obj/item/razor/attack(mob/living/carbon/M as mob, mob/user as mob)
|
||||
if(ishuman(M))
|
||||
var/mob/living/carbon/human/H = M
|
||||
var/obj/item/organ/external/head/C = H.get_organ("head")
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
// Gavel Hammer
|
||||
// Gavel Block
|
||||
|
||||
/obj/item/weapon/gavelhammer
|
||||
/obj/item/gavelhammer
|
||||
name = "gavel hammer"
|
||||
desc = "Order, order! No bombs in my courthouse."
|
||||
icon = 'icons/obj/items.dmi'
|
||||
@@ -13,12 +13,12 @@
|
||||
attack_verb = list("bashed", "battered", "judged", "whacked")
|
||||
burn_state = FLAMMABLE
|
||||
|
||||
/obj/item/weapon/gavelhammer/suicide_act(mob/user)
|
||||
/obj/item/gavelhammer/suicide_act(mob/user)
|
||||
user.visible_message("<span class='warning'>[user] has sentenced \himself to death with the [src.name]! It looks like \he's trying to commit suicide.</span>")
|
||||
playsound(loc, 'sound/items/gavel.ogg', 50, 1, -1)
|
||||
return (BRUTELOSS)
|
||||
|
||||
/obj/item/weapon/gavelblock
|
||||
/obj/item/gavelblock
|
||||
name = "gavel block"
|
||||
desc = "Smack it with a gavel hammer when the assistants get rowdy."
|
||||
icon = 'icons/obj/items.dmi'
|
||||
@@ -28,8 +28,8 @@
|
||||
w_class = WEIGHT_CLASS_TINY
|
||||
burn_state = FLAMMABLE
|
||||
|
||||
/obj/item/weapon/gavelblock/attackby(obj/item/I, mob/user, params)
|
||||
if(istype(I, /obj/item/weapon/gavelhammer))
|
||||
/obj/item/gavelblock/attackby(obj/item/I, mob/user, params)
|
||||
if(istype(I, /obj/item/gavelhammer))
|
||||
playsound(loc, 'sound/items/gavel.ogg', 100, 1)
|
||||
user.visible_message("<span class='warning'>[user] strikes \the [src] with \the [I].</span>")
|
||||
else
|
||||
|
||||
@@ -1,9 +1,8 @@
|
||||
//backpack item
|
||||
|
||||
/obj/item/weapon/defibrillator
|
||||
/obj/item/defibrillator
|
||||
name = "defibrillator"
|
||||
desc = "A device that delivers powerful shocks to detachable paddles that resuscitate incapacitated patients."
|
||||
icon = 'icons/obj/weapons.dmi'
|
||||
icon_state = "defibunit"
|
||||
item_state = "defibunit"
|
||||
slot_flags = SLOT_BACK
|
||||
@@ -20,29 +19,29 @@
|
||||
var/paddles_on_defib = TRUE //if the paddles are on the defib (TRUE)
|
||||
var/safety = 1 //if you can zap people with the defibs on harm mode
|
||||
var/powered = 0 //if there's a cell in the defib with enough power for a revive, blocks paddles from reviving otherwise
|
||||
var/obj/item/weapon/twohanded/shockpaddles/paddles
|
||||
var/obj/item/weapon/stock_parts/cell/high/bcell = null
|
||||
var/obj/item/twohanded/shockpaddles/paddles
|
||||
var/obj/item/stock_parts/cell/high/bcell = null
|
||||
var/combat = 0 //can we revive through space suits?
|
||||
|
||||
/obj/item/weapon/defibrillator/New() //starts without a cell for rnd
|
||||
/obj/item/defibrillator/New() //starts without a cell for rnd
|
||||
..()
|
||||
paddles = make_paddles()
|
||||
update_icon()
|
||||
return
|
||||
|
||||
/obj/item/weapon/defibrillator/loaded/New() //starts with hicap
|
||||
/obj/item/defibrillator/loaded/New() //starts with hicap
|
||||
..()
|
||||
paddles = make_paddles()
|
||||
bcell = new(src)
|
||||
update_icon()
|
||||
return
|
||||
|
||||
/obj/item/weapon/defibrillator/update_icon()
|
||||
/obj/item/defibrillator/update_icon()
|
||||
update_power()
|
||||
update_overlays()
|
||||
update_charge()
|
||||
|
||||
/obj/item/weapon/defibrillator/proc/update_power()
|
||||
/obj/item/defibrillator/proc/update_power()
|
||||
if(bcell)
|
||||
if(bcell.charge < paddles.revivecost)
|
||||
powered = 0
|
||||
@@ -51,7 +50,7 @@
|
||||
else
|
||||
powered = 0
|
||||
|
||||
/obj/item/weapon/defibrillator/proc/update_overlays()
|
||||
/obj/item/defibrillator/proc/update_overlays()
|
||||
overlays.Cut()
|
||||
if(paddles_on_defib)
|
||||
overlays += "[icon_state]-paddles"
|
||||
@@ -62,28 +61,28 @@
|
||||
if(!safety)
|
||||
overlays += "[icon_state]-emagged"
|
||||
|
||||
/obj/item/weapon/defibrillator/proc/update_charge()
|
||||
/obj/item/defibrillator/proc/update_charge()
|
||||
if(powered) //so it doesn't show charge if it's unpowered
|
||||
if(bcell)
|
||||
var/ratio = bcell.charge / bcell.maxcharge
|
||||
ratio = Ceiling(ratio*4) * 25
|
||||
overlays += "[icon_state]-charge[ratio]"
|
||||
|
||||
/obj/item/weapon/defibrillator/CheckParts(list/parts_list)
|
||||
/obj/item/defibrillator/CheckParts(list/parts_list)
|
||||
..()
|
||||
bcell = locate(/obj/item/weapon/stock_parts/cell) in contents
|
||||
bcell = locate(/obj/item/stock_parts/cell) in contents
|
||||
update_icon()
|
||||
|
||||
/obj/item/weapon/defibrillator/ui_action_click()
|
||||
/obj/item/defibrillator/ui_action_click()
|
||||
toggle_paddles()
|
||||
|
||||
/obj/item/weapon/defibrillator/CtrlClick()
|
||||
/obj/item/defibrillator/CtrlClick()
|
||||
if(ishuman(usr) && Adjacent(usr))
|
||||
toggle_paddles()
|
||||
|
||||
/obj/item/weapon/defibrillator/attackby(obj/item/weapon/W, mob/user, params)
|
||||
if(istype(W, /obj/item/weapon/stock_parts/cell))
|
||||
var/obj/item/weapon/stock_parts/cell/C = W
|
||||
/obj/item/defibrillator/attackby(obj/item/W, mob/user, params)
|
||||
if(istype(W, /obj/item/stock_parts/cell))
|
||||
var/obj/item/stock_parts/cell/C = W
|
||||
if(bcell)
|
||||
to_chat(user, "<span class='notice'>[src] already has a cell.</span>")
|
||||
else
|
||||
@@ -95,7 +94,7 @@
|
||||
bcell = W
|
||||
to_chat(user, "<span class='notice'>You install a cell in [src].</span>")
|
||||
|
||||
if(istype(W, /obj/item/weapon/screwdriver))
|
||||
if(istype(W, /obj/item/screwdriver))
|
||||
if(bcell)
|
||||
bcell.updateicon()
|
||||
bcell.loc = get_turf(src.loc)
|
||||
@@ -105,7 +104,7 @@
|
||||
update_icon()
|
||||
return
|
||||
|
||||
/obj/item/weapon/defibrillator/emag_act(user as mob)
|
||||
/obj/item/defibrillator/emag_act(user as mob)
|
||||
if(safety)
|
||||
safety = 0
|
||||
to_chat(user, "<span class='warning'>You silently disable [src]'s safety protocols with the card.")
|
||||
@@ -113,7 +112,7 @@
|
||||
safety = 1
|
||||
to_chat(user, "<span class='notice'>You silently enable [src]'s safety protocols with the card.")
|
||||
|
||||
/obj/item/weapon/defibrillator/emp_act(severity)
|
||||
/obj/item/defibrillator/emp_act(severity)
|
||||
if(bcell)
|
||||
deductcharge(1000 / severity)
|
||||
if(safety)
|
||||
@@ -127,7 +126,7 @@
|
||||
update_icon()
|
||||
..()
|
||||
|
||||
/obj/item/weapon/defibrillator/verb/toggle_paddles()
|
||||
/obj/item/defibrillator/verb/toggle_paddles()
|
||||
set name = "Toggle Paddles"
|
||||
set category = "Object"
|
||||
|
||||
@@ -150,20 +149,20 @@
|
||||
var/datum/action/A = X
|
||||
A.UpdateButtonIcon()
|
||||
|
||||
/obj/item/weapon/defibrillator/proc/make_paddles()
|
||||
return new /obj/item/weapon/twohanded/shockpaddles(src)
|
||||
/obj/item/defibrillator/proc/make_paddles()
|
||||
return new /obj/item/twohanded/shockpaddles(src)
|
||||
|
||||
/obj/item/weapon/defibrillator/equipped(mob/user, slot)
|
||||
/obj/item/defibrillator/equipped(mob/user, slot)
|
||||
..()
|
||||
if(slot != slot_back)
|
||||
remove_paddles(user)
|
||||
update_icon()
|
||||
|
||||
/obj/item/weapon/defibrillator/item_action_slot_check(slot, mob/user)
|
||||
/obj/item/defibrillator/item_action_slot_check(slot, mob/user)
|
||||
if(slot == slot_back)
|
||||
return 1
|
||||
|
||||
/obj/item/weapon/defibrillator/proc/remove_paddles(mob/user) // from your hands
|
||||
/obj/item/defibrillator/proc/remove_paddles(mob/user) // from your hands
|
||||
var/mob/living/carbon/human/M = user
|
||||
if(paddles in get_both_hands(M))
|
||||
M.unEquip(paddles)
|
||||
@@ -171,7 +170,7 @@
|
||||
update_icon()
|
||||
return
|
||||
|
||||
/obj/item/weapon/defibrillator/Destroy()
|
||||
/obj/item/defibrillator/Destroy()
|
||||
if(!paddles_on_defib)
|
||||
var/M = get(paddles, /mob)
|
||||
remove_paddles(M)
|
||||
@@ -179,7 +178,7 @@
|
||||
QDEL_NULL(bcell)
|
||||
return ..()
|
||||
|
||||
/obj/item/weapon/defibrillator/proc/deductcharge(var/chrgdeductamt)
|
||||
/obj/item/defibrillator/proc/deductcharge(var/chrgdeductamt)
|
||||
if(bcell)
|
||||
if(bcell.charge < (paddles.revivecost+chrgdeductamt))
|
||||
powered = 0
|
||||
@@ -191,7 +190,7 @@
|
||||
update_icon()
|
||||
return 0
|
||||
|
||||
/obj/item/weapon/defibrillator/proc/cooldowncheck(var/mob/user)
|
||||
/obj/item/defibrillator/proc/cooldowncheck(var/mob/user)
|
||||
spawn(50)
|
||||
if(bcell)
|
||||
if(bcell.charge >= paddles.revivecost)
|
||||
@@ -204,7 +203,7 @@
|
||||
paddles.update_icon()
|
||||
update_icon()
|
||||
|
||||
/obj/item/weapon/defibrillator/compact
|
||||
/obj/item/defibrillator/compact
|
||||
name = "compact defibrillator"
|
||||
desc = "A belt-equipped defibrillator that can be rapidly deployed."
|
||||
icon_state = "defibcompact"
|
||||
@@ -213,31 +212,31 @@
|
||||
slot_flags = SLOT_BELT
|
||||
origin_tech = "biotech=5"
|
||||
|
||||
/obj/item/weapon/defibrillator/compact/item_action_slot_check(slot, mob/user)
|
||||
/obj/item/defibrillator/compact/item_action_slot_check(slot, mob/user)
|
||||
if(slot == slot_belt)
|
||||
return 1
|
||||
|
||||
/obj/item/weapon/defibrillator/compact/loaded/New()
|
||||
/obj/item/defibrillator/compact/loaded/New()
|
||||
..()
|
||||
paddles = make_paddles()
|
||||
bcell = new(src)
|
||||
update_icon()
|
||||
return
|
||||
|
||||
/obj/item/weapon/defibrillator/compact/combat
|
||||
/obj/item/defibrillator/compact/combat
|
||||
name = "combat defibrillator"
|
||||
desc = "A belt-equipped blood-red defibrillator that can be rapidly deployed. Does not have the restrictions or safeties of conventional defibrillators and can revive through space suits."
|
||||
combat = 1
|
||||
safety = 0
|
||||
|
||||
/obj/item/weapon/defibrillator/compact/combat/loaded/New()
|
||||
/obj/item/defibrillator/compact/combat/loaded/New()
|
||||
..()
|
||||
paddles = make_paddles()
|
||||
bcell = new /obj/item/weapon/stock_parts/cell/infinite(src)
|
||||
bcell = new /obj/item/stock_parts/cell/infinite(src)
|
||||
update_icon()
|
||||
return
|
||||
|
||||
/obj/item/weapon/defibrillator/compact/combat/attackby(obj/item/weapon/W, mob/user, params)
|
||||
/obj/item/defibrillator/compact/combat/attackby(obj/item/W, mob/user, params)
|
||||
if(W == paddles)
|
||||
paddles.unwield()
|
||||
toggle_paddles()
|
||||
@@ -246,10 +245,9 @@
|
||||
|
||||
//paddles
|
||||
|
||||
/obj/item/weapon/twohanded/shockpaddles
|
||||
/obj/item/twohanded/shockpaddles
|
||||
name = "defibrillator paddles"
|
||||
desc = "A pair of plastic-gripped paddles with flat metal surfaces that are used to deliver powerful electric shocks."
|
||||
icon = 'icons/obj/weapons.dmi'
|
||||
icon_state = "defibpaddles"
|
||||
item_state = "defibpaddles"
|
||||
force = 0
|
||||
@@ -260,9 +258,9 @@
|
||||
var/revivecost = 1000
|
||||
var/cooldown = 0
|
||||
var/busy = 0
|
||||
var/obj/item/weapon/defibrillator/defib
|
||||
var/obj/item/defibrillator/defib
|
||||
|
||||
/obj/item/weapon/twohanded/shockpaddles/New(mainunit)
|
||||
/obj/item/twohanded/shockpaddles/New(mainunit)
|
||||
..()
|
||||
if(check_defib_exists(mainunit, src))
|
||||
defib = mainunit
|
||||
@@ -271,21 +269,21 @@
|
||||
update_icon()
|
||||
return
|
||||
|
||||
/obj/item/weapon/twohanded/shockpaddles/update_icon()
|
||||
/obj/item/twohanded/shockpaddles/update_icon()
|
||||
icon_state = "defibpaddles[wielded]"
|
||||
item_state = "defibpaddles[wielded]"
|
||||
if(cooldown)
|
||||
icon_state = "defibpaddles[wielded]_cooldown"
|
||||
|
||||
/obj/item/weapon/twohanded/shockpaddles/suicide_act(mob/user)
|
||||
/obj/item/twohanded/shockpaddles/suicide_act(mob/user)
|
||||
user.visible_message("<span class='danger'>[user] is putting the live paddles on \his chest! It looks like \he's trying to commit suicide.</span>")
|
||||
defib.deductcharge(revivecost)
|
||||
playsound(get_turf(src), 'sound/machines/defib_zap.ogg', 50, 1, -1)
|
||||
return (OXYLOSS)
|
||||
|
||||
/obj/item/weapon/twohanded/shockpaddles/dropped(mob/user as mob)
|
||||
/obj/item/twohanded/shockpaddles/dropped(mob/user as mob)
|
||||
if(user)
|
||||
var/obj/item/weapon/twohanded/offhand/O = user.get_inactive_hand()
|
||||
var/obj/item/twohanded/offhand/O = user.get_inactive_hand()
|
||||
if(istype(O))
|
||||
O.unwield()
|
||||
to_chat(user, "<span class='notice'>The paddles snap back into the main unit.</span>")
|
||||
@@ -295,15 +293,15 @@
|
||||
update_icon()
|
||||
return unwield(user)
|
||||
|
||||
/obj/item/weapon/twohanded/shockpaddles/proc/check_defib_exists(mainunit, var/mob/living/carbon/human/M, var/obj/O)
|
||||
if(!mainunit || !istype(mainunit, /obj/item/weapon/defibrillator)) //To avoid weird issues from admin spawns
|
||||
/obj/item/twohanded/shockpaddles/proc/check_defib_exists(mainunit, var/mob/living/carbon/human/M, var/obj/O)
|
||||
if(!mainunit || !istype(mainunit, /obj/item/defibrillator)) //To avoid weird issues from admin spawns
|
||||
M.unEquip(O)
|
||||
qdel(O)
|
||||
return 0
|
||||
else
|
||||
return 1
|
||||
|
||||
/obj/item/weapon/twohanded/shockpaddles/attack(mob/M, mob/user)
|
||||
/obj/item/twohanded/shockpaddles/attack(mob/M, mob/user)
|
||||
var/tobehealed
|
||||
var/threshold = -config.health_threshold_dead
|
||||
var/mob/living/carbon/human/H = M
|
||||
@@ -437,10 +435,9 @@
|
||||
busy = 0
|
||||
update_icon()
|
||||
|
||||
/obj/item/weapon/borg_defib
|
||||
/obj/item/borg_defib
|
||||
name = "defibrillator paddles"
|
||||
desc = "A pair of mounted paddles with flat metal surfaces that are used to deliver powerful electric shocks."
|
||||
icon = 'icons/obj/weapons.dmi'
|
||||
icon_state = "defibpaddles0"
|
||||
item_state = "defibpaddles0"
|
||||
force = 0
|
||||
@@ -452,7 +449,7 @@
|
||||
flags = NODROP
|
||||
toolspeed = 1
|
||||
|
||||
/obj/item/weapon/borg_defib/attack(mob/M, mob/user)
|
||||
/obj/item/borg_defib/attack(mob/M, mob/user)
|
||||
var/tobehealed
|
||||
var/threshold = -config.health_threshold_dead
|
||||
var/mob/living/carbon/human/H = M
|
||||
|
||||
@@ -1,30 +1,30 @@
|
||||
/obj/item/weapon/storage/pill_bottle/dice
|
||||
/obj/item/storage/pill_bottle/dice
|
||||
name = "bag of dice"
|
||||
desc = "Contains all the luck you'll ever need."
|
||||
icon = 'icons/obj/dice.dmi'
|
||||
icon_state = "dicebag"
|
||||
|
||||
/obj/item/weapon/storage/pill_bottle/dice/New()
|
||||
/obj/item/storage/pill_bottle/dice/New()
|
||||
..()
|
||||
var/special_die = pick("1","2","fudge","00","100")
|
||||
if(special_die == "1")
|
||||
new /obj/item/weapon/dice/d1(src)
|
||||
new /obj/item/dice/d1(src)
|
||||
if(special_die == "2")
|
||||
new /obj/item/weapon/dice/d2(src)
|
||||
new /obj/item/weapon/dice/d4(src)
|
||||
new /obj/item/weapon/dice/d6(src)
|
||||
new /obj/item/dice/d2(src)
|
||||
new /obj/item/dice/d4(src)
|
||||
new /obj/item/dice/d6(src)
|
||||
if(special_die == "fudge")
|
||||
new /obj/item/weapon/dice/fudge(src)
|
||||
new /obj/item/weapon/dice/d8(src)
|
||||
new /obj/item/weapon/dice/d10(src)
|
||||
new /obj/item/dice/fudge(src)
|
||||
new /obj/item/dice/d8(src)
|
||||
new /obj/item/dice/d10(src)
|
||||
if(special_die == "00")
|
||||
new /obj/item/weapon/dice/d00(src)
|
||||
new /obj/item/weapon/dice/d12(src)
|
||||
new /obj/item/weapon/dice/d20(src)
|
||||
new /obj/item/dice/d00(src)
|
||||
new /obj/item/dice/d12(src)
|
||||
new /obj/item/dice/d20(src)
|
||||
if(special_die == "100")
|
||||
new /obj/item/weapon/dice/d100(src)
|
||||
new /obj/item/dice/d100(src)
|
||||
|
||||
/obj/item/weapon/dice //depreciated d6, use /obj/item/weapon/dice/d6 if you actually want a d6
|
||||
/obj/item/dice //depreciated d6, use /obj/item/dice/d6 if you actually want a d6
|
||||
name = "die"
|
||||
desc = "A die with six sides. Basic and servicable."
|
||||
icon = 'icons/obj/dice.dmi'
|
||||
@@ -34,89 +34,89 @@
|
||||
var/result = null
|
||||
var/list/special_faces = list() //entries should match up to sides var if used
|
||||
|
||||
/obj/item/weapon/dice/New()
|
||||
/obj/item/dice/New()
|
||||
result = rand(1, sides)
|
||||
update_icon()
|
||||
|
||||
/obj/item/weapon/dice/d1
|
||||
/obj/item/dice/d1
|
||||
name = "d1"
|
||||
desc = "A die with one side. Deterministic!"
|
||||
icon_state = "d1"
|
||||
sides = 1
|
||||
|
||||
/obj/item/weapon/dice/d2
|
||||
/obj/item/dice/d2
|
||||
name = "d2"
|
||||
desc = "A die with two sides. Coins are undignified!"
|
||||
icon_state = "d2"
|
||||
sides = 2
|
||||
|
||||
/obj/item/weapon/dice/d4
|
||||
/obj/item/dice/d4
|
||||
name = "d4"
|
||||
desc = "A die with four sides. The nerd's caltrop."
|
||||
icon_state = "d4"
|
||||
sides = 4
|
||||
|
||||
/obj/item/weapon/dice/d6
|
||||
/obj/item/dice/d6
|
||||
name = "d6"
|
||||
|
||||
/obj/item/weapon/dice/fudge
|
||||
/obj/item/dice/fudge
|
||||
name = "fudge die"
|
||||
desc = "A die with six sides but only three results. Is this a plus or a minus? Your mind is drawing a blank..."
|
||||
sides = 3 //shhh
|
||||
icon_state = "fudge"
|
||||
special_faces = list("minus","blank","plus")
|
||||
|
||||
/obj/item/weapon/dice/d8
|
||||
/obj/item/dice/d8
|
||||
name = "d8"
|
||||
desc = "A die with eight sides. It feels... lucky."
|
||||
icon_state = "d8"
|
||||
sides = 8
|
||||
|
||||
/obj/item/weapon/dice/d10
|
||||
/obj/item/dice/d10
|
||||
name = "d10"
|
||||
desc = "A die with ten sides. Useful for percentages."
|
||||
icon_state = "d10"
|
||||
sides = 10
|
||||
|
||||
/obj/item/weapon/dice/d00
|
||||
/obj/item/dice/d00
|
||||
name = "d00"
|
||||
desc = "A die with ten sides. Works better for d100 rolls than a golfball."
|
||||
icon_state = "d00"
|
||||
sides = 10
|
||||
|
||||
/obj/item/weapon/dice/d12
|
||||
/obj/item/dice/d12
|
||||
name = "d12"
|
||||
desc = "A die with twelve sides. There's an air of neglect about it."
|
||||
icon_state = "d12"
|
||||
sides = 12
|
||||
|
||||
/obj/item/weapon/dice/d20
|
||||
/obj/item/dice/d20
|
||||
name = "d20"
|
||||
desc = "A die with twenty sides. The prefered die to throw at the GM."
|
||||
icon_state = "d20"
|
||||
sides = 20
|
||||
|
||||
/obj/item/weapon/dice/d100
|
||||
/obj/item/dice/d100
|
||||
name = "d100"
|
||||
desc = "A die with one hundred sides! Probably not fairly weighted..."
|
||||
icon_state = "d100"
|
||||
sides = 100
|
||||
|
||||
/obj/item/weapon/dice/d100/update_icon()
|
||||
/obj/item/dice/d100/update_icon()
|
||||
return
|
||||
|
||||
/obj/item/weapon/dice/d20/e20
|
||||
/obj/item/dice/d20/e20
|
||||
var/triggered = 0
|
||||
|
||||
/obj/item/weapon/dice/attack_self(mob/user as mob)
|
||||
/obj/item/dice/attack_self(mob/user as mob)
|
||||
diceroll(user)
|
||||
|
||||
/obj/item/weapon/dice/throw_at(atom/target, range, speed, mob/thrower, spin=1, diagonals_first = 0, datum/callback/callback)
|
||||
/obj/item/dice/throw_at(atom/target, range, speed, mob/thrower, spin=1, diagonals_first = 0, datum/callback/callback)
|
||||
if(!..())
|
||||
return
|
||||
diceroll(thrower)
|
||||
|
||||
/obj/item/weapon/dice/proc/diceroll(mob/user)
|
||||
/obj/item/dice/proc/diceroll(mob/user)
|
||||
result = rand(1, sides)
|
||||
var/fake_result = rand(1, sides)//Daredevil isn't as good as he used to be
|
||||
var/comment = ""
|
||||
@@ -136,7 +136,7 @@
|
||||
else if(!throwing) //Dice was thrown and is coming to rest
|
||||
visible_message("<span class='notice'>[src] rolls to a stop, landing on [result]. [comment]</span>")
|
||||
|
||||
/obj/item/weapon/dice/d20/e20/diceroll(mob/user as mob, thrown)
|
||||
/obj/item/dice/d20/e20/diceroll(mob/user as mob, thrown)
|
||||
if(triggered)
|
||||
return
|
||||
..()
|
||||
@@ -164,21 +164,21 @@
|
||||
log_game("E20 detonated at [A.name] ([bombturf.x],[bombturf.y],[bombturf.z]) with a roll of [result]. Triggered by: [key_name(user)]")
|
||||
|
||||
|
||||
/obj/item/weapon/dice/update_icon()
|
||||
/obj/item/dice/update_icon()
|
||||
overlays.Cut()
|
||||
overlays += "[src.icon_state][src.result]"
|
||||
|
||||
/obj/item/weapon/storage/box/dice
|
||||
/obj/item/storage/box/dice
|
||||
name = "Box of dice"
|
||||
desc = "ANOTHER ONE!? FUCK!"
|
||||
icon_state = "box"
|
||||
|
||||
/obj/item/weapon/storage/box/dice/New()
|
||||
/obj/item/storage/box/dice/New()
|
||||
..()
|
||||
new /obj/item/weapon/dice/d2(src)
|
||||
new /obj/item/weapon/dice/d4(src)
|
||||
new /obj/item/weapon/dice/d8(src)
|
||||
new /obj/item/weapon/dice/d10(src)
|
||||
new /obj/item/weapon/dice/d00(src)
|
||||
new /obj/item/weapon/dice/d12(src)
|
||||
new /obj/item/weapon/dice/d20(src)
|
||||
new /obj/item/dice/d2(src)
|
||||
new /obj/item/dice/d4(src)
|
||||
new /obj/item/dice/d8(src)
|
||||
new /obj/item/dice/d10(src)
|
||||
new /obj/item/dice/d00(src)
|
||||
new /obj/item/dice/d12(src)
|
||||
new /obj/item/dice/d20(src)
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/obj/item/weapon/disk
|
||||
/obj/item/disk
|
||||
icon = 'icons/obj/module.dmi'
|
||||
w_class = WEIGHT_CLASS_TINY
|
||||
item_state = "card-id"
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/obj/item/weapon/dnainjector
|
||||
/obj/item/dnainjector
|
||||
name = "DNA-Injector"
|
||||
desc = "This injects the person with DNA."
|
||||
icon = 'icons/obj/items.dmi'
|
||||
@@ -18,7 +18,7 @@
|
||||
var/datatype = 0
|
||||
var/value = 0
|
||||
|
||||
/obj/item/weapon/dnainjector/New()
|
||||
/obj/item/dnainjector/New()
|
||||
if(datatype && block)
|
||||
buf=new
|
||||
buf.dna=new
|
||||
@@ -26,45 +26,45 @@
|
||||
buf.dna.ResetSE()
|
||||
SetValue(value)
|
||||
|
||||
/obj/item/weapon/dnainjector/Destroy()
|
||||
/obj/item/dnainjector/Destroy()
|
||||
QDEL_NULL(buf)
|
||||
return ..()
|
||||
|
||||
/obj/item/weapon/dnainjector/proc/GetRealBlock(var/selblock)
|
||||
/obj/item/dnainjector/proc/GetRealBlock(var/selblock)
|
||||
if(selblock==0)
|
||||
return block
|
||||
else
|
||||
return selblock
|
||||
|
||||
/obj/item/weapon/dnainjector/proc/GetState(var/selblock=0)
|
||||
/obj/item/dnainjector/proc/GetState(var/selblock=0)
|
||||
var/real_block=GetRealBlock(selblock)
|
||||
if(buf.types&DNA2_BUF_SE)
|
||||
return buf.dna.GetSEState(real_block)
|
||||
else
|
||||
return buf.dna.GetUIState(real_block)
|
||||
|
||||
/obj/item/weapon/dnainjector/proc/SetState(var/on, var/selblock=0)
|
||||
/obj/item/dnainjector/proc/SetState(var/on, var/selblock=0)
|
||||
var/real_block=GetRealBlock(selblock)
|
||||
if(buf.types&DNA2_BUF_SE)
|
||||
return buf.dna.SetSEState(real_block,on)
|
||||
else
|
||||
return buf.dna.SetUIState(real_block,on)
|
||||
|
||||
/obj/item/weapon/dnainjector/proc/GetValue(var/selblock=0)
|
||||
/obj/item/dnainjector/proc/GetValue(var/selblock=0)
|
||||
var/real_block=GetRealBlock(selblock)
|
||||
if(buf.types&DNA2_BUF_SE)
|
||||
return buf.dna.GetSEValue(real_block)
|
||||
else
|
||||
return buf.dna.GetUIValue(real_block)
|
||||
|
||||
/obj/item/weapon/dnainjector/proc/SetValue(var/val,var/selblock=0)
|
||||
/obj/item/dnainjector/proc/SetValue(var/val,var/selblock=0)
|
||||
var/real_block=GetRealBlock(selblock)
|
||||
if(buf.types&DNA2_BUF_SE)
|
||||
return buf.dna.SetSEValue(real_block,val)
|
||||
else
|
||||
return buf.dna.SetUIValue(real_block,val)
|
||||
|
||||
/obj/item/weapon/dnainjector/proc/inject(mob/living/M as mob, mob/user as mob)
|
||||
/obj/item/dnainjector/proc/inject(mob/living/M as mob, mob/user as mob)
|
||||
if(used)
|
||||
return
|
||||
if(istype(M,/mob/living))
|
||||
@@ -104,7 +104,7 @@
|
||||
if(H)
|
||||
H.sync_organ_dna(assimilate = 0, old_ue = prev_ue)
|
||||
|
||||
/obj/item/weapon/dnainjector/attack(mob/M as mob, mob/user as mob)
|
||||
/obj/item/dnainjector/attack(mob/M as mob, mob/user as mob)
|
||||
if(used)
|
||||
to_chat(user, "<span class='warning'>This injector is used up!</span>")
|
||||
return
|
||||
@@ -164,7 +164,7 @@
|
||||
icon_state = "dnainjector0"
|
||||
desc += " This one is used up."
|
||||
|
||||
/obj/item/weapon/dnainjector/hulkmut
|
||||
/obj/item/dnainjector/hulkmut
|
||||
name = "DNA-Injector (Hulk)"
|
||||
desc = "This will make you big and strong, but give you a bad skin condition."
|
||||
datatype = DNA2_BUF_SE
|
||||
@@ -174,7 +174,7 @@
|
||||
block = HULKBLOCK
|
||||
..()
|
||||
|
||||
/obj/item/weapon/dnainjector/antihulk
|
||||
/obj/item/dnainjector/antihulk
|
||||
name = "DNA-Injector (Anti-Hulk)"
|
||||
desc = "Cures green skin."
|
||||
datatype = DNA2_BUF_SE
|
||||
@@ -184,7 +184,7 @@
|
||||
block = HULKBLOCK
|
||||
..()
|
||||
|
||||
/obj/item/weapon/dnainjector/xraymut
|
||||
/obj/item/dnainjector/xraymut
|
||||
name = "DNA-Injector (Xray)"
|
||||
desc = "Finally you can see what the Captain does."
|
||||
datatype = DNA2_BUF_SE
|
||||
@@ -194,7 +194,7 @@
|
||||
block = XRAYBLOCK
|
||||
..()
|
||||
|
||||
/obj/item/weapon/dnainjector/antixray
|
||||
/obj/item/dnainjector/antixray
|
||||
name = "DNA-Injector (Anti-Xray)"
|
||||
desc = "It will make you see harder."
|
||||
datatype = DNA2_BUF_SE
|
||||
@@ -205,7 +205,7 @@
|
||||
..()
|
||||
|
||||
|
||||
/obj/item/weapon/dnainjector/firemut
|
||||
/obj/item/dnainjector/firemut
|
||||
name = "DNA-Injector (Fire)"
|
||||
desc = "Gives you fire."
|
||||
datatype = DNA2_BUF_SE
|
||||
@@ -215,7 +215,7 @@
|
||||
block = FIREBLOCK
|
||||
..()
|
||||
|
||||
/obj/item/weapon/dnainjector/antifire
|
||||
/obj/item/dnainjector/antifire
|
||||
name = "DNA-Injector (Anti-Fire)"
|
||||
desc = "Cures fire."
|
||||
datatype = DNA2_BUF_SE
|
||||
@@ -225,7 +225,7 @@
|
||||
block = FIREBLOCK
|
||||
..()
|
||||
|
||||
/obj/item/weapon/dnainjector/telemut
|
||||
/obj/item/dnainjector/telemut
|
||||
name = "DNA-Injector (Tele.)"
|
||||
desc = "Super brain man!"
|
||||
datatype = DNA2_BUF_SE
|
||||
@@ -235,12 +235,12 @@
|
||||
block = TELEBLOCK
|
||||
..()
|
||||
|
||||
/obj/item/weapon/dnainjector/telemut/darkbundle
|
||||
/obj/item/dnainjector/telemut/darkbundle
|
||||
name = "DNA injector"
|
||||
desc = "Good. Let the hate flow through you."
|
||||
|
||||
|
||||
/obj/item/weapon/dnainjector/antitele
|
||||
/obj/item/dnainjector/antitele
|
||||
name = "DNA-Injector (Anti-Tele.)"
|
||||
desc = "Will make you not able to control your mind."
|
||||
datatype = DNA2_BUF_SE
|
||||
@@ -250,7 +250,7 @@
|
||||
block = TELEBLOCK
|
||||
..()
|
||||
|
||||
/obj/item/weapon/dnainjector/nobreath
|
||||
/obj/item/dnainjector/nobreath
|
||||
name = "DNA-Injector (Breathless)"
|
||||
desc = "Hold your breath and count to infinity."
|
||||
datatype = DNA2_BUF_SE
|
||||
@@ -260,7 +260,7 @@
|
||||
block = BREATHLESSBLOCK
|
||||
..()
|
||||
|
||||
/obj/item/weapon/dnainjector/antinobreath
|
||||
/obj/item/dnainjector/antinobreath
|
||||
name = "DNA-Injector (Anti-Breathless)"
|
||||
desc = "Hold your breath and count to 100."
|
||||
datatype = DNA2_BUF_SE
|
||||
@@ -270,7 +270,7 @@
|
||||
block = BREATHLESSBLOCK
|
||||
..()
|
||||
|
||||
/obj/item/weapon/dnainjector/remoteview
|
||||
/obj/item/dnainjector/remoteview
|
||||
name = "DNA-Injector (Remote View)"
|
||||
desc = "Stare into the distance for a reason."
|
||||
datatype = DNA2_BUF_SE
|
||||
@@ -280,7 +280,7 @@
|
||||
block = REMOTEVIEWBLOCK
|
||||
..()
|
||||
|
||||
/obj/item/weapon/dnainjector/antiremoteview
|
||||
/obj/item/dnainjector/antiremoteview
|
||||
name = "DNA-Injector (Anti-Remote View)"
|
||||
desc = "Cures green skin."
|
||||
datatype = DNA2_BUF_SE
|
||||
@@ -290,7 +290,7 @@
|
||||
block = REMOTEVIEWBLOCK
|
||||
..()
|
||||
|
||||
/obj/item/weapon/dnainjector/regenerate
|
||||
/obj/item/dnainjector/regenerate
|
||||
name = "DNA-Injector (Regeneration)"
|
||||
desc = "Healthy but hungry."
|
||||
datatype = DNA2_BUF_SE
|
||||
@@ -300,7 +300,7 @@
|
||||
block = REGENERATEBLOCK
|
||||
..()
|
||||
|
||||
/obj/item/weapon/dnainjector/antiregenerate
|
||||
/obj/item/dnainjector/antiregenerate
|
||||
name = "DNA-Injector (Anti-Regeneration)"
|
||||
desc = "Sickly but sated."
|
||||
datatype = DNA2_BUF_SE
|
||||
@@ -310,7 +310,7 @@
|
||||
block = REGENERATEBLOCK
|
||||
..()
|
||||
|
||||
/obj/item/weapon/dnainjector/runfast
|
||||
/obj/item/dnainjector/runfast
|
||||
name = "DNA-Injector (Increase Run)"
|
||||
desc = "Running Man."
|
||||
datatype = DNA2_BUF_SE
|
||||
@@ -320,7 +320,7 @@
|
||||
block = INCREASERUNBLOCK
|
||||
..()
|
||||
|
||||
/obj/item/weapon/dnainjector/antirunfast
|
||||
/obj/item/dnainjector/antirunfast
|
||||
name = "DNA-Injector (Anti-Increase Run)"
|
||||
desc = "Walking Man."
|
||||
datatype = DNA2_BUF_SE
|
||||
@@ -330,7 +330,7 @@
|
||||
block = INCREASERUNBLOCK
|
||||
..()
|
||||
|
||||
/obj/item/weapon/dnainjector/morph
|
||||
/obj/item/dnainjector/morph
|
||||
name = "DNA-Injector (Morph)"
|
||||
desc = "A total makeover."
|
||||
datatype = DNA2_BUF_SE
|
||||
@@ -340,7 +340,7 @@
|
||||
block = MORPHBLOCK
|
||||
..()
|
||||
|
||||
/obj/item/weapon/dnainjector/antimorph
|
||||
/obj/item/dnainjector/antimorph
|
||||
name = "DNA-Injector (Anti-Morph)"
|
||||
desc = "Cures identity crisis."
|
||||
datatype = DNA2_BUF_SE
|
||||
@@ -350,7 +350,7 @@
|
||||
block = MORPHBLOCK
|
||||
..()
|
||||
|
||||
/obj/item/weapon/dnainjector/noprints
|
||||
/obj/item/dnainjector/noprints
|
||||
name = "DNA-Injector (No Prints)"
|
||||
desc = "Better than a pair of budget insulated gloves."
|
||||
datatype = DNA2_BUF_SE
|
||||
@@ -360,7 +360,7 @@
|
||||
block = NOPRINTSBLOCK
|
||||
..()
|
||||
|
||||
/obj/item/weapon/dnainjector/antinoprints
|
||||
/obj/item/dnainjector/antinoprints
|
||||
name = "DNA-Injector (Anti-No Prints)"
|
||||
desc = "Not quite as good as a pair of budget insulated gloves."
|
||||
datatype = DNA2_BUF_SE
|
||||
@@ -370,7 +370,7 @@
|
||||
block = NOPRINTSBLOCK
|
||||
..()
|
||||
|
||||
/obj/item/weapon/dnainjector/insulation
|
||||
/obj/item/dnainjector/insulation
|
||||
name = "DNA-Injector (Shock Immunity)"
|
||||
desc = "Better than a pair of real insulated gloves."
|
||||
datatype = DNA2_BUF_SE
|
||||
@@ -380,7 +380,7 @@
|
||||
block = SHOCKIMMUNITYBLOCK
|
||||
..()
|
||||
|
||||
/obj/item/weapon/dnainjector/antiinsulation
|
||||
/obj/item/dnainjector/antiinsulation
|
||||
name = "DNA-Injector (Anti-Shock Immunity)"
|
||||
desc = "Not quite as good as a pair of real insulated gloves."
|
||||
datatype = DNA2_BUF_SE
|
||||
@@ -390,7 +390,7 @@
|
||||
block = SHOCKIMMUNITYBLOCK
|
||||
..()
|
||||
|
||||
/obj/item/weapon/dnainjector/midgit
|
||||
/obj/item/dnainjector/midgit
|
||||
name = "DNA-Injector (Small Size)"
|
||||
desc = "Makes you shrink."
|
||||
datatype = DNA2_BUF_SE
|
||||
@@ -400,7 +400,7 @@
|
||||
block = SMALLSIZEBLOCK
|
||||
..()
|
||||
|
||||
/obj/item/weapon/dnainjector/antimidgit
|
||||
/obj/item/dnainjector/antimidgit
|
||||
name = "DNA-Injector (Anti-Small Size)"
|
||||
desc = "Makes you grow. But not too much."
|
||||
datatype = DNA2_BUF_SE
|
||||
@@ -411,7 +411,7 @@
|
||||
..()
|
||||
|
||||
/////////////////////////////////////
|
||||
/obj/item/weapon/dnainjector/antiglasses
|
||||
/obj/item/dnainjector/antiglasses
|
||||
name = "DNA-Injector (Anti-Glasses)"
|
||||
desc = "Toss away those glasses!"
|
||||
datatype = DNA2_BUF_SE
|
||||
@@ -421,7 +421,7 @@
|
||||
block = GLASSESBLOCK
|
||||
..()
|
||||
|
||||
/obj/item/weapon/dnainjector/glassesmut
|
||||
/obj/item/dnainjector/glassesmut
|
||||
name = "DNA-Injector (Glasses)"
|
||||
desc = "Will make you need dorkish glasses."
|
||||
datatype = DNA2_BUF_SE
|
||||
@@ -431,7 +431,7 @@
|
||||
block = GLASSESBLOCK
|
||||
..()
|
||||
|
||||
/obj/item/weapon/dnainjector/epimut
|
||||
/obj/item/dnainjector/epimut
|
||||
name = "DNA-Injector (Epi.)"
|
||||
desc = "Shake shake shake the room!"
|
||||
datatype = DNA2_BUF_SE
|
||||
@@ -441,7 +441,7 @@
|
||||
block = EPILEPSYBLOCK
|
||||
..()
|
||||
|
||||
/obj/item/weapon/dnainjector/antiepi
|
||||
/obj/item/dnainjector/antiepi
|
||||
name = "DNA-Injector (Anti-Epi.)"
|
||||
desc = "Will fix you up from shaking the room."
|
||||
datatype = DNA2_BUF_SE
|
||||
@@ -451,7 +451,7 @@
|
||||
block = EPILEPSYBLOCK
|
||||
..()
|
||||
|
||||
/obj/item/weapon/dnainjector/anticough
|
||||
/obj/item/dnainjector/anticough
|
||||
name = "DNA-Injector (Anti-Cough)"
|
||||
desc = "Will stop that awful noise."
|
||||
datatype = DNA2_BUF_SE
|
||||
@@ -461,7 +461,7 @@
|
||||
block = COUGHBLOCK
|
||||
..()
|
||||
|
||||
/obj/item/weapon/dnainjector/coughmut
|
||||
/obj/item/dnainjector/coughmut
|
||||
name = "DNA-Injector (Cough)"
|
||||
desc = "Will bring forth a sound of horror from your throat."
|
||||
datatype = DNA2_BUF_SE
|
||||
@@ -471,7 +471,7 @@
|
||||
block = COUGHBLOCK
|
||||
..()
|
||||
|
||||
/obj/item/weapon/dnainjector/clumsymut
|
||||
/obj/item/dnainjector/clumsymut
|
||||
name = "DNA-Injector (Clumsy)"
|
||||
desc = "Makes clumsy minions."
|
||||
datatype = DNA2_BUF_SE
|
||||
@@ -481,7 +481,7 @@
|
||||
block = CLUMSYBLOCK
|
||||
..()
|
||||
|
||||
/obj/item/weapon/dnainjector/anticlumsy
|
||||
/obj/item/dnainjector/anticlumsy
|
||||
name = "DNA-Injector (Anti-Clumy)"
|
||||
desc = "Cleans up confusion."
|
||||
datatype = DNA2_BUF_SE
|
||||
@@ -491,7 +491,7 @@
|
||||
block = CLUMSYBLOCK
|
||||
..()
|
||||
|
||||
/obj/item/weapon/dnainjector/antitour
|
||||
/obj/item/dnainjector/antitour
|
||||
name = "DNA-Injector (Anti-Tour.)"
|
||||
desc = "Will cure tourrets."
|
||||
datatype = DNA2_BUF_SE
|
||||
@@ -501,7 +501,7 @@
|
||||
block = TWITCHBLOCK
|
||||
..()
|
||||
|
||||
/obj/item/weapon/dnainjector/tourmut
|
||||
/obj/item/dnainjector/tourmut
|
||||
name = "DNA-Injector (Tour.)"
|
||||
desc = "Gives you a nasty case off tourrets."
|
||||
datatype = DNA2_BUF_SE
|
||||
@@ -511,7 +511,7 @@
|
||||
block = TWITCHBLOCK
|
||||
..()
|
||||
|
||||
/obj/item/weapon/dnainjector/stuttmut
|
||||
/obj/item/dnainjector/stuttmut
|
||||
name = "DNA-Injector (Stutt.)"
|
||||
desc = "Makes you s-s-stuttterrr"
|
||||
datatype = DNA2_BUF_SE
|
||||
@@ -522,7 +522,7 @@
|
||||
..()
|
||||
|
||||
|
||||
/obj/item/weapon/dnainjector/antistutt
|
||||
/obj/item/dnainjector/antistutt
|
||||
name = "DNA-Injector (Anti-Stutt.)"
|
||||
desc = "Fixes that speaking impairment."
|
||||
datatype = DNA2_BUF_SE
|
||||
@@ -532,7 +532,7 @@
|
||||
block = NERVOUSBLOCK
|
||||
..()
|
||||
|
||||
/obj/item/weapon/dnainjector/blindmut
|
||||
/obj/item/dnainjector/blindmut
|
||||
name = "DNA-Injector (Blind)"
|
||||
desc = "Makes you not see anything."
|
||||
datatype = DNA2_BUF_SE
|
||||
@@ -542,7 +542,7 @@
|
||||
block = BLINDBLOCK
|
||||
..()
|
||||
|
||||
/obj/item/weapon/dnainjector/antiblind
|
||||
/obj/item/dnainjector/antiblind
|
||||
name = "DNA-Injector (Anti-Blind)"
|
||||
desc = "ITS A MIRACLE!!!"
|
||||
datatype = DNA2_BUF_SE
|
||||
@@ -552,7 +552,7 @@
|
||||
block = BLINDBLOCK
|
||||
..()
|
||||
|
||||
/obj/item/weapon/dnainjector/telemut
|
||||
/obj/item/dnainjector/telemut
|
||||
name = "DNA-Injector (Tele.)"
|
||||
desc = "Super brain man!"
|
||||
datatype = DNA2_BUF_SE
|
||||
@@ -562,7 +562,7 @@
|
||||
block = TELEBLOCK
|
||||
..()
|
||||
|
||||
/obj/item/weapon/dnainjector/antitele
|
||||
/obj/item/dnainjector/antitele
|
||||
name = "DNA-Injector (Anti-Tele.)"
|
||||
desc = "Will make you not able to control your mind."
|
||||
datatype = DNA2_BUF_SE
|
||||
@@ -572,7 +572,7 @@
|
||||
block = TELEBLOCK
|
||||
..()
|
||||
|
||||
/obj/item/weapon/dnainjector/deafmut
|
||||
/obj/item/dnainjector/deafmut
|
||||
name = "DNA-Injector (Deaf)"
|
||||
desc = "Sorry, what did you say?"
|
||||
datatype = DNA2_BUF_SE
|
||||
@@ -582,7 +582,7 @@
|
||||
block = DEAFBLOCK
|
||||
..()
|
||||
|
||||
/obj/item/weapon/dnainjector/antideaf
|
||||
/obj/item/dnainjector/antideaf
|
||||
name = "DNA-Injector (Anti-Deaf)"
|
||||
desc = "Will make you hear once more."
|
||||
datatype = DNA2_BUF_SE
|
||||
@@ -592,7 +592,7 @@
|
||||
block = DEAFBLOCK
|
||||
..()
|
||||
|
||||
/obj/item/weapon/dnainjector/hallucination
|
||||
/obj/item/dnainjector/hallucination
|
||||
name = "DNA-Injector (Halluctination)"
|
||||
desc = "What you see isn't always what you get."
|
||||
datatype = DNA2_BUF_SE
|
||||
@@ -602,7 +602,7 @@
|
||||
block = HALLUCINATIONBLOCK
|
||||
..()
|
||||
|
||||
/obj/item/weapon/dnainjector/antihallucination
|
||||
/obj/item/dnainjector/antihallucination
|
||||
name = "DNA-Injector (Anti-Hallucination)"
|
||||
desc = "What you see is what you get."
|
||||
datatype = DNA2_BUF_SE
|
||||
@@ -612,7 +612,7 @@
|
||||
block = HALLUCINATIONBLOCK
|
||||
..()
|
||||
|
||||
/obj/item/weapon/dnainjector/h2m
|
||||
/obj/item/dnainjector/h2m
|
||||
name = "DNA-Injector (Human > Monkey)"
|
||||
desc = "Will make you a flea bag."
|
||||
datatype = DNA2_BUF_SE
|
||||
@@ -622,7 +622,7 @@
|
||||
block = MONKEYBLOCK
|
||||
..()
|
||||
|
||||
/obj/item/weapon/dnainjector/m2h
|
||||
/obj/item/dnainjector/m2h
|
||||
name = "DNA-Injector (Monkey > Human)"
|
||||
desc = "Will make you...less hairy."
|
||||
datatype = DNA2_BUF_SE
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/obj/item/weapon/dnascrambler
|
||||
/obj/item/dnascrambler
|
||||
name = "dna scrambler"
|
||||
desc = "An illegal genetic serum designed to randomize the user's identity."
|
||||
icon = 'icons/obj/hypo.dmi'
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/obj/item/weapon/grenade/plastic
|
||||
/obj/item/grenade/plastic
|
||||
name = "plastic explosive"
|
||||
desc = "Used to put holes in specific areas without too much extra hole."
|
||||
icon_state = "plastic-explosive0"
|
||||
@@ -13,16 +13,16 @@
|
||||
var/obj/item/device/assembly_holder/nadeassembly = null
|
||||
var/assemblyattacher
|
||||
|
||||
/obj/item/weapon/grenade/plastic/New()
|
||||
/obj/item/grenade/plastic/New()
|
||||
image_overlay = image('icons/obj/grenade.dmi', "[item_state]2")
|
||||
..()
|
||||
|
||||
/obj/item/weapon/grenade/plastic/Destroy()
|
||||
/obj/item/grenade/plastic/Destroy()
|
||||
QDEL_NULL(nadeassembly)
|
||||
target = null
|
||||
return ..()
|
||||
|
||||
/obj/item/weapon/grenade/plastic/attackby(obj/item/I, mob/user, params)
|
||||
/obj/item/grenade/plastic/attackby(obj/item/I, mob/user, params)
|
||||
if(!nadeassembly && istype(I, /obj/item/device/assembly_holder))
|
||||
var/obj/item/device/assembly_holder/A = I
|
||||
if(!user.unEquip(I))
|
||||
@@ -35,7 +35,7 @@
|
||||
playsound(src, 'sound/weapons/tap.ogg', 20, 1)
|
||||
update_icon()
|
||||
return
|
||||
if(nadeassembly && istype(I, /obj/item/weapon/wirecutters))
|
||||
if(nadeassembly && istype(I, /obj/item/wirecutters))
|
||||
playsound(src, I.usesound, 20, 1)
|
||||
nadeassembly.loc = get_turf(src)
|
||||
nadeassembly.master = null
|
||||
@@ -45,18 +45,18 @@
|
||||
..()
|
||||
|
||||
//assembly stuff
|
||||
/obj/item/weapon/grenade/plastic/receive_signal()
|
||||
/obj/item/grenade/plastic/receive_signal()
|
||||
prime()
|
||||
|
||||
/obj/item/weapon/grenade/plastic/Crossed(atom/movable/AM)
|
||||
/obj/item/grenade/plastic/Crossed(atom/movable/AM)
|
||||
if(nadeassembly)
|
||||
nadeassembly.Crossed(AM)
|
||||
|
||||
/obj/item/weapon/grenade/plastic/on_found(mob/finder)
|
||||
/obj/item/grenade/plastic/on_found(mob/finder)
|
||||
if(nadeassembly)
|
||||
nadeassembly.on_found(finder)
|
||||
|
||||
/obj/item/weapon/grenade/plastic/attack_self(mob/user)
|
||||
/obj/item/grenade/plastic/attack_self(mob/user)
|
||||
if(nadeassembly)
|
||||
nadeassembly.attack_self(user)
|
||||
return
|
||||
@@ -66,7 +66,7 @@
|
||||
det_time = newtime
|
||||
to_chat(user, "Timer set for [det_time] seconds.")
|
||||
|
||||
/obj/item/weapon/grenade/plastic/afterattack(atom/movable/AM, mob/user, flag)
|
||||
/obj/item/grenade/plastic/afterattack(atom/movable/AM, mob/user, flag)
|
||||
if (!flag)
|
||||
return
|
||||
if (istype(AM, /mob/living/carbon))
|
||||
@@ -87,7 +87,7 @@
|
||||
to_chat(user, "<span class='notice'>You plant the bomb. Timer counting down from [det_time].</span>")
|
||||
addtimer(src, "prime", det_time*10)
|
||||
|
||||
/obj/item/weapon/grenade/plastic/suicide_act(mob/user)
|
||||
/obj/item/grenade/plastic/suicide_act(mob/user)
|
||||
message_admins("[key_name_admin(user)](<A HREF='?_src_=holder;adminmoreinfo=\ref[user]'>?</A>) (<A HREF='?_src_=holder;adminplayerobservefollow=\ref[user]'>FLW</A>) suicided with [src.name] at ([user.x],[user.y],[user.z] - <A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[user.x];Y=[user.y];Z=[user.z]'>JMP</a>)",0,1)
|
||||
message_admins("[key_name(user)] suicided with [name] at ([user.x],[user.y],[user.z])")
|
||||
user.visible_message("<span class='suicide'>[user] activates the [name] and holds it above \his head! It looks like \he's going out with a bang!</span>")
|
||||
@@ -115,7 +115,7 @@
|
||||
prime()
|
||||
user.gib()
|
||||
|
||||
/obj/item/weapon/grenade/plastic/update_icon()
|
||||
/obj/item/grenade/plastic/update_icon()
|
||||
if(nadeassembly)
|
||||
icon_state = "[item_state]1"
|
||||
else
|
||||
@@ -125,11 +125,11 @@
|
||||
///// The Explosives /////
|
||||
//////////////////////////
|
||||
|
||||
/obj/item/weapon/grenade/plastic/c4
|
||||
/obj/item/grenade/plastic/c4
|
||||
name = "C4"
|
||||
desc = "Used to put holes in specific areas without too much extra hole. A saboteurs favourite."
|
||||
|
||||
/obj/item/weapon/grenade/plastic/c4/prime()
|
||||
/obj/item/grenade/plastic/c4/prime()
|
||||
var/turf/location
|
||||
if(target)
|
||||
if(!QDELETED(target))
|
||||
@@ -149,14 +149,14 @@
|
||||
// C4 is intended to be used for infiltration, and destroying tech. X4 is intended to be used for heavy breaching and tight spaces.
|
||||
// Intended to replace C4 for nukeops, and to be a randomdrop in surplus/random traitor purchases.
|
||||
|
||||
/obj/item/weapon/grenade/plastic/x4
|
||||
/obj/item/grenade/plastic/x4
|
||||
name = "X4"
|
||||
desc = "A specialized shaped high explosive breaching charge. Designed to be safer for the user, and less so, for the wall."
|
||||
var/aim_dir = NORTH
|
||||
icon_state = "plasticx40"
|
||||
item_state = "plasticx4"
|
||||
|
||||
/obj/item/weapon/grenade/plastic/x4/prime()
|
||||
/obj/item/grenade/plastic/x4/prime()
|
||||
var/turf/location
|
||||
if(target)
|
||||
if(!QDELETED(target))
|
||||
@@ -178,19 +178,19 @@
|
||||
M.gib()
|
||||
qdel(src)
|
||||
|
||||
/obj/item/weapon/grenade/plastic/x4/afterattack(atom/movable/AM, mob/user, flag)
|
||||
/obj/item/grenade/plastic/x4/afterattack(atom/movable/AM, mob/user, flag)
|
||||
aim_dir = get_dir(user,AM)
|
||||
..()
|
||||
|
||||
// Shaped charge
|
||||
// Same blasting power as C4, but with the same idea as the X4 -- Everyone on one side of the wall is safe.
|
||||
|
||||
/obj/item/weapon/grenade/plastic/c4_shaped
|
||||
/obj/item/grenade/plastic/c4_shaped
|
||||
name = "C4 (shaped)"
|
||||
desc = "A brick of C4 shaped to allow more precise breaching."
|
||||
var/aim_dir = NORTH
|
||||
|
||||
/obj/item/weapon/grenade/plastic/c4_shaped/prime()
|
||||
/obj/item/grenade/plastic/c4_shaped/prime()
|
||||
var/turf/location
|
||||
if(target)
|
||||
if(!QDELETED(target))
|
||||
@@ -211,15 +211,15 @@
|
||||
M.gib()
|
||||
qdel(src)
|
||||
|
||||
/obj/item/weapon/grenade/plastic/c4_shaped/afterattack(atom/movable/AM, mob/user, flag)
|
||||
/obj/item/grenade/plastic/c4_shaped/afterattack(atom/movable/AM, mob/user, flag)
|
||||
aim_dir = get_dir(user,AM)
|
||||
..()
|
||||
|
||||
/obj/item/weapon/grenade/plastic/c4_shaped/flash
|
||||
/obj/item/grenade/plastic/c4_shaped/flash
|
||||
name = "C4 (flash)"
|
||||
desc = "A C4 charge with an altered chemical composition, designed to blind and deafen the occupants of a room before breaching."
|
||||
|
||||
/obj/item/weapon/grenade/plastic/c4_shaped/flash/prime()
|
||||
/obj/item/grenade/plastic/c4_shaped/flash/prime()
|
||||
if(target && target.density)
|
||||
T = get_step(get_turf(target), aim_dir)
|
||||
else if(target)
|
||||
@@ -227,7 +227,7 @@
|
||||
else
|
||||
T = get_turf(src)
|
||||
|
||||
var/obj/item/weapon/grenade/flashbang/CB = new/obj/item/weapon/grenade/flashbang(T)
|
||||
var/obj/item/grenade/flashbang/CB = new/obj/item/grenade/flashbang(T)
|
||||
CB.prime()
|
||||
|
||||
..()
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/obj/item/weapon/extinguisher
|
||||
/obj/item/extinguisher
|
||||
name = "fire extinguisher"
|
||||
desc = "A traditional red fire extinguisher."
|
||||
icon = 'icons/obj/items.dmi'
|
||||
@@ -21,7 +21,7 @@
|
||||
var/precision = 0 //By default, turfs picked from a spray are random, set to 1 to make it always have at least one water effect per row
|
||||
var/cooling_power = 2 //Sets the cooling_temperature of the water reagent datum inside of the extinguisher when it is refilled
|
||||
|
||||
/obj/item/weapon/extinguisher/mini
|
||||
/obj/item/extinguisher/mini
|
||||
name = "pocket fire extinguisher"
|
||||
desc = "A light and compact fibreglass-framed model fire extinguisher."
|
||||
icon_state = "miniFE0"
|
||||
@@ -35,7 +35,7 @@
|
||||
max_water = 30
|
||||
sprite_name = "miniFE"
|
||||
|
||||
/obj/item/weapon/extinguisher/examine(mob/user)
|
||||
/obj/item/extinguisher/examine(mob/user)
|
||||
if(..(user, 0))
|
||||
to_chat(usr, "[bicon(src)] [src.name] contains:")
|
||||
if(reagents && reagents.reagent_list.len)
|
||||
@@ -43,18 +43,18 @@
|
||||
to_chat(user, "<span class='notice'>[R.volume] units of [R.name]</span>")
|
||||
|
||||
|
||||
/obj/item/weapon/extinguisher/New()
|
||||
/obj/item/extinguisher/New()
|
||||
create_reagents(max_water)
|
||||
reagents.add_reagent("water", max_water)
|
||||
|
||||
/obj/item/weapon/extinguisher/attack_self(mob/user as mob)
|
||||
/obj/item/extinguisher/attack_self(mob/user as mob)
|
||||
safety = !safety
|
||||
src.icon_state = "[sprite_name][!safety]"
|
||||
src.desc = "The safety is [safety ? "on" : "off"]."
|
||||
to_chat(user, "The safety is [safety ? "on" : "off"].")
|
||||
return
|
||||
|
||||
/obj/item/weapon/extinguisher/proc/AttemptRefill(atom/target, mob/user)
|
||||
/obj/item/extinguisher/proc/AttemptRefill(atom/target, mob/user)
|
||||
if(istype(target, /obj/structure/reagent_dispensers/watertank) && target.Adjacent(user))
|
||||
var/safety_save = safety
|
||||
safety = 1
|
||||
@@ -76,7 +76,7 @@
|
||||
else
|
||||
return 0
|
||||
|
||||
/obj/item/weapon/extinguisher/afterattack(atom/target, mob/user , flag)
|
||||
/obj/item/extinguisher/afterattack(atom/target, mob/user , flag)
|
||||
//TODO; Add support for reagents in water.
|
||||
if(target.loc == user)//No more spraying yourself when putting your extinguisher away
|
||||
return
|
||||
|
||||
@@ -1,13 +1,13 @@
|
||||
obj/item/weapon/firework
|
||||
obj/item/firework
|
||||
name = "fireworks"
|
||||
icon = 'icons/obj/fireworks.dmi'
|
||||
icon_state = "rocket_0"
|
||||
var/litzor = 0
|
||||
var/datum/effect_system/sparkle_spread/S
|
||||
obj/item/weapon/firework/attackby(obj/item/weapon/W,mob/user, params)
|
||||
obj/item/firework/attackby(obj/item/W,mob/user, params)
|
||||
if(litzor)
|
||||
return
|
||||
if(istype(W, /obj/item/weapon/weldingtool) && W:welding || istype(W,/obj/item/weapon/lighter) && W:lit)
|
||||
if(istype(W, /obj/item/weldingtool) && W:welding || istype(W,/obj/item/lighter) && W:lit)
|
||||
for(var/mob/M in viewers(user))
|
||||
to_chat(M, "[user] lits \the [src]")
|
||||
litzor = 1
|
||||
@@ -20,16 +20,16 @@ obj/item/weapon/firework/attackby(obj/item/weapon/W,mob/user, params)
|
||||
S.start()
|
||||
qdel(src)
|
||||
|
||||
obj/item/weapon/sparkler
|
||||
obj/item/sparkler
|
||||
name = "sparkler"
|
||||
icon = 'icons/obj/fireworks.dmi'
|
||||
icon_state = "sparkler_0"
|
||||
var/litzor = 0
|
||||
var/datum/effect_system/spark_spread/S
|
||||
obj/item/weapon/sparkler/attackby(obj/item/weapon/W,mob/user, params)
|
||||
obj/item/sparkler/attackby(obj/item/W,mob/user, params)
|
||||
if(litzor)
|
||||
return
|
||||
if(istype(W, /obj/item/weapon/weldingtool) && W:welding || istype(W,/obj/item/weapon/lighter) && W:lit)
|
||||
if(istype(W, /obj/item/weldingtool) && W:welding || istype(W,/obj/item/lighter) && W:lit)
|
||||
for(var/mob/M in viewers(user))
|
||||
to_chat(M, "[user] lits \the [src]")
|
||||
litzor = 1
|
||||
@@ -46,21 +46,21 @@ obj/item/weapon/sparkler/attackby(obj/item/weapon/W,mob/user, params)
|
||||
/obj/crate/fireworks
|
||||
name = "Fireworks!"
|
||||
/obj/crate/fireworks/New()
|
||||
new /obj/item/weapon/sparkler(src)
|
||||
new /obj/item/weapon/sparkler(src)
|
||||
new /obj/item/weapon/sparkler(src)
|
||||
new /obj/item/weapon/sparkler(src)
|
||||
new /obj/item/weapon/sparkler(src)
|
||||
new /obj/item/weapon/sparkler(src)
|
||||
new /obj/item/weapon/sparkler(src)
|
||||
new /obj/item/weapon/sparkler(src)
|
||||
new /obj/item/weapon/firework(src)
|
||||
new /obj/item/weapon/firework(src)
|
||||
new /obj/item/weapon/firework(src)
|
||||
new /obj/item/weapon/firework(src)
|
||||
new /obj/item/weapon/firework(src)
|
||||
new /obj/item/weapon/firework(src)
|
||||
new /obj/item/weapon/firework(src)
|
||||
new /obj/item/weapon/firework(src)
|
||||
new /obj/item/weapon/firework(src)
|
||||
new /obj/item/weapon/firework(src)
|
||||
new /obj/item/sparkler(src)
|
||||
new /obj/item/sparkler(src)
|
||||
new /obj/item/sparkler(src)
|
||||
new /obj/item/sparkler(src)
|
||||
new /obj/item/sparkler(src)
|
||||
new /obj/item/sparkler(src)
|
||||
new /obj/item/sparkler(src)
|
||||
new /obj/item/sparkler(src)
|
||||
new /obj/item/firework(src)
|
||||
new /obj/item/firework(src)
|
||||
new /obj/item/firework(src)
|
||||
new /obj/item/firework(src)
|
||||
new /obj/item/firework(src)
|
||||
new /obj/item/firework(src)
|
||||
new /obj/item/firework(src)
|
||||
new /obj/item/firework(src)
|
||||
new /obj/item/firework(src)
|
||||
new /obj/item/firework(src)
|
||||
@@ -1,4 +1,4 @@
|
||||
/obj/item/weapon/flamethrower
|
||||
/obj/item/flamethrower
|
||||
name = "flamethrower"
|
||||
desc = "You are a firestarter!"
|
||||
icon = 'icons/obj/flamethrower.dmi'
|
||||
@@ -18,12 +18,12 @@
|
||||
var/lit = 0 //on or off
|
||||
var/operating = 0//cooldown
|
||||
var/turf/previousturf = null
|
||||
var/obj/item/weapon/weldingtool/weldtool = null
|
||||
var/obj/item/weldingtool/weldtool = null
|
||||
var/obj/item/device/assembly/igniter/igniter = null
|
||||
var/obj/item/weapon/tank/plasma/ptank = null
|
||||
var/obj/item/tank/plasma/ptank = null
|
||||
|
||||
|
||||
/obj/item/weapon/flamethrower/Destroy()
|
||||
/obj/item/flamethrower/Destroy()
|
||||
QDEL_NULL(weldtool)
|
||||
QDEL_NULL(igniter)
|
||||
QDEL_NULL(ptank)
|
||||
@@ -31,7 +31,7 @@
|
||||
return ..()
|
||||
|
||||
|
||||
/obj/item/weapon/flamethrower/process()
|
||||
/obj/item/flamethrower/process()
|
||||
if(!lit)
|
||||
processing_objects.Remove(src)
|
||||
return null
|
||||
@@ -45,7 +45,7 @@
|
||||
return
|
||||
|
||||
|
||||
/obj/item/weapon/flamethrower/update_icon()
|
||||
/obj/item/flamethrower/update_icon()
|
||||
overlays.Cut()
|
||||
if(igniter)
|
||||
overlays += "+igniter[status]"
|
||||
@@ -58,7 +58,7 @@
|
||||
item_state = "flamethrower_0"
|
||||
return
|
||||
|
||||
/obj/item/weapon/flamethrower/afterattack(atom/target, mob/user, flag)
|
||||
/obj/item/flamethrower/afterattack(atom/target, mob/user, flag)
|
||||
if(flag) return // too close
|
||||
// Make sure our user is still holding us
|
||||
if(user && user.is_in_active_hand(src))
|
||||
@@ -68,7 +68,7 @@
|
||||
add_logs(user, target, "flamethrowered", addition="at [target.x],[target.y],[target.z]")
|
||||
flame_turf(turflist)
|
||||
|
||||
/obj/item/weapon/flamethrower/attackby(obj/item/W as obj, mob/user as mob, params)
|
||||
/obj/item/flamethrower/attackby(obj/item/W as obj, mob/user as mob, params)
|
||||
if(user.stat || user.restrained() || user.lying) return
|
||||
if(iswrench(W) && !status)//Taking this apart
|
||||
var/turf/T = get_turf(src)
|
||||
@@ -101,7 +101,7 @@
|
||||
update_icon()
|
||||
return
|
||||
|
||||
if(istype(W,/obj/item/weapon/tank/plasma))
|
||||
if(istype(W,/obj/item/tank/plasma))
|
||||
if(ptank)
|
||||
to_chat(user, "<span class='notice'>There appears to already be a plasma tank loaded in [src]!</span>")
|
||||
return
|
||||
@@ -117,7 +117,7 @@
|
||||
return
|
||||
|
||||
|
||||
/obj/item/weapon/flamethrower/attack_self(mob/user as mob)
|
||||
/obj/item/flamethrower/attack_self(mob/user as mob)
|
||||
if(user.stat || user.restrained() || user.lying) return
|
||||
user.set_machine(src)
|
||||
if(!ptank)
|
||||
@@ -129,7 +129,7 @@
|
||||
return
|
||||
|
||||
|
||||
/obj/item/weapon/flamethrower/Topic(href,href_list[])
|
||||
/obj/item/flamethrower/Topic(href,href_list[])
|
||||
if(href_list["close"])
|
||||
usr.unset_machine()
|
||||
usr << browse(null, "window=flamethrower")
|
||||
@@ -155,9 +155,9 @@
|
||||
update_icon()
|
||||
return
|
||||
|
||||
/obj/item/weapon/flamethrower/CheckParts(list/parts_list)
|
||||
/obj/item/flamethrower/CheckParts(list/parts_list)
|
||||
..()
|
||||
weldtool = locate(/obj/item/weapon/weldingtool) in contents
|
||||
weldtool = locate(/obj/item/weldingtool) in contents
|
||||
igniter = locate(/obj/item/device/assembly/igniter) in contents
|
||||
weldtool.status = 0
|
||||
igniter.secured = 0
|
||||
@@ -165,7 +165,7 @@
|
||||
update_icon()
|
||||
|
||||
//Called from turf.dm turf/dblclick
|
||||
/obj/item/weapon/flamethrower/proc/flame_turf(turflist)
|
||||
/obj/item/flamethrower/proc/flame_turf(turflist)
|
||||
if(!lit || operating) return
|
||||
operating = 1
|
||||
var/turf/previousturf = get_turf(src)
|
||||
@@ -186,7 +186,7 @@
|
||||
return
|
||||
|
||||
|
||||
/obj/item/weapon/flamethrower/proc/ignite_turf(turf/target, release_amount = 0.05)
|
||||
/obj/item/flamethrower/proc/ignite_turf(turf/target, release_amount = 0.05)
|
||||
var/datum/gas_mixture/air_transfer = ptank.air_contents.remove_ratio(release_amount)
|
||||
air_transfer.toxins = air_transfer.toxins // This is me not comprehending the air system. I realize this is retarded and I could probably make it work without fucking it up like this, but there you have it. -- TLE
|
||||
target.assume_air(air_transfer)
|
||||
@@ -197,10 +197,10 @@
|
||||
return
|
||||
|
||||
|
||||
/obj/item/weapon/flamethrower/full/New(var/loc)
|
||||
/obj/item/flamethrower/full/New(var/loc)
|
||||
..()
|
||||
if(!weldtool)
|
||||
weldtool = new /obj/item/weapon/weldingtool(src)
|
||||
weldtool = new /obj/item/weldingtool(src)
|
||||
weldtool.status = 0
|
||||
if(!igniter)
|
||||
igniter = new /obj/item/device/assembly/igniter(src)
|
||||
@@ -208,12 +208,12 @@
|
||||
status = 1
|
||||
update_icon()
|
||||
|
||||
/obj/item/weapon/flamethrower/full/tank/New(var/loc)
|
||||
/obj/item/flamethrower/full/tank/New(var/loc)
|
||||
..()
|
||||
ptank = new /obj/item/weapon/tank/plasma/full(src)
|
||||
ptank = new /obj/item/tank/plasma/full(src)
|
||||
update_icon()
|
||||
|
||||
/obj/item/weapon/flamethrower/hit_reaction(mob/living/carbon/human/owner, attack_text, final_block_chance, damage, attack_type)
|
||||
/obj/item/flamethrower/hit_reaction(mob/living/carbon/human/owner, attack_text, final_block_chance, damage, attack_type)
|
||||
if(ptank && damage && attack_type == PROJECTILE_ATTACK && prob(15))
|
||||
owner.visible_message("<span class='danger'>[attack_text] hits the fueltank on [owner]'s [src], rupturing it! What a shot!</span>")
|
||||
var/target_turf = get_turf(owner)
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
* Improvised garrotes
|
||||
*/
|
||||
|
||||
/obj/item/weapon/twohanded/garrote // 12TC traitor item
|
||||
/obj/item/twohanded/garrote // 12TC traitor item
|
||||
name = "fiber wire"
|
||||
desc = "A length of razor-thin wire with an elegant wooden handle on either end.<br>You suspect you'd have to be behind the target to use this weapon effectively."
|
||||
icon_state = "garrot_wrap"
|
||||
@@ -13,31 +13,31 @@
|
||||
var/improvised = 0
|
||||
var/garrote_time
|
||||
|
||||
/obj/item/weapon/twohanded/garrote/Destroy()
|
||||
/obj/item/twohanded/garrote/Destroy()
|
||||
strangling = null
|
||||
return ..()
|
||||
|
||||
/obj/item/weapon/twohanded/garrote/update_icon()
|
||||
/obj/item/twohanded/garrote/update_icon()
|
||||
if(strangling) // If we're strangling someone we want our icon to stay wielded
|
||||
icon_state = "garrot_unwrap"
|
||||
return
|
||||
|
||||
icon_state = "garrot_[wielded ? "un" : ""]wrap"
|
||||
|
||||
/obj/item/weapon/twohanded/garrote/improvised // Made via tablecrafting
|
||||
/obj/item/twohanded/garrote/improvised // Made via tablecrafting
|
||||
name = "garrote"
|
||||
desc = "A length of cable with a shoddily-carved wooden handle tied to either end.<br>You suspect you'd have to be behind the target to use this weapon effectively."
|
||||
icon_state = "garrot_I_wrap"
|
||||
improvised = 1
|
||||
|
||||
/obj/item/weapon/twohanded/garrote/improvised/update_icon()
|
||||
/obj/item/twohanded/garrote/improvised/update_icon()
|
||||
if(strangling)
|
||||
icon_state = "garrot_I_unwrap"
|
||||
return
|
||||
|
||||
icon_state = "garrot_I_[wielded ? "un" : ""]wrap"
|
||||
|
||||
/obj/item/weapon/twohanded/garrote/wield(mob/living/carbon/user)
|
||||
/obj/item/twohanded/garrote/wield(mob/living/carbon/user)
|
||||
if(strangling)
|
||||
user.visible_message("<span class='info'>[user] removes the [src] from [strangling]'s neck.</span>", \
|
||||
"<span class='warning'>You remove the [src] from [strangling]'s neck.</span>")
|
||||
@@ -49,7 +49,7 @@
|
||||
else
|
||||
..()
|
||||
|
||||
/obj/item/weapon/twohanded/garrote/attack(mob/living/carbon/M as mob, mob/user as mob)
|
||||
/obj/item/twohanded/garrote/attack(mob/living/carbon/M as mob, mob/user as mob)
|
||||
if(garrote_time > world.time) // Cooldown
|
||||
return
|
||||
|
||||
@@ -85,7 +85,7 @@
|
||||
|
||||
U.swap_hand() // For whatever reason the grab will not properly work if we don't have the free hand active.
|
||||
M.grabbedby(U, 1)
|
||||
var/obj/item/weapon/grab/G = U.get_active_hand()
|
||||
var/obj/item/grab/G = U.get_active_hand()
|
||||
U.swap_hand()
|
||||
|
||||
if(G && istype(G))
|
||||
@@ -110,7 +110,7 @@
|
||||
|
||||
return
|
||||
|
||||
/obj/item/weapon/twohanded/garrote/process()
|
||||
/obj/item/twohanded/garrote/process()
|
||||
if(!strangling)
|
||||
// Our mark got gibbed or similar
|
||||
update_icon()
|
||||
@@ -125,12 +125,12 @@
|
||||
return
|
||||
|
||||
var/mob/living/carbon/human/user = loc
|
||||
var/obj/item/weapon/grab/G
|
||||
var/obj/item/grab/G
|
||||
|
||||
if(src == user.r_hand && istype(user.l_hand, /obj/item/weapon/grab))
|
||||
if(src == user.r_hand && istype(user.l_hand, /obj/item/grab))
|
||||
G = user.l_hand
|
||||
|
||||
else if(src == user.l_hand && istype(user.r_hand, /obj/item/weapon/grab))
|
||||
else if(src == user.l_hand && istype(user.r_hand, /obj/item/grab))
|
||||
G = user.r_hand
|
||||
|
||||
else
|
||||
@@ -166,7 +166,7 @@
|
||||
strangling.apply_damage(4, OXY, "head")
|
||||
|
||||
|
||||
/obj/item/weapon/twohanded/garrote/suicide_act(mob/user)
|
||||
/obj/item/twohanded/garrote/suicide_act(mob/user)
|
||||
user.visible_message("<span class='suicide'>[user] is wrapping the [src] around \his neck and pulling the handles! It looks like \he's trying to commit suicide.</span>")
|
||||
playsound(src.loc, 'sound/weapons/cablecuff.ogg', 15, 1, -1)
|
||||
return (OXYLOSS)
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
/*
|
||||
* Gifts
|
||||
*/
|
||||
/obj/item/weapon/a_gift
|
||||
/obj/item/a_gift
|
||||
name = "gift"
|
||||
desc = "PRESENTS!!!! eek!"
|
||||
icon = 'icons/obj/items.dmi'
|
||||
@@ -15,7 +15,7 @@
|
||||
item_state = "gift1"
|
||||
burn_state = FLAMMABLE
|
||||
|
||||
/obj/item/weapon/a_gift/New()
|
||||
/obj/item/a_gift/New()
|
||||
..()
|
||||
pixel_x = rand(-10,10)
|
||||
pixel_y = rand(-10,10)
|
||||
@@ -25,7 +25,7 @@
|
||||
icon_state = "gift[pick(1, 2, 3)]"
|
||||
return
|
||||
|
||||
/obj/item/weapon/gift/attack_self(mob/user as mob)
|
||||
/obj/item/gift/attack_self(mob/user as mob)
|
||||
user.drop_item()
|
||||
if(src.gift)
|
||||
user.put_in_active_hand(gift)
|
||||
@@ -35,7 +35,7 @@
|
||||
qdel(src)
|
||||
return
|
||||
|
||||
/obj/item/weapon/a_gift/ex_act()
|
||||
/obj/item/a_gift/ex_act()
|
||||
qdel(src)
|
||||
return
|
||||
|
||||
@@ -44,10 +44,10 @@
|
||||
return
|
||||
to_chat(user, "<span class='notice'>You cant move.</span>")
|
||||
|
||||
/obj/effect/spresent/attackby(obj/item/weapon/W as obj, mob/user as mob, params)
|
||||
/obj/effect/spresent/attackby(obj/item/W as obj, mob/user as mob, params)
|
||||
..()
|
||||
|
||||
if(!istype(W, /obj/item/weapon/wirecutters))
|
||||
if(!istype(W, /obj/item/wirecutters))
|
||||
to_chat(user, "<span class='notice'>I need wirecutters for that.</span>")
|
||||
return
|
||||
|
||||
@@ -59,38 +59,38 @@
|
||||
|
||||
qdel(src)
|
||||
|
||||
/obj/item/weapon/a_gift/attack_self(mob/M as mob)
|
||||
var/gift_type = pick(/obj/item/weapon/sord,
|
||||
/obj/item/weapon/storage/wallet,
|
||||
/obj/item/weapon/storage/photo_album,
|
||||
/obj/item/weapon/storage/box/snappops,
|
||||
/obj/item/weapon/storage/fancy/crayons,
|
||||
/obj/item/weapon/storage/belt/champion,
|
||||
/obj/item/weapon/soap/deluxe,
|
||||
/obj/item/weapon/pickaxe/silver,
|
||||
/obj/item/weapon/pen/invisible,
|
||||
/obj/item/weapon/lipstick/random,
|
||||
/obj/item/weapon/grenade/smokebomb,
|
||||
/obj/item/weapon/grown/corncob,
|
||||
/obj/item/weapon/poster/random_contraband,
|
||||
/obj/item/weapon/bikehorn,
|
||||
/obj/item/weapon/beach_ball,
|
||||
/obj/item/weapon/beach_ball/holoball,
|
||||
/obj/item/weapon/banhammer,
|
||||
/obj/item/a_gift/attack_self(mob/M as mob)
|
||||
var/gift_type = pick(/obj/item/sord,
|
||||
/obj/item/storage/wallet,
|
||||
/obj/item/storage/photo_album,
|
||||
/obj/item/storage/box/snappops,
|
||||
/obj/item/storage/fancy/crayons,
|
||||
/obj/item/storage/belt/champion,
|
||||
/obj/item/soap/deluxe,
|
||||
/obj/item/pickaxe/silver,
|
||||
/obj/item/pen/invisible,
|
||||
/obj/item/lipstick/random,
|
||||
/obj/item/grenade/smokebomb,
|
||||
/obj/item/grown/corncob,
|
||||
/obj/item/poster/random_contraband,
|
||||
/obj/item/bikehorn,
|
||||
/obj/item/beach_ball,
|
||||
/obj/item/beach_ball/holoball,
|
||||
/obj/item/banhammer,
|
||||
/obj/item/toy/balloon,
|
||||
/obj/item/toy/blink,
|
||||
/obj/item/weapon/gun/projectile/shotgun/toy/crossbow,
|
||||
/obj/item/weapon/gun/projectile/revolver/capgun,
|
||||
/obj/item/gun/projectile/shotgun/toy/crossbow,
|
||||
/obj/item/gun/projectile/revolver/capgun,
|
||||
/obj/item/toy/katana,
|
||||
/obj/random/mech,
|
||||
/obj/item/toy/spinningtoy,
|
||||
/obj/item/toy/sword,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/ambrosia/deus,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/ambrosia/vulgaris,
|
||||
/obj/item/reagent_containers/food/snacks/grown/ambrosia/deus,
|
||||
/obj/item/reagent_containers/food/snacks/grown/ambrosia/vulgaris,
|
||||
/obj/item/device/paicard,
|
||||
/obj/item/device/instrument/violin,
|
||||
/obj/item/device/instrument/guitar,
|
||||
/obj/item/weapon/storage/belt/utility/full,
|
||||
/obj/item/storage/belt/utility/full,
|
||||
/obj/item/clothing/accessory/horrible,
|
||||
/obj/random/carp_plushie,
|
||||
/obj/random/plushie,
|
||||
@@ -100,12 +100,12 @@
|
||||
/obj/item/toy/owl,
|
||||
/obj/item/toy/griffin,
|
||||
/obj/item/clothing/head/blob,
|
||||
/obj/item/weapon/id_decal/gold,
|
||||
/obj/item/weapon/id_decal/silver,
|
||||
/obj/item/weapon/id_decal/prisoner,
|
||||
/obj/item/weapon/id_decal/centcom,
|
||||
/obj/item/weapon/id_decal/emag,
|
||||
/obj/item/weapon/spellbook/oneuse/fake_gib,
|
||||
/obj/item/id_decal/gold,
|
||||
/obj/item/id_decal/silver,
|
||||
/obj/item/id_decal/prisoner,
|
||||
/obj/item/id_decal/centcom,
|
||||
/obj/item/id_decal/emag,
|
||||
/obj/item/spellbook/oneuse/fake_gib,
|
||||
/obj/item/toy/foamblade,
|
||||
/obj/item/toy/flash,
|
||||
/obj/item/toy/minigibber,
|
||||
@@ -113,8 +113,8 @@
|
||||
/obj/item/toy/cards/deck,
|
||||
/obj/item/toy/AI,
|
||||
/obj/item/clothing/under/syndicate/tacticool,
|
||||
/obj/item/weapon/storage/box/fakesyndiesuit,
|
||||
/obj/item/weapon/gun/projectile/shotgun/toy/tommygun,
|
||||
/obj/item/storage/box/fakesyndiesuit,
|
||||
/obj/item/gun/projectile/shotgun/toy/tommygun,
|
||||
/obj/item/stack/tile/fakespace/loaded,
|
||||
)
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
|
||||
|
||||
|
||||
/obj/item/weapon/grenade/gas
|
||||
/obj/item/grenade/gas
|
||||
name = "Plasma Fire Grenade"
|
||||
desc = "A compressed plasma grenade, used to start horrific plasma fires."
|
||||
origin_tech = "materials=3;magnets=4;syndicate=3"
|
||||
@@ -11,14 +11,14 @@
|
||||
var/spawn_contents = SPAWN_HEAT | SPAWN_TOXINS
|
||||
var/spawn_amount = 100
|
||||
|
||||
/obj/item/weapon/grenade/gas/prime()
|
||||
/obj/item/grenade/gas/prime()
|
||||
var/turf/simulated/target_turf = get_turf(src)
|
||||
if(istype(target_turf))
|
||||
target_turf.atmos_spawn_air(spawn_contents, spawn_amount)
|
||||
target_turf.air_update_turf()
|
||||
qdel(src)
|
||||
|
||||
/obj/item/weapon/grenade/gas/knockout
|
||||
/obj/item/grenade/gas/knockout
|
||||
name = "Knockout Grenade"
|
||||
desc = "A grenade that completely removes all air and heat from its detonation area."
|
||||
spawn_contents = SPAWN_20C | SPAWN_N2O
|
||||
@@ -1,7 +1,7 @@
|
||||
|
||||
var/turf/T
|
||||
|
||||
/obj/item/weapon/grenade/bananade
|
||||
/obj/item/grenade/bananade
|
||||
name = "bananade"
|
||||
desc = "A yellow grenade."
|
||||
w_class = WEIGHT_CLASS_SMALL
|
||||
@@ -9,9 +9,9 @@ var/turf/T
|
||||
icon_state = "banana"
|
||||
item_state = "flashbang"
|
||||
var/deliveryamt = 8
|
||||
var/spawner_type = /obj/item/weapon/grown/bananapeel
|
||||
var/spawner_type = /obj/item/grown/bananapeel
|
||||
|
||||
/obj/item/weapon/grenade/bananade/prime()
|
||||
/obj/item/grenade/bananade/prime()
|
||||
if(spawner_type && deliveryamt)
|
||||
// Make a quick flash
|
||||
var/turf/T = get_turf(src)
|
||||
@@ -30,24 +30,24 @@ var/turf/T
|
||||
qdel(src)
|
||||
return
|
||||
|
||||
/obj/item/weapon/grenade/bananade/casing
|
||||
/obj/item/grenade/bananade/casing
|
||||
name = "bananium casing"
|
||||
desc = "A grenade casing made of bananium."
|
||||
icon_state = "banana_casing"
|
||||
var/fillamt = 0
|
||||
|
||||
|
||||
/obj/item/weapon/grenade/bananade/casing/attackby(var/obj/item/I, mob/user as mob, params)
|
||||
if(istype(I, /obj/item/weapon/grown/bananapeel))
|
||||
/obj/item/grenade/bananade/casing/attackby(var/obj/item/I, mob/user as mob, params)
|
||||
if(istype(I, /obj/item/grown/bananapeel))
|
||||
if(fillamt < 9)
|
||||
to_chat(usr, "<span class='notice'>You add another banana peel to the assembly.</span>")
|
||||
fillamt += 1
|
||||
qdel(I)
|
||||
else
|
||||
to_chat(usr, "<span class='notice'>The bananade is full, screwdriver it shut to lock it down.</span>")
|
||||
if(istype(I, /obj/item/weapon/screwdriver))
|
||||
if(istype(I, /obj/item/screwdriver))
|
||||
if(fillamt)
|
||||
var/obj/item/weapon/grenade/bananade/G = new /obj/item/weapon/grenade/bananade
|
||||
var/obj/item/grenade/bananade/G = new /obj/item/grenade/bananade
|
||||
user.unEquip(src)
|
||||
user.put_in_hands(G)
|
||||
G.deliveryamt = src.fillamt
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
#define WIRED 1
|
||||
#define READY 2
|
||||
|
||||
/obj/item/weapon/grenade/chem_grenade
|
||||
/obj/item/grenade/chem_grenade
|
||||
name = "grenade casing"
|
||||
desc = "A do it yourself grenade casing!"
|
||||
icon_state = "chemg"
|
||||
@@ -14,7 +14,7 @@
|
||||
var/prime_sound = 'sound/items/Screwdriver2.ogg'
|
||||
var/stage = EMPTY
|
||||
var/list/beakers = list()
|
||||
var/list/allowed_containers = list(/obj/item/weapon/reagent_containers/glass/beaker, /obj/item/weapon/reagent_containers/glass/bottle)
|
||||
var/list/allowed_containers = list(/obj/item/reagent_containers/glass/beaker, /obj/item/reagent_containers/glass/bottle)
|
||||
var/affected_area = 3
|
||||
var/obj/item/device/assembly_holder/nadeassembly = null
|
||||
var/label = null
|
||||
@@ -25,24 +25,24 @@
|
||||
var/contained = "" // For logging
|
||||
var/cores = "" // Also for logging
|
||||
|
||||
/obj/item/weapon/grenade/chem_grenade/New()
|
||||
/obj/item/grenade/chem_grenade/New()
|
||||
create_reagents(1000)
|
||||
if(payload_name)
|
||||
payload_name += " " // formatting, ignore me
|
||||
update_icon()
|
||||
|
||||
/obj/item/weapon/grenade/chem_grenade/Destroy()
|
||||
/obj/item/grenade/chem_grenade/Destroy()
|
||||
QDEL_NULL(nadeassembly)
|
||||
QDEL_LIST(beakers)
|
||||
return ..()
|
||||
|
||||
/obj/item/weapon/grenade/chem_grenade/examine(mob/user)
|
||||
/obj/item/grenade/chem_grenade/examine(mob/user)
|
||||
..(user)
|
||||
display_timer = (stage == READY && !nadeassembly) //show/hide the timer based on assembly state
|
||||
|
||||
|
||||
|
||||
/obj/item/weapon/grenade/chem_grenade/proc/get_trigger()
|
||||
/obj/item/grenade/chem_grenade/proc/get_trigger()
|
||||
if(!nadeassembly) return null
|
||||
for(var/obj/O in list(nadeassembly.a_left, nadeassembly.a_right))
|
||||
if(!O || istype(O,/obj/item/device/assembly/igniter)) continue
|
||||
@@ -50,7 +50,7 @@
|
||||
return null
|
||||
|
||||
|
||||
/obj/item/weapon/grenade/chem_grenade/proc/update_overlays()
|
||||
/obj/item/grenade/chem_grenade/proc/update_overlays()
|
||||
underlays = list()
|
||||
if(nadeassembly)
|
||||
underlays += "[nadeassembly.a_left.icon_state]_left"
|
||||
@@ -60,7 +60,7 @@
|
||||
for(var/O in nadeassembly.a_right.attached_overlays)
|
||||
underlays += "[O]_r"
|
||||
|
||||
/obj/item/weapon/grenade/chem_grenade/update_icon()
|
||||
/obj/item/grenade/chem_grenade/update_icon()
|
||||
if(nadeassembly)
|
||||
icon = 'icons/obj/assemblies/new_assemblies.dmi'
|
||||
icon_state = bomb_state
|
||||
@@ -91,7 +91,7 @@
|
||||
name = payload_name + "grenade" + label
|
||||
|
||||
|
||||
/obj/item/weapon/grenade/chem_grenade/attack_self(mob/user)
|
||||
/obj/item/grenade/chem_grenade/attack_self(mob/user)
|
||||
if(stage == READY && !active)
|
||||
var/turf/bombturf = get_turf(src)
|
||||
var/area/A = get_area(bombturf)
|
||||
@@ -113,15 +113,15 @@
|
||||
spawn(det_time)
|
||||
prime()
|
||||
|
||||
/obj/item/weapon/grenade/hit_reaction(mob/living/carbon/human/owner, attack_text, final_block_chance, damage, attack_type)
|
||||
/obj/item/grenade/hit_reaction(mob/living/carbon/human/owner, attack_text, final_block_chance, damage, attack_type)
|
||||
if(damage && attack_type == PROJECTILE_ATTACK && prob(15))
|
||||
owner.visible_message("<span class='danger'>[attack_text] hits [owner]'s [src], setting it off! What a shot!</span>")
|
||||
prime()
|
||||
return 1 //It hit the grenade, not them
|
||||
|
||||
/obj/item/weapon/grenade/chem_grenade/attackby(obj/item/I, mob/user, params)
|
||||
if(istype(I,/obj/item/weapon/hand_labeler))
|
||||
var/obj/item/weapon/hand_labeler/HL = I
|
||||
/obj/item/grenade/chem_grenade/attackby(obj/item/I, mob/user, params)
|
||||
if(istype(I,/obj/item/hand_labeler))
|
||||
var/obj/item/hand_labeler/HL = I
|
||||
if(length(HL.label))
|
||||
label = " ([HL.label])"
|
||||
return 0
|
||||
@@ -131,7 +131,7 @@
|
||||
update_icon()
|
||||
to_chat(user, "You remove the label from [src].")
|
||||
return 1
|
||||
if(istype(I, /obj/item/weapon/screwdriver))
|
||||
if(istype(I, /obj/item/screwdriver))
|
||||
if(stage == WIRED)
|
||||
if(beakers.len)
|
||||
to_chat(user, "<span class='notice'>You lock the assembly.</span>")
|
||||
@@ -200,12 +200,12 @@
|
||||
to_chat(user, "<span class='notice'>You rig [src].</span>")
|
||||
update_icon()
|
||||
|
||||
else if(stage == READY && istype(I, /obj/item/weapon/wirecutters))
|
||||
else if(stage == READY && istype(I, /obj/item/wirecutters))
|
||||
to_chat(user, "<span class='notice'>You unlock the assembly.</span>")
|
||||
stage = WIRED
|
||||
update_icon()
|
||||
|
||||
else if(stage == WIRED && istype(I, /obj/item/weapon/wrench))
|
||||
else if(stage == WIRED && istype(I, /obj/item/wrench))
|
||||
to_chat(user, "<span class='notice'>You open the grenade and remove the contents.</span>")
|
||||
stage = EMPTY
|
||||
payload_name = null
|
||||
@@ -222,56 +222,56 @@
|
||||
|
||||
|
||||
//assembly stuff
|
||||
/obj/item/weapon/grenade/chem_grenade/receive_signal()
|
||||
/obj/item/grenade/chem_grenade/receive_signal()
|
||||
prime()
|
||||
|
||||
/obj/item/weapon/grenade/chem_grenade/HasProximity(atom/movable/AM)
|
||||
/obj/item/grenade/chem_grenade/HasProximity(atom/movable/AM)
|
||||
if(nadeassembly)
|
||||
nadeassembly.HasProximity(AM)
|
||||
|
||||
/obj/item/weapon/grenade/chem_grenade/Move() // prox sensors and infrared care about this
|
||||
/obj/item/grenade/chem_grenade/Move() // prox sensors and infrared care about this
|
||||
..()
|
||||
if(nadeassembly)
|
||||
nadeassembly.process_movement()
|
||||
|
||||
/obj/item/weapon/grenade/chem_grenade/pickup()
|
||||
/obj/item/grenade/chem_grenade/pickup()
|
||||
..()
|
||||
if(nadeassembly)
|
||||
nadeassembly.process_movement()
|
||||
|
||||
/obj/item/weapon/grenade/chem_grenade/Crossed(atom/movable/AM)
|
||||
/obj/item/grenade/chem_grenade/Crossed(atom/movable/AM)
|
||||
if(nadeassembly)
|
||||
nadeassembly.Crossed(AM)
|
||||
|
||||
/obj/item/weapon/grenade/chem_grenade/on_found(mob/finder)
|
||||
/obj/item/grenade/chem_grenade/on_found(mob/finder)
|
||||
if(nadeassembly)
|
||||
nadeassembly.on_found(finder)
|
||||
|
||||
/obj/item/weapon/grenade/chem_grenade/hear_talk(mob/living/M, msg)
|
||||
/obj/item/grenade/chem_grenade/hear_talk(mob/living/M, msg)
|
||||
if(nadeassembly)
|
||||
nadeassembly.hear_talk(M, msg)
|
||||
|
||||
/obj/item/weapon/grenade/chem_grenade/hear_message(mob/living/M, msg)
|
||||
/obj/item/grenade/chem_grenade/hear_message(mob/living/M, msg)
|
||||
if(nadeassembly)
|
||||
nadeassembly.hear_message(M, msg)
|
||||
|
||||
/obj/item/weapon/grenade/chem_grenade/Bump()
|
||||
/obj/item/grenade/chem_grenade/Bump()
|
||||
..()
|
||||
if(nadeassembly)
|
||||
nadeassembly.process_movement()
|
||||
|
||||
/obj/item/weapon/grenade/chem_grenade/throw_impact() // called when a throw stops
|
||||
/obj/item/grenade/chem_grenade/throw_impact() // called when a throw stops
|
||||
..()
|
||||
if(nadeassembly)
|
||||
nadeassembly.process_movement()
|
||||
|
||||
|
||||
/obj/item/weapon/grenade/chem_grenade/prime()
|
||||
/obj/item/grenade/chem_grenade/prime()
|
||||
if(stage != READY)
|
||||
return
|
||||
|
||||
var/list/datum/reagents/reactants = list()
|
||||
for(var/obj/item/weapon/reagent_containers/glass/G in beakers)
|
||||
for(var/obj/item/reagent_containers/glass/G in beakers)
|
||||
reactants += G.reagents
|
||||
|
||||
if(!chem_splash(get_turf(src), affected_area, reactants, ignition_temp, threatscale) && !no_splash)
|
||||
@@ -296,7 +296,7 @@
|
||||
|
||||
qdel(src)
|
||||
|
||||
/obj/item/weapon/grenade/chem_grenade/proc/CreateDefaultTrigger(var/typekey)
|
||||
/obj/item/grenade/chem_grenade/proc/CreateDefaultTrigger(var/typekey)
|
||||
if(ispath(typekey,/obj/item/device/assembly))
|
||||
nadeassembly = new(src)
|
||||
nadeassembly.a_left = new /obj/item/device/assembly/igniter(nadeassembly)
|
||||
@@ -314,25 +314,25 @@
|
||||
|
||||
|
||||
//Large chem grenades accept slime cores and use the appropriately.
|
||||
/obj/item/weapon/grenade/chem_grenade/large
|
||||
/obj/item/grenade/chem_grenade/large
|
||||
name = "large grenade casing"
|
||||
desc = "A custom made large grenade. It affects a larger area."
|
||||
icon_state = "large_grenade"
|
||||
bomb_state = "largebomb"
|
||||
allowed_containers = list(/obj/item/weapon/reagent_containers/glass,/obj/item/weapon/reagent_containers/food/condiment,
|
||||
/obj/item/weapon/reagent_containers/food/drinks)
|
||||
allowed_containers = list(/obj/item/reagent_containers/glass,/obj/item/reagent_containers/food/condiment,
|
||||
/obj/item/reagent_containers/food/drinks)
|
||||
origin_tech = "combat=3;engineering=3"
|
||||
affected_area = 5
|
||||
ignition_temp = 25 // Large grenades are slightly more effective at setting off heat-sensitive mixtures than smaller grenades.
|
||||
threatscale = 1.1 // 10% more effective.
|
||||
|
||||
/obj/item/weapon/grenade/chem_grenade/large/prime()
|
||||
/obj/item/grenade/chem_grenade/large/prime()
|
||||
if(stage != READY)
|
||||
return
|
||||
|
||||
for(var/obj/item/slime_extract/S in beakers)
|
||||
if(S.Uses)
|
||||
for(var/obj/item/weapon/reagent_containers/glass/G in beakers)
|
||||
for(var/obj/item/reagent_containers/glass/G in beakers)
|
||||
G.reagents.trans_to(S, G.reagents.total_volume)
|
||||
|
||||
//If there is still a core (sometimes it's used up)
|
||||
@@ -341,7 +341,7 @@
|
||||
|
||||
if(S)
|
||||
if(S.reagents && S.reagents.total_volume)
|
||||
for(var/obj/item/weapon/reagent_containers/glass/G in beakers)
|
||||
for(var/obj/item/reagent_containers/glass/G in beakers)
|
||||
S.reagents.trans_to(G, S.reagents.total_volume)
|
||||
else
|
||||
S.forceMove(get_turf(src))
|
||||
@@ -352,7 +352,7 @@
|
||||
//I tried to just put it in the allowed_containers list but
|
||||
//if you do that it must have reagents. If you're going to
|
||||
//make a special case you might as well do it explicitly. -Sayu
|
||||
/obj/item/weapon/grenade/chem_grenade/large/attackby(obj/item/I, mob/user, params)
|
||||
/obj/item/grenade/chem_grenade/large/attackby(obj/item/I, mob/user, params)
|
||||
if(istype(I, /obj/item/slime_extract) && stage == WIRED)
|
||||
to_chat(user, "<span class='notice'>You add [I] to the assembly.</span>")
|
||||
user.drop_item()
|
||||
@@ -361,14 +361,14 @@
|
||||
else
|
||||
return ..()
|
||||
|
||||
/obj/item/weapon/grenade/chem_grenade/cryo // Intended for rare cryogenic mixes. Cools the area moderately upon detonation.
|
||||
/obj/item/grenade/chem_grenade/cryo // Intended for rare cryogenic mixes. Cools the area moderately upon detonation.
|
||||
name = "cryo grenade"
|
||||
desc = "A custom made cryogenic grenade. It rapidly cools its contents upon detonation."
|
||||
icon_state = "cryog"
|
||||
affected_area = 2
|
||||
ignition_temp = -100
|
||||
|
||||
/obj/item/weapon/grenade/chem_grenade/pyro // Intended for pyrotechnical mixes. Produces a small fire upon detonation, igniting potentially flammable mixtures.
|
||||
/obj/item/grenade/chem_grenade/pyro // Intended for pyrotechnical mixes. Produces a small fire upon detonation, igniting potentially flammable mixtures.
|
||||
name = "pyro grenade"
|
||||
desc = "A custom made pyrotechnical grenade. It heats up and ignites its contents upon detonation."
|
||||
icon_state = "pyrog"
|
||||
@@ -376,14 +376,14 @@
|
||||
affected_area = 3
|
||||
ignition_temp = 500 // This is enough to expose a hotspot.
|
||||
|
||||
/obj/item/weapon/grenade/chem_grenade/adv_release // Intended for weaker, but longer lasting effects. Could have some interesting uses.
|
||||
/obj/item/grenade/chem_grenade/adv_release // Intended for weaker, but longer lasting effects. Could have some interesting uses.
|
||||
name = "advanced release grenade"
|
||||
desc = "A custom made advanced release grenade. It is able to be detonated more than once. Can be configured using a multitool."
|
||||
icon_state = "timeg"
|
||||
origin_tech = "combat=3;engineering=4"
|
||||
var/unit_spread = 10 // Amount of units per repeat. Can be altered with a multitool.
|
||||
|
||||
/obj/item/weapon/grenade/chem_grenade/adv_release/attackby(obj/item/I, mob/user, params)
|
||||
/obj/item/grenade/chem_grenade/adv_release/attackby(obj/item/I, mob/user, params)
|
||||
if(ismultitool(I))
|
||||
switch(unit_spread)
|
||||
if(0 to 24)
|
||||
@@ -396,12 +396,12 @@
|
||||
return
|
||||
..()
|
||||
|
||||
/obj/item/weapon/grenade/chem_grenade/adv_release/prime()
|
||||
/obj/item/grenade/chem_grenade/adv_release/prime()
|
||||
if(stage != READY)
|
||||
return
|
||||
|
||||
var/total_volume = 0
|
||||
for(var/obj/item/weapon/reagent_containers/RC in beakers)
|
||||
for(var/obj/item/reagent_containers/RC in beakers)
|
||||
total_volume += RC.reagents.total_volume
|
||||
if(!total_volume)
|
||||
qdel(src)
|
||||
@@ -410,7 +410,7 @@
|
||||
var/fraction = unit_spread/total_volume
|
||||
var/datum/reagents/reactants = new(unit_spread)
|
||||
reactants.my_atom = src
|
||||
for(var/obj/item/weapon/reagent_containers/RC in beakers)
|
||||
for(var/obj/item/reagent_containers/RC in beakers)
|
||||
RC.reagents.trans_to(reactants, RC.reagents.total_volume*fraction, threatscale, 1, 1)
|
||||
chem_splash(get_turf(src), affected_area, list(reactants), ignition_temp, threatscale)
|
||||
|
||||
@@ -427,15 +427,15 @@
|
||||
var/area/DA = get_area(DT)
|
||||
log_game("A grenade detonated at [DA.name] ([DT.x], [DT.y], [DT.z])")
|
||||
|
||||
/obj/item/weapon/grenade/chem_grenade/metalfoam
|
||||
/obj/item/grenade/chem_grenade/metalfoam
|
||||
payload_name = "metal foam"
|
||||
desc = "Used for emergency sealing of air breaches."
|
||||
stage = READY
|
||||
|
||||
New()
|
||||
..()
|
||||
var/obj/item/weapon/reagent_containers/glass/beaker/B1 = new(src)
|
||||
var/obj/item/weapon/reagent_containers/glass/beaker/B2 = new(src)
|
||||
var/obj/item/reagent_containers/glass/beaker/B1 = new(src)
|
||||
var/obj/item/reagent_containers/glass/beaker/B2 = new(src)
|
||||
|
||||
B1.reagents.add_reagent("aluminum", 30)
|
||||
B2.reagents.add_reagent("fluorosurfactant", 10)
|
||||
@@ -446,15 +446,15 @@
|
||||
update_icon()
|
||||
|
||||
|
||||
/obj/item/weapon/grenade/chem_grenade/incendiary
|
||||
/obj/item/grenade/chem_grenade/incendiary
|
||||
payload_name = "incendiary"
|
||||
desc = "Used for clearing rooms of living things."
|
||||
stage = READY
|
||||
|
||||
New()
|
||||
..()
|
||||
var/obj/item/weapon/reagent_containers/glass/beaker/large/B1 = new(src)
|
||||
var/obj/item/weapon/reagent_containers/glass/beaker/large/B2 = new(src)
|
||||
var/obj/item/reagent_containers/glass/beaker/large/B1 = new(src)
|
||||
var/obj/item/reagent_containers/glass/beaker/large/B2 = new(src)
|
||||
|
||||
B1.reagents.add_reagent("phosphorus", 25)
|
||||
B2.reagents.add_reagent("plasma", 25)
|
||||
@@ -466,15 +466,15 @@
|
||||
update_icon()
|
||||
|
||||
|
||||
/obj/item/weapon/grenade/chem_grenade/antiweed
|
||||
/obj/item/grenade/chem_grenade/antiweed
|
||||
payload_name = "weed killer"
|
||||
desc = "Used for purging large areas of invasive plant species. Contents under pressure. Do not directly inhale contents."
|
||||
stage = READY
|
||||
|
||||
New()
|
||||
..()
|
||||
var/obj/item/weapon/reagent_containers/glass/beaker/B1 = new(src)
|
||||
var/obj/item/weapon/reagent_containers/glass/beaker/B2 = new(src)
|
||||
var/obj/item/reagent_containers/glass/beaker/B1 = new(src)
|
||||
var/obj/item/reagent_containers/glass/beaker/B2 = new(src)
|
||||
|
||||
B1.reagents.add_reagent("atrazine", 30)
|
||||
B1.reagents.add_reagent("potassium", 20)
|
||||
@@ -487,15 +487,15 @@
|
||||
update_icon()
|
||||
|
||||
|
||||
/obj/item/weapon/grenade/chem_grenade/cleaner
|
||||
/obj/item/grenade/chem_grenade/cleaner
|
||||
payload_name = "cleaner"
|
||||
desc = "BLAM!-brand foaming space cleaner. In a special applicator for rapid cleaning of wide areas."
|
||||
stage = READY
|
||||
|
||||
New()
|
||||
..()
|
||||
var/obj/item/weapon/reagent_containers/glass/beaker/B1 = new(src)
|
||||
var/obj/item/weapon/reagent_containers/glass/beaker/B2 = new(src)
|
||||
var/obj/item/reagent_containers/glass/beaker/B1 = new(src)
|
||||
var/obj/item/reagent_containers/glass/beaker/B2 = new(src)
|
||||
|
||||
B1.reagents.add_reagent("fluorosurfactant", 40)
|
||||
B2.reagents.add_reagent("cleaner", 10)
|
||||
@@ -506,15 +506,15 @@
|
||||
update_icon()
|
||||
|
||||
|
||||
/obj/item/weapon/grenade/chem_grenade/teargas
|
||||
/obj/item/grenade/chem_grenade/teargas
|
||||
payload_name = "teargas"
|
||||
desc = "Used for nonlethal riot control. Contents under pressure. Do not directly inhale contents."
|
||||
stage = READY
|
||||
|
||||
New()
|
||||
..()
|
||||
var/obj/item/weapon/reagent_containers/glass/beaker/B1 = new(src)
|
||||
var/obj/item/weapon/reagent_containers/glass/beaker/B2 = new(src)
|
||||
var/obj/item/reagent_containers/glass/beaker/B1 = new(src)
|
||||
var/obj/item/reagent_containers/glass/beaker/B2 = new(src)
|
||||
|
||||
B1.reagents.add_reagent("condensedcapsaicin", 25)
|
||||
B1.reagents.add_reagent("potassium", 25)
|
||||
@@ -525,15 +525,15 @@
|
||||
beakers += B2
|
||||
update_icon()
|
||||
|
||||
/obj/item/weapon/grenade/chem_grenade/facid
|
||||
/obj/item/grenade/chem_grenade/facid
|
||||
name = "acid grenade"
|
||||
desc = "Used for melting armoured opponents."
|
||||
stage = READY
|
||||
|
||||
/obj/item/weapon/grenade/chem_grenade/facid/New()
|
||||
/obj/item/grenade/chem_grenade/facid/New()
|
||||
..()
|
||||
var/obj/item/weapon/reagent_containers/glass/beaker/bluespace/B1 = new(src)
|
||||
var/obj/item/weapon/reagent_containers/glass/beaker/bluespace/B2 = new(src)
|
||||
var/obj/item/reagent_containers/glass/beaker/bluespace/B1 = new(src)
|
||||
var/obj/item/reagent_containers/glass/beaker/bluespace/B2 = new(src)
|
||||
|
||||
B1.reagents.add_reagent("facid", 280)
|
||||
B1.reagents.add_reagent("potassium", 20)
|
||||
@@ -545,15 +545,15 @@
|
||||
beakers += B2
|
||||
update_icon()
|
||||
|
||||
/obj/item/weapon/grenade/chem_grenade/saringas
|
||||
/obj/item/grenade/chem_grenade/saringas
|
||||
payload_name = "saringas"
|
||||
desc = "Contains sarin gas; extremely deadly and fast acting; use with extreme caution."
|
||||
stage = READY
|
||||
|
||||
New()
|
||||
..()
|
||||
var/obj/item/weapon/reagent_containers/glass/beaker/B1 = new(src)
|
||||
var/obj/item/weapon/reagent_containers/glass/beaker/B2 = new(src)
|
||||
var/obj/item/reagent_containers/glass/beaker/B1 = new(src)
|
||||
var/obj/item/reagent_containers/glass/beaker/B2 = new(src)
|
||||
|
||||
B1.reagents.add_reagent("sarin", 25)
|
||||
B1.reagents.add_reagent("potassium", 25)
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/obj/item/weapon/grenade/clown_grenade
|
||||
/obj/item/grenade/clown_grenade
|
||||
name = "Banana Grenade"
|
||||
desc = "HONK! brand Bananas. In a special applicator for rapid slipping of wide areas."
|
||||
icon_state = "banana"
|
||||
@@ -23,7 +23,7 @@
|
||||
for(var/direction in alldirs)
|
||||
for(i = 0; i < 2; i++)
|
||||
number++
|
||||
var/obj/item/weapon/grown/bananapeel/traitorpeel/peel = new /obj/item/weapon/grown/bananapeel/traitorpeel(get_turf(src.loc))
|
||||
var/obj/item/grown/bananapeel/traitorpeel/peel = new /obj/item/grown/bananapeel/traitorpeel(get_turf(src.loc))
|
||||
/* var/direction = pick(alldirs)
|
||||
var/spaces = pick(1;150, 2)
|
||||
var/a = 0
|
||||
@@ -35,7 +35,7 @@
|
||||
step(peel,direction)
|
||||
else
|
||||
step(peel,direction)
|
||||
new /obj/item/weapon/grown/bananapeel/traitorpeel(get_turf(src.loc))
|
||||
new /obj/item/grown/bananapeel/traitorpeel(get_turf(src.loc))
|
||||
qdel(src)
|
||||
return
|
||||
/*
|
||||
@@ -46,10 +46,10 @@
|
||||
return
|
||||
if(locate(/obj/structure/window) in T)
|
||||
return
|
||||
new /obj/item/weapon/grown/bananapeel/traitorpeel(T)
|
||||
new /obj/item/grown/bananapeel/traitorpeel(T)
|
||||
*/
|
||||
|
||||
/obj/item/weapon/grown/bananapeel/traitorpeel
|
||||
/obj/item/grown/bananapeel/traitorpeel
|
||||
trip_stun = 0
|
||||
trip_weaken = 7
|
||||
trip_tiles = 4
|
||||
@@ -58,14 +58,14 @@
|
||||
trip_chance = 100
|
||||
|
||||
|
||||
/obj/item/weapon/grown/bananapeel/traitorpeel/on_trip(mob/living/carbon/human/H)
|
||||
/obj/item/grown/bananapeel/traitorpeel/on_trip(mob/living/carbon/human/H)
|
||||
. = ..()
|
||||
if(.)
|
||||
to_chat(H, "<span class='warning'>Your feet feel like they're on fire!</span>")
|
||||
H.take_overall_damage(0, rand(2,8))
|
||||
H.take_organ_damage(2) // Was 5 -- TLE
|
||||
|
||||
/obj/item/weapon/grown/bananapeel/traitorpeel/throw_impact(atom/hit_atom)
|
||||
/obj/item/grown/bananapeel/traitorpeel/throw_impact(atom/hit_atom)
|
||||
var/burned = rand(1,3)
|
||||
if(istype(hit_atom ,/mob/living))
|
||||
var/mob/living/M = hit_atom
|
||||
|
||||
@@ -1,14 +1,14 @@
|
||||
////////////////////
|
||||
//Clusterbang
|
||||
////////////////////
|
||||
/obj/item/weapon/grenade/clusterbuster
|
||||
/obj/item/grenade/clusterbuster
|
||||
desc = "Use of this weapon may constiute a war crime in your area, consult your local captain."
|
||||
name = "clusterbang"
|
||||
icon = 'icons/obj/grenade.dmi'
|
||||
icon_state = "clusterbang"
|
||||
var/payload = /obj/item/weapon/grenade/flashbang/cluster
|
||||
var/payload = /obj/item/grenade/flashbang/cluster
|
||||
|
||||
/obj/item/weapon/grenade/clusterbuster/prime()
|
||||
/obj/item/grenade/clusterbuster/prime()
|
||||
update_mob()
|
||||
var/numspawned = rand(4,8)
|
||||
var/again = 0
|
||||
@@ -19,7 +19,7 @@
|
||||
numspawned--
|
||||
|
||||
for(var/loop = again ,loop > 0, loop--)
|
||||
new /obj/item/weapon/grenade/clusterbuster/segment(loc, payload)//Creates 'segments' that launches a few more payloads
|
||||
new /obj/item/grenade/clusterbuster/segment(loc, payload)//Creates 'segments' that launches a few more payloads
|
||||
|
||||
new /obj/effect/payload_spawner(loc, payload, numspawned)//Launches payload
|
||||
|
||||
@@ -31,13 +31,13 @@
|
||||
//////////////////////
|
||||
//Clusterbang segment
|
||||
//////////////////////
|
||||
/obj/item/weapon/grenade/clusterbuster/segment
|
||||
/obj/item/grenade/clusterbuster/segment
|
||||
desc = "A smaller segment of a clusterbang. Better run."
|
||||
name = "clusterbang segment"
|
||||
icon = 'icons/obj/grenade.dmi'
|
||||
icon_state = "clusterbang_segment"
|
||||
|
||||
/obj/item/weapon/grenade/clusterbuster/segment/New(var/loc, var/payload_type = /obj/item/weapon/grenade/flashbang/cluster)
|
||||
/obj/item/grenade/clusterbuster/segment/New(var/loc, var/payload_type = /obj/item/grenade/flashbang/cluster)
|
||||
..()
|
||||
icon_state = "clusterbang_segment_active"
|
||||
payload = payload_type
|
||||
@@ -47,7 +47,7 @@
|
||||
prime()
|
||||
|
||||
|
||||
/obj/item/weapon/grenade/clusterbuster/segment/prime()
|
||||
/obj/item/grenade/clusterbuster/segment/prime()
|
||||
|
||||
new /obj/effect/payload_spawner(loc, payload, rand(4,8))
|
||||
|
||||
@@ -61,14 +61,14 @@
|
||||
/obj/effect/payload_spawner/New(var/turf/newloc,var/type, var/numspawned as num)
|
||||
|
||||
for(var/loop = numspawned ,loop > 0, loop--)
|
||||
var/obj/item/weapon/grenade/P = new type(loc)
|
||||
if(istype(P, /obj/item/weapon/grenade))
|
||||
var/obj/item/grenade/P = new type(loc)
|
||||
if(istype(P, /obj/item/grenade))
|
||||
P.active = 1
|
||||
walk_away(P,loc,rand(1,4))
|
||||
|
||||
spawn(rand(15,60))
|
||||
if(!QDELETED(P))
|
||||
if(istype(P, /obj/item/weapon/grenade))
|
||||
if(istype(P, /obj/item/grenade))
|
||||
P.prime()
|
||||
qdel(src)
|
||||
|
||||
@@ -76,200 +76,200 @@
|
||||
//////////////////////////////////
|
||||
//Custom payload clusterbusters
|
||||
/////////////////////////////////
|
||||
/obj/item/weapon/grenade/flashbang/cluster
|
||||
/obj/item/grenade/flashbang/cluster
|
||||
icon_state = "flashbang_active"
|
||||
|
||||
/obj/item/weapon/grenade/clusterbuster/emp
|
||||
/obj/item/grenade/clusterbuster/emp
|
||||
name = "Electromagnetic Storm"
|
||||
payload = /obj/item/weapon/grenade/empgrenade
|
||||
payload = /obj/item/grenade/empgrenade
|
||||
|
||||
/obj/item/weapon/grenade/clusterbuster/smoke
|
||||
/obj/item/grenade/clusterbuster/smoke
|
||||
name = "Ninja Vanish"
|
||||
payload = /obj/item/weapon/grenade/smokebomb
|
||||
payload = /obj/item/grenade/smokebomb
|
||||
|
||||
/obj/item/weapon/grenade/clusterbuster/metalfoam
|
||||
/obj/item/grenade/clusterbuster/metalfoam
|
||||
name = "Instant Concrete"
|
||||
payload = /obj/item/weapon/grenade/chem_grenade/metalfoam
|
||||
payload = /obj/item/grenade/chem_grenade/metalfoam
|
||||
|
||||
/obj/item/weapon/grenade/clusterbuster/inferno
|
||||
/obj/item/grenade/clusterbuster/inferno
|
||||
name = "Inferno"
|
||||
payload = /obj/item/weapon/grenade/chem_grenade/incendiary
|
||||
payload = /obj/item/grenade/chem_grenade/incendiary
|
||||
|
||||
/obj/item/weapon/grenade/clusterbuster/antiweed
|
||||
/obj/item/grenade/clusterbuster/antiweed
|
||||
name = "RoundDown"
|
||||
payload = /obj/item/weapon/grenade/chem_grenade/antiweed
|
||||
payload = /obj/item/grenade/chem_grenade/antiweed
|
||||
|
||||
/obj/item/weapon/grenade/clusterbuster/cleaner
|
||||
/obj/item/grenade/clusterbuster/cleaner
|
||||
name = "Mr. Proper"
|
||||
payload = /obj/item/weapon/grenade/chem_grenade/cleaner
|
||||
payload = /obj/item/grenade/chem_grenade/cleaner
|
||||
|
||||
/obj/item/weapon/grenade/clusterbuster/teargas
|
||||
/obj/item/grenade/clusterbuster/teargas
|
||||
name = "Oignon Grenade"
|
||||
payload = /obj/item/weapon/grenade/chem_grenade/teargas
|
||||
payload = /obj/item/grenade/chem_grenade/teargas
|
||||
|
||||
/obj/item/weapon/grenade/clusterbuster/facid
|
||||
/obj/item/grenade/clusterbuster/facid
|
||||
name = "Aciding Rain"
|
||||
payload = /obj/item/weapon/grenade/chem_grenade/facid
|
||||
payload = /obj/item/grenade/chem_grenade/facid
|
||||
|
||||
/obj/item/weapon/grenade/clusterbuster/syndieminibomb
|
||||
/obj/item/grenade/clusterbuster/syndieminibomb
|
||||
name = "SyndiWrath"
|
||||
payload = /obj/item/weapon/grenade/syndieminibomb
|
||||
payload = /obj/item/grenade/syndieminibomb
|
||||
|
||||
/obj/item/weapon/grenade/clusterbuster/spawner_manhacks
|
||||
/obj/item/grenade/clusterbuster/spawner_manhacks
|
||||
name = "iViscerator"
|
||||
payload = /obj/item/weapon/grenade/spawnergrenade/manhacks
|
||||
payload = /obj/item/grenade/spawnergrenade/manhacks
|
||||
|
||||
/obj/item/weapon/grenade/clusterbuster/spawner_spesscarp
|
||||
/obj/item/grenade/clusterbuster/spawner_spesscarp
|
||||
name = "Invasion of the Space Carps"
|
||||
payload = /obj/item/weapon/grenade/spawnergrenade/spesscarp
|
||||
payload = /obj/item/grenade/spawnergrenade/spesscarp
|
||||
|
||||
/obj/item/weapon/grenade/clusterbuster/monster
|
||||
/obj/item/grenade/clusterbuster/monster
|
||||
name = "Monster Megabomb"
|
||||
payload = /obj/item/weapon/grenade/chem_grenade/large/monster
|
||||
payload = /obj/item/grenade/chem_grenade/large/monster
|
||||
|
||||
/obj/item/weapon/grenade/clusterbuster/meat
|
||||
/obj/item/grenade/clusterbuster/meat
|
||||
name = "Mega Meat Grenade"
|
||||
payload = /obj/item/weapon/grenade/chem_grenade/meat
|
||||
payload = /obj/item/grenade/chem_grenade/meat
|
||||
|
||||
/obj/item/weapon/grenade/clusterbuster/nervegas
|
||||
/obj/item/grenade/clusterbuster/nervegas
|
||||
name = "Nerve Gas Clusterbomb"
|
||||
payload = /obj/item/weapon/grenade/chem_grenade/saringas
|
||||
payload = /obj/item/grenade/chem_grenade/saringas
|
||||
|
||||
/obj/item/weapon/grenade/clusterbuster/megadirt
|
||||
/obj/item/grenade/clusterbuster/megadirt
|
||||
name = "Megamaid's Revenge Grenade"
|
||||
payload = /obj/item/weapon/grenade/chem_grenade/dirt
|
||||
payload = /obj/item/grenade/chem_grenade/dirt
|
||||
|
||||
/obj/item/weapon/grenade/clusterbuster/ultima
|
||||
/obj/item/grenade/clusterbuster/ultima
|
||||
name = "Earth Shattering Kaboom"
|
||||
desc = "Contains one Aludium Q-36 explosive space modulator."
|
||||
payload = /obj/item/weapon/grenade/chem_grenade/explosion
|
||||
payload = /obj/item/grenade/chem_grenade/explosion
|
||||
|
||||
/obj/item/weapon/grenade/clusterbuster/lube
|
||||
/obj/item/grenade/clusterbuster/lube
|
||||
name = "Newton's First Law"
|
||||
desc = "An object in motion remains in motion."
|
||||
payload = /obj/item/weapon/grenade/chem_grenade/lube
|
||||
payload = /obj/item/grenade/chem_grenade/lube
|
||||
|
||||
/obj/item/weapon/grenade/clusterbuster/hippie
|
||||
/obj/item/grenade/clusterbuster/hippie
|
||||
name = "Hippie Grenade"
|
||||
desc = "Almost as good as the summer of '69."
|
||||
payload = /obj/item/weapon/grenade/chem_grenade/drugs
|
||||
payload = /obj/item/grenade/chem_grenade/drugs
|
||||
|
||||
/obj/item/weapon/grenade/clusterbuster/holy
|
||||
/obj/item/grenade/clusterbuster/holy
|
||||
name = "Purification Grenade"
|
||||
desc = "Blessed excessively."
|
||||
payload = /obj/item/weapon/grenade/chem_grenade/holywater
|
||||
payload = /obj/item/grenade/chem_grenade/holywater
|
||||
|
||||
/obj/item/weapon/grenade/clusterbuster/hellwater
|
||||
/obj/item/grenade/clusterbuster/hellwater
|
||||
name = "Righteous Fury"
|
||||
desc = "It's righteous, not badminnery."
|
||||
payload = /obj/item/weapon/grenade/chem_grenade/hellwater
|
||||
payload = /obj/item/grenade/chem_grenade/hellwater
|
||||
|
||||
/obj/item/weapon/grenade/clusterbuster/booze
|
||||
/obj/item/grenade/clusterbuster/booze
|
||||
name = "Booze Grenade"
|
||||
payload = /obj/item/weapon/reagent_containers/food/drinks/bottle/random_drink
|
||||
payload = /obj/item/reagent_containers/food/drinks/bottle/random_drink
|
||||
|
||||
/obj/item/weapon/grenade/clusterbuster/honk
|
||||
/obj/item/grenade/clusterbuster/honk
|
||||
name = "Mega Honk Grenade"
|
||||
payload = /obj/item/weapon/grown/bananapeel
|
||||
payload = /obj/item/grown/bananapeel
|
||||
|
||||
/obj/item/weapon/grenade/clusterbuster/honk_evil
|
||||
/obj/item/grenade/clusterbuster/honk_evil
|
||||
name = "Evil Mega Honk Grenade"
|
||||
payload = /obj/item/weapon/grenade/clown_grenade
|
||||
payload = /obj/item/grenade/clown_grenade
|
||||
|
||||
/obj/item/weapon/grenade/clusterbuster/xmas
|
||||
/obj/item/grenade/clusterbuster/xmas
|
||||
name = "Christmas Miracle"
|
||||
payload = /obj/item/weapon/a_gift
|
||||
payload = /obj/item/a_gift
|
||||
|
||||
/obj/item/weapon/grenade/clusterbuster/dirt
|
||||
/obj/item/grenade/clusterbuster/dirt
|
||||
name = "Megamaid's Job Security Grenade"
|
||||
payload = /obj/effect/decal/cleanable/random
|
||||
|
||||
/obj/item/weapon/grenade/clusterbuster/apocalypsefake
|
||||
/obj/item/grenade/clusterbuster/apocalypsefake
|
||||
name = "Fun Bomb"
|
||||
desc = "Not like the other bomb."
|
||||
payload = /obj/item/toy/spinningtoy
|
||||
|
||||
/obj/item/weapon/grenade/clusterbuster/apocalypse
|
||||
/obj/item/grenade/clusterbuster/apocalypse
|
||||
name = "Apocalypse Bomb"
|
||||
desc = "No matter what, do not EVER use this."
|
||||
payload = /obj/singularity
|
||||
|
||||
/obj/item/weapon/grenade/clusterbuster/tools
|
||||
/obj/item/grenade/clusterbuster/tools
|
||||
name = "Quick Repair Grenade"
|
||||
desc = "An assistant's every dream."
|
||||
payload = /obj/random/tool
|
||||
|
||||
/obj/item/weapon/grenade/clusterbuster/tools
|
||||
/obj/item/grenade/clusterbuster/tools
|
||||
name = "Engineering Deployment Platfom"
|
||||
desc = "For the that time when gearing up was just too hard."
|
||||
payload = /obj/random/tech_supply
|
||||
|
||||
/obj/item/weapon/grenade/clusterbuster/toys
|
||||
/obj/item/grenade/clusterbuster/toys
|
||||
name = "Toy Delivery System"
|
||||
desc = "Who needs skill at arcades anyway?"
|
||||
payload = /obj/item/toy/random
|
||||
|
||||
/obj/item/weapon/grenade/clusterbuster/banquet
|
||||
/obj/item/grenade/clusterbuster/banquet
|
||||
name = "Bork Bork Bonanza"
|
||||
desc = "Bork bork bork."
|
||||
payload = /obj/item/weapon/grenade/clusterbuster/banquet/child
|
||||
payload = /obj/item/grenade/clusterbuster/banquet/child
|
||||
|
||||
/obj/item/weapon/grenade/clusterbuster/banquet/child
|
||||
payload = /obj/item/weapon/grenade/chem_grenade/large/feast
|
||||
/obj/item/grenade/clusterbuster/banquet/child
|
||||
payload = /obj/item/grenade/chem_grenade/large/feast
|
||||
|
||||
/obj/item/weapon/grenade/clusterbuster/aviary
|
||||
/obj/item/grenade/clusterbuster/aviary
|
||||
name = "Poly-Poly Grenade"
|
||||
desc = "That's an uncomfortable number of birds."
|
||||
payload = /mob/living/simple_animal/parrot
|
||||
|
||||
/obj/item/weapon/grenade/clusterbuster/monkey
|
||||
/obj/item/grenade/clusterbuster/monkey
|
||||
name = "Barrel of Monkeys"
|
||||
desc = "Not really that much fun."
|
||||
payload = /mob/living/carbon/human/monkey
|
||||
|
||||
/obj/item/weapon/grenade/clusterbuster/fluffy
|
||||
/obj/item/grenade/clusterbuster/fluffy
|
||||
name = "Fluffy Love Bomb"
|
||||
desc = "Exactly as snuggly as it sounds."
|
||||
payload = /mob/living/simple_animal/pet/corgi/puppy
|
||||
|
||||
/obj/item/weapon/grenade/clusterbuster/fox
|
||||
/obj/item/grenade/clusterbuster/fox
|
||||
name = "Troublemaking Grenade"
|
||||
desc = "More trouble than two foxes combined."
|
||||
payload = /mob/living/simple_animal/pet/fox
|
||||
|
||||
/obj/item/weapon/grenade/clusterbuster/crab
|
||||
/obj/item/grenade/clusterbuster/crab
|
||||
name = "Crab Grenade"
|
||||
desc = "Reserved for those pesky request."
|
||||
payload = /mob/living/simple_animal/crab
|
||||
|
||||
/obj/item/weapon/grenade/clusterbuster/plasma
|
||||
/obj/item/grenade/clusterbuster/plasma
|
||||
name = "Plasma Cluster Grenade"
|
||||
desc = "For when everything needs to die in a fire."
|
||||
payload = /obj/item/weapon/grenade/gas
|
||||
payload = /obj/item/grenade/gas
|
||||
|
||||
/obj/item/weapon/grenade/clusterbuster/n2o
|
||||
/obj/item/grenade/clusterbuster/n2o
|
||||
name = "N2O Cluster Grenade"
|
||||
desc = "For when you need to knock out EVERYONE."
|
||||
payload = /obj/item/weapon/grenade/gas/knockout
|
||||
payload = /obj/item/grenade/gas/knockout
|
||||
|
||||
////////////Clusterbuster of Clusterbusters////////////
|
||||
|
||||
/obj/item/weapon/grenade/clusterbuster/mega_fox
|
||||
/obj/item/grenade/clusterbuster/mega_fox
|
||||
name = "Mega Troublemaking Grenade."
|
||||
payload = /obj/item/weapon/grenade/clusterbuster/fox
|
||||
payload = /obj/item/grenade/clusterbuster/fox
|
||||
|
||||
/obj/item/weapon/grenade/clusterbuster/mega_bang
|
||||
/obj/item/grenade/clusterbuster/mega_bang
|
||||
name = "For when stunlocking is just too short."
|
||||
payload = /obj/item/weapon/grenade/clusterbuster
|
||||
payload = /obj/item/grenade/clusterbuster
|
||||
|
||||
/obj/item/weapon/grenade/clusterbuster/mega_syndieminibomb
|
||||
/obj/item/grenade/clusterbuster/mega_syndieminibomb
|
||||
name = "Mega SyndiWrath."
|
||||
payload = /obj/item/weapon/grenade/clusterbuster/syndieminibomb
|
||||
payload = /obj/item/grenade/clusterbuster/syndieminibomb
|
||||
|
||||
/obj/item/weapon/grenade/clusterbuster/mega_honk_evil
|
||||
/obj/item/grenade/clusterbuster/mega_honk_evil
|
||||
name = "Mega Evil Mega Honk Grenade."
|
||||
payload = /obj/item/weapon/grenade/clusterbuster/honk_evil
|
||||
payload = /obj/item/grenade/clusterbuster/honk_evil
|
||||
|
||||
/obj/item/weapon/grenade/clusterbuster/mega_emp
|
||||
/obj/item/grenade/clusterbuster/mega_emp
|
||||
name = "Electromagnetic Storm"
|
||||
payload = /obj/item/weapon/grenade/clusterbuster/emp
|
||||
payload = /obj/item/grenade/clusterbuster/emp
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
/obj/item/weapon/grenade/confetti
|
||||
/obj/item/grenade/confetti
|
||||
name = "party grenade"
|
||||
desc = "Party time!"
|
||||
icon_state = "confetti"
|
||||
var/spawner_type = /obj/effect/decal/cleanable/confetti
|
||||
|
||||
/obj/item/weapon/grenade/confetti/prime()
|
||||
/obj/item/grenade/confetti/prime()
|
||||
var/turf/T = get_turf(src)
|
||||
playsound(T, 'sound/effects/confetti_partywhistle.ogg', 100, 1)
|
||||
for(var/i in 1 to 20) //20 confettis. Yes.
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
/obj/item/weapon/grenade/chem_grenade/dirt
|
||||
/obj/item/grenade/chem_grenade/dirt
|
||||
payload_name = "dirt"
|
||||
desc = "From the makers of BLAM! brand foaming space cleaner, this bomb guarantees steady work for any janitor."
|
||||
stage = 2
|
||||
|
||||
New()
|
||||
..()
|
||||
var/obj/item/weapon/reagent_containers/glass/beaker/B1 = new(src)
|
||||
var/obj/item/reagent_containers/glass/beaker/B1 = new(src)
|
||||
var/list/muck = list("blood","carbon","flour","radium")
|
||||
var/filth = pick(muck - "radium") // not usually radioactive
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
beakers += B1
|
||||
|
||||
|
||||
/obj/item/weapon/grenade/chem_grenade/meat
|
||||
/obj/item/grenade/chem_grenade/meat
|
||||
payload_name = "meat"
|
||||
desc = "Not always as messy as the name implies."
|
||||
stage = 2
|
||||
@@ -24,8 +24,8 @@
|
||||
|
||||
New()
|
||||
..()
|
||||
var/obj/item/weapon/reagent_containers/glass/beaker/large/B1 = new(src)
|
||||
var/obj/item/weapon/reagent_containers/glass/beaker/large/B2 = new(src)
|
||||
var/obj/item/reagent_containers/glass/beaker/large/B1 = new(src)
|
||||
var/obj/item/reagent_containers/glass/beaker/large/B2 = new(src)
|
||||
|
||||
B1.reagents.add_reagent("blood",60)
|
||||
if(prob(5))
|
||||
@@ -35,7 +35,7 @@
|
||||
beakers += B1
|
||||
beakers += B2
|
||||
|
||||
/obj/item/weapon/grenade/chem_grenade/holywater
|
||||
/obj/item/grenade/chem_grenade/holywater
|
||||
payload_name = "holy water"
|
||||
desc = "Then shalt thou count to three, no more, no less."
|
||||
stage = 2
|
||||
@@ -43,11 +43,11 @@
|
||||
|
||||
New()
|
||||
..()
|
||||
var/obj/item/weapon/reagent_containers/glass/beaker/large/B = new(src)
|
||||
var/obj/item/reagent_containers/glass/beaker/large/B = new(src)
|
||||
B.reagents.add_reagent("holywater",100)
|
||||
beakers += B
|
||||
|
||||
/obj/item/weapon/grenade/chem_grenade/hellwater
|
||||
/obj/item/grenade/chem_grenade/hellwater
|
||||
payload_name = "hell water"
|
||||
desc = "And he struck them down with an unholy fury that burn like one-thousands badmins."
|
||||
stage = 2
|
||||
@@ -55,8 +55,8 @@
|
||||
|
||||
New()
|
||||
..()
|
||||
var/obj/item/weapon/reagent_containers/glass/beaker/large/B1 = new(src)
|
||||
var/obj/item/weapon/reagent_containers/glass/beaker/large/B2 = new(src)
|
||||
var/obj/item/reagent_containers/glass/beaker/large/B1 = new(src)
|
||||
var/obj/item/reagent_containers/glass/beaker/large/B2 = new(src)
|
||||
B1.reagents.add_reagent("hell_water",80)
|
||||
B1.reagents.add_reagent("sugar",20)
|
||||
B2.reagents.add_reagent("hell_water", 60)
|
||||
@@ -64,15 +64,15 @@
|
||||
B2.reagents.add_reagent("phosphorus", 20)
|
||||
|
||||
|
||||
/obj/item/weapon/grenade/chem_grenade/drugs
|
||||
/obj/item/grenade/chem_grenade/drugs
|
||||
payload_name = "miracle"
|
||||
desc = "How does it work?"
|
||||
stage = 2
|
||||
|
||||
New()
|
||||
..()
|
||||
var/obj/item/weapon/reagent_containers/glass/beaker/large/B1 = new(src)
|
||||
var/obj/item/weapon/reagent_containers/glass/beaker/large/B2 = new(src)
|
||||
var/obj/item/reagent_containers/glass/beaker/large/B1 = new(src)
|
||||
var/obj/item/reagent_containers/glass/beaker/large/B2 = new(src)
|
||||
|
||||
B1.reagents.add_reagent("space_drugs", 25)
|
||||
B1.reagents.add_reagent("lsd", 25)
|
||||
@@ -84,15 +84,15 @@
|
||||
beakers += B2
|
||||
update_icon()
|
||||
|
||||
/obj/item/weapon/grenade/chem_grenade/ethanol
|
||||
/obj/item/grenade/chem_grenade/ethanol
|
||||
payload_name = "ethanol"
|
||||
desc = "Ach, that hits the spot."
|
||||
stage = 2
|
||||
|
||||
New()
|
||||
..()
|
||||
var/obj/item/weapon/reagent_containers/glass/beaker/large/B1 = new(src)
|
||||
var/obj/item/weapon/reagent_containers/glass/beaker/large/B2 = new(src)
|
||||
var/obj/item/reagent_containers/glass/beaker/large/B1 = new(src)
|
||||
var/obj/item/reagent_containers/glass/beaker/large/B2 = new(src)
|
||||
|
||||
B1.reagents.add_reagent("ethanol", 75)
|
||||
B1.reagents.add_reagent("potassium", 25)
|
||||
@@ -107,38 +107,38 @@
|
||||
// -------------------------------------
|
||||
// Grenades using new grenade assemblies
|
||||
// -------------------------------------
|
||||
/obj/item/weapon/grenade/chem_grenade/lube
|
||||
/obj/item/grenade/chem_grenade/lube
|
||||
payload_name = "lubricant"
|
||||
stage = 2
|
||||
|
||||
/obj/item/weapon/grenade/chem_grenade/lube/New()
|
||||
/obj/item/grenade/chem_grenade/lube/New()
|
||||
..()
|
||||
var/obj/item/weapon/reagent_containers/glass/beaker/B1 = new(src)
|
||||
var/obj/item/reagent_containers/glass/beaker/B1 = new(src)
|
||||
B1.reagents.add_reagent("lube",50)
|
||||
beakers += B1
|
||||
|
||||
/obj/item/weapon/grenade/chem_grenade/lube/remote/New()
|
||||
/obj/item/grenade/chem_grenade/lube/remote/New()
|
||||
..()
|
||||
CreateDefaultTrigger(/obj/item/device/assembly/signaler)
|
||||
|
||||
/obj/item/weapon/grenade/chem_grenade/lube/prox/New()
|
||||
/obj/item/grenade/chem_grenade/lube/prox/New()
|
||||
..()
|
||||
CreateDefaultTrigger(/obj/item/device/assembly/prox_sensor)
|
||||
|
||||
/obj/item/weapon/grenade/chem_grenade/lube/tripwire/New()
|
||||
/obj/item/grenade/chem_grenade/lube/tripwire/New()
|
||||
..()
|
||||
CreateDefaultTrigger(/obj/item/device/assembly/infra)
|
||||
|
||||
|
||||
// Basic explosion grenade
|
||||
/obj/item/weapon/grenade/chem_grenade/explosion
|
||||
/obj/item/grenade/chem_grenade/explosion
|
||||
payload_name = "conventional"
|
||||
stage = 2
|
||||
|
||||
/obj/item/weapon/grenade/chem_grenade/explosion/New()
|
||||
/obj/item/grenade/chem_grenade/explosion/New()
|
||||
..()
|
||||
var/obj/item/weapon/reagent_containers/glass/beaker/B1 = new(src)
|
||||
var/obj/item/weapon/reagent_containers/glass/beaker/B2 = new(src)
|
||||
var/obj/item/reagent_containers/glass/beaker/B1 = new(src)
|
||||
var/obj/item/reagent_containers/glass/beaker/B2 = new(src)
|
||||
B1.reagents.add_reagent("glycerol",30) // todo: someone says NG is overpowered, test.
|
||||
B1.reagents.add_reagent("sacid",15)
|
||||
B2.reagents.add_reagent("sacid",15)
|
||||
@@ -147,83 +147,83 @@
|
||||
beakers += B2
|
||||
|
||||
// Assembly Variants
|
||||
/obj/item/weapon/grenade/chem_grenade/explosion/remote/New()
|
||||
/obj/item/grenade/chem_grenade/explosion/remote/New()
|
||||
..()
|
||||
CreateDefaultTrigger(/obj/item/device/assembly/signaler)
|
||||
|
||||
/obj/item/weapon/grenade/chem_grenade/explosion/prox/New()
|
||||
/obj/item/grenade/chem_grenade/explosion/prox/New()
|
||||
..()
|
||||
CreateDefaultTrigger(/obj/item/device/assembly/prox_sensor)
|
||||
|
||||
/obj/item/weapon/grenade/chem_grenade/explosion/mine/New()
|
||||
/obj/item/grenade/chem_grenade/explosion/mine/New()
|
||||
..()
|
||||
CreateDefaultTrigger(/obj/item/device/assembly/mousetrap)
|
||||
|
||||
|
||||
// Water + Potassium = Boom
|
||||
|
||||
/obj/item/weapon/grenade/chem_grenade/waterpotassium
|
||||
/obj/item/grenade/chem_grenade/waterpotassium
|
||||
payload_name = "chem explosive"
|
||||
stage = 2
|
||||
|
||||
/obj/item/weapon/grenade/chem_grenade/waterpotassium/New()
|
||||
/obj/item/grenade/chem_grenade/waterpotassium/New()
|
||||
..()
|
||||
var/obj/item/weapon/reagent_containers/glass/beaker/large/B1 = new(src)
|
||||
var/obj/item/weapon/reagent_containers/glass/beaker/large/B2 = new(src)
|
||||
var/obj/item/reagent_containers/glass/beaker/large/B1 = new(src)
|
||||
var/obj/item/reagent_containers/glass/beaker/large/B2 = new(src)
|
||||
B1.reagents.add_reagent("water",100)
|
||||
B2.reagents.add_reagent("potassium",100)
|
||||
beakers += B1
|
||||
beakers += B2
|
||||
|
||||
/obj/item/weapon/grenade/chem_grenade/waterpotassium/remote/New()
|
||||
/obj/item/grenade/chem_grenade/waterpotassium/remote/New()
|
||||
..()
|
||||
CreateDefaultTrigger(/obj/item/device/assembly/signaler)
|
||||
|
||||
/obj/item/weapon/grenade/chem_grenade/waterpotassium/prox/New()
|
||||
/obj/item/grenade/chem_grenade/waterpotassium/prox/New()
|
||||
..()
|
||||
CreateDefaultTrigger(/obj/item/device/assembly/prox_sensor)
|
||||
|
||||
|
||||
/obj/item/weapon/grenade/chem_grenade/waterpotassium/tripwire/New()
|
||||
/obj/item/grenade/chem_grenade/waterpotassium/tripwire/New()
|
||||
..()
|
||||
CreateDefaultTrigger(/obj/item/device/assembly/infra)
|
||||
|
||||
/obj/item/weapon/grenade/chem_grenade/waterpotassium/tripwire_armed/New()
|
||||
/obj/item/grenade/chem_grenade/waterpotassium/tripwire_armed/New()
|
||||
..()
|
||||
CreateDefaultTrigger(/obj/item/device/assembly/infra/armed)
|
||||
|
||||
/obj/item/weapon/grenade/chem_grenade/waterpotassium/tripwire_armed_stealth/New()
|
||||
/obj/item/grenade/chem_grenade/waterpotassium/tripwire_armed_stealth/New()
|
||||
..()
|
||||
CreateDefaultTrigger(/obj/item/device/assembly/infra/armed/stealth)
|
||||
|
||||
|
||||
|
||||
// Basic EMP grenade
|
||||
/obj/item/weapon/grenade/chem_grenade/emp
|
||||
/obj/item/grenade/chem_grenade/emp
|
||||
payload_name = "EMP"
|
||||
stage = 2
|
||||
|
||||
New()
|
||||
..()
|
||||
var/obj/item/weapon/reagent_containers/glass/beaker/B1 = new(src)
|
||||
var/obj/item/weapon/reagent_containers/glass/beaker/B2 = new(src)
|
||||
var/obj/item/reagent_containers/glass/beaker/B1 = new(src)
|
||||
var/obj/item/reagent_containers/glass/beaker/B2 = new(src)
|
||||
B1.reagents.add_reagent("uranium",50)
|
||||
B2.reagents.add_reagent("iron",50)
|
||||
beakers += B1
|
||||
beakers += B2
|
||||
|
||||
// Assembly Variants
|
||||
/obj/item/weapon/grenade/chem_grenade/emp/remote
|
||||
/obj/item/grenade/chem_grenade/emp/remote
|
||||
New()
|
||||
..()
|
||||
CreateDefaultTrigger(/obj/item/device/assembly/signaler)
|
||||
|
||||
/obj/item/weapon/grenade/chem_grenade/emp/prox
|
||||
/obj/item/grenade/chem_grenade/emp/prox
|
||||
New()
|
||||
..()
|
||||
CreateDefaultTrigger(/obj/item/device/assembly/prox_sensor)
|
||||
|
||||
/obj/item/weapon/grenade/chem_grenade/emp/mine
|
||||
/obj/item/grenade/chem_grenade/emp/mine
|
||||
New()
|
||||
..()
|
||||
CreateDefaultTrigger(/obj/item/device/assembly/mousetrap)
|
||||
@@ -232,7 +232,7 @@
|
||||
// Dangerous slime core grenades
|
||||
// --------------------------------------
|
||||
/*
|
||||
/obj/item/weapon/grenade/chem_grenade/large/bluespace
|
||||
/obj/item/grenade/chem_grenade/large/bluespace
|
||||
payload_name = "bluespace slime"
|
||||
desc = "A standard grenade casing containing weaponized slime extract."
|
||||
stage = 2
|
||||
@@ -241,28 +241,28 @@
|
||||
..()
|
||||
var/obj/item/slime_extract/bluespace/B1 = new(src)
|
||||
B1.Uses = rand(1,3)
|
||||
var/obj/item/weapon/reagent_containers/glass/beaker/B2 = new(src)
|
||||
var/obj/item/reagent_containers/glass/beaker/B2 = new(src)
|
||||
B2.reagents.add_reagent("plasma",5 * B1.Uses)
|
||||
beakers += B1
|
||||
beakers += B2
|
||||
|
||||
/obj/item/weapon/grenade/chem_grenade/large/bluespace/prox
|
||||
/obj/item/grenade/chem_grenade/large/bluespace/prox
|
||||
New()
|
||||
..()
|
||||
CreateDefaultTrigger(/obj/item/device/assembly/prox_sensor)
|
||||
|
||||
/obj/item/weapon/grenade/chem_grenade/large/bluespace/mine
|
||||
/obj/item/grenade/chem_grenade/large/bluespace/mine
|
||||
New()
|
||||
..()
|
||||
CreateDefaultTrigger(/obj/item/device/assembly/mousetrap)
|
||||
|
||||
/obj/item/weapon/grenade/chem_grenade/large/bluespace/remote
|
||||
/obj/item/grenade/chem_grenade/large/bluespace/remote
|
||||
New()
|
||||
..()
|
||||
CreateDefaultTrigger(/obj/item/device/assembly/signaler)
|
||||
*/
|
||||
|
||||
/obj/item/weapon/grenade/chem_grenade/large/monster
|
||||
/obj/item/grenade/chem_grenade/large/monster
|
||||
payload_name = "gold slime"
|
||||
desc = "A standard grenade containing weaponized slime extract."
|
||||
stage = 2
|
||||
@@ -271,27 +271,27 @@
|
||||
..()
|
||||
var/obj/item/slime_extract/gold/B1 = new(src)
|
||||
B1.Uses = rand(1,3)
|
||||
var/obj/item/weapon/reagent_containers/glass/beaker/B2 = new(src)
|
||||
var/obj/item/reagent_containers/glass/beaker/B2 = new(src)
|
||||
B2.reagents.add_reagent("plasma",5 * B1.Uses)
|
||||
beakers += B1
|
||||
beakers += B2
|
||||
|
||||
/obj/item/weapon/grenade/chem_grenade/large/monster/prox
|
||||
/obj/item/grenade/chem_grenade/large/monster/prox
|
||||
New()
|
||||
..()
|
||||
CreateDefaultTrigger(/obj/item/device/assembly/prox_sensor)
|
||||
|
||||
/obj/item/weapon/grenade/chem_grenade/large/monster/mine
|
||||
/obj/item/grenade/chem_grenade/large/monster/mine
|
||||
New()
|
||||
..()
|
||||
CreateDefaultTrigger(/obj/item/device/assembly/mousetrap)
|
||||
|
||||
/obj/item/weapon/grenade/chem_grenade/large/monster/remote
|
||||
/obj/item/grenade/chem_grenade/large/monster/remote
|
||||
New()
|
||||
..()
|
||||
CreateDefaultTrigger(/obj/item/device/assembly/signaler)
|
||||
|
||||
/obj/item/weapon/grenade/chem_grenade/large/feast
|
||||
/obj/item/grenade/chem_grenade/large/feast
|
||||
payload_name = "silver slime"
|
||||
desc = "A standard grenade containing weaponized slime extract."
|
||||
stage = 2
|
||||
@@ -300,7 +300,7 @@
|
||||
..()
|
||||
var/obj/item/slime_extract/silver/B1 = new(src)
|
||||
B1.Uses = rand(1,3)
|
||||
var/obj/item/weapon/reagent_containers/glass/beaker/B2 = new(src)
|
||||
var/obj/item/reagent_containers/glass/beaker/B2 = new(src)
|
||||
B2.reagents.add_reagent("plasma",5 * B1.Uses)
|
||||
beakers += B1
|
||||
beakers += B2
|
||||
@@ -309,27 +309,27 @@
|
||||
// Syndie Kits
|
||||
// --------------------------------------
|
||||
|
||||
/obj/item/weapon/storage/box/syndie_kit/remotegrenade
|
||||
/obj/item/storage/box/syndie_kit/remotegrenade
|
||||
name = "Remote Grenade Kit"
|
||||
New()
|
||||
..()
|
||||
new /obj/item/weapon/grenade/chem_grenade/explosion/remote(src)
|
||||
new /obj/item/grenade/chem_grenade/explosion/remote(src)
|
||||
new /obj/item/device/multitool(src) // used to adjust the chemgrenade's signaller
|
||||
new /obj/item/device/assembly/signaler(src)
|
||||
return
|
||||
/obj/item/weapon/storage/box/syndie_kit/remoteemp
|
||||
/obj/item/storage/box/syndie_kit/remoteemp
|
||||
name = "Remote EMP Kit"
|
||||
New()
|
||||
..()
|
||||
new /obj/item/weapon/grenade/chem_grenade/emp/remote(src)
|
||||
new /obj/item/grenade/chem_grenade/emp/remote(src)
|
||||
new /obj/item/device/multitool(src) // used to adjust the chemgrenade's signaller
|
||||
new /obj/item/device/assembly/signaler(src)
|
||||
return
|
||||
/obj/item/weapon/storage/box/syndie_kit/remotelube
|
||||
/obj/item/storage/box/syndie_kit/remotelube
|
||||
name = "Remote Lube Kit"
|
||||
New()
|
||||
..()
|
||||
new /obj/item/weapon/grenade/chem_grenade/lube(src)
|
||||
new /obj/item/grenade/chem_grenade/lube(src)
|
||||
new /obj/item/device/multitool(src) // used to adjust the chemgrenade's signaller
|
||||
new /obj/item/device/assembly/signaler(src)
|
||||
return
|
||||
@@ -1,11 +1,11 @@
|
||||
/obj/item/weapon/grenade/empgrenade
|
||||
/obj/item/grenade/empgrenade
|
||||
name = "classic EMP grenade"
|
||||
desc = "It is designed to wreak havoc on electronic systems."
|
||||
icon_state = "emp"
|
||||
item_state = "emp"
|
||||
origin_tech = "magnets=3;combat=2"
|
||||
|
||||
/obj/item/weapon/grenade/empgrenade/prime()
|
||||
/obj/item/grenade/empgrenade/prime()
|
||||
update_mob()
|
||||
empulse(src, 4, 10)
|
||||
qdel(src)
|
||||
@@ -1,4 +1,4 @@
|
||||
/obj/item/weapon/grenade/flashbang
|
||||
/obj/item/grenade/flashbang
|
||||
name = "flashbang"
|
||||
icon_state = "flashbang"
|
||||
item_state = "flashbang"
|
||||
@@ -7,7 +7,7 @@
|
||||
light_color = LIGHT_COLOR_WHITE
|
||||
var/light_time = 2
|
||||
|
||||
/obj/item/weapon/grenade/flashbang/prime()
|
||||
/obj/item/grenade/flashbang/prime()
|
||||
update_mob()
|
||||
var/flashbang_turf = get_turf(src)
|
||||
if(!flashbang_turf)
|
||||
@@ -26,7 +26,7 @@
|
||||
spawn(light_time)
|
||||
qdel(src)
|
||||
|
||||
/obj/item/weapon/grenade/flashbang/proc/bang(var/turf/T , var/mob/living/M)
|
||||
/obj/item/grenade/flashbang/proc/bang(var/turf/T , var/mob/living/M)
|
||||
M.show_message("<span class='warning'>BANG</span>", 2)
|
||||
playsound(loc, 'sound/effects/bang.ogg', 25, 1)
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
//improvised explosives//
|
||||
|
||||
/obj/item/weapon/grenade/iedcasing
|
||||
/obj/item/grenade/iedcasing
|
||||
name = "improvised firebomb"
|
||||
desc = "A weak, improvised incendiary device."
|
||||
w_class = WEIGHT_CLASS_SMALL
|
||||
@@ -16,7 +16,7 @@
|
||||
display_timer = 0
|
||||
var/list/times
|
||||
|
||||
/obj/item/weapon/grenade/iedcasing/New()
|
||||
/obj/item/grenade/iedcasing/New()
|
||||
..()
|
||||
overlays += "improvised_grenade_filled"
|
||||
overlays += "improvised_grenade_wired"
|
||||
@@ -25,9 +25,9 @@
|
||||
if(det_time < 0) //checking for 'duds'
|
||||
det_time = rand(30,80)
|
||||
|
||||
/obj/item/weapon/grenade/iedcasing/CheckParts(list/parts_list)
|
||||
/obj/item/grenade/iedcasing/CheckParts(list/parts_list)
|
||||
..()
|
||||
var/obj/item/weapon/reagent_containers/food/drinks/cans/can = locate() in contents
|
||||
var/obj/item/reagent_containers/food/drinks/cans/can = locate() in contents
|
||||
if(can)
|
||||
can.pixel_x = 0 //Reset the sprite's position to make it consistent with the rest of the IED
|
||||
can.pixel_y = 0
|
||||
@@ -37,7 +37,7 @@
|
||||
underlays += can_underlay
|
||||
|
||||
|
||||
/obj/item/weapon/grenade/iedcasing/attack_self(mob/user) //
|
||||
/obj/item/grenade/iedcasing/attack_self(mob/user) //
|
||||
if(!active)
|
||||
if(clown_check(user))
|
||||
to_chat(user, "<span class='warning'>You light the [name]!</span>")
|
||||
@@ -55,11 +55,11 @@
|
||||
C.throw_mode_on()
|
||||
addtimer(src, "prime", det_time)
|
||||
|
||||
/obj/item/weapon/grenade/iedcasing/prime() //Blowing that can up
|
||||
/obj/item/grenade/iedcasing/prime() //Blowing that can up
|
||||
update_mob()
|
||||
explosion(loc, -1, -1, 2, flame_range = 4) // small explosion, plus a very large fireball.
|
||||
qdel(src)
|
||||
|
||||
/obj/item/weapon/grenade/iedcasing/examine(mob/user)
|
||||
/obj/item/grenade/iedcasing/examine(mob/user)
|
||||
..()
|
||||
to_chat(user, "You can't tell when it will explode!")
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/obj/item/weapon/grenade
|
||||
/obj/item/grenade
|
||||
name = "grenade"
|
||||
desc = "A hand held grenade, with an adjustable timer."
|
||||
w_class = WEIGHT_CLASS_SMALL
|
||||
@@ -15,7 +15,7 @@
|
||||
var/det_time = 50
|
||||
var/display_timer = 1
|
||||
|
||||
/obj/item/weapon/grenade/proc/clown_check(var/mob/living/user)
|
||||
/obj/item/grenade/proc/clown_check(var/mob/living/user)
|
||||
if((CLUMSY in user.mutations) && prob(50))
|
||||
to_chat(user, "<span class='warning'>Huh? How does this thing work?</span>")
|
||||
active = 1
|
||||
@@ -29,9 +29,9 @@
|
||||
return 1
|
||||
|
||||
|
||||
/*/obj/item/weapon/grenade/afterattack(atom/target as mob|obj|turf|area, mob/user as mob)
|
||||
if(istype(target, /obj/item/weapon/storage)) return ..() // Trying to put it in a full container
|
||||
if(istype(target, /obj/item/weapon/gun/grenadelauncher)) return ..()
|
||||
/*/obj/item/grenade/afterattack(atom/target as mob|obj|turf|area, mob/user as mob)
|
||||
if(istype(target, /obj/item/storage)) return ..() // Trying to put it in a full container
|
||||
if(istype(target, /obj/item/gun/grenadelauncher)) return ..()
|
||||
if((user.is_in_active_hand(src)) && (!active) && (clown_check(user)) && target.loc != src.loc)
|
||||
to_chat(user, "<span class='warning'>You prime the [name]! [det_time/10] seconds!</span>")
|
||||
active = 1
|
||||
@@ -47,7 +47,7 @@
|
||||
return*/
|
||||
|
||||
|
||||
/obj/item/weapon/grenade/examine(mob/user)
|
||||
/obj/item/grenade/examine(mob/user)
|
||||
..(user)
|
||||
if(display_timer)
|
||||
if(det_time > 1)
|
||||
@@ -55,7 +55,7 @@
|
||||
else
|
||||
to_chat(user, "\The [src] is set for instant detonation.")
|
||||
|
||||
/obj/item/weapon/grenade/attack_self(mob/user as mob)
|
||||
/obj/item/grenade/attack_self(mob/user as mob)
|
||||
if(!active)
|
||||
if(clown_check(user))
|
||||
to_chat(user, "<span class='warning'>You prime the [name]! [det_time/10] seconds!</span>")
|
||||
@@ -74,16 +74,16 @@
|
||||
prime()
|
||||
|
||||
|
||||
/obj/item/weapon/grenade/proc/prime()
|
||||
/obj/item/grenade/proc/prime()
|
||||
|
||||
/obj/item/weapon/grenade/proc/update_mob()
|
||||
/obj/item/grenade/proc/update_mob()
|
||||
if(ismob(loc))
|
||||
var/mob/M = loc
|
||||
M.unEquip(src)
|
||||
|
||||
|
||||
/obj/item/weapon/grenade/attackby(obj/item/weapon/W as obj, mob/user as mob, params)
|
||||
if(istype(W, /obj/item/weapon/screwdriver))
|
||||
/obj/item/grenade/attackby(obj/item/W as obj, mob/user as mob, params)
|
||||
if(istype(W, /obj/item/screwdriver))
|
||||
switch(det_time)
|
||||
if("1")
|
||||
det_time = 10
|
||||
@@ -100,6 +100,6 @@
|
||||
add_fingerprint(user)
|
||||
..()
|
||||
|
||||
/obj/item/weapon/grenade/attack_hand()
|
||||
/obj/item/grenade/attack_hand()
|
||||
walk(src, null, null)
|
||||
..()
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/obj/item/weapon/grenade/smokebomb
|
||||
/obj/item/grenade/smokebomb
|
||||
desc = "It is set to detonate in 2 seconds."
|
||||
name = "smoke bomb"
|
||||
icon = 'icons/obj/grenade.dmi'
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/obj/item/weapon/grenade/spawnergrenade
|
||||
/obj/item/grenade/spawnergrenade
|
||||
desc = "It is set to detonate in 5 seconds. It will unleash unleash an unspecified anomaly into the vicinity."
|
||||
name = "delivery grenade"
|
||||
icon = 'icons/obj/grenade.dmi'
|
||||
@@ -31,26 +31,26 @@
|
||||
qdel(src)
|
||||
return
|
||||
|
||||
/obj/item/weapon/grenade/spawnergrenade/manhacks
|
||||
/obj/item/grenade/spawnergrenade/manhacks
|
||||
name = "manhack delivery grenade"
|
||||
spawner_type = /mob/living/simple_animal/hostile/viscerator
|
||||
deliveryamt = 5
|
||||
origin_tech = "materials=3;magnets=4;syndicate=3"
|
||||
|
||||
/obj/item/weapon/grenade/spawnergrenade/spesscarp
|
||||
/obj/item/grenade/spawnergrenade/spesscarp
|
||||
name = "carp delivery grenade"
|
||||
spawner_type = /mob/living/simple_animal/hostile/carp
|
||||
deliveryamt = 5
|
||||
origin_tech = "materials=3;magnets=4;syndicate=3"
|
||||
|
||||
/obj/item/weapon/grenade/spawnergrenade/feral_cats
|
||||
/obj/item/grenade/spawnergrenade/feral_cats
|
||||
name = "feral cat delivery grenade"
|
||||
desc = "This grenade contains 8 dehydrated feral cats in a similar manner to dehydrated monkeys, which, upon detonation, will be rehydrated by a small reservoir of water contained within the grenade. These cats will then attack anything in sight."
|
||||
spawner_type = /mob/living/simple_animal/hostile/feral_cat
|
||||
deliveryamt = 5
|
||||
origin_tech = "materials=3;magnets=4;syndicate=3"
|
||||
|
||||
/obj/item/weapon/grenade/spawnergrenade/feral_cats/prime() //Own proc for this because the regular one would flash people which was dumb.
|
||||
/obj/item/grenade/spawnergrenade/feral_cats/prime() //Own proc for this because the regular one would flash people which was dumb.
|
||||
update_mob()
|
||||
if(spawner_type && deliveryamt)
|
||||
var/turf/T = get_turf(src)
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/obj/item/weapon/grenade/syndieminibomb
|
||||
/obj/item/grenade/syndieminibomb
|
||||
desc = "A syndicate manufactured explosive used to sow destruction and chaos"
|
||||
name = "syndicate minibomb"
|
||||
icon = 'icons/obj/grenade.dmi'
|
||||
@@ -6,7 +6,7 @@
|
||||
item_state = "flashbang"
|
||||
origin_tech = "materials=3;magnets=4;syndicate=3"
|
||||
|
||||
/obj/item/weapon/grenade/syndieminibomb/prime()
|
||||
/obj/item/grenade/syndieminibomb/prime()
|
||||
update_mob()
|
||||
explosion(src.loc,1,2,4,flame_range = 2)
|
||||
qdel(src)
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/obj/item/weapon/restraints/handcuffs
|
||||
/obj/item/restraints/handcuffs
|
||||
name = "handcuffs"
|
||||
desc = "Use this to keep prisoners in line."
|
||||
gender = PLURAL
|
||||
@@ -16,7 +16,7 @@
|
||||
var/cuffsound = 'sound/weapons/handcuffs.ogg'
|
||||
var/trashtype = null //For disposable cuffs
|
||||
|
||||
/obj/item/weapon/restraints/handcuffs/attack(mob/living/carbon/C, mob/user)
|
||||
/obj/item/restraints/handcuffs/attack(mob/living/carbon/C, mob/user)
|
||||
if(!user.IsAdvancedToolUser())
|
||||
return
|
||||
|
||||
@@ -41,7 +41,7 @@
|
||||
if(do_mob(user, C, 30))
|
||||
apply_cuffs(C,user)
|
||||
to_chat(user, "<span class='notice'>You handcuff [C].</span>")
|
||||
if(istype(src, /obj/item/weapon/restraints/handcuffs/cable))
|
||||
if(istype(src, /obj/item/restraints/handcuffs/cable))
|
||||
feedback_add_details("handcuffs","C")
|
||||
else
|
||||
feedback_add_details("handcuffs","H")
|
||||
@@ -50,7 +50,7 @@
|
||||
else
|
||||
to_chat(user, "<span class='warning'>You fail to handcuff [C].</span>")
|
||||
|
||||
/obj/item/weapon/restraints/handcuffs/proc/apply_cuffs(mob/living/carbon/target, mob/user)
|
||||
/obj/item/restraints/handcuffs/proc/apply_cuffs(mob/living/carbon/target, mob/user)
|
||||
if(!target.handcuffed)
|
||||
user.drop_item()
|
||||
if(trashtype)
|
||||
@@ -62,7 +62,7 @@
|
||||
target.update_handcuffed()
|
||||
return
|
||||
|
||||
/obj/item/weapon/restraints/handcuffs/sinew
|
||||
/obj/item/restraints/handcuffs/sinew
|
||||
name = "sinew restraints"
|
||||
desc = "A pair of restraints fashioned from long strands of flesh."
|
||||
icon = 'icons/obj/mining.dmi'
|
||||
@@ -71,7 +71,7 @@
|
||||
breakouttime = 300 //Deciseconds = 30s
|
||||
cuffsound = 'sound/weapons/cablecuff.ogg'
|
||||
|
||||
/obj/item/weapon/restraints/handcuffs/cable
|
||||
/obj/item/restraints/handcuffs/cable
|
||||
name = "cable restraints"
|
||||
desc = "Looks like some cables tied together. Could be used to tie something up."
|
||||
icon_state = "cuff_white"
|
||||
@@ -80,48 +80,48 @@
|
||||
breakouttime = 300 //Deciseconds = 30s
|
||||
cuffsound = 'sound/weapons/cablecuff.ogg'
|
||||
|
||||
/obj/item/weapon/restraints/handcuffs/cable/red
|
||||
/obj/item/restraints/handcuffs/cable/red
|
||||
color = COLOR_RED
|
||||
|
||||
/obj/item/weapon/restraints/handcuffs/cable/yellow
|
||||
/obj/item/restraints/handcuffs/cable/yellow
|
||||
color = COLOR_YELLOW
|
||||
|
||||
/obj/item/weapon/restraints/handcuffs/cable/blue
|
||||
/obj/item/restraints/handcuffs/cable/blue
|
||||
color = COLOR_BLUE
|
||||
|
||||
/obj/item/weapon/restraints/handcuffs/cable/green
|
||||
/obj/item/restraints/handcuffs/cable/green
|
||||
color = COLOR_GREEN
|
||||
|
||||
/obj/item/weapon/restraints/handcuffs/cable/pink
|
||||
/obj/item/restraints/handcuffs/cable/pink
|
||||
color = COLOR_PINK
|
||||
|
||||
/obj/item/weapon/restraints/handcuffs/cable/orange
|
||||
/obj/item/restraints/handcuffs/cable/orange
|
||||
color = COLOR_ORANGE
|
||||
|
||||
/obj/item/weapon/restraints/handcuffs/cable/cyan
|
||||
/obj/item/restraints/handcuffs/cable/cyan
|
||||
color = COLOR_CYAN
|
||||
|
||||
/obj/item/weapon/restraints/handcuffs/cable/white
|
||||
/obj/item/restraints/handcuffs/cable/white
|
||||
color = COLOR_WHITE
|
||||
|
||||
/obj/item/weapon/restraints/handcuffs/cable/random/New()
|
||||
/obj/item/restraints/handcuffs/cable/random/New()
|
||||
color = pick(COLOR_RED, COLOR_BLUE, COLOR_GREEN, COLOR_WHITE, COLOR_PINK, COLOR_YELLOW, COLOR_CYAN)
|
||||
..()
|
||||
|
||||
/obj/item/weapon/restraints/handcuffs/alien
|
||||
/obj/item/restraints/handcuffs/alien
|
||||
icon_state = "handcuffAlien"
|
||||
|
||||
/obj/item/weapon/restraints/handcuffs/pinkcuffs
|
||||
/obj/item/restraints/handcuffs/pinkcuffs
|
||||
name = "fluffy pink handcuffs"
|
||||
desc = "Use this to keep prisoners in line. Or you know, your significant other."
|
||||
icon_state = "pinkcuffs"
|
||||
|
||||
/obj/item/weapon/restraints/handcuffs/cable/attackby(var/obj/item/I, mob/user as mob, params)
|
||||
/obj/item/restraints/handcuffs/cable/attackby(var/obj/item/I, mob/user as mob, params)
|
||||
..()
|
||||
if(istype(I, /obj/item/stack/rods))
|
||||
var/obj/item/stack/rods/R = I
|
||||
if(R.use(1))
|
||||
var/obj/item/weapon/wirerod/W = new /obj/item/weapon/wirerod
|
||||
var/obj/item/wirerod/W = new /obj/item/wirerod
|
||||
if(!remove_item_from_storage(user))
|
||||
user.unEquip(src)
|
||||
user.put_in_hands(W)
|
||||
@@ -136,7 +136,7 @@
|
||||
return
|
||||
to_chat(user, "<span class='notice'>You begin to apply [I] to [src]...</span>")
|
||||
if(do_after(user, 35 * M.toolspeed, target = src))
|
||||
var/obj/item/weapon/restraints/legcuffs/bola/S = new /obj/item/weapon/restraints/legcuffs/bola
|
||||
var/obj/item/restraints/legcuffs/bola/S = new /obj/item/restraints/legcuffs/bola
|
||||
M.use(6)
|
||||
user.put_in_hands(S)
|
||||
to_chat(user, "<span class='notice'>You make some weights out of [I] and tie them to [src].</span>")
|
||||
@@ -144,15 +144,15 @@
|
||||
user.unEquip(src)
|
||||
qdel(src)
|
||||
|
||||
/obj/item/weapon/restraints/handcuffs/cable/zipties
|
||||
/obj/item/restraints/handcuffs/cable/zipties
|
||||
name = "zipties"
|
||||
desc = "Plastic, disposable zipties that can be used to restrain temporarily but are destroyed after use."
|
||||
icon_state = "cuff_white"
|
||||
breakouttime = 450 //Deciseconds = 45s
|
||||
materials = list()
|
||||
trashtype = /obj/item/weapon/restraints/handcuffs/cable/zipties/used
|
||||
trashtype = /obj/item/restraints/handcuffs/cable/zipties/used
|
||||
|
||||
/obj/item/weapon/restraints/handcuffs/cable/zipties/cyborg/attack(mob/living/carbon/C, mob/user)
|
||||
/obj/item/restraints/handcuffs/cable/zipties/cyborg/attack(mob/living/carbon/C, mob/user)
|
||||
if(isrobot(user))
|
||||
if(ishuman(C))
|
||||
var/mob/living/carbon/human/H = C
|
||||
@@ -165,16 +165,16 @@
|
||||
"<span class='userdanger'>[user] is trying to put zipties on [C]!</span>")
|
||||
if(do_mob(user, C, 30))
|
||||
if(!C.handcuffed)
|
||||
C.handcuffed = new /obj/item/weapon/restraints/handcuffs/cable/zipties/used(C)
|
||||
C.handcuffed = new /obj/item/restraints/handcuffs/cable/zipties/used(C)
|
||||
C.update_handcuffed()
|
||||
to_chat(user, "<span class='notice'>You handcuff [C].</span>")
|
||||
add_logs(user, C, "ziptie-cuffed")
|
||||
else
|
||||
to_chat(user, "<span class='warning'>You fail to handcuff [C].</span>")
|
||||
|
||||
/obj/item/weapon/restraints/handcuffs/cable/zipties/used
|
||||
/obj/item/restraints/handcuffs/cable/zipties/used
|
||||
desc = "A pair of broken zipties."
|
||||
icon_state = "cuff_white_used"
|
||||
|
||||
/obj/item/weapon/restraints/handcuffs/cable/zipties/used/attack()
|
||||
/obj/item/restraints/handcuffs/cable/zipties/used/attack()
|
||||
return
|
||||
|
||||
@@ -12,19 +12,19 @@
|
||||
//Highlander Claymore
|
||||
// Grants the wielder the Highlander Style Martial Art
|
||||
|
||||
/obj/item/weapon/claymore/highlander
|
||||
/obj/item/claymore/highlander
|
||||
name = "Highlander Claymore"
|
||||
desc = "Imbues the wielder with legendary martial prowress and a nigh-unquenchable thirst for glorious battle!"
|
||||
var/datum/martial_art/highlander/style = new
|
||||
|
||||
/obj/item/weapon/claymore/highlander/Destroy()
|
||||
/obj/item/claymore/highlander/Destroy()
|
||||
if(ishuman(loc)) //just in case it gets destroyed while in someone's possession, such as due to acid or something?
|
||||
var/mob/living/carbon/human/H = loc
|
||||
style.remove(H)
|
||||
QDEL_NULL(style)
|
||||
return ..()
|
||||
|
||||
/obj/item/weapon/claymore/highlander/equipped(mob/user, slot)
|
||||
/obj/item/claymore/highlander/equipped(mob/user, slot)
|
||||
if(!ishuman(user))
|
||||
return
|
||||
var/mob/living/carbon/human/H = user
|
||||
@@ -34,17 +34,17 @@
|
||||
to_chat(H, "<span class='notice'>THERE CAN ONLY BE ONE!</span>")
|
||||
else if(H.martial_art && H.martial_art == style)
|
||||
style.remove(H)
|
||||
var/obj/item/weapon/claymore/highlander/sword = H.is_in_hands(/obj/item/weapon/claymore/highlander)
|
||||
var/obj/item/claymore/highlander/sword = H.is_in_hands(/obj/item/claymore/highlander)
|
||||
if(sword)
|
||||
//if we have a highlander sword in the other hand, relearn the style from that sword.
|
||||
sword.style.teach(H, 1)
|
||||
|
||||
/obj/item/weapon/claymore/highlander/dropped(mob/user)
|
||||
/obj/item/claymore/highlander/dropped(mob/user)
|
||||
if(!ishuman(user))
|
||||
return
|
||||
var/mob/living/carbon/human/H = user
|
||||
style.remove(H)
|
||||
var/obj/item/weapon/claymore/highlander/sword = H.is_in_hands(/obj/item/weapon/claymore/highlander)
|
||||
var/obj/item/claymore/highlander/sword = H.is_in_hands(/obj/item/claymore/highlander)
|
||||
if(sword)
|
||||
//if we have a highlander sword in the other hand, relearn the style from that sword.
|
||||
sword.style.teach(H, 1)
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/obj/item/weapon/holosign_creator
|
||||
/obj/item/holosign_creator
|
||||
name = "holographic sign projector"
|
||||
desc = "A handy-dandy hologaphic projector that displays a janitorial sign."
|
||||
icon = 'icons/obj/janitor.dmi'
|
||||
@@ -13,11 +13,11 @@
|
||||
var/list/signs = list()
|
||||
var/max_signs = 20
|
||||
|
||||
/obj/item/weapon/holosign_creator/Destroy()
|
||||
/obj/item/holosign_creator/Destroy()
|
||||
QDEL_LIST(signs)
|
||||
return ..()
|
||||
|
||||
/obj/item/weapon/holosign_creator/afterattack(atom/target, mob/user, flag)
|
||||
/obj/item/holosign_creator/afterattack(atom/target, mob/user, flag)
|
||||
if(flag)
|
||||
var/turf/T = get_turf(target)
|
||||
var/obj/effect/overlay/holograph/H = locate() in T
|
||||
@@ -33,10 +33,10 @@
|
||||
else
|
||||
to_chat(user, "<span class='notice'>[src] is projecting at max capacity!</span>")
|
||||
|
||||
/obj/item/weapon/holosign_creator/attack(mob/living/carbon/human/M, mob/user)
|
||||
/obj/item/holosign_creator/attack(mob/living/carbon/human/M, mob/user)
|
||||
return
|
||||
|
||||
/obj/item/weapon/holosign_creator/attack_self(mob/user)
|
||||
/obj/item/holosign_creator/attack_self(mob/user)
|
||||
if(signs.len)
|
||||
var/list/L = signs.Copy()
|
||||
for(var/sign in L)
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/obj/item/weapon/nullrod
|
||||
/obj/item/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"
|
||||
@@ -10,13 +10,13 @@
|
||||
w_class = WEIGHT_CLASS_TINY
|
||||
var/reskinned = FALSE
|
||||
var/reskin_selectable = TRUE //set to FALSE if a subtype is meant to not normally be available as a reskin option (fluff ones will get re-added through their list)
|
||||
var/list/fluff_transformations = list() //does it have any special transformations only accessible to it? Should only be subtypes of /obj/item/weapon/nullrod
|
||||
var/list/fluff_transformations = list() //does it have any special transformations only accessible to it? Should only be subtypes of /obj/item/nullrod
|
||||
|
||||
/obj/item/weapon/nullrod/suicide_act(mob/user)
|
||||
/obj/item/nullrod/suicide_act(mob/user)
|
||||
user.visible_message("<span class='suicide'>[user] is killing \himself with \the [src.name]! It looks like \he's trying to get closer to god!</span>")
|
||||
return (BRUTELOSS|FIRELOSS)
|
||||
|
||||
/obj/item/weapon/nullrod/attack(mob/M, mob/living/carbon/user)
|
||||
/obj/item/nullrod/attack(mob/M, mob/living/carbon/user)
|
||||
..()
|
||||
if(M.mind)
|
||||
if(M.mind.vampire)
|
||||
@@ -25,16 +25,16 @@
|
||||
to_chat(M, "<span class='warning'>The nullrod's power interferes with your own!</span>")
|
||||
M.mind.vampire.nullified = max(5, M.mind.vampire.nullified + 2)
|
||||
|
||||
/obj/item/weapon/nullrod/attack_self(mob/user)
|
||||
/obj/item/nullrod/attack_self(mob/user)
|
||||
if(reskinned)
|
||||
return
|
||||
if(user.mind && (user.mind.assigned_role == "Chaplain" || user.mind.special_role == SPECIAL_ROLE_ERT))
|
||||
reskin_holy_weapon(user)
|
||||
|
||||
/obj/item/weapon/nullrod/proc/reskin_holy_weapon(mob/M)
|
||||
var/list/holy_weapons_list = typesof(/obj/item/weapon/nullrod)
|
||||
/obj/item/nullrod/proc/reskin_holy_weapon(mob/M)
|
||||
var/list/holy_weapons_list = typesof(/obj/item/nullrod)
|
||||
for(var/entry in holy_weapons_list)
|
||||
var/obj/item/weapon/nullrod/variant = entry
|
||||
var/obj/item/nullrod/variant = entry
|
||||
if(!initial(variant.reskin_selectable))
|
||||
holy_weapons_list -= variant
|
||||
if(fluff_transformations.len)
|
||||
@@ -52,7 +52,7 @@
|
||||
var/index = display_names.Find(choice)
|
||||
var/A = holy_weapons_list[index]
|
||||
|
||||
var/obj/item/weapon/nullrod/holy_weapon = new A
|
||||
var/obj/item/nullrod/holy_weapon = new A
|
||||
|
||||
feedback_set_details("chaplain_weapon","[choice]")
|
||||
|
||||
@@ -62,10 +62,10 @@
|
||||
M.put_in_active_hand(holy_weapon)
|
||||
qdel(src)
|
||||
|
||||
/obj/item/weapon/nullrod/fluff //fluff subtype to be used for all donator nullrods
|
||||
/obj/item/nullrod/fluff //fluff subtype to be used for all donator nullrods
|
||||
reskin_selectable = FALSE
|
||||
|
||||
/obj/item/weapon/nullrod/godhand
|
||||
/obj/item/nullrod/godhand
|
||||
name = "god hand"
|
||||
icon_state = "disintegrate"
|
||||
item_state = "disintegrate"
|
||||
@@ -76,7 +76,7 @@
|
||||
damtype = BURN
|
||||
attack_verb = list("punched", "cross countered", "pummeled")
|
||||
|
||||
/obj/item/weapon/nullrod/staff
|
||||
/obj/item/nullrod/staff
|
||||
name = "red holy staff"
|
||||
icon_state = "godstaff-red"
|
||||
item_state = "godstaff-red"
|
||||
@@ -86,12 +86,12 @@
|
||||
slot_flags = SLOT_BACK
|
||||
block_chance = 50
|
||||
|
||||
/obj/item/weapon/nullrod/staff/blue
|
||||
/obj/item/nullrod/staff/blue
|
||||
name = "blue holy staff"
|
||||
icon_state = "godstaff-blue"
|
||||
item_state = "godstaff-blue"
|
||||
|
||||
/obj/item/weapon/nullrod/claymore
|
||||
/obj/item/nullrod/claymore
|
||||
name = "holy claymore"
|
||||
icon_state = "claymore"
|
||||
item_state = "claymore"
|
||||
@@ -103,12 +103,12 @@
|
||||
hitsound = 'sound/weapons/bladeslice.ogg'
|
||||
attack_verb = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut")
|
||||
|
||||
/obj/item/weapon/nullrod/claymore/hit_reaction(mob/living/carbon/human/owner, attack_text, final_block_chance, damage, attack_type)
|
||||
/obj/item/nullrod/claymore/hit_reaction(mob/living/carbon/human/owner, attack_text, final_block_chance, damage, attack_type)
|
||||
if(attack_type == PROJECTILE_ATTACK)
|
||||
final_block_chance = 0 //Don't bring a sword to a gunfight
|
||||
return ..()
|
||||
|
||||
/obj/item/weapon/nullrod/claymore/darkblade
|
||||
/obj/item/nullrod/claymore/darkblade
|
||||
name = "dark blade"
|
||||
icon_state = "cultblade"
|
||||
item_state = "cultblade"
|
||||
@@ -116,7 +116,7 @@
|
||||
slot_flags = SLOT_BELT
|
||||
hitsound = 'sound/hallucinations/growl1.ogg'
|
||||
|
||||
/obj/item/weapon/nullrod/claymore/chainsaw_sword
|
||||
/obj/item/nullrod/claymore/chainsaw_sword
|
||||
name = "sacred chainsaw sword"
|
||||
icon_state = "chainswordon"
|
||||
item_state = "chainswordon"
|
||||
@@ -125,28 +125,28 @@
|
||||
attack_verb = list("sawed", "torn", "cut", "chopped", "diced")
|
||||
hitsound = 'sound/weapons/chainsaw.ogg'
|
||||
|
||||
/obj/item/weapon/nullrod/claymore/glowing
|
||||
/obj/item/nullrod/claymore/glowing
|
||||
name = "force weapon"
|
||||
icon_state = "swordon"
|
||||
item_state = "swordon"
|
||||
desc = "The blade glows with the power of faith. Or possibly a battery."
|
||||
slot_flags = SLOT_BELT
|
||||
|
||||
/obj/item/weapon/nullrod/claymore/katana
|
||||
/obj/item/nullrod/claymore/katana
|
||||
name = "hanzo steel"
|
||||
desc = "Capable of cutting clean through a holy claymore."
|
||||
icon_state = "katana"
|
||||
item_state = "katana"
|
||||
slot_flags = SLOT_BELT | SLOT_BACK
|
||||
|
||||
/obj/item/weapon/nullrod/claymore/multiverse
|
||||
/obj/item/nullrod/claymore/multiverse
|
||||
name = "extradimensional blade"
|
||||
desc = "Once the harbringer of a interdimensional war, now a dormant souvenir. Still sharp though."
|
||||
icon_state = "multiverse"
|
||||
item_state = "multiverse"
|
||||
slot_flags = SLOT_BELT
|
||||
|
||||
/obj/item/weapon/nullrod/claymore/saber
|
||||
/obj/item/nullrod/claymore/saber
|
||||
name = "light energy sword"
|
||||
hitsound = 'sound/weapons/blade1.ogg'
|
||||
icon_state = "swordblue"
|
||||
@@ -154,19 +154,19 @@
|
||||
desc = "If you strike me down, I shall become more robust than you can possibly imagine."
|
||||
slot_flags = SLOT_BELT
|
||||
|
||||
/obj/item/weapon/nullrod/claymore/saber/red
|
||||
/obj/item/nullrod/claymore/saber/red
|
||||
name = "dark energy sword"
|
||||
icon_state = "swordred"
|
||||
item_state = "swordred"
|
||||
desc = "Woefully ineffective when used on steep terrain."
|
||||
|
||||
/obj/item/weapon/nullrod/claymore/saber/pirate
|
||||
/obj/item/nullrod/claymore/saber/pirate
|
||||
name = "nautical energy sword"
|
||||
icon_state = "cutlass1"
|
||||
item_state = "cutlass1"
|
||||
desc = "Convincing HR that your religion involved piracy was no mean feat."
|
||||
|
||||
/obj/item/weapon/nullrod/sord
|
||||
/obj/item/nullrod/sord
|
||||
name = "\improper UNREAL SORD"
|
||||
desc = "This thing is so unspeakably HOLY you are having a hard time even holding it."
|
||||
icon_state = "sord"
|
||||
@@ -177,7 +177,7 @@
|
||||
hitsound = 'sound/weapons/bladeslice.ogg'
|
||||
attack_verb = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut")
|
||||
|
||||
/obj/item/weapon/nullrod/scythe
|
||||
/obj/item/nullrod/scythe
|
||||
name = "reaper scythe"
|
||||
icon_state = "scythe0"
|
||||
item_state = "scythe0"
|
||||
@@ -189,14 +189,14 @@
|
||||
attack_verb = list("chopped", "sliced", "cut", "reaped")
|
||||
hitsound = 'sound/weapons/rapierhit.ogg'
|
||||
|
||||
/obj/item/weapon/nullrod/scythe/vibro
|
||||
/obj/item/nullrod/scythe/vibro
|
||||
name = "high frequency blade"
|
||||
icon_state = "hfrequency0"
|
||||
item_state = "hfrequency1"
|
||||
desc = "Bad references are the DNA of the soul."
|
||||
attack_verb = list("chopped", "sliced", "cut", "zandatsu'd")
|
||||
|
||||
/obj/item/weapon/nullrod/scythe/spellblade
|
||||
/obj/item/nullrod/scythe/spellblade
|
||||
icon_state = "spellblade"
|
||||
item_state = "spellblade"
|
||||
icon = 'icons/obj/guns/magic.dmi'
|
||||
@@ -204,7 +204,7 @@
|
||||
desc = "The blade grants the wielder nearly limitless power...if they can figure out how to turn it on, that is."
|
||||
hitsound = 'sound/weapons/rapierhit.ogg'
|
||||
|
||||
/obj/item/weapon/nullrod/scythe/talking
|
||||
/obj/item/nullrod/scythe/talking
|
||||
name = "possessed blade"
|
||||
icon_state = "talking_sword"
|
||||
item_state = "talking_sword"
|
||||
@@ -213,7 +213,7 @@
|
||||
hitsound = 'sound/weapons/rapierhit.ogg'
|
||||
var/possessed = FALSE
|
||||
|
||||
/obj/item/weapon/nullrod/scythe/talking/attack_self(mob/living/user)
|
||||
/obj/item/nullrod/scythe/talking/attack_self(mob/living/user)
|
||||
if(possessed)
|
||||
return
|
||||
|
||||
@@ -240,14 +240,14 @@
|
||||
to_chat(user, "The blade is dormant. Maybe you can try again later.")
|
||||
possessed = FALSE
|
||||
|
||||
/obj/item/weapon/nullrod/scythe/talking/Destroy()
|
||||
/obj/item/nullrod/scythe/talking/Destroy()
|
||||
for(var/mob/living/simple_animal/shade/sword/S in contents)
|
||||
to_chat(S, "You were destroyed!")
|
||||
S.ghostize()
|
||||
qdel(S)
|
||||
return ..()
|
||||
|
||||
/obj/item/weapon/nullrod/hammmer
|
||||
/obj/item/nullrod/hammmer
|
||||
name = "relic war hammer"
|
||||
icon_state = "hammeron"
|
||||
item_state = "hammeron"
|
||||
@@ -256,7 +256,7 @@
|
||||
w_class = WEIGHT_CLASS_HUGE
|
||||
attack_verb = list("smashed", "bashed", "hammered", "crunched")
|
||||
|
||||
/obj/item/weapon/nullrod/chainsaw
|
||||
/obj/item/nullrod/chainsaw
|
||||
name = "chainsaw hand"
|
||||
desc = "Good? Bad? You're the guy with the chainsaw hand."
|
||||
icon_state = "chainsaw1"
|
||||
@@ -267,7 +267,7 @@
|
||||
attack_verb = list("sawed", "torn", "cut", "chopped", "diced")
|
||||
hitsound = 'sound/weapons/chainsaw.ogg'
|
||||
|
||||
/obj/item/weapon/nullrod/clown
|
||||
/obj/item/nullrod/clown
|
||||
name = "clown dagger"
|
||||
icon = 'icons/obj/wizard.dmi'
|
||||
icon_state = "clownrender"
|
||||
@@ -277,7 +277,7 @@
|
||||
sharp = 1
|
||||
attack_verb = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut", "honked")
|
||||
|
||||
/obj/item/weapon/nullrod/whip
|
||||
/obj/item/nullrod/whip
|
||||
name = "holy whip"
|
||||
desc = "What a terrible night to be in spess"
|
||||
icon_state = "chain"
|
||||
@@ -286,11 +286,11 @@
|
||||
attack_verb = list("whipped", "lashed")
|
||||
hitsound = 'sound/weapons/slash.ogg'
|
||||
|
||||
/obj/item/weapon/nullrod/whip/New()
|
||||
/obj/item/nullrod/whip/New()
|
||||
..()
|
||||
desc = "What a terrible night to be on the [station_name()]."
|
||||
|
||||
/obj/item/weapon/nullrod/whip/afterattack(atom/movable/AM, mob/user, proximity)
|
||||
/obj/item/nullrod/whip/afterattack(atom/movable/AM, mob/user, proximity)
|
||||
if(!proximity)
|
||||
return
|
||||
if(ishuman(AM))
|
||||
@@ -300,7 +300,7 @@
|
||||
user.say("[phrase]")
|
||||
H.adjustBruteLoss(8) //Bonus damage
|
||||
|
||||
/obj/item/weapon/nullrod/fedora
|
||||
/obj/item/nullrod/fedora
|
||||
name = "athiest's fedora"
|
||||
desc = "The brim of the hat is as sharp as your wit. Throwing it at someone would hurt almost as much as disproving the existence of God."
|
||||
icon_state = "fedora"
|
||||
@@ -312,7 +312,7 @@
|
||||
throw_range = 7
|
||||
throwforce = 20
|
||||
|
||||
/obj/item/weapon/nullrod/armblade
|
||||
/obj/item/nullrod/armblade
|
||||
name = "dark blessing"
|
||||
desc = "Particularly twisted deities grant gifts of dubious value."
|
||||
icon_state = "arm_blade"
|
||||
@@ -321,7 +321,7 @@
|
||||
w_class = WEIGHT_CLASS_HUGE
|
||||
sharp = 1
|
||||
|
||||
/obj/item/weapon/nullrod/carp
|
||||
/obj/item/nullrod/carp
|
||||
name = "carp-sie plushie"
|
||||
desc = "An adorable stuffed toy that resembles the god of all carp. The teeth look pretty sharp. Activate it to recieve the blessing of Carp-Sie."
|
||||
icon = 'icons/obj/toy.dmi'
|
||||
@@ -332,7 +332,7 @@
|
||||
hitsound = 'sound/weapons/bite.ogg'
|
||||
var/used_blessing = FALSE
|
||||
|
||||
/obj/item/weapon/nullrod/carp/attack_self(mob/living/user)
|
||||
/obj/item/nullrod/carp/attack_self(mob/living/user)
|
||||
if(used_blessing)
|
||||
return
|
||||
if(user.mind && (user.mind.assigned_role != "Chaplain" && user.mind.special_role != SPECIAL_ROLE_ERT))
|
||||
@@ -341,7 +341,7 @@
|
||||
user.faction |= "carp"
|
||||
used_blessing = TRUE
|
||||
|
||||
/obj/item/weapon/nullrod/claymore/bostaff //May as well make it a "claymore" and inherit the blocking
|
||||
/obj/item/nullrod/claymore/bostaff //May as well make it a "claymore" and inherit the blocking
|
||||
name = "monk's staff"
|
||||
desc = "A long, tall staff made of polished wood. Traditionally used in ancient old-Earth martial arts, now used to harass the clown."
|
||||
w_class = WEIGHT_CLASS_BULKY
|
||||
@@ -351,11 +351,10 @@
|
||||
sharp = 0
|
||||
hitsound = "swing_hit"
|
||||
attack_verb = list("smashed", "slammed", "whacked", "thwacked")
|
||||
icon = 'icons/obj/weapons.dmi'
|
||||
icon_state = "bostaff0"
|
||||
item_state = "bostaff0"
|
||||
|
||||
/obj/item/weapon/nullrod/tribal_knife
|
||||
/obj/item/nullrod/tribal_knife
|
||||
name = "arrhythmic knife"
|
||||
icon_state = "crysknife"
|
||||
item_state = "crysknife"
|
||||
@@ -367,18 +366,18 @@
|
||||
hitsound = 'sound/weapons/bladeslice.ogg'
|
||||
attack_verb = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut")
|
||||
|
||||
/obj/item/weapon/nullrod/tribal_knife/New()
|
||||
/obj/item/nullrod/tribal_knife/New()
|
||||
..()
|
||||
processing_objects.Add(src)
|
||||
|
||||
/obj/item/weapon/nullrod/tribal_knife/Destroy()
|
||||
/obj/item/nullrod/tribal_knife/Destroy()
|
||||
processing_objects.Remove(src)
|
||||
return ..()
|
||||
|
||||
/obj/item/weapon/nullrod/tribal_knife/process()
|
||||
/obj/item/nullrod/tribal_knife/process()
|
||||
slowdown = rand(-2, 2)
|
||||
|
||||
/obj/item/weapon/nullrod/pitchfork
|
||||
/obj/item/nullrod/pitchfork
|
||||
name = "unholy pitchfork"
|
||||
icon_state = "pitchfork0"
|
||||
item_state = "pitchfork0"
|
||||
@@ -388,7 +387,7 @@
|
||||
hitsound = 'sound/weapons/bladeslice.ogg'
|
||||
sharp = 1
|
||||
|
||||
/obj/item/weapon/nullrod/rosary
|
||||
/obj/item/nullrod/rosary
|
||||
name = "prayer beads"
|
||||
icon_state = "rosary"
|
||||
item_state = null
|
||||
@@ -397,12 +396,12 @@
|
||||
throwforce = 0
|
||||
var/praying = 0
|
||||
|
||||
/obj/item/weapon/nullrod/rosary/New()
|
||||
/obj/item/nullrod/rosary/New()
|
||||
..()
|
||||
processing_objects.Add(src)
|
||||
|
||||
|
||||
/obj/item/weapon/nullrod/rosary/attack(mob/living/carbon/M as mob, mob/living/carbon/user as mob)
|
||||
/obj/item/nullrod/rosary/attack(mob/living/carbon/M as mob, mob/living/carbon/user as mob)
|
||||
if(!iscarbon(M))
|
||||
return ..()
|
||||
|
||||
@@ -446,7 +445,7 @@
|
||||
to_chat(user, "<span class='notice'>Your prayer to [ticker.Bible_deity_name] was interrupted.</span>")
|
||||
praying = 0
|
||||
|
||||
/obj/item/weapon/nullrod/rosary/process()
|
||||
/obj/item/nullrod/rosary/process()
|
||||
if(ishuman(loc))
|
||||
var/mob/living/carbon/human/holder = loc
|
||||
|
||||
@@ -457,7 +456,7 @@
|
||||
if(prob(10))
|
||||
to_chat(H, "<span class='userdanger'>Being in the presence of [holder]'s [src] is interfering with your powers!</span>")
|
||||
|
||||
/obj/item/weapon/nullrod/salt
|
||||
/obj/item/nullrod/salt
|
||||
name = "Holy Salt"
|
||||
icon = 'icons/obj/food/containers.dmi'
|
||||
icon_state = "saltshakersmall"
|
||||
@@ -467,7 +466,7 @@
|
||||
var/ghostcall_CD = 0
|
||||
|
||||
|
||||
/obj/item/weapon/nullrod/salt/attack_self(mob/user)
|
||||
/obj/item/nullrod/salt/attack_self(mob/user)
|
||||
|
||||
if(!user.mind || (user.mind.assigned_role != "Chaplain" && user.mind.special_role != SPECIAL_ROLE_ERT ))
|
||||
to_chat(user, "<span class='notice'>You are not close enough with [ticker.Bible_deity_name] to use [src].</span>")
|
||||
@@ -483,13 +482,13 @@
|
||||
return
|
||||
|
||||
|
||||
/obj/item/weapon/nullrod/rosary/bread
|
||||
/obj/item/nullrod/rosary/bread
|
||||
name = "prayer bread"
|
||||
icon = 'icons/obj/food/food.dmi'
|
||||
icon_state = "baguette"
|
||||
desc = "a staple of worshipers of the Silentfather, this holy mime artifact has an odd effect on clowns."
|
||||
|
||||
/obj/item/weapon/nullrod/rosary/bread/process()
|
||||
/obj/item/nullrod/rosary/bread/process()
|
||||
if(ishuman(loc))
|
||||
var/mob/living/carbon/human/holder = loc
|
||||
//would like to make the holder mime if they have it in on thier person in general
|
||||
@@ -502,7 +501,7 @@
|
||||
to_chat(H, "<span class='userdanger'>Being in the presence of [holder]'s [src] is interfering with your honk!</span>")
|
||||
|
||||
|
||||
/obj/item/weapon/nullrod/missionary_staff
|
||||
/obj/item/nullrod/missionary_staff
|
||||
name = "holy staff"
|
||||
desc = "It has a mysterious, protective aura."
|
||||
description_antag = "This seemingly standard holy staff is actually a disguised neurotransmitter capable of inducing blind zealotry in its victims. It must be allowed to recharge in the presence of a linked set of missionary robes. Activate the staff while wearing robes to link, then aim the staff at your victim to try and convert them."
|
||||
@@ -519,19 +518,19 @@
|
||||
var/obj/item/clothing/suit/hooded/chaplain_hoodie/missionary_robe/robes = null //the robes linked with this staff
|
||||
var/faith = 99 //a conversion requires 100 faith to attempt. faith recharges over time while you are wearing missionary robes that have been linked to the staff.
|
||||
|
||||
/obj/item/weapon/nullrod/missionary_staff/New()
|
||||
/obj/item/nullrod/missionary_staff/New()
|
||||
team_color = pick("red", "blue")
|
||||
icon_state = "godstaff-[team_color]"
|
||||
item_state = "godstaff-[team_color]"
|
||||
name = "[team_color] holy staff"
|
||||
|
||||
/obj/item/weapon/nullrod/missionary_staff/Destroy()
|
||||
/obj/item/nullrod/missionary_staff/Destroy()
|
||||
if(robes) //delink on destruction
|
||||
robes.linked_staff = null
|
||||
robes = null
|
||||
return ..()
|
||||
|
||||
/obj/item/weapon/nullrod/missionary_staff/attack_self(mob/user)
|
||||
/obj/item/nullrod/missionary_staff/attack_self(mob/user)
|
||||
if(robes) //as long as it is linked, sec can't try to meta by stealing your staff and seeing if they get the link error message
|
||||
return 0
|
||||
if(!ishuman(user)) //prevents the horror (runtimes) of missionary xenos and other non-human mobs that might be able to activate the item
|
||||
@@ -551,7 +550,7 @@
|
||||
to_chat(missionary, "<span class='warning'>You must be wearing the missionary robes you wish to link with this staff.</span>")
|
||||
return 0
|
||||
|
||||
/obj/item/weapon/nullrod/missionary_staff/afterattack(mob/living/carbon/human/target, mob/living/carbon/human/missionary, flag, params)
|
||||
/obj/item/nullrod/missionary_staff/afterattack(mob/living/carbon/human/target, mob/living/carbon/human/missionary, flag, params)
|
||||
if(!ishuman(target) || !ishuman(missionary)) //ishuman checks
|
||||
return
|
||||
if(target == missionary) //you can't convert yourself, that would raise too many questions about your own dedication to the cause
|
||||
@@ -581,7 +580,7 @@
|
||||
else //the do_after failed, probably because you moved or dropped the staff
|
||||
to_chat(missionary, "<span class='warning'>Your concentration was broken!</span>")
|
||||
|
||||
/obj/item/weapon/nullrod/missionary_staff/proc/do_convert(mob/living/carbon/human/target, mob/living/carbon/human/missionary)
|
||||
/obj/item/nullrod/missionary_staff/proc/do_convert(mob/living/carbon/human/target, mob/living/carbon/human/missionary)
|
||||
var/convert_duration = 6000 //10 min
|
||||
if(!target || !ishuman(target) || !missionary || !ishuman(missionary))
|
||||
return
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
/obj/item/weapon/implant/health
|
||||
/obj/item/implant/health
|
||||
name = "health implant"
|
||||
activated = FALSE
|
||||
var/healthstring = ""
|
||||
|
||||
/obj/item/weapon/implant/health/proc/sensehealth()
|
||||
/obj/item/implant/health/proc/sensehealth()
|
||||
if(!imp_in)
|
||||
return "ERROR"
|
||||
else
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/obj/item/weapon/implant
|
||||
/obj/item/implant
|
||||
name = "implant"
|
||||
icon = 'icons/obj/implants.dmi'
|
||||
icon_state = "generic" //Shows up as the action button icon
|
||||
@@ -14,13 +14,13 @@
|
||||
flags = DROPDEL
|
||||
|
||||
|
||||
/obj/item/weapon/implant/proc/trigger(emote, mob/source)
|
||||
/obj/item/implant/proc/trigger(emote, mob/source)
|
||||
return
|
||||
|
||||
/obj/item/weapon/implant/proc/activate()
|
||||
/obj/item/implant/proc/activate()
|
||||
return
|
||||
|
||||
/obj/item/weapon/implant/ui_action_click()
|
||||
/obj/item/implant/ui_action_click()
|
||||
activate("action_button")
|
||||
|
||||
|
||||
@@ -28,8 +28,8 @@
|
||||
//return 1 if the implant injects
|
||||
//return -1 if the implant fails to inject
|
||||
//return 0 if there is no room for implant
|
||||
/obj/item/weapon/implant/proc/implant(var/mob/source, var/mob/user)
|
||||
var/obj/item/weapon/implant/imp_e = locate(src.type) in source
|
||||
/obj/item/implant/proc/implant(var/mob/source, var/mob/user)
|
||||
var/obj/item/implant/imp_e = locate(src.type) in source
|
||||
if(!allow_multiple && imp_e && imp_e != src)
|
||||
if(imp_e.uses < initial(imp_e.uses)*2)
|
||||
if(uses == -1)
|
||||
@@ -58,7 +58,7 @@
|
||||
|
||||
return 1
|
||||
|
||||
/obj/item/weapon/implant/proc/removed(var/mob/source)
|
||||
/obj/item/implant/proc/removed(var/mob/source)
|
||||
src.loc = null
|
||||
imp_in = null
|
||||
implanted = 0
|
||||
@@ -73,15 +73,15 @@
|
||||
|
||||
return 1
|
||||
|
||||
/obj/item/weapon/implant/Destroy()
|
||||
/obj/item/implant/Destroy()
|
||||
if(imp_in)
|
||||
removed(imp_in)
|
||||
return ..()
|
||||
|
||||
|
||||
/obj/item/weapon/implant/proc/get_data()
|
||||
/obj/item/implant/proc/get_data()
|
||||
return "No information available"
|
||||
|
||||
/obj/item/weapon/implant/dropped(mob/user)
|
||||
/obj/item/implant/dropped(mob/user)
|
||||
. = 1
|
||||
..()
|
||||
@@ -1,4 +1,4 @@
|
||||
/obj/item/weapon/implant/abductor
|
||||
/obj/item/implant/abductor
|
||||
name = "recall implant"
|
||||
desc = "Returns you to the mothership."
|
||||
icon = 'icons/obj/abductor.dmi'
|
||||
@@ -9,7 +9,7 @@
|
||||
var/cooldown = 30
|
||||
var/total_cooldown = 30
|
||||
|
||||
/obj/item/weapon/implant/abductor/activate()
|
||||
/obj/item/implant/abductor/activate()
|
||||
if(cooldown == total_cooldown)
|
||||
home.Retrieve(imp_in,1)
|
||||
cooldown = 0
|
||||
@@ -17,13 +17,13 @@
|
||||
else
|
||||
to_chat(imp_in, "<span class='warning'>You must wait [(total_cooldown - cooldown)*2] seconds to use [src] again!</span>")
|
||||
|
||||
/obj/item/weapon/implant/abductor/process()
|
||||
/obj/item/implant/abductor/process()
|
||||
if(cooldown < total_cooldown)
|
||||
cooldown++
|
||||
if(cooldown == total_cooldown)
|
||||
processing_objects.Remove(src)
|
||||
|
||||
/obj/item/weapon/implant/abductor/implant(mob/source, mob/user)
|
||||
/obj/item/implant/abductor/implant(mob/source, mob/user)
|
||||
if(..())
|
||||
var/obj/machinery/abductor/console/console
|
||||
if(ishuman(source))
|
||||
@@ -37,7 +37,7 @@
|
||||
home = console.pad
|
||||
return 1
|
||||
|
||||
/obj/item/weapon/implant/abductor/proc/get_team_console(var/team)
|
||||
/obj/item/implant/abductor/proc/get_team_console(var/team)
|
||||
var/obj/machinery/abductor/console/console
|
||||
for(var/obj/machinery/abductor/console/c in abductor_equipment)
|
||||
if(c.team == team)
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
/obj/item/weapon/implant/chem
|
||||
/obj/item/implant/chem
|
||||
name = "chem implant"
|
||||
desc = "Injects things."
|
||||
icon_state = "reagents"
|
||||
origin_tech = "materials=3;biotech=4"
|
||||
flags = OPENCONTAINER
|
||||
|
||||
/obj/item/weapon/implant/chem/get_data()
|
||||
/obj/item/implant/chem/get_data()
|
||||
var/dat = {"<b>Implant Specifications:</b><BR>
|
||||
<b>Name:</b> Robust Corp MJ-420 Prisoner Management Implant<BR>
|
||||
<b>Life:</b> Deactivates upon death but remains within the body.<BR>
|
||||
@@ -21,23 +21,23 @@
|
||||
<b>Integrity:</b> Implant will last so long as the subject is alive."}
|
||||
return dat
|
||||
|
||||
/obj/item/weapon/implant/chem/New()
|
||||
/obj/item/implant/chem/New()
|
||||
..()
|
||||
create_reagents(50)
|
||||
tracked_implants += src
|
||||
|
||||
/obj/item/weapon/implant/chem/Destroy()
|
||||
/obj/item/implant/chem/Destroy()
|
||||
tracked_implants -= src
|
||||
return ..()
|
||||
|
||||
|
||||
|
||||
|
||||
/obj/item/weapon/implant/chem/trigger(emote, mob/source)
|
||||
/obj/item/implant/chem/trigger(emote, mob/source)
|
||||
if(emote == "deathgasp")
|
||||
activate(reagents.total_volume)
|
||||
|
||||
/obj/item/weapon/implant/chem/activate(cause)
|
||||
/obj/item/implant/chem/activate(cause)
|
||||
if(!cause || !imp_in) return 0
|
||||
var/mob/living/carbon/R = imp_in
|
||||
var/injectamount = null
|
||||
@@ -52,10 +52,10 @@
|
||||
qdel(src)
|
||||
|
||||
|
||||
/obj/item/weapon/implantcase/chem
|
||||
/obj/item/implantcase/chem
|
||||
name = "implant case - 'Remote Chemical'"
|
||||
desc = "A glass case containing a remote chemical implant."
|
||||
|
||||
/obj/item/weapon/implantcase/chem/New()
|
||||
imp = new /obj/item/weapon/implant/chem(src)
|
||||
/obj/item/implantcase/chem/New()
|
||||
imp = new /obj/item/implant/chem(src)
|
||||
..()
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
/obj/item/weapon/implant/death_alarm
|
||||
/obj/item/implant/death_alarm
|
||||
name = "death alarm implant"
|
||||
desc = "An alarm which monitors host vital signs and transmits a radio message upon death."
|
||||
var/mobname = "Will Robinson"
|
||||
activated = 0
|
||||
var/static/list/stealth_areas = typecacheof(list(/area/syndicate_station, /area/syndicate_mothership, /area/shuttle/syndicate_elite))
|
||||
|
||||
/obj/item/weapon/implant/death_alarm/get_data()
|
||||
/obj/item/implant/death_alarm/get_data()
|
||||
var/dat = {"<b>Implant Specifications:</b><BR>
|
||||
<b>Name:</b> Nanotrasen \"Profit Margin\" Class Employee Lifesign Sensor<BR>
|
||||
<b>Life:</b> Activates upon death.<BR>
|
||||
@@ -17,11 +17,11 @@
|
||||
<b>Integrity:</b> Implant will occasionally be degraded by the body's immune system and thus will occasionally malfunction."}
|
||||
return dat
|
||||
|
||||
/obj/item/weapon/implant/death_alarm/Destroy()
|
||||
/obj/item/implant/death_alarm/Destroy()
|
||||
processing_objects.Remove(src)
|
||||
return ..()
|
||||
|
||||
/obj/item/weapon/implant/death_alarm/process()
|
||||
/obj/item/implant/death_alarm/process()
|
||||
if(!implanted)
|
||||
return
|
||||
var/mob/M = imp_in
|
||||
@@ -31,7 +31,7 @@
|
||||
else if(M.stat == DEAD)
|
||||
activate("death")
|
||||
|
||||
/obj/item/weapon/implant/death_alarm/activate(var/cause)
|
||||
/obj/item/implant/death_alarm/activate(var/cause)
|
||||
var/mob/M = imp_in
|
||||
var/area/t = get_area(M)
|
||||
|
||||
@@ -55,17 +55,17 @@
|
||||
|
||||
qdel(a)
|
||||
|
||||
/obj/item/weapon/implant/death_alarm/emp_act(severity) //for some reason alarms stop going off in case they are emp'd, even without this
|
||||
/obj/item/implant/death_alarm/emp_act(severity) //for some reason alarms stop going off in case they are emp'd, even without this
|
||||
activate("emp") //let's shout that this dude is dead
|
||||
|
||||
/obj/item/weapon/implant/death_alarm/implant(mob/target)
|
||||
/obj/item/implant/death_alarm/implant(mob/target)
|
||||
if(..())
|
||||
mobname = target.real_name
|
||||
processing_objects.Add(src)
|
||||
return 1
|
||||
return 0
|
||||
|
||||
/obj/item/weapon/implant/death_alarm/removed(mob/target)
|
||||
/obj/item/implant/death_alarm/removed(mob/target)
|
||||
if(..())
|
||||
processing_objects.Remove(src)
|
||||
return 1
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/obj/item/weapon/implant/explosive
|
||||
/obj/item/implant/explosive
|
||||
name = "microbomb implant"
|
||||
desc = "And boom goes the weasel."
|
||||
icon_state = "explosive"
|
||||
@@ -8,7 +8,7 @@
|
||||
var/heavy = 0.4
|
||||
var/delay = 7
|
||||
|
||||
/obj/item/weapon/implant/explosive/get_data()
|
||||
/obj/item/implant/explosive/get_data()
|
||||
var/dat = {"<b>Implant Specifications:</b><BR>
|
||||
<b>Name:</b> Robust Corp RX-78 Employee Management Implant<BR>
|
||||
<b>Life:</b> Activates upon death.<BR>
|
||||
@@ -20,11 +20,11 @@
|
||||
"}
|
||||
return dat
|
||||
|
||||
/obj/item/weapon/implant/explosive/trigger(emote, mob/source)
|
||||
/obj/item/implant/explosive/trigger(emote, mob/source)
|
||||
if(emote == "deathgasp")
|
||||
activate("death")
|
||||
|
||||
/obj/item/weapon/implant/explosive/activate(cause)
|
||||
/obj/item/implant/explosive/activate(cause)
|
||||
if(!cause || !imp_in) return 0
|
||||
if(cause == "action_button" && alert(imp_in, "Are you sure you want to activate your microbomb implant? This will cause you to explode!", "Microbomb Implant Confirmation", "Yes", "No") != "Yes")
|
||||
return 0
|
||||
@@ -41,8 +41,8 @@
|
||||
return
|
||||
timed_explosion()
|
||||
|
||||
/obj/item/weapon/implant/explosive/implant(mob/source)
|
||||
var/obj/item/weapon/implant/explosive/imp_e = locate(src.type) in source
|
||||
/obj/item/implant/explosive/implant(mob/source)
|
||||
var/obj/item/implant/explosive/imp_e = locate(src.type) in source
|
||||
if(imp_e && imp_e != src)
|
||||
imp_e.heavy += heavy
|
||||
imp_e.medium += medium
|
||||
@@ -53,7 +53,7 @@
|
||||
|
||||
return ..()
|
||||
|
||||
/obj/item/weapon/implant/explosive/proc/timed_explosion()
|
||||
/obj/item/implant/explosive/proc/timed_explosion()
|
||||
imp_in.visible_message("<span class = 'warning'>[imp_in] starts beeping ominously!</span>")
|
||||
playsound(loc, 'sound/items/timer.ogg', 30, 0)
|
||||
sleep(delay/4)
|
||||
@@ -71,7 +71,7 @@
|
||||
imp_in.gib()
|
||||
qdel(src)
|
||||
|
||||
/obj/item/weapon/implant/explosive/macro
|
||||
/obj/item/implant/explosive/macro
|
||||
name = "macrobomb implant"
|
||||
desc = "And boom goes the weasel. And everything else nearby."
|
||||
icon_state = "explosive"
|
||||
@@ -81,18 +81,18 @@
|
||||
heavy = 4
|
||||
delay = 70
|
||||
|
||||
/obj/item/weapon/implant/explosive/macro/activate(cause)
|
||||
/obj/item/implant/explosive/macro/activate(cause)
|
||||
if(!cause || !imp_in) return 0
|
||||
if(cause == "action_button" && alert(imp_in, "Are you sure you want to activate your macrobomb implant? This will cause you to explode and gib!", "Macrobomb Implant Confirmation", "Yes", "No") != "Yes")
|
||||
return 0
|
||||
to_chat(imp_in, "<span class='notice'>You activate your macrobomb implant.</span>")
|
||||
timed_explosion()
|
||||
|
||||
/obj/item/weapon/implant/explosive/macro/implant(mob/source)
|
||||
var/obj/item/weapon/implant/explosive/imp_e = locate(src.type) in source
|
||||
/obj/item/implant/explosive/macro/implant(mob/source)
|
||||
var/obj/item/implant/explosive/imp_e = locate(src.type) in source
|
||||
if(imp_e && imp_e != src)
|
||||
return 0
|
||||
imp_e = locate(/obj/item/weapon/implant/explosive) in source
|
||||
imp_e = locate(/obj/item/implant/explosive) in source
|
||||
if(imp_e && imp_e != src)
|
||||
heavy += imp_e.heavy
|
||||
medium += imp_e.medium
|
||||
@@ -103,40 +103,40 @@
|
||||
return ..()
|
||||
|
||||
|
||||
/obj/item/weapon/implanter/explosive
|
||||
/obj/item/implanter/explosive
|
||||
name = "implanter (explosive)"
|
||||
|
||||
/obj/item/weapon/implanter/explosive/New()
|
||||
imp = new /obj/item/weapon/implant/explosive(src)
|
||||
/obj/item/implanter/explosive/New()
|
||||
imp = new /obj/item/implant/explosive(src)
|
||||
..()
|
||||
|
||||
|
||||
/obj/item/weapon/implantcase/explosive
|
||||
/obj/item/implantcase/explosive
|
||||
name = "implant case - 'Explosive'"
|
||||
desc = "A glass case containing an explosive implant."
|
||||
|
||||
/obj/item/weapon/implantcase/explosive/New()
|
||||
imp = new /obj/item/weapon/implant/explosive(src)
|
||||
/obj/item/implantcase/explosive/New()
|
||||
imp = new /obj/item/implant/explosive(src)
|
||||
..()
|
||||
|
||||
|
||||
/obj/item/weapon/implanter/explosive_macro
|
||||
/obj/item/implanter/explosive_macro
|
||||
name = "implanter (macro-explosive)"
|
||||
|
||||
/obj/item/weapon/implanter/explosive_macro/New()
|
||||
imp = new /obj/item/weapon/implant/explosive/macro(src)
|
||||
/obj/item/implanter/explosive_macro/New()
|
||||
imp = new /obj/item/implant/explosive/macro(src)
|
||||
..()
|
||||
|
||||
|
||||
// Dust implant, for CC officers. Prevents gear theft if they die.
|
||||
|
||||
/obj/item/weapon/implant/dust
|
||||
/obj/item/implant/dust
|
||||
name = "duster implant"
|
||||
desc = "An alarm which monitors host vital signs, transmitting a radio message and dusting the corpse on death."
|
||||
icon = 'icons/effects/blood.dmi'
|
||||
icon_state = "remains"
|
||||
|
||||
/obj/item/weapon/implant/dust/get_data()
|
||||
/obj/item/implant/dust/get_data()
|
||||
var/dat = {"<b>Implant Specifications:</b><BR>
|
||||
<b>Name:</b> Ultraviolet Corp XX-13 Security Implant<BR>
|
||||
<b>Life:</b> Activates upon death.<BR>
|
||||
@@ -148,11 +148,11 @@
|
||||
"}
|
||||
return dat
|
||||
|
||||
/obj/item/weapon/implant/dust/trigger(emote, mob/source)
|
||||
/obj/item/implant/dust/trigger(emote, mob/source)
|
||||
if(emote == "deathgasp")
|
||||
activate("death")
|
||||
|
||||
/obj/item/weapon/implant/dust/activate(cause)
|
||||
/obj/item/implant/dust/activate(cause)
|
||||
if(!cause || !imp_in || cause == "emp")
|
||||
return 0
|
||||
if(cause == "action_button" && alert(imp_in, "Are you sure you want to activate your dusting implant? This will turn you to ash!", "Dusting Confirmation", "Yes", "No") != "Yes")
|
||||
@@ -166,12 +166,12 @@
|
||||
qdel(I)
|
||||
imp_in.dust()
|
||||
|
||||
/obj/item/weapon/implant/dust/emp_act(severity)
|
||||
/obj/item/implant/dust/emp_act(severity)
|
||||
return
|
||||
|
||||
/obj/item/weapon/implanter/dust
|
||||
/obj/item/implanter/dust
|
||||
name = "implanter (Dust-on-death)"
|
||||
|
||||
/obj/item/weapon/implanter/dust/New()
|
||||
imp = new /obj/item/weapon/implant/dust(src)
|
||||
/obj/item/implanter/dust/New()
|
||||
imp = new /obj/item/implant/dust(src)
|
||||
..()
|
||||
@@ -1,4 +1,4 @@
|
||||
/obj/item/weapon/implant/freedom
|
||||
/obj/item/implant/freedom
|
||||
name = "freedom implant"
|
||||
desc = "Use this to escape from those evil Red Shirts."
|
||||
icon_state = "freedom"
|
||||
@@ -7,7 +7,7 @@
|
||||
uses = 4
|
||||
|
||||
|
||||
/obj/item/weapon/implant/freedom/activate()
|
||||
/obj/item/implant/freedom/activate()
|
||||
uses--
|
||||
to_chat(imp_in, "You feel a faint click.")
|
||||
if(iscarbon(imp_in))
|
||||
@@ -17,7 +17,7 @@
|
||||
qdel(src)
|
||||
|
||||
|
||||
/obj/item/weapon/implant/freedom/get_data()
|
||||
/obj/item/implant/freedom/get_data()
|
||||
var/dat = {"
|
||||
<b>Implant Specifications:</b><BR>
|
||||
<b>Name:</b> Freedom Beacon<BR>
|
||||
@@ -34,18 +34,18 @@ No Implant Specifics"}
|
||||
return dat
|
||||
|
||||
|
||||
/obj/item/weapon/implanter/freedom
|
||||
/obj/item/implanter/freedom
|
||||
name = "implanter (freedom)"
|
||||
|
||||
/obj/item/weapon/implanter/freedom/New()
|
||||
imp = new /obj/item/weapon/implant/freedom(src)
|
||||
/obj/item/implanter/freedom/New()
|
||||
imp = new /obj/item/implant/freedom(src)
|
||||
..()
|
||||
|
||||
|
||||
/obj/item/weapon/implantcase/freedom
|
||||
/obj/item/implantcase/freedom
|
||||
name = "implant case - 'Freedom'"
|
||||
desc = "A glass case containing a freedom implant."
|
||||
|
||||
/obj/item/weapon/implantcase/freedom/New()
|
||||
imp = new /obj/item/weapon/implant/freedom(src)
|
||||
/obj/item/implantcase/freedom/New()
|
||||
imp = new /obj/item/implant/freedom(src)
|
||||
..()
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/obj/item/weapon/implant/krav_maga
|
||||
/obj/item/implant/krav_maga
|
||||
name = "krav maga implant"
|
||||
desc = "Teaches you the arts of Krav Maga in 5 short instructional videos beamed directly into your eyeballs."
|
||||
icon = 'icons/obj/wizard.dmi'
|
||||
@@ -7,7 +7,7 @@
|
||||
origin_tech = "materials=2;biotech=4;combat=5;syndicate=4"
|
||||
var/datum/martial_art/krav_maga/style = new
|
||||
|
||||
/obj/item/weapon/implant/krav_maga/get_data()
|
||||
/obj/item/implant/krav_maga/get_data()
|
||||
var/dat = {"<b>Implant Specifications:</b><BR>
|
||||
<b>Name:</b> Krav Maga Implant<BR>
|
||||
<b>Life:</b> 4 hours after death of host<BR>
|
||||
@@ -15,7 +15,7 @@
|
||||
<b>Function:</b> Teaches even the clumsiest host the arts of Krav Maga."}
|
||||
return dat
|
||||
|
||||
/obj/item/weapon/implant/krav_maga/activate()
|
||||
/obj/item/implant/krav_maga/activate()
|
||||
var/mob/living/carbon/human/H = imp_in
|
||||
if(!ishuman(H))
|
||||
return
|
||||
@@ -24,17 +24,17 @@
|
||||
else
|
||||
style.teach(H,1)
|
||||
|
||||
/obj/item/weapon/implanter/krav_maga
|
||||
/obj/item/implanter/krav_maga
|
||||
name = "implanter (krav maga)"
|
||||
|
||||
/obj/item/weapon/implanter/krav_maga/New()
|
||||
imp = new /obj/item/weapon/implant/krav_maga(src)
|
||||
/obj/item/implanter/krav_maga/New()
|
||||
imp = new /obj/item/implant/krav_maga(src)
|
||||
..()
|
||||
|
||||
/obj/item/weapon/implantcase/krav_maga
|
||||
/obj/item/implantcase/krav_maga
|
||||
name = "implant case - 'Krav Maga'"
|
||||
desc = "A glass case containing an implant that can teach the user the art of Krav Maga."
|
||||
|
||||
/obj/item/weapon/implantcase/krav_maga/New()
|
||||
imp = new /obj/item/weapon/implant/krav_maga(src)
|
||||
/obj/item/implantcase/krav_maga/New()
|
||||
imp = new /obj/item/implant/krav_maga(src)
|
||||
..()
|
||||
@@ -1,10 +1,10 @@
|
||||
/obj/item/weapon/implant/mindshield
|
||||
/obj/item/implant/mindshield
|
||||
name = "mindshield implant"
|
||||
desc = "Stops people messing with your mind."
|
||||
origin_tech = "materials=2;biotech=4;programming=4"
|
||||
activated = 0
|
||||
|
||||
/obj/item/weapon/implant/mindshield/get_data()
|
||||
/obj/item/implant/mindshield/get_data()
|
||||
var/dat = {"<b>Implant Specifications:</b><BR>
|
||||
<b>Name:</b> Nanotrasen Employee Management Implant<BR>
|
||||
<b>Life:</b> Ten years.<BR>
|
||||
@@ -17,7 +17,7 @@
|
||||
return dat
|
||||
|
||||
|
||||
/obj/item/weapon/implant/mindshield/implant(mob/target)
|
||||
/obj/item/implant/mindshield/implant(mob/target)
|
||||
if(..())
|
||||
if(target.mind in ticker.mode.head_revolutionaries || is_shadow_or_thrall(target))
|
||||
target.visible_message("<span class='warning'>[target] seems to resist the implant!</span>", "<span class='warning'>You feel the corporate tendrils of Nanotrasen try to invade your mind!</span>")
|
||||
@@ -33,7 +33,7 @@
|
||||
return 1
|
||||
return 0
|
||||
|
||||
/obj/item/weapon/implant/mindshield/removed(mob/target, var/silent = 0)
|
||||
/obj/item/implant/mindshield/removed(mob/target, var/silent = 0)
|
||||
if(..())
|
||||
if(target.stat != DEAD && !silent)
|
||||
to_chat(target, "<span class='boldnotice'>You feel a sense of liberation as Nanotrasen's grip on your mind fades away.</span>")
|
||||
@@ -41,19 +41,19 @@
|
||||
return 0
|
||||
|
||||
|
||||
/obj/item/weapon/implanter/mindshield
|
||||
/obj/item/implanter/mindshield
|
||||
name = "implanter (mindshield)"
|
||||
|
||||
/obj/item/weapon/implanter/mindshield/New()
|
||||
imp = new /obj/item/weapon/implant/mindshield(src)
|
||||
/obj/item/implanter/mindshield/New()
|
||||
imp = new /obj/item/implant/mindshield(src)
|
||||
..()
|
||||
update_icon()
|
||||
|
||||
|
||||
/obj/item/weapon/implantcase/mindshield
|
||||
/obj/item/implantcase/mindshield
|
||||
name = "implant case - 'mindshield'"
|
||||
desc = "A glass case containing a mindshield implant."
|
||||
|
||||
/obj/item/weapon/implantcase/mindshield/New()
|
||||
imp = new /obj/item/weapon/implant/mindshield(src)
|
||||
/obj/item/implantcase/mindshield/New()
|
||||
imp = new /obj/item/implant/mindshield(src)
|
||||
..()
|
||||
@@ -1,11 +1,11 @@
|
||||
/obj/item/weapon/implant/weapons_auth
|
||||
/obj/item/implant/weapons_auth
|
||||
name = "firearms authentication implant"
|
||||
desc = "Lets you shoot your guns"
|
||||
icon_state = "auth"
|
||||
origin_tech = "magnets=2;programming=7;biotech=5;syndicate=5"
|
||||
activated = 0
|
||||
|
||||
/obj/item/weapon/implant/weapons_auth/get_data()
|
||||
/obj/item/implant/weapons_auth/get_data()
|
||||
var/dat = {"<b>Implant Specifications:</b><BR>
|
||||
<b>Name:</b> Firearms Authentication Implant<BR>
|
||||
<b>Life:</b> 4 hours after death of host<BR>
|
||||
@@ -14,14 +14,14 @@
|
||||
return dat
|
||||
|
||||
|
||||
/obj/item/weapon/implant/adrenalin
|
||||
/obj/item/implant/adrenalin
|
||||
name = "adrenal implant"
|
||||
desc = "Removes all stuns and knockdowns."
|
||||
icon_state = "adrenal"
|
||||
origin_tech = "materials=2;biotech=4;combat=3;syndicate=4"
|
||||
uses = 3
|
||||
|
||||
/obj/item/weapon/implant/adrenalin/get_data()
|
||||
/obj/item/implant/adrenalin/get_data()
|
||||
var/dat = {"<b>Implant Specifications:</b><BR>
|
||||
<b>Name:</b> Cybersun Industries Adrenaline Implant<BR>
|
||||
<b>Life:</b> Five days.<BR>
|
||||
@@ -32,7 +32,7 @@
|
||||
<b>Integrity:</b> Implant can only be used three times before reserves are depleted."}
|
||||
return dat
|
||||
|
||||
/obj/item/weapon/implant/adrenalin/activate()
|
||||
/obj/item/implant/adrenalin/activate()
|
||||
uses--
|
||||
to_chat(imp_in, "<span class='notice'>You feel a sudden surge of energy!</span>")
|
||||
imp_in.SetStunned(0)
|
||||
@@ -49,20 +49,20 @@
|
||||
qdel(src)
|
||||
|
||||
|
||||
/obj/item/weapon/implant/emp
|
||||
/obj/item/implant/emp
|
||||
name = "emp implant"
|
||||
desc = "Triggers an EMP."
|
||||
icon_state = "emp"
|
||||
origin_tech = "biotech=3;magnets=4;syndicate=1"
|
||||
uses = 2
|
||||
|
||||
/obj/item/weapon/implant/emp/activate()
|
||||
/obj/item/implant/emp/activate()
|
||||
uses--
|
||||
empulse(imp_in, 3, 5)
|
||||
if(!uses)
|
||||
qdel(src)
|
||||
|
||||
/obj/item/weapon/implant/cortical
|
||||
/obj/item/implant/cortical
|
||||
name = "cortical stack"
|
||||
desc = "A fist-sized mass of biocircuits and chips."
|
||||
icon_state = "implant_evil"
|
||||
|
||||
@@ -1,29 +1,29 @@
|
||||
/obj/item/weapon/storage/hidden/implant
|
||||
/obj/item/storage/hidden/implant
|
||||
name = "bluespace pocket"
|
||||
storage_slots = 2
|
||||
max_w_class = WEIGHT_CLASS_NORMAL
|
||||
max_combined_w_class = WEIGHT_CLASS_GIGANTIC
|
||||
w_class = WEIGHT_CLASS_BULKY
|
||||
cant_hold = list(/obj/item/weapon/disk/nuclear)
|
||||
cant_hold = list(/obj/item/disk/nuclear)
|
||||
silent = 1
|
||||
|
||||
|
||||
/obj/item/weapon/implant/storage
|
||||
/obj/item/implant/storage
|
||||
name = "storage implant"
|
||||
desc = "Stores up to two big items in a bluespace pocket."
|
||||
icon_state = "storage"
|
||||
origin_tech = "materials=2;magnets=4;bluespace=5;syndicate=4"
|
||||
item_color = "r"
|
||||
var/obj/item/weapon/storage/hidden/implant/storage
|
||||
var/obj/item/storage/hidden/implant/storage
|
||||
|
||||
/obj/item/weapon/implant/storage/New()
|
||||
/obj/item/implant/storage/New()
|
||||
..()
|
||||
storage = new /obj/item/weapon/storage/hidden/implant(src)
|
||||
storage = new /obj/item/storage/hidden/implant(src)
|
||||
|
||||
/obj/item/weapon/implant/storage/activate()
|
||||
/obj/item/implant/storage/activate()
|
||||
storage.MouseDrop(imp_in)
|
||||
|
||||
/obj/item/weapon/implant/storage/removed(source)
|
||||
/obj/item/implant/storage/removed(source)
|
||||
if(..())
|
||||
for(var/mob/M in range(1))
|
||||
if(M.s_active == storage)
|
||||
@@ -32,8 +32,8 @@
|
||||
storage.remove_from_storage(I, get_turf(source))
|
||||
return 1
|
||||
|
||||
/obj/item/weapon/implant/storage/implant(mob/source)
|
||||
var/obj/item/weapon/implant/storage/imp_e = locate(src.type) in source
|
||||
/obj/item/implant/storage/implant(mob/source)
|
||||
var/obj/item/implant/storage/imp_e = locate(src.type) in source
|
||||
if(imp_e)
|
||||
imp_e.storage.storage_slots += storage.storage_slots
|
||||
imp_e.storage.max_combined_w_class += storage.max_combined_w_class
|
||||
@@ -49,13 +49,13 @@
|
||||
|
||||
return ..()
|
||||
|
||||
/obj/item/weapon/implant/storage/proc/get_contents() //Used for swiftly returning a list of the implant's contents i.e. for checking a theft objective's completion.
|
||||
/obj/item/implant/storage/proc/get_contents() //Used for swiftly returning a list of the implant's contents i.e. for checking a theft objective's completion.
|
||||
if(storage && storage.contents)
|
||||
return storage.contents
|
||||
|
||||
/obj/item/weapon/implanter/storage
|
||||
/obj/item/implanter/storage
|
||||
name = "implanter (storage)"
|
||||
|
||||
/obj/item/weapon/implanter/storage/New()
|
||||
imp = new /obj/item/weapon/implant/storage(src)
|
||||
/obj/item/implanter/storage/New()
|
||||
imp = new /obj/item/implant/storage(src)
|
||||
..()
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/obj/item/weapon/implant/tracking
|
||||
/obj/item/implant/tracking
|
||||
name = "tracking implant"
|
||||
desc = "Track with this."
|
||||
activated = 0
|
||||
@@ -6,15 +6,15 @@
|
||||
var/id = 1
|
||||
|
||||
|
||||
/obj/item/weapon/implant/tracking/New()
|
||||
/obj/item/implant/tracking/New()
|
||||
..()
|
||||
tracked_implants += src
|
||||
|
||||
/obj/item/weapon/implant/tracking/Destroy()
|
||||
/obj/item/implant/tracking/Destroy()
|
||||
tracked_implants -= src
|
||||
return ..()
|
||||
|
||||
/obj/item/weapon/implant/tracking/get_data()
|
||||
/obj/item/implant/tracking/get_data()
|
||||
var/dat = {"<b>Implant Specifications:</b><BR>
|
||||
<b>Name:</b> Tracking Beacon<BR>
|
||||
<b>Life:</b> 10 minutes after death of host<BR>
|
||||
@@ -31,10 +31,10 @@
|
||||
Implant Specifics:<BR>"}
|
||||
return dat
|
||||
|
||||
/obj/item/weapon/implantcase/track
|
||||
/obj/item/implantcase/track
|
||||
name = "implant case - 'Tracking'"
|
||||
desc = "A glass case containing a tracking implant."
|
||||
|
||||
/obj/item/weapon/implantcase/track/New()
|
||||
imp = new /obj/item/weapon/implant/tracking(src)
|
||||
/obj/item/implantcase/track/New()
|
||||
imp = new /obj/item/implant/tracking(src)
|
||||
..()
|
||||
@@ -1,10 +1,10 @@
|
||||
/obj/item/weapon/implant/traitor
|
||||
/obj/item/implant/traitor
|
||||
name = "Mindslave Implant"
|
||||
desc = "Divide and Conquer"
|
||||
origin_tech = "programming=5;biotech=5;syndicate=8"
|
||||
activated = 0
|
||||
|
||||
/obj/item/weapon/implant/traitor/get_data()
|
||||
/obj/item/implant/traitor/get_data()
|
||||
var/dat = {"<b>Implant Specifications:</b><BR>
|
||||
<b>Name:</b> Mind-Slave Implant<BR>
|
||||
<b>Life:</b> ??? <BR>
|
||||
@@ -16,7 +16,7 @@
|
||||
<b>Integrity:</b> Implant will last so long as the nanobots are inside the bloodstream."}
|
||||
return dat
|
||||
|
||||
/obj/item/weapon/implant/traitor/implant(mob/M, mob/user)
|
||||
/obj/item/implant/traitor/implant(mob/M, mob/user)
|
||||
if(!activated) //So you can't just keep taking it out and putting it back into other people.
|
||||
var/mob/living/carbon/human/H = M
|
||||
if(ismindslave(H))
|
||||
@@ -81,7 +81,7 @@
|
||||
return 1
|
||||
return 0
|
||||
|
||||
/obj/item/weapon/implant/traitor/removed(mob/target)
|
||||
/obj/item/implant/traitor/removed(mob/target)
|
||||
if(..())
|
||||
ticker.mode.remove_traitor_mind(target.mind)
|
||||
return 1
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/obj/item/weapon/implantcase
|
||||
/obj/item/implantcase
|
||||
name = "implant case"
|
||||
desc = "A glass case containing an implant."
|
||||
icon = 'icons/obj/items.dmi'
|
||||
@@ -9,10 +9,10 @@
|
||||
w_class = WEIGHT_CLASS_TINY
|
||||
origin_tech = "materials=1;biotech=2"
|
||||
materials = list(MAT_GLASS=500)
|
||||
var/obj/item/weapon/implant/imp = null
|
||||
var/obj/item/implant/imp = null
|
||||
|
||||
|
||||
/obj/item/weapon/implantcase/update_icon()
|
||||
/obj/item/implantcase/update_icon()
|
||||
if(imp)
|
||||
icon_state = "implantcase-[imp.item_color]"
|
||||
origin_tech = imp.origin_tech
|
||||
@@ -25,9 +25,9 @@
|
||||
reagents = null
|
||||
|
||||
|
||||
/obj/item/weapon/implantcase/attackby(obj/item/weapon/W, mob/user, params)
|
||||
/obj/item/implantcase/attackby(obj/item/W, mob/user, params)
|
||||
..()
|
||||
if(istype(W, /obj/item/weapon/pen))
|
||||
if(istype(W, /obj/item/pen))
|
||||
var/t = stripped_input(user, "What would you like the label to be?", name, null)
|
||||
if(user.get_active_hand() != W)
|
||||
return
|
||||
@@ -37,8 +37,8 @@
|
||||
name = "implant case - '[t]'"
|
||||
else
|
||||
name = "implant case"
|
||||
else if(istype(W, /obj/item/weapon/implanter))
|
||||
var/obj/item/weapon/implanter/I = W
|
||||
else if(istype(W, /obj/item/implanter))
|
||||
var/obj/item/implanter/I = W
|
||||
if(I.imp)
|
||||
if(imp || I.imp.implanted)
|
||||
return
|
||||
@@ -62,40 +62,40 @@
|
||||
if(I.implanter)
|
||||
src.attackby(I.implanter, user, params) */ // COMING SOON -- c0
|
||||
|
||||
/obj/item/weapon/implantcase/New()
|
||||
/obj/item/implantcase/New()
|
||||
..()
|
||||
update_icon()
|
||||
|
||||
|
||||
/obj/item/weapon/implantcase/tracking
|
||||
/obj/item/implantcase/tracking
|
||||
name = "implant case - 'Tracking'"
|
||||
desc = "A glass case containing a tracking implant."
|
||||
|
||||
/obj/item/weapon/implantcase/tracking/New()
|
||||
imp = new /obj/item/weapon/implant/tracking(src)
|
||||
/obj/item/implantcase/tracking/New()
|
||||
imp = new /obj/item/implant/tracking(src)
|
||||
..()
|
||||
|
||||
|
||||
/obj/item/weapon/implantcase/weapons_auth
|
||||
/obj/item/implantcase/weapons_auth
|
||||
name = "implant case - 'Firearms Authentication'"
|
||||
desc = "A glass case containing a firearms authentication implant."
|
||||
|
||||
/obj/item/weapon/implantcase/weapons_auth/New()
|
||||
imp = new /obj/item/weapon/implant/weapons_auth(src)
|
||||
/obj/item/implantcase/weapons_auth/New()
|
||||
imp = new /obj/item/implant/weapons_auth(src)
|
||||
..()
|
||||
|
||||
/obj/item/weapon/implantcase/adrenaline
|
||||
/obj/item/implantcase/adrenaline
|
||||
name = "implant case - 'Adrenaline'"
|
||||
desc = "A glass case containing an adrenaline implant."
|
||||
|
||||
/obj/item/weapon/implantcase/adrenaline/New()
|
||||
imp = new /obj/item/weapon/implant/adrenalin(src)
|
||||
/obj/item/implantcase/adrenaline/New()
|
||||
imp = new /obj/item/implant/adrenalin(src)
|
||||
..()
|
||||
|
||||
/obj/item/weapon/implantcase/death_alarm
|
||||
/obj/item/implantcase/death_alarm
|
||||
name = "Glass Case- 'Death Alarm'"
|
||||
desc = "A case containing a death alarm implant."
|
||||
|
||||
/obj/item/weapon/implantcase/death_alarm/New()
|
||||
imp = new /obj/item/weapon/implant/death_alarm(src)
|
||||
/obj/item/implantcase/death_alarm/New()
|
||||
imp = new /obj/item/implant/death_alarm(src)
|
||||
..()
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
|
||||
var/ready = 1
|
||||
var/malfunction = 0
|
||||
var/list/obj/item/weapon/implant/mindshield/implant_list = list()
|
||||
var/list/obj/item/implant/mindshield/implant_list = list()
|
||||
var/max_implants = 5
|
||||
var/injection_cooldown = 600
|
||||
var/replenish_cooldown = 6000
|
||||
@@ -72,9 +72,9 @@
|
||||
return
|
||||
|
||||
|
||||
/obj/machinery/implantchair/attackby(obj/item/weapon/W, mob/user, params)
|
||||
if(istype(W, /obj/item/weapon/grab))
|
||||
var/obj/item/weapon/grab/G = W
|
||||
/obj/machinery/implantchair/attackby(obj/item/W, mob/user, params)
|
||||
if(istype(W, /obj/item/grab))
|
||||
var/obj/item/grab/G = W
|
||||
if(!ismob(G.affecting))
|
||||
return
|
||||
var/mob/M = G.affecting
|
||||
@@ -120,9 +120,9 @@
|
||||
if(!istype(M, /mob/living/carbon))
|
||||
return
|
||||
if(!implant_list.len) return
|
||||
for(var/obj/item/weapon/implant/mindshield/imp in implant_list)
|
||||
for(var/obj/item/implant/mindshield/imp in implant_list)
|
||||
if(!imp) continue
|
||||
if(istype(imp, /obj/item/weapon/implant/mindshield))
|
||||
if(istype(imp, /obj/item/implant/mindshield))
|
||||
M.visible_message("<span class='warning'>[M] has been implanted by the [src.name].</span>")
|
||||
|
||||
if(imp.implant(M))
|
||||
@@ -133,7 +133,7 @@
|
||||
|
||||
/obj/machinery/implantchair/add_implants()
|
||||
for(var/i=0, i<src.max_implants, i++)
|
||||
var/obj/item/weapon/implant/mindshield/I = new /obj/item/weapon/implant/mindshield(src)
|
||||
var/obj/item/implant/mindshield/I = new /obj/item/implant/mindshield(src)
|
||||
implant_list += I
|
||||
return
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/obj/item/weapon/implanter
|
||||
/obj/item/implanter
|
||||
name = "implanter"
|
||||
desc = "A sterile automatic implant injector."
|
||||
icon = 'icons/obj/items.dmi'
|
||||
@@ -10,10 +10,10 @@
|
||||
origin_tech = "materials=2;biotech=3"
|
||||
materials = list(MAT_METAL=600, MAT_GLASS=200)
|
||||
toolspeed = 1
|
||||
var/obj/item/weapon/implant/imp = null
|
||||
var/obj/item/implant/imp = null
|
||||
|
||||
|
||||
/obj/item/weapon/implanter/update_icon()
|
||||
/obj/item/implanter/update_icon()
|
||||
if(imp)
|
||||
icon_state = "implanter1"
|
||||
origin_tech = imp.origin_tech
|
||||
@@ -22,7 +22,7 @@
|
||||
origin_tech = initial(origin_tech)
|
||||
|
||||
|
||||
/obj/item/weapon/implanter/attack(mob/living/carbon/M, mob/user)
|
||||
/obj/item/implanter/attack(mob/living/carbon/M, mob/user)
|
||||
if(!iscarbon(M))
|
||||
return
|
||||
if(user && imp)
|
||||
@@ -40,9 +40,9 @@
|
||||
imp = null
|
||||
update_icon()
|
||||
|
||||
/obj/item/weapon/implanter/attackby(obj/item/weapon/W, mob/user, params)
|
||||
/obj/item/implanter/attackby(obj/item/W, mob/user, params)
|
||||
..()
|
||||
if(istype(W, /obj/item/weapon/pen))
|
||||
if(istype(W, /obj/item/pen))
|
||||
var/t = stripped_input(user, "What would you like the label to be?", name, null)
|
||||
if(user.get_active_hand() != W)
|
||||
return
|
||||
@@ -53,37 +53,37 @@
|
||||
else
|
||||
name = "implanter"
|
||||
|
||||
/obj/item/weapon/implanter/New()
|
||||
/obj/item/implanter/New()
|
||||
..()
|
||||
spawn(1)
|
||||
update_icon()
|
||||
|
||||
|
||||
/obj/item/weapon/implanter/adrenalin
|
||||
/obj/item/implanter/adrenalin
|
||||
name = "implanter (adrenalin)"
|
||||
|
||||
/obj/item/weapon/implanter/adrenalin/New()
|
||||
imp = new /obj/item/weapon/implant/adrenalin(src)
|
||||
/obj/item/implanter/adrenalin/New()
|
||||
imp = new /obj/item/implant/adrenalin(src)
|
||||
..()
|
||||
|
||||
|
||||
/obj/item/weapon/implanter/emp
|
||||
/obj/item/implanter/emp
|
||||
name = "implanter (EMP)"
|
||||
|
||||
/obj/item/weapon/implanter/emp/New()
|
||||
imp = new /obj/item/weapon/implant/emp(src)
|
||||
/obj/item/implanter/emp/New()
|
||||
imp = new /obj/item/implant/emp(src)
|
||||
..()
|
||||
|
||||
/obj/item/weapon/implanter/traitor
|
||||
/obj/item/implanter/traitor
|
||||
name = "implanter (Mindslave)"
|
||||
|
||||
/obj/item/weapon/implanter/traitor/New()
|
||||
imp = new /obj/item/weapon/implant/traitor(src)
|
||||
/obj/item/implanter/traitor/New()
|
||||
imp = new /obj/item/implant/traitor(src)
|
||||
..()
|
||||
|
||||
/obj/item/weapon/implanter/death_alarm
|
||||
/obj/item/implanter/death_alarm
|
||||
name = "implanter (Death Alarm)"
|
||||
|
||||
/obj/item/weapon/implanter/death_alarm/New()
|
||||
imp = new /obj/item/weapon/implant/death_alarm(src)
|
||||
/obj/item/implanter/death_alarm/New()
|
||||
imp = new /obj/item/implant/death_alarm(src)
|
||||
..()
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/obj/item/weapon/implantpad
|
||||
/obj/item/implantpad
|
||||
name = "implantpad"
|
||||
desc = "Used to modify implants."
|
||||
icon = 'icons/obj/items.dmi'
|
||||
@@ -7,21 +7,21 @@
|
||||
throw_speed = 3
|
||||
throw_range = 5
|
||||
w_class = WEIGHT_CLASS_SMALL
|
||||
var/obj/item/weapon/implantcase/case = null
|
||||
var/obj/item/implantcase/case = null
|
||||
|
||||
/obj/item/weapon/implantpad/Destroy()
|
||||
/obj/item/implantpad/Destroy()
|
||||
if(case)
|
||||
dropcase()
|
||||
return ..()
|
||||
|
||||
/obj/item/weapon/implantpad/update_icon()
|
||||
/obj/item/implantpad/update_icon()
|
||||
if(case)
|
||||
src.icon_state = "implantpad-1"
|
||||
else
|
||||
src.icon_state = "implantpad-0"
|
||||
return
|
||||
|
||||
/obj/item/weapon/implantpad/proc/addcase(mob/user as mob, obj/item/weapon/implantcase/C as obj)
|
||||
/obj/item/implantpad/proc/addcase(mob/user as mob, obj/item/implantcase/C as obj)
|
||||
if(!user || !C)
|
||||
return
|
||||
if(case)
|
||||
@@ -32,7 +32,7 @@
|
||||
case = C
|
||||
update_icon()
|
||||
|
||||
/obj/item/weapon/implantpad/proc/dropcase(mob/user as mob)
|
||||
/obj/item/implantpad/proc/dropcase(mob/user as mob)
|
||||
if(!case)
|
||||
to_chat(user, "<span class='warning'>There's no implant in the pad!</span>")
|
||||
return
|
||||
@@ -48,7 +48,7 @@
|
||||
case = null
|
||||
update_icon()
|
||||
|
||||
/obj/item/weapon/implantpad/verb/remove_implant()
|
||||
/obj/item/implantpad/verb/remove_implant()
|
||||
set category = "Object"
|
||||
set name = "Remove Implant"
|
||||
set src in usr
|
||||
@@ -58,23 +58,23 @@
|
||||
|
||||
dropcase(usr)
|
||||
|
||||
/obj/item/weapon/implantpad/attackby(obj/item/weapon/implantcase/C as obj, mob/user as mob, params)
|
||||
if(istype(C, /obj/item/weapon/implantcase))
|
||||
/obj/item/implantpad/attackby(obj/item/implantcase/C as obj, mob/user as mob, params)
|
||||
if(istype(C, /obj/item/implantcase))
|
||||
addcase(user, C)
|
||||
else
|
||||
return ..()
|
||||
|
||||
/obj/item/weapon/implantpad/attack_self(mob/user as mob)
|
||||
/obj/item/implantpad/attack_self(mob/user as mob)
|
||||
add_fingerprint(user)
|
||||
user.set_machine(src)
|
||||
var/dat = "<B>Implant Mini-Computer:</B><HR>"
|
||||
if(case)
|
||||
if(case.imp)
|
||||
if(istype(case.imp, /obj/item/weapon/implant))
|
||||
if(istype(case.imp, /obj/item/implant))
|
||||
dat += "<A href='byond://?src=[UID()];removecase=1'>Remove Case</A><HR>"
|
||||
dat += case.imp.get_data()
|
||||
if(istype(case.imp, /obj/item/weapon/implant/tracking))
|
||||
var/obj/item/weapon/implant/tracking/T = case.imp
|
||||
if(istype(case.imp, /obj/item/implant/tracking))
|
||||
var/obj/item/implant/tracking/T = case.imp
|
||||
dat += {"ID (1-100):
|
||||
<A href='byond://?src=[UID()];tracking_id=-10'>-</A>
|
||||
<A href='byond://?src=[UID()];tracking_id=-1'>-</A> [T.id]
|
||||
@@ -89,14 +89,14 @@
|
||||
return
|
||||
|
||||
|
||||
/obj/item/weapon/implantpad/Topic(href, href_list)
|
||||
/obj/item/implantpad/Topic(href, href_list)
|
||||
if(..())
|
||||
return 1
|
||||
|
||||
var/mob/living/user = usr
|
||||
if(href_list["tracking_id"])
|
||||
if(case && case.imp)
|
||||
var/obj/item/weapon/implant/tracking/T = case.imp
|
||||
var/obj/item/implant/tracking/T = case.imp
|
||||
T.id += text2num(href_list["tracking_id"])
|
||||
T.id = min(100, T.id)
|
||||
T.id = max(1, T.id)
|
||||
|
||||
@@ -1,17 +1,17 @@
|
||||
/obj/item/weapon/implant/uplink
|
||||
/obj/item/implant/uplink
|
||||
name = "uplink implant"
|
||||
desc = "Summon things."
|
||||
icon = 'icons/obj/radio.dmi'
|
||||
icon_state = "radio"
|
||||
origin_tech = "materials=4;magnets=4;programming=4;biotech=4;syndicate=5;bluespace=5"
|
||||
|
||||
/obj/item/weapon/implant/uplink/New()
|
||||
/obj/item/implant/uplink/New()
|
||||
hidden_uplink = new(src)
|
||||
hidden_uplink.uses = 10
|
||||
..()
|
||||
|
||||
/obj/item/weapon/implant/uplink/implant(mob/source)
|
||||
var/obj/item/weapon/implant/imp_e = locate(src.type) in source
|
||||
/obj/item/implant/uplink/implant(mob/source)
|
||||
var/obj/item/implant/imp_e = locate(src.type) in source
|
||||
if(imp_e && imp_e != src)
|
||||
imp_e.hidden_uplink.uses += hidden_uplink.uses
|
||||
qdel(src)
|
||||
@@ -22,14 +22,14 @@
|
||||
return 1
|
||||
return 0
|
||||
|
||||
/obj/item/weapon/implant/uplink/activate()
|
||||
/obj/item/implant/uplink/activate()
|
||||
if(hidden_uplink)
|
||||
hidden_uplink.check_trigger(imp_in)
|
||||
|
||||
|
||||
/obj/item/weapon/implanter/uplink
|
||||
/obj/item/implanter/uplink
|
||||
name = "implanter (uplink)"
|
||||
|
||||
/obj/item/weapon/implanter/uplink/New()
|
||||
imp = new /obj/item/weapon/implant/uplink(src)
|
||||
/obj/item/implanter/uplink/New()
|
||||
imp = new /obj/item/implant/uplink(src)
|
||||
..()
|
||||
|
||||
@@ -10,14 +10,14 @@
|
||||
* Candy Moulds
|
||||
*/
|
||||
|
||||
/obj/item/weapon/kitchen
|
||||
/obj/item/kitchen
|
||||
icon = 'icons/obj/kitchen.dmi'
|
||||
origin_tech = "materials=1"
|
||||
|
||||
/*
|
||||
* Utensils
|
||||
*/
|
||||
/obj/item/weapon/kitchen/utensil
|
||||
/obj/item/kitchen/utensil
|
||||
force = 5.0
|
||||
w_class = WEIGHT_CLASS_TINY
|
||||
throwforce = 0.0
|
||||
@@ -29,14 +29,14 @@
|
||||
sharp = 0
|
||||
var/max_contents = 1
|
||||
|
||||
/obj/item/weapon/kitchen/utensil/New()
|
||||
/obj/item/kitchen/utensil/New()
|
||||
if(prob(60))
|
||||
src.pixel_y = rand(0, 4)
|
||||
|
||||
create_reagents(5)
|
||||
return
|
||||
|
||||
/obj/item/weapon/kitchen/utensil/attack(mob/living/carbon/M as mob, mob/living/carbon/user as mob)
|
||||
/obj/item/kitchen/utensil/attack(mob/living/carbon/M as mob, mob/living/carbon/user as mob)
|
||||
if(!istype(M))
|
||||
return ..()
|
||||
|
||||
@@ -49,7 +49,7 @@
|
||||
return ..()
|
||||
|
||||
if(contents.len)
|
||||
var/obj/item/weapon/reagent_containers/food/snacks/toEat = contents[1]
|
||||
var/obj/item/reagent_containers/food/snacks/toEat = contents[1]
|
||||
if(istype(toEat))
|
||||
if(M.eat(toEat, user))
|
||||
toEat.On_Consume(M, user)
|
||||
@@ -60,35 +60,35 @@
|
||||
return
|
||||
|
||||
|
||||
/obj/item/weapon/kitchen/utensil/fork
|
||||
/obj/item/kitchen/utensil/fork
|
||||
name = "fork"
|
||||
desc = "It's a fork. Sure is pointy."
|
||||
icon_state = "fork"
|
||||
|
||||
/obj/item/weapon/kitchen/utensil/pfork
|
||||
/obj/item/kitchen/utensil/pfork
|
||||
name = "plastic fork"
|
||||
desc = "Yay, no washing up to do."
|
||||
icon_state = "pfork"
|
||||
|
||||
/obj/item/weapon/kitchen/utensil/spoon
|
||||
/obj/item/kitchen/utensil/spoon
|
||||
name = "spoon"
|
||||
desc = "It's a spoon. You can see your own upside-down face in it."
|
||||
icon_state = "spoon"
|
||||
attack_verb = list("attacked", "poked")
|
||||
|
||||
/obj/item/weapon/kitchen/utensil/pspoon
|
||||
/obj/item/kitchen/utensil/pspoon
|
||||
name = "plastic spoon"
|
||||
desc = "It's a plastic spoon. How dull."
|
||||
icon_state = "pspoon"
|
||||
attack_verb = list("attacked", "poked")
|
||||
|
||||
/obj/item/weapon/kitchen/utensil/spork
|
||||
/obj/item/kitchen/utensil/spork
|
||||
name = "spork"
|
||||
desc = "It's a spork. Marvel at its innovative design."
|
||||
icon_state = "spork"
|
||||
attack_verb = list("attacked", "sporked")
|
||||
|
||||
/obj/item/weapon/kitchen/utensil/pspork
|
||||
/obj/item/kitchen/utensil/pspork
|
||||
name = "plastic spork"
|
||||
desc = "It's a plastic spork. It's the fork side of the spoon!"
|
||||
icon_state = "pspork"
|
||||
@@ -97,7 +97,7 @@
|
||||
/*
|
||||
* Knives
|
||||
*/
|
||||
/obj/item/weapon/kitchen/knife
|
||||
/obj/item/kitchen/knife
|
||||
name = "kitchen knife"
|
||||
icon_state = "knife"
|
||||
desc = "A general purpose Chef's Knife made by SpaceCook Incorporated. Guaranteed to stay sharp for years to come."
|
||||
@@ -112,27 +112,27 @@
|
||||
attack_verb = list("slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut")
|
||||
sharp = 1
|
||||
|
||||
/obj/item/weapon/kitchen/knife/suicide_act(mob/user)
|
||||
/obj/item/kitchen/knife/suicide_act(mob/user)
|
||||
user.visible_message(pick("<span class='suicide'>[user] is slitting \his wrists with the [src.name]! It looks like \he's trying to commit suicide.</span>", \
|
||||
"<span class='suicide'>[user] is slitting \his throat with the [src.name]! It looks like \he's trying to commit suicide.</span>", \
|
||||
"<span class='suicide'>[user] is slitting \his stomach open with the [src.name]! It looks like \he's trying to commit seppuku.</span>"))
|
||||
return (BRUTELOSS)
|
||||
|
||||
/obj/item/weapon/kitchen/knife/plastic
|
||||
/obj/item/kitchen/knife/plastic
|
||||
name = "plastic knife"
|
||||
desc = "The bluntest of blades."
|
||||
icon_state = "pknife"
|
||||
item_state = "knife"
|
||||
sharp = 0
|
||||
|
||||
/obj/item/weapon/kitchen/knife/ritual
|
||||
/obj/item/kitchen/knife/ritual
|
||||
name = "ritual knife"
|
||||
desc = "The unearthly energies that once powered this blade are now dormant."
|
||||
icon = 'icons/obj/wizard.dmi'
|
||||
icon_state = "render"
|
||||
w_class = WEIGHT_CLASS_NORMAL
|
||||
|
||||
/obj/item/weapon/kitchen/knife/butcher
|
||||
/obj/item/kitchen/knife/butcher
|
||||
name = "butcher's cleaver"
|
||||
icon_state = "butch"
|
||||
desc = "A huge thing used for chopping and chopping up meat. This includes clowns and clown-by-products."
|
||||
@@ -142,7 +142,7 @@
|
||||
attack_verb = list("cleaved", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut")
|
||||
w_class = WEIGHT_CLASS_NORMAL
|
||||
|
||||
/obj/item/weapon/kitchen/knife/butcher/meatcleaver
|
||||
/obj/item/kitchen/knife/butcher/meatcleaver
|
||||
name = "Meat Cleaver"
|
||||
icon_state = "mcleaver"
|
||||
item_state = "butch"
|
||||
@@ -150,7 +150,7 @@
|
||||
force = 25.0
|
||||
throwforce = 15.0
|
||||
|
||||
/obj/item/weapon/kitchen/knife/combat
|
||||
/obj/item/kitchen/knife/combat
|
||||
name = "combat knife"
|
||||
icon_state = "combatknife"
|
||||
item_state = "knife"
|
||||
@@ -160,14 +160,14 @@
|
||||
origin_tech = "materials=3;combat=4"
|
||||
attack_verb = list("slashed", "stabbed", "sliced", "torn", "ripped", "cut")
|
||||
|
||||
/obj/item/weapon/kitchen/knife/combat/cyborg
|
||||
/obj/item/kitchen/knife/combat/cyborg
|
||||
name = "cyborg knife"
|
||||
icon = 'icons/obj/items_cyborg.dmi'
|
||||
icon_state = "knife"
|
||||
desc = "A cyborg-mounted plasteel knife. Extremely sharp and durable."
|
||||
origin_tech = null
|
||||
|
||||
/obj/item/weapon/kitchen/knife/carrotshiv
|
||||
/obj/item/kitchen/knife/carrotshiv
|
||||
name = "carrot shiv"
|
||||
icon_state = "carrotshiv"
|
||||
item_state = "carrotshiv"
|
||||
@@ -182,7 +182,7 @@
|
||||
* Rolling Pins
|
||||
*/
|
||||
|
||||
/obj/item/weapon/kitchen/rollingpin
|
||||
/obj/item/kitchen/rollingpin
|
||||
name = "rolling pin"
|
||||
desc = "Used to knock out the Bartender."
|
||||
icon_state = "rolling_pin"
|
||||
@@ -193,13 +193,13 @@
|
||||
w_class = WEIGHT_CLASS_NORMAL
|
||||
attack_verb = list("bashed", "battered", "bludgeoned", "thrashed", "whacked")
|
||||
|
||||
/* Trays moved to /obj/item/weapon/storage/bag */
|
||||
/* Trays moved to /obj/item/storage/bag */
|
||||
|
||||
/*
|
||||
* Candy Moulds
|
||||
*/
|
||||
|
||||
/obj/item/weapon/kitchen/mould
|
||||
/obj/item/kitchen/mould
|
||||
name = "generic candy mould"
|
||||
desc = "You aren't sure what it's supposed to be."
|
||||
icon_state = "mould"
|
||||
@@ -210,42 +210,42 @@
|
||||
w_class = WEIGHT_CLASS_SMALL
|
||||
attack_verb = list("bashed", "battered", "bludgeoned", "thrashed", "smashed")
|
||||
|
||||
/obj/item/weapon/kitchen/mould/bear
|
||||
/obj/item/kitchen/mould/bear
|
||||
name = "bear-shaped candy mould"
|
||||
desc = "It has the shape of a small bear imprinted into it."
|
||||
icon_state = "mould_bear"
|
||||
|
||||
/obj/item/weapon/kitchen/mould/worm
|
||||
/obj/item/kitchen/mould/worm
|
||||
name = "worm-shaped candy mould"
|
||||
desc = "It has the shape of a worm imprinted into it."
|
||||
icon_state = "mould_worm"
|
||||
|
||||
/obj/item/weapon/kitchen/mould/bean
|
||||
/obj/item/kitchen/mould/bean
|
||||
name = "bean-shaped candy mould"
|
||||
desc = "It has the shape of a bean imprinted into it."
|
||||
icon_state = "mould_bean"
|
||||
|
||||
/obj/item/weapon/kitchen/mould/ball
|
||||
/obj/item/kitchen/mould/ball
|
||||
name = "ball-shaped candy mould"
|
||||
desc = "It has a small sphere imprinted into it."
|
||||
icon_state = "mould_ball"
|
||||
|
||||
/obj/item/weapon/kitchen/mould/cane
|
||||
/obj/item/kitchen/mould/cane
|
||||
name = "cane-shaped candy mould"
|
||||
desc = "It has the shape of a cane imprinted into it."
|
||||
icon_state = "mould_cane"
|
||||
|
||||
/obj/item/weapon/kitchen/mould/cash
|
||||
/obj/item/kitchen/mould/cash
|
||||
name = "cash-shaped candy mould"
|
||||
desc = "It has the shape and design of fake money imprinted into it."
|
||||
icon_state = "mould_cash"
|
||||
|
||||
/obj/item/weapon/kitchen/mould/coin
|
||||
/obj/item/kitchen/mould/coin
|
||||
name = "coin-shaped candy mould"
|
||||
desc = "It has the shape of a coin imprinted into it."
|
||||
icon_state = "mould_coin"
|
||||
|
||||
/obj/item/weapon/kitchen/mould/loli
|
||||
/obj/item/kitchen/mould/loli
|
||||
name = "sucker mould"
|
||||
desc = "It has the shape of a sucker imprinted into it."
|
||||
icon_state = "mould_loli"
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/obj/item/weapon/restraints/legcuffs
|
||||
/obj/item/restraints/legcuffs
|
||||
name = "leg cuffs"
|
||||
desc = "Use this to keep prisoners in line."
|
||||
gender = PLURAL
|
||||
@@ -11,7 +11,7 @@
|
||||
slowdown = 7
|
||||
breakouttime = 300 //Deciseconds = 30s = 0.5 minute
|
||||
|
||||
/obj/item/weapon/restraints/legcuffs/beartrap
|
||||
/obj/item/restraints/legcuffs/beartrap
|
||||
name = "bear trap"
|
||||
throw_speed = 1
|
||||
throw_range = 1
|
||||
@@ -20,32 +20,32 @@
|
||||
origin_tech = "engineering=4"
|
||||
var/armed = 0
|
||||
var/trap_damage = 20
|
||||
var/obj/item/weapon/grenade/iedcasing/IED = null
|
||||
var/obj/item/grenade/iedcasing/IED = null
|
||||
var/obj/item/device/assembly/signaler/sig = null
|
||||
|
||||
/obj/item/weapon/restraints/legcuffs/beartrap/New()
|
||||
/obj/item/restraints/legcuffs/beartrap/New()
|
||||
..()
|
||||
icon_state = "[initial(icon_state)][armed]"
|
||||
|
||||
/obj/item/weapon/restraints/legcuffs/beartrap/Destroy()
|
||||
/obj/item/restraints/legcuffs/beartrap/Destroy()
|
||||
QDEL_NULL(IED)
|
||||
QDEL_NULL(sig)
|
||||
return ..()
|
||||
|
||||
/obj/item/weapon/restraints/legcuffs/beartrap/suicide_act(mob/user)
|
||||
/obj/item/restraints/legcuffs/beartrap/suicide_act(mob/user)
|
||||
user.visible_message("<span class='suicide'>[user] is sticking \his head in the [src.name]! It looks like \he's trying to commit suicide.</span>")
|
||||
playsound(loc, 'sound/weapons/bladeslice.ogg', 50, 1, -1)
|
||||
return (BRUTELOSS)
|
||||
|
||||
/obj/item/weapon/restraints/legcuffs/beartrap/attack_self(mob/user)
|
||||
/obj/item/restraints/legcuffs/beartrap/attack_self(mob/user)
|
||||
..()
|
||||
if(ishuman(user) && !user.stat && !user.restrained())
|
||||
armed = !armed
|
||||
icon_state = "[initial(icon_state)][armed]"
|
||||
to_chat(user, "<span class='notice'>[src] is now [armed ? "armed" : "disarmed"]</span>")
|
||||
|
||||
/obj/item/weapon/restraints/legcuffs/beartrap/attackby(obj/item/I, mob/user) //Let's get explosive.
|
||||
if(istype(I, /obj/item/weapon/grenade/iedcasing))
|
||||
/obj/item/restraints/legcuffs/beartrap/attackby(obj/item/I, mob/user) //Let's get explosive.
|
||||
if(istype(I, /obj/item/grenade/iedcasing))
|
||||
if(IED)
|
||||
to_chat(user, "<span class='warning'>This beartrap already has an IED hooked up to it!</span>")
|
||||
return
|
||||
@@ -74,7 +74,7 @@
|
||||
I.forceMove(src)
|
||||
to_chat(user, "<span class='notice'>You sneak the [sig] underneath the pressure plate and connect the trigger wire.</span>")
|
||||
desc = "A trap used to catch bears and other legged creatures. <span class='warning'>There is a remote signaler hooked up to it.</span>"
|
||||
if(istype(I, /obj/item/weapon/screwdriver))
|
||||
if(istype(I, /obj/item/screwdriver))
|
||||
if(IED)
|
||||
IED.forceMove(get_turf(src))
|
||||
IED = null
|
||||
@@ -87,7 +87,7 @@
|
||||
return
|
||||
..()
|
||||
|
||||
/obj/item/weapon/restraints/legcuffs/beartrap/Crossed(AM as mob|obj)
|
||||
/obj/item/restraints/legcuffs/beartrap/Crossed(AM as mob|obj)
|
||||
if(armed && isturf(src.loc))
|
||||
if( (iscarbon(AM) || isanimal(AM)) && !istype(AM, /mob/living/simple_animal/parrot) && !istype(AM, /mob/living/simple_animal/hostile/construct) && !istype(AM, /mob/living/simple_animal/shade) && !istype(AM, /mob/living/simple_animal/hostile/viscerator))
|
||||
var/mob/living/L = AM
|
||||
@@ -123,31 +123,31 @@
|
||||
L.apply_damage(trap_damage, BRUTE)
|
||||
..()
|
||||
|
||||
/obj/item/weapon/restraints/legcuffs/beartrap/energy
|
||||
/obj/item/restraints/legcuffs/beartrap/energy
|
||||
name = "energy snare"
|
||||
armed = 1
|
||||
icon_state = "e_snare"
|
||||
trap_damage = 0
|
||||
flags = DROPDEL
|
||||
|
||||
/obj/item/weapon/restraints/legcuffs/beartrap/energy/New()
|
||||
/obj/item/restraints/legcuffs/beartrap/energy/New()
|
||||
..()
|
||||
addtimer(src, "dissipate", 100)
|
||||
|
||||
/obj/item/weapon/restraints/legcuffs/beartrap/energy/proc/dissipate()
|
||||
/obj/item/restraints/legcuffs/beartrap/energy/proc/dissipate()
|
||||
if(!ismob(loc))
|
||||
var/datum/effect_system/spark_spread/sparks = new /datum/effect_system/spark_spread
|
||||
sparks.set_up(1, 1, src)
|
||||
sparks.start()
|
||||
qdel(src)
|
||||
|
||||
/obj/item/weapon/restraints/legcuffs/beartrap/energy/attack_hand(mob/user)
|
||||
/obj/item/restraints/legcuffs/beartrap/energy/attack_hand(mob/user)
|
||||
Crossed(user) //honk
|
||||
|
||||
/obj/item/weapon/restraints/legcuffs/beartrap/energy/cyborg
|
||||
/obj/item/restraints/legcuffs/beartrap/energy/cyborg
|
||||
breakouttime = 20 // Cyborgs shouldn't have a strong restraint
|
||||
|
||||
/obj/item/weapon/restraints/legcuffs/bola
|
||||
/obj/item/restraints/legcuffs/bola
|
||||
name = "bola"
|
||||
desc = "A restraining device designed to be thrown at the target. Upon connecting with said target, it will wrap around their legs, making it difficult for them to move quickly."
|
||||
icon_state = "bola"
|
||||
@@ -156,7 +156,7 @@
|
||||
origin_tech = "engineering=3;combat=1"
|
||||
var/weaken = 0
|
||||
|
||||
/obj/item/weapon/restraints/legcuffs/bola/throw_impact(atom/hit_atom)
|
||||
/obj/item/restraints/legcuffs/bola/throw_impact(atom/hit_atom)
|
||||
if(..() || !iscarbon(hit_atom))//if it gets caught or the target can't be cuffed,
|
||||
return//abort
|
||||
var/mob/living/carbon/C = hit_atom
|
||||
@@ -169,7 +169,7 @@
|
||||
to_chat(C, "<span class='userdanger'>[src] ensnares you!</span>")
|
||||
C.Weaken(weaken)
|
||||
|
||||
/obj/item/weapon/restraints/legcuffs/bola/tactical //traitor variant
|
||||
/obj/item/restraints/legcuffs/bola/tactical //traitor variant
|
||||
name = "reinforced bola"
|
||||
desc = "A strong bola, made with a long steel chain. It looks heavy, enough so that it could trip somebody."
|
||||
icon_state = "bola_r"
|
||||
@@ -177,7 +177,7 @@
|
||||
origin_tech = "engineering=4;combat=3"
|
||||
weaken = 1
|
||||
|
||||
/obj/item/weapon/restraints/legcuffs/bola/energy //For Security
|
||||
/obj/item/restraints/legcuffs/bola/energy //For Security
|
||||
name = "energy bola"
|
||||
desc = "A specialized hard-light bola designed to ensnare fleeing criminals and aid in arrests."
|
||||
icon_state = "ebola"
|
||||
@@ -185,9 +185,9 @@
|
||||
w_class = WEIGHT_CLASS_SMALL
|
||||
breakouttime = 60
|
||||
|
||||
/obj/item/weapon/restraints/legcuffs/bola/energy/throw_impact(atom/hit_atom)
|
||||
/obj/item/restraints/legcuffs/bola/energy/throw_impact(atom/hit_atom)
|
||||
if(iscarbon(hit_atom))
|
||||
var/obj/item/weapon/restraints/legcuffs/beartrap/B = new /obj/item/weapon/restraints/legcuffs/beartrap/energy/cyborg(get_turf(hit_atom))
|
||||
var/obj/item/restraints/legcuffs/beartrap/B = new /obj/item/restraints/legcuffs/beartrap/energy/cyborg(get_turf(hit_atom))
|
||||
B.Crossed(hit_atom)
|
||||
qdel(src)
|
||||
..()
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/////////
|
||||
//ZIPPO//
|
||||
/////////
|
||||
/obj/item/weapon/lighter
|
||||
/obj/item/lighter
|
||||
name = "cheap lighter"
|
||||
desc = "A cheap-as-free lighter."
|
||||
icon = 'icons/obj/items.dmi'
|
||||
@@ -16,7 +16,7 @@
|
||||
attack_verb = null
|
||||
var/lit = 0
|
||||
|
||||
/obj/item/weapon/lighter/zippo
|
||||
/obj/item/lighter/zippo
|
||||
name = "zippo lighter"
|
||||
desc = "The zippo."
|
||||
icon_state = "zippo"
|
||||
@@ -24,14 +24,14 @@
|
||||
icon_on = "zippoon"
|
||||
icon_off = "zippo"
|
||||
|
||||
/obj/item/weapon/lighter/random
|
||||
/obj/item/lighter/random
|
||||
New()
|
||||
var/color = pick("r","c","y","g")
|
||||
icon_on = "lighter-[color]-on"
|
||||
icon_off = "lighter-[color]"
|
||||
icon_state = icon_off
|
||||
|
||||
/obj/item/weapon/lighter/attack_self(mob/living/user)
|
||||
/obj/item/lighter/attack_self(mob/living/user)
|
||||
if(user.r_hand == src || user.l_hand == src || isrobot(user))
|
||||
if(!lit)
|
||||
lit = 1
|
||||
@@ -42,7 +42,7 @@
|
||||
damtype = "fire"
|
||||
hitsound = 'sound/items/welder.ogg'
|
||||
attack_verb = list("burnt", "singed")
|
||||
if(istype(src, /obj/item/weapon/lighter/zippo) )
|
||||
if(istype(src, /obj/item/lighter/zippo) )
|
||||
user.visible_message("<span class='rose'>Without even breaking stride, [user] flips open and lights [src] in one smooth movement.</span>")
|
||||
playsound(src.loc, 'sound/items/ZippoLight.ogg', 25, 1)
|
||||
else
|
||||
@@ -69,7 +69,7 @@
|
||||
hitsound = "swing_hit"
|
||||
force = 0
|
||||
attack_verb = null //human_defense.dm takes care of it
|
||||
if(istype(src, /obj/item/weapon/lighter/zippo) )
|
||||
if(istype(src, /obj/item/lighter/zippo) )
|
||||
user.visible_message("<span class='rose'>You hear a quiet click, as [user] shuts off [src] without even looking at what they're doing. Wow.")
|
||||
playsound(src.loc, 'sound/items/ZippoClose.ogg', 25, 1)
|
||||
else
|
||||
@@ -82,7 +82,7 @@
|
||||
return
|
||||
|
||||
|
||||
/obj/item/weapon/lighter/attack(mob/living/carbon/M as mob, mob/living/carbon/user as mob)
|
||||
/obj/item/lighter/attack(mob/living/carbon/M as mob, mob/living/carbon/user as mob)
|
||||
if(!isliving(M))
|
||||
return
|
||||
M.IgniteMob()
|
||||
@@ -94,7 +94,7 @@
|
||||
if(M == user)
|
||||
cig.attackby(src, user)
|
||||
else
|
||||
if(istype(src, /obj/item/weapon/lighter/zippo))
|
||||
if(istype(src, /obj/item/lighter/zippo))
|
||||
cig.light("<span class='rose'>[user] whips the [name] out and holds it for [M]. Their arm is as steady as the unflickering flame they light \the [cig] with.</span>")
|
||||
else
|
||||
cig.light("<span class='notice'>[user] holds the [name] out for [M], and lights the [cig.name].</span>")
|
||||
@@ -102,42 +102,42 @@
|
||||
else
|
||||
..()
|
||||
|
||||
/obj/item/weapon/lighter/process()
|
||||
/obj/item/lighter/process()
|
||||
var/turf/location = get_turf(src)
|
||||
if(location)
|
||||
location.hotspot_expose(700, 5)
|
||||
return
|
||||
|
||||
//EXTRA LIGHTERS
|
||||
/obj/item/weapon/lighter/zippo/nt_rep
|
||||
/obj/item/lighter/zippo/nt_rep
|
||||
name = "gold engraved zippo"
|
||||
desc = "An engraved golden Zippo lighter with the letters NT on it."
|
||||
icon_state = "zippo_nt_off"
|
||||
icon_on = "zippo_nt_on"
|
||||
icon_off = "zippo_nt_off"
|
||||
|
||||
/obj/item/weapon/lighter/zippo/blue
|
||||
/obj/item/lighter/zippo/blue
|
||||
name = "blue zippo lighter"
|
||||
desc = "A zippo lighter made of some blue metal."
|
||||
icon_state = "bluezippo"
|
||||
icon_on = "bluezippoon"
|
||||
icon_off = "bluezippo"
|
||||
|
||||
/obj/item/weapon/lighter/zippo/black
|
||||
/obj/item/lighter/zippo/black
|
||||
name = "black zippo lighter"
|
||||
desc = "A black zippo lighter."
|
||||
icon_state = "blackzippo"
|
||||
icon_on = "blackzippoon"
|
||||
icon_off = "blackzippo"
|
||||
|
||||
/obj/item/weapon/lighter/zippo/engraved
|
||||
/obj/item/lighter/zippo/engraved
|
||||
name = "engraved zippo lighter"
|
||||
desc = "A intricately engraved zippo lighter."
|
||||
icon_state = "engravedzippo"
|
||||
icon_on = "engravedzippoon"
|
||||
icon_off = "engravedzippo"
|
||||
|
||||
/obj/item/weapon/lighter/zippo/gonzofist
|
||||
/obj/item/lighter/zippo/gonzofist
|
||||
name = "Gonzo Fist zippo"
|
||||
desc = "A Zippo lighter with the iconic Gonzo Fist on a matte black finish."
|
||||
icon_state = "gonzozippo"
|
||||
@@ -147,7 +147,7 @@
|
||||
///////////
|
||||
//MATCHES//
|
||||
///////////
|
||||
/obj/item/weapon/match
|
||||
/obj/item/match
|
||||
name = "match"
|
||||
desc = "A simple match stick, used for lighting fine smokables."
|
||||
icon = 'icons/obj/cigarettes.dmi'
|
||||
@@ -159,7 +159,7 @@
|
||||
origin_tech = "materials=1"
|
||||
attack_verb = null
|
||||
|
||||
/obj/item/weapon/match/process()
|
||||
/obj/item/match/process()
|
||||
var/turf/location = get_turf(src)
|
||||
smoketime--
|
||||
if(smoketime < 1)
|
||||
@@ -168,10 +168,10 @@
|
||||
location.hotspot_expose(700, 5)
|
||||
return
|
||||
|
||||
/obj/item/weapon/match/fire_act()
|
||||
/obj/item/match/fire_act()
|
||||
matchignite()
|
||||
|
||||
/obj/item/weapon/match/proc/matchignite()
|
||||
/obj/item/match/proc/matchignite()
|
||||
if(!lit && !burnt)
|
||||
lit = TRUE
|
||||
icon_state = "match_lit"
|
||||
@@ -185,7 +185,7 @@
|
||||
processing_objects.Add(src)
|
||||
update_icon()
|
||||
|
||||
/obj/item/weapon/match/proc/matchburnout()
|
||||
/obj/item/match/proc/matchburnout()
|
||||
if(lit)
|
||||
lit = FALSE
|
||||
burnt = TRUE
|
||||
@@ -198,11 +198,11 @@
|
||||
attack_verb = list("flicked")
|
||||
processing_objects.Remove(src)
|
||||
|
||||
/obj/item/weapon/match/dropped(mob/user)
|
||||
/obj/item/match/dropped(mob/user)
|
||||
matchburnout()
|
||||
. = ..()
|
||||
|
||||
/obj/item/weapon/match/attack(mob/living/carbon/M, mob/living/carbon/user)
|
||||
/obj/item/match/attack(mob/living/carbon/M, mob/living/carbon/user)
|
||||
if(!isliving(M))
|
||||
return ..()
|
||||
if(lit && M.IgniteMob())
|
||||
|
||||
@@ -1,13 +1,13 @@
|
||||
/*********************MANUALS (BOOKS)***********************/
|
||||
|
||||
//Oh god what the fuck I am not good at computer
|
||||
/obj/item/weapon/book/manual
|
||||
/obj/item/book/manual
|
||||
icon = 'icons/obj/library.dmi'
|
||||
due_date = 0 // Game time in 1/10th seconds
|
||||
unique = 1 // 0 - Normal book, 1 - Should not be treated as normal book, unable to be copied, unable to be modified
|
||||
|
||||
|
||||
/obj/item/weapon/book/manual/engineering_construction
|
||||
/obj/item/book/manual/engineering_construction
|
||||
name = "Station Repairs and Construction"
|
||||
icon_state ="bookEngineering"
|
||||
author = "Engineering Encyclopedia" // Who wrote the thing, can be changed by pen or PC. It is not automatically assigned
|
||||
@@ -25,7 +25,7 @@
|
||||
|
||||
"}
|
||||
|
||||
/obj/item/weapon/book/manual/engineering_particle_accelerator
|
||||
/obj/item/book/manual/engineering_particle_accelerator
|
||||
name = "Particle Accelerator User's Guide"
|
||||
icon_state ="bookParticleAccelerator"
|
||||
author = "Engineering Encyclopedia" // Who wrote the thing, can be changed by pen or PC. It is not automatically assigned
|
||||
@@ -68,7 +68,7 @@
|
||||
</html>"}
|
||||
|
||||
|
||||
/obj/item/weapon/book/manual/supermatter_engine
|
||||
/obj/item/book/manual/supermatter_engine
|
||||
name = "Supermatter Engine User's Guide"
|
||||
icon_state = "bookParticleAccelerator" //TEMP FIXME
|
||||
author = "Waleed Asad"
|
||||
@@ -151,7 +151,7 @@
|
||||
|
||||
-Waleed Asad, Senior Engine Technician."}
|
||||
|
||||
/obj/item/weapon/book/manual/engineering_hacking
|
||||
/obj/item/book/manual/engineering_hacking
|
||||
name = "Hacking"
|
||||
icon_state ="bookHacking"
|
||||
author = "Engineering Encyclopedia" // Who wrote the thing, can be changed by pen or PC. It is not automatically assigned
|
||||
@@ -171,7 +171,7 @@
|
||||
|
||||
"}
|
||||
|
||||
/obj/item/weapon/book/manual/engineering_singularity_safety
|
||||
/obj/item/book/manual/engineering_singularity_safety
|
||||
name = "Singularity Safety in Special Circumstances"
|
||||
icon_state ="bookEngineeringSingularitySafety"
|
||||
author = "Engineering Encyclopedia" // Who wrote the thing, can be changed by pen or PC. It is not automatically assigned
|
||||
@@ -219,7 +219,7 @@
|
||||
</html>
|
||||
"}
|
||||
|
||||
/obj/item/weapon/book/manual/hydroponics_pod_people
|
||||
/obj/item/book/manual/hydroponics_pod_people
|
||||
name = "The Human Harvest - From seed to market"
|
||||
icon_state ="bookHydroponicsPodPeople"
|
||||
author = "Farmer John"
|
||||
@@ -254,7 +254,7 @@
|
||||
</html>
|
||||
"}
|
||||
|
||||
/obj/item/weapon/book/manual/medical_cloning
|
||||
/obj/item/book/manual/medical_cloning
|
||||
name = "Cloning techniques of the 26th century"
|
||||
icon_state ="bookCloning"
|
||||
author = "Medical Journal, volume 3" // Who wrote the thing, can be changed by pen or PC. It is not automatically assigned
|
||||
@@ -332,7 +332,7 @@
|
||||
"}
|
||||
|
||||
|
||||
/obj/item/weapon/book/manual/ripley_build_and_repair
|
||||
/obj/item/book/manual/ripley_build_and_repair
|
||||
name = "APLU \"Ripley\" Construction and Operation Manual"
|
||||
icon_state ="book"
|
||||
author = "Weyland-Yutani Corp" // Who wrote the thing, can be changed by pen or PC. It is not automatically assigned
|
||||
@@ -407,7 +407,7 @@
|
||||
Coming soon...
|
||||
"}
|
||||
|
||||
/obj/item/weapon/book/manual/experimentor
|
||||
/obj/item/book/manual/experimentor
|
||||
name = "Mentoring your Experiments"
|
||||
icon_state = "rdbook"
|
||||
author = "Dr. H.P. Kritz"
|
||||
@@ -539,7 +539,7 @@
|
||||
</html>
|
||||
"}
|
||||
|
||||
/obj/item/weapon/book/manual/research_and_development
|
||||
/obj/item/book/manual/research_and_development
|
||||
name = "Research and Development 101"
|
||||
icon_state = "rdbook"
|
||||
author = "Dr. L. Ight"
|
||||
@@ -590,7 +590,7 @@
|
||||
"}
|
||||
|
||||
|
||||
/obj/item/weapon/book/manual/robotics_cyborgs
|
||||
/obj/item/book/manual/robotics_cyborgs
|
||||
name = "Cyborgs for Dummies"
|
||||
icon_state = "borgbook"
|
||||
author = "XISC"
|
||||
@@ -792,7 +792,7 @@
|
||||
</html>
|
||||
"}
|
||||
|
||||
/obj/item/weapon/book/manual/security_space_law
|
||||
/obj/item/book/manual/security_space_law
|
||||
name = "Space Law"
|
||||
desc = "A set of Nanotrasen guidelines for keeping law and order on their space stations."
|
||||
icon_state = "bookSpaceLaw"
|
||||
@@ -810,13 +810,13 @@
|
||||
|
||||
"}
|
||||
|
||||
/obj/item/weapon/book/manual/security_space_law/black
|
||||
/obj/item/book/manual/security_space_law/black
|
||||
name = "Space Law - Limited Edition"
|
||||
desc = "A leather-bound, immaculately-written copy of JUSTICE."
|
||||
icon_state = "bookSpaceLawblack"
|
||||
title = "Space Law - Limited Edition"
|
||||
|
||||
/obj/item/weapon/book/manual/engineering_guide
|
||||
/obj/item/book/manual/engineering_guide
|
||||
name = "Engineering Textbook"
|
||||
icon_state ="bookEngineering2"
|
||||
author = "Engineering Encyclopedia"
|
||||
@@ -834,7 +834,7 @@
|
||||
"}
|
||||
|
||||
|
||||
/obj/item/weapon/book/manual/chef_recipes
|
||||
/obj/item/book/manual/chef_recipes
|
||||
name = "Chef Recipes"
|
||||
icon_state = "cooked_book"
|
||||
author = "Victoria Ponsonby"
|
||||
@@ -889,7 +889,7 @@
|
||||
</html>
|
||||
"}
|
||||
|
||||
/obj/item/weapon/book/manual/barman_recipes
|
||||
/obj/item/book/manual/barman_recipes
|
||||
name = "Barman Recipes"
|
||||
icon_state = "barbook"
|
||||
author = "Sir John Rose"
|
||||
@@ -942,7 +942,7 @@
|
||||
"}
|
||||
|
||||
|
||||
/obj/item/weapon/book/manual/detective
|
||||
/obj/item/book/manual/detective
|
||||
name = "The Film Noir: Proper Procedures for Investigations"
|
||||
icon_state ="bookDetective"
|
||||
author = "Nanotrasen"
|
||||
@@ -983,7 +983,7 @@
|
||||
</body>
|
||||
</html>"}
|
||||
|
||||
/obj/item/weapon/book/manual/nuclear
|
||||
/obj/item/book/manual/nuclear
|
||||
name = "Fission Mailed: Nuclear Sabotage 101"
|
||||
icon_state ="bookNuclear"
|
||||
author = "Syndicate"
|
||||
@@ -1018,7 +1018,7 @@
|
||||
Good luck!
|
||||
</html>"}
|
||||
|
||||
/obj/item/weapon/book/manual/atmospipes
|
||||
/obj/item/book/manual/atmospipes
|
||||
name = "Pipes and You: Getting To Know Your Scary Tools"
|
||||
icon_state = "pipingbook"
|
||||
author = "Maria Crash, Senior Atmospherics Technician"
|
||||
@@ -1115,7 +1115,7 @@
|
||||
</html>
|
||||
"}
|
||||
|
||||
/obj/item/weapon/book/manual/evaguide
|
||||
/obj/item/book/manual/evaguide
|
||||
name = "EVA Gear and You: Not Spending All Day Inside"
|
||||
icon_state = "evabook"
|
||||
author = "Maria Crash, Senior Atmospherics Technician"
|
||||
@@ -1184,7 +1184,7 @@
|
||||
</html>
|
||||
"}
|
||||
|
||||
/obj/item/weapon/book/manual/faxes
|
||||
/obj/item/book/manual/faxes
|
||||
name = "A Guide to Faxes"
|
||||
desc = "A Nanotrasen-approved guide to writing faxes"
|
||||
icon_state = "book6"
|
||||
@@ -1243,7 +1243,7 @@
|
||||
|
||||
"}
|
||||
|
||||
/obj/item/weapon/book/manual/sop_science
|
||||
/obj/item/book/manual/sop_science
|
||||
name = "Science Standard Operating Procedures"
|
||||
desc = "A set of guidelines aiming at the safe conduct of all scientific activities."
|
||||
icon_state = "book6"
|
||||
@@ -1399,7 +1399,7 @@
|
||||
|
||||
"}
|
||||
|
||||
/obj/item/weapon/book/manual/sop_medical
|
||||
/obj/item/book/manual/sop_medical
|
||||
name = "Medical Standard Operating Procedures"
|
||||
desc = "A set of guidelines aiming at the safe conduct of all medical activities."
|
||||
icon_state = "book7"
|
||||
@@ -1593,7 +1593,7 @@
|
||||
|
||||
"}
|
||||
|
||||
/obj/item/weapon/book/manual/sop_engineering
|
||||
/obj/item/book/manual/sop_engineering
|
||||
name = "Engineering Standard Operating Procedures"
|
||||
desc = "A set of guidelines aiming at the safe conduct of all engineering activities."
|
||||
icon_state = "book3"
|
||||
@@ -1682,7 +1682,7 @@
|
||||
|
||||
"}
|
||||
|
||||
/obj/item/weapon/book/manual/sop_service
|
||||
/obj/item/book/manual/sop_service
|
||||
name = "Service Standard Operating Procedures"
|
||||
desc = "A set of guidelines aiming at the safe conduct of all service activities."
|
||||
icon_state = "book4"
|
||||
@@ -1810,7 +1810,7 @@
|
||||
|
||||
"}
|
||||
|
||||
/obj/item/weapon/book/manual/sop_supply
|
||||
/obj/item/book/manual/sop_supply
|
||||
name = "Supply Standard Operating Procedures"
|
||||
desc = "A set of guidelines aiming at the safe conduct of all supply activities."
|
||||
icon_state = "book1"
|
||||
@@ -1889,7 +1889,7 @@
|
||||
|
||||
"}
|
||||
|
||||
/obj/item/weapon/book/manual/sop_security
|
||||
/obj/item/book/manual/sop_security
|
||||
name = "Security Standard Operating Procedures"
|
||||
desc = "A set of guidelines aiming at the safe conduct of all security activities."
|
||||
icon_state = "book2"
|
||||
@@ -2119,7 +2119,7 @@
|
||||
|
||||
"}
|
||||
|
||||
/obj/item/weapon/book/manual/sop_legal
|
||||
/obj/item/book/manual/sop_legal
|
||||
name = "Legal Standard Operating Procedures"
|
||||
desc = "A set of guidelines aiming at the safe conduct of all legal activities."
|
||||
icon_state = "book1"
|
||||
@@ -2224,7 +2224,7 @@
|
||||
|
||||
"}
|
||||
|
||||
/obj/item/weapon/book/manual/sop_general
|
||||
/obj/item/book/manual/sop_general
|
||||
name = "Standard Operating Procedures"
|
||||
desc = "A set of guidelines aiming at the safe conduct of all station activities."
|
||||
icon_state = "book1"
|
||||
@@ -2465,7 +2465,7 @@
|
||||
|
||||
"}
|
||||
|
||||
/obj/item/weapon/book/manual/sop_command
|
||||
/obj/item/book/manual/sop_command
|
||||
name = "Command Standard Operating Procedures"
|
||||
desc = "A set of guidelines aiming at the safe conduct of all Command activities."
|
||||
icon_state = "book4"
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/obj/item/weapon/melee/energy
|
||||
/obj/item/melee/energy
|
||||
var/active = 0
|
||||
var/force_on = 30 //force when active
|
||||
var/throwforce_on = 20
|
||||
@@ -13,12 +13,12 @@
|
||||
var/brightness_on = 2
|
||||
var/colormap = list(red=LIGHT_COLOR_RED, blue=LIGHT_COLOR_LIGHTBLUE, green=LIGHT_COLOR_GREEN, purple=LIGHT_COLOR_PURPLE, rainbow=LIGHT_COLOR_WHITE)
|
||||
|
||||
/obj/item/weapon/melee/energy/suicide_act(mob/user)
|
||||
/obj/item/melee/energy/suicide_act(mob/user)
|
||||
user.visible_message(pick("<span class='suicide'>[user] is slitting \his stomach open with the [src.name]! It looks like \he's trying to commit seppuku.</span>", \
|
||||
"<span class='suicide'>[user] is falling on the [src.name]! It looks like \he's trying to commit suicide.</span>"))
|
||||
return (BRUTELOSS|FIRELOSS)
|
||||
|
||||
/obj/item/weapon/melee/energy/attack_self(mob/living/carbon/user)
|
||||
/obj/item/melee/energy/attack_self(mob/living/carbon/user)
|
||||
if(user.disabilities & CLUMSY && prob(50))
|
||||
to_chat(user, "<span class='warning'>You accidentally cut yourself with [src], like a doofus!</span>")
|
||||
user.take_organ_damage(5,5)
|
||||
@@ -58,7 +58,7 @@
|
||||
add_fingerprint(user)
|
||||
return
|
||||
|
||||
/obj/item/weapon/melee/energy/axe
|
||||
/obj/item/melee/energy/axe
|
||||
name = "energy axe"
|
||||
desc = "An energised battle axe."
|
||||
icon_state = "axe0"
|
||||
@@ -79,11 +79,11 @@
|
||||
sharp = 1
|
||||
light_color = LIGHT_COLOR_WHITE
|
||||
|
||||
/obj/item/weapon/melee/energy/axe/suicide_act(mob/user)
|
||||
/obj/item/melee/energy/axe/suicide_act(mob/user)
|
||||
user.visible_message("<span class='suicide'>[user] swings the [src.name] towards /his head! It looks like \he's trying to commit suicide.</span>")
|
||||
return (BRUTELOSS|FIRELOSS)
|
||||
|
||||
/obj/item/weapon/melee/energy/sword
|
||||
/obj/item/melee/energy/sword
|
||||
name = "energy sword"
|
||||
desc = "May the force be within you."
|
||||
icon_state = "sword0"
|
||||
@@ -100,21 +100,21 @@
|
||||
sharp = 1
|
||||
var/hacked = 0
|
||||
|
||||
/obj/item/weapon/melee/energy/sword/New()
|
||||
/obj/item/melee/energy/sword/New()
|
||||
if(item_color == null)
|
||||
item_color = pick("red", "blue", "green", "purple")
|
||||
|
||||
/obj/item/weapon/melee/energy/sword/hit_reaction(mob/living/carbon/human/owner, attack_text, final_block_chance)
|
||||
/obj/item/melee/energy/sword/hit_reaction(mob/living/carbon/human/owner, attack_text, final_block_chance)
|
||||
if(active)
|
||||
return ..()
|
||||
return 0
|
||||
|
||||
/obj/item/weapon/melee/energy/sword/cyborg
|
||||
/obj/item/melee/energy/sword/cyborg
|
||||
var/hitcost = 50
|
||||
|
||||
/obj/item/weapon/melee/energy/sword/cyborg/attack(mob/M, var/mob/living/silicon/robot/R)
|
||||
/obj/item/melee/energy/sword/cyborg/attack(mob/M, var/mob/living/silicon/robot/R)
|
||||
if(R.cell)
|
||||
var/obj/item/weapon/stock_parts/cell/C = R.cell
|
||||
var/obj/item/stock_parts/cell/C = R.cell
|
||||
if(active && !(C.use(hitcost)))
|
||||
attack_self(R)
|
||||
to_chat(R, "<span class='notice'>It's out of charge!</span>")
|
||||
@@ -122,7 +122,7 @@
|
||||
..()
|
||||
return
|
||||
|
||||
/obj/item/weapon/melee/energy/sword/cyborg/saw //Used by medical Syndicate cyborgs
|
||||
/obj/item/melee/energy/sword/cyborg/saw //Used by medical Syndicate cyborgs
|
||||
name = "energy saw"
|
||||
desc = "For heavy duty cutting. It has a carbon-fiber blade in addition to a toggleable hard-light edge to dramatically increase sharpness."
|
||||
force_on = 30
|
||||
@@ -137,37 +137,37 @@
|
||||
w_class = WEIGHT_CLASS_NORMAL
|
||||
light_color = LIGHT_COLOR_WHITE
|
||||
|
||||
/obj/item/weapon/melee/energy/sword/cyborg/saw/New()
|
||||
/obj/item/melee/energy/sword/cyborg/saw/New()
|
||||
..()
|
||||
item_color = null
|
||||
|
||||
/obj/item/weapon/melee/energy/sword/cyborg/saw/hit_reaction()
|
||||
/obj/item/melee/energy/sword/cyborg/saw/hit_reaction()
|
||||
return 0
|
||||
|
||||
/obj/item/weapon/melee/energy/sword/saber
|
||||
/obj/item/melee/energy/sword/saber
|
||||
|
||||
/obj/item/weapon/melee/energy/sword/saber/blue
|
||||
/obj/item/melee/energy/sword/saber/blue
|
||||
item_color = "blue"
|
||||
|
||||
/obj/item/weapon/melee/energy/sword/saber/purple
|
||||
/obj/item/melee/energy/sword/saber/purple
|
||||
item_color = "purple"
|
||||
|
||||
/obj/item/weapon/melee/energy/sword/saber/green
|
||||
/obj/item/melee/energy/sword/saber/green
|
||||
item_color = "green"
|
||||
|
||||
/obj/item/weapon/melee/energy/sword/saber/red
|
||||
/obj/item/melee/energy/sword/saber/red
|
||||
item_color = "red"
|
||||
|
||||
/obj/item/weapon/melee/energy/sword/saber/attackby(obj/item/weapon/W, mob/living/user, params)
|
||||
/obj/item/melee/energy/sword/saber/attackby(obj/item/W, mob/living/user, params)
|
||||
..()
|
||||
if(istype(W, /obj/item/weapon/melee/energy/sword/saber))
|
||||
if(istype(W, /obj/item/melee/energy/sword/saber))
|
||||
if(W == src)
|
||||
to_chat(user, "<span class='notice'>You try to attach the end of the energy sword to... itself. You're not very smart, are you?</span>")
|
||||
if(ishuman(user))
|
||||
user.adjustBrainLoss(10)
|
||||
else
|
||||
to_chat(user, "<span class='notice'>You attach the ends of the two energy swords, making a single double-bladed weapon! You're cool.</span>")
|
||||
var/obj/item/weapon/twohanded/dualsaber/newSaber = new /obj/item/weapon/twohanded/dualsaber(user.loc)
|
||||
var/obj/item/twohanded/dualsaber/newSaber = new /obj/item/twohanded/dualsaber(user.loc)
|
||||
if(src.hacked) // That's right, we'll only check the "original" esword.
|
||||
newSaber.hacked = 1
|
||||
newSaber.item_color = "rainbow"
|
||||
@@ -194,17 +194,17 @@
|
||||
else
|
||||
to_chat(user, "<span class='warning'>It's already fabulous!</span>")
|
||||
|
||||
/obj/item/weapon/melee/energy/sword/pirate
|
||||
/obj/item/melee/energy/sword/pirate
|
||||
name = "energy cutlass"
|
||||
desc = "Arrrr matey."
|
||||
icon_state = "cutlass0"
|
||||
icon_state_on = "cutlass1"
|
||||
light_color = LIGHT_COLOR_RED
|
||||
|
||||
/obj/item/weapon/melee/energy/sword/pirate/New()
|
||||
/obj/item/melee/energy/sword/pirate/New()
|
||||
return
|
||||
|
||||
/obj/item/weapon/melee/energy/blade
|
||||
/obj/item/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"
|
||||
@@ -219,16 +219,16 @@
|
||||
sharp = 1
|
||||
|
||||
//Most of the other special functions are handled in their own files. aka special snowflake code so kewl
|
||||
/obj/item/weapon/melee/energy/blade/New()
|
||||
/obj/item/melee/energy/blade/New()
|
||||
..()
|
||||
spark_system = new /datum/effect_system/spark_spread()
|
||||
spark_system.set_up(5, 0, src)
|
||||
spark_system.attach(src)
|
||||
|
||||
/obj/item/weapon/melee/energy/blade/attack_self(mob/user)
|
||||
/obj/item/melee/energy/blade/attack_self(mob/user)
|
||||
return
|
||||
|
||||
/obj/item/weapon/melee/energy/blade/hardlight
|
||||
/obj/item/melee/energy/blade/hardlight
|
||||
name = "hardlight blade"
|
||||
desc = "An extremely sharp blade made out of hard light. Packs quite a punch."
|
||||
icon_state = "lightblade"
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/obj/item/weapon/melee
|
||||
/obj/item/melee
|
||||
needs_permit = 1
|
||||
|
||||
/obj/item/weapon/melee/chainofcommand
|
||||
/obj/item/melee/chainofcommand
|
||||
name = "chain of command"
|
||||
desc = "A tool used by great men to placate the frothing masses."
|
||||
icon_state = "chain"
|
||||
@@ -16,11 +16,11 @@
|
||||
hitsound = 'sound/weapons/slash.ogg' //pls replace
|
||||
|
||||
|
||||
/obj/item/weapon/melee/chainofcommand/suicide_act(mob/user)
|
||||
/obj/item/melee/chainofcommand/suicide_act(mob/user)
|
||||
to_chat(viewers(user), "<span class='suicide'>[user] is strangling \himself with the [src.name]! It looks like \he's trying to commit suicide.</span>")
|
||||
return (OXYLOSS)
|
||||
|
||||
/obj/item/weapon/melee/rapier
|
||||
/obj/item/melee/rapier
|
||||
name = "captain's rapier"
|
||||
desc = "An elegant weapon, for a more civilized age."
|
||||
icon_state = "rapier"
|
||||
@@ -37,12 +37,12 @@
|
||||
hitsound = 'sound/weapons/rapierhit.ogg'
|
||||
materials = list(MAT_METAL = 1000)
|
||||
|
||||
/obj/item/weapon/melee/rapier/hit_reaction(mob/living/carbon/human/owner, attack_text, final_block_chance, damage, attack_type)
|
||||
/obj/item/melee/rapier/hit_reaction(mob/living/carbon/human/owner, attack_text, final_block_chance, damage, attack_type)
|
||||
if(attack_type == PROJECTILE_ATTACK)
|
||||
final_block_chance = 0 //Don't bring a sword to a gunfight
|
||||
return ..()
|
||||
|
||||
/obj/item/weapon/melee/icepick
|
||||
/obj/item/melee/icepick
|
||||
name = "ice pick"
|
||||
desc = "Used for chopping ice. Also excellent for mafia esque murders."
|
||||
icon_state = "icepick"
|
||||
@@ -52,7 +52,7 @@
|
||||
w_class = WEIGHT_CLASS_SMALL
|
||||
attack_verb = list("stabbed", "jabbed", "iced,")
|
||||
|
||||
/obj/item/weapon/melee/candy_sword
|
||||
/obj/item/melee/candy_sword
|
||||
name = "candy cane sword"
|
||||
desc = "A large candy cane with a sharpened point. Definitely too dangerous for schoolchildren."
|
||||
icon_state = "candy_sword"
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
//MISC WEAPONS
|
||||
|
||||
//This file contains /obj/item/weapon's that do not fit in any other category and are not big enough to warrant individual files.
|
||||
//This file contains /obj/item's that do not fit in any other category and are not big enough to warrant individual files.
|
||||
/*CURRENT CONTENTS
|
||||
Ball Toy
|
||||
Cane
|
||||
@@ -15,16 +15,15 @@
|
||||
Red Phone
|
||||
*/
|
||||
|
||||
/obj/item/weapon/balltoy
|
||||
/obj/item/balltoy
|
||||
name = "ball toy"
|
||||
icon = 'icons/obj/decorations.dmi'
|
||||
icon_state = "rollball"
|
||||
desc = "A device bored paper pushers use to remind themselves that the time did not stop yet."
|
||||
|
||||
/obj/item/weapon/cane
|
||||
/obj/item/cane
|
||||
name = "cane"
|
||||
desc = "A cane used by a true gentlemen. Or a clown."
|
||||
icon = 'icons/obj/weapons.dmi'
|
||||
icon_state = "cane"
|
||||
item_state = "stick"
|
||||
flags = CONDUCT
|
||||
@@ -34,10 +33,10 @@
|
||||
materials = list(MAT_METAL=50)
|
||||
attack_verb = list("bludgeoned", "whacked", "disciplined", "thrashed", "Vaudevilled")
|
||||
|
||||
/obj/item/weapon/cane/is_crutch()
|
||||
/obj/item/cane/is_crutch()
|
||||
return 1
|
||||
|
||||
/obj/item/weapon/c_tube
|
||||
/obj/item/c_tube
|
||||
name = "cardboard tube"
|
||||
desc = "A tube... of cardboard."
|
||||
icon = 'icons/obj/items.dmi'
|
||||
@@ -49,14 +48,14 @@
|
||||
|
||||
|
||||
|
||||
/obj/item/weapon/fan
|
||||
/obj/item/fan
|
||||
name = "desk fan"
|
||||
icon = 'icons/obj/decorations.dmi'
|
||||
icon_state = "fan"
|
||||
desc = "A small desktop fan. The button seems to be stuck in the 'on' position."
|
||||
|
||||
/*
|
||||
/obj/item/weapon/game_kit
|
||||
/obj/item/game_kit
|
||||
name = "Gaming Kit"
|
||||
icon = 'icons/obj/items.dmi'
|
||||
icon_state = "game_kit"
|
||||
@@ -68,7 +67,7 @@
|
||||
w_class = WEIGHT_CLASS_HUGE
|
||||
*/
|
||||
|
||||
/obj/item/weapon/gift
|
||||
/obj/item/gift
|
||||
name = "gift"
|
||||
desc = "A wrapped item."
|
||||
icon = 'icons/obj/items.dmi'
|
||||
@@ -78,13 +77,13 @@
|
||||
item_state = "gift"
|
||||
w_class = WEIGHT_CLASS_BULKY
|
||||
|
||||
/obj/item/weapon/kidanglobe
|
||||
/obj/item/kidanglobe
|
||||
name = "Kidan homeworld globe"
|
||||
icon = 'icons/obj/decorations.dmi'
|
||||
icon_state = "kidanglobe"
|
||||
desc = "A globe of the Kidan homeworld."
|
||||
|
||||
/obj/item/weapon/lightning
|
||||
/obj/item/lightning
|
||||
name = "lightning"
|
||||
icon = 'icons/obj/lightning.dmi'
|
||||
icon_state = "lightning"
|
||||
@@ -110,13 +109,13 @@
|
||||
// to_chat(world, "[angle] [(get_dist(user, A) - 1)]")
|
||||
user.Beam(A, "lightning", 'icons/obj/zap.dmi', 50, 15)
|
||||
|
||||
/obj/item/weapon/newton
|
||||
/obj/item/newton
|
||||
name = "newton cradle"
|
||||
icon = 'icons/obj/decorations.dmi'
|
||||
icon_state = "newton"
|
||||
desc = "A device bored paper pushers use to remind themselves that time did not stop yet. Contains gravity."
|
||||
|
||||
/obj/item/weapon/pai_cable
|
||||
/obj/item/pai_cable
|
||||
desc = "A flexible coated cable with a universal jack on one end."
|
||||
name = "data cable"
|
||||
icon = 'icons/obj/power.dmi'
|
||||
@@ -124,7 +123,7 @@
|
||||
|
||||
var/obj/machinery/machine
|
||||
|
||||
/obj/item/weapon/phone
|
||||
/obj/item/phone
|
||||
name = "red phone"
|
||||
desc = "Should anything ever go wrong..."
|
||||
icon = 'icons/obj/items.dmi'
|
||||
@@ -139,7 +138,7 @@
|
||||
hitsound = 'sound/weapons/ring.ogg'
|
||||
var/cooldown = 0
|
||||
|
||||
/obj/item/weapon/phone/attack_self(mob/user)
|
||||
/obj/item/phone/attack_self(mob/user)
|
||||
if(cooldown < world.time - 20)
|
||||
playsound(user.loc, 'sound/weapons/ring.ogg', 50, 1)
|
||||
cooldown = world.time
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/obj/item/weapon/mop
|
||||
/obj/item/mop
|
||||
desc = "The world of janitalia wouldn't be complete without a mop."
|
||||
name = "mop"
|
||||
icon = 'icons/obj/janitor.dmi'
|
||||
@@ -15,16 +15,16 @@
|
||||
var/mopcap = 5
|
||||
var/mopspeed = 30
|
||||
|
||||
/obj/item/weapon/mop/New()
|
||||
/obj/item/mop/New()
|
||||
..()
|
||||
create_reagents(mopcap)
|
||||
janitorial_equipment += src
|
||||
|
||||
/obj/item/weapon/mop/Destroy()
|
||||
/obj/item/mop/Destroy()
|
||||
janitorial_equipment -= src
|
||||
return ..()
|
||||
|
||||
/obj/item/weapon/mop/proc/clean(turf/simulated/A)
|
||||
/obj/item/mop/proc/clean(turf/simulated/A)
|
||||
if(reagents.has_reagent("water", 1) || reagents.has_reagent("cleaner", 1) || reagents.has_reagent("holywater", 1))
|
||||
A.clean_blood()
|
||||
A.dirt = 0
|
||||
@@ -34,7 +34,7 @@
|
||||
reagents.reaction(A, TOUCH, 10) //10 is the multiplier for the reaction effect. probably needed to wet the floor properly.
|
||||
reagents.remove_any(1) //reaction() doesn't use up the reagents
|
||||
|
||||
/obj/item/weapon/mop/afterattack(atom/A, mob/user, proximity)
|
||||
/obj/item/mop/afterattack(atom/A, mob/user, proximity)
|
||||
if(!proximity) return
|
||||
|
||||
if(reagents.total_volume < 1)
|
||||
@@ -43,7 +43,7 @@
|
||||
|
||||
var/turf/simulated/T = get_turf(A)
|
||||
|
||||
if(istype(A, /obj/item/weapon/reagent_containers/glass/bucket) || istype(A, /obj/structure/janitorialcart))
|
||||
if(istype(A, /obj/item/reagent_containers/glass/bucket) || istype(A, /obj/structure/janitorialcart))
|
||||
return
|
||||
|
||||
if(istype(T))
|
||||
@@ -55,24 +55,24 @@
|
||||
|
||||
|
||||
/obj/effect/attackby(obj/item/I, mob/user, params)
|
||||
if(istype(I, /obj/item/weapon/mop) || istype(I, /obj/item/weapon/soap))
|
||||
if(istype(I, /obj/item/mop) || istype(I, /obj/item/soap))
|
||||
return
|
||||
else
|
||||
return ..()
|
||||
|
||||
|
||||
/obj/item/weapon/mop/proc/janicart_insert(mob/user, obj/structure/janitorialcart/J)
|
||||
/obj/item/mop/proc/janicart_insert(mob/user, obj/structure/janitorialcart/J)
|
||||
J.put_in_cart(src, user)
|
||||
J.mymop=src
|
||||
J.update_icon()
|
||||
|
||||
/obj/item/weapon/mop/wash(mob/user, atom/source)
|
||||
/obj/item/mop/wash(mob/user, atom/source)
|
||||
reagents.add_reagent("water", 5)
|
||||
to_chat(user, "<span class='notice'>You wet [src] in [source].</span>")
|
||||
playsound(loc, 'sound/effects/slosh.ogg', 25, 1)
|
||||
return 1
|
||||
|
||||
/obj/item/weapon/mop/advanced
|
||||
/obj/item/mop/advanced
|
||||
desc = "The most advanced tool in a custodian's arsenal. Just think of all the viscera you will clean up with this!"
|
||||
name = "advanced mop"
|
||||
mopcap = 10
|
||||
@@ -87,11 +87,11 @@
|
||||
var/refill_rate = 1 //Rate per process() tick mop refills itself
|
||||
var/refill_reagent = "water" //Determins what reagent to use for refilling, just in case someone wanted to make a HOLY MOP OF PURGING
|
||||
|
||||
/obj/item/weapon/mop/advanced/New()
|
||||
/obj/item/mop/advanced/New()
|
||||
..()
|
||||
processing_objects.Add(src)
|
||||
|
||||
/obj/item/weapon/mop/advanced/attack_self(mob/user)
|
||||
/obj/item/mop/advanced/attack_self(mob/user)
|
||||
refill_enabled = !refill_enabled
|
||||
if(refill_enabled)
|
||||
processing_objects.Add(src)
|
||||
@@ -100,22 +100,22 @@
|
||||
to_chat(user, "<span class='notice'>You set the condenser switch to the '[refill_enabled ? "ON" : "OFF"]' position.</span>")
|
||||
playsound(user, 'sound/machines/click.ogg', 30, 1)
|
||||
|
||||
/obj/item/weapon/mop/advanced/process()
|
||||
/obj/item/mop/advanced/process()
|
||||
|
||||
if(reagents.total_volume < mopcap)
|
||||
reagents.add_reagent(refill_reagent, refill_rate)
|
||||
|
||||
/obj/item/weapon/mop/advanced/examine(mob/user)
|
||||
/obj/item/mop/advanced/examine(mob/user)
|
||||
..()
|
||||
to_chat(user, "<span class='notice'>The condenser switch is set to <b>[refill_enabled ? "ON" : "OFF"]</b>.</span>")
|
||||
|
||||
/obj/item/weapon/mop/advanced/Destroy()
|
||||
/obj/item/mop/advanced/Destroy()
|
||||
if(refill_enabled)
|
||||
processing_objects.Remove(src)
|
||||
return ..()
|
||||
|
||||
|
||||
/obj/item/weapon/mop/advanced/cyborg
|
||||
/obj/item/mop/advanced/cyborg
|
||||
|
||||
/obj/item/weapon/mop/advanced/cyborg/janicart_insert(mob/user, obj/structure/janitorialcart/J)
|
||||
/obj/item/mop/advanced/cyborg/janicart_insert(mob/user, obj/structure/janitorialcart/J)
|
||||
return
|
||||
@@ -1,6 +1,6 @@
|
||||
//NEVER USE THIS IT SUX -PETETHEGOAT
|
||||
|
||||
/obj/item/weapon/reagent_containers/glass/paint
|
||||
/obj/item/reagent_containers/glass/paint
|
||||
desc = "It's a paint bucket."
|
||||
name = "paint bucket"
|
||||
icon = 'icons/obj/items.dmi'
|
||||
@@ -15,7 +15,7 @@
|
||||
volume = 70
|
||||
flags = OPENCONTAINER
|
||||
|
||||
/obj/item/weapon/reagent_containers/glass/paint/afterattack(turf/simulated/target, mob/user, proximity)
|
||||
/obj/item/reagent_containers/glass/paint/afterattack(turf/simulated/target, mob/user, proximity)
|
||||
if(!proximity)
|
||||
return
|
||||
if(!is_open_container())
|
||||
@@ -28,41 +28,41 @@
|
||||
else
|
||||
return ..()
|
||||
|
||||
/obj/item/weapon/reagent_containers/glass/paint/red
|
||||
/obj/item/reagent_containers/glass/paint/red
|
||||
name = "red paint bucket"
|
||||
icon_state = "paint_red"
|
||||
list_reagents = list("paint_red" = 70)
|
||||
|
||||
/obj/item/weapon/reagent_containers/glass/paint/green
|
||||
/obj/item/reagent_containers/glass/paint/green
|
||||
name = "green paint bucket"
|
||||
icon_state = "paint_green"
|
||||
list_reagents = list("paint_green" = 70)
|
||||
|
||||
/obj/item/weapon/reagent_containers/glass/paint/blue
|
||||
/obj/item/reagent_containers/glass/paint/blue
|
||||
name = "blue paint bucket"
|
||||
icon_state = "paint_blue"
|
||||
list_reagents = list("paint_blue" = 70)
|
||||
|
||||
/obj/item/weapon/reagent_containers/glass/paint/yellow
|
||||
/obj/item/reagent_containers/glass/paint/yellow
|
||||
name = "yellow paint bucket"
|
||||
icon_state = "paint_yellow"
|
||||
list_reagents = list("paint_yellow" = 70)
|
||||
|
||||
/obj/item/weapon/reagent_containers/glass/paint/violet
|
||||
/obj/item/reagent_containers/glass/paint/violet
|
||||
name = "violet paint bucket"
|
||||
icon_state = "paint_violet"
|
||||
list_reagents = list("paint_violet" = 70)
|
||||
|
||||
/obj/item/weapon/reagent_containers/glass/paint/black
|
||||
/obj/item/reagent_containers/glass/paint/black
|
||||
name = "black paint bucket"
|
||||
icon_state = "paint_black"
|
||||
list_reagents = list("paint_black" = 70)
|
||||
|
||||
/obj/item/weapon/reagent_containers/glass/paint/white
|
||||
/obj/item/reagent_containers/glass/paint/white
|
||||
name = "white paint bucket"
|
||||
icon_state = "paint_white"
|
||||
list_reagents = list("paint_white" = 70)
|
||||
|
||||
/obj/item/weapon/reagent_containers/glass/paint/remover
|
||||
/obj/item/reagent_containers/glass/paint/remover
|
||||
name = "paint remover bucket"
|
||||
list_reagents = list("paint_remover" = 70)
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/obj/item/weapon/pai_cable/proc/plugin(obj/machinery/M as obj, mob/user as mob)
|
||||
/obj/item/pai_cable/proc/plugin(obj/machinery/M as obj, mob/user as mob)
|
||||
if(istype(M, /obj/machinery/door) || istype(M, /obj/machinery/camera))
|
||||
user.visible_message("[user] inserts [src] into a data port on [M].", "You insert [src] into a data port on [M].", "You hear the satisfying click of a wire jack fastening into place.")
|
||||
user.drop_item()
|
||||
@@ -7,5 +7,5 @@
|
||||
else
|
||||
user.visible_message("[user] dumbly fumbles to find a place on [M] to plug in [src].", "There aren't any ports on [M] that match the jack belonging to [src].")
|
||||
|
||||
/obj/item/weapon/pai_cable/attack(obj/machinery/M as obj, mob/user as mob)
|
||||
/obj/item/pai_cable/attack(obj/machinery/M as obj, mob/user as mob)
|
||||
src.plugin(M, user)
|
||||
@@ -1,4 +1,4 @@
|
||||
/obj/item/weapon/pneumatic_cannon
|
||||
/obj/item/pneumatic_cannon
|
||||
name = "pneumatic cannon"
|
||||
desc = "A gas-powered cannon that can fire any object loaded into it."
|
||||
w_class = WEIGHT_CLASS_BULKY
|
||||
@@ -11,17 +11,17 @@
|
||||
righthand_file = 'icons/mob/inhands/guns_righthand.dmi'
|
||||
var/maxWeightClass = 20 //The max weight of items that can fit into the cannon
|
||||
var/loadedWeightClass = 0 //The weight of items currently in the cannon
|
||||
var/obj/item/weapon/tank/tank = null //The gas tank that is drawn from to fire things
|
||||
var/obj/item/tank/tank = null //The gas tank that is drawn from to fire things
|
||||
var/gasPerThrow = 3 //How much gas is drawn from a tank's pressure to fire
|
||||
var/list/loadedItems = list() //The items loaded into the cannon that will be fired out
|
||||
var/pressureSetting = 1 //How powerful the cannon is - higher pressure = more gas but more powerful throws
|
||||
|
||||
/obj/item/weapon/pneumatic_cannon/Destroy()
|
||||
/obj/item/pneumatic_cannon/Destroy()
|
||||
QDEL_NULL(tank)
|
||||
QDEL_LIST(loadedItems)
|
||||
return ..()
|
||||
|
||||
/obj/item/weapon/pneumatic_cannon/examine(mob/user)
|
||||
/obj/item/pneumatic_cannon/examine(mob/user)
|
||||
..()
|
||||
if(!in_range(user, src))
|
||||
to_chat(user, "<span class='notice'>You'll need to get closer to see any more.</span>")
|
||||
@@ -33,10 +33,10 @@
|
||||
to_chat(user, "<span class='notice'>[bicon(tank)] It has \the [tank] mounted onto it.</span>")
|
||||
|
||||
|
||||
/obj/item/weapon/pneumatic_cannon/attackby(obj/item/weapon/W, mob/user, params)
|
||||
/obj/item/pneumatic_cannon/attackby(obj/item/W, mob/user, params)
|
||||
..()
|
||||
if(istype(W, /obj/item/weapon/tank/) && !tank)
|
||||
if(istype(W, /obj/item/weapon/tank/emergency_oxygen))
|
||||
if(istype(W, /obj/item/tank/) && !tank)
|
||||
if(istype(W, /obj/item/tank/emergency_oxygen))
|
||||
to_chat(user, "<span class='warning'>\The [W] is too small for \the [src].</span>")
|
||||
return
|
||||
updateTank(W, 0, user)
|
||||
@@ -44,7 +44,7 @@
|
||||
if(W.type == type)
|
||||
to_chat(user, "<span class='warning'>You're fairly certain that putting a pneumatic cannon inside another pneumatic cannon would cause a spacetime disruption.</span>")
|
||||
return
|
||||
if(istype(W, /obj/item/weapon/wrench))
|
||||
if(istype(W, /obj/item/wrench))
|
||||
switch(pressureSetting)
|
||||
if(1)
|
||||
pressureSetting = 2
|
||||
@@ -54,7 +54,7 @@
|
||||
pressureSetting = 1
|
||||
to_chat(user, "<span class='notice'>You tweak \the [src]'s pressure output to [pressureSetting].</span>")
|
||||
return
|
||||
if(istype(W, /obj/item/weapon/screwdriver) && tank)
|
||||
if(istype(W, /obj/item/screwdriver) && tank)
|
||||
updateTank(tank, 1, user)
|
||||
return
|
||||
if(loadedWeightClass >= maxWeightClass)
|
||||
@@ -77,8 +77,8 @@
|
||||
return
|
||||
|
||||
|
||||
/obj/item/weapon/pneumatic_cannon/afterattack(atom/target, mob/living/carbon/human/user, flag, params)
|
||||
if(istype(target, /obj/item/weapon/storage)) //So you can store it in backpacks
|
||||
/obj/item/pneumatic_cannon/afterattack(atom/target, mob/living/carbon/human/user, flag, params)
|
||||
if(istype(target, /obj/item/storage)) //So you can store it in backpacks
|
||||
return ..()
|
||||
if(istype(target, /obj/structure/closet)) //So you can store it in closets
|
||||
return ..()
|
||||
@@ -89,7 +89,7 @@
|
||||
Fire(user, target)
|
||||
|
||||
|
||||
/obj/item/weapon/pneumatic_cannon/proc/Fire(var/mob/living/carbon/human/user, var/atom/target)
|
||||
/obj/item/pneumatic_cannon/proc/Fire(var/mob/living/carbon/human/user, var/atom/target)
|
||||
if(!istype(user) && !target)
|
||||
return
|
||||
var/discharge = 0
|
||||
@@ -128,7 +128,7 @@
|
||||
user.Weaken(3)
|
||||
|
||||
|
||||
/obj/item/weapon/pneumatic_cannon/ghetto //Obtainable by improvised methods; more gas per use, less capacity, but smaller
|
||||
/obj/item/pneumatic_cannon/ghetto //Obtainable by improvised methods; more gas per use, less capacity, but smaller
|
||||
name = "improvised pneumatic cannon"
|
||||
desc = "A gas-powered, object-firing cannon made out of common parts."
|
||||
force = 5
|
||||
@@ -138,16 +138,16 @@
|
||||
|
||||
/datum/crafting_recipe/improvised_pneumatic_cannon //Pretty easy to obtain but
|
||||
name = "Pneumatic Cannon"
|
||||
result = /obj/item/weapon/pneumatic_cannon/ghetto
|
||||
tools = list(/obj/item/weapon/weldingtool,
|
||||
/obj/item/weapon/wrench)
|
||||
result = /obj/item/pneumatic_cannon/ghetto
|
||||
tools = list(/obj/item/weldingtool,
|
||||
/obj/item/wrench)
|
||||
reqs = list(/obj/item/stack/sheet/metal = 4,
|
||||
/obj/item/stack/packageWrap = 8,
|
||||
/obj/item/pipe = 2)
|
||||
time = 300
|
||||
category = CAT_WEAPON
|
||||
|
||||
/obj/item/weapon/pneumatic_cannon/proc/updateTank(obj/item/weapon/tank/thetank, removing = 0, mob/living/carbon/human/user)
|
||||
/obj/item/pneumatic_cannon/proc/updateTank(obj/item/tank/thetank, removing = 0, mob/living/carbon/human/user)
|
||||
if(removing)
|
||||
if(!src.tank)
|
||||
return
|
||||
@@ -166,7 +166,7 @@
|
||||
thetank.loc = src
|
||||
src.update_icons()
|
||||
|
||||
/obj/item/weapon/pneumatic_cannon/proc/update_icons()
|
||||
/obj/item/pneumatic_cannon/proc/update_icons()
|
||||
src.overlays.Cut()
|
||||
if(!tank)
|
||||
return
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/obj/item/weapon/stock_parts/cell
|
||||
/obj/item/stock_parts/cell
|
||||
name = "power cell"
|
||||
desc = "A rechargable electrochemical power cell."
|
||||
icon = 'icons/obj/power.dmi'
|
||||
@@ -18,17 +18,17 @@
|
||||
var/self_recharge = 0 //does it self recharge, over time, or not?
|
||||
var/grown_battery = FALSE // If it's a grown that acts as a battery, add a wire overlay to it.
|
||||
|
||||
/obj/item/weapon/stock_parts/cell/New()
|
||||
/obj/item/stock_parts/cell/New()
|
||||
..()
|
||||
processing_objects.Add(src)
|
||||
charge = maxcharge
|
||||
updateicon()
|
||||
|
||||
/obj/item/weapon/stock_parts/cell/Destroy()
|
||||
/obj/item/stock_parts/cell/Destroy()
|
||||
processing_objects.Remove(src)
|
||||
return ..()
|
||||
|
||||
/obj/item/weapon/stock_parts/cell/vv_edit_var(var_name, var_value)
|
||||
/obj/item/stock_parts/cell/vv_edit_var(var_name, var_value)
|
||||
switch(var_name)
|
||||
if("self_recharge")
|
||||
if(var_value)
|
||||
@@ -37,17 +37,17 @@
|
||||
processing_objects.Remove(src)
|
||||
. = ..()
|
||||
|
||||
/obj/item/weapon/stock_parts/cell/suicide_act(mob/user)
|
||||
/obj/item/stock_parts/cell/suicide_act(mob/user)
|
||||
to_chat(viewers(user), "<span class='suicide'>[user] is licking the electrodes of the [src.name]! It looks like \he's trying to commit suicide.</span>")
|
||||
return (FIRELOSS)
|
||||
|
||||
/obj/item/weapon/stock_parts/cell/process()
|
||||
/obj/item/stock_parts/cell/process()
|
||||
if(self_recharge)
|
||||
give(chargerate * 0.25)
|
||||
else
|
||||
return PROCESS_KILL
|
||||
|
||||
/obj/item/weapon/stock_parts/cell/proc/updateicon()
|
||||
/obj/item/stock_parts/cell/proc/updateicon()
|
||||
overlays.Cut()
|
||||
if(grown_battery)
|
||||
overlays += image('icons/obj/power.dmi', "grown_wires")
|
||||
@@ -58,29 +58,29 @@
|
||||
else
|
||||
overlays += image('icons/obj/power.dmi', "cell-o1")
|
||||
|
||||
/obj/item/weapon/stock_parts/cell/crap
|
||||
/obj/item/stock_parts/cell/crap
|
||||
name = "\improper Nanotrasen brand rechargable AA battery"
|
||||
desc = "You can't top the plasma top." //TOTALLY TRADEMARK INFRINGEMENT
|
||||
maxcharge = 500
|
||||
materials = list(MAT_GLASS=40)
|
||||
rating = 2
|
||||
|
||||
/obj/item/weapon/stock_parts/cell/crap/empty/New()
|
||||
/obj/item/stock_parts/cell/crap/empty/New()
|
||||
..()
|
||||
charge = 0
|
||||
|
||||
/obj/item/weapon/stock_parts/cell/secborg
|
||||
/obj/item/stock_parts/cell/secborg
|
||||
name = "\improper Security borg rechargable D battery"
|
||||
origin_tech = null
|
||||
maxcharge = 600 //600 max charge / 100 charge per shot = six shots
|
||||
materials = list(MAT_GLASS=40)
|
||||
rating = 2.5
|
||||
|
||||
/obj/item/weapon/stock_parts/cell/secborg/empty/New()
|
||||
/obj/item/stock_parts/cell/secborg/empty/New()
|
||||
..()
|
||||
charge = 0
|
||||
|
||||
/obj/item/weapon/stock_parts/cell/high
|
||||
/obj/item/stock_parts/cell/high
|
||||
name = "high-capacity power cell"
|
||||
origin_tech = "powerstorage=2"
|
||||
icon_state = "hcell"
|
||||
@@ -89,18 +89,18 @@
|
||||
rating = 3
|
||||
chargerate = 1500
|
||||
|
||||
/obj/item/weapon/stock_parts/cell/high/plus
|
||||
/obj/item/stock_parts/cell/high/plus
|
||||
name = "high-capacity power cell+"
|
||||
desc = "Where did these come from?"
|
||||
icon_state = "h+cell"
|
||||
maxcharge = 15000
|
||||
chargerate = 2250
|
||||
|
||||
/obj/item/weapon/stock_parts/cell/high/empty/New()
|
||||
/obj/item/stock_parts/cell/high/empty/New()
|
||||
..()
|
||||
charge = 0
|
||||
|
||||
/obj/item/weapon/stock_parts/cell/super
|
||||
/obj/item/stock_parts/cell/super
|
||||
name = "super-capacity power cell"
|
||||
origin_tech = "powerstorage=3;materials=3"
|
||||
icon_state = "scell"
|
||||
@@ -109,11 +109,11 @@
|
||||
rating = 4
|
||||
chargerate = 2000
|
||||
|
||||
/obj/item/weapon/stock_parts/cell/super/empty/New()
|
||||
/obj/item/stock_parts/cell/super/empty/New()
|
||||
..()
|
||||
charge = 0
|
||||
|
||||
/obj/item/weapon/stock_parts/cell/hyper
|
||||
/obj/item/stock_parts/cell/hyper
|
||||
name = "hyper-capacity power cell"
|
||||
origin_tech = "powerstorage=4;engineering=4;materials=4"
|
||||
icon_state = "hpcell"
|
||||
@@ -122,11 +122,11 @@
|
||||
rating = 5
|
||||
chargerate = 3000
|
||||
|
||||
/obj/item/weapon/stock_parts/cell/hyper/empty/New()
|
||||
/obj/item/stock_parts/cell/hyper/empty/New()
|
||||
..()
|
||||
charge = 0
|
||||
|
||||
/obj/item/weapon/stock_parts/cell/bluespace
|
||||
/obj/item/stock_parts/cell/bluespace
|
||||
name = "bluespace power cell"
|
||||
origin_tech = "powerstorage=5;bluespace=4;materials=4;engineering=4"
|
||||
icon_state = "bscell"
|
||||
@@ -135,11 +135,11 @@
|
||||
rating = 6
|
||||
chargerate = 4000
|
||||
|
||||
/obj/item/weapon/stock_parts/cell/bluespace/empty/New()
|
||||
/obj/item/stock_parts/cell/bluespace/empty/New()
|
||||
..()
|
||||
charge = 0
|
||||
|
||||
/obj/item/weapon/stock_parts/cell/infinite
|
||||
/obj/item/stock_parts/cell/infinite
|
||||
name = "infinite-capacity power cell!"
|
||||
icon_state = "icell"
|
||||
origin_tech = "powerstorage=7"
|
||||
@@ -148,10 +148,10 @@
|
||||
rating = 6
|
||||
chargerate = 30000
|
||||
|
||||
/obj/item/weapon/stock_parts/cell/infinite/use()
|
||||
/obj/item/stock_parts/cell/infinite/use()
|
||||
return 1
|
||||
|
||||
/obj/item/weapon/stock_parts/cell/potato
|
||||
/obj/item/stock_parts/cell/potato
|
||||
name = "potato battery"
|
||||
desc = "A rechargable starch based power cell."
|
||||
icon = 'icons/obj/hydroponics/harvest.dmi'
|
||||
@@ -163,7 +163,7 @@
|
||||
rating = 1
|
||||
grown_battery = TRUE //it has the overlays for wires
|
||||
|
||||
/obj/item/weapon/stock_parts/cell/high/slime
|
||||
/obj/item/stock_parts/cell/high/slime
|
||||
name = "charged slime core"
|
||||
desc = "A yellow slime core infused with plasma, it crackles with power."
|
||||
origin_tech = "powerstorage=5;biotech=4"
|
||||
@@ -173,39 +173,39 @@
|
||||
self_recharge = 1 // Infused slime cores self-recharge, over time
|
||||
chargerate = 500
|
||||
|
||||
/obj/item/weapon/stock_parts/cell/pulse //200 pulse shots
|
||||
/obj/item/stock_parts/cell/pulse //200 pulse shots
|
||||
name = "pulse rifle power cell"
|
||||
maxcharge = 40000
|
||||
rating = 3
|
||||
chargerate = 1500
|
||||
|
||||
/obj/item/weapon/stock_parts/cell/pulse/carbine //25 pulse shots
|
||||
/obj/item/stock_parts/cell/pulse/carbine //25 pulse shots
|
||||
name = "pulse carbine power cell"
|
||||
maxcharge = 5000
|
||||
|
||||
/obj/item/weapon/stock_parts/cell/pulse/pistol //10 pulse shots
|
||||
/obj/item/stock_parts/cell/pulse/pistol //10 pulse shots
|
||||
name = "pulse pistol power cell"
|
||||
maxcharge = 2000
|
||||
|
||||
/obj/item/weapon/stock_parts/cell/ninja
|
||||
/obj/item/stock_parts/cell/ninja
|
||||
name = "spider-clan power cell"
|
||||
desc = "A standard ninja-suit power cell."
|
||||
maxcharge = 10000
|
||||
rating = 3
|
||||
materials = list(MAT_GLASS=60)
|
||||
|
||||
/obj/item/weapon/stock_parts/cell/emproof
|
||||
/obj/item/stock_parts/cell/emproof
|
||||
name = "\improper EMP-proof cell"
|
||||
desc = "An EMP-proof cell."
|
||||
maxcharge = 500
|
||||
rating = 2
|
||||
|
||||
/obj/item/weapon/stock_parts/cell/emproof/empty/New()
|
||||
/obj/item/stock_parts/cell/emproof/empty/New()
|
||||
..()
|
||||
charge = 0
|
||||
|
||||
/obj/item/weapon/stock_parts/cell/emproof/emp_act(severity)
|
||||
/obj/item/stock_parts/cell/emproof/emp_act(severity)
|
||||
return
|
||||
|
||||
/obj/item/weapon/stock_parts/cell/emproof/corrupt()
|
||||
/obj/item/stock_parts/cell/emproof/corrupt()
|
||||
return
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/obj/item/weapon/melee/powerfist
|
||||
/obj/item/melee/powerfist
|
||||
name = "power-fist"
|
||||
desc = "A metal gauntlet with a piston-powered ram ontop for that extra 'ompfh' in your punch."
|
||||
icon_state = "powerfist"
|
||||
@@ -13,14 +13,14 @@
|
||||
var/click_delay = 1.5
|
||||
var/fisto_setting = 1
|
||||
var/gasperfist = 3
|
||||
var/obj/item/weapon/tank/tank = null //Tank used for the gauntlet's piston-ram.
|
||||
var/obj/item/tank/tank = null //Tank used for the gauntlet's piston-ram.
|
||||
|
||||
|
||||
/obj/item/weapon/melee/powerfist/Destroy()
|
||||
/obj/item/melee/powerfist/Destroy()
|
||||
QDEL_NULL(tank)
|
||||
return ..()
|
||||
|
||||
/obj/item/weapon/melee/powerfist/examine(mob/user)
|
||||
/obj/item/melee/powerfist/examine(mob/user)
|
||||
..()
|
||||
if(!in_range(user, src))
|
||||
to_chat(user, "<span class='notice'>You'll need to get closer to see any more.</span>")
|
||||
@@ -28,10 +28,10 @@
|
||||
if(tank)
|
||||
to_chat(user, "<span class='notice'>[bicon(tank)] It has [tank] mounted onto it.</span>")
|
||||
|
||||
/obj/item/weapon/melee/powerfist/attackby(obj/item/weapon/W, mob/user, params)
|
||||
if(istype(W, /obj/item/weapon/tank))
|
||||
/obj/item/melee/powerfist/attackby(obj/item/W, mob/user, params)
|
||||
if(istype(W, /obj/item/tank))
|
||||
if(!tank)
|
||||
var/obj/item/weapon/tank/IT = W
|
||||
var/obj/item/tank/IT = W
|
||||
if(IT.volume <= 3)
|
||||
to_chat(user, "<span class='warning'>[IT] is too small for [src].</span>")
|
||||
return
|
||||
@@ -51,7 +51,7 @@
|
||||
updateTank(tank, 1, user)
|
||||
|
||||
|
||||
/obj/item/weapon/melee/powerfist/proc/updateTank(obj/item/weapon/tank/thetank, removing = 0, mob/living/carbon/human/user)
|
||||
/obj/item/melee/powerfist/proc/updateTank(obj/item/tank/thetank, removing = 0, mob/living/carbon/human/user)
|
||||
if(removing)
|
||||
if(!tank)
|
||||
to_chat(user, "<span class='notice'>[src] currently has no tank attached to it.</span>")
|
||||
@@ -71,7 +71,7 @@
|
||||
thetank.forceMove(src)
|
||||
|
||||
|
||||
/obj/item/weapon/melee/powerfist/attack(mob/living/target, mob/living/user)
|
||||
/obj/item/melee/powerfist/attack(mob/living/target, mob/living/user)
|
||||
if(!tank)
|
||||
to_chat(user, "<span class='warning'>[src] can't operate without a source of gas!</span>")
|
||||
return
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
#define DEVICES 4
|
||||
#define HEAT_PIPING 5
|
||||
|
||||
/obj/item/weapon/rpd
|
||||
/obj/item/rpd
|
||||
name = "rapid pipe dispenser"
|
||||
desc = "This device can rapidly dispense atmospherics and disposals piping, manipulate loose piping, and recycle any detached pipes it is applied to."
|
||||
icon = 'icons/obj/tools.dmi'
|
||||
@@ -51,7 +51,7 @@
|
||||
var/spawndelay = 4 //How long should we have to wait between dispensing pipes?
|
||||
var/walldelay = 40 //How long should drilling into a wall take?
|
||||
|
||||
/obj/item/weapon/rpd/New()
|
||||
/obj/item/rpd/New()
|
||||
..()
|
||||
spark_system = new /datum/effect_system/spark_spread()
|
||||
spark_system.set_up(1, 0, src)
|
||||
@@ -59,14 +59,14 @@
|
||||
|
||||
//Procs
|
||||
|
||||
/obj/item/weapon/rpd/proc/Activaterpd(delay)
|
||||
/obj/item/rpd/proc/Activaterpd(delay)
|
||||
playsound(loc, "sound/machines/click.ogg", 50, 1)
|
||||
if(prob(15))
|
||||
spark_system.start()
|
||||
if(delay)
|
||||
lastused = world.time
|
||||
|
||||
/obj/item/weapon/rpd/proc/Manipulatepipes(subject, atmosverb, disposalsverb)
|
||||
/obj/item/rpd/proc/Manipulatepipes(subject, atmosverb, disposalsverb)
|
||||
if(istype(subject, /obj/item/pipe))
|
||||
call(subject, atmosverb)()
|
||||
else if(istype(subject, /obj/structure/disposalconstruct/))
|
||||
@@ -136,17 +136,17 @@ var/list/pipemenu = list(
|
||||
|
||||
//NanoUI stuff
|
||||
|
||||
/obj/item/weapon/rpd/attack_self(mob/user)
|
||||
/obj/item/rpd/attack_self(mob/user)
|
||||
ui_interact(user)
|
||||
|
||||
/obj/item/weapon/rpd/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1, var/datum/topic_state/state = inventory_state)
|
||||
/obj/item/rpd/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1, var/datum/topic_state/state = inventory_state)
|
||||
ui = SSnanoui.try_update_ui(user, src, ui_key, ui, force_open)
|
||||
if(!ui)
|
||||
ui = new(user, src, ui_key, "rpd.tmpl", "[name]", 400, 650, state = state)
|
||||
ui.open()
|
||||
ui.set_auto_update(1)
|
||||
|
||||
/obj/item/weapon/rpd/ui_data(mob/user, ui_key = "main", datum/topic_state/state = inventory_state)
|
||||
/obj/item/rpd/ui_data(mob/user, ui_key = "main", datum/topic_state/state = inventory_state)
|
||||
var/data[0]
|
||||
data["dpipelist"] = dpipelist
|
||||
data["iconrotation"] = iconrotation
|
||||
@@ -159,7 +159,7 @@ var/list/pipemenu = list(
|
||||
data["whatpipe"] = whatpipe
|
||||
return data
|
||||
|
||||
/obj/item/weapon/rpd/Topic(href, href_list, nowindow, state)
|
||||
/obj/item/rpd/Topic(href, href_list, nowindow, state)
|
||||
..()
|
||||
if(href_list["iconrotation"])
|
||||
iconrotation = text2num(sanitize(href_list["iconrotation"]))
|
||||
@@ -177,7 +177,7 @@ var/list/pipemenu = list(
|
||||
|
||||
//What the RPD actually does
|
||||
|
||||
/obj/item/weapon/rpd/afterattack(atom/target, mob/user, proximity)
|
||||
/obj/item/rpd/afterattack(atom/target, mob/user, proximity)
|
||||
..()
|
||||
var/turf/T = get_turf(target)
|
||||
if(loc != user || ismob(target) || istype(target, /obj/structure/window) || !proximity || world.time < lastused + spawndelay)
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/obj/item/weapon/scissors
|
||||
/obj/item/scissors
|
||||
name = "Scissors"
|
||||
desc = "Those are scissors. Don't run with them!"
|
||||
icon_state = "scissor"
|
||||
@@ -10,7 +10,7 @@
|
||||
attack_verb = list("slices", "cuts", "stabs", "jabs")
|
||||
toolspeed = 1
|
||||
|
||||
/obj/item/weapon/scissors/barber
|
||||
/obj/item/scissors/barber
|
||||
name = "Barber's Scissors"
|
||||
desc = "A pair of scissors used by the barber."
|
||||
icon_state = "bscissor"
|
||||
@@ -18,7 +18,7 @@
|
||||
attack_verb = list("beautifully sliced", "artistically cut", "smoothly stabbed", "quickly jabbed")
|
||||
toolspeed = 0.75
|
||||
|
||||
/obj/item/weapon/scissors/attack(mob/living/carbon/M as mob, mob/user as mob)
|
||||
/obj/item/scissors/attack(mob/living/carbon/M as mob, mob/user as mob)
|
||||
if(user.a_intent != INTENT_HELP)
|
||||
..()
|
||||
return
|
||||
@@ -93,12 +93,12 @@
|
||||
H.update_fhair()
|
||||
user.visible_message("<span class='notice'>[user] finishes cutting [M]'s hair!</span>")
|
||||
|
||||
/obj/item/weapon/scissors/safety //Totally safe, I assure you.
|
||||
/obj/item/scissors/safety //Totally safe, I assure you.
|
||||
desc = "The blades of the scissors appear to be made of some sort of ultra-strong metal alloy."
|
||||
force = 18 //same as e-daggers
|
||||
var/is_cutting = 0 //to prevent spam clicking this for huge accumulation of losebreath.
|
||||
|
||||
/obj/item/weapon/scissors/safety/attack(mob/living/carbon/M as mob, mob/user as mob)
|
||||
/obj/item/scissors/safety/attack(mob/living/carbon/M as mob, mob/user as mob)
|
||||
if(user.a_intent != INTENT_HELP)
|
||||
..()
|
||||
return
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/obj/item/weapon/teleportation_scroll
|
||||
/obj/item/teleportation_scroll
|
||||
name = "scroll of teleportation"
|
||||
desc = "A scroll for moving around."
|
||||
icon = 'icons/obj/wizard.dmi'
|
||||
@@ -11,12 +11,12 @@
|
||||
origin_tech = "bluespace=6"
|
||||
burn_state = FLAMMABLE
|
||||
|
||||
/obj/item/weapon/teleportation_scroll/apprentice
|
||||
/obj/item/teleportation_scroll/apprentice
|
||||
name = "lesser scroll of teleportation"
|
||||
uses = 1
|
||||
origin_tech = "bluespace=5"
|
||||
|
||||
/obj/item/weapon/teleportation_scroll/attack_self(mob/user as mob)
|
||||
/obj/item/teleportation_scroll/attack_self(mob/user as mob)
|
||||
user.set_machine(src)
|
||||
var/dat = "<B>Teleportation Scroll:</B><BR>"
|
||||
dat += "Number of uses: [src.uses]<BR>"
|
||||
@@ -28,7 +28,7 @@
|
||||
onclose(user, "scroll")
|
||||
return
|
||||
|
||||
/obj/item/weapon/teleportation_scroll/Topic(href, href_list)
|
||||
/obj/item/teleportation_scroll/Topic(href, href_list)
|
||||
..()
|
||||
if(usr.stat || usr.restrained() || src.loc != usr)
|
||||
return
|
||||
@@ -43,7 +43,7 @@
|
||||
attack_self(H)
|
||||
return
|
||||
|
||||
/obj/item/weapon/teleportation_scroll/proc/teleportscroll(var/mob/user)
|
||||
/obj/item/teleportation_scroll/proc/teleportscroll(var/mob/user)
|
||||
|
||||
var/A
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
// Glass shards
|
||||
|
||||
/obj/item/weapon/shard
|
||||
/obj/item/shard
|
||||
name = "glass shard"
|
||||
icon = 'icons/obj/shards.dmi'
|
||||
icon_state = "large"
|
||||
@@ -15,12 +15,12 @@
|
||||
hitsound = 'sound/weapons/bladeslice.ogg'
|
||||
armor = list("melee" = 100, "bullet" = 0, "laser" = 0, "energy" = 100, "bomb" = 0, "bio" = 0, "rad" = 0)
|
||||
|
||||
/obj/item/weapon/shard/suicide_act(mob/user)
|
||||
/obj/item/shard/suicide_act(mob/user)
|
||||
to_chat(viewers(user), pick("<span class='danger'>[user] is slitting \his wrists with \the [src]! It looks like \he's trying to commit suicide.</span>",
|
||||
"<span class='danger'>[user] is slitting \his throat with \the [src]! It looks like \he's trying to commit suicide.</span>"))
|
||||
return (BRUTELOSS)
|
||||
|
||||
/obj/item/weapon/shard/New()
|
||||
/obj/item/shard/New()
|
||||
..()
|
||||
icon_state = pick("large", "medium", "small")
|
||||
switch(icon_state)
|
||||
@@ -34,12 +34,12 @@
|
||||
pixel_x = rand(-5, 5)
|
||||
pixel_y = rand(-5, 5)
|
||||
|
||||
/obj/item/weapon/shard/afterattack(atom/movable/AM, mob/user, proximity)
|
||||
/obj/item/shard/afterattack(atom/movable/AM, mob/user, proximity)
|
||||
if(!proximity || !(src in user))
|
||||
return
|
||||
if(isturf(AM))
|
||||
return
|
||||
if(istype(AM, /obj/item/weapon/storage))
|
||||
if(istype(AM, /obj/item/storage))
|
||||
return
|
||||
if(ishuman(user))
|
||||
var/mob/living/carbon/human/H = user
|
||||
@@ -52,9 +52,9 @@
|
||||
H.UpdateDamageIcon()
|
||||
H.updatehealth()
|
||||
|
||||
/obj/item/weapon/shard/attackby(obj/item/I, mob/user, params)
|
||||
/obj/item/shard/attackby(obj/item/I, mob/user, params)
|
||||
if(iswelder(I))
|
||||
var/obj/item/weapon/weldingtool/WT = I
|
||||
var/obj/item/weldingtool/WT = I
|
||||
if(WT.remove_fuel(0, user))
|
||||
var/obj/item/stack/sheet/glass/NG = new (user.loc)
|
||||
for(var/obj/item/stack/sheet/glass/G in user.loc)
|
||||
@@ -68,7 +68,7 @@
|
||||
else
|
||||
return ..()
|
||||
|
||||
/obj/item/weapon/shard/Crossed(AM as mob|obj)
|
||||
/obj/item/shard/Crossed(AM as mob|obj)
|
||||
if(isliving(AM))
|
||||
var/mob/living/M = AM
|
||||
if(M.incorporeal_move || M.flying || M.throwing)//you are incorporal or flying or being thrown ..no shard stepping!
|
||||
@@ -90,7 +90,7 @@
|
||||
H.updatehealth()
|
||||
..()
|
||||
|
||||
/obj/item/weapon/shard/plasma
|
||||
/obj/item/shard/plasma
|
||||
name = "plasma shard"
|
||||
desc = "A shard of plasma glass. Considerably tougher then normal glass shards. Apparently not tough enough to be a window."
|
||||
force = 8
|
||||
@@ -98,7 +98,7 @@
|
||||
icon_state = "plasmalarge"
|
||||
sharp = TRUE
|
||||
|
||||
/obj/item/weapon/shard/plasma/New()
|
||||
/obj/item/shard/plasma/New()
|
||||
..()
|
||||
icon_state = pick("plasmalarge", "plasmamedium", "plasmasmall")
|
||||
switch(icon_state)
|
||||
@@ -112,9 +112,9 @@
|
||||
pixel_x = rand(-5, 5)
|
||||
pixel_y = rand(-5, 5)
|
||||
|
||||
/obj/item/weapon/shard/plasma/attackby(obj/item/weapon/W, mob/user, params)
|
||||
/obj/item/shard/plasma/attackby(obj/item/W, mob/user, params)
|
||||
if(iswelder(W))
|
||||
var/obj/item/weapon/weldingtool/WT = W
|
||||
var/obj/item/weldingtool/WT = W
|
||||
if(WT.remove_fuel(0, user))
|
||||
var/obj/item/stack/sheet/plasmaglass/NG = new (user.loc)
|
||||
for(var/obj/item/stack/sheet/plasmaglass/G in user.loc)
|
||||
|
||||
@@ -1,19 +1,18 @@
|
||||
/obj/item/weapon/shield
|
||||
/obj/item/shield
|
||||
name = "shield"
|
||||
block_chance = 50
|
||||
armor = list(melee = 50, bullet = 50, laser = 50, energy = 0, bomb = 30, bio = 0, rad = 0)
|
||||
|
||||
/obj/item/weapon/shield/hit_reaction(mob/living/carbon/human/owner, attack_text, final_block_chance, damage, attack_type)
|
||||
/obj/item/shield/hit_reaction(mob/living/carbon/human/owner, attack_text, final_block_chance, damage, attack_type)
|
||||
if(attack_type == THROWN_PROJECTILE_ATTACK)
|
||||
final_block_chance += 30
|
||||
if(attack_type == LEAP_ATTACK)
|
||||
final_block_chance = 100
|
||||
return ..()
|
||||
|
||||
/obj/item/weapon/shield/riot
|
||||
/obj/item/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"
|
||||
slot_flags = SLOT_BACK
|
||||
force = 10
|
||||
@@ -26,8 +25,8 @@
|
||||
attack_verb = list("shoved", "bashed")
|
||||
var/cooldown = 0 //shield bash cooldown. based on world.time
|
||||
|
||||
/obj/item/weapon/shield/riot/attackby(obj/item/weapon/W as obj, mob/user as mob, params)
|
||||
if(istype(W, /obj/item/weapon/melee/baton))
|
||||
/obj/item/shield/riot/attackby(obj/item/W as obj, mob/user as mob, params)
|
||||
if(istype(W, /obj/item/melee/baton))
|
||||
if(cooldown < world.time - 25)
|
||||
user.visible_message("<span class='warning'>[user] bashes [src] with [W]!</span>")
|
||||
playsound(user.loc, 'sound/effects/shieldbash.ogg', 50, 1)
|
||||
@@ -35,13 +34,13 @@
|
||||
else
|
||||
..()
|
||||
|
||||
/obj/item/weapon/shield/riot/roman
|
||||
/obj/item/shield/riot/roman
|
||||
name = "roman shield"
|
||||
desc = "Bears an inscription on the inside: <i>\"Romanes venio domus\"</i>."
|
||||
icon_state = "roman_shield"
|
||||
item_state = "roman_shield"
|
||||
|
||||
/obj/item/weapon/shield/riot/buckler
|
||||
/obj/item/shield/riot/buckler
|
||||
name = "wooden buckler"
|
||||
desc = "A medieval wooden buckler."
|
||||
icon_state = "buckler"
|
||||
@@ -51,10 +50,9 @@
|
||||
burn_state = FLAMMABLE
|
||||
block_chance = 30
|
||||
|
||||
/obj/item/weapon/shield/energy
|
||||
/obj/item/shield/energy
|
||||
name = "energy combat shield"
|
||||
desc = "A shield capable of stopping most melee attacks. Protects user from almost all energy projectiles. It can be retracted, expanded, and stored anywhere."
|
||||
icon = 'icons/obj/weapons.dmi'
|
||||
icon_state = "eshield0" // eshield1 for expanded
|
||||
force = 3
|
||||
throwforce = 3
|
||||
@@ -65,13 +63,13 @@
|
||||
attack_verb = list("shoved", "bashed")
|
||||
var/active = 0
|
||||
|
||||
/obj/item/weapon/shield/energy/hit_reaction(mob/living/carbon/human/owner, attack_text, final_block_chance)
|
||||
/obj/item/shield/energy/hit_reaction(mob/living/carbon/human/owner, attack_text, final_block_chance)
|
||||
return 0
|
||||
|
||||
/obj/item/weapon/shield/energy/IsReflect()
|
||||
/obj/item/shield/energy/IsReflect()
|
||||
return (active)
|
||||
|
||||
/obj/item/weapon/shield/energy/attack_self(mob/living/carbon/human/user)
|
||||
/obj/item/shield/energy/attack_self(mob/living/carbon/human/user)
|
||||
if(user.disabilities & CLUMSY && prob(50))
|
||||
to_chat(user, "<span class='warning'>You beat yourself in the head with [src].</span>")
|
||||
user.take_organ_damage(5)
|
||||
@@ -99,10 +97,9 @@
|
||||
add_fingerprint(user)
|
||||
return
|
||||
|
||||
/obj/item/weapon/shield/riot/tele
|
||||
/obj/item/shield/riot/tele
|
||||
name = "telescopic shield"
|
||||
desc = "An advanced riot shield made of lightweight materials that collapses for easy storage."
|
||||
icon = 'icons/obj/weapons.dmi'
|
||||
icon_state = "teleriot0"
|
||||
origin_tech = "materials=3;combat=4;engineering=4"
|
||||
slot_flags = null
|
||||
@@ -113,12 +110,12 @@
|
||||
w_class = WEIGHT_CLASS_NORMAL
|
||||
var/active = 0
|
||||
|
||||
/obj/item/weapon/shield/riot/tele/hit_reaction(mob/living/carbon/human/owner, attack_text, final_block_chance)
|
||||
/obj/item/shield/riot/tele/hit_reaction(mob/living/carbon/human/owner, attack_text, final_block_chance)
|
||||
if(active)
|
||||
return ..()
|
||||
return 0
|
||||
|
||||
/obj/item/weapon/shield/riot/tele/attack_self(mob/living/user)
|
||||
/obj/item/shield/riot/tele/attack_self(mob/living/user)
|
||||
active = !active
|
||||
icon_state = "teleriot[active]"
|
||||
playsound(src.loc, 'sound/weapons/batonextend.ogg', 50, 1)
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/obj/item/weapon/picket_sign
|
||||
/obj/item/picket_sign
|
||||
icon_state = "picket"
|
||||
item_state = "picket"
|
||||
name = "blank picket sign"
|
||||
@@ -12,8 +12,8 @@
|
||||
|
||||
var/label = ""
|
||||
|
||||
/obj/item/weapon/picket_sign/attackby(obj/item/weapon/W, mob/user, params)
|
||||
if(istype(W, /obj/item/weapon/pen) || istype(W, /obj/item/toy/crayon))
|
||||
/obj/item/picket_sign/attackby(obj/item/W, mob/user, params)
|
||||
if(istype(W, /obj/item/pen) || istype(W, /obj/item/toy/crayon))
|
||||
var/txt = stripped_input(user, "What would you like to write on the sign?", "Sign Label", null , 30)
|
||||
if(txt)
|
||||
label = txt
|
||||
@@ -21,7 +21,7 @@
|
||||
desc = "It reads: [label]"
|
||||
..()
|
||||
|
||||
/obj/item/weapon/picket_sign/attack_self(mob/living/carbon/human/user)
|
||||
/obj/item/picket_sign/attack_self(mob/living/carbon/human/user)
|
||||
if(delayed)
|
||||
user.show_message("<span class='warning'>Your arm is too tired to do that again so soon!</span>")
|
||||
return
|
||||
@@ -38,7 +38,7 @@
|
||||
|
||||
/datum/crafting_recipe/picket_sign
|
||||
name = "Picket Sign"
|
||||
result = /obj/item/weapon/picket_sign
|
||||
result = /obj/item/picket_sign
|
||||
reqs = list(/obj/item/stack/rods = 1,
|
||||
/obj/item/stack/sheet/cardboard = 2)
|
||||
time = 80
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/obj/item/weapon/soap
|
||||
/obj/item/soap
|
||||
name = "soap"
|
||||
desc = "A cheap bar of soap. Doesn't smell."
|
||||
gender = PLURAL
|
||||
@@ -20,7 +20,7 @@
|
||||
|
||||
|
||||
|
||||
/obj/item/weapon/soap/afterattack(atom/target, mob/user, proximity)
|
||||
/obj/item/soap/afterattack(atom/target, mob/user, proximity)
|
||||
if(!proximity) return
|
||||
//I couldn't feasibly fix the overlay bugs caused by cleaning items we are wearing.
|
||||
//So this is a workaround. This also makes more sense from an IC standpoint. ~Carn
|
||||
@@ -48,26 +48,26 @@
|
||||
var/turf/simulated/T = target
|
||||
T.dirt = 0
|
||||
|
||||
/obj/item/weapon/soap/attack(mob/target as mob, mob/user as mob)
|
||||
/obj/item/soap/attack(mob/target as mob, mob/user as mob)
|
||||
if(target && user && ishuman(target) && ishuman(user) && !target.stat && !user.stat && user.zone_sel &&user.zone_sel.selecting == "mouth" )
|
||||
user.visible_message("<span class='warning'>\the [user] washes \the [target]'s mouth out with [src.name]!</span>")
|
||||
return
|
||||
..()
|
||||
|
||||
/obj/item/weapon/soap/nanotrasen
|
||||
/obj/item/soap/nanotrasen
|
||||
desc = "A Nanotrasen brand bar of soap. Smells of plasma."
|
||||
icon_state = "soapnt"
|
||||
|
||||
/obj/item/weapon/soap/homemade
|
||||
/obj/item/soap/homemade
|
||||
desc = "A homemade bar of soap. Smells of... well...."
|
||||
icon_state = "soapgibs"
|
||||
cleanspeed = 45 // a little faster to reward chemists for going to the effort
|
||||
|
||||
/obj/item/weapon/soap/ducttape
|
||||
/obj/item/soap/ducttape
|
||||
desc = "A homemade bar of soap. It seems to be gibs and tape..Will this clean anything?"
|
||||
icon_state = "soapgibs"
|
||||
|
||||
/obj/item/weapon/soap/ducttape/afterattack(atom/target, mob/user as mob, proximity)
|
||||
/obj/item/soap/ducttape/afterattack(atom/target, mob/user as mob, proximity)
|
||||
if(!proximity) return
|
||||
|
||||
if(user.client && (target in user.client.screen))
|
||||
@@ -80,7 +80,7 @@
|
||||
new /obj/effect/decal/cleanable/blood/gibs/cleangibs(target)
|
||||
else if(istype(target,/mob/living/carbon))
|
||||
for(var/obj/item/carried_item in target.contents)
|
||||
if(!istype(carried_item, /obj/item/weapon/implant))//If it's not an implant.
|
||||
if(!istype(carried_item, /obj/item/implant))//If it's not an implant.
|
||||
carried_item.add_mob_blood(target)//Oh yes, there will be blood...
|
||||
var/mob/living/carbon/human/H = target
|
||||
H.bloody_hands(target,0)
|
||||
@@ -88,12 +88,12 @@
|
||||
|
||||
return
|
||||
|
||||
/obj/item/weapon/soap/deluxe
|
||||
/obj/item/soap/deluxe
|
||||
desc = "A deluxe Waffle Co. brand bar of soap. Smells of comdoms."
|
||||
icon_state = "soapdeluxe"
|
||||
cleanspeed = 40 //slightly better because deluxe -- captain gets one of these
|
||||
|
||||
/obj/item/weapon/soap/syndie
|
||||
/obj/item/soap/syndie
|
||||
desc = "An untrustworthy bar of soap made of strong chemical agents that dissolve blood faster."
|
||||
icon_state = "soapsyndie"
|
||||
cleanspeed = 10 //much faster than mop so it is useful for traitors who want to clean crime scenes
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/obj/item/weapon/twohanded/staff
|
||||
/obj/item/twohanded/staff
|
||||
name = "wizards staff"
|
||||
desc = "Apparently a staff used by the wizard."
|
||||
icon = 'icons/obj/wizard.dmi'
|
||||
@@ -12,14 +12,14 @@
|
||||
attack_verb = list("bludgeoned", "whacked", "disciplined")
|
||||
burn_state = FLAMMABLE
|
||||
|
||||
/obj/item/weapon/twohanded/staff/broom
|
||||
/obj/item/twohanded/staff/broom
|
||||
name = "broom"
|
||||
desc = "Used for sweeping, and flying into the night while cackling. Black cat not included."
|
||||
icon = 'icons/obj/wizard.dmi'
|
||||
icon_state = "broom"
|
||||
item_state = "broom0"
|
||||
|
||||
/obj/item/weapon/twohanded/staff/broom/attack_self(mob/user as mob)
|
||||
/obj/item/twohanded/staff/broom/attack_self(mob/user as mob)
|
||||
..()
|
||||
item_state = "broom[wielded ? 1 : 0]"
|
||||
force = wielded ? 5 : 3
|
||||
@@ -43,30 +43,29 @@
|
||||
if(wielded)
|
||||
to_chat(user, "<span class='notice'>You hold \the [src] between your legs.</span>")
|
||||
|
||||
/obj/item/weapon/twohanded/staff/broom/attackby(var/obj/O, mob/user)
|
||||
/obj/item/twohanded/staff/broom/attackby(var/obj/O, mob/user)
|
||||
if(istype(O, /obj/item/clothing/mask/horsehead))
|
||||
new/obj/item/weapon/twohanded/staff/broom/horsebroom(get_turf(src))
|
||||
new/obj/item/twohanded/staff/broom/horsebroom(get_turf(src))
|
||||
user.unEquip(O)
|
||||
qdel(O)
|
||||
qdel(src)
|
||||
return
|
||||
..()
|
||||
|
||||
/obj/item/weapon/twohanded/staff/broom/horsebroom
|
||||
/obj/item/twohanded/staff/broom/horsebroom
|
||||
name = "broomstick horse"
|
||||
desc = "Saddle up!"
|
||||
icon = 'icons/obj/wizard.dmi'
|
||||
icon_state = "horsebroom"
|
||||
item_state = "horsebroom0"
|
||||
|
||||
/obj/item/weapon/twohanded/staff/broom/horsebroom/attack_self(mob/user as mob)
|
||||
/obj/item/twohanded/staff/broom/horsebroom/attack_self(mob/user as mob)
|
||||
..()
|
||||
item_state = "horsebroom[wielded ? 1 : 0]"
|
||||
|
||||
/obj/item/weapon/twohanded/staff/stick
|
||||
/obj/item/twohanded/staff/stick
|
||||
name = "stick"
|
||||
desc = "A great tool to drag someone else's drinks across the bar."
|
||||
icon = 'icons/obj/weapons.dmi'
|
||||
icon_state = "stick"
|
||||
item_state = "stick"
|
||||
force = 3.0
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
///////////////////////////////////////Stock Parts /////////////////////////////////
|
||||
|
||||
/obj/item/weapon/storage/part_replacer
|
||||
/obj/item/storage/part_replacer
|
||||
name = "Rapid Part Exchange Device"
|
||||
desc = "Special mechanical module made to store, sort, and apply standard machine parts."
|
||||
icon_state = "RPED"
|
||||
item_state = "RPED"
|
||||
w_class = WEIGHT_CLASS_HUGE
|
||||
can_hold = list(/obj/item/weapon/stock_parts)
|
||||
can_hold = list(/obj/item/stock_parts)
|
||||
storage_slots = 50
|
||||
use_to_pickup = 1
|
||||
allow_quick_gather = 1
|
||||
@@ -21,7 +21,7 @@
|
||||
toolspeed = 1
|
||||
usesound = 'sound/items/rped.ogg'
|
||||
|
||||
/obj/item/weapon/storage/part_replacer/afterattack(obj/machinery/T as obj, mob/living/carbon/human/user as mob, flag, params)
|
||||
/obj/item/storage/part_replacer/afterattack(obj/machinery/T as obj, mob/living/carbon/human/user as mob, flag, params)
|
||||
if(flag)
|
||||
return
|
||||
else if(works_from_distance)
|
||||
@@ -31,7 +31,7 @@
|
||||
user.Beam(T,icon_state="rped_upgrade",icon='icons/effects/effects.dmi',time=5)
|
||||
return
|
||||
|
||||
/obj/item/weapon/storage/part_replacer/bluespace
|
||||
/obj/item/storage/part_replacer/bluespace
|
||||
name = "bluespace rapid part exchange device"
|
||||
desc = "A version of the RPED that allows for replacement of parts and scanning from a distance, along with higher capacity for parts."
|
||||
icon_state = "BS_RPED"
|
||||
@@ -45,7 +45,7 @@
|
||||
usesound = 'sound/items/PSHOOM.ogg'
|
||||
toolspeed = 0.5
|
||||
|
||||
/obj/item/weapon/storage/part_replacer/proc/play_rped_sound()
|
||||
/obj/item/storage/part_replacer/proc/play_rped_sound()
|
||||
//Plays the sound for RPED exchanging or installing parts.
|
||||
if(alt_sound && prob(3))
|
||||
playsound(src, alt_sound, 40, 1)
|
||||
@@ -53,11 +53,11 @@
|
||||
playsound(src, primary_sound, 40, 1)
|
||||
|
||||
//Sorts stock parts inside an RPED by their rating.
|
||||
//Only use /obj/item/weapon/stock_parts/ with this sort proc!
|
||||
/proc/cmp_rped_sort(var/obj/item/weapon/stock_parts/A, var/obj/item/weapon/stock_parts/B)
|
||||
//Only use /obj/item/stock_parts/ with this sort proc!
|
||||
/proc/cmp_rped_sort(var/obj/item/stock_parts/A, var/obj/item/stock_parts/B)
|
||||
return B.rating - A.rating
|
||||
|
||||
/obj/item/weapon/stock_parts
|
||||
/obj/item/stock_parts
|
||||
name = "stock part"
|
||||
desc = "What?"
|
||||
gender = PLURAL
|
||||
@@ -67,48 +67,48 @@
|
||||
toolspeed = 1
|
||||
usesound = 'sound/items/Deconstruct.ogg'
|
||||
|
||||
/obj/item/weapon/stock_parts/New()
|
||||
/obj/item/stock_parts/New()
|
||||
src.pixel_x = rand(-5.0, 5)
|
||||
src.pixel_y = rand(-5.0, 5)
|
||||
|
||||
//Rank 1
|
||||
|
||||
/obj/item/weapon/stock_parts/console_screen
|
||||
/obj/item/stock_parts/console_screen
|
||||
name = "console screen"
|
||||
desc = "Used in the construction of computers and other devices with a interactive console."
|
||||
icon_state = "screen"
|
||||
origin_tech = "materials=1"
|
||||
materials = list(MAT_GLASS=200)
|
||||
|
||||
/obj/item/weapon/stock_parts/capacitor
|
||||
/obj/item/stock_parts/capacitor
|
||||
name = "capacitor"
|
||||
desc = "A basic capacitor used in the construction of a variety of devices."
|
||||
icon_state = "capacitor"
|
||||
origin_tech = "powerstorage=1"
|
||||
materials = list(MAT_METAL=50, MAT_GLASS=50)
|
||||
|
||||
/obj/item/weapon/stock_parts/scanning_module
|
||||
/obj/item/stock_parts/scanning_module
|
||||
name = "scanning module"
|
||||
desc = "A compact, high resolution scanning module used in the construction of certain devices."
|
||||
icon_state = "scan_module"
|
||||
origin_tech = "magnets=1"
|
||||
materials = list(MAT_METAL=50, MAT_GLASS=20)
|
||||
|
||||
/obj/item/weapon/stock_parts/manipulator
|
||||
/obj/item/stock_parts/manipulator
|
||||
name = "micro-manipulator"
|
||||
desc = "A tiny little manipulator used in the construction of certain devices."
|
||||
icon_state = "micro_mani"
|
||||
origin_tech = "materials=1;programming=1"
|
||||
materials = list(MAT_METAL=30)
|
||||
|
||||
/obj/item/weapon/stock_parts/micro_laser
|
||||
/obj/item/stock_parts/micro_laser
|
||||
name = "micro-laser"
|
||||
desc = "A tiny laser used in certain devices."
|
||||
icon_state = "micro_laser"
|
||||
origin_tech = "magnets=1"
|
||||
materials = list(MAT_METAL=10, MAT_GLASS=20)
|
||||
|
||||
/obj/item/weapon/stock_parts/matter_bin
|
||||
/obj/item/stock_parts/matter_bin
|
||||
name = "matter bin"
|
||||
desc = "A container for hold compressed matter awaiting re-construction."
|
||||
icon_state = "matter_bin"
|
||||
@@ -117,7 +117,7 @@
|
||||
|
||||
//Rank 2
|
||||
|
||||
/obj/item/weapon/stock_parts/capacitor/adv
|
||||
/obj/item/stock_parts/capacitor/adv
|
||||
name = "advanced capacitor"
|
||||
desc = "An advanced capacitor used in the construction of a variety of devices."
|
||||
icon_state = "adv_capacitor"
|
||||
@@ -125,7 +125,7 @@
|
||||
rating = 2
|
||||
materials = list(MAT_METAL=50, MAT_GLASS=50)
|
||||
|
||||
/obj/item/weapon/stock_parts/scanning_module/adv
|
||||
/obj/item/stock_parts/scanning_module/adv
|
||||
name = "advanced scanning module"
|
||||
desc = "A compact, high resolution scanning module used in the construction of certain devices."
|
||||
icon_state = "adv_scan_module"
|
||||
@@ -133,7 +133,7 @@
|
||||
rating = 2
|
||||
materials = list(MAT_METAL=50, MAT_GLASS=20)
|
||||
|
||||
/obj/item/weapon/stock_parts/manipulator/nano
|
||||
/obj/item/stock_parts/manipulator/nano
|
||||
name = "nano-manipulator"
|
||||
desc = "A tiny little manipulator used in the construction of certain devices."
|
||||
icon_state = "nano_mani"
|
||||
@@ -141,7 +141,7 @@
|
||||
rating = 2
|
||||
materials = list(MAT_METAL=30)
|
||||
|
||||
/obj/item/weapon/stock_parts/micro_laser/high
|
||||
/obj/item/stock_parts/micro_laser/high
|
||||
name = "high-power micro-laser"
|
||||
desc = "A tiny laser used in certain devices."
|
||||
icon_state = "high_micro_laser"
|
||||
@@ -149,7 +149,7 @@
|
||||
rating = 2
|
||||
materials = list(MAT_METAL=10, MAT_GLASS=20)
|
||||
|
||||
/obj/item/weapon/stock_parts/matter_bin/adv
|
||||
/obj/item/stock_parts/matter_bin/adv
|
||||
name = "advanced matter bin"
|
||||
desc = "A container for hold compressed matter awaiting re-construction."
|
||||
icon_state = "advanced_matter_bin"
|
||||
@@ -159,7 +159,7 @@
|
||||
|
||||
//Rating 3
|
||||
|
||||
/obj/item/weapon/stock_parts/capacitor/super
|
||||
/obj/item/stock_parts/capacitor/super
|
||||
name = "super capacitor"
|
||||
desc = "A super-high capacity capacitor used in the construction of a variety of devices."
|
||||
icon_state = "super_capacitor"
|
||||
@@ -167,7 +167,7 @@
|
||||
rating = 3
|
||||
materials = list(MAT_METAL=50, MAT_GLASS=50)
|
||||
|
||||
/obj/item/weapon/stock_parts/scanning_module/phasic
|
||||
/obj/item/stock_parts/scanning_module/phasic
|
||||
name = "phasic scanning module"
|
||||
desc = "A compact, high resolution phasic scanning module used in the construction of certain devices."
|
||||
icon_state = "super_scan_module"
|
||||
@@ -175,7 +175,7 @@
|
||||
rating = 3
|
||||
materials = list(MAT_METAL=50, MAT_GLASS=20)
|
||||
|
||||
/obj/item/weapon/stock_parts/manipulator/pico
|
||||
/obj/item/stock_parts/manipulator/pico
|
||||
name = "pico-manipulator"
|
||||
desc = "A tiny little manipulator used in the construction of certain devices."
|
||||
icon_state = "pico_mani"
|
||||
@@ -183,7 +183,7 @@
|
||||
rating = 3
|
||||
materials = list(MAT_METAL=30)
|
||||
|
||||
/obj/item/weapon/stock_parts/micro_laser/ultra
|
||||
/obj/item/stock_parts/micro_laser/ultra
|
||||
name = "ultra-high-power micro-laser"
|
||||
icon_state = "ultra_high_micro_laser"
|
||||
desc = "A tiny laser used in certain devices."
|
||||
@@ -191,7 +191,7 @@
|
||||
rating = 3
|
||||
materials = list(MAT_METAL=10, MAT_GLASS=20)
|
||||
|
||||
/obj/item/weapon/stock_parts/matter_bin/super
|
||||
/obj/item/stock_parts/matter_bin/super
|
||||
name = "super matter bin"
|
||||
desc = "A container for hold compressed matter awaiting re-construction."
|
||||
icon_state = "super_matter_bin"
|
||||
@@ -201,7 +201,7 @@
|
||||
|
||||
//Rating 4
|
||||
|
||||
/obj/item/weapon/stock_parts/capacitor/quadratic
|
||||
/obj/item/stock_parts/capacitor/quadratic
|
||||
name = "quadratic capacitor"
|
||||
desc = "An capacity capacitor used in the construction of a variety of devices."
|
||||
icon_state = "quadratic_capacitor"
|
||||
@@ -209,7 +209,7 @@
|
||||
rating = 4
|
||||
materials = list(MAT_METAL=50, MAT_GLASS=50)
|
||||
|
||||
/obj/item/weapon/stock_parts/scanning_module/triphasic
|
||||
/obj/item/stock_parts/scanning_module/triphasic
|
||||
name = "triphasic scanning module"
|
||||
desc = "A compact, ultra resolution triphasic scanning module used in the construction of certain devices."
|
||||
icon_state = "triphasic_scan_module"
|
||||
@@ -217,7 +217,7 @@
|
||||
rating = 4
|
||||
materials = list(MAT_METAL=50, MAT_GLASS=20)
|
||||
|
||||
/obj/item/weapon/stock_parts/manipulator/femto
|
||||
/obj/item/stock_parts/manipulator/femto
|
||||
name = "femto-manipulator"
|
||||
desc = "A tiny little manipulator used in the construction of certain devices."
|
||||
icon_state = "femto_mani"
|
||||
@@ -225,7 +225,7 @@
|
||||
rating = 4
|
||||
materials = list(MAT_METAL=30)
|
||||
|
||||
/obj/item/weapon/stock_parts/micro_laser/quadultra
|
||||
/obj/item/stock_parts/micro_laser/quadultra
|
||||
name = "quad-ultra micro-laser"
|
||||
icon_state = "quadultra_micro_laser"
|
||||
desc = "A tiny laser used in certain devices."
|
||||
@@ -233,7 +233,7 @@
|
||||
rating = 4
|
||||
materials = list(MAT_METAL=10, MAT_GLASS=20)
|
||||
|
||||
/obj/item/weapon/stock_parts/matter_bin/bluespace
|
||||
/obj/item/stock_parts/matter_bin/bluespace
|
||||
name = "bluespace matter bin"
|
||||
desc = "A container for hold compressed matter awaiting re-construction."
|
||||
icon_state = "bluespace_matter_bin"
|
||||
@@ -243,56 +243,56 @@
|
||||
|
||||
// Subspace stock parts
|
||||
|
||||
/obj/item/weapon/stock_parts/subspace/ansible
|
||||
/obj/item/stock_parts/subspace/ansible
|
||||
name = "subspace ansible"
|
||||
icon_state = "subspace_ansible"
|
||||
desc = "A compact module capable of sensing extradimensional activity."
|
||||
origin_tech = "programming=2;magnets=2;materials=2;bluespace=1"
|
||||
materials = list(MAT_METAL=30, MAT_GLASS=10)
|
||||
|
||||
/obj/item/weapon/stock_parts/subspace/filter
|
||||
/obj/item/stock_parts/subspace/filter
|
||||
name = "hyperwave filter"
|
||||
icon_state = "hyperwave_filter"
|
||||
desc = "A tiny device capable of filtering and converting super-intense radiowaves."
|
||||
origin_tech = "programming=2;magnets=2"
|
||||
materials = list(MAT_METAL=30, MAT_GLASS=10)
|
||||
|
||||
/obj/item/weapon/stock_parts/subspace/amplifier
|
||||
/obj/item/stock_parts/subspace/amplifier
|
||||
name = "subspace amplifier"
|
||||
icon_state = "subspace_amplifier"
|
||||
desc = "A compact micro-machine capable of amplifying weak subspace transmissions."
|
||||
origin_tech = "programming=2;magnets=2;materials=2;bluespace=2"
|
||||
materials = list(MAT_METAL=30, MAT_GLASS=10)
|
||||
|
||||
/obj/item/weapon/stock_parts/subspace/treatment
|
||||
/obj/item/stock_parts/subspace/treatment
|
||||
name = "subspace treatment disk"
|
||||
icon_state = "treatment_disk"
|
||||
desc = "A compact micro-machine capable of stretching out hyper-compressed radio waves."
|
||||
origin_tech = "programming=2;magnets=2;materials=2;bluespace=2"
|
||||
materials = list(MAT_METAL=30, MAT_GLASS=10)
|
||||
|
||||
/obj/item/weapon/stock_parts/subspace/analyzer
|
||||
/obj/item/stock_parts/subspace/analyzer
|
||||
name = "subspace wavelength analyzer"
|
||||
icon_state = "wavelength_analyzer"
|
||||
desc = "A sophisticated analyzer capable of analyzing cryptic subspace wavelengths."
|
||||
origin_tech = "programming=2;magnets=2;materials=2;bluespace=2"
|
||||
materials = list(MAT_METAL=30, MAT_GLASS=10)
|
||||
|
||||
/obj/item/weapon/stock_parts/subspace/crystal
|
||||
/obj/item/stock_parts/subspace/crystal
|
||||
name = "ansible crystal"
|
||||
icon_state = "ansible_crystal"
|
||||
desc = "A crystal made from pure glass used to transmit laser databursts to subspace."
|
||||
origin_tech = "magnets=2;materials=2;bluespace=2;plasmatech=2"
|
||||
materials = list(MAT_GLASS=50)
|
||||
|
||||
/obj/item/weapon/stock_parts/subspace/transmitter
|
||||
/obj/item/stock_parts/subspace/transmitter
|
||||
name = "subspace transmitter"
|
||||
icon_state = "subspace_transmitter"
|
||||
desc = "A large piece of equipment used to open a window into the subspace dimension."
|
||||
origin_tech = "magnets=2;materials=2;bluespace=2"
|
||||
materials = list(MAT_METAL=50)
|
||||
|
||||
/obj/item/weapon/research//Makes testing much less of a pain -Sieve
|
||||
/obj/item/research//Makes testing much less of a pain -Sieve
|
||||
name = "research"
|
||||
icon = 'icons/obj/stock_parts.dmi'
|
||||
icon_state = "capacitor"
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/obj/item/weapon/storage/toolbox/green
|
||||
/obj/item/storage/toolbox/green
|
||||
name = "artistic toolbox"
|
||||
desc = "A metal container designed to hold various tools. This variety holds art supplies."
|
||||
icon_state = "green"
|
||||
@@ -7,7 +7,7 @@
|
||||
lefthand_file = 'icons/goonstation/mob/inhands/items_lefthand.dmi'
|
||||
righthand_file = 'icons/goonstation/mob/inhands/items_righthand.dmi'
|
||||
|
||||
/obj/item/weapon/storage/toolbox/green/memetic
|
||||
/obj/item/storage/toolbox/green/memetic
|
||||
name = "artistic toolbox"
|
||||
desc = "His Grace."
|
||||
force = 5
|
||||
@@ -20,7 +20,7 @@
|
||||
var/activated = 0
|
||||
var/mindless_override = 0
|
||||
|
||||
/obj/item/weapon/storage/toolbox/green/memetic/attack_hand(mob/living/carbon/user)
|
||||
/obj/item/storage/toolbox/green/memetic/attack_hand(mob/living/carbon/user)
|
||||
if(!activated)
|
||||
if(ishuman(user) && !user.HasDisease(new /datum/disease/memetic_madness(0)))
|
||||
activated = 1
|
||||
@@ -38,10 +38,10 @@
|
||||
return
|
||||
..()
|
||||
|
||||
/obj/item/weapon/storage/toolbox/green/memetic/attackby(obj/item/I, mob/user)
|
||||
/obj/item/storage/toolbox/green/memetic/attackby(obj/item/I, mob/user)
|
||||
if(activated)
|
||||
if(istype(I, /obj/item/weapon/grab/))
|
||||
var/obj/item/weapon/grab/G = I
|
||||
if(istype(I, /obj/item/grab/))
|
||||
var/obj/item/grab/G = I
|
||||
if(!G.affecting)
|
||||
return
|
||||
if(!user.HasDisease(new /datum/disease/memetic_madness(0)))
|
||||
@@ -73,7 +73,7 @@
|
||||
|
||||
..()
|
||||
|
||||
/obj/item/weapon/storage/toolbox/green/memetic/proc/consume(mob/M)
|
||||
/obj/item/storage/toolbox/green/memetic/proc/consume(mob/M)
|
||||
if(!M)
|
||||
return
|
||||
hunger = 0
|
||||
@@ -84,11 +84,11 @@
|
||||
M.ghostize()
|
||||
if(M == original_owner)
|
||||
qdel(M)
|
||||
var/obj/item/weapon/storage/toolbox/green/fake_toolbox = new(get_turf(src))
|
||||
var/obj/item/storage/toolbox/green/fake_toolbox = new(get_turf(src))
|
||||
fake_toolbox.desc = "It looks a lot duller than it used to."
|
||||
qdel(src)
|
||||
|
||||
/obj/item/weapon/storage/toolbox/green/memetic/Destroy()
|
||||
/obj/item/storage/toolbox/green/memetic/Destroy()
|
||||
for(var/mob/living/carbon/human/H in src)
|
||||
H.forceMove(get_turf(src))
|
||||
visible_message("<span class='warning'>[H] bursts out of [src]!</span>")
|
||||
@@ -118,7 +118,7 @@
|
||||
severity = BIOHAZARD
|
||||
disease_flags = CURABLE
|
||||
spread_flags = NON_CONTAGIOUS
|
||||
var/obj/item/weapon/storage/toolbox/green/memetic/progenitor = null
|
||||
var/obj/item/storage/toolbox/green/memetic/progenitor = null
|
||||
|
||||
/datum/disease/memetic_madness/Destroy()
|
||||
progenitor = null
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
* Backpack
|
||||
*/
|
||||
|
||||
/obj/item/weapon/storage/backpack
|
||||
/obj/item/storage/backpack
|
||||
name = "backpack"
|
||||
desc = "You wear this on your back and put items into it."
|
||||
icon_state = "backpack"
|
||||
@@ -22,7 +22,7 @@
|
||||
"Vox" = 'icons/mob/species/vox/back.dmi'
|
||||
)
|
||||
|
||||
/obj/item/weapon/storage/backpack/attackby(obj/item/weapon/W as obj, mob/user as mob, params)
|
||||
/obj/item/storage/backpack/attackby(obj/item/W as obj, mob/user as mob, params)
|
||||
playsound(src.loc, "rustle", 50, 1, -5)
|
||||
return ..()
|
||||
|
||||
@@ -30,7 +30,7 @@
|
||||
* Backpack Types
|
||||
*/
|
||||
|
||||
/obj/item/weapon/storage/backpack/holding
|
||||
/obj/item/storage/backpack/holding
|
||||
name = "Bag of Holding"
|
||||
desc = "A backpack that opens into a localized pocket of Blue Space."
|
||||
origin_tech = "bluespace=5;materials=4;engineering=4;plasmatech=5"
|
||||
@@ -38,14 +38,14 @@
|
||||
max_w_class = WEIGHT_CLASS_HUGE
|
||||
max_combined_w_class = 35
|
||||
burn_state = FIRE_PROOF
|
||||
cant_hold = list(/obj/item/weapon/storage/backpack/holding)
|
||||
cant_hold = list(/obj/item/storage/backpack/holding)
|
||||
|
||||
/obj/item/weapon/storage/backpack/holding/New()
|
||||
/obj/item/storage/backpack/holding/New()
|
||||
..()
|
||||
return
|
||||
|
||||
/obj/item/weapon/storage/backpack/holding/attackby(obj/item/weapon/W, mob/user, params)
|
||||
if(istype(W, /obj/item/weapon/storage/backpack/holding))
|
||||
/obj/item/storage/backpack/holding/attackby(obj/item/W, mob/user, params)
|
||||
if(istype(W, /obj/item/storage/backpack/holding))
|
||||
var/response = alert(user, "Are you sure you want to put the bag of holding inside another bag of holding?","Are you sure you want to die?","Yes","No")
|
||||
if(response == "Yes")
|
||||
user.visible_message("<span class='warning'>[user] grins as \he begins to put a Bag of Holding into a Bag of Holding!</span>", "<span class='warning'>You begin to put the Bag of Holding into the Bag of Holding!</span>")
|
||||
@@ -63,12 +63,12 @@
|
||||
else
|
||||
. = ..()
|
||||
|
||||
/obj/item/weapon/storage/backpack/holding/singularity_act(current_size)
|
||||
/obj/item/storage/backpack/holding/singularity_act(current_size)
|
||||
var/dist = max((current_size - 2),1)
|
||||
explosion(src.loc,(dist),(dist*2),(dist*4))
|
||||
return
|
||||
|
||||
/obj/item/weapon/storage/backpack/santabag
|
||||
/obj/item/storage/backpack/santabag
|
||||
name = "Santa's Gift Bag"
|
||||
desc = "Space Santa uses this to deliver toys to all the nice children in space on Christmas! Wow, it's pretty big!"
|
||||
icon_state = "giftbag0"
|
||||
@@ -77,75 +77,75 @@
|
||||
max_w_class = WEIGHT_CLASS_NORMAL
|
||||
max_combined_w_class = 400 // can store a ton of shit!
|
||||
|
||||
/obj/item/weapon/storage/backpack/cultpack
|
||||
/obj/item/storage/backpack/cultpack
|
||||
name = "trophy rack"
|
||||
desc = "It's useful for both carrying extra gear and proudly declaring your insanity."
|
||||
icon_state = "cultpack"
|
||||
|
||||
/obj/item/weapon/storage/backpack/clown
|
||||
/obj/item/storage/backpack/clown
|
||||
name = "Giggles Von Honkerton"
|
||||
desc = "It's a backpack made by Honk! Co."
|
||||
icon_state = "clownpack"
|
||||
item_state = "clownpack"
|
||||
|
||||
/obj/item/weapon/storage/backpack/mime
|
||||
/obj/item/storage/backpack/mime
|
||||
name = "Parcel Parceaux"
|
||||
desc = "A silent backpack made for those silent workers. Silence Co."
|
||||
icon_state = "mimepack"
|
||||
item_state = "mimepack"
|
||||
|
||||
/obj/item/weapon/storage/backpack/medic
|
||||
/obj/item/storage/backpack/medic
|
||||
name = "medical backpack"
|
||||
desc = "It's a backpack especially designed for use in a sterile environment."
|
||||
icon_state = "medicalpack"
|
||||
item_state = "medicalpack"
|
||||
|
||||
/obj/item/weapon/storage/backpack/security
|
||||
/obj/item/storage/backpack/security
|
||||
name = "security backpack"
|
||||
desc = "It's a very robust backpack."
|
||||
icon_state = "securitypack"
|
||||
item_state = "securitypack"
|
||||
|
||||
/obj/item/weapon/storage/backpack/captain
|
||||
/obj/item/storage/backpack/captain
|
||||
name = "captain's backpack"
|
||||
desc = "It's a special backpack made exclusively for Nanotrasen officers."
|
||||
icon_state = "captainpack"
|
||||
item_state = "captainpack"
|
||||
burn_state = FIRE_PROOF
|
||||
|
||||
/obj/item/weapon/storage/backpack/industrial
|
||||
/obj/item/storage/backpack/industrial
|
||||
name = "industrial backpack"
|
||||
desc = "It's a tough backpack for the daily grind of station life."
|
||||
icon_state = "engiepack"
|
||||
item_state = "engiepack"
|
||||
burn_state = FIRE_PROOF
|
||||
|
||||
/obj/item/weapon/storage/backpack/botany
|
||||
/obj/item/storage/backpack/botany
|
||||
name = "botany backpack"
|
||||
desc = "It's a backpack made of all-natural fibers."
|
||||
icon_state = "botpack"
|
||||
item_state = "botpack"
|
||||
|
||||
/obj/item/weapon/storage/backpack/chemistry
|
||||
/obj/item/storage/backpack/chemistry
|
||||
name = "chemistry backpack"
|
||||
desc = "A backpack specially designed to repel stains and hazardous liquids."
|
||||
icon_state = "chempack"
|
||||
item_state = "chempack"
|
||||
|
||||
/obj/item/weapon/storage/backpack/genetics
|
||||
/obj/item/storage/backpack/genetics
|
||||
name = "genetics backpack"
|
||||
desc = "A bag designed to be super tough, just in case someone hulks out on you."
|
||||
icon_state = "genepack"
|
||||
item_state = "genepack"
|
||||
|
||||
/obj/item/weapon/storage/backpack/science
|
||||
/obj/item/storage/backpack/science
|
||||
name = "science backpack"
|
||||
desc = "A specially designed backpack. It's fire resistant and smells vaguely of plasma."
|
||||
icon_state = "toxpack"
|
||||
item_state = "toxpack"
|
||||
burn_state = FIRE_PROOF
|
||||
|
||||
/obj/item/weapon/storage/backpack/virology
|
||||
/obj/item/storage/backpack/virology
|
||||
name = "virology backpack"
|
||||
desc = "A backpack made of hypo-allergenic fibers. It's designed to help prevent the spread of disease. Smells like monkey."
|
||||
icon_state = "viropack"
|
||||
@@ -155,85 +155,85 @@
|
||||
* Satchel Types
|
||||
*/
|
||||
|
||||
/obj/item/weapon/storage/backpack/satchel
|
||||
/obj/item/storage/backpack/satchel
|
||||
name = "leather satchel"
|
||||
desc = "It's a very fancy satchel made with fine leather."
|
||||
icon_state = "satchel"
|
||||
burn_state = FIRE_PROOF
|
||||
|
||||
/obj/item/weapon/storage/backpack/satcheldeluxe
|
||||
/obj/item/storage/backpack/satcheldeluxe
|
||||
name = "leather satchel"
|
||||
desc = "An NT Deluxe satchel, with the finest quality leather and the company logo in a thin gold stitch"
|
||||
icon_state = "nt_deluxe"
|
||||
|
||||
/obj/item/weapon/storage/backpack/satchel/withwallet
|
||||
/obj/item/storage/backpack/satchel/withwallet
|
||||
New()
|
||||
..()
|
||||
new /obj/item/weapon/storage/wallet/random( src )
|
||||
new /obj/item/storage/wallet/random( src )
|
||||
|
||||
/obj/item/weapon/storage/backpack/satchel_norm
|
||||
/obj/item/storage/backpack/satchel_norm
|
||||
name = "satchel"
|
||||
desc = "A deluxe NT Satchel, made of the highest quality leather."
|
||||
icon_state = "satchel-norm"
|
||||
|
||||
/obj/item/weapon/storage/backpack/satchel_eng
|
||||
/obj/item/storage/backpack/satchel_eng
|
||||
name = "industrial satchel"
|
||||
desc = "A tough satchel with extra pockets."
|
||||
icon_state = "satchel-eng"
|
||||
burn_state = FIRE_PROOF
|
||||
|
||||
/obj/item/weapon/storage/backpack/satchel_med
|
||||
/obj/item/storage/backpack/satchel_med
|
||||
name = "medical satchel"
|
||||
desc = "A sterile satchel used in medical departments."
|
||||
icon_state = "satchel-med"
|
||||
|
||||
/obj/item/weapon/storage/backpack/satchel_vir
|
||||
/obj/item/storage/backpack/satchel_vir
|
||||
name = "virologist satchel"
|
||||
desc = "A sterile satchel with virologist colours."
|
||||
icon_state = "satchel-vir"
|
||||
|
||||
/obj/item/weapon/storage/backpack/satchel_chem
|
||||
/obj/item/storage/backpack/satchel_chem
|
||||
name = "chemist satchel"
|
||||
desc = "A sterile satchel with chemist colours."
|
||||
icon_state = "satchel-chem"
|
||||
|
||||
/obj/item/weapon/storage/backpack/satchel_gen
|
||||
/obj/item/storage/backpack/satchel_gen
|
||||
name = "geneticist satchel"
|
||||
desc = "A sterile satchel with geneticist colours."
|
||||
icon_state = "satchel-gen"
|
||||
|
||||
/obj/item/weapon/storage/backpack/satchel_tox
|
||||
/obj/item/storage/backpack/satchel_tox
|
||||
name = "scientist satchel"
|
||||
desc = "Useful for holding research materials."
|
||||
icon_state = "satchel-tox"
|
||||
burn_state = FIRE_PROOF
|
||||
|
||||
/obj/item/weapon/storage/backpack/satchel_sec
|
||||
/obj/item/storage/backpack/satchel_sec
|
||||
name = "security satchel"
|
||||
desc = "A robust satchel for security related needs."
|
||||
icon_state = "satchel-sec"
|
||||
|
||||
/obj/item/weapon/storage/backpack/satchel_hyd
|
||||
/obj/item/storage/backpack/satchel_hyd
|
||||
name = "hydroponics satchel"
|
||||
desc = "A green satchel for plant related work."
|
||||
icon_state = "satchel-hyd"
|
||||
|
||||
/obj/item/weapon/storage/backpack/satchel_cap
|
||||
/obj/item/storage/backpack/satchel_cap
|
||||
name = "captain's satchel"
|
||||
desc = "An exclusive satchel for Nanotrasen officers."
|
||||
icon_state = "satchel-cap"
|
||||
burn_state = FIRE_PROOF
|
||||
|
||||
/obj/item/weapon/storage/backpack/satchel_flat
|
||||
/obj/item/storage/backpack/satchel_flat
|
||||
name = "smuggler's satchel"
|
||||
desc = "A very slim satchel that can easily fit into tight spaces."
|
||||
icon_state = "satchel-flat"
|
||||
w_class = WEIGHT_CLASS_NORMAL //Can fit in backpacks itself.
|
||||
max_combined_w_class = 15
|
||||
level = 1
|
||||
cant_hold = list(/obj/item/weapon/storage/backpack/satchel_flat) //muh recursive backpacks
|
||||
cant_hold = list(/obj/item/storage/backpack/satchel_flat) //muh recursive backpacks
|
||||
|
||||
/obj/item/weapon/storage/backpack/satchel_flat/hide(var/intact)
|
||||
/obj/item/storage/backpack/satchel_flat/hide(var/intact)
|
||||
if(intact)
|
||||
invisibility = 101
|
||||
anchored = 1 //otherwise you can start pulling, cover it, and drag around an invisible backpack.
|
||||
@@ -243,16 +243,16 @@
|
||||
anchored = 0
|
||||
icon_state = initial(icon_state)
|
||||
|
||||
/obj/item/weapon/storage/backpack/satchel_flat/New()
|
||||
/obj/item/storage/backpack/satchel_flat/New()
|
||||
..()
|
||||
new /obj/item/stack/tile/plasteel(src)
|
||||
new /obj/item/weapon/crowbar(src)
|
||||
new /obj/item/crowbar(src)
|
||||
|
||||
/*
|
||||
* Duffelbags - My thanks to MrSnapWalk for the original icon and Neinhaus for the job variants - Dave.
|
||||
*/
|
||||
|
||||
/obj/item/weapon/storage/backpack/duffel
|
||||
/obj/item/storage/backpack/duffel
|
||||
name = "duffelbag"
|
||||
desc = "A large grey duffelbag designed to hold more items than a regular bag."
|
||||
icon_state = "duffel"
|
||||
@@ -260,7 +260,7 @@
|
||||
max_combined_w_class = 30
|
||||
slowdown = 1
|
||||
|
||||
/obj/item/weapon/storage/backpack/duffel/syndie
|
||||
/obj/item/storage/backpack/duffel/syndie
|
||||
name = "suspicious looking duffelbag"
|
||||
desc = "A large duffelbag for holding extra tactical supplies."
|
||||
icon_state = "duffel-syndi"
|
||||
@@ -269,22 +269,22 @@
|
||||
silent = 1
|
||||
slowdown = 0
|
||||
|
||||
/obj/item/weapon/storage/backpack/duffel/syndie/med
|
||||
/obj/item/storage/backpack/duffel/syndie/med
|
||||
name = "suspicious duffelbag"
|
||||
desc = "A black and red duffelbag with a red and white cross sewn onto it."
|
||||
icon_state = "duffel-syndimed"
|
||||
item_state = "duffel-syndimed"
|
||||
|
||||
/obj/item/weapon/storage/backpack/duffel/syndie/ammo
|
||||
/obj/item/storage/backpack/duffel/syndie/ammo
|
||||
name = "suspicious duffelbag"
|
||||
desc = "A black and red duffelbag with a patch depicting shotgun shells sewn onto it."
|
||||
icon_state = "duffel-syndiammo"
|
||||
item_state = "duffel-syndiammo"
|
||||
|
||||
/obj/item/weapon/storage/backpack/duffel/syndie/ammo/loaded
|
||||
/obj/item/storage/backpack/duffel/syndie/ammo/loaded
|
||||
desc = "A large duffelbag, packed to the brim with Bulldog shotgun ammo."
|
||||
|
||||
/obj/item/weapon/storage/backpack/duffel/syndie/ammo/loaded/New()
|
||||
/obj/item/storage/backpack/duffel/syndie/ammo/loaded/New()
|
||||
..()
|
||||
new /obj/item/ammo_box/magazine/m12g(src)
|
||||
new /obj/item/ammo_box/magazine/m12g(src)
|
||||
@@ -296,147 +296,147 @@
|
||||
new /obj/item/ammo_box/magazine/m12g/stun(src)
|
||||
new /obj/item/ammo_box/magazine/m12g/dragon(src)
|
||||
|
||||
/obj/item/weapon/storage/backpack/duffel/syndie/surgery
|
||||
/obj/item/storage/backpack/duffel/syndie/surgery
|
||||
name = "surgery duffelbag"
|
||||
desc = "A suspicious looking duffelbag for holding surgery tools."
|
||||
icon_state = "duffel-syndimed"
|
||||
item_state = "duffel-syndimed"
|
||||
|
||||
/obj/item/weapon/storage/backpack/duffel/syndie/surgery/New()
|
||||
/obj/item/storage/backpack/duffel/syndie/surgery/New()
|
||||
..()
|
||||
new /obj/item/weapon/scalpel(src)
|
||||
new /obj/item/weapon/hemostat(src)
|
||||
new /obj/item/weapon/retractor(src)
|
||||
new /obj/item/weapon/circular_saw(src)
|
||||
new /obj/item/weapon/surgicaldrill(src)
|
||||
new /obj/item/weapon/cautery(src)
|
||||
new /obj/item/weapon/bonegel(src)
|
||||
new /obj/item/weapon/bonesetter(src)
|
||||
new /obj/item/weapon/FixOVein(src)
|
||||
new /obj/item/scalpel(src)
|
||||
new /obj/item/hemostat(src)
|
||||
new /obj/item/retractor(src)
|
||||
new /obj/item/circular_saw(src)
|
||||
new /obj/item/surgicaldrill(src)
|
||||
new /obj/item/cautery(src)
|
||||
new /obj/item/bonegel(src)
|
||||
new /obj/item/bonesetter(src)
|
||||
new /obj/item/FixOVein(src)
|
||||
new /obj/item/clothing/suit/straight_jacket(src)
|
||||
new /obj/item/clothing/mask/muzzle(src)
|
||||
new /obj/item/device/mmi/syndie(src)
|
||||
|
||||
/obj/item/weapon/storage/backpack/duffel/syndie/surgery_fake //for maint spawns
|
||||
/obj/item/storage/backpack/duffel/syndie/surgery_fake //for maint spawns
|
||||
name = "surgery duffelbag"
|
||||
desc = "A suspicious looking duffelbag for holding surgery tools."
|
||||
icon_state = "duffel-syndimed"
|
||||
item_state = "duffel-syndimed"
|
||||
|
||||
/obj/item/weapon/storage/backpack/duffel/syndie/surgery_fake/New()
|
||||
/obj/item/storage/backpack/duffel/syndie/surgery_fake/New()
|
||||
..()
|
||||
new /obj/item/weapon/scalpel(src)
|
||||
new /obj/item/weapon/hemostat(src)
|
||||
new /obj/item/weapon/retractor(src)
|
||||
new /obj/item/weapon/cautery(src)
|
||||
new /obj/item/weapon/bonegel(src)
|
||||
new /obj/item/weapon/bonesetter(src)
|
||||
new /obj/item/weapon/FixOVein(src)
|
||||
new /obj/item/scalpel(src)
|
||||
new /obj/item/hemostat(src)
|
||||
new /obj/item/retractor(src)
|
||||
new /obj/item/cautery(src)
|
||||
new /obj/item/bonegel(src)
|
||||
new /obj/item/bonesetter(src)
|
||||
new /obj/item/FixOVein(src)
|
||||
if(prob(50))
|
||||
new /obj/item/weapon/circular_saw(src)
|
||||
new /obj/item/weapon/surgicaldrill(src)
|
||||
new /obj/item/circular_saw(src)
|
||||
new /obj/item/surgicaldrill(src)
|
||||
|
||||
/obj/item/weapon/storage/backpack/duffel/captain
|
||||
/obj/item/storage/backpack/duffel/captain
|
||||
name = "captain's duffelbag"
|
||||
desc = "A duffelbag designed to hold large quantities of condoms."
|
||||
icon_state = "duffel-captain"
|
||||
item_state = "duffel-captain"
|
||||
burn_state = FIRE_PROOF
|
||||
|
||||
/obj/item/weapon/storage/backpack/duffel/security
|
||||
/obj/item/storage/backpack/duffel/security
|
||||
name = "security duffelbag"
|
||||
desc = "A duffelbag built with robust fabric!"
|
||||
icon_state = "duffel-security"
|
||||
item_state = "duffel-security"
|
||||
|
||||
/obj/item/weapon/storage/backpack/duffel/virology
|
||||
/obj/item/storage/backpack/duffel/virology
|
||||
name = "virology duffelbag"
|
||||
desc = "A white duffelbag designed to contain biohazards."
|
||||
icon_state = "duffel-viro"
|
||||
item_state = "duffel-viro"
|
||||
|
||||
/obj/item/weapon/storage/backpack/duffel/science
|
||||
/obj/item/storage/backpack/duffel/science
|
||||
name = "scientist duffelbag"
|
||||
desc = "A duffelbag designed to hold the secrets of space."
|
||||
icon_state = "duffel-toxins"
|
||||
item_state = "duffel-toxins"
|
||||
|
||||
/obj/item/weapon/storage/backpack/duffel/genetics
|
||||
/obj/item/storage/backpack/duffel/genetics
|
||||
name = "geneticist duffelbag"
|
||||
desc = "A duffelbag designed to hold gibbering monkies."
|
||||
icon_state = "duffel-gene"
|
||||
item_state = "duffel-gene"
|
||||
|
||||
/obj/item/weapon/storage/backpack/duffel/chemistry
|
||||
/obj/item/storage/backpack/duffel/chemistry
|
||||
name = "chemist duffelbag"
|
||||
desc = "A duffelbag designed to hold corrosive substances."
|
||||
icon_state = "duffel-chemistry"
|
||||
item_state = "duffel-chemistry"
|
||||
|
||||
/obj/item/weapon/storage/backpack/duffel/medical
|
||||
/obj/item/storage/backpack/duffel/medical
|
||||
name = "medical duffelbag"
|
||||
desc = "A duffelbag designed to hold medicine."
|
||||
icon_state = "duffel-med"
|
||||
item_state = "duffel-med"
|
||||
|
||||
/obj/item/weapon/storage/backpack/duffel/engineering
|
||||
/obj/item/storage/backpack/duffel/engineering
|
||||
name = "industrial duffelbag"
|
||||
desc = "A duffelbag designed to hold tools."
|
||||
icon_state = "duffel-eng"
|
||||
item_state = "duffel-eng"
|
||||
burn_state = FIRE_PROOF
|
||||
|
||||
/obj/item/weapon/storage/backpack/duffel/atmos
|
||||
/obj/item/storage/backpack/duffel/atmos
|
||||
name = "atmospherics duffelbag"
|
||||
desc = "A duffelbag designed to hold tools. This one is specially designed for atmospherics."
|
||||
icon_state = "duffel-atmos"
|
||||
item_state = "duffel-atmos"
|
||||
burn_state = FIRE_PROOF
|
||||
|
||||
/obj/item/weapon/storage/backpack/duffel/hydro
|
||||
/obj/item/storage/backpack/duffel/hydro
|
||||
name = "hydroponics duffelbag"
|
||||
desc = "A duffelbag designed to hold seeds and fauna."
|
||||
icon_state = "duffel-hydro"
|
||||
item_state = "duffel-hydro"
|
||||
|
||||
/obj/item/weapon/storage/backpack/duffel/clown
|
||||
/obj/item/storage/backpack/duffel/clown
|
||||
name = "smiles von wiggleton"
|
||||
desc = "A duffelbag designed to hold bananas and bike horns."
|
||||
icon_state = "duffel-clown"
|
||||
item_state = "duffel-clown"
|
||||
|
||||
//ERT backpacks.
|
||||
/obj/item/weapon/storage/backpack/ert
|
||||
/obj/item/storage/backpack/ert
|
||||
name = "emergency response team backpack"
|
||||
desc = "A spacious backpack with lots of pockets, used by members of the Nanotrasen Emergency Response Team."
|
||||
icon_state = "ert_commander"
|
||||
item_state = "backpack"
|
||||
|
||||
//Commander
|
||||
/obj/item/weapon/storage/backpack/ert/commander
|
||||
/obj/item/storage/backpack/ert/commander
|
||||
name = "emergency response team commander backpack"
|
||||
desc = "A spacious backpack with lots of pockets, worn by the commander of a Nanotrasen Emergency Response Team."
|
||||
|
||||
//Security
|
||||
/obj/item/weapon/storage/backpack/ert/security
|
||||
/obj/item/storage/backpack/ert/security
|
||||
name = "emergency response team security backpack"
|
||||
desc = "A spacious backpack with lots of pockets, worn by security members of a Nanotrasen Emergency Response Team."
|
||||
icon_state = "ert_security"
|
||||
|
||||
//Engineering
|
||||
/obj/item/weapon/storage/backpack/ert/engineer
|
||||
/obj/item/storage/backpack/ert/engineer
|
||||
name = "emergency response team engineer backpack"
|
||||
desc = "A spacious backpack with lots of pockets, worn by engineering members of a Nanotrasen Emergency Response Team."
|
||||
icon_state = "ert_engineering"
|
||||
|
||||
//Medical
|
||||
/obj/item/weapon/storage/backpack/ert/medical
|
||||
/obj/item/storage/backpack/ert/medical
|
||||
name = "emergency response team medical backpack"
|
||||
desc = "A spacious backpack with lots of pockets, worn by medical members of a Nanotrasen Emergency Response Team."
|
||||
icon_state = "ert_medical"
|
||||
|
||||
//Janitorial
|
||||
/obj/item/weapon/storage/backpack/ert/janitor
|
||||
/obj/item/storage/backpack/ert/janitor
|
||||
name = "emergency response team janitor backpack"
|
||||
desc = "A spacious backpack with lots of pockets, worn by janitorial members of a Nanotrasen Emergency Response Team."
|
||||
icon_state = "ert_janitor"
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
*/
|
||||
|
||||
// Generic non-item
|
||||
/obj/item/weapon/storage/bag
|
||||
/obj/item/storage/bag
|
||||
allow_quick_gather = 1
|
||||
allow_quick_empty = 1
|
||||
display_contents_with_number = 1 // should work fine now
|
||||
@@ -26,7 +26,7 @@
|
||||
// -----------------------------
|
||||
// Trash bag
|
||||
// -----------------------------
|
||||
/obj/item/weapon/storage/bag/trash
|
||||
/obj/item/storage/bag/trash
|
||||
name = "trash bag"
|
||||
desc = "It's the heavy-duty black polymer kind. Time to take out the trash!"
|
||||
icon = 'icons/obj/janitor.dmi'
|
||||
@@ -37,14 +37,14 @@
|
||||
max_w_class = WEIGHT_CLASS_SMALL
|
||||
storage_slots = 30
|
||||
can_hold = list() // any
|
||||
cant_hold = list(/obj/item/weapon/disk/nuclear)
|
||||
cant_hold = list(/obj/item/disk/nuclear)
|
||||
|
||||
/obj/item/weapon/storage/bag/trash/suicide_act(mob/user)
|
||||
/obj/item/storage/bag/trash/suicide_act(mob/user)
|
||||
user.visible_message("<span class='suicide'>[user] puts the [src.name] over their head and starts chomping at the insides! Disgusting!</span>")
|
||||
playsound(loc, 'sound/items/eatfood.ogg', 50, 1, -1)
|
||||
return (TOXLOSS)
|
||||
|
||||
/obj/item/weapon/storage/bag/trash/update_icon()
|
||||
/obj/item/storage/bag/trash/update_icon()
|
||||
if(contents.len == 0)
|
||||
w_class = WEIGHT_CLASS_TINY
|
||||
icon_state = "[initial(icon_state)]"
|
||||
@@ -58,17 +58,17 @@
|
||||
w_class = WEIGHT_CLASS_BULKY
|
||||
icon_state = "[initial(icon_state)]3"
|
||||
|
||||
/obj/item/weapon/storage/bag/trash/cyborg
|
||||
/obj/item/storage/bag/trash/cyborg
|
||||
|
||||
/obj/item/weapon/storage/bag/trash/proc/janicart_insert(mob/user, obj/structure/janitorialcart/J)
|
||||
/obj/item/storage/bag/trash/proc/janicart_insert(mob/user, obj/structure/janitorialcart/J)
|
||||
J.put_in_cart(src, user)
|
||||
J.mybag=src
|
||||
J.update_icon()
|
||||
|
||||
/obj/item/weapon/storage/bag/trash/cyborg/janicart_insert(mob/user, obj/structure/janitorialcart/J)
|
||||
/obj/item/storage/bag/trash/cyborg/janicart_insert(mob/user, obj/structure/janitorialcart/J)
|
||||
return
|
||||
|
||||
/obj/item/weapon/storage/bag/trash/bluespace
|
||||
/obj/item/storage/bag/trash/bluespace
|
||||
name = "trash bag of holding"
|
||||
desc = "The latest and greatest in custodial convenience, a trashbag that is capable of holding vast quantities of garbage."
|
||||
icon_state = "bluetrashbag"
|
||||
@@ -81,7 +81,7 @@
|
||||
// Plastic Bag
|
||||
// -----------------------------
|
||||
|
||||
/obj/item/weapon/storage/bag/plasticbag
|
||||
/obj/item/storage/bag/plasticbag
|
||||
name = "plastic bag"
|
||||
desc = "It's a very flimsy, very noisy alternative to a bag."
|
||||
icon = 'icons/obj/trash.dmi'
|
||||
@@ -94,9 +94,9 @@
|
||||
storage_slots = 7
|
||||
display_contents_with_number = 0 //or else this will lead to stupid behavior.
|
||||
can_hold = list() // any
|
||||
cant_hold = list(/obj/item/weapon/disk/nuclear)
|
||||
cant_hold = list(/obj/item/disk/nuclear)
|
||||
|
||||
/obj/item/weapon/storage/bag/plasticbag/mob_can_equip(M as mob, slot)
|
||||
/obj/item/storage/bag/plasticbag/mob_can_equip(M as mob, slot)
|
||||
|
||||
if(slot==slot_head && contents.len)
|
||||
to_chat(M, "<span class='warning'>You need to empty the bag first!</span>")
|
||||
@@ -104,13 +104,13 @@
|
||||
return ..()
|
||||
|
||||
|
||||
/obj/item/weapon/storage/bag/plasticbag/equipped(var/mob/user, var/slot)
|
||||
/obj/item/storage/bag/plasticbag/equipped(var/mob/user, var/slot)
|
||||
if(slot==slot_head)
|
||||
storage_slots = 0
|
||||
processing_objects.Add(src)
|
||||
return
|
||||
|
||||
/obj/item/weapon/storage/bag/plasticbag/process()
|
||||
/obj/item/storage/bag/plasticbag/process()
|
||||
if(is_equipped())
|
||||
if(ishuman(loc))
|
||||
var/mob/living/carbon/human/H = loc
|
||||
@@ -127,7 +127,7 @@
|
||||
// Mining Satchel
|
||||
// -----------------------------
|
||||
|
||||
/obj/item/weapon/storage/bag/ore
|
||||
/obj/item/storage/bag/ore
|
||||
name = "mining satchel"
|
||||
desc = "This little bugger can be used to store and transport ores."
|
||||
icon = 'icons/obj/mining.dmi'
|
||||
@@ -138,13 +138,13 @@
|
||||
storage_slots = 50
|
||||
max_combined_w_class = 200 //Doesn't matter what this is, so long as it's more or equal to storage_slots * ore.w_class
|
||||
max_w_class = WEIGHT_CLASS_NORMAL
|
||||
can_hold = list(/obj/item/weapon/ore)
|
||||
can_hold = list(/obj/item/ore)
|
||||
|
||||
/obj/item/weapon/storage/bag/ore/cyborg
|
||||
/obj/item/storage/bag/ore/cyborg
|
||||
name = "cyborg mining satchel"
|
||||
flags = NODROP
|
||||
|
||||
/obj/item/weapon/storage/bag/ore/holding //miners, your messiah has arrived
|
||||
/obj/item/storage/bag/ore/holding //miners, your messiah has arrived
|
||||
name = "mining satchel of holding"
|
||||
desc = "A revolution in convenience, this satchel allows for infinite ore storage. It's been outfitted with anti-malfunction safety measures."
|
||||
storage_slots = INFINITY
|
||||
@@ -152,7 +152,7 @@
|
||||
origin_tech = "bluespace=4;materials=3;engineering=3"
|
||||
icon_state = "satchel_bspace"
|
||||
|
||||
/obj/item/weapon/storage/bag/ore/holding/cyborg
|
||||
/obj/item/storage/bag/ore/holding/cyborg
|
||||
name = "cyborg mining satchel of holding"
|
||||
flags = NODROP
|
||||
|
||||
@@ -160,7 +160,7 @@
|
||||
// Plant bag
|
||||
// -----------------------------
|
||||
|
||||
/obj/item/weapon/storage/bag/plants
|
||||
/obj/item/storage/bag/plants
|
||||
name = "plant bag"
|
||||
icon = 'icons/obj/hydroponics/equipment.dmi'
|
||||
icon_state = "plantbag"
|
||||
@@ -168,16 +168,16 @@
|
||||
max_combined_w_class = 100 //Doesn't matter what this is, so long as it's more or equal to storage_slots * plants.w_class
|
||||
max_w_class = WEIGHT_CLASS_NORMAL
|
||||
w_class = WEIGHT_CLASS_TINY
|
||||
can_hold = list(/obj/item/weapon/reagent_containers/food/snacks/grown,/obj/item/seeds,/obj/item/weapon/grown,/obj/item/weapon/reagent_containers/food/snacks/ash_flora)
|
||||
can_hold = list(/obj/item/reagent_containers/food/snacks/grown,/obj/item/seeds,/obj/item/grown,/obj/item/reagent_containers/food/snacks/ash_flora)
|
||||
burn_state = FLAMMABLE
|
||||
|
||||
/obj/item/weapon/storage/bag/plants/portaseeder
|
||||
/obj/item/storage/bag/plants/portaseeder
|
||||
name = "portable seed extractor"
|
||||
desc = "For the enterprising botanist on the go. Less efficient than the stationary model, it creates one seed per plant."
|
||||
icon_state = "portaseeder"
|
||||
origin_tech = "biotech=3;engineering=2"
|
||||
|
||||
/obj/item/weapon/storage/bag/plants/portaseeder/verb/dissolve_contents()
|
||||
/obj/item/storage/bag/plants/portaseeder/verb/dissolve_contents()
|
||||
set name = "Activate Seed Extraction"
|
||||
set category = "Object"
|
||||
set desc = "Activate to convert your plants into plantable seeds."
|
||||
@@ -197,7 +197,7 @@
|
||||
// Because it stacks stacks, this doesn't operate normally.
|
||||
// However, making it a storage/bag allows us to reuse existing code in some places. -Sayu
|
||||
|
||||
/obj/item/weapon/storage/bag/sheetsnatcher
|
||||
/obj/item/storage/bag/sheetsnatcher
|
||||
icon = 'icons/obj/mining.dmi'
|
||||
icon_state = "sheetsnatcher"
|
||||
name = "Sheet Snatcher"
|
||||
@@ -209,8 +209,8 @@
|
||||
allow_quick_empty = 1 // this function is superceded
|
||||
New()
|
||||
..()
|
||||
//verbs -= /obj/item/weapon/storage/verb/quick_empty
|
||||
//verbs += /obj/item/weapon/storage/bag/sheetsnatcher/quick_empty
|
||||
//verbs -= /obj/item/storage/verb/quick_empty
|
||||
//verbs += /obj/item/storage/bag/sheetsnatcher/quick_empty
|
||||
|
||||
can_be_inserted(obj/item/W as obj, stop_messages = 0)
|
||||
if(!istype(W,/obj/item/stack/sheet) || istype(W,/obj/item/stack/sheet/mineral/sandstone) || istype(W,/obj/item/stack/sheet/wood))
|
||||
@@ -328,7 +328,7 @@
|
||||
// Sheet Snatcher (Cyborg)
|
||||
// -----------------------------
|
||||
|
||||
/obj/item/weapon/storage/bag/sheetsnatcher/borg
|
||||
/obj/item/storage/bag/sheetsnatcher/borg
|
||||
name = "Sheet Snatcher 9000"
|
||||
desc = ""
|
||||
capacity = 500//Borgs get more because >specialization
|
||||
@@ -338,7 +338,7 @@
|
||||
// Cash Bag
|
||||
// -----------------------------
|
||||
|
||||
/obj/item/weapon/storage/bag/cash
|
||||
/obj/item/storage/bag/cash
|
||||
icon = 'icons/obj/storage.dmi'
|
||||
icon_state = "cashbag"
|
||||
name = "Cash bag"
|
||||
@@ -347,13 +347,13 @@
|
||||
max_combined_w_class = 200 //Doesn't matter what this is, so long as it's more or equal to storage_slots * cash.w_class
|
||||
max_w_class = WEIGHT_CLASS_NORMAL
|
||||
w_class = WEIGHT_CLASS_TINY
|
||||
can_hold = list(/obj/item/weapon/coin,/obj/item/stack/spacecash)
|
||||
can_hold = list(/obj/item/coin,/obj/item/stack/spacecash)
|
||||
|
||||
// -----------------------------
|
||||
// Book bag
|
||||
// -----------------------------
|
||||
|
||||
/obj/item/weapon/storage/bag/books
|
||||
/obj/item/storage/bag/books
|
||||
name = "book bag"
|
||||
desc = "A bag for books."
|
||||
icon = 'icons/obj/library.dmi'
|
||||
@@ -363,13 +363,13 @@
|
||||
max_combined_w_class = 21
|
||||
max_w_class = WEIGHT_CLASS_NORMAL
|
||||
w_class = WEIGHT_CLASS_BULKY //Bigger than a book because physics
|
||||
can_hold = list(/obj/item/weapon/book, /obj/item/weapon/storage/bible, /obj/item/weapon/tome, /obj/item/weapon/spellbook)
|
||||
can_hold = list(/obj/item/book, /obj/item/storage/bible, /obj/item/tome, /obj/item/spellbook)
|
||||
burn_state = FLAMMABLE
|
||||
|
||||
/*
|
||||
* Trays - Agouri
|
||||
*/
|
||||
/obj/item/weapon/storage/bag/tray
|
||||
/obj/item/storage/bag/tray
|
||||
name = "tray"
|
||||
icon = 'icons/obj/food/food.dmi'
|
||||
icon_state = "tray"
|
||||
@@ -382,7 +382,7 @@
|
||||
flags = CONDUCT
|
||||
materials = list(MAT_METAL=3000)
|
||||
|
||||
/obj/item/weapon/storage/bag/tray/attack(mob/living/M as mob, mob/living/user as mob)
|
||||
/obj/item/storage/bag/tray/attack(mob/living/M as mob, mob/living/user as mob)
|
||||
..()
|
||||
// Drop all the things. All of them.
|
||||
var/list/obj/item/oldContents = contents.Copy()
|
||||
@@ -405,22 +405,22 @@
|
||||
if(prob(10))
|
||||
M.Weaken(2)
|
||||
|
||||
/obj/item/weapon/storage/bag/tray/proc/rebuild_overlays()
|
||||
/obj/item/storage/bag/tray/proc/rebuild_overlays()
|
||||
overlays.Cut()
|
||||
for(var/obj/item/I in contents)
|
||||
overlays += image("icon" = I.icon, "icon_state" = I.icon_state, "layer" = -1)
|
||||
|
||||
/obj/item/weapon/storage/bag/tray/remove_from_storage(obj/item/W as obj, atom/new_location)
|
||||
/obj/item/storage/bag/tray/remove_from_storage(obj/item/W as obj, atom/new_location)
|
||||
..()
|
||||
rebuild_overlays()
|
||||
|
||||
/obj/item/weapon/storage/bag/tray/handle_item_insertion(obj/item/I, prevent_warning = 0)
|
||||
/obj/item/storage/bag/tray/handle_item_insertion(obj/item/I, prevent_warning = 0)
|
||||
overlays += image("icon" = I.icon, "icon_state" = I.icon_state, "layer" = -1)
|
||||
..()
|
||||
|
||||
/obj/item/weapon/storage/bag/tray/cyborg
|
||||
/obj/item/storage/bag/tray/cyborg
|
||||
|
||||
/obj/item/weapon/storage/bag/tray/cyborg/afterattack(atom/target, mob/user as mob)
|
||||
/obj/item/storage/bag/tray/cyborg/afterattack(atom/target, mob/user as mob)
|
||||
if( isturf(target) || istype(target,/obj/structure/table) )
|
||||
var foundtable = istype(target,/obj/structure/table/)
|
||||
if( !foundtable ) //it must be a turf!
|
||||
@@ -464,7 +464,7 @@
|
||||
* Chemistry bag
|
||||
*/
|
||||
|
||||
/obj/item/weapon/storage/bag/chemistry
|
||||
/obj/item/storage/bag/chemistry
|
||||
name = "chemistry bag"
|
||||
icon = 'icons/obj/chemical.dmi'
|
||||
icon_state = "bag"
|
||||
@@ -472,13 +472,13 @@
|
||||
storage_slots = 50
|
||||
max_combined_w_class = 200
|
||||
w_class = WEIGHT_CLASS_TINY
|
||||
can_hold = list(/obj/item/weapon/reagent_containers/food/pill,/obj/item/weapon/reagent_containers/glass/beaker,/obj/item/weapon/reagent_containers/glass/bottle)
|
||||
can_hold = list(/obj/item/reagent_containers/food/pill,/obj/item/reagent_containers/glass/beaker,/obj/item/reagent_containers/glass/bottle)
|
||||
burn_state = FLAMMABLE
|
||||
/*
|
||||
* Biowaste bag (mostly for xenobiologists)
|
||||
*/
|
||||
|
||||
/obj/item/weapon/storage/bag/bio
|
||||
/obj/item/storage/bag/bio
|
||||
name = "bio bag"
|
||||
icon = 'icons/obj/chemical.dmi'
|
||||
icon_state = "biobag"
|
||||
@@ -486,5 +486,5 @@
|
||||
storage_slots = 25
|
||||
max_combined_w_class = 200
|
||||
w_class = WEIGHT_CLASS_TINY
|
||||
can_hold = list(/obj/item/slime_extract,/obj/item/weapon/reagent_containers/food/snacks/monkeycube,/obj/item/weapon/reagent_containers/syringe,/obj/item/weapon/reagent_containers/glass/beaker,/obj/item/weapon/reagent_containers/glass/bottle,/obj/item/weapon/reagent_containers/blood,/obj/item/weapon/reagent_containers/hypospray/autoinjector)
|
||||
can_hold = list(/obj/item/slime_extract,/obj/item/reagent_containers/food/snacks/monkeycube,/obj/item/reagent_containers/syringe,/obj/item/reagent_containers/glass/beaker,/obj/item/reagent_containers/glass/bottle,/obj/item/reagent_containers/blood,/obj/item/reagent_containers/hypospray/autoinjector)
|
||||
burn_state = FLAMMABLE
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/obj/item/weapon/storage/belt
|
||||
/obj/item/storage/belt
|
||||
name = "belt"
|
||||
desc = "Can hold various things."
|
||||
icon = 'icons/obj/clothing/belts.dmi'
|
||||
@@ -9,7 +9,7 @@
|
||||
var/use_item_overlays = 0 // Do we have overlays for items held inside the belt?
|
||||
|
||||
|
||||
/obj/item/weapon/storage/belt/update_icon()
|
||||
/obj/item/storage/belt/update_icon()
|
||||
if(use_item_overlays)
|
||||
overlays.Cut()
|
||||
for(var/obj/item/I in contents)
|
||||
@@ -17,11 +17,11 @@
|
||||
|
||||
..()
|
||||
|
||||
/obj/item/weapon/storage/belt/proc/can_use()
|
||||
/obj/item/storage/belt/proc/can_use()
|
||||
return is_equipped()
|
||||
|
||||
|
||||
/obj/item/weapon/storage/belt/MouseDrop(obj/over_object as obj, src_location, over_location)
|
||||
/obj/item/storage/belt/MouseDrop(obj/over_object as obj, src_location, over_location)
|
||||
var/mob/M = usr
|
||||
if(!istype(over_object, /obj/screen))
|
||||
return ..()
|
||||
@@ -37,75 +37,75 @@
|
||||
src.add_fingerprint(usr)
|
||||
return
|
||||
|
||||
/obj/item/weapon/storage/belt/deserialize(list/data)
|
||||
/obj/item/storage/belt/deserialize(list/data)
|
||||
..()
|
||||
update_icon()
|
||||
|
||||
/obj/item/weapon/storage/belt/utility
|
||||
/obj/item/storage/belt/utility
|
||||
name = "tool-belt" //Carn: utility belt is nicer, but it bamboozles the text parsing.
|
||||
desc = "Can hold various tools."
|
||||
icon_state = "utilitybelt"
|
||||
item_state = "utility"
|
||||
use_item_overlays = 1
|
||||
can_hold = list(
|
||||
/obj/item/weapon/crowbar,
|
||||
/obj/item/weapon/screwdriver,
|
||||
/obj/item/weapon/weldingtool,
|
||||
/obj/item/weapon/wirecutters,
|
||||
/obj/item/weapon/wrench,
|
||||
/obj/item/crowbar,
|
||||
/obj/item/screwdriver,
|
||||
/obj/item/weldingtool,
|
||||
/obj/item/wirecutters,
|
||||
/obj/item/wrench,
|
||||
/obj/item/device/multitool,
|
||||
/obj/item/device/flashlight,
|
||||
/obj/item/stack/cable_coil,
|
||||
/obj/item/device/t_scanner,
|
||||
/obj/item/device/analyzer,
|
||||
/obj/item/taperoll/engineering,
|
||||
/obj/item/weapon/extinguisher/mini)
|
||||
/obj/item/extinguisher/mini)
|
||||
|
||||
/obj/item/weapon/storage/belt/utility/full/New()
|
||||
/obj/item/storage/belt/utility/full/New()
|
||||
..()
|
||||
new /obj/item/weapon/screwdriver(src)
|
||||
new /obj/item/weapon/wrench(src)
|
||||
new /obj/item/weapon/weldingtool(src)
|
||||
new /obj/item/weapon/crowbar(src)
|
||||
new /obj/item/weapon/wirecutters(src)
|
||||
new /obj/item/screwdriver(src)
|
||||
new /obj/item/wrench(src)
|
||||
new /obj/item/weldingtool(src)
|
||||
new /obj/item/crowbar(src)
|
||||
new /obj/item/wirecutters(src)
|
||||
new /obj/item/stack/cable_coil(src, 30, pick(COLOR_RED, COLOR_YELLOW, COLOR_ORANGE))
|
||||
update_icon()
|
||||
|
||||
/obj/item/weapon/storage/belt/utility/full/multitool/New()
|
||||
/obj/item/storage/belt/utility/full/multitool/New()
|
||||
..()
|
||||
new /obj/item/device/multitool(src)
|
||||
update_icon()
|
||||
|
||||
/obj/item/weapon/storage/belt/utility/atmostech/New()
|
||||
/obj/item/storage/belt/utility/atmostech/New()
|
||||
..()
|
||||
new /obj/item/weapon/screwdriver(src)
|
||||
new /obj/item/weapon/wrench(src)
|
||||
new /obj/item/weapon/weldingtool(src)
|
||||
new /obj/item/weapon/crowbar(src)
|
||||
new /obj/item/weapon/wirecutters(src)
|
||||
new /obj/item/screwdriver(src)
|
||||
new /obj/item/wrench(src)
|
||||
new /obj/item/weldingtool(src)
|
||||
new /obj/item/crowbar(src)
|
||||
new /obj/item/wirecutters(src)
|
||||
new /obj/item/device/t_scanner(src)
|
||||
new /obj/item/weapon/extinguisher/mini(src)
|
||||
new /obj/item/extinguisher/mini(src)
|
||||
update_icon()
|
||||
|
||||
/obj/item/weapon/storage/belt/utility/chief
|
||||
/obj/item/storage/belt/utility/chief
|
||||
name = "Chief Engineer's toolbelt"
|
||||
desc = "Holds tools, looks snazzy"
|
||||
icon_state = "utilitybelt_ce"
|
||||
item_state = "utility_ce"
|
||||
|
||||
/obj/item/weapon/storage/belt/utility/chief/full/New()
|
||||
/obj/item/storage/belt/utility/chief/full/New()
|
||||
..()
|
||||
new /obj/item/weapon/screwdriver/power(src)
|
||||
new /obj/item/weapon/crowbar/power(src)
|
||||
new /obj/item/weapon/weldingtool/experimental(src)//This can be changed if this is too much
|
||||
new /obj/item/screwdriver/power(src)
|
||||
new /obj/item/crowbar/power(src)
|
||||
new /obj/item/weldingtool/experimental(src)//This can be changed if this is too much
|
||||
new /obj/item/device/multitool(src)
|
||||
new /obj/item/stack/cable_coil(src, 30, pick(COLOR_RED, COLOR_YELLOW, COLOR_ORANGE))
|
||||
new /obj/item/weapon/extinguisher/mini(src)
|
||||
new /obj/item/extinguisher/mini(src)
|
||||
new /obj/item/device/analyzer(src)
|
||||
update_icon()
|
||||
//much roomier now that we've managed to remove two tools
|
||||
|
||||
/obj/item/weapon/storage/belt/medical
|
||||
/obj/item/storage/belt/medical
|
||||
use_to_pickup = 1 //Allow medical belt to pick up medicine
|
||||
name = "medical belt"
|
||||
desc = "Can hold various medical equipment."
|
||||
@@ -114,40 +114,40 @@
|
||||
use_item_overlays = 1
|
||||
can_hold = list(
|
||||
/obj/item/device/healthanalyzer,
|
||||
/obj/item/weapon/dnainjector,
|
||||
/obj/item/weapon/reagent_containers/dropper,
|
||||
/obj/item/weapon/reagent_containers/glass/beaker,
|
||||
/obj/item/weapon/reagent_containers/glass/bottle,
|
||||
/obj/item/weapon/reagent_containers/food/pill,
|
||||
/obj/item/weapon/reagent_containers/syringe,
|
||||
/obj/item/weapon/lighter/zippo,
|
||||
/obj/item/weapon/storage/fancy/cigarettes,
|
||||
/obj/item/weapon/storage/pill_bottle,
|
||||
/obj/item/dnainjector,
|
||||
/obj/item/reagent_containers/dropper,
|
||||
/obj/item/reagent_containers/glass/beaker,
|
||||
/obj/item/reagent_containers/glass/bottle,
|
||||
/obj/item/reagent_containers/food/pill,
|
||||
/obj/item/reagent_containers/syringe,
|
||||
/obj/item/lighter/zippo,
|
||||
/obj/item/storage/fancy/cigarettes,
|
||||
/obj/item/storage/pill_bottle,
|
||||
/obj/item/stack/medical,
|
||||
/obj/item/device/flashlight/pen,
|
||||
/obj/item/clothing/mask/surgical,
|
||||
/obj/item/clothing/gloves/color/latex,
|
||||
/obj/item/weapon/reagent_containers/hypospray/autoinjector,
|
||||
/obj/item/reagent_containers/hypospray/autoinjector,
|
||||
/obj/item/device/rad_laser,
|
||||
/obj/item/device/sensor_device,
|
||||
/obj/item/weapon/wrench/medical,
|
||||
/obj/item/wrench/medical,
|
||||
)
|
||||
|
||||
/obj/item/weapon/storage/belt/medical/response_team
|
||||
/obj/item/storage/belt/medical/response_team
|
||||
|
||||
/obj/item/weapon/storage/belt/medical/response_team/New()
|
||||
/obj/item/storage/belt/medical/response_team/New()
|
||||
..()
|
||||
new /obj/item/weapon/reagent_containers/food/pill/salbutamol(src)
|
||||
new /obj/item/weapon/reagent_containers/food/pill/salbutamol(src)
|
||||
new /obj/item/weapon/reagent_containers/food/pill/charcoal(src)
|
||||
new /obj/item/weapon/reagent_containers/food/pill/charcoal(src)
|
||||
new /obj/item/weapon/reagent_containers/food/pill/salicylic(src)
|
||||
new /obj/item/weapon/reagent_containers/food/pill/salicylic(src)
|
||||
new /obj/item/weapon/reagent_containers/food/pill/salicylic(src)
|
||||
new /obj/item/reagent_containers/food/pill/salbutamol(src)
|
||||
new /obj/item/reagent_containers/food/pill/salbutamol(src)
|
||||
new /obj/item/reagent_containers/food/pill/charcoal(src)
|
||||
new /obj/item/reagent_containers/food/pill/charcoal(src)
|
||||
new /obj/item/reagent_containers/food/pill/salicylic(src)
|
||||
new /obj/item/reagent_containers/food/pill/salicylic(src)
|
||||
new /obj/item/reagent_containers/food/pill/salicylic(src)
|
||||
update_icon()
|
||||
|
||||
|
||||
/obj/item/weapon/storage/belt/botany
|
||||
/obj/item/storage/belt/botany
|
||||
name = "botanist belt"
|
||||
desc = "Can hold various botanical supplies."
|
||||
icon_state = "botanybelt"
|
||||
@@ -155,22 +155,22 @@
|
||||
use_item_overlays = 1
|
||||
can_hold = list(
|
||||
/obj/item/device/plant_analyzer,
|
||||
/obj/item/weapon/cultivator,
|
||||
/obj/item/weapon/hatchet,
|
||||
/obj/item/weapon/reagent_containers/glass/bottle,
|
||||
// /obj/item/weapon/reagent_containers/syringe,
|
||||
// /obj/item/weapon/reagent_containers/glass/beaker,
|
||||
/obj/item/weapon/lighter/zippo,
|
||||
/obj/item/weapon/storage/fancy/cigarettes,
|
||||
/obj/item/weapon/shovel/spade,
|
||||
/obj/item/cultivator,
|
||||
/obj/item/hatchet,
|
||||
/obj/item/reagent_containers/glass/bottle,
|
||||
// /obj/item/reagent_containers/syringe,
|
||||
// /obj/item/reagent_containers/glass/beaker,
|
||||
/obj/item/lighter/zippo,
|
||||
/obj/item/storage/fancy/cigarettes,
|
||||
/obj/item/shovel/spade,
|
||||
/obj/item/device/flashlight/pen,
|
||||
/obj/item/seeds,
|
||||
/obj/item/weapon/wirecutters,
|
||||
/obj/item/weapon/wrench,
|
||||
/obj/item/wirecutters,
|
||||
/obj/item/wrench,
|
||||
)
|
||||
|
||||
|
||||
/obj/item/weapon/storage/belt/security
|
||||
/obj/item/storage/belt/security
|
||||
name = "security belt"
|
||||
desc = "Can hold security gear like handcuffs and flashes."
|
||||
icon_state = "securitybelt"
|
||||
@@ -179,38 +179,38 @@
|
||||
max_w_class = WEIGHT_CLASS_NORMAL
|
||||
use_item_overlays = 1
|
||||
can_hold = list(
|
||||
/obj/item/weapon/grenade/flashbang,
|
||||
/obj/item/weapon/grenade/chem_grenade/teargas,
|
||||
/obj/item/weapon/reagent_containers/spray/pepper,
|
||||
/obj/item/weapon/restraints/handcuffs,
|
||||
/obj/item/grenade/flashbang,
|
||||
/obj/item/grenade/chem_grenade/teargas,
|
||||
/obj/item/reagent_containers/spray/pepper,
|
||||
/obj/item/restraints/handcuffs,
|
||||
/obj/item/device/flash,
|
||||
/obj/item/clothing/glasses,
|
||||
/obj/item/ammo_casing/shotgun,
|
||||
/obj/item/ammo_box,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/donut,
|
||||
/obj/item/weapon/kitchen/knife/combat,
|
||||
/obj/item/weapon/melee/baton,
|
||||
/obj/item/weapon/melee/classic_baton,
|
||||
/obj/item/reagent_containers/food/snacks/donut,
|
||||
/obj/item/kitchen/knife/combat,
|
||||
/obj/item/melee/baton,
|
||||
/obj/item/melee/classic_baton,
|
||||
/obj/item/device/flashlight/seclite,
|
||||
/obj/item/taperoll/police,
|
||||
/obj/item/weapon/melee/classic_baton/telescopic,
|
||||
/obj/item/weapon/restraints/legcuffs/bola)
|
||||
/obj/item/melee/classic_baton/telescopic,
|
||||
/obj/item/restraints/legcuffs/bola)
|
||||
|
||||
/obj/item/weapon/storage/belt/security/sec/New()
|
||||
/obj/item/storage/belt/security/sec/New()
|
||||
..()
|
||||
new /obj/item/device/flashlight/seclite(src)
|
||||
update_icon()
|
||||
|
||||
/obj/item/weapon/storage/belt/security/response_team/New()
|
||||
/obj/item/storage/belt/security/response_team/New()
|
||||
..()
|
||||
new /obj/item/weapon/kitchen/knife/combat(src)
|
||||
new /obj/item/weapon/melee/baton/loaded(src)
|
||||
new /obj/item/kitchen/knife/combat(src)
|
||||
new /obj/item/melee/baton/loaded(src)
|
||||
new /obj/item/device/flash(src)
|
||||
new /obj/item/weapon/melee/classic_baton/telescopic(src)
|
||||
new /obj/item/weapon/grenade/flashbang(src)
|
||||
new /obj/item/melee/classic_baton/telescopic(src)
|
||||
new /obj/item/grenade/flashbang(src)
|
||||
update_icon()
|
||||
|
||||
/obj/item/weapon/storage/belt/soulstone
|
||||
/obj/item/storage/belt/soulstone
|
||||
name = "soul stone belt"
|
||||
desc = "Designed for ease of access to the shards during a fight, as to not let a single enemy spirit slip away"
|
||||
icon_state = "soulstonebelt"
|
||||
@@ -221,7 +221,7 @@
|
||||
"/obj/item/device/soulstone"
|
||||
)
|
||||
|
||||
/obj/item/weapon/storage/belt/soulstone/full/New()
|
||||
/obj/item/storage/belt/soulstone/full/New()
|
||||
..()
|
||||
new /obj/item/device/soulstone(src)
|
||||
new /obj/item/device/soulstone(src)
|
||||
@@ -232,7 +232,7 @@
|
||||
update_icon()
|
||||
|
||||
|
||||
/obj/item/weapon/storage/belt/champion
|
||||
/obj/item/storage/belt/champion
|
||||
name = "championship belt"
|
||||
desc = "Proves to the world that you are the strongest!"
|
||||
icon_state = "championbelt"
|
||||
@@ -243,38 +243,38 @@
|
||||
"/obj/item/clothing/mask/luchador"
|
||||
)
|
||||
|
||||
/obj/item/weapon/storage/belt/military
|
||||
/obj/item/storage/belt/military
|
||||
name = "military belt"
|
||||
desc = "A syndicate belt designed to be used by boarding parties. Its style is modelled after the hardsuits they wear."
|
||||
icon_state = "militarybelt"
|
||||
item_state = "military"
|
||||
max_w_class = WEIGHT_CLASS_SMALL
|
||||
|
||||
/obj/item/weapon/storage/belt/military/abductor
|
||||
/obj/item/storage/belt/military/abductor
|
||||
name = "agent belt"
|
||||
desc = "A belt used by abductor agents."
|
||||
icon = 'icons/obj/abductor.dmi'
|
||||
icon_state = "belt"
|
||||
item_state = "security"
|
||||
|
||||
/obj/item/weapon/storage/belt/military/abductor/full/New()
|
||||
/obj/item/storage/belt/military/abductor/full/New()
|
||||
..()
|
||||
new /obj/item/weapon/screwdriver/abductor(src)
|
||||
new /obj/item/weapon/wrench/abductor(src)
|
||||
new /obj/item/weapon/weldingtool/abductor(src)
|
||||
new /obj/item/weapon/crowbar/abductor(src)
|
||||
new /obj/item/weapon/wirecutters/abductor(src)
|
||||
new /obj/item/screwdriver/abductor(src)
|
||||
new /obj/item/wrench/abductor(src)
|
||||
new /obj/item/weldingtool/abductor(src)
|
||||
new /obj/item/crowbar/abductor(src)
|
||||
new /obj/item/wirecutters/abductor(src)
|
||||
new /obj/item/device/multitool/abductor(src)
|
||||
new /obj/item/stack/cable_coil(src, 30, COLOR_WHITE)
|
||||
|
||||
/obj/item/weapon/storage/belt/military/assault
|
||||
/obj/item/storage/belt/military/assault
|
||||
name = "assault belt"
|
||||
desc = "A tactical assault belt."
|
||||
icon_state = "assaultbelt"
|
||||
item_state = "assault"
|
||||
storage_slots = 6
|
||||
|
||||
/obj/item/weapon/storage/belt/janitor
|
||||
/obj/item/storage/belt/janitor
|
||||
name = "janibelt"
|
||||
desc = "A belt used to hold most janitorial supplies."
|
||||
icon_state = "janibelt"
|
||||
@@ -283,25 +283,25 @@
|
||||
max_w_class = WEIGHT_CLASS_BULKY // Set to this so the light replacer can fit.
|
||||
use_item_overlays = 1
|
||||
can_hold = list(
|
||||
/obj/item/weapon/grenade/chem_grenade/cleaner,
|
||||
/obj/item/grenade/chem_grenade/cleaner,
|
||||
/obj/item/device/lightreplacer,
|
||||
/obj/item/device/flashlight,
|
||||
/obj/item/weapon/reagent_containers/spray,
|
||||
/obj/item/weapon/soap,
|
||||
/obj/item/weapon/holosign_creator
|
||||
/obj/item/reagent_containers/spray,
|
||||
/obj/item/soap,
|
||||
/obj/item/holosign_creator
|
||||
)
|
||||
|
||||
/obj/item/weapon/storage/belt/janitor/full/New()
|
||||
/obj/item/storage/belt/janitor/full/New()
|
||||
..()
|
||||
new /obj/item/device/lightreplacer(src)
|
||||
new /obj/item/weapon/holosign_creator(src)
|
||||
new /obj/item/weapon/reagent_containers/spray(src)
|
||||
new /obj/item/weapon/soap(src)
|
||||
new /obj/item/weapon/grenade/chem_grenade/cleaner(src)
|
||||
new /obj/item/weapon/grenade/chem_grenade/cleaner(src)
|
||||
new /obj/item/holosign_creator(src)
|
||||
new /obj/item/reagent_containers/spray(src)
|
||||
new /obj/item/soap(src)
|
||||
new /obj/item/grenade/chem_grenade/cleaner(src)
|
||||
new /obj/item/grenade/chem_grenade/cleaner(src)
|
||||
update_icon()
|
||||
|
||||
/obj/item/weapon/storage/belt/lazarus
|
||||
/obj/item/storage/belt/lazarus
|
||||
name = "trainer's belt"
|
||||
desc = "For the mining master, holds your lazarus capsules."
|
||||
icon_state = "lazarusbelt"
|
||||
@@ -312,27 +312,27 @@
|
||||
storage_slots = 6
|
||||
can_hold = list(/obj/item/device/mobcapsule)
|
||||
|
||||
/obj/item/weapon/storage/belt/lazarus/New()
|
||||
/obj/item/storage/belt/lazarus/New()
|
||||
..()
|
||||
update_icon()
|
||||
|
||||
|
||||
/obj/item/weapon/storage/belt/lazarus/update_icon()
|
||||
/obj/item/storage/belt/lazarus/update_icon()
|
||||
..()
|
||||
icon_state = "[initial(icon_state)]_[contents.len]"
|
||||
|
||||
/obj/item/weapon/storage/belt/lazarus/attackby(obj/item/W, mob/user)
|
||||
/obj/item/storage/belt/lazarus/attackby(obj/item/W, mob/user)
|
||||
var/amount = contents.len
|
||||
. = ..()
|
||||
if(amount != contents.len)
|
||||
update_icon()
|
||||
|
||||
/obj/item/weapon/storage/belt/lazarus/remove_from_storage(obj/item/W as obj, atom/new_location)
|
||||
/obj/item/storage/belt/lazarus/remove_from_storage(obj/item/W as obj, atom/new_location)
|
||||
..()
|
||||
update_icon()
|
||||
|
||||
|
||||
/obj/item/weapon/storage/belt/bandolier
|
||||
/obj/item/storage/belt/bandolier
|
||||
name = "bandolier"
|
||||
desc = "A bandolier for holding shotgun ammunition."
|
||||
icon_state = "bandolier"
|
||||
@@ -342,11 +342,11 @@
|
||||
/obj/item/ammo_casing/shotgun
|
||||
)
|
||||
|
||||
/obj/item/weapon/storage/belt/bandolier/New()
|
||||
/obj/item/storage/belt/bandolier/New()
|
||||
..()
|
||||
update_icon()
|
||||
|
||||
/obj/item/weapon/storage/belt/bandolier/full/New()
|
||||
/obj/item/storage/belt/bandolier/full/New()
|
||||
..()
|
||||
new /obj/item/ammo_casing/shotgun/beanbag(src)
|
||||
new /obj/item/ammo_casing/shotgun/beanbag(src)
|
||||
@@ -358,22 +358,22 @@
|
||||
new /obj/item/ammo_casing/shotgun/beanbag(src)
|
||||
update_icon()
|
||||
|
||||
/obj/item/weapon/storage/belt/bandolier/update_icon()
|
||||
/obj/item/storage/belt/bandolier/update_icon()
|
||||
..()
|
||||
icon_state = "[initial(icon_state)]_[contents.len]"
|
||||
|
||||
/obj/item/weapon/storage/belt/bandolier/attackby(obj/item/W, mob/user)
|
||||
/obj/item/storage/belt/bandolier/attackby(obj/item/W, mob/user)
|
||||
var/amount = contents.len
|
||||
. = ..()
|
||||
if(amount != contents.len)
|
||||
update_icon()
|
||||
|
||||
/obj/item/weapon/storage/belt/bandolier/remove_from_storage(obj/item/W as obj, atom/new_location)
|
||||
/obj/item/storage/belt/bandolier/remove_from_storage(obj/item/W as obj, atom/new_location)
|
||||
..()
|
||||
update_icon()
|
||||
|
||||
|
||||
/obj/item/weapon/storage/belt/holster
|
||||
/obj/item/storage/belt/holster
|
||||
name = "shoulder holster"
|
||||
desc = "A holster to conceal a carried handgun. WARNING: Badasses only."
|
||||
icon_state = "holster"
|
||||
@@ -381,11 +381,11 @@
|
||||
storage_slots = 1
|
||||
max_w_class = WEIGHT_CLASS_NORMAL
|
||||
can_hold = list(
|
||||
/obj/item/weapon/gun/projectile/automatic/pistol,
|
||||
/obj/item/weapon/gun/projectile/revolver/detective
|
||||
/obj/item/gun/projectile/automatic/pistol,
|
||||
/obj/item/gun/projectile/revolver/detective
|
||||
)
|
||||
|
||||
/obj/item/weapon/storage/belt/wands
|
||||
/obj/item/storage/belt/wands
|
||||
name = "wand belt"
|
||||
desc = "A belt designed to hold various rods of power. A veritable fanny pack of exotic magic."
|
||||
icon_state = "soulstonebelt"
|
||||
@@ -393,25 +393,25 @@
|
||||
storage_slots = 6
|
||||
use_item_overlays = 1
|
||||
can_hold = list(
|
||||
/obj/item/weapon/gun/magic/wand
|
||||
/obj/item/gun/magic/wand
|
||||
)
|
||||
|
||||
/obj/item/weapon/storage/belt/wands/full/New()
|
||||
/obj/item/storage/belt/wands/full/New()
|
||||
..()
|
||||
new /obj/item/weapon/gun/magic/wand/death(src)
|
||||
new /obj/item/weapon/gun/magic/wand/resurrection(src)
|
||||
new /obj/item/weapon/gun/magic/wand/polymorph(src)
|
||||
new /obj/item/weapon/gun/magic/wand/teleport(src)
|
||||
new /obj/item/weapon/gun/magic/wand/door(src)
|
||||
new /obj/item/weapon/gun/magic/wand/fireball(src)
|
||||
new /obj/item/gun/magic/wand/death(src)
|
||||
new /obj/item/gun/magic/wand/resurrection(src)
|
||||
new /obj/item/gun/magic/wand/polymorph(src)
|
||||
new /obj/item/gun/magic/wand/teleport(src)
|
||||
new /obj/item/gun/magic/wand/door(src)
|
||||
new /obj/item/gun/magic/wand/fireball(src)
|
||||
|
||||
for(var/obj/item/weapon/gun/magic/wand/W in contents) //All wands in this pack come in the best possible condition
|
||||
for(var/obj/item/gun/magic/wand/W in contents) //All wands in this pack come in the best possible condition
|
||||
W.max_charges = initial(W.max_charges)
|
||||
W.charges = W.max_charges
|
||||
update_icon()
|
||||
|
||||
|
||||
/obj/item/weapon/storage/belt/fannypack
|
||||
/obj/item/storage/belt/fannypack
|
||||
name = "fannypack"
|
||||
desc = "A dorky fannypack for keeping small items in."
|
||||
icon_state = "fannypack_leather"
|
||||
@@ -419,57 +419,57 @@
|
||||
storage_slots = 3
|
||||
max_w_class = WEIGHT_CLASS_SMALL
|
||||
|
||||
/obj/item/weapon/storage/belt/fannypack/black
|
||||
/obj/item/storage/belt/fannypack/black
|
||||
name = "black fannypack"
|
||||
icon_state = "fannypack_black"
|
||||
item_state = "fannypack_black"
|
||||
|
||||
/obj/item/weapon/storage/belt/fannypack/red
|
||||
/obj/item/storage/belt/fannypack/red
|
||||
name = "red fannypack"
|
||||
icon_state = "fannypack_red"
|
||||
item_state = "fannypack_red"
|
||||
|
||||
/obj/item/weapon/storage/belt/fannypack/purple
|
||||
/obj/item/storage/belt/fannypack/purple
|
||||
name = "purple fannypack"
|
||||
icon_state = "fannypack_purple"
|
||||
item_state = "fannypack_purple"
|
||||
|
||||
/obj/item/weapon/storage/belt/fannypack/blue
|
||||
/obj/item/storage/belt/fannypack/blue
|
||||
name = "blue fannypack"
|
||||
icon_state = "fannypack_blue"
|
||||
item_state = "fannypack_blue"
|
||||
|
||||
/obj/item/weapon/storage/belt/fannypack/orange
|
||||
/obj/item/storage/belt/fannypack/orange
|
||||
name = "orange fannypack"
|
||||
icon_state = "fannypack_orange"
|
||||
item_state = "fannypack_orange"
|
||||
|
||||
/obj/item/weapon/storage/belt/fannypack/white
|
||||
/obj/item/storage/belt/fannypack/white
|
||||
name = "white fannypack"
|
||||
icon_state = "fannypack_white"
|
||||
item_state = "fannypack_white"
|
||||
|
||||
/obj/item/weapon/storage/belt/fannypack/green
|
||||
/obj/item/storage/belt/fannypack/green
|
||||
name = "green fannypack"
|
||||
icon_state = "fannypack_green"
|
||||
item_state = "fannypack_green"
|
||||
|
||||
/obj/item/weapon/storage/belt/fannypack/pink
|
||||
/obj/item/storage/belt/fannypack/pink
|
||||
name = "pink fannypack"
|
||||
icon_state = "fannypack_pink"
|
||||
item_state = "fannypack_pink"
|
||||
|
||||
/obj/item/weapon/storage/belt/fannypack/cyan
|
||||
/obj/item/storage/belt/fannypack/cyan
|
||||
name = "cyan fannypack"
|
||||
icon_state = "fannypack_cyan"
|
||||
item_state = "fannypack_cyan"
|
||||
|
||||
/obj/item/weapon/storage/belt/fannypack/yellow
|
||||
/obj/item/storage/belt/fannypack/yellow
|
||||
name = "yellow fannypack"
|
||||
icon_state = "fannypack_yellow"
|
||||
item_state = "fannypack_yellow"
|
||||
|
||||
/obj/item/weapon/storage/belt/rapier
|
||||
/obj/item/storage/belt/rapier
|
||||
name = "rapier sheath"
|
||||
desc = "Can hold rapiers."
|
||||
icon_state = "sheath"
|
||||
@@ -477,9 +477,9 @@
|
||||
storage_slots = 1
|
||||
w_class = WEIGHT_CLASS_BULKY
|
||||
max_w_class = WEIGHT_CLASS_BULKY
|
||||
can_hold = list(/obj/item/weapon/melee/rapier)
|
||||
can_hold = list(/obj/item/melee/rapier)
|
||||
|
||||
/obj/item/weapon/storage/belt/rapier/update_icon()
|
||||
/obj/item/storage/belt/rapier/update_icon()
|
||||
icon_state = "[initial(icon_state)]"
|
||||
item_state = "[initial(item_state)]"
|
||||
if(contents.len)
|
||||
@@ -490,9 +490,9 @@
|
||||
L.update_inv_belt()
|
||||
..()
|
||||
|
||||
/obj/item/weapon/storage/belt/rapier/New()
|
||||
/obj/item/storage/belt/rapier/New()
|
||||
..()
|
||||
new /obj/item/weapon/melee/rapier(src)
|
||||
new /obj/item/melee/rapier(src)
|
||||
update_icon()
|
||||
|
||||
// -------------------------------------
|
||||
@@ -500,7 +500,7 @@
|
||||
// -------------------------------------
|
||||
|
||||
|
||||
/obj/item/weapon/storage/belt/bluespace
|
||||
/obj/item/storage/belt/bluespace
|
||||
name = "Belt of Holding"
|
||||
desc = "The greatest in pants-supporting technology."
|
||||
icon_state = "holdingbelt"
|
||||
@@ -512,7 +512,7 @@
|
||||
origin_tech = "bluespace=5;materials=4;engineering=4;plasmatech=5"
|
||||
can_hold = list()
|
||||
|
||||
/obj/item/weapon/storage/belt/bluespace/owlman
|
||||
/obj/item/storage/belt/bluespace/owlman
|
||||
name = "Owlman's utility belt"
|
||||
desc = "Sometimes people choose justice. Sometimes, justice chooses you..."
|
||||
icon_state = "securitybelt"
|
||||
@@ -523,8 +523,8 @@
|
||||
origin_tech = "bluespace=5;materials=4;engineering=4;plasmatech=5"
|
||||
allow_quick_empty = 1
|
||||
can_hold = list(
|
||||
/obj/item/weapon/grenade/smokebomb,
|
||||
/obj/item/weapon/restraints/legcuffs/bola
|
||||
/obj/item/grenade/smokebomb,
|
||||
/obj/item/restraints/legcuffs/bola
|
||||
)
|
||||
|
||||
flags = NODROP
|
||||
@@ -534,34 +534,34 @@
|
||||
|
||||
|
||||
|
||||
/obj/item/weapon/storage/belt/bluespace/owlman/New()
|
||||
/obj/item/storage/belt/bluespace/owlman/New()
|
||||
..()
|
||||
new /obj/item/weapon/grenade/smokebomb(src)
|
||||
new /obj/item/weapon/grenade/smokebomb(src)
|
||||
new /obj/item/weapon/grenade/smokebomb(src)
|
||||
new /obj/item/weapon/grenade/smokebomb(src)
|
||||
new /obj/item/weapon/restraints/legcuffs/bola(src)
|
||||
new /obj/item/weapon/restraints/legcuffs/bola(src)
|
||||
new /obj/item/grenade/smokebomb(src)
|
||||
new /obj/item/grenade/smokebomb(src)
|
||||
new /obj/item/grenade/smokebomb(src)
|
||||
new /obj/item/grenade/smokebomb(src)
|
||||
new /obj/item/restraints/legcuffs/bola(src)
|
||||
new /obj/item/restraints/legcuffs/bola(src)
|
||||
processing_objects.Add(src)
|
||||
cooldown = world.time
|
||||
|
||||
/obj/item/weapon/storage/belt/bluespace/owlman/process()
|
||||
/obj/item/storage/belt/bluespace/owlman/process()
|
||||
if(cooldown < world.time - 600)
|
||||
smokecount = 0
|
||||
var/obj/item/weapon/grenade/smokebomb/S
|
||||
var/obj/item/grenade/smokebomb/S
|
||||
for(S in src)
|
||||
smokecount++
|
||||
bolacount = 0
|
||||
var/obj/item/weapon/restraints/legcuffs/bola/B
|
||||
var/obj/item/restraints/legcuffs/bola/B
|
||||
for(B in src)
|
||||
bolacount++
|
||||
if(smokecount < 4)
|
||||
while(smokecount < 4)
|
||||
new /obj/item/weapon/grenade/smokebomb(src)
|
||||
new /obj/item/grenade/smokebomb(src)
|
||||
smokecount++
|
||||
if(bolacount < 2)
|
||||
while(bolacount < 2)
|
||||
new /obj/item/weapon/restraints/legcuffs/bola(src)
|
||||
new /obj/item/restraints/legcuffs/bola(src)
|
||||
bolacount++
|
||||
cooldown = world.time
|
||||
update_icon()
|
||||
@@ -572,10 +572,10 @@
|
||||
if(H.s_active && H.s_active == src)
|
||||
H.s_active.show_to(H)
|
||||
|
||||
/obj/item/weapon/storage/belt/bluespace/attack(mob/M as mob, mob/user as mob, def_zone)
|
||||
/obj/item/storage/belt/bluespace/attack(mob/M as mob, mob/user as mob, def_zone)
|
||||
return
|
||||
|
||||
/obj/item/weapon/storage/belt/bluespace/admin
|
||||
/obj/item/storage/belt/bluespace/admin
|
||||
name = "Admin's Tool-belt"
|
||||
desc = "Holds everything for those that run everything."
|
||||
icon_state = "soulstonebelt"
|
||||
@@ -588,25 +588,25 @@
|
||||
|
||||
New()
|
||||
..()
|
||||
new /obj/item/weapon/crowbar(src)
|
||||
new /obj/item/weapon/screwdriver(src)
|
||||
new /obj/item/weapon/weldingtool/hugetank(src)
|
||||
new /obj/item/weapon/wirecutters(src)
|
||||
new /obj/item/weapon/wrench(src)
|
||||
new /obj/item/crowbar(src)
|
||||
new /obj/item/screwdriver(src)
|
||||
new /obj/item/weldingtool/hugetank(src)
|
||||
new /obj/item/wirecutters(src)
|
||||
new /obj/item/wrench(src)
|
||||
new /obj/item/device/multitool(src)
|
||||
new /obj/item/stack/cable_coil(src)
|
||||
|
||||
new /obj/item/weapon/restraints/handcuffs(src)
|
||||
new /obj/item/weapon/dnainjector/xraymut(src)
|
||||
new /obj/item/weapon/dnainjector/firemut(src)
|
||||
new /obj/item/weapon/dnainjector/telemut(src)
|
||||
new /obj/item/weapon/dnainjector/hulkmut(src)
|
||||
// new /obj/item/weapon/spellbook(src) // for smoke effects, door openings, etc
|
||||
// new /obj/item/weapon/magic/spellbook(src)
|
||||
new /obj/item/restraints/handcuffs(src)
|
||||
new /obj/item/dnainjector/xraymut(src)
|
||||
new /obj/item/dnainjector/firemut(src)
|
||||
new /obj/item/dnainjector/telemut(src)
|
||||
new /obj/item/dnainjector/hulkmut(src)
|
||||
// new /obj/item/spellbook(src) // for smoke effects, door openings, etc
|
||||
// new /obj/item/magic/spellbook(src)
|
||||
|
||||
// new/obj/item/weapon/reagent_containers/hypospray/admin(src)
|
||||
// new/obj/item/reagent_containers/hypospray/admin(src)
|
||||
|
||||
/obj/item/weapon/storage/belt/bluespace/sandbox
|
||||
/obj/item/storage/belt/bluespace/sandbox
|
||||
name = "Sandbox Mode Toolbelt"
|
||||
desc = "Holds whatever, you can spawn your own damn stuff."
|
||||
w_class = 10 // permit holding other storage items
|
||||
@@ -617,11 +617,11 @@
|
||||
|
||||
New()
|
||||
..()
|
||||
new /obj/item/weapon/crowbar(src)
|
||||
new /obj/item/weapon/screwdriver(src)
|
||||
new /obj/item/weapon/weldingtool/hugetank(src)
|
||||
new /obj/item/weapon/wirecutters(src)
|
||||
new /obj/item/weapon/wrench(src)
|
||||
new /obj/item/crowbar(src)
|
||||
new /obj/item/screwdriver(src)
|
||||
new /obj/item/weldingtool/hugetank(src)
|
||||
new /obj/item/wirecutters(src)
|
||||
new /obj/item/wrench(src)
|
||||
new /obj/item/device/multitool(src)
|
||||
new /obj/item/stack/cable_coil(src)
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/obj/item/weapon/storage/bible
|
||||
/obj/item/storage/bible
|
||||
name = "bible"
|
||||
desc = "Apply to head repeatedly."
|
||||
icon_state ="bible"
|
||||
@@ -14,21 +14,21 @@
|
||||
return (user.dust())
|
||||
|
||||
|
||||
/obj/item/weapon/storage/bible/booze
|
||||
/obj/item/storage/bible/booze
|
||||
name = "bible"
|
||||
desc = "To be applied to the head repeatedly."
|
||||
icon_state ="bible"
|
||||
|
||||
/obj/item/weapon/storage/bible/booze/New()
|
||||
/obj/item/storage/bible/booze/New()
|
||||
..()
|
||||
new /obj/item/weapon/reagent_containers/food/drinks/cans/beer(src)
|
||||
new /obj/item/weapon/reagent_containers/food/drinks/cans/beer(src)
|
||||
new /obj/item/reagent_containers/food/drinks/cans/beer(src)
|
||||
new /obj/item/reagent_containers/food/drinks/cans/beer(src)
|
||||
new /obj/item/stack/spacecash(src)
|
||||
new /obj/item/stack/spacecash(src)
|
||||
new /obj/item/stack/spacecash(src)
|
||||
//BS12 EDIT
|
||||
// All cult functionality moved to Null Rod
|
||||
/obj/item/weapon/storage/bible/proc/bless(mob/living/carbon/M as mob)
|
||||
/obj/item/storage/bible/proc/bless(mob/living/carbon/M as mob)
|
||||
if(ishuman(M))
|
||||
var/mob/living/carbon/human/H = M
|
||||
var/heal_amt = 10
|
||||
@@ -37,7 +37,7 @@
|
||||
H.UpdateDamageIcon()
|
||||
return
|
||||
|
||||
/obj/item/weapon/storage/bible/attack(mob/living/M as mob, mob/living/user as mob)
|
||||
/obj/item/storage/bible/attack(mob/living/M as mob, mob/living/user as mob)
|
||||
|
||||
var/chaplain = 0
|
||||
if(user.mind && (user.mind.assigned_role == "Chaplain"))
|
||||
@@ -94,7 +94,7 @@
|
||||
playsound(src.loc, "punch", 25, 1, -1)
|
||||
return
|
||||
|
||||
/obj/item/weapon/storage/bible/afterattack(atom/A, mob/user as mob, proximity)
|
||||
/obj/item/storage/bible/afterattack(atom/A, mob/user as mob, proximity)
|
||||
if(!proximity)
|
||||
return
|
||||
if(istype(A, /turf/simulated/floor))
|
||||
@@ -115,6 +115,6 @@
|
||||
A.reagents.del_reagent("unholywater")
|
||||
A.reagents.add_reagent("holywater",unholy2clean)
|
||||
|
||||
/obj/item/weapon/storage/bible/attackby(obj/item/weapon/W as obj, mob/user as mob, params)
|
||||
/obj/item/storage/bible/attackby(obj/item/W as obj, mob/user as mob, params)
|
||||
playsound(src.loc, "rustle", 50, 1, -5)
|
||||
..()
|
||||
|
||||
@@ -19,7 +19,7 @@
|
||||
* For syndicate call-ins see uplink_kits.dm
|
||||
*/
|
||||
|
||||
/obj/item/weapon/storage/box
|
||||
/obj/item/storage/box
|
||||
name = "box"
|
||||
desc = "It's just an ordinary box."
|
||||
icon_state = "box"
|
||||
@@ -27,7 +27,7 @@
|
||||
burn_state = FLAMMABLE
|
||||
var/foldable = /obj/item/stack/sheet/cardboard
|
||||
|
||||
/obj/item/weapon/storage/box/attack_self(mob/user)
|
||||
/obj/item/storage/box/attack_self(mob/user)
|
||||
..()
|
||||
|
||||
if(!foldable)
|
||||
@@ -53,7 +53,7 @@
|
||||
user.put_in_hands(I)
|
||||
qdel(src)
|
||||
|
||||
/obj/item/weapon/storage/box/large
|
||||
/obj/item/storage/box/large
|
||||
name = "large box"
|
||||
desc = "You could build a fort with this."
|
||||
icon_state = "largebox"
|
||||
@@ -62,34 +62,34 @@
|
||||
storage_slots = 21
|
||||
max_combined_w_class = 42 // 21*2
|
||||
|
||||
/obj/item/weapon/storage/box/survival
|
||||
/obj/item/storage/box/survival
|
||||
New()
|
||||
..()
|
||||
contents = list()
|
||||
new /obj/item/clothing/mask/breath( src )
|
||||
new /obj/item/weapon/tank/emergency_oxygen( src )
|
||||
new /obj/item/weapon/reagent_containers/hypospray/autoinjector( src )
|
||||
new /obj/item/tank/emergency_oxygen( src )
|
||||
new /obj/item/reagent_containers/hypospray/autoinjector( src )
|
||||
return
|
||||
|
||||
/obj/item/weapon/storage/box/engineer
|
||||
/obj/item/storage/box/engineer
|
||||
New()
|
||||
..()
|
||||
contents = list()
|
||||
new /obj/item/clothing/mask/breath( src )
|
||||
new /obj/item/weapon/tank/emergency_oxygen/engi( src )
|
||||
new /obj/item/weapon/reagent_containers/hypospray/autoinjector( src )
|
||||
new /obj/item/tank/emergency_oxygen/engi( src )
|
||||
new /obj/item/reagent_containers/hypospray/autoinjector( src )
|
||||
return
|
||||
|
||||
/obj/item/weapon/storage/box/survival_mining
|
||||
/obj/item/storage/box/survival_mining
|
||||
New()
|
||||
..()
|
||||
contents = list()
|
||||
new /obj/item/clothing/mask/breath(src)
|
||||
new /obj/item/weapon/tank/emergency_oxygen/engi(src)
|
||||
new /obj/item/weapon/crowbar/red(src)
|
||||
new /obj/item/weapon/reagent_containers/hypospray/autoinjector(src)
|
||||
new /obj/item/tank/emergency_oxygen/engi(src)
|
||||
new /obj/item/crowbar/red(src)
|
||||
new /obj/item/reagent_containers/hypospray/autoinjector(src)
|
||||
|
||||
/obj/item/weapon/storage/box/gloves
|
||||
/obj/item/storage/box/gloves
|
||||
name = "box of latex gloves"
|
||||
desc = "Contains white gloves."
|
||||
icon_state = "latex"
|
||||
@@ -104,7 +104,7 @@
|
||||
new /obj/item/clothing/gloves/color/latex(src)
|
||||
new /obj/item/clothing/gloves/color/latex(src)
|
||||
|
||||
/obj/item/weapon/storage/box/masks
|
||||
/obj/item/storage/box/masks
|
||||
name = "sterile masks"
|
||||
desc = "This box contains masks of sterility."
|
||||
icon_state = "sterile"
|
||||
@@ -120,7 +120,7 @@
|
||||
new /obj/item/clothing/mask/surgical(src)
|
||||
|
||||
|
||||
/obj/item/weapon/storage/box/syringes
|
||||
/obj/item/storage/box/syringes
|
||||
name = "syringes"
|
||||
desc = "A box full of syringes."
|
||||
desc = "A biohazard alert warning is printed on the box"
|
||||
@@ -128,128 +128,128 @@
|
||||
|
||||
New()
|
||||
..()
|
||||
new /obj/item/weapon/reagent_containers/syringe( src )
|
||||
new /obj/item/weapon/reagent_containers/syringe( src )
|
||||
new /obj/item/weapon/reagent_containers/syringe( src )
|
||||
new /obj/item/weapon/reagent_containers/syringe( src )
|
||||
new /obj/item/weapon/reagent_containers/syringe( src )
|
||||
new /obj/item/weapon/reagent_containers/syringe( src )
|
||||
new /obj/item/weapon/reagent_containers/syringe( src )
|
||||
new /obj/item/reagent_containers/syringe( src )
|
||||
new /obj/item/reagent_containers/syringe( src )
|
||||
new /obj/item/reagent_containers/syringe( src )
|
||||
new /obj/item/reagent_containers/syringe( src )
|
||||
new /obj/item/reagent_containers/syringe( src )
|
||||
new /obj/item/reagent_containers/syringe( src )
|
||||
new /obj/item/reagent_containers/syringe( src )
|
||||
|
||||
/obj/item/weapon/storage/box/beakers
|
||||
/obj/item/storage/box/beakers
|
||||
name = "beaker box"
|
||||
icon_state = "beaker"
|
||||
|
||||
New()
|
||||
..()
|
||||
new /obj/item/weapon/reagent_containers/glass/beaker( src )
|
||||
new /obj/item/weapon/reagent_containers/glass/beaker( src )
|
||||
new /obj/item/weapon/reagent_containers/glass/beaker( src )
|
||||
new /obj/item/weapon/reagent_containers/glass/beaker( src )
|
||||
new /obj/item/weapon/reagent_containers/glass/beaker( src )
|
||||
new /obj/item/weapon/reagent_containers/glass/beaker( src )
|
||||
new /obj/item/weapon/reagent_containers/glass/beaker( src )
|
||||
new /obj/item/reagent_containers/glass/beaker( src )
|
||||
new /obj/item/reagent_containers/glass/beaker( src )
|
||||
new /obj/item/reagent_containers/glass/beaker( src )
|
||||
new /obj/item/reagent_containers/glass/beaker( src )
|
||||
new /obj/item/reagent_containers/glass/beaker( src )
|
||||
new /obj/item/reagent_containers/glass/beaker( src )
|
||||
new /obj/item/reagent_containers/glass/beaker( src )
|
||||
|
||||
/obj/item/weapon/storage/box/injectors
|
||||
/obj/item/storage/box/injectors
|
||||
name = "\improper DNA injectors"
|
||||
desc = "This box contains injectors it seems."
|
||||
|
||||
New()
|
||||
..()
|
||||
new /obj/item/weapon/dnainjector/h2m(src)
|
||||
new /obj/item/weapon/dnainjector/h2m(src)
|
||||
new /obj/item/weapon/dnainjector/h2m(src)
|
||||
new /obj/item/weapon/dnainjector/m2h(src)
|
||||
new /obj/item/weapon/dnainjector/m2h(src)
|
||||
new /obj/item/weapon/dnainjector/m2h(src)
|
||||
new /obj/item/dnainjector/h2m(src)
|
||||
new /obj/item/dnainjector/h2m(src)
|
||||
new /obj/item/dnainjector/h2m(src)
|
||||
new /obj/item/dnainjector/m2h(src)
|
||||
new /obj/item/dnainjector/m2h(src)
|
||||
new /obj/item/dnainjector/m2h(src)
|
||||
|
||||
/obj/item/weapon/storage/box/slug
|
||||
/obj/item/storage/box/slug
|
||||
name = "Ammunition Box (Slug)"
|
||||
desc = "A small box capable of holding seven shotgun shells."
|
||||
icon_state = "slugbox"
|
||||
|
||||
/obj/item/weapon/storage/box/slug/New()
|
||||
/obj/item/storage/box/slug/New()
|
||||
..()
|
||||
for(var/i in 1 to 7)
|
||||
new /obj/item/ammo_casing/shotgun(src)
|
||||
|
||||
|
||||
/obj/item/weapon/storage/box/buck
|
||||
/obj/item/storage/box/buck
|
||||
name = "Ammunition Box (Buckshot)"
|
||||
desc = "A small box capable of holding seven shotgun shells."
|
||||
icon_state = "buckshotbox"
|
||||
|
||||
/obj/item/weapon/storage/box/buck/New()
|
||||
/obj/item/storage/box/buck/New()
|
||||
..()
|
||||
for(var/i in 1 to 7)
|
||||
new /obj/item/ammo_casing/shotgun/buckshot(src)
|
||||
|
||||
/obj/item/weapon/storage/box/dragonsbreath
|
||||
/obj/item/storage/box/dragonsbreath
|
||||
name = "Ammunition Box (Dragonsbreath)"
|
||||
desc = "A small box capable of holding seven shotgun shells."
|
||||
icon_state = "dragonsbreathbox"
|
||||
|
||||
/obj/item/weapon/storage/box/dragonsbreath/New()
|
||||
/obj/item/storage/box/dragonsbreath/New()
|
||||
..()
|
||||
for(var/i in 1 to 7)
|
||||
new /obj/item/ammo_casing/shotgun/incendiary/dragonsbreath(src)
|
||||
|
||||
/obj/item/weapon/storage/box/stun
|
||||
/obj/item/storage/box/stun
|
||||
name = "Ammunition Box (Stun shells)"
|
||||
desc = "A small box capable of holding seven shotgun shells."
|
||||
icon_state = "stunbox"
|
||||
|
||||
/obj/item/weapon/storage/box/stun/New()
|
||||
/obj/item/storage/box/stun/New()
|
||||
..()
|
||||
for(var/i in 1 to 7)
|
||||
new /obj/item/ammo_casing/shotgun/stunslug(src)
|
||||
|
||||
/obj/item/weapon/storage/box/beanbag
|
||||
/obj/item/storage/box/beanbag
|
||||
name = "Ammunition Box (Beanbag shells)"
|
||||
desc = "A small box capable of holding seven shotgun shells."
|
||||
icon_state = "beanbagbox"
|
||||
|
||||
/obj/item/weapon/storage/box/beanbag/New()
|
||||
/obj/item/storage/box/beanbag/New()
|
||||
..()
|
||||
for(var/i in 1 to 7)
|
||||
new /obj/item/ammo_casing/shotgun/beanbag(src)
|
||||
|
||||
/obj/item/weapon/storage/box/rubbershot
|
||||
/obj/item/storage/box/rubbershot
|
||||
name = "Ammunition Box (Rubbershot shells)"
|
||||
desc = "A small box capable of holding seven shotgun shells."
|
||||
icon_state = "rubbershotbox"
|
||||
|
||||
/obj/item/weapon/storage/box/rubbershot/New()
|
||||
/obj/item/storage/box/rubbershot/New()
|
||||
..()
|
||||
for(var/i in 1 to 7)
|
||||
new /obj/item/ammo_casing/shotgun/rubbershot(src)
|
||||
|
||||
/obj/item/weapon/storage/box/tranquilizer
|
||||
/obj/item/storage/box/tranquilizer
|
||||
name = "Ammunition Box (Tranquilizer darts)"
|
||||
desc = "A small box capable of holding seven shotgun shells."
|
||||
icon_state = "tranqbox"
|
||||
|
||||
/obj/item/weapon/storage/box/tranquilizer/New()
|
||||
/obj/item/storage/box/tranquilizer/New()
|
||||
..()
|
||||
for(var/i in 1 to 7)
|
||||
new /obj/item/ammo_casing/shotgun/tranquilizer(src)
|
||||
|
||||
/obj/item/weapon/storage/box/flashbangs
|
||||
/obj/item/storage/box/flashbangs
|
||||
name = "box of flashbangs (WARNING)"
|
||||
desc = "<B>WARNING: These devices are extremely dangerous and can cause blindness or deafness in repeated use.</B>"
|
||||
icon_state = "flashbang"
|
||||
|
||||
New()
|
||||
..()
|
||||
new /obj/item/weapon/grenade/flashbang(src)
|
||||
new /obj/item/weapon/grenade/flashbang(src)
|
||||
new /obj/item/weapon/grenade/flashbang(src)
|
||||
new /obj/item/weapon/grenade/flashbang(src)
|
||||
new /obj/item/weapon/grenade/flashbang(src)
|
||||
new /obj/item/weapon/grenade/flashbang(src)
|
||||
new /obj/item/weapon/grenade/flashbang(src)
|
||||
new /obj/item/grenade/flashbang(src)
|
||||
new /obj/item/grenade/flashbang(src)
|
||||
new /obj/item/grenade/flashbang(src)
|
||||
new /obj/item/grenade/flashbang(src)
|
||||
new /obj/item/grenade/flashbang(src)
|
||||
new /obj/item/grenade/flashbang(src)
|
||||
new /obj/item/grenade/flashbang(src)
|
||||
|
||||
/obj/item/weapon/storage/box/flashes
|
||||
/obj/item/storage/box/flashes
|
||||
name = "box of flashbulbs"
|
||||
desc = "<B>WARNING: Flashes can cause serious eye damage, protective eyewear is required.</B>"
|
||||
icon_state = "flashbang"
|
||||
@@ -263,95 +263,95 @@
|
||||
new /obj/item/device/flash(src)
|
||||
new /obj/item/device/flash(src)
|
||||
|
||||
/obj/item/weapon/storage/box/teargas
|
||||
/obj/item/storage/box/teargas
|
||||
name = "box of tear gas grenades (WARNING)"
|
||||
desc = "<B>WARNING: These devices are extremely dangerous and can cause blindness and skin irritation.</B>"
|
||||
icon_state = "flashbang"
|
||||
|
||||
/obj/item/weapon/storage/box/teargas/New()
|
||||
/obj/item/storage/box/teargas/New()
|
||||
..()
|
||||
new /obj/item/weapon/grenade/chem_grenade/teargas(src)
|
||||
new /obj/item/weapon/grenade/chem_grenade/teargas(src)
|
||||
new /obj/item/weapon/grenade/chem_grenade/teargas(src)
|
||||
new /obj/item/weapon/grenade/chem_grenade/teargas(src)
|
||||
new /obj/item/weapon/grenade/chem_grenade/teargas(src)
|
||||
new /obj/item/weapon/grenade/chem_grenade/teargas(src)
|
||||
new /obj/item/weapon/grenade/chem_grenade/teargas(src)
|
||||
new /obj/item/grenade/chem_grenade/teargas(src)
|
||||
new /obj/item/grenade/chem_grenade/teargas(src)
|
||||
new /obj/item/grenade/chem_grenade/teargas(src)
|
||||
new /obj/item/grenade/chem_grenade/teargas(src)
|
||||
new /obj/item/grenade/chem_grenade/teargas(src)
|
||||
new /obj/item/grenade/chem_grenade/teargas(src)
|
||||
new /obj/item/grenade/chem_grenade/teargas(src)
|
||||
|
||||
/obj/item/weapon/storage/box/emps
|
||||
/obj/item/storage/box/emps
|
||||
name = "emp grenades"
|
||||
desc = "A box with 5 emp grenades."
|
||||
icon_state = "flashbang"
|
||||
|
||||
New()
|
||||
..()
|
||||
new /obj/item/weapon/grenade/empgrenade(src)
|
||||
new /obj/item/weapon/grenade/empgrenade(src)
|
||||
new /obj/item/weapon/grenade/empgrenade(src)
|
||||
new /obj/item/weapon/grenade/empgrenade(src)
|
||||
new /obj/item/weapon/grenade/empgrenade(src)
|
||||
new /obj/item/grenade/empgrenade(src)
|
||||
new /obj/item/grenade/empgrenade(src)
|
||||
new /obj/item/grenade/empgrenade(src)
|
||||
new /obj/item/grenade/empgrenade(src)
|
||||
new /obj/item/grenade/empgrenade(src)
|
||||
|
||||
|
||||
/obj/item/weapon/storage/box/trackimp
|
||||
/obj/item/storage/box/trackimp
|
||||
name = "tracking implant kit"
|
||||
desc = "Box full of scum-bag tracking utensils."
|
||||
icon_state = "implant"
|
||||
|
||||
New()
|
||||
..()
|
||||
new /obj/item/weapon/implantcase/tracking(src)
|
||||
new /obj/item/weapon/implantcase/tracking(src)
|
||||
new /obj/item/weapon/implantcase/tracking(src)
|
||||
new /obj/item/weapon/implantcase/tracking(src)
|
||||
new /obj/item/weapon/implanter(src)
|
||||
new /obj/item/weapon/implantpad(src)
|
||||
new /obj/item/weapon/locator(src)
|
||||
new /obj/item/implantcase/tracking(src)
|
||||
new /obj/item/implantcase/tracking(src)
|
||||
new /obj/item/implantcase/tracking(src)
|
||||
new /obj/item/implantcase/tracking(src)
|
||||
new /obj/item/implanter(src)
|
||||
new /obj/item/implantpad(src)
|
||||
new /obj/item/locator(src)
|
||||
|
||||
/obj/item/weapon/storage/box/chemimp
|
||||
/obj/item/storage/box/chemimp
|
||||
name = "chemical implant kit"
|
||||
desc = "Box of stuff used to implant chemicals."
|
||||
icon_state = "implant"
|
||||
|
||||
New()
|
||||
..()
|
||||
new /obj/item/weapon/implantcase/chem(src)
|
||||
new /obj/item/weapon/implantcase/chem(src)
|
||||
new /obj/item/weapon/implantcase/chem(src)
|
||||
new /obj/item/weapon/implantcase/chem(src)
|
||||
new /obj/item/weapon/implantcase/chem(src)
|
||||
new /obj/item/weapon/implanter(src)
|
||||
new /obj/item/weapon/implantpad(src)
|
||||
new /obj/item/implantcase/chem(src)
|
||||
new /obj/item/implantcase/chem(src)
|
||||
new /obj/item/implantcase/chem(src)
|
||||
new /obj/item/implantcase/chem(src)
|
||||
new /obj/item/implantcase/chem(src)
|
||||
new /obj/item/implanter(src)
|
||||
new /obj/item/implantpad(src)
|
||||
|
||||
/obj/item/weapon/storage/box/exileimp
|
||||
/obj/item/storage/box/exileimp
|
||||
name = "boxed exile implant kit"
|
||||
desc = "Box of exile implants. It has a picture of a clown being booted through the Gateway."
|
||||
icon_state = "implant"
|
||||
|
||||
New()
|
||||
..()
|
||||
new /obj/item/weapon/implantcase/exile(src)
|
||||
new /obj/item/weapon/implantcase/exile(src)
|
||||
new /obj/item/weapon/implantcase/exile(src)
|
||||
new /obj/item/weapon/implantcase/exile(src)
|
||||
new /obj/item/weapon/implantcase/exile(src)
|
||||
new /obj/item/weapon/implanter(src)
|
||||
new /obj/item/implantcase/exile(src)
|
||||
new /obj/item/implantcase/exile(src)
|
||||
new /obj/item/implantcase/exile(src)
|
||||
new /obj/item/implantcase/exile(src)
|
||||
new /obj/item/implantcase/exile(src)
|
||||
new /obj/item/implanter(src)
|
||||
|
||||
/obj/item/weapon/storage/box/deathimp
|
||||
/obj/item/storage/box/deathimp
|
||||
name = "death alarm implant kit"
|
||||
desc = "Box of life sign monitoring implants."
|
||||
icon_state = "implant"
|
||||
|
||||
New()
|
||||
..()
|
||||
new /obj/item/weapon/implantcase/death_alarm(src)
|
||||
new /obj/item/weapon/implantcase/death_alarm(src)
|
||||
new /obj/item/weapon/implantcase/death_alarm(src)
|
||||
new /obj/item/weapon/implantcase/death_alarm(src)
|
||||
new /obj/item/weapon/implantcase/death_alarm(src)
|
||||
new /obj/item/weapon/implantcase/death_alarm(src)
|
||||
new /obj/item/weapon/implanter(src)
|
||||
new /obj/item/implantcase/death_alarm(src)
|
||||
new /obj/item/implantcase/death_alarm(src)
|
||||
new /obj/item/implantcase/death_alarm(src)
|
||||
new /obj/item/implantcase/death_alarm(src)
|
||||
new /obj/item/implantcase/death_alarm(src)
|
||||
new /obj/item/implantcase/death_alarm(src)
|
||||
new /obj/item/implanter(src)
|
||||
|
||||
/obj/item/weapon/storage/box/tapes
|
||||
/obj/item/storage/box/tapes
|
||||
name = "Tape Box"
|
||||
desc = "A box of spare recording tapes"
|
||||
icon_state = "box"
|
||||
@@ -365,7 +365,7 @@
|
||||
new /obj/item/device/tape(src)
|
||||
new /obj/item/device/tape(src)
|
||||
|
||||
/obj/item/weapon/storage/box/rxglasses
|
||||
/obj/item/storage/box/rxglasses
|
||||
name = "prescription glasses"
|
||||
desc = "This box contains nerd glasses."
|
||||
icon_state = "glasses"
|
||||
@@ -380,20 +380,20 @@
|
||||
new /obj/item/clothing/glasses/regular(src)
|
||||
new /obj/item/clothing/glasses/regular(src)
|
||||
|
||||
/obj/item/weapon/storage/box/drinkingglasses
|
||||
/obj/item/storage/box/drinkingglasses
|
||||
name = "box of drinking glasses"
|
||||
desc = "It has a picture of drinking glasses on it."
|
||||
|
||||
New()
|
||||
..()
|
||||
new /obj/item/weapon/reagent_containers/food/drinks/drinkingglass(src)
|
||||
new /obj/item/weapon/reagent_containers/food/drinks/drinkingglass(src)
|
||||
new /obj/item/weapon/reagent_containers/food/drinks/drinkingglass(src)
|
||||
new /obj/item/weapon/reagent_containers/food/drinks/drinkingglass(src)
|
||||
new /obj/item/weapon/reagent_containers/food/drinks/drinkingglass(src)
|
||||
new /obj/item/weapon/reagent_containers/food/drinks/drinkingglass(src)
|
||||
new /obj/item/reagent_containers/food/drinks/drinkingglass(src)
|
||||
new /obj/item/reagent_containers/food/drinks/drinkingglass(src)
|
||||
new /obj/item/reagent_containers/food/drinks/drinkingglass(src)
|
||||
new /obj/item/reagent_containers/food/drinks/drinkingglass(src)
|
||||
new /obj/item/reagent_containers/food/drinks/drinkingglass(src)
|
||||
new /obj/item/reagent_containers/food/drinks/drinkingglass(src)
|
||||
|
||||
/obj/item/weapon/storage/box/cdeathalarm_kit
|
||||
/obj/item/storage/box/cdeathalarm_kit
|
||||
name = "Death Alarm Kit"
|
||||
desc = "Box of stuff used to implant death alarms."
|
||||
icon_state = "implant"
|
||||
@@ -401,111 +401,111 @@
|
||||
|
||||
New()
|
||||
..()
|
||||
new /obj/item/weapon/implanter(src)
|
||||
new /obj/item/weapon/implantcase/death_alarm(src)
|
||||
new /obj/item/weapon/implantcase/death_alarm(src)
|
||||
new /obj/item/weapon/implantcase/death_alarm(src)
|
||||
new /obj/item/weapon/implantcase/death_alarm(src)
|
||||
new /obj/item/weapon/implantcase/death_alarm(src)
|
||||
new /obj/item/weapon/implantcase/death_alarm(src)
|
||||
new /obj/item/implanter(src)
|
||||
new /obj/item/implantcase/death_alarm(src)
|
||||
new /obj/item/implantcase/death_alarm(src)
|
||||
new /obj/item/implantcase/death_alarm(src)
|
||||
new /obj/item/implantcase/death_alarm(src)
|
||||
new /obj/item/implantcase/death_alarm(src)
|
||||
new /obj/item/implantcase/death_alarm(src)
|
||||
|
||||
/obj/item/weapon/storage/box/condimentbottles
|
||||
/obj/item/storage/box/condimentbottles
|
||||
name = "box of condiment bottles"
|
||||
desc = "It has a large ketchup smear on it."
|
||||
|
||||
New()
|
||||
..()
|
||||
new /obj/item/weapon/reagent_containers/food/condiment(src)
|
||||
new /obj/item/weapon/reagent_containers/food/condiment(src)
|
||||
new /obj/item/weapon/reagent_containers/food/condiment(src)
|
||||
new /obj/item/weapon/reagent_containers/food/condiment(src)
|
||||
new /obj/item/weapon/reagent_containers/food/condiment(src)
|
||||
new /obj/item/weapon/reagent_containers/food/condiment(src)
|
||||
new /obj/item/reagent_containers/food/condiment(src)
|
||||
new /obj/item/reagent_containers/food/condiment(src)
|
||||
new /obj/item/reagent_containers/food/condiment(src)
|
||||
new /obj/item/reagent_containers/food/condiment(src)
|
||||
new /obj/item/reagent_containers/food/condiment(src)
|
||||
new /obj/item/reagent_containers/food/condiment(src)
|
||||
|
||||
|
||||
|
||||
/obj/item/weapon/storage/box/cups
|
||||
/obj/item/storage/box/cups
|
||||
name = "box of paper cups"
|
||||
desc = "It has pictures of paper cups on the front."
|
||||
New()
|
||||
..()
|
||||
new /obj/item/weapon/reagent_containers/food/drinks/sillycup( src )
|
||||
new /obj/item/weapon/reagent_containers/food/drinks/sillycup( src )
|
||||
new /obj/item/weapon/reagent_containers/food/drinks/sillycup( src )
|
||||
new /obj/item/weapon/reagent_containers/food/drinks/sillycup( src )
|
||||
new /obj/item/weapon/reagent_containers/food/drinks/sillycup( src )
|
||||
new /obj/item/weapon/reagent_containers/food/drinks/sillycup( src )
|
||||
new /obj/item/weapon/reagent_containers/food/drinks/sillycup( src )
|
||||
new /obj/item/reagent_containers/food/drinks/sillycup( src )
|
||||
new /obj/item/reagent_containers/food/drinks/sillycup( src )
|
||||
new /obj/item/reagent_containers/food/drinks/sillycup( src )
|
||||
new /obj/item/reagent_containers/food/drinks/sillycup( src )
|
||||
new /obj/item/reagent_containers/food/drinks/sillycup( src )
|
||||
new /obj/item/reagent_containers/food/drinks/sillycup( src )
|
||||
new /obj/item/reagent_containers/food/drinks/sillycup( src )
|
||||
|
||||
|
||||
/obj/item/weapon/storage/box/donkpockets
|
||||
/obj/item/storage/box/donkpockets
|
||||
name = "box of donk-pockets"
|
||||
desc = "<B>Instructions:</B> <I>Heat in microwave. Product will cool if not eaten within seven minutes.</I>"
|
||||
icon_state = "donk_kit"
|
||||
|
||||
New()
|
||||
..()
|
||||
new /obj/item/weapon/reagent_containers/food/snacks/donkpocket(src)
|
||||
new /obj/item/weapon/reagent_containers/food/snacks/donkpocket(src)
|
||||
new /obj/item/weapon/reagent_containers/food/snacks/donkpocket(src)
|
||||
new /obj/item/weapon/reagent_containers/food/snacks/donkpocket(src)
|
||||
new /obj/item/weapon/reagent_containers/food/snacks/donkpocket(src)
|
||||
new /obj/item/weapon/reagent_containers/food/snacks/donkpocket(src)
|
||||
new /obj/item/reagent_containers/food/snacks/donkpocket(src)
|
||||
new /obj/item/reagent_containers/food/snacks/donkpocket(src)
|
||||
new /obj/item/reagent_containers/food/snacks/donkpocket(src)
|
||||
new /obj/item/reagent_containers/food/snacks/donkpocket(src)
|
||||
new /obj/item/reagent_containers/food/snacks/donkpocket(src)
|
||||
new /obj/item/reagent_containers/food/snacks/donkpocket(src)
|
||||
|
||||
/obj/item/weapon/storage/box/syndidonkpockets
|
||||
/obj/item/storage/box/syndidonkpockets
|
||||
name = "box of donk-pockets"
|
||||
desc = "This box feels slightly warm"
|
||||
icon_state = "donk_kit"
|
||||
|
||||
New()
|
||||
..()
|
||||
new /obj/item/weapon/reagent_containers/food/snacks/syndidonkpocket(src)
|
||||
new /obj/item/weapon/reagent_containers/food/snacks/syndidonkpocket(src)
|
||||
new /obj/item/weapon/reagent_containers/food/snacks/syndidonkpocket(src)
|
||||
new /obj/item/weapon/reagent_containers/food/snacks/syndidonkpocket(src)
|
||||
new /obj/item/weapon/reagent_containers/food/snacks/syndidonkpocket(src)
|
||||
new /obj/item/weapon/reagent_containers/food/snacks/syndidonkpocket(src)
|
||||
new /obj/item/reagent_containers/food/snacks/syndidonkpocket(src)
|
||||
new /obj/item/reagent_containers/food/snacks/syndidonkpocket(src)
|
||||
new /obj/item/reagent_containers/food/snacks/syndidonkpocket(src)
|
||||
new /obj/item/reagent_containers/food/snacks/syndidonkpocket(src)
|
||||
new /obj/item/reagent_containers/food/snacks/syndidonkpocket(src)
|
||||
new /obj/item/reagent_containers/food/snacks/syndidonkpocket(src)
|
||||
|
||||
/obj/item/weapon/storage/box/monkeycubes
|
||||
/obj/item/storage/box/monkeycubes
|
||||
name = "monkey cube box"
|
||||
desc = "Drymate brand monkey cubes. Just add water!"
|
||||
icon = 'icons/obj/food/food.dmi'
|
||||
icon_state = "monkeycubebox"
|
||||
storage_slots = 7
|
||||
can_hold = list(/obj/item/weapon/reagent_containers/food/snacks/monkeycube)
|
||||
var/monkey_cube_type = /obj/item/weapon/reagent_containers/food/snacks/monkeycube
|
||||
can_hold = list(/obj/item/reagent_containers/food/snacks/monkeycube)
|
||||
var/monkey_cube_type = /obj/item/reagent_containers/food/snacks/monkeycube
|
||||
|
||||
/obj/item/weapon/storage/box/monkeycubes/New()
|
||||
/obj/item/storage/box/monkeycubes/New()
|
||||
..()
|
||||
for(var/i in 1 to 5)
|
||||
new monkey_cube_type(src)
|
||||
|
||||
/obj/item/weapon/storage/box/monkeycubes/farwacubes
|
||||
/obj/item/storage/box/monkeycubes/farwacubes
|
||||
name = "farwa cube box"
|
||||
desc = "Drymate brand farwa cubes. Just add water!"
|
||||
monkey_cube_type = /obj/item/weapon/reagent_containers/food/snacks/monkeycube/farwacube
|
||||
monkey_cube_type = /obj/item/reagent_containers/food/snacks/monkeycube/farwacube
|
||||
|
||||
/obj/item/weapon/storage/box/monkeycubes/stokcubes
|
||||
/obj/item/storage/box/monkeycubes/stokcubes
|
||||
name = "stok cube box"
|
||||
desc = "Drymate brand stok cubes. Just add water!"
|
||||
monkey_cube_type = /obj/item/weapon/reagent_containers/food/snacks/monkeycube/stokcube
|
||||
monkey_cube_type = /obj/item/reagent_containers/food/snacks/monkeycube/stokcube
|
||||
|
||||
/obj/item/weapon/storage/box/monkeycubes/neaeracubes
|
||||
/obj/item/storage/box/monkeycubes/neaeracubes
|
||||
name = "neaera cube box"
|
||||
desc = "Drymate brand neaera cubes. Just add water!"
|
||||
monkey_cube_type = /obj/item/weapon/reagent_containers/food/snacks/monkeycube/neaeracube
|
||||
monkey_cube_type = /obj/item/reagent_containers/food/snacks/monkeycube/neaeracube
|
||||
|
||||
/obj/item/weapon/storage/box/monkeycubes/wolpincubes
|
||||
/obj/item/storage/box/monkeycubes/wolpincubes
|
||||
name = "wolpin cube box"
|
||||
desc = "Drymate brand wolpin cubes. Just add water!"
|
||||
monkey_cube_type = /obj/item/weapon/reagent_containers/food/snacks/monkeycube/wolpincube
|
||||
monkey_cube_type = /obj/item/reagent_containers/food/snacks/monkeycube/wolpincube
|
||||
|
||||
/obj/item/weapon/storage/box/permits
|
||||
/obj/item/storage/box/permits
|
||||
name = "box of construction permits"
|
||||
desc = "A box for containing construction permits, used to officially declare built rooms as additions to the station."
|
||||
icon_state = "id"
|
||||
|
||||
/obj/item/weapon/storage/box/permits/New()
|
||||
/obj/item/storage/box/permits/New()
|
||||
..()
|
||||
new /obj/item/areaeditor/permit(src)
|
||||
new /obj/item/areaeditor/permit(src)
|
||||
@@ -516,83 +516,83 @@
|
||||
new /obj/item/areaeditor/permit(src)
|
||||
|
||||
|
||||
/obj/item/weapon/storage/box/ids
|
||||
/obj/item/storage/box/ids
|
||||
name = "spare IDs"
|
||||
desc = "Has so many empty IDs."
|
||||
icon_state = "id"
|
||||
|
||||
New()
|
||||
..()
|
||||
new /obj/item/weapon/card/id(src)
|
||||
new /obj/item/weapon/card/id(src)
|
||||
new /obj/item/weapon/card/id(src)
|
||||
new /obj/item/weapon/card/id(src)
|
||||
new /obj/item/weapon/card/id(src)
|
||||
new /obj/item/weapon/card/id(src)
|
||||
new /obj/item/weapon/card/id(src)
|
||||
new /obj/item/card/id(src)
|
||||
new /obj/item/card/id(src)
|
||||
new /obj/item/card/id(src)
|
||||
new /obj/item/card/id(src)
|
||||
new /obj/item/card/id(src)
|
||||
new /obj/item/card/id(src)
|
||||
new /obj/item/card/id(src)
|
||||
|
||||
/obj/item/weapon/storage/box/prisoner
|
||||
/obj/item/storage/box/prisoner
|
||||
name = "prisoner IDs"
|
||||
desc = "Take away their last shred of dignity, their name."
|
||||
icon_state = "id"
|
||||
|
||||
New()
|
||||
..()
|
||||
new /obj/item/weapon/card/id/prisoner/one(src)
|
||||
new /obj/item/weapon/card/id/prisoner/two(src)
|
||||
new /obj/item/weapon/card/id/prisoner/three(src)
|
||||
new /obj/item/weapon/card/id/prisoner/four(src)
|
||||
new /obj/item/weapon/card/id/prisoner/five(src)
|
||||
new /obj/item/weapon/card/id/prisoner/six(src)
|
||||
new /obj/item/weapon/card/id/prisoner/seven(src)
|
||||
new /obj/item/card/id/prisoner/one(src)
|
||||
new /obj/item/card/id/prisoner/two(src)
|
||||
new /obj/item/card/id/prisoner/three(src)
|
||||
new /obj/item/card/id/prisoner/four(src)
|
||||
new /obj/item/card/id/prisoner/five(src)
|
||||
new /obj/item/card/id/prisoner/six(src)
|
||||
new /obj/item/card/id/prisoner/seven(src)
|
||||
|
||||
/obj/item/weapon/storage/box/seccarts
|
||||
/obj/item/storage/box/seccarts
|
||||
name = "spare R.O.B.U.S.T. Cartridges"
|
||||
desc = "A box full of R.O.B.U.S.T. Cartridges, used by Security."
|
||||
icon_state = "pda"
|
||||
|
||||
New()
|
||||
..()
|
||||
new /obj/item/weapon/cartridge/security(src)
|
||||
new /obj/item/weapon/cartridge/security(src)
|
||||
new /obj/item/weapon/cartridge/security(src)
|
||||
new /obj/item/weapon/cartridge/security(src)
|
||||
new /obj/item/weapon/cartridge/security(src)
|
||||
new /obj/item/weapon/cartridge/security(src)
|
||||
new /obj/item/weapon/cartridge/security(src)
|
||||
new /obj/item/cartridge/security(src)
|
||||
new /obj/item/cartridge/security(src)
|
||||
new /obj/item/cartridge/security(src)
|
||||
new /obj/item/cartridge/security(src)
|
||||
new /obj/item/cartridge/security(src)
|
||||
new /obj/item/cartridge/security(src)
|
||||
new /obj/item/cartridge/security(src)
|
||||
|
||||
|
||||
/obj/item/weapon/storage/box/handcuffs
|
||||
/obj/item/storage/box/handcuffs
|
||||
name = "spare handcuffs"
|
||||
desc = "A box full of handcuffs."
|
||||
icon_state = "handcuff"
|
||||
|
||||
New()
|
||||
..()
|
||||
new /obj/item/weapon/restraints/handcuffs(src)
|
||||
new /obj/item/weapon/restraints/handcuffs(src)
|
||||
new /obj/item/weapon/restraints/handcuffs(src)
|
||||
new /obj/item/weapon/restraints/handcuffs(src)
|
||||
new /obj/item/weapon/restraints/handcuffs(src)
|
||||
new /obj/item/weapon/restraints/handcuffs(src)
|
||||
new /obj/item/weapon/restraints/handcuffs(src)
|
||||
new /obj/item/restraints/handcuffs(src)
|
||||
new /obj/item/restraints/handcuffs(src)
|
||||
new /obj/item/restraints/handcuffs(src)
|
||||
new /obj/item/restraints/handcuffs(src)
|
||||
new /obj/item/restraints/handcuffs(src)
|
||||
new /obj/item/restraints/handcuffs(src)
|
||||
new /obj/item/restraints/handcuffs(src)
|
||||
|
||||
/obj/item/weapon/storage/box/zipties
|
||||
/obj/item/storage/box/zipties
|
||||
name = "box of spare zipties"
|
||||
desc = "A box full of zipties."
|
||||
icon_state = "handcuff"
|
||||
|
||||
New()
|
||||
..()
|
||||
new /obj/item/weapon/restraints/handcuffs/cable/zipties(src)
|
||||
new /obj/item/weapon/restraints/handcuffs/cable/zipties(src)
|
||||
new /obj/item/weapon/restraints/handcuffs/cable/zipties(src)
|
||||
new /obj/item/weapon/restraints/handcuffs/cable/zipties(src)
|
||||
new /obj/item/weapon/restraints/handcuffs/cable/zipties(src)
|
||||
new /obj/item/weapon/restraints/handcuffs/cable/zipties(src)
|
||||
new /obj/item/weapon/restraints/handcuffs/cable/zipties(src)
|
||||
new /obj/item/restraints/handcuffs/cable/zipties(src)
|
||||
new /obj/item/restraints/handcuffs/cable/zipties(src)
|
||||
new /obj/item/restraints/handcuffs/cable/zipties(src)
|
||||
new /obj/item/restraints/handcuffs/cable/zipties(src)
|
||||
new /obj/item/restraints/handcuffs/cable/zipties(src)
|
||||
new /obj/item/restraints/handcuffs/cable/zipties(src)
|
||||
new /obj/item/restraints/handcuffs/cable/zipties(src)
|
||||
|
||||
/obj/item/weapon/storage/box/alienhandcuffs
|
||||
/obj/item/storage/box/alienhandcuffs
|
||||
name = "box of spare handcuffs"
|
||||
desc = "A box full of handcuffs."
|
||||
icon_state = "alienboxCuffs"
|
||||
@@ -600,9 +600,9 @@
|
||||
New()
|
||||
..()
|
||||
for(var/i in 1 to 7)
|
||||
new /obj/item/weapon/restraints/handcuffs/alien(src)
|
||||
new /obj/item/restraints/handcuffs/alien(src)
|
||||
|
||||
/obj/item/weapon/storage/box/fakesyndiesuit
|
||||
/obj/item/storage/box/fakesyndiesuit
|
||||
name = "boxed space suit and helmet"
|
||||
desc = "A sleek, sturdy box used to hold replica spacesuits."
|
||||
icon_state = "box_of_doom"
|
||||
@@ -612,7 +612,7 @@
|
||||
new /obj/item/clothing/head/syndicatefake(src)
|
||||
new /obj/item/clothing/suit/syndicatefake(src)
|
||||
|
||||
/obj/item/weapon/storage/box/mousetraps
|
||||
/obj/item/storage/box/mousetraps
|
||||
name = "box of Pest-B-Gon mousetraps"
|
||||
desc = "<B><FONT color='red'>WARNING:</FONT></B> <I>Keep out of reach of children</I>."
|
||||
icon_state = "mousetraps"
|
||||
@@ -626,22 +626,22 @@
|
||||
new /obj/item/device/assembly/mousetrap( src )
|
||||
new /obj/item/device/assembly/mousetrap( src )
|
||||
|
||||
/obj/item/weapon/storage/box/pillbottles
|
||||
/obj/item/storage/box/pillbottles
|
||||
name = "box of pill bottles"
|
||||
desc = "It has pictures of pill bottles on its front."
|
||||
|
||||
New()
|
||||
..()
|
||||
new /obj/item/weapon/storage/pill_bottle( src )
|
||||
new /obj/item/weapon/storage/pill_bottle( src )
|
||||
new /obj/item/weapon/storage/pill_bottle( src )
|
||||
new /obj/item/weapon/storage/pill_bottle( src )
|
||||
new /obj/item/weapon/storage/pill_bottle( src )
|
||||
new /obj/item/weapon/storage/pill_bottle( src )
|
||||
new /obj/item/weapon/storage/pill_bottle( src )
|
||||
new /obj/item/storage/pill_bottle( src )
|
||||
new /obj/item/storage/pill_bottle( src )
|
||||
new /obj/item/storage/pill_bottle( src )
|
||||
new /obj/item/storage/pill_bottle( src )
|
||||
new /obj/item/storage/pill_bottle( src )
|
||||
new /obj/item/storage/pill_bottle( src )
|
||||
new /obj/item/storage/pill_bottle( src )
|
||||
|
||||
|
||||
/obj/item/weapon/storage/box/snappops
|
||||
/obj/item/storage/box/snappops
|
||||
name = "snap pop box"
|
||||
desc = "Eight wrappers of fun! Ages 8 and up. Not suitable for children."
|
||||
icon = 'icons/obj/toy.dmi'
|
||||
@@ -653,7 +653,7 @@
|
||||
for(var/i=1; i <= storage_slots; i++)
|
||||
new /obj/item/toy/snappop(src)
|
||||
|
||||
/obj/item/weapon/storage/box/matches
|
||||
/obj/item/storage/box/matches
|
||||
name = "matchbox"
|
||||
desc = "A small box of Almost But Not Quite Plasma Premium Matches."
|
||||
icon = 'icons/obj/cigarettes.dmi'
|
||||
@@ -663,42 +663,42 @@
|
||||
w_class = WEIGHT_CLASS_TINY
|
||||
max_w_class = WEIGHT_CLASS_TINY
|
||||
slot_flags = SLOT_BELT
|
||||
can_hold = list(/obj/item/weapon/match)
|
||||
can_hold = list(/obj/item/match)
|
||||
|
||||
/obj/item/weapon/storage/box/matches/New()
|
||||
/obj/item/storage/box/matches/New()
|
||||
..()
|
||||
for(var/i in 1 to storage_slots)
|
||||
new /obj/item/weapon/match(src)
|
||||
new /obj/item/match(src)
|
||||
|
||||
/obj/item/weapon/storage/box/matches/attackby(obj/item/weapon/match/W, mob/user, params)
|
||||
if(istype(W, /obj/item/weapon/match) && !W.lit)
|
||||
/obj/item/storage/box/matches/attackby(obj/item/match/W, mob/user, params)
|
||||
if(istype(W, /obj/item/match) && !W.lit)
|
||||
W.matchignite()
|
||||
playsound(user.loc, 'sound/goonstation/misc/matchstick_light.ogg', 50, 1)
|
||||
return
|
||||
|
||||
/obj/item/weapon/storage/box/autoinjectors
|
||||
/obj/item/storage/box/autoinjectors
|
||||
name = "box of injectors"
|
||||
desc = "Contains autoinjectors."
|
||||
icon_state = "syringe"
|
||||
New()
|
||||
..()
|
||||
for(var/i; i < storage_slots; i++)
|
||||
new /obj/item/weapon/reagent_containers/hypospray/autoinjector(src)
|
||||
new /obj/item/reagent_containers/hypospray/autoinjector(src)
|
||||
|
||||
/obj/item/weapon/storage/box/autoinjector/utility
|
||||
/obj/item/storage/box/autoinjector/utility
|
||||
name = "autoinjector kit"
|
||||
desc = "A box with several utility autoinjectors for the economical miner."
|
||||
icon_state = "syringe"
|
||||
|
||||
New()
|
||||
..()
|
||||
new /obj/item/weapon/reagent_containers/hypospray/autoinjector/teporone(src)
|
||||
new /obj/item/weapon/reagent_containers/hypospray/autoinjector/teporone(src)
|
||||
new /obj/item/weapon/reagent_containers/hypospray/autoinjector/stimpack(src)
|
||||
new /obj/item/weapon/reagent_containers/hypospray/autoinjector/stimpack(src)
|
||||
new /obj/item/weapon/reagent_containers/hypospray/autoinjector/stimpack(src)
|
||||
new /obj/item/reagent_containers/hypospray/autoinjector/teporone(src)
|
||||
new /obj/item/reagent_containers/hypospray/autoinjector/teporone(src)
|
||||
new /obj/item/reagent_containers/hypospray/autoinjector/stimpack(src)
|
||||
new /obj/item/reagent_containers/hypospray/autoinjector/stimpack(src)
|
||||
new /obj/item/reagent_containers/hypospray/autoinjector/stimpack(src)
|
||||
|
||||
/obj/item/weapon/storage/box/lights
|
||||
/obj/item/storage/box/lights
|
||||
name = "replacement bulbs"
|
||||
icon = 'icons/obj/storage.dmi'
|
||||
icon_state = "light"
|
||||
@@ -706,64 +706,64 @@
|
||||
item_state = "syringe_kit"
|
||||
foldable = /obj/item/stack/sheet/cardboard
|
||||
storage_slots=21
|
||||
can_hold = list(/obj/item/weapon/light/tube, /obj/item/weapon/light/bulb)
|
||||
can_hold = list(/obj/item/light/tube, /obj/item/light/bulb)
|
||||
max_combined_w_class = 21
|
||||
use_to_pickup = 1 // for picking up broken bulbs, not that most people will try
|
||||
|
||||
/obj/item/weapon/storage/box/lights/bulbs/New()
|
||||
/obj/item/storage/box/lights/bulbs/New()
|
||||
..()
|
||||
for(var/i = 0; i < 21; i++)
|
||||
new /obj/item/weapon/light/bulb(src)
|
||||
new /obj/item/light/bulb(src)
|
||||
|
||||
/obj/item/weapon/storage/box/lights/tubes
|
||||
/obj/item/storage/box/lights/tubes
|
||||
name = "replacement tubes"
|
||||
icon_state = "lighttube"
|
||||
|
||||
/obj/item/weapon/storage/box/lights/tubes/New()
|
||||
/obj/item/storage/box/lights/tubes/New()
|
||||
..()
|
||||
for(var/i = 0; i < 21; i++)
|
||||
new /obj/item/weapon/light/tube(src)
|
||||
new /obj/item/light/tube(src)
|
||||
|
||||
/obj/item/weapon/storage/box/lights/mixed
|
||||
/obj/item/storage/box/lights/mixed
|
||||
name = "replacement lights"
|
||||
icon_state = "lightmixed"
|
||||
|
||||
/obj/item/weapon/storage/box/lights/mixed/New()
|
||||
/obj/item/storage/box/lights/mixed/New()
|
||||
..()
|
||||
for(var/i = 0; i < 14; i++)
|
||||
new /obj/item/weapon/light/tube(src)
|
||||
new /obj/item/light/tube(src)
|
||||
for(var/i = 0; i < 7; i++)
|
||||
new /obj/item/weapon/light/bulb(src)
|
||||
new /obj/item/light/bulb(src)
|
||||
|
||||
/obj/item/weapon/storage/box/barber
|
||||
/obj/item/storage/box/barber
|
||||
name = "Barber Starter Kit"
|
||||
desc = "For all hairstyling needs."
|
||||
icon_state = "implant"
|
||||
|
||||
/obj/item/weapon/storage/box/barber/New()
|
||||
/obj/item/storage/box/barber/New()
|
||||
..()
|
||||
new /obj/item/weapon/scissors/barber(src)
|
||||
new /obj/item/scissors/barber(src)
|
||||
new /obj/item/hair_dye_bottle(src)
|
||||
new /obj/item/weapon/reagent_containers/glass/bottle/reagent/hairgrownium(src)
|
||||
new /obj/item/weapon/reagent_containers/glass/bottle/reagent/hair_dye(src)
|
||||
new /obj/item/weapon/reagent_containers/glass/bottle/reagent(src)
|
||||
new /obj/item/weapon/reagent_containers/dropper(src)
|
||||
new /obj/item/reagent_containers/glass/bottle/reagent/hairgrownium(src)
|
||||
new /obj/item/reagent_containers/glass/bottle/reagent/hair_dye(src)
|
||||
new /obj/item/reagent_containers/glass/bottle/reagent(src)
|
||||
new /obj/item/reagent_containers/dropper(src)
|
||||
new /obj/item/clothing/mask/fakemoustache(src) //totally necessary for successful barbering -Fox
|
||||
|
||||
/obj/item/weapon/storage/box/lip_stick
|
||||
/obj/item/storage/box/lip_stick
|
||||
name = "Lipstick Kit"
|
||||
desc = "For all your lip coloring needs."
|
||||
icon_state = "implant"
|
||||
|
||||
/obj/item/weapon/storage/box/lip_stick/New()
|
||||
/obj/item/storage/box/lip_stick/New()
|
||||
..()
|
||||
new /obj/item/weapon/lipstick(src)
|
||||
new /obj/item/weapon/lipstick/purple(src)
|
||||
new /obj/item/weapon/lipstick/jade(src)
|
||||
new /obj/item/weapon/lipstick/black(src)
|
||||
new /obj/item/weapon/lipstick/green(src)
|
||||
new /obj/item/weapon/lipstick/blue(src)
|
||||
new /obj/item/weapon/lipstick/white(src)
|
||||
new /obj/item/lipstick(src)
|
||||
new /obj/item/lipstick/purple(src)
|
||||
new /obj/item/lipstick/jade(src)
|
||||
new /obj/item/lipstick/black(src)
|
||||
new /obj/item/lipstick/green(src)
|
||||
new /obj/item/lipstick/blue(src)
|
||||
new /obj/item/lipstick/white(src)
|
||||
|
||||
#define NODESIGN "None"
|
||||
#define NANOTRASEN "NanotrasenStandard"
|
||||
@@ -771,7 +771,7 @@
|
||||
#define HEART "Heart"
|
||||
#define SMILE "SmileyFace"
|
||||
|
||||
/obj/item/weapon/storage/box/papersack
|
||||
/obj/item/storage/box/papersack
|
||||
name = "paper sack"
|
||||
desc = "A sack neatly crafted out of paper."
|
||||
icon_state = "paperbag_None"
|
||||
@@ -779,13 +779,13 @@
|
||||
foldable = null
|
||||
var/design = NODESIGN
|
||||
|
||||
/obj/item/weapon/storage/box/papersack/update_icon()
|
||||
/obj/item/storage/box/papersack/update_icon()
|
||||
if(!contents.len)
|
||||
icon_state = "[item_state]"
|
||||
else icon_state = "[item_state]_closed"
|
||||
|
||||
/obj/item/weapon/storage/box/papersack/attackby(obj/item/weapon/W, mob/user, params)
|
||||
if(istype(W, /obj/item/weapon/pen))
|
||||
/obj/item/storage/box/papersack/attackby(obj/item/W, mob/user, params)
|
||||
if(istype(W, /obj/item/pen))
|
||||
//if a pen is used on the sack, dialogue to change its design appears
|
||||
if(contents.len)
|
||||
to_chat(user, "<span class='warning'>You can't modify [src] with items still inside!</span>")
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/obj/item/weapon/storage/briefcase
|
||||
/obj/item/storage/briefcase
|
||||
name = "briefcase"
|
||||
desc = "It's made of AUTHENTIC faux-leather and has a price-tag still attached. Its owner must be a real professional."
|
||||
icon_state = "briefcase"
|
||||
@@ -15,5 +15,5 @@
|
||||
burn_state = FLAMMABLE
|
||||
burntime = 20
|
||||
|
||||
/obj/item/weapon/storage/briefcase/New()
|
||||
/obj/item/storage/briefcase/New()
|
||||
..()
|
||||
|
||||
@@ -13,19 +13,19 @@
|
||||
* Cigarette Box
|
||||
*/
|
||||
|
||||
/obj/item/weapon/storage/fancy/
|
||||
/obj/item/storage/fancy/
|
||||
icon = 'icons/obj/food/food.dmi'
|
||||
icon_state = "donutbox6"
|
||||
name = "donut box"
|
||||
burn_state = FLAMMABLE
|
||||
var/icon_type = "donut"
|
||||
|
||||
/obj/item/weapon/storage/fancy/update_icon(var/itemremoved = 0)
|
||||
/obj/item/storage/fancy/update_icon(var/itemremoved = 0)
|
||||
var/total_contents = src.contents.len - itemremoved
|
||||
src.icon_state = "[src.icon_type]box[total_contents]"
|
||||
return
|
||||
|
||||
/obj/item/weapon/storage/fancy/examine(mob/user)
|
||||
/obj/item/storage/fancy/examine(mob/user)
|
||||
if(!..(user, 1))
|
||||
return
|
||||
|
||||
@@ -42,43 +42,43 @@
|
||||
* Donut Box
|
||||
*/
|
||||
|
||||
/obj/item/weapon/storage/fancy/donut_box
|
||||
/obj/item/storage/fancy/donut_box
|
||||
icon = 'icons/obj/food/food.dmi'
|
||||
icon_state = "donutbox6"
|
||||
icon_type = "donut"
|
||||
name = "donut box"
|
||||
storage_slots = 6
|
||||
can_hold = list(/obj/item/weapon/reagent_containers/food/snacks/donut)
|
||||
can_hold = list(/obj/item/reagent_containers/food/snacks/donut)
|
||||
|
||||
|
||||
/obj/item/weapon/storage/fancy/donut_box/New()
|
||||
/obj/item/storage/fancy/donut_box/New()
|
||||
..()
|
||||
for(var/i = 1 to storage_slots)
|
||||
new /obj/item/weapon/reagent_containers/food/snacks/donut(src)
|
||||
new /obj/item/reagent_containers/food/snacks/donut(src)
|
||||
|
||||
/*
|
||||
* Egg Box
|
||||
*/
|
||||
|
||||
/obj/item/weapon/storage/fancy/egg_box
|
||||
/obj/item/storage/fancy/egg_box
|
||||
icon = 'icons/obj/food/food.dmi'
|
||||
icon_state = "eggbox"
|
||||
icon_type = "egg"
|
||||
name = "egg box"
|
||||
storage_slots = 12
|
||||
can_hold = list(/obj/item/weapon/reagent_containers/food/snacks/egg)
|
||||
can_hold = list(/obj/item/reagent_containers/food/snacks/egg)
|
||||
|
||||
/obj/item/weapon/storage/fancy/egg_box/New()
|
||||
/obj/item/storage/fancy/egg_box/New()
|
||||
..()
|
||||
for(var/i=1; i <= storage_slots; i++)
|
||||
new /obj/item/weapon/reagent_containers/food/snacks/egg(src)
|
||||
new /obj/item/reagent_containers/food/snacks/egg(src)
|
||||
return
|
||||
|
||||
/*
|
||||
* Candle Box
|
||||
*/
|
||||
|
||||
/obj/item/weapon/storage/fancy/candle_box
|
||||
/obj/item/storage/fancy/candle_box
|
||||
name = "Candle pack"
|
||||
desc = "A pack of red candles."
|
||||
icon = 'icons/obj/candle.dmi'
|
||||
@@ -90,17 +90,17 @@
|
||||
slot_flags = SLOT_BELT
|
||||
|
||||
|
||||
/obj/item/weapon/storage/fancy/candle_box/full/New()
|
||||
/obj/item/storage/fancy/candle_box/full/New()
|
||||
..()
|
||||
for(var/i=1; i <= storage_slots; i++)
|
||||
new /obj/item/candle(src)
|
||||
return
|
||||
|
||||
/obj/item/weapon/storage/fancy/candle_box/eternal
|
||||
/obj/item/storage/fancy/candle_box/eternal
|
||||
name = "Eternal Candle pack"
|
||||
desc = "A pack of red candles made with a special wax."
|
||||
|
||||
/obj/item/weapon/storage/fancy/candle_box/eternal/New()
|
||||
/obj/item/storage/fancy/candle_box/eternal/New()
|
||||
..()
|
||||
for(var/i=1; i <= storage_slots; i++)
|
||||
new /obj/item/candle/eternal(src)
|
||||
@@ -110,7 +110,7 @@
|
||||
* Crayon Box
|
||||
*/
|
||||
|
||||
/obj/item/weapon/storage/fancy/crayons
|
||||
/obj/item/storage/fancy/crayons
|
||||
name = "box of crayons"
|
||||
desc = "A box of crayons for all your rune drawing needs."
|
||||
icon = 'icons/obj/crayons.dmi'
|
||||
@@ -122,7 +122,7 @@
|
||||
/obj/item/toy/crayon
|
||||
)
|
||||
|
||||
/obj/item/weapon/storage/fancy/crayons/New()
|
||||
/obj/item/storage/fancy/crayons/New()
|
||||
..()
|
||||
new /obj/item/toy/crayon/red(src)
|
||||
new /obj/item/toy/crayon/orange(src)
|
||||
@@ -132,13 +132,13 @@
|
||||
new /obj/item/toy/crayon/purple(src)
|
||||
update_icon()
|
||||
|
||||
/obj/item/weapon/storage/fancy/crayons/update_icon()
|
||||
/obj/item/storage/fancy/crayons/update_icon()
|
||||
overlays = list() //resets list
|
||||
overlays += image('icons/obj/crayons.dmi',"crayonbox")
|
||||
for(var/obj/item/toy/crayon/crayon in contents)
|
||||
overlays += image('icons/obj/crayons.dmi',crayon.colourName)
|
||||
|
||||
/obj/item/weapon/storage/fancy/crayons/attackby(obj/item/W as obj, mob/user as mob, params)
|
||||
/obj/item/storage/fancy/crayons/attackby(obj/item/W as obj, mob/user as mob, params)
|
||||
if(istype(W,/obj/item/toy/crayon))
|
||||
switch(W:colourName)
|
||||
if("mime")
|
||||
@@ -152,7 +152,7 @@
|
||||
////////////
|
||||
//CIG PACK//
|
||||
////////////
|
||||
/obj/item/weapon/storage/fancy/cigarettes
|
||||
/obj/item/storage/fancy/cigarettes
|
||||
name = "cigarette packet"
|
||||
desc = "The most popular brand of Space Cigarettes, sponsors of the Space Olympics."
|
||||
icon = 'icons/obj/cigarettes.dmi'
|
||||
@@ -164,17 +164,17 @@
|
||||
storage_slots = 6
|
||||
max_combined_w_class = 6
|
||||
can_hold = list(/obj/item/clothing/mask/cigarette,
|
||||
/obj/item/weapon/lighter,
|
||||
/obj/item/weapon/match)
|
||||
/obj/item/lighter,
|
||||
/obj/item/match)
|
||||
cant_hold = list(/obj/item/clothing/mask/cigarette/cigar,
|
||||
/obj/item/clothing/mask/cigarette/pipe,
|
||||
/obj/item/weapon/lighter/zippo)
|
||||
/obj/item/lighter/zippo)
|
||||
icon_type = "cigarette"
|
||||
var/list/unlaced_cigarettes = list() // Cigarettes that haven't received reagents yet
|
||||
var/default_reagents = list("nicotine" = 15) // List of reagents to pre-generate for each cigarette
|
||||
var/cigarette_type = /obj/item/clothing/mask/cigarette
|
||||
|
||||
/obj/item/weapon/storage/fancy/cigarettes/New()
|
||||
/obj/item/storage/fancy/cigarettes/New()
|
||||
..()
|
||||
create_reagents(30 * storage_slots)//so people can inject cigarettes without opening a packet, now with being able to inject the whole one
|
||||
reagents.set_reacting(FALSE)
|
||||
@@ -185,26 +185,26 @@
|
||||
reagents.add_reagent(R, default_reagents[R])
|
||||
|
||||
|
||||
/obj/item/weapon/storage/fancy/cigarettes/Destroy()
|
||||
/obj/item/storage/fancy/cigarettes/Destroy()
|
||||
QDEL_NULL(reagents)
|
||||
return ..()
|
||||
|
||||
|
||||
/obj/item/weapon/storage/fancy/cigarettes/update_icon()
|
||||
/obj/item/storage/fancy/cigarettes/update_icon()
|
||||
icon_state = "[initial(icon_state)][contents.len]"
|
||||
return
|
||||
|
||||
/obj/item/weapon/storage/fancy/cigarettes/proc/lace_cigarette(var/obj/item/clothing/mask/cigarette/C as obj)
|
||||
/obj/item/storage/fancy/cigarettes/proc/lace_cigarette(var/obj/item/clothing/mask/cigarette/C as obj)
|
||||
if(istype(C) && (C in unlaced_cigarettes)) // Only transfer reagents to each cigarette once
|
||||
reagents.trans_to(C, (reagents.total_volume/unlaced_cigarettes.len))
|
||||
unlaced_cigarettes -= C
|
||||
reagents.maximum_volume = 30 * unlaced_cigarettes.len
|
||||
|
||||
/obj/item/weapon/storage/fancy/cigarettes/remove_from_storage(obj/item/W as obj, atom/new_location)
|
||||
/obj/item/storage/fancy/cigarettes/remove_from_storage(obj/item/W as obj, atom/new_location)
|
||||
lace_cigarette(W)
|
||||
..()
|
||||
|
||||
/obj/item/weapon/storage/fancy/cigarettes/attack(mob/living/carbon/M as mob, mob/living/carbon/user as mob)
|
||||
/obj/item/storage/fancy/cigarettes/attack(mob/living/carbon/M as mob, mob/living/carbon/user as mob)
|
||||
if(!istype(M, /mob))
|
||||
return
|
||||
|
||||
@@ -225,15 +225,15 @@
|
||||
else
|
||||
..()
|
||||
|
||||
/obj/item/weapon/storage/fancy/cigarettes/can_be_inserted(obj/item/W as obj, stop_messages = 0)
|
||||
if(istype(W, /obj/item/weapon/match))
|
||||
var/obj/item/weapon/match/M = W
|
||||
/obj/item/storage/fancy/cigarettes/can_be_inserted(obj/item/W as obj, stop_messages = 0)
|
||||
if(istype(W, /obj/item/match))
|
||||
var/obj/item/match/M = W
|
||||
if(M.lit == 1)
|
||||
if(!stop_messages)
|
||||
to_chat(usr, "<span class='notice'>Putting a lit [W] in [src] probably isn't a good idea.</span>")
|
||||
return 0
|
||||
if(istype(W, /obj/item/weapon/lighter))
|
||||
var/obj/item/weapon/lighter/L = W
|
||||
if(istype(W, /obj/item/lighter))
|
||||
var/obj/item/lighter/L = W
|
||||
if(L.lit == 1)
|
||||
if(!stop_messages)
|
||||
to_chat(usr, "<span class='notice'>Putting [W] in [src] while lit probably isn't a good idea.</span>")
|
||||
@@ -241,70 +241,70 @@
|
||||
//if we get this far, handle the insertion checks as normal
|
||||
.=..()
|
||||
|
||||
/obj/item/weapon/storage/fancy/cigarettes/dromedaryco
|
||||
/obj/item/storage/fancy/cigarettes/dromedaryco
|
||||
name = "\improper DromedaryCo packet"
|
||||
desc = "A packet of six imported DromedaryCo cancer sticks. A label on the packaging reads, \"Wouldn't a slow death make a change?\""
|
||||
icon_state = "Dpacket"
|
||||
item_state = "cigpacket"
|
||||
|
||||
|
||||
/obj/item/weapon/storage/fancy/cigarettes/syndicate
|
||||
/obj/item/storage/fancy/cigarettes/syndicate
|
||||
name = "\improper Syndicate Cigarettes"
|
||||
desc = "A packet of six evil-looking cigarettes, A label on the packaging reads, \"Donk Co\""
|
||||
icon_state = "robustpacket"
|
||||
item_state = "cigpacket"
|
||||
|
||||
/obj/item/weapon/storage/fancy/cigarettes/syndicate/New()
|
||||
/obj/item/storage/fancy/cigarettes/syndicate/New()
|
||||
..()
|
||||
var/new_name = pick("evil", "suspicious", "ominous", "donk-flavored", "robust", "sneaky")
|
||||
name = "[new_name] cigarette packet"
|
||||
|
||||
/obj/item/weapon/storage/fancy/cigarettes/cigpack_syndicate
|
||||
/obj/item/storage/fancy/cigarettes/cigpack_syndicate
|
||||
name = "cigarette packet"
|
||||
desc = "An obscure brand of cigarettes."
|
||||
icon_state = "syndiepacket"
|
||||
item_state = "cigpacket"
|
||||
default_reagents = list("nicotine" = 15, "omnizine" = 15)
|
||||
|
||||
/obj/item/weapon/storage/fancy/cigarettes/cigpack_med
|
||||
/obj/item/storage/fancy/cigarettes/cigpack_med
|
||||
name = "Medical Marijuana Packet"
|
||||
desc = "A prescription packet containing six marijuana cigarettes."
|
||||
icon_state = "medpacket"
|
||||
item_state = "cigpacket"
|
||||
default_reagents = list("thc" = 15)
|
||||
|
||||
/obj/item/weapon/storage/fancy/cigarettes/cigpack_uplift
|
||||
/obj/item/storage/fancy/cigarettes/cigpack_uplift
|
||||
name = "\improper Uplift Smooth packet"
|
||||
desc = "Your favorite brand, now menthol flavored."
|
||||
icon_state = "upliftpacket"
|
||||
item_state = "cigpacket"
|
||||
|
||||
/obj/item/weapon/storage/fancy/cigarettes/cigpack_robust
|
||||
/obj/item/storage/fancy/cigarettes/cigpack_robust
|
||||
name = "\improper Robust packet"
|
||||
desc = "Smoked by the robust."
|
||||
icon_state = "robustpacket"
|
||||
item_state = "cigpacket"
|
||||
|
||||
/obj/item/weapon/storage/fancy/cigarettes/cigpack_robustgold
|
||||
/obj/item/storage/fancy/cigarettes/cigpack_robustgold
|
||||
name = "\improper Robust Gold packet"
|
||||
desc = "Smoked by the truly robust."
|
||||
icon_state = "robustgpacket"
|
||||
item_state = "cigpacket"
|
||||
default_reagents = list("nicotine" = 15, "gold" = 1)
|
||||
|
||||
/obj/item/weapon/storage/fancy/cigarettes/cigpack_carp
|
||||
/obj/item/storage/fancy/cigarettes/cigpack_carp
|
||||
name = "\improper Carp Classic packet"
|
||||
desc = "Since 2313."
|
||||
icon_state = "carppacket"
|
||||
item_state = "cigpacket"
|
||||
|
||||
/obj/item/weapon/storage/fancy/cigarettes/cigpack_midori
|
||||
/obj/item/storage/fancy/cigarettes/cigpack_midori
|
||||
name = "\improper Midori Tabako packet"
|
||||
desc = "You can't understand the runes, but the packet smells funny."
|
||||
icon_state = "midoripacket"
|
||||
item_state = "cigpacket"
|
||||
|
||||
/obj/item/weapon/storage/fancy/cigarettes/cigpack_shadyjims
|
||||
/obj/item/storage/fancy/cigarettes/cigpack_shadyjims
|
||||
name ="\improper Shady Jim's Super Slims"
|
||||
desc = "Is your weight slowing you down? Having trouble running away from gravitational singularities? Can't stop stuffing your mouth? Smoke Shady Jim's Super Slims and watch all that fat burn away. Guaranteed results!"
|
||||
icon_state = "shadyjimpacket"
|
||||
@@ -315,14 +315,14 @@
|
||||
"atrazine" = 1,
|
||||
"toxin" = 1.5)
|
||||
|
||||
/obj/item/weapon/storage/fancy/cigarettes/cigpack_random
|
||||
/obj/item/storage/fancy/cigarettes/cigpack_random
|
||||
name ="\improper Embellished Enigma packet"
|
||||
desc = "For the true connoisseur of exotic flavors."
|
||||
icon_state = "shadyjimpacket"
|
||||
item_state = "cigpacket"
|
||||
cigarette_type = /obj/item/clothing/mask/cigarette/random
|
||||
|
||||
/obj/item/weapon/storage/fancy/rollingpapers
|
||||
/obj/item/storage/fancy/rollingpapers
|
||||
name = "rolling paper pack"
|
||||
desc = "A pack of Nanotrasen brand rolling papers."
|
||||
w_class = WEIGHT_CLASS_TINY
|
||||
@@ -330,14 +330,14 @@
|
||||
icon_state = "cig_paper_pack"
|
||||
storage_slots = 10
|
||||
icon_type = "rolling paper"
|
||||
can_hold = list(/obj/item/weapon/rollingpaper)
|
||||
can_hold = list(/obj/item/rollingpaper)
|
||||
|
||||
/obj/item/weapon/storage/fancy/rollingpapers/New()
|
||||
/obj/item/storage/fancy/rollingpapers/New()
|
||||
..()
|
||||
for(var/i in 1 to storage_slots)
|
||||
new /obj/item/weapon/rollingpaper(src)
|
||||
new /obj/item/rollingpaper(src)
|
||||
|
||||
/obj/item/weapon/storage/fancy/rollingpapers/update_icon()
|
||||
/obj/item/storage/fancy/rollingpapers/update_icon()
|
||||
overlays.Cut()
|
||||
if(!contents.len)
|
||||
overlays += "[icon_state]_empty"
|
||||
@@ -346,38 +346,38 @@
|
||||
* Vial Box
|
||||
*/
|
||||
|
||||
/obj/item/weapon/storage/fancy/vials
|
||||
/obj/item/storage/fancy/vials
|
||||
icon = 'icons/obj/vialbox.dmi'
|
||||
icon_state = "vialbox6"
|
||||
icon_type = "vial"
|
||||
name = "vial storage box"
|
||||
storage_slots = 6
|
||||
can_hold = list(/obj/item/weapon/reagent_containers/glass/beaker/vial)
|
||||
can_hold = list(/obj/item/reagent_containers/glass/beaker/vial)
|
||||
|
||||
|
||||
/obj/item/weapon/storage/fancy/vials/New()
|
||||
/obj/item/storage/fancy/vials/New()
|
||||
..()
|
||||
for(var/i=1; i <= storage_slots; i++)
|
||||
new /obj/item/weapon/reagent_containers/glass/beaker/vial(src)
|
||||
new /obj/item/reagent_containers/glass/beaker/vial(src)
|
||||
return
|
||||
|
||||
/obj/item/weapon/storage/lockbox/vials
|
||||
/obj/item/storage/lockbox/vials
|
||||
name = "secure vial storage box"
|
||||
desc = "A locked box for keeping things away from children."
|
||||
icon = 'icons/obj/vialbox.dmi'
|
||||
icon_state = "vialbox0"
|
||||
item_state = "syringe_kit"
|
||||
max_w_class = WEIGHT_CLASS_NORMAL
|
||||
can_hold = list(/obj/item/weapon/reagent_containers/glass/beaker/vial)
|
||||
can_hold = list(/obj/item/reagent_containers/glass/beaker/vial)
|
||||
max_combined_w_class = 14 //The sum of the w_classes of all the items in this storage item.
|
||||
storage_slots = 6
|
||||
req_access = list(access_virology)
|
||||
|
||||
/obj/item/weapon/storage/lockbox/vials/New()
|
||||
/obj/item/storage/lockbox/vials/New()
|
||||
..()
|
||||
update_icon()
|
||||
|
||||
/obj/item/weapon/storage/lockbox/vials/update_icon(var/itemremoved = 0)
|
||||
/obj/item/storage/lockbox/vials/update_icon(var/itemremoved = 0)
|
||||
var/total_contents = src.contents.len - itemremoved
|
||||
src.icon_state = "vialbox[total_contents]"
|
||||
src.overlays.Cut()
|
||||
@@ -389,7 +389,7 @@
|
||||
overlays += image(icon, src, "ledb")
|
||||
return
|
||||
|
||||
/obj/item/weapon/storage/lockbox/vials/attackby(obj/item/weapon/W as obj, mob/user as mob, params)
|
||||
/obj/item/storage/lockbox/vials/attackby(obj/item/W as obj, mob/user as mob, params)
|
||||
..()
|
||||
update_icon()
|
||||
|
||||
@@ -397,19 +397,19 @@
|
||||
|
||||
///Aquatic Starter Kit
|
||||
|
||||
/obj/item/weapon/storage/firstaid/aquatic_kit
|
||||
/obj/item/storage/firstaid/aquatic_kit
|
||||
name = "aquatic starter kit"
|
||||
desc = "It's a starter kit box for an aquarium."
|
||||
icon_state = "AquaticKit"
|
||||
throw_speed = 2
|
||||
throw_range = 8
|
||||
|
||||
/obj/item/weapon/storage/firstaid/aquatic_kit/full
|
||||
/obj/item/storage/firstaid/aquatic_kit/full
|
||||
desc = "It's a starter kit for an acquarium; includes 1 tank brush, 1 egg scoop, 1 fish net, and 1 container of fish food."
|
||||
|
||||
/obj/item/weapon/storage/firstaid/aquatic_kit/full/New()
|
||||
/obj/item/storage/firstaid/aquatic_kit/full/New()
|
||||
..()
|
||||
new /obj/item/weapon/egg_scoop(src)
|
||||
new /obj/item/weapon/fish_net(src)
|
||||
new /obj/item/weapon/tank_brush(src)
|
||||
new /obj/item/weapon/fishfood(src)
|
||||
new /obj/item/egg_scoop(src)
|
||||
new /obj/item/fish_net(src)
|
||||
new /obj/item/tank_brush(src)
|
||||
new /obj/item/fishfood(src)
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
/*
|
||||
* First Aid Kits
|
||||
*/
|
||||
/obj/item/weapon/storage/firstaid
|
||||
/obj/item/storage/firstaid
|
||||
name = "first-aid kit"
|
||||
desc = "It's an emergency medical kit for those serious boo-boos."
|
||||
icon_state = "firstaid"
|
||||
@@ -23,7 +23,7 @@
|
||||
var/treatment_virus = "spaceacillin"
|
||||
|
||||
|
||||
/obj/item/weapon/storage/firstaid/fire
|
||||
/obj/item/storage/firstaid/fire
|
||||
name = "fire first-aid kit"
|
||||
desc = "A medical kit that contains several medical patches and pills for treating burns. Contains one epinephrine syringe for emergency use and a health analyzer."
|
||||
icon_state = "ointment"
|
||||
@@ -35,35 +35,35 @@
|
||||
|
||||
icon_state = pick("ointment","firefirstaid")
|
||||
|
||||
new /obj/item/weapon/reagent_containers/food/pill/patch/silver_sulf( src )
|
||||
new /obj/item/weapon/reagent_containers/food/pill/patch/silver_sulf( src )
|
||||
new /obj/item/weapon/reagent_containers/food/pill/patch/silver_sulf( src )
|
||||
new /obj/item/weapon/reagent_containers/food/pill/patch/silver_sulf( src )
|
||||
new /obj/item/reagent_containers/food/pill/patch/silver_sulf( src )
|
||||
new /obj/item/reagent_containers/food/pill/patch/silver_sulf( src )
|
||||
new /obj/item/reagent_containers/food/pill/patch/silver_sulf( src )
|
||||
new /obj/item/reagent_containers/food/pill/patch/silver_sulf( src )
|
||||
new /obj/item/device/healthanalyzer( src )
|
||||
new /obj/item/weapon/reagent_containers/hypospray/autoinjector( src )
|
||||
new /obj/item/weapon/reagent_containers/food/pill/salicylic( src )
|
||||
new /obj/item/reagent_containers/hypospray/autoinjector( src )
|
||||
new /obj/item/reagent_containers/food/pill/salicylic( src )
|
||||
return
|
||||
|
||||
/obj/item/weapon/storage/firstaid/fire/empty
|
||||
/obj/item/storage/firstaid/fire/empty
|
||||
empty = 1
|
||||
|
||||
/obj/item/weapon/storage/firstaid/regular
|
||||
/obj/item/storage/firstaid/regular
|
||||
desc = "A general medical kit that contains medical patches for both brute damage and burn damage. Also contains an epinephrine syringe for emergency use and a health analyzer"
|
||||
icon_state = "firstaid"
|
||||
|
||||
New()
|
||||
..()
|
||||
if(empty) return
|
||||
new /obj/item/weapon/reagent_containers/food/pill/patch/styptic( src )
|
||||
new /obj/item/weapon/reagent_containers/food/pill/patch/styptic( src )
|
||||
new /obj/item/weapon/reagent_containers/food/pill/salicylic( src )
|
||||
new /obj/item/weapon/reagent_containers/food/pill/patch/silver_sulf( src )
|
||||
new /obj/item/weapon/reagent_containers/food/pill/patch/silver_sulf( src )
|
||||
new /obj/item/reagent_containers/food/pill/patch/styptic( src )
|
||||
new /obj/item/reagent_containers/food/pill/patch/styptic( src )
|
||||
new /obj/item/reagent_containers/food/pill/salicylic( src )
|
||||
new /obj/item/reagent_containers/food/pill/patch/silver_sulf( src )
|
||||
new /obj/item/reagent_containers/food/pill/patch/silver_sulf( src )
|
||||
new /obj/item/device/healthanalyzer( src )
|
||||
new /obj/item/weapon/reagent_containers/hypospray/autoinjector( src )
|
||||
new /obj/item/reagent_containers/hypospray/autoinjector( src )
|
||||
return
|
||||
|
||||
/obj/item/weapon/storage/firstaid/toxin
|
||||
/obj/item/storage/firstaid/toxin
|
||||
name = "toxin first aid kit"
|
||||
desc = "A medical kit designed to counter poisoning by common toxins. Contains three pills and syringes, and a health analyzer to determine the health of the patient."
|
||||
icon_state = "antitoxin"
|
||||
@@ -75,19 +75,19 @@
|
||||
|
||||
icon_state = pick("antitoxin","antitoxfirstaid","antitoxfirstaid2","antitoxfirstaid3")
|
||||
|
||||
new /obj/item/weapon/reagent_containers/syringe/charcoal( src )
|
||||
new /obj/item/weapon/reagent_containers/syringe/charcoal( src )
|
||||
new /obj/item/weapon/reagent_containers/syringe/charcoal( src )
|
||||
new /obj/item/weapon/reagent_containers/food/pill/charcoal( src )
|
||||
new /obj/item/weapon/reagent_containers/food/pill/charcoal( src )
|
||||
new /obj/item/weapon/reagent_containers/food/pill/charcoal( src )
|
||||
new /obj/item/reagent_containers/syringe/charcoal( src )
|
||||
new /obj/item/reagent_containers/syringe/charcoal( src )
|
||||
new /obj/item/reagent_containers/syringe/charcoal( src )
|
||||
new /obj/item/reagent_containers/food/pill/charcoal( src )
|
||||
new /obj/item/reagent_containers/food/pill/charcoal( src )
|
||||
new /obj/item/reagent_containers/food/pill/charcoal( src )
|
||||
new /obj/item/device/healthanalyzer( src )
|
||||
return
|
||||
|
||||
/obj/item/weapon/storage/firstaid/toxin/empty
|
||||
/obj/item/storage/firstaid/toxin/empty
|
||||
empty = 1
|
||||
|
||||
/obj/item/weapon/storage/firstaid/o2
|
||||
/obj/item/storage/firstaid/o2
|
||||
name = "oxygen deprivation first aid kit"
|
||||
desc = "A first aid kit that contains four pills of salbutamol, which is able to counter injuries caused by suffocation. Also contains a health analyzer to determine the health of the patient."
|
||||
icon_state = "o2"
|
||||
@@ -96,17 +96,17 @@
|
||||
New()
|
||||
..()
|
||||
if(empty) return
|
||||
new /obj/item/weapon/reagent_containers/food/pill/salbutamol( src )
|
||||
new /obj/item/weapon/reagent_containers/food/pill/salbutamol( src )
|
||||
new /obj/item/weapon/reagent_containers/food/pill/salbutamol( src )
|
||||
new /obj/item/weapon/reagent_containers/food/pill/salbutamol( src )
|
||||
new /obj/item/reagent_containers/food/pill/salbutamol( src )
|
||||
new /obj/item/reagent_containers/food/pill/salbutamol( src )
|
||||
new /obj/item/reagent_containers/food/pill/salbutamol( src )
|
||||
new /obj/item/reagent_containers/food/pill/salbutamol( src )
|
||||
new /obj/item/device/healthanalyzer( src )
|
||||
return
|
||||
|
||||
/obj/item/weapon/storage/firstaid/o2/empty
|
||||
/obj/item/storage/firstaid/o2/empty
|
||||
empty = 1
|
||||
|
||||
/obj/item/weapon/storage/firstaid/brute
|
||||
/obj/item/storage/firstaid/brute
|
||||
name = "brute trauma treatment kit"
|
||||
desc = "A medical kit that contains several medical patches and pills for treating brute injuries. Contains one epinephrine syringe for emergency use and a health analyzer."
|
||||
icon_state = "brute"
|
||||
@@ -118,25 +118,25 @@
|
||||
|
||||
icon_state = pick("brute","brute2")
|
||||
|
||||
new /obj/item/weapon/reagent_containers/food/pill/patch/styptic(src)
|
||||
new /obj/item/weapon/reagent_containers/food/pill/patch/styptic(src)
|
||||
new /obj/item/weapon/reagent_containers/food/pill/patch/styptic(src)
|
||||
new /obj/item/weapon/reagent_containers/food/pill/patch/styptic(src)
|
||||
new /obj/item/reagent_containers/food/pill/patch/styptic(src)
|
||||
new /obj/item/reagent_containers/food/pill/patch/styptic(src)
|
||||
new /obj/item/reagent_containers/food/pill/patch/styptic(src)
|
||||
new /obj/item/reagent_containers/food/pill/patch/styptic(src)
|
||||
new /obj/item/device/healthanalyzer(src)
|
||||
new /obj/item/weapon/reagent_containers/hypospray/autoinjector(src)
|
||||
new /obj/item/reagent_containers/hypospray/autoinjector(src)
|
||||
new /obj/item/stack/medical/bruise_pack(src)
|
||||
return
|
||||
|
||||
/obj/item/weapon/storage/firstaid/brute/empty
|
||||
/obj/item/storage/firstaid/brute/empty
|
||||
empty = 1
|
||||
|
||||
/obj/item/weapon/storage/firstaid/adv
|
||||
/obj/item/storage/firstaid/adv
|
||||
name = "advanced first-aid kit"
|
||||
desc = "Contains advanced medical treatments."
|
||||
icon_state = "advfirstaid"
|
||||
item_state = "firstaid-advanced"
|
||||
|
||||
/obj/item/weapon/storage/firstaid/adv/New()
|
||||
/obj/item/storage/firstaid/adv/New()
|
||||
..()
|
||||
if(empty)
|
||||
return
|
||||
@@ -145,13 +145,13 @@
|
||||
new /obj/item/stack/medical/bruise_pack/advanced(src)
|
||||
new /obj/item/stack/medical/ointment/advanced(src)
|
||||
new /obj/item/stack/medical/ointment/advanced(src)
|
||||
new /obj/item/weapon/reagent_containers/hypospray/autoinjector(src)
|
||||
new /obj/item/reagent_containers/hypospray/autoinjector(src)
|
||||
new /obj/item/device/healthanalyzer(src)
|
||||
|
||||
/obj/item/weapon/storage/firstaid/adv/empty
|
||||
/obj/item/storage/firstaid/adv/empty
|
||||
empty = 1
|
||||
|
||||
/obj/item/weapon/storage/firstaid/tactical
|
||||
/obj/item/storage/firstaid/tactical
|
||||
name = "first-aid kit"
|
||||
icon_state = "bezerk"
|
||||
desc = "I hope you've got insurance."
|
||||
@@ -162,55 +162,55 @@
|
||||
treatment_tox = "charcoal"
|
||||
req_one_access =list(access_syndicate)
|
||||
|
||||
/obj/item/weapon/storage/firstaid/tactical/New()
|
||||
/obj/item/storage/firstaid/tactical/New()
|
||||
..()
|
||||
if(empty) return
|
||||
new /obj/item/weapon/reagent_containers/hypospray/combat(src)
|
||||
new /obj/item/weapon/reagent_containers/food/pill/patch/synthflesh(src) // Because you ain't got no time to look at what damage dey taking yo
|
||||
new /obj/item/weapon/reagent_containers/food/pill/patch/synthflesh(src)
|
||||
new /obj/item/weapon/reagent_containers/food/pill/patch/synthflesh(src)
|
||||
new /obj/item/weapon/reagent_containers/food/pill/patch/synthflesh(src)
|
||||
new /obj/item/weapon/defibrillator/compact/combat/loaded(src)
|
||||
new /obj/item/reagent_containers/hypospray/combat(src)
|
||||
new /obj/item/reagent_containers/food/pill/patch/synthflesh(src) // Because you ain't got no time to look at what damage dey taking yo
|
||||
new /obj/item/reagent_containers/food/pill/patch/synthflesh(src)
|
||||
new /obj/item/reagent_containers/food/pill/patch/synthflesh(src)
|
||||
new /obj/item/reagent_containers/food/pill/patch/synthflesh(src)
|
||||
new /obj/item/defibrillator/compact/combat/loaded(src)
|
||||
new /obj/item/clothing/glasses/hud/health/night(src)
|
||||
return
|
||||
|
||||
/obj/item/weapon/storage/firstaid/tactical/empty
|
||||
/obj/item/storage/firstaid/tactical/empty
|
||||
empty =1
|
||||
|
||||
/obj/item/weapon/storage/firstaid/surgery
|
||||
/obj/item/storage/firstaid/surgery
|
||||
name = "field surgery kit"
|
||||
icon_state = "duffel-med"
|
||||
desc = "A kit for surgery in the field."
|
||||
max_w_class = WEIGHT_CLASS_BULKY
|
||||
max_combined_w_class = 21
|
||||
storage_slots = 10
|
||||
can_hold = list(/obj/item/roller,/obj/item/weapon/bonesetter,/obj/item/weapon/bonegel, /obj/item/weapon/scalpel, /obj/item/weapon/hemostat,
|
||||
/obj/item/weapon/cautery, /obj/item/weapon/retractor, /obj/item/weapon/FixOVein, /obj/item/weapon/surgicaldrill, /obj/item/weapon/circular_saw)
|
||||
can_hold = list(/obj/item/roller,/obj/item/bonesetter,/obj/item/bonegel, /obj/item/scalpel, /obj/item/hemostat,
|
||||
/obj/item/cautery, /obj/item/retractor, /obj/item/FixOVein, /obj/item/surgicaldrill, /obj/item/circular_saw)
|
||||
|
||||
/obj/item/weapon/storage/firstaid/surgery/New()
|
||||
/obj/item/storage/firstaid/surgery/New()
|
||||
..()
|
||||
new /obj/item/roller(src)
|
||||
new /obj/item/weapon/bonesetter(src)
|
||||
new /obj/item/weapon/bonegel(src)
|
||||
new /obj/item/weapon/scalpel(src)
|
||||
new /obj/item/weapon/hemostat(src)
|
||||
new /obj/item/weapon/cautery(src)
|
||||
new /obj/item/weapon/retractor(src)
|
||||
new /obj/item/weapon/FixOVein(src)
|
||||
new /obj/item/weapon/surgicaldrill(src)
|
||||
new /obj/item/weapon/circular_saw(src)
|
||||
new /obj/item/bonesetter(src)
|
||||
new /obj/item/bonegel(src)
|
||||
new /obj/item/scalpel(src)
|
||||
new /obj/item/hemostat(src)
|
||||
new /obj/item/cautery(src)
|
||||
new /obj/item/retractor(src)
|
||||
new /obj/item/FixOVein(src)
|
||||
new /obj/item/surgicaldrill(src)
|
||||
new /obj/item/circular_saw(src)
|
||||
|
||||
/*
|
||||
* Pill Bottles
|
||||
*/
|
||||
/obj/item/weapon/storage/pill_bottle
|
||||
/obj/item/storage/pill_bottle
|
||||
name = "pill bottle"
|
||||
desc = "It's an airtight container for storing medication."
|
||||
icon_state = "pill_canister"
|
||||
icon = 'icons/obj/chemical.dmi'
|
||||
item_state = "contsolid"
|
||||
w_class = WEIGHT_CLASS_SMALL
|
||||
can_hold = list(/obj/item/weapon/reagent_containers/food/pill, /obj/item/weapon/dice, /obj/item/weapon/paper)
|
||||
can_hold = list(/obj/item/reagent_containers/food/pill, /obj/item/dice, /obj/item/paper)
|
||||
allow_quick_gather = 1
|
||||
use_to_pickup = 1
|
||||
storage_slots = 14
|
||||
@@ -218,11 +218,11 @@
|
||||
var/base_name = ""
|
||||
var/label_text = ""
|
||||
|
||||
/obj/item/weapon/storage/pill_bottle/New()
|
||||
/obj/item/storage/pill_bottle/New()
|
||||
..()
|
||||
base_name = name
|
||||
|
||||
/obj/item/weapon/storage/pill_bottle/MouseDrop(obj/over_object as obj) //Quick pillbottle fix. -Agouri
|
||||
/obj/item/storage/pill_bottle/MouseDrop(obj/over_object as obj) //Quick pillbottle fix. -Agouri
|
||||
if(ishuman(usr)) //Can monkeys even place items in the pocket slots? Leaving this in just in case~
|
||||
var/mob/M = usr
|
||||
if(!( istype(over_object, /obj/screen) ))
|
||||
@@ -244,8 +244,8 @@
|
||||
return
|
||||
return
|
||||
|
||||
/obj/item/weapon/storage/pill_bottle/attackby(var/obj/item/I, mob/user as mob, params)
|
||||
if(istype(I, /obj/item/weapon/pen) || istype(I, /obj/item/device/flashlight/pen))
|
||||
/obj/item/storage/pill_bottle/attackby(var/obj/item/I, mob/user as mob, params)
|
||||
if(istype(I, /obj/item/pen) || istype(I, /obj/item/device/flashlight/pen))
|
||||
var/tmp_label = sanitize(input(user, "Enter a label for [name]","Label",label_text))
|
||||
if(length(tmp_label) > MAX_NAME_LEN)
|
||||
to_chat(user, "<span class='warning'>The label can be at most [MAX_NAME_LEN] characters long.</span>")
|
||||
@@ -256,37 +256,37 @@
|
||||
else
|
||||
..()
|
||||
|
||||
/obj/item/weapon/storage/pill_bottle/proc/update_name_label()
|
||||
/obj/item/storage/pill_bottle/proc/update_name_label()
|
||||
if(label_text == "")
|
||||
name = base_name
|
||||
else
|
||||
name = "[base_name] ([label_text])"
|
||||
|
||||
/obj/item/weapon/storage/pill_bottle/charcoal
|
||||
/obj/item/storage/pill_bottle/charcoal
|
||||
name = "Pill bottle (Charcoal)"
|
||||
desc = "Contains pills used to counter toxins."
|
||||
|
||||
New()
|
||||
..()
|
||||
new /obj/item/weapon/reagent_containers/food/pill/charcoal( src )
|
||||
new /obj/item/weapon/reagent_containers/food/pill/charcoal( src )
|
||||
new /obj/item/weapon/reagent_containers/food/pill/charcoal( src )
|
||||
new /obj/item/weapon/reagent_containers/food/pill/charcoal( src )
|
||||
new /obj/item/weapon/reagent_containers/food/pill/charcoal( src )
|
||||
new /obj/item/weapon/reagent_containers/food/pill/charcoal( src )
|
||||
new /obj/item/weapon/reagent_containers/food/pill/charcoal( src )
|
||||
new /obj/item/reagent_containers/food/pill/charcoal( src )
|
||||
new /obj/item/reagent_containers/food/pill/charcoal( src )
|
||||
new /obj/item/reagent_containers/food/pill/charcoal( src )
|
||||
new /obj/item/reagent_containers/food/pill/charcoal( src )
|
||||
new /obj/item/reagent_containers/food/pill/charcoal( src )
|
||||
new /obj/item/reagent_containers/food/pill/charcoal( src )
|
||||
new /obj/item/reagent_containers/food/pill/charcoal( src )
|
||||
|
||||
/obj/item/weapon/storage/pill_bottle/painkillers
|
||||
/obj/item/storage/pill_bottle/painkillers
|
||||
name = "Pill Bottle (Salicylic Acid)"
|
||||
desc = "Contains various pills for minor pain relief."
|
||||
|
||||
/obj/item/weapon/storage/pill_bottle/painkillers/New()
|
||||
/obj/item/storage/pill_bottle/painkillers/New()
|
||||
..()
|
||||
new /obj/item/weapon/reagent_containers/food/pill/salicylic(src)
|
||||
new /obj/item/weapon/reagent_containers/food/pill/salicylic(src)
|
||||
new /obj/item/weapon/reagent_containers/food/pill/salicylic(src)
|
||||
new /obj/item/weapon/reagent_containers/food/pill/salicylic(src)
|
||||
new /obj/item/weapon/reagent_containers/food/pill/salicylic(src)
|
||||
new /obj/item/weapon/reagent_containers/food/pill/salicylic(src)
|
||||
new /obj/item/weapon/reagent_containers/food/pill/salicylic(src)
|
||||
new /obj/item/weapon/reagent_containers/food/pill/salicylic(src)
|
||||
new /obj/item/reagent_containers/food/pill/salicylic(src)
|
||||
new /obj/item/reagent_containers/food/pill/salicylic(src)
|
||||
new /obj/item/reagent_containers/food/pill/salicylic(src)
|
||||
new /obj/item/reagent_containers/food/pill/salicylic(src)
|
||||
new /obj/item/reagent_containers/food/pill/salicylic(src)
|
||||
new /obj/item/reagent_containers/food/pill/salicylic(src)
|
||||
new /obj/item/reagent_containers/food/pill/salicylic(src)
|
||||
new /obj/item/reagent_containers/food/pill/salicylic(src)
|
||||
|
||||
@@ -1,23 +1,23 @@
|
||||
//A storage item intended to be used by other items to provide storage functionality.
|
||||
//Types that use this should consider overriding emp_act() and hear_talk(), unless they shield their contents somehow.
|
||||
/obj/item/weapon/storage/internal
|
||||
/obj/item/storage/internal
|
||||
var/obj/item/master_item
|
||||
|
||||
/obj/item/weapon/storage/internal/New(obj/item/MI)
|
||||
/obj/item/storage/internal/New(obj/item/MI)
|
||||
master_item = MI
|
||||
loc = master_item
|
||||
name = master_item.name
|
||||
verbs -= /obj/item/verb/verb_pickup //make sure this is never picked up.
|
||||
..()
|
||||
|
||||
/obj/item/weapon/storage/internal/Destroy()
|
||||
/obj/item/storage/internal/Destroy()
|
||||
master_item = null
|
||||
return ..()
|
||||
|
||||
/obj/item/weapon/storage/internal/attack_hand()
|
||||
/obj/item/storage/internal/attack_hand()
|
||||
return //make sure this is never picked up
|
||||
|
||||
/obj/item/weapon/storage/internal/mob_can_equip()
|
||||
/obj/item/storage/internal/mob_can_equip()
|
||||
return 0 //make sure this is never picked up
|
||||
|
||||
//Helper procs to cleanly implement internal storages - storage items that provide inventory slots for other items.
|
||||
@@ -29,7 +29,7 @@
|
||||
//items that use internal storage have the option of calling this to emulate default storage MouseDrop behaviour.
|
||||
//returns 1 if the master item's parent's MouseDrop() should be called, 0 otherwise. It's strange, but no other way of
|
||||
//doing it without the ability to call another proc's parent, really.
|
||||
/obj/item/weapon/storage/internal/proc/handle_mousedrop(mob/user as mob, obj/over_object as obj)
|
||||
/obj/item/storage/internal/proc/handle_mousedrop(mob/user as mob, obj/over_object as obj)
|
||||
if(ishuman(user)) //so monkeys can take off their backpacks -- Urist
|
||||
|
||||
if(istype(user.loc,/obj/mecha)) // stops inventory actions in a mech
|
||||
@@ -62,7 +62,7 @@
|
||||
//items that use internal storage have the option of calling this to emulate default storage attack_hand behaviour.
|
||||
//returns 1 if the master item's parent's attack_hand() should be called, 0 otherwise.
|
||||
//It's strange, but no other way of doing it without the ability to call another proc's parent, really.
|
||||
/obj/item/weapon/storage/internal/proc/handle_attack_hand(mob/user as mob)
|
||||
/obj/item/storage/internal/proc/handle_attack_hand(mob/user as mob)
|
||||
|
||||
if(ishuman(user))
|
||||
var/mob/living/carbon/human/H = user
|
||||
@@ -85,5 +85,5 @@
|
||||
src.close(M)
|
||||
return 1
|
||||
|
||||
/obj/item/weapon/storage/internal/Adjacent(var/atom/neighbor)
|
||||
/obj/item/storage/internal/Adjacent(var/atom/neighbor)
|
||||
return master_item.Adjacent(neighbor)
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/obj/item/weapon/storage/lockbox
|
||||
/obj/item/storage/lockbox
|
||||
name = "lockbox"
|
||||
desc = "A locked box."
|
||||
icon_state = "lockbox+l"
|
||||
@@ -14,8 +14,8 @@
|
||||
var/icon_closed = "lockbox"
|
||||
var/icon_broken = "lockbox+b"
|
||||
|
||||
/obj/item/weapon/storage/lockbox/attackby(obj/item/weapon/W as obj, mob/user as mob, params)
|
||||
if(istype(W, /obj/item/weapon/card/id) || istype(W, /obj/item/device/pda))
|
||||
/obj/item/storage/lockbox/attackby(obj/item/W as obj, mob/user as mob, params)
|
||||
if(istype(W, /obj/item/card/id) || istype(W, /obj/item/device/pda))
|
||||
if(broken)
|
||||
to_chat(user, "<span class='warning'>It appears to be broken.</span>")
|
||||
return
|
||||
@@ -33,7 +33,7 @@
|
||||
else
|
||||
to_chat(user, "<span class='warning'>Access denied.</span>")
|
||||
return
|
||||
else if((istype(W, /obj/item/weapon/card/emag) || (istype(W, /obj/item/weapon/melee/energy/blade)) && !broken))
|
||||
else if((istype(W, /obj/item/card/emag) || (istype(W, /obj/item/melee/energy/blade)) && !broken))
|
||||
emag_act(user)
|
||||
return
|
||||
if(!locked)
|
||||
@@ -43,21 +43,21 @@
|
||||
return
|
||||
|
||||
|
||||
/obj/item/weapon/storage/lockbox/show_to(mob/user as mob)
|
||||
/obj/item/storage/lockbox/show_to(mob/user as mob)
|
||||
if(locked)
|
||||
to_chat(user, "<span class='warning'>It's locked!</span>")
|
||||
else
|
||||
..()
|
||||
return
|
||||
|
||||
/obj/item/weapon/storage/lockbox/can_be_inserted(obj/item/W as obj, stop_messages = 0)
|
||||
/obj/item/storage/lockbox/can_be_inserted(obj/item/W as obj, stop_messages = 0)
|
||||
if(!locked)
|
||||
return ..()
|
||||
if(!stop_messages)
|
||||
to_chat(usr, "<span class='notice'>[src] is locked!</span>")
|
||||
return 0
|
||||
|
||||
/obj/item/weapon/storage/lockbox/emag_act(user as mob)
|
||||
/obj/item/storage/lockbox/emag_act(user as mob)
|
||||
if(!broken)
|
||||
broken = 1
|
||||
locked = 0
|
||||
@@ -67,38 +67,38 @@
|
||||
origin_tech = null //wipe out any origin tech if it's unlocked in any way so you can't double-dip tech levels at R&D.
|
||||
return
|
||||
|
||||
/obj/item/weapon/storage/lockbox/hear_talk(mob/living/M as mob, msg)
|
||||
/obj/item/storage/lockbox/hear_talk(mob/living/M as mob, msg)
|
||||
|
||||
/obj/item/weapon/storage/lockbox/hear_message(mob/living/M as mob, msg)
|
||||
/obj/item/storage/lockbox/hear_message(mob/living/M as mob, msg)
|
||||
|
||||
/obj/item/weapon/storage/lockbox/large
|
||||
/obj/item/storage/lockbox/large
|
||||
name = "Large lockbox"
|
||||
desc = "A large lockbox"
|
||||
max_w_class = WEIGHT_CLASS_BULKY
|
||||
max_combined_w_class = 4 //The sum of the w_classes of all the items in this storage item.
|
||||
storage_slots = 1
|
||||
|
||||
/obj/item/weapon/storage/lockbox/mindshield
|
||||
/obj/item/storage/lockbox/mindshield
|
||||
name = "Lockbox (Mindshield Implants)"
|
||||
req_access = list(access_security)
|
||||
|
||||
/obj/item/weapon/storage/lockbox/mindshield/New()
|
||||
/obj/item/storage/lockbox/mindshield/New()
|
||||
..()
|
||||
new /obj/item/weapon/implantcase/mindshield(src)
|
||||
new /obj/item/weapon/implantcase/mindshield(src)
|
||||
new /obj/item/weapon/implantcase/mindshield(src)
|
||||
new /obj/item/weapon/implanter/mindshield(src)
|
||||
new /obj/item/implantcase/mindshield(src)
|
||||
new /obj/item/implantcase/mindshield(src)
|
||||
new /obj/item/implantcase/mindshield(src)
|
||||
new /obj/item/implanter/mindshield(src)
|
||||
|
||||
/obj/item/weapon/storage/lockbox/clusterbang
|
||||
/obj/item/storage/lockbox/clusterbang
|
||||
name = "lockbox (clusterbang)"
|
||||
desc = "You have a bad feeling about opening this."
|
||||
req_access = list(access_security)
|
||||
|
||||
/obj/item/weapon/storage/lockbox/clusterbang/New()
|
||||
/obj/item/storage/lockbox/clusterbang/New()
|
||||
..()
|
||||
new /obj/item/weapon/grenade/clusterbuster(src)
|
||||
new /obj/item/grenade/clusterbuster(src)
|
||||
|
||||
/obj/item/weapon/storage/lockbox/medal
|
||||
/obj/item/storage/lockbox/medal
|
||||
name = "medal box"
|
||||
desc = "A locked box used to store medals of honor."
|
||||
icon_state = "medalbox+l"
|
||||
@@ -112,7 +112,7 @@
|
||||
icon_closed = "medalbox"
|
||||
icon_broken = "medalbox+b"
|
||||
|
||||
/obj/item/weapon/storage/lockbox/medal/New()
|
||||
/obj/item/storage/lockbox/medal/New()
|
||||
..()
|
||||
new /obj/item/clothing/accessory/medal/gold/heroism(src)
|
||||
new /obj/item/clothing/accessory/medal/silver/security(src)
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Absorbs /obj/item/weapon/secstorage.
|
||||
* Absorbs /obj/item/secstorage.
|
||||
* Reimplements it only slightly to use existing storage functionality.
|
||||
*
|
||||
* Contains:
|
||||
@@ -10,7 +10,7 @@
|
||||
// -----------------------------
|
||||
// Generic Item
|
||||
// -----------------------------
|
||||
/obj/item/weapon/storage/secure
|
||||
/obj/item/storage/secure
|
||||
name = "secstorage"
|
||||
var/icon_locking = "secureb"
|
||||
var/icon_sparking = "securespark"
|
||||
@@ -27,16 +27,16 @@
|
||||
max_w_class = WEIGHT_CLASS_SMALL
|
||||
max_combined_w_class = 14
|
||||
|
||||
/obj/item/weapon/storage/secure/examine(mob/user)
|
||||
/obj/item/storage/secure/examine(mob/user)
|
||||
if(..(user, 1))
|
||||
to_chat(user, text("The service panel is [open ? "open" : "closed"]."))
|
||||
|
||||
/obj/item/weapon/storage/secure/attackby(obj/item/weapon/W as obj, mob/user as mob, params)
|
||||
/obj/item/storage/secure/attackby(obj/item/W as obj, mob/user as mob, params)
|
||||
if(locked)
|
||||
if((istype(W, /obj/item/weapon/melee/energy/blade)) && (!emagged))
|
||||
if((istype(W, /obj/item/melee/energy/blade)) && (!emagged))
|
||||
emag_act(user, W)
|
||||
|
||||
if(istype(W, /obj/item/weapon/screwdriver))
|
||||
if(istype(W, /obj/item/screwdriver))
|
||||
if(do_after(user, 20 * W.toolspeed, target = src))
|
||||
open = !open
|
||||
user.show_message("<span class='notice'>You [open ? "open" : "close"] the service panel.</span>", 1)
|
||||
@@ -65,7 +65,7 @@
|
||||
|
||||
return ..()
|
||||
|
||||
/obj/item/weapon/storage/secure/emag_act(user as mob, weapon as obj)
|
||||
/obj/item/storage/secure/emag_act(user as mob, weapon as obj)
|
||||
if(!emagged)
|
||||
emagged = 1
|
||||
overlays += image('icons/obj/storage.dmi', icon_sparking)
|
||||
@@ -73,7 +73,7 @@
|
||||
overlays = null
|
||||
overlays += image('icons/obj/storage.dmi', icon_locking)
|
||||
locked = 0
|
||||
if(istype(weapon, /obj/item/weapon/melee/energy/blade))
|
||||
if(istype(weapon, /obj/item/melee/energy/blade))
|
||||
var/datum/effect_system/spark_spread/spark_system = new /datum/effect_system/spark_spread()
|
||||
spark_system.set_up(5, 0, src.loc)
|
||||
spark_system.start()
|
||||
@@ -85,14 +85,14 @@
|
||||
return
|
||||
|
||||
|
||||
/obj/item/weapon/storage/secure/MouseDrop(over_object, src_location, over_location)
|
||||
/obj/item/storage/secure/MouseDrop(over_object, src_location, over_location)
|
||||
if(locked)
|
||||
add_fingerprint(usr)
|
||||
to_chat(usr, "<span class='warning'>It's locked!</span>")
|
||||
return 0
|
||||
..()
|
||||
|
||||
/obj/item/weapon/storage/secure/attack_self(mob/user as mob)
|
||||
/obj/item/storage/secure/attack_self(mob/user as mob)
|
||||
user.set_machine(src)
|
||||
var/dat = text("<TT><B>[]</B><BR>\n\nLock Status: []", src, (locked ? "LOCKED" : "UNLOCKED"))
|
||||
var/message = "Code"
|
||||
@@ -120,7 +120,7 @@
|
||||
<A href='?src=[UID()];type=E'>E</A><BR>\n</TT>"}
|
||||
user << browse(dat, "window=caselock;size=300x280")
|
||||
|
||||
/obj/item/weapon/storage/secure/Topic(href, href_list)
|
||||
/obj/item/storage/secure/Topic(href, href_list)
|
||||
..()
|
||||
if(usr.incapacitated() || (get_dist(src, usr) > 1))
|
||||
return
|
||||
@@ -153,23 +153,23 @@
|
||||
return
|
||||
return
|
||||
|
||||
/obj/item/weapon/storage/secure/can_be_inserted(obj/item/W as obj, stop_messages = 0)
|
||||
/obj/item/storage/secure/can_be_inserted(obj/item/W as obj, stop_messages = 0)
|
||||
if(!locked)
|
||||
return ..()
|
||||
if(!stop_messages)
|
||||
to_chat(usr, "<span class='notice'>[src] is locked!</span>")
|
||||
return 0
|
||||
|
||||
/obj/item/weapon/storage/secure/hear_talk(mob/living/M as mob, msg)
|
||||
/obj/item/storage/secure/hear_talk(mob/living/M as mob, msg)
|
||||
return
|
||||
|
||||
/obj/item/weapon/storage/secure/hear_message(mob/living/M as mob, msg)
|
||||
/obj/item/storage/secure/hear_message(mob/living/M as mob, msg)
|
||||
return
|
||||
|
||||
// -----------------------------
|
||||
// Secure Briefcase
|
||||
// -----------------------------
|
||||
/obj/item/weapon/storage/secure/briefcase
|
||||
/obj/item/storage/secure/briefcase
|
||||
name = "secure briefcase"
|
||||
desc = "A large briefcase with a digital locking system."
|
||||
icon = 'icons/obj/storage.dmi'
|
||||
@@ -185,12 +185,12 @@
|
||||
max_combined_w_class = 21
|
||||
attack_verb = list("bashed", "battered", "bludgeoned", "thrashed", "whacked")
|
||||
|
||||
/obj/item/weapon/storage/secure/briefcase/New()
|
||||
/obj/item/storage/secure/briefcase/New()
|
||||
..()
|
||||
handle_item_insertion(new /obj/item/weapon/paper, 1)
|
||||
handle_item_insertion(new /obj/item/weapon/pen, 1)
|
||||
handle_item_insertion(new /obj/item/paper, 1)
|
||||
handle_item_insertion(new /obj/item/pen, 1)
|
||||
|
||||
/obj/item/weapon/storage/secure/briefcase/attack_hand(mob/user as mob)
|
||||
/obj/item/storage/secure/briefcase/attack_hand(mob/user as mob)
|
||||
if((loc == user) && (locked == 1))
|
||||
to_chat(usr, "<span class='warning'>[src] is locked and cannot be opened!</span>")
|
||||
else if((loc == user) && !locked)
|
||||
@@ -208,27 +208,27 @@
|
||||
return
|
||||
|
||||
//Syndie variant of Secure Briefcase. Contains space cash, slightly more robust.
|
||||
/obj/item/weapon/storage/secure/briefcase/syndie
|
||||
/obj/item/storage/secure/briefcase/syndie
|
||||
force = 15
|
||||
|
||||
/obj/item/weapon/storage/secure/briefcase/syndie/New()
|
||||
/obj/item/storage/secure/briefcase/syndie/New()
|
||||
..()
|
||||
for(var/i = 0, i < storage_slots - 2, i++)
|
||||
handle_item_insertion(new /obj/item/stack/spacecash/c1000, 1)
|
||||
|
||||
/obj/item/weapon/storage/secure/briefcase/reaper/New()
|
||||
/obj/item/storage/secure/briefcase/reaper/New()
|
||||
..()
|
||||
handle_item_insertion(new /obj/item/weapon/gun/energy/kinetic_accelerator/crossbow, 1)
|
||||
handle_item_insertion(new /obj/item/weapon/gun/projectile/revolver/mateba, 1)
|
||||
handle_item_insertion(new /obj/item/gun/energy/kinetic_accelerator/crossbow, 1)
|
||||
handle_item_insertion(new /obj/item/gun/projectile/revolver/mateba, 1)
|
||||
handle_item_insertion(new /obj/item/ammo_box/a357, 1)
|
||||
handle_item_insertion(new /obj/item/weapon/grenade/plastic/c4, 1)
|
||||
handle_item_insertion(new /obj/item/grenade/plastic/c4, 1)
|
||||
|
||||
|
||||
// -----------------------------
|
||||
// Secure Safe
|
||||
// -----------------------------
|
||||
|
||||
/obj/item/weapon/storage/secure/safe
|
||||
/obj/item/storage/secure/safe
|
||||
name = "secure safe"
|
||||
icon = 'icons/obj/storage.dmi'
|
||||
icon_state = "safe"
|
||||
@@ -240,12 +240,12 @@
|
||||
max_w_class = 8
|
||||
anchored = 1
|
||||
density = 0
|
||||
cant_hold = list(/obj/item/weapon/storage/secure/briefcase)
|
||||
cant_hold = list(/obj/item/storage/secure/briefcase)
|
||||
|
||||
/obj/item/weapon/storage/secure/safe/New()
|
||||
/obj/item/storage/secure/safe/New()
|
||||
..()
|
||||
handle_item_insertion(new /obj/item/weapon/paper, 1)
|
||||
handle_item_insertion(new /obj/item/weapon/pen, 1)
|
||||
handle_item_insertion(new /obj/item/paper, 1)
|
||||
handle_item_insertion(new /obj/item/pen, 1)
|
||||
|
||||
/obj/item/weapon/storage/secure/safe/attack_hand(mob/user as mob)
|
||||
/obj/item/storage/secure/safe/attack_hand(mob/user as mob)
|
||||
return attack_self(user)
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
// -Sayu
|
||||
|
||||
|
||||
/obj/item/weapon/storage
|
||||
/obj/item/storage
|
||||
name = "storage"
|
||||
icon = 'icons/obj/storage.dmi'
|
||||
w_class = WEIGHT_CLASS_NORMAL
|
||||
@@ -24,7 +24,7 @@
|
||||
var/collection_mode = 1; //0 = pick one at a time, 1 = pick all on tile
|
||||
var/use_sound = "rustle" //sound played when used. null for no sound.
|
||||
|
||||
/obj/item/weapon/storage/MouseDrop(obj/over_object as obj)
|
||||
/obj/item/storage/MouseDrop(obj/over_object as obj)
|
||||
if(ishuman(usr)) //so monkeys can take off their backpacks -- Urist
|
||||
var/mob/M = usr
|
||||
|
||||
@@ -40,7 +40,7 @@
|
||||
|
||||
if((istype(over_object, /obj/structure/table) || istype(over_object, /turf/simulated/floor)) \
|
||||
&& contents.len && loc == usr && !usr.stat && !usr.restrained() && usr.canmove && over_object.Adjacent(usr) \
|
||||
&& !istype(src, /obj/item/weapon/storage/lockbox))
|
||||
&& !istype(src, /obj/item/storage/lockbox))
|
||||
var/turf/T = get_turf(over_object)
|
||||
if(istype(over_object, /turf/simulated/floor))
|
||||
if(get_turf(usr) != T)
|
||||
@@ -83,23 +83,23 @@
|
||||
return
|
||||
|
||||
|
||||
/obj/item/weapon/storage/proc/return_inv()
|
||||
/obj/item/storage/proc/return_inv()
|
||||
|
||||
var/list/L = list( )
|
||||
|
||||
L += src.contents
|
||||
|
||||
for(var/obj/item/weapon/storage/S in src)
|
||||
for(var/obj/item/storage/S in src)
|
||||
L += S.return_inv()
|
||||
for(var/obj/item/weapon/gift/G in src)
|
||||
for(var/obj/item/gift/G in src)
|
||||
L += G.gift
|
||||
if(istype(G.gift, /obj/item/weapon/storage))
|
||||
if(istype(G.gift, /obj/item/storage))
|
||||
L += G.gift:return_inv()
|
||||
for(var/obj/item/weapon/folder/F in src)
|
||||
for(var/obj/item/folder/F in src)
|
||||
L += F.contents
|
||||
return L
|
||||
|
||||
/obj/item/weapon/storage/proc/show_to(mob/user as mob)
|
||||
/obj/item/storage/proc/show_to(mob/user as mob)
|
||||
if(user.s_active != src)
|
||||
for(var/obj/item/I in src)
|
||||
if(I.on_found(user))
|
||||
@@ -115,7 +115,7 @@
|
||||
user.s_active = src
|
||||
return
|
||||
|
||||
/obj/item/weapon/storage/proc/hide_from(mob/user as mob)
|
||||
/obj/item/storage/proc/hide_from(mob/user as mob)
|
||||
|
||||
if(!user.client)
|
||||
return
|
||||
@@ -126,7 +126,7 @@
|
||||
user.s_active = null
|
||||
return
|
||||
|
||||
/obj/item/weapon/storage/proc/open(mob/user as mob)
|
||||
/obj/item/storage/proc/open(mob/user as mob)
|
||||
if(src.use_sound)
|
||||
playsound(src.loc, src.use_sound, 50, 1, -5)
|
||||
|
||||
@@ -135,7 +135,7 @@
|
||||
user.s_active.close(user)
|
||||
show_to(user)
|
||||
|
||||
/obj/item/weapon/storage/proc/close(mob/user as mob)
|
||||
/obj/item/storage/proc/close(mob/user as mob)
|
||||
|
||||
src.hide_from(user)
|
||||
user.s_active = null
|
||||
@@ -143,7 +143,7 @@
|
||||
|
||||
//This proc draws out the inventory and places the items on it. tx and ty are the upper left tile and mx, my are the bottm right.
|
||||
//The numbers are calculated from the bottom-left The bottom-left slot being 1,1.
|
||||
/obj/item/weapon/storage/proc/orient_objs(tx, ty, mx, my)
|
||||
/obj/item/storage/proc/orient_objs(tx, ty, mx, my)
|
||||
var/cx = tx
|
||||
var/cy = ty
|
||||
src.boxes.screen_loc = "[tx]:,[ty] to [mx],[my]"
|
||||
@@ -159,7 +159,7 @@
|
||||
return
|
||||
|
||||
//This proc draws out the inventory and places the items on it. It uses the standard position.
|
||||
/obj/item/weapon/storage/proc/standard_orient_objs(var/rows, var/cols, var/list/obj/item/display_contents)
|
||||
/obj/item/storage/proc/standard_orient_objs(var/rows, var/cols, var/list/obj/item/display_contents)
|
||||
var/cx = 4
|
||||
var/cy = 2+rows
|
||||
src.boxes.screen_loc = "4:16,2:16 to [4+cols]:16,[2+rows]:16"
|
||||
@@ -200,7 +200,7 @@
|
||||
number = 1
|
||||
|
||||
//This proc determins the size of the inventory to be displayed. Please touch it only if you know what you're doing.
|
||||
/obj/item/weapon/storage/proc/orient2hud(mob/user as mob)
|
||||
/obj/item/storage/proc/orient2hud(mob/user as mob)
|
||||
|
||||
var/adjusted_contents = contents.len
|
||||
|
||||
@@ -230,7 +230,7 @@
|
||||
|
||||
//This proc return 1 if the item can be picked up and 0 if it can't.
|
||||
//Set the stop_messages to stop it from printing messages
|
||||
/obj/item/weapon/storage/proc/can_be_inserted(obj/item/W as obj, stop_messages = 0)
|
||||
/obj/item/storage/proc/can_be_inserted(obj/item/W as obj, stop_messages = 0)
|
||||
if(!istype(W) || (W.flags & ABSTRACT)) return //Not an item
|
||||
|
||||
if(src.loc == W)
|
||||
@@ -265,8 +265,8 @@
|
||||
to_chat(usr, "<span class='notice'>[src] is full, make some space.</span>")
|
||||
return 0
|
||||
|
||||
if(W.w_class >= src.w_class && (istype(W, /obj/item/weapon/storage)))
|
||||
if(!istype(src, /obj/item/weapon/storage/backpack/holding)) //bohs should be able to hold backpacks again. The override for putting a boh in a boh is in backpack.dm.
|
||||
if(W.w_class >= src.w_class && (istype(W, /obj/item/storage)))
|
||||
if(!istype(src, /obj/item/storage/backpack/holding)) //bohs should be able to hold backpacks again. The override for putting a boh in a boh is in backpack.dm.
|
||||
if(!stop_messages)
|
||||
to_chat(usr, "<span class='notice'>[src] cannot hold [W] as it's a storage item of the same size.</span>")
|
||||
return 0 //To prevent the stacking of same sized storage items.
|
||||
@@ -280,7 +280,7 @@
|
||||
//This proc handles items being inserted. It does not perform any checks of whether an item can or can't be inserted. That's done by can_be_inserted()
|
||||
//The stop_warning parameter will stop the insertion message from being displayed. It is intended for cases where you are inserting multiple items at once,
|
||||
//such as when picking up all the items on a tile with one click.
|
||||
/obj/item/weapon/storage/proc/handle_item_insertion(obj/item/W as obj, prevent_warning = 0)
|
||||
/obj/item/storage/proc/handle_item_insertion(obj/item/W as obj, prevent_warning = 0)
|
||||
if(!istype(W))
|
||||
return 0
|
||||
if(usr)
|
||||
@@ -297,7 +297,7 @@
|
||||
W.dropped(usr)
|
||||
add_fingerprint(usr)
|
||||
|
||||
if(!prevent_warning && !istype(W, /obj/item/weapon/gun/energy/kinetic_accelerator/crossbow))
|
||||
if(!prevent_warning && !istype(W, /obj/item/gun/energy/kinetic_accelerator/crossbow))
|
||||
for(var/mob/M in viewers(usr, null))
|
||||
if(M == usr)
|
||||
to_chat(usr, "<span class='notice'>You put the [W] into [src].</span>")
|
||||
@@ -314,11 +314,11 @@
|
||||
return 1
|
||||
|
||||
//Call this proc to handle the removal of an item from the storage item. The item will be moved to the atom sent as new_target
|
||||
/obj/item/weapon/storage/proc/remove_from_storage(obj/item/W as obj, atom/new_location, burn = 0)
|
||||
/obj/item/storage/proc/remove_from_storage(obj/item/W as obj, atom/new_location, burn = 0)
|
||||
if(!istype(W)) return 0
|
||||
|
||||
if(istype(src, /obj/item/weapon/storage/fancy))
|
||||
var/obj/item/weapon/storage/fancy/F = src
|
||||
if(istype(src, /obj/item/storage/fancy))
|
||||
var/obj/item/storage/fancy/F = src
|
||||
F.update_icon(1)
|
||||
|
||||
for(var/mob/M in range(1, src.loc))
|
||||
@@ -352,12 +352,12 @@
|
||||
W.fire_act()
|
||||
return 1
|
||||
|
||||
/obj/item/weapon/storage/empty_object_contents(burn, loc)
|
||||
/obj/item/storage/empty_object_contents(burn, loc)
|
||||
for(var/obj/item/Item in contents)
|
||||
remove_from_storage(Item, loc, burn)
|
||||
|
||||
//This proc is called when you want to place an item into the storage item.
|
||||
/obj/item/weapon/storage/attackby(obj/item/W as obj, mob/user as mob, params)
|
||||
/obj/item/storage/attackby(obj/item/W as obj, mob/user as mob, params)
|
||||
..()
|
||||
|
||||
if(isrobot(user))
|
||||
@@ -371,7 +371,7 @@
|
||||
return 1
|
||||
|
||||
|
||||
/obj/item/weapon/storage/attack_hand(mob/user as mob)
|
||||
/obj/item/storage/attack_hand(mob/user as mob)
|
||||
playsound(src.loc, "rustle", 50, 1, -5)
|
||||
|
||||
if(ishuman(user))
|
||||
@@ -398,7 +398,7 @@
|
||||
src.add_fingerprint(user)
|
||||
return
|
||||
|
||||
/obj/item/weapon/storage/verb/toggle_gathering_mode()
|
||||
/obj/item/storage/verb/toggle_gathering_mode()
|
||||
set name = "Switch Gathering Method"
|
||||
set category = "Object"
|
||||
|
||||
@@ -410,7 +410,7 @@
|
||||
to_chat(usr, "[src] now picks up one item at a time.")
|
||||
|
||||
|
||||
/obj/item/weapon/storage/verb/quick_empty()
|
||||
/obj/item/storage/verb/quick_empty()
|
||||
set name = "Empty Contents"
|
||||
set category = "Object"
|
||||
|
||||
@@ -422,19 +422,19 @@
|
||||
for(var/obj/item/I in contents)
|
||||
remove_from_storage(I, T)
|
||||
|
||||
/obj/item/weapon/storage/New()
|
||||
/obj/item/storage/New()
|
||||
can_hold = typecacheof(can_hold)
|
||||
cant_hold = typecacheof(cant_hold)
|
||||
|
||||
if(allow_quick_empty)
|
||||
verbs += /obj/item/weapon/storage/verb/quick_empty
|
||||
verbs += /obj/item/storage/verb/quick_empty
|
||||
else
|
||||
verbs -= /obj/item/weapon/storage/verb/quick_empty
|
||||
verbs -= /obj/item/storage/verb/quick_empty
|
||||
|
||||
if(allow_quick_gather)
|
||||
verbs += /obj/item/weapon/storage/verb/toggle_gathering_mode
|
||||
verbs += /obj/item/storage/verb/toggle_gathering_mode
|
||||
else
|
||||
verbs -= /obj/item/weapon/storage/verb/toggle_gathering_mode
|
||||
verbs -= /obj/item/storage/verb/toggle_gathering_mode
|
||||
|
||||
src.boxes = new /obj/screen/storage( )
|
||||
src.boxes.name = "storage"
|
||||
@@ -449,7 +449,7 @@
|
||||
src.closer.plane = HUD_PLANE
|
||||
orient2hud()
|
||||
|
||||
/obj/item/weapon/storage/Destroy()
|
||||
/obj/item/storage/Destroy()
|
||||
for(var/obj/O in contents)
|
||||
O.mouse_opacity = initial(O.mouse_opacity)
|
||||
|
||||
@@ -457,27 +457,27 @@
|
||||
QDEL_NULL(closer)
|
||||
return ..()
|
||||
|
||||
/obj/item/weapon/storage/emp_act(severity)
|
||||
/obj/item/storage/emp_act(severity)
|
||||
if(!istype(src.loc, /mob/living))
|
||||
for(var/obj/O in contents)
|
||||
O.emp_act(severity)
|
||||
..()
|
||||
|
||||
/obj/item/weapon/storage/hear_talk(mob/living/M as mob, msg)
|
||||
/obj/item/storage/hear_talk(mob/living/M as mob, msg)
|
||||
..()
|
||||
for(var/obj/O in contents)
|
||||
O.hear_talk(M, msg)
|
||||
|
||||
/obj/item/weapon/storage/hear_message(mob/living/M as mob, msg)
|
||||
/obj/item/storage/hear_message(mob/living/M as mob, msg)
|
||||
..()
|
||||
for(var/obj/O in contents)
|
||||
O.hear_message(M, msg)
|
||||
|
||||
/obj/item/weapon/storage/attack_self(mob/user)
|
||||
/obj/item/storage/attack_self(mob/user)
|
||||
|
||||
//Clicking on itself will empty it, if it has the verb to do that.
|
||||
if(user.is_in_active_hand(src))
|
||||
if(verbs.Find(/obj/item/weapon/storage/verb/quick_empty))
|
||||
if(verbs.Find(/obj/item/storage/verb/quick_empty))
|
||||
quick_empty()
|
||||
|
||||
//Returns the storage depth of an atom. This is the number of storage items the atom is contained in before reaching toplevel (the area).
|
||||
@@ -489,7 +489,7 @@
|
||||
while(cur_atom && !(cur_atom in container.contents))
|
||||
if(isarea(cur_atom))
|
||||
return -1
|
||||
if(istype(cur_atom.loc, /obj/item/weapon/storage))
|
||||
if(istype(cur_atom.loc, /obj/item/storage))
|
||||
depth++
|
||||
cur_atom = cur_atom.loc
|
||||
|
||||
@@ -507,7 +507,7 @@
|
||||
while(cur_atom && !isturf(cur_atom))
|
||||
if(isarea(cur_atom))
|
||||
return -1
|
||||
if(istype(cur_atom.loc, /obj/item/weapon/storage))
|
||||
if(istype(cur_atom.loc, /obj/item/storage))
|
||||
depth++
|
||||
cur_atom = cur_atom.loc
|
||||
|
||||
@@ -516,7 +516,7 @@
|
||||
|
||||
return depth
|
||||
|
||||
/obj/item/weapon/storage/serialize()
|
||||
/obj/item/storage/serialize()
|
||||
var data = ..()
|
||||
var/list/content_list = list()
|
||||
data["content"] = content_list
|
||||
@@ -532,7 +532,7 @@
|
||||
content_list[content_list.len] = AM.serialize()
|
||||
return data
|
||||
|
||||
/obj/item/weapon/storage/deserialize(list/data)
|
||||
/obj/item/storage/deserialize(list/data)
|
||||
if(isnum(data["slots"]))
|
||||
storage_slots = data["slots"]
|
||||
if(isnum(data["max_w_class"]))
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/obj/item/weapon/storage/toolbox
|
||||
/obj/item/storage/toolbox
|
||||
name = "toolbox"
|
||||
desc = "Danger. Very robust."
|
||||
icon = 'icons/obj/storage.dmi'
|
||||
@@ -15,51 +15,51 @@
|
||||
attack_verb = list("robusted")
|
||||
hitsound = 'sound/weapons/smash.ogg'
|
||||
|
||||
/obj/item/weapon/storage/toolbox/emergency
|
||||
/obj/item/storage/toolbox/emergency
|
||||
name = "emergency toolbox"
|
||||
icon_state = "red"
|
||||
item_state = "toolbox_red"
|
||||
|
||||
/obj/item/weapon/storage/toolbox/emergency/New()
|
||||
/obj/item/storage/toolbox/emergency/New()
|
||||
..()
|
||||
new /obj/item/weapon/crowbar/red(src)
|
||||
new /obj/item/weapon/weldingtool/mini(src)
|
||||
new /obj/item/weapon/extinguisher/mini(src)
|
||||
new /obj/item/crowbar/red(src)
|
||||
new /obj/item/weldingtool/mini(src)
|
||||
new /obj/item/extinguisher/mini(src)
|
||||
if(prob(50))
|
||||
new /obj/item/device/flashlight(src)
|
||||
else
|
||||
new /obj/item/device/flashlight/flare(src)
|
||||
new /obj/item/device/radio(src)
|
||||
|
||||
/obj/item/weapon/storage/toolbox/mechanical
|
||||
/obj/item/storage/toolbox/mechanical
|
||||
name = "mechanical toolbox"
|
||||
icon_state = "blue"
|
||||
item_state = "toolbox_blue"
|
||||
|
||||
/obj/item/weapon/storage/toolbox/mechanical/New()
|
||||
/obj/item/storage/toolbox/mechanical/New()
|
||||
..()
|
||||
new /obj/item/weapon/screwdriver(src)
|
||||
new /obj/item/weapon/wrench(src)
|
||||
new /obj/item/weapon/weldingtool(src)
|
||||
new /obj/item/weapon/crowbar(src)
|
||||
new /obj/item/screwdriver(src)
|
||||
new /obj/item/wrench(src)
|
||||
new /obj/item/weldingtool(src)
|
||||
new /obj/item/crowbar(src)
|
||||
new /obj/item/device/analyzer(src)
|
||||
new /obj/item/weapon/wirecutters(src)
|
||||
new /obj/item/wirecutters(src)
|
||||
|
||||
/obj/item/weapon/storage/toolbox/mechanical/greytide
|
||||
/obj/item/storage/toolbox/mechanical/greytide
|
||||
flags = NODROP
|
||||
|
||||
/obj/item/weapon/storage/toolbox/electrical
|
||||
/obj/item/storage/toolbox/electrical
|
||||
name = "electrical toolbox"
|
||||
icon_state = "yellow"
|
||||
item_state = "toolbox_yellow"
|
||||
|
||||
/obj/item/weapon/storage/toolbox/electrical/New()
|
||||
/obj/item/storage/toolbox/electrical/New()
|
||||
..()
|
||||
var/pickedcolor = pick(COLOR_RED, COLOR_YELLOW, COLOR_GREEN, COLOR_BLUE, COLOR_PINK, COLOR_ORANGE, COLOR_CYAN, COLOR_WHITE)
|
||||
new /obj/item/weapon/screwdriver(src)
|
||||
new /obj/item/weapon/wirecutters(src)
|
||||
new /obj/item/screwdriver(src)
|
||||
new /obj/item/wirecutters(src)
|
||||
new /obj/item/device/t_scanner(src)
|
||||
new /obj/item/weapon/crowbar(src)
|
||||
new /obj/item/crowbar(src)
|
||||
new /obj/item/stack/cable_coil(src, 30, pickedcolor)
|
||||
new /obj/item/stack/cable_coil(src, 30, pickedcolor)
|
||||
if(prob(5))
|
||||
@@ -67,7 +67,7 @@
|
||||
else
|
||||
new /obj/item/stack/cable_coil(src, 30, pickedcolor)
|
||||
|
||||
/obj/item/weapon/storage/toolbox/syndicate
|
||||
/obj/item/storage/toolbox/syndicate
|
||||
name = "suspicious looking toolbox"
|
||||
icon_state = "syndicate"
|
||||
item_state = "toolbox_syndi"
|
||||
@@ -76,33 +76,33 @@
|
||||
force = 15.0
|
||||
throwforce = 18.0
|
||||
|
||||
/obj/item/weapon/storage/toolbox/syndicate/New()
|
||||
/obj/item/storage/toolbox/syndicate/New()
|
||||
..()
|
||||
new /obj/item/weapon/screwdriver(src, "red")
|
||||
new /obj/item/weapon/wrench(src)
|
||||
new /obj/item/weapon/weldingtool/largetank(src)
|
||||
new /obj/item/weapon/crowbar/red(src)
|
||||
new /obj/item/weapon/wirecutters(src, "red")
|
||||
new /obj/item/screwdriver(src, "red")
|
||||
new /obj/item/wrench(src)
|
||||
new /obj/item/weldingtool/largetank(src)
|
||||
new /obj/item/crowbar/red(src)
|
||||
new /obj/item/wirecutters(src, "red")
|
||||
new /obj/item/device/multitool(src)
|
||||
new /obj/item/clothing/gloves/combat(src)
|
||||
|
||||
/obj/item/weapon/storage/toolbox/drone
|
||||
/obj/item/storage/toolbox/drone
|
||||
name = "mechanical toolbox"
|
||||
icon_state = "blue"
|
||||
item_state = "toolbox_blue"
|
||||
|
||||
/obj/item/weapon/storage/toolbox/drone/New()
|
||||
/obj/item/storage/toolbox/drone/New()
|
||||
..()
|
||||
var/pickedcolor = pick(pick(COLOR_RED, COLOR_YELLOW, COLOR_GREEN, COLOR_BLUE, COLOR_PINK, COLOR_ORANGE, COLOR_CYAN, COLOR_WHITE))
|
||||
new /obj/item/weapon/screwdriver(src)
|
||||
new /obj/item/weapon/wrench(src)
|
||||
new /obj/item/weapon/weldingtool(src)
|
||||
new /obj/item/weapon/crowbar(src)
|
||||
new /obj/item/screwdriver(src)
|
||||
new /obj/item/wrench(src)
|
||||
new /obj/item/weldingtool(src)
|
||||
new /obj/item/crowbar(src)
|
||||
new /obj/item/stack/cable_coil(src, 30, pickedcolor)
|
||||
new /obj/item/weapon/wirecutters(src)
|
||||
new /obj/item/wirecutters(src)
|
||||
new /obj/item/device/multitool(src)
|
||||
|
||||
/obj/item/weapon/storage/toolbox/brass
|
||||
/obj/item/storage/toolbox/brass
|
||||
name = "brass box"
|
||||
desc = "A huge brass box with several indentations in its surface."
|
||||
icon_state = "brassbox"
|
||||
@@ -113,10 +113,10 @@
|
||||
storage_slots = 28
|
||||
attack_verb = list("robusted", "crushed", "smashed")
|
||||
|
||||
/obj/item/weapon/storage/toolbox/brass/prefilled/New()
|
||||
/obj/item/storage/toolbox/brass/prefilled/New()
|
||||
..()
|
||||
new /obj/item/weapon/screwdriver/brass(src)
|
||||
new /obj/item/weapon/wirecutters/brass(src)
|
||||
new /obj/item/weapon/wrench/brass(src)
|
||||
new /obj/item/weapon/crowbar/brass(src)
|
||||
new /obj/item/weapon/weldingtool/experimental/brass(src)
|
||||
new /obj/item/screwdriver/brass(src)
|
||||
new /obj/item/wirecutters/brass(src)
|
||||
new /obj/item/wrench/brass(src)
|
||||
new /obj/item/crowbar/brass(src)
|
||||
new /obj/item/weldingtool/experimental/brass(src)
|
||||
|
||||
@@ -1,142 +1,142 @@
|
||||
/obj/item/weapon/storage/box/syndicate/
|
||||
/obj/item/storage/box/syndicate/
|
||||
New()
|
||||
..()
|
||||
switch(pickweight(list("bloodyspai" = 1, "thief" = 1, "bond" = 1, "sabotage" = 1, "payday" = 1, "implant" = 1, "hacker" = 1, "darklord" = 1, "gadgets" = 1)))
|
||||
if("bloodyspai")
|
||||
new /obj/item/weapon/twohanded/garrote(src)
|
||||
new /obj/item/weapon/pinpointer/advpinpointer(src)
|
||||
new /obj/item/twohanded/garrote(src)
|
||||
new /obj/item/pinpointer/advpinpointer(src)
|
||||
new /obj/item/clothing/mask/gas/voice(src)
|
||||
new /obj/item/clothing/under/chameleon(src)
|
||||
new /obj/item/weapon/card/id/syndicate(src)
|
||||
new /obj/item/weapon/storage/box/syndie_kit/emp(src)
|
||||
new /obj/item/card/id/syndicate(src)
|
||||
new /obj/item/storage/box/syndie_kit/emp(src)
|
||||
new /obj/item/device/camera_bug(src)
|
||||
return
|
||||
|
||||
if("thief")
|
||||
new /obj/item/weapon/gun/energy/kinetic_accelerator/crossbow(src)
|
||||
new /obj/item/gun/energy/kinetic_accelerator/crossbow(src)
|
||||
new /obj/item/device/chameleon(src)
|
||||
new /obj/item/clothing/gloves/color/black/thief(src)
|
||||
new /obj/item/weapon/card/id/syndicate(src)
|
||||
new /obj/item/card/id/syndicate(src)
|
||||
return
|
||||
|
||||
if("bond")
|
||||
new /obj/item/weapon/gun/projectile/automatic/pistol(src)
|
||||
new /obj/item/weapon/suppressor(src)
|
||||
new /obj/item/gun/projectile/automatic/pistol(src)
|
||||
new /obj/item/suppressor(src)
|
||||
new /obj/item/ammo_box/magazine/m10mm/hp(src)
|
||||
new /obj/item/device/encryptionkey/syndicate(src)
|
||||
new /obj/item/weapon/storage/fancy/cigarettes/cigpack_syndicate(src)
|
||||
new /obj/item/weapon/implanter/krav_maga(src)
|
||||
new /obj/item/weapon/reagent_containers/food/drinks/drinkingglass/alliescocktail(src)
|
||||
new /obj/item/storage/fancy/cigarettes/cigpack_syndicate(src)
|
||||
new /obj/item/implanter/krav_maga(src)
|
||||
new /obj/item/reagent_containers/food/drinks/drinkingglass/alliescocktail(src)
|
||||
return
|
||||
|
||||
if("sabotage")
|
||||
new /obj/item/device/powersink(src)
|
||||
new /obj/item/weapon/grenade/syndieminibomb(src)
|
||||
new /obj/item/weapon/card/emag(src)
|
||||
new /obj/item/weapon/grenade/clusterbuster/n2o(src)
|
||||
new /obj/item/weapon/storage/box/syndie_kit/space(src)
|
||||
new /obj/item/grenade/syndieminibomb(src)
|
||||
new /obj/item/card/emag(src)
|
||||
new /obj/item/grenade/clusterbuster/n2o(src)
|
||||
new /obj/item/storage/box/syndie_kit/space(src)
|
||||
new /obj/item/clothing/gloves/color/yellow(src)
|
||||
new /obj/item/weapon/rcd/preloaded(src)
|
||||
new /obj/item/rcd/preloaded(src)
|
||||
return
|
||||
|
||||
if("payday")
|
||||
new /obj/item/weapon/gun/projectile/revolver(src)
|
||||
new /obj/item/gun/projectile/revolver(src)
|
||||
new /obj/item/ammo_box/a357(src)
|
||||
new /obj/item/weapon/card/emag(src)
|
||||
new /obj/item/weapon/grenade/plastic/x4(src)
|
||||
new /obj/item/weapon/card/id/syndicate(src)
|
||||
new /obj/item/card/emag(src)
|
||||
new /obj/item/grenade/plastic/x4(src)
|
||||
new /obj/item/card/id/syndicate(src)
|
||||
new /obj/item/clothing/gloves/color/latex/nitrile(src)
|
||||
new /obj/item/clothing/mask/gas/clown_hat(src)
|
||||
return
|
||||
|
||||
if("implant")
|
||||
new /obj/item/weapon/implanter/uplink(src)
|
||||
new /obj/item/weapon/implanter/adrenalin(src)
|
||||
new /obj/item/weapon/implanter/storage(src)
|
||||
new /obj/item/weapon/implanter/freedom(src)
|
||||
new /obj/item/implanter/uplink(src)
|
||||
new /obj/item/implanter/adrenalin(src)
|
||||
new /obj/item/implanter/storage(src)
|
||||
new /obj/item/implanter/freedom(src)
|
||||
return
|
||||
|
||||
if("hacker")
|
||||
new /obj/item/weapon/aiModule/syndicate(src)
|
||||
new /obj/item/aiModule/syndicate(src)
|
||||
new /obj/item/device/encryptionkey/binary(src)
|
||||
new /obj/item/weapon/aiModule/toyAI(src)
|
||||
new /obj/item/aiModule/toyAI(src)
|
||||
return
|
||||
|
||||
if("darklord")
|
||||
new /obj/item/weapon/melee/energy/sword/saber/red(src)
|
||||
new /obj/item/weapon/melee/energy/sword/saber/red(src)
|
||||
new /obj/item/weapon/dnainjector/telemut/darkbundle(src)
|
||||
new /obj/item/melee/energy/sword/saber/red(src)
|
||||
new /obj/item/melee/energy/sword/saber/red(src)
|
||||
new /obj/item/dnainjector/telemut/darkbundle(src)
|
||||
new /obj/item/clothing/suit/hooded/chaplain_hoodie(src)
|
||||
new /obj/item/weapon/card/id/syndicate(src)
|
||||
new /obj/item/card/id/syndicate(src)
|
||||
return
|
||||
|
||||
if("gadgets")
|
||||
new /obj/item/clothing/gloves/color/yellow/power(src)
|
||||
new /obj/item/weapon/pen/sleepy(src)
|
||||
new /obj/item/pen/sleepy(src)
|
||||
new /obj/item/clothing/glasses/thermal/syndi(src)
|
||||
new /obj/item/device/flashlight/emp(src)
|
||||
new /obj/item/clothing/shoes/syndigaloshes(src)
|
||||
new /obj/item/weapon/stamp/chameleon(src)
|
||||
new /obj/item/stamp/chameleon(src)
|
||||
new /obj/item/device/multitool/ai_detect(src)
|
||||
return
|
||||
|
||||
/obj/item/weapon/storage/box/syndie_kit
|
||||
/obj/item/storage/box/syndie_kit
|
||||
name = "Box"
|
||||
desc = "A sleek, sturdy box"
|
||||
icon_state = "box_of_doom"
|
||||
|
||||
/obj/item/weapon/storage/box/syndie_kit/space
|
||||
/obj/item/storage/box/syndie_kit/space
|
||||
name = "Boxed Space Suit and Helmet"
|
||||
can_hold = list(/obj/item/clothing/suit/space/syndicate/black/red, /obj/item/clothing/head/helmet/space/syndicate/black/red)
|
||||
max_w_class = WEIGHT_CLASS_NORMAL
|
||||
|
||||
/obj/item/weapon/storage/box/syndie_kit/space/New()
|
||||
/obj/item/storage/box/syndie_kit/space/New()
|
||||
..()
|
||||
new /obj/item/clothing/suit/space/syndicate/black/red(src)
|
||||
new /obj/item/clothing/head/helmet/space/syndicate/black/red(src)
|
||||
return
|
||||
|
||||
/obj/item/weapon/storage/box/syndie_kit/hardsuit
|
||||
/obj/item/storage/box/syndie_kit/hardsuit
|
||||
name = "Boxed Blood Red Suit and Helmet"
|
||||
can_hold = list(/obj/item/clothing/suit/space/hardsuit/syndi, /obj/item/clothing/head/helmet/space/hardsuit/syndi)
|
||||
max_w_class = WEIGHT_CLASS_NORMAL
|
||||
|
||||
/obj/item/weapon/storage/box/syndie_kit/hardsuit/New()
|
||||
/obj/item/storage/box/syndie_kit/hardsuit/New()
|
||||
..()
|
||||
new /obj/item/clothing/suit/space/hardsuit/syndi(src)
|
||||
new /obj/item/clothing/head/helmet/space/hardsuit/syndi(src)
|
||||
return
|
||||
|
||||
/obj/item/weapon/storage/box/syndie_kit/elite_hardsuit
|
||||
/obj/item/storage/box/syndie_kit/elite_hardsuit
|
||||
name = "Boxed Elite Syndicate Hardsuit and Helmet"
|
||||
can_hold = list(/obj/item/clothing/suit/space/hardsuit/syndi/elite, /obj/item/clothing/head/helmet/space/hardsuit/syndi/elite)
|
||||
max_w_class = WEIGHT_CLASS_NORMAL
|
||||
|
||||
/obj/item/weapon/storage/box/syndie_kit/elite_hardsuit/New()
|
||||
/obj/item/storage/box/syndie_kit/elite_hardsuit/New()
|
||||
..()
|
||||
new /obj/item/clothing/suit/space/hardsuit/syndi/elite(src)
|
||||
new /obj/item/clothing/head/helmet/space/hardsuit/syndi/elite(src)
|
||||
|
||||
/obj/item/weapon/storage/box/syndie_kit/shielded_hardsuit
|
||||
/obj/item/storage/box/syndie_kit/shielded_hardsuit
|
||||
name = "Boxed Shielded Syndicate Hardsuit and Helmet"
|
||||
can_hold = list(/obj/item/clothing/suit/space/hardsuit/shielded/syndi, /obj/item/clothing/head/helmet/space/hardsuit/shielded/syndi)
|
||||
max_w_class = WEIGHT_CLASS_BULKY
|
||||
|
||||
/obj/item/weapon/storage/box/syndie_kit/shielded_hardsuit/New()
|
||||
/obj/item/storage/box/syndie_kit/shielded_hardsuit/New()
|
||||
..()
|
||||
new /obj/item/clothing/suit/space/hardsuit/shielded/syndi(src)
|
||||
new /obj/item/clothing/head/helmet/space/hardsuit/shielded/syndi(src)
|
||||
|
||||
/obj/item/weapon/storage/box/syndie_kit/conversion
|
||||
/obj/item/storage/box/syndie_kit/conversion
|
||||
name = "box (CK)"
|
||||
|
||||
/obj/item/weapon/storage/box/syndie_kit/conversion/New()
|
||||
/obj/item/storage/box/syndie_kit/conversion/New()
|
||||
..()
|
||||
new /obj/item/weapon/conversion_kit(src)
|
||||
new /obj/item/conversion_kit(src)
|
||||
new /obj/item/ammo_box/a357(src)
|
||||
return
|
||||
|
||||
/obj/item/weapon/storage/box/syndie_kit/boolets
|
||||
/obj/item/storage/box/syndie_kit/boolets
|
||||
name = "Shotgun shells"
|
||||
|
||||
New()
|
||||
@@ -148,60 +148,60 @@
|
||||
new /obj/item/ammo_casing/shotgun/fakebeanbag(src)
|
||||
new /obj/item/ammo_casing/shotgun/fakebeanbag(src)
|
||||
|
||||
/obj/item/weapon/storage/box/syndie_kit/emp
|
||||
/obj/item/storage/box/syndie_kit/emp
|
||||
name = "boxed EMP kit"
|
||||
|
||||
/obj/item/weapon/storage/box/syndie_kit/emp/New()
|
||||
/obj/item/storage/box/syndie_kit/emp/New()
|
||||
..()
|
||||
new /obj/item/weapon/grenade/empgrenade(src)
|
||||
new /obj/item/weapon/grenade/empgrenade(src)
|
||||
new /obj/item/weapon/implanter/emp/(src)
|
||||
new /obj/item/grenade/empgrenade(src)
|
||||
new /obj/item/grenade/empgrenade(src)
|
||||
new /obj/item/implanter/emp/(src)
|
||||
|
||||
/obj/item/weapon/storage/box/syndie_kit/throwing_weapons
|
||||
/obj/item/storage/box/syndie_kit/throwing_weapons
|
||||
name = "boxed throwing kit"
|
||||
can_hold = list(/obj/item/weapon/throwing_star, /obj/item/weapon/restraints/legcuffs/bola/tactical)
|
||||
can_hold = list(/obj/item/throwing_star, /obj/item/restraints/legcuffs/bola/tactical)
|
||||
max_combined_w_class = 16
|
||||
max_w_class = WEIGHT_CLASS_NORMAL
|
||||
|
||||
/obj/item/weapon/storage/box/syndie_kit/throwing_weapons/New()
|
||||
/obj/item/storage/box/syndie_kit/throwing_weapons/New()
|
||||
..()
|
||||
new /obj/item/weapon/throwing_star(src)
|
||||
new /obj/item/weapon/throwing_star(src)
|
||||
new /obj/item/weapon/throwing_star(src)
|
||||
new /obj/item/weapon/throwing_star(src)
|
||||
new /obj/item/weapon/throwing_star(src)
|
||||
new /obj/item/weapon/restraints/legcuffs/bola/tactical(src)
|
||||
new /obj/item/weapon/restraints/legcuffs/bola/tactical(src)
|
||||
new /obj/item/throwing_star(src)
|
||||
new /obj/item/throwing_star(src)
|
||||
new /obj/item/throwing_star(src)
|
||||
new /obj/item/throwing_star(src)
|
||||
new /obj/item/throwing_star(src)
|
||||
new /obj/item/restraints/legcuffs/bola/tactical(src)
|
||||
new /obj/item/restraints/legcuffs/bola/tactical(src)
|
||||
|
||||
/obj/item/weapon/storage/box/syndie_kit/sarin
|
||||
/obj/item/storage/box/syndie_kit/sarin
|
||||
name = "Sarin Gas Grenades"
|
||||
|
||||
New()
|
||||
..()
|
||||
new /obj/item/weapon/grenade/chem_grenade/saringas(src)
|
||||
new /obj/item/weapon/grenade/chem_grenade/saringas(src)
|
||||
new /obj/item/weapon/grenade/chem_grenade/saringas(src)
|
||||
new /obj/item/weapon/grenade/chem_grenade/saringas(src)
|
||||
new /obj/item/grenade/chem_grenade/saringas(src)
|
||||
new /obj/item/grenade/chem_grenade/saringas(src)
|
||||
new /obj/item/grenade/chem_grenade/saringas(src)
|
||||
new /obj/item/grenade/chem_grenade/saringas(src)
|
||||
|
||||
/obj/item/weapon/storage/box/syndie_kit/bioterror
|
||||
/obj/item/storage/box/syndie_kit/bioterror
|
||||
name = "bioterror syringe box"
|
||||
|
||||
New()
|
||||
..()
|
||||
new /obj/item/weapon/reagent_containers/syringe/bioterror(src)
|
||||
new /obj/item/weapon/reagent_containers/syringe/bioterror(src)
|
||||
new /obj/item/weapon/reagent_containers/syringe/bioterror(src)
|
||||
new /obj/item/weapon/reagent_containers/syringe/bioterror(src)
|
||||
new /obj/item/weapon/reagent_containers/syringe/bioterror(src)
|
||||
new /obj/item/weapon/reagent_containers/syringe/bioterror(src)
|
||||
new /obj/item/weapon/reagent_containers/syringe/bioterror(src)
|
||||
new /obj/item/reagent_containers/syringe/bioterror(src)
|
||||
new /obj/item/reagent_containers/syringe/bioterror(src)
|
||||
new /obj/item/reagent_containers/syringe/bioterror(src)
|
||||
new /obj/item/reagent_containers/syringe/bioterror(src)
|
||||
new /obj/item/reagent_containers/syringe/bioterror(src)
|
||||
new /obj/item/reagent_containers/syringe/bioterror(src)
|
||||
new /obj/item/reagent_containers/syringe/bioterror(src)
|
||||
return
|
||||
|
||||
/obj/item/weapon/storage/box/syndie_kit/caneshotgun
|
||||
/obj/item/storage/box/syndie_kit/caneshotgun
|
||||
name = "cane gun kit"
|
||||
|
||||
|
||||
/obj/item/weapon/storage/box/syndie_kit/caneshotgun/New()
|
||||
/obj/item/storage/box/syndie_kit/caneshotgun/New()
|
||||
..()
|
||||
new /obj/item/ammo_casing/shotgun/dart/assassination(src)
|
||||
new /obj/item/ammo_casing/shotgun/dart/assassination(src)
|
||||
@@ -209,48 +209,48 @@
|
||||
new /obj/item/ammo_casing/shotgun/dart/assassination(src)
|
||||
new /obj/item/ammo_casing/shotgun/dart/assassination(src)
|
||||
new /obj/item/ammo_casing/shotgun/dart/assassination(src)
|
||||
new /obj/item/weapon/gun/projectile/revolver/doublebarrel/improvised/cane(src)
|
||||
new /obj/item/gun/projectile/revolver/doublebarrel/improvised/cane(src)
|
||||
|
||||
|
||||
/obj/item/weapon/storage/box/syndie_kit/atmosgasgrenades
|
||||
/obj/item/storage/box/syndie_kit/atmosgasgrenades
|
||||
name = "Atmos Grenades"
|
||||
|
||||
/obj/item/weapon/storage/box/syndie_kit/atmosgasgrenades/New()
|
||||
/obj/item/storage/box/syndie_kit/atmosgasgrenades/New()
|
||||
..()
|
||||
new /obj/item/weapon/grenade/clusterbuster/plasma(src)
|
||||
new /obj/item/weapon/grenade/clusterbuster/n2o(src)
|
||||
new /obj/item/grenade/clusterbuster/plasma(src)
|
||||
new /obj/item/grenade/clusterbuster/n2o(src)
|
||||
|
||||
/obj/item/weapon/storage/box/syndie_kit/missionary_set
|
||||
/obj/item/storage/box/syndie_kit/missionary_set
|
||||
name = "Missionary Starter Kit"
|
||||
|
||||
/obj/item/weapon/storage/box/syndie_kit/missionary_set/New()
|
||||
/obj/item/storage/box/syndie_kit/missionary_set/New()
|
||||
..()
|
||||
new /obj/item/weapon/nullrod/missionary_staff(src)
|
||||
new /obj/item/nullrod/missionary_staff(src)
|
||||
new /obj/item/clothing/suit/hooded/chaplain_hoodie/missionary_robe(src)
|
||||
var/obj/item/weapon/storage/bible/B = new /obj/item/weapon/storage/bible(src)
|
||||
var/obj/item/storage/bible/B = new /obj/item/storage/bible(src)
|
||||
if(prob(25)) //an omen of success to come?
|
||||
B.deity_name = "Success"
|
||||
B.icon_state = "greentext"
|
||||
B.item_state = "greentext"
|
||||
|
||||
|
||||
/obj/item/weapon/storage/box/syndie_kit/cutouts
|
||||
/obj/item/storage/box/syndie_kit/cutouts
|
||||
name = "Fortified Artistic Box"
|
||||
|
||||
/obj/item/weapon/storage/box/syndie_kit/cutouts/New()
|
||||
/obj/item/storage/box/syndie_kit/cutouts/New()
|
||||
..()
|
||||
for(var/i in 1 to 3)
|
||||
new/obj/item/cardboard_cutout/adaptive(src)
|
||||
new/obj/item/toy/crayon/spraycan(src)
|
||||
|
||||
/obj/item/weapon/storage/box/syndie_kit/bonerepair
|
||||
/obj/item/storage/box/syndie_kit/bonerepair
|
||||
name = "bone repair kit"
|
||||
desc = "A box containing one prototype field bone repair kit."
|
||||
|
||||
/obj/item/weapon/storage/box/syndie_kit/bonerepair/New()
|
||||
/obj/item/storage/box/syndie_kit/bonerepair/New()
|
||||
..()
|
||||
new /obj/item/weapon/reagent_containers/hypospray/autoinjector/nanocalcium(src)
|
||||
var/obj/item/weapon/paper/P = new /obj/item/weapon/paper(src)
|
||||
new /obj/item/reagent_containers/hypospray/autoinjector/nanocalcium(src)
|
||||
var/obj/item/paper/P = new /obj/item/paper(src)
|
||||
P.name = "Bone repair guide"
|
||||
P.desc = "For when you want to safely get off Mr Bones' Wild Ride."
|
||||
P.info = {"
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/obj/item/weapon/storage/wallet
|
||||
/obj/item/storage/wallet
|
||||
name = "leather wallet"
|
||||
desc = "Made from genuine leather, it is of the highest quality."
|
||||
storage_slots = 10
|
||||
@@ -8,44 +8,44 @@
|
||||
burn_state = FLAMMABLE
|
||||
can_hold = list(
|
||||
/obj/item/stack/spacecash,
|
||||
/obj/item/weapon/card,
|
||||
/obj/item/card,
|
||||
/obj/item/clothing/mask/cigarette,
|
||||
/obj/item/device/flashlight/pen,
|
||||
/obj/item/seeds,
|
||||
/obj/item/stack/medical,
|
||||
/obj/item/toy/crayon,
|
||||
/obj/item/weapon/coin,
|
||||
/obj/item/weapon/dice,
|
||||
/obj/item/weapon/disk,
|
||||
/obj/item/weapon/implanter,
|
||||
/obj/item/weapon/lighter,
|
||||
/obj/item/weapon/match,
|
||||
/obj/item/weapon/paper,
|
||||
/obj/item/weapon/pen,
|
||||
/obj/item/weapon/photo,
|
||||
/obj/item/weapon/reagent_containers/dropper,
|
||||
/obj/item/weapon/screwdriver,
|
||||
/obj/item/weapon/stamp)
|
||||
/obj/item/coin,
|
||||
/obj/item/dice,
|
||||
/obj/item/disk,
|
||||
/obj/item/implanter,
|
||||
/obj/item/lighter,
|
||||
/obj/item/match,
|
||||
/obj/item/paper,
|
||||
/obj/item/pen,
|
||||
/obj/item/photo,
|
||||
/obj/item/reagent_containers/dropper,
|
||||
/obj/item/screwdriver,
|
||||
/obj/item/stamp)
|
||||
slot_flags = SLOT_ID
|
||||
|
||||
var/obj/item/weapon/card/id/front_id = null
|
||||
var/obj/item/card/id/front_id = null
|
||||
|
||||
|
||||
/obj/item/weapon/storage/wallet/remove_from_storage(obj/item/W as obj, atom/new_location)
|
||||
/obj/item/storage/wallet/remove_from_storage(obj/item/W as obj, atom/new_location)
|
||||
. = ..(W, new_location)
|
||||
if(.)
|
||||
if(W == front_id)
|
||||
front_id = null
|
||||
update_icon()
|
||||
|
||||
/obj/item/weapon/storage/wallet/handle_item_insertion(obj/item/W as obj, prevent_warning = 0)
|
||||
/obj/item/storage/wallet/handle_item_insertion(obj/item/W as obj, prevent_warning = 0)
|
||||
. = ..(W, prevent_warning)
|
||||
if(.)
|
||||
if(!front_id && istype(W, /obj/item/weapon/card/id))
|
||||
if(!front_id && istype(W, /obj/item/card/id))
|
||||
front_id = W
|
||||
update_icon()
|
||||
|
||||
/obj/item/weapon/storage/wallet/update_icon()
|
||||
/obj/item/storage/wallet/update_icon()
|
||||
|
||||
if(front_id)
|
||||
switch(front_id.icon_state)
|
||||
@@ -64,17 +64,17 @@
|
||||
icon_state = "wallet"
|
||||
|
||||
|
||||
/obj/item/weapon/storage/wallet/GetID()
|
||||
/obj/item/storage/wallet/GetID()
|
||||
return front_id
|
||||
|
||||
/obj/item/weapon/storage/wallet/GetAccess()
|
||||
/obj/item/storage/wallet/GetAccess()
|
||||
var/obj/item/I = GetID()
|
||||
if(I)
|
||||
return I.GetAccess()
|
||||
else
|
||||
return ..()
|
||||
|
||||
/obj/item/weapon/storage/wallet/random/New()
|
||||
/obj/item/storage/wallet/random/New()
|
||||
..()
|
||||
var/item1_type = pick(/obj/item/stack/spacecash,
|
||||
/obj/item/stack/spacecash/c10,
|
||||
@@ -88,7 +88,7 @@
|
||||
/obj/item/stack/spacecash/c100,
|
||||
/obj/item/stack/spacecash/c500,
|
||||
/obj/item/stack/spacecash/c1000)
|
||||
var/item3_type = pick( /obj/item/weapon/coin/silver, /obj/item/weapon/coin/silver, /obj/item/weapon/coin/gold, /obj/item/weapon/coin/iron, /obj/item/weapon/coin/iron, /obj/item/weapon/coin/iron )
|
||||
var/item3_type = pick( /obj/item/coin/silver, /obj/item/coin/silver, /obj/item/coin/gold, /obj/item/coin/iron, /obj/item/coin/iron, /obj/item/coin/iron )
|
||||
|
||||
spawn(2)
|
||||
if(item1_type)
|
||||
@@ -102,26 +102,26 @@
|
||||
// Color Wallets //
|
||||
//////////////////////////////////////
|
||||
|
||||
/obj/item/weapon/storage/wallet/color
|
||||
/obj/item/storage/wallet/color
|
||||
name = "cheap wallet"
|
||||
desc = "A cheap wallet from the arcade."
|
||||
storage_slots = 5 //smaller storage than normal wallets
|
||||
|
||||
/obj/item/weapon/storage/wallet/color/New()
|
||||
/obj/item/storage/wallet/color/New()
|
||||
..()
|
||||
if(!item_color)
|
||||
var/color_wallet = pick(subtypesof(/obj/item/weapon/storage/wallet/color))
|
||||
var/color_wallet = pick(subtypesof(/obj/item/storage/wallet/color))
|
||||
new color_wallet(src.loc)
|
||||
qdel(src)
|
||||
return
|
||||
UpdateDesc()
|
||||
|
||||
/obj/item/weapon/storage/wallet/color/proc/UpdateDesc()
|
||||
/obj/item/storage/wallet/color/proc/UpdateDesc()
|
||||
name = "cheap [item_color] wallet"
|
||||
desc = "A cheap, [item_color] wallet from the arcade."
|
||||
icon_state = "[item_color]_wallet"
|
||||
|
||||
/obj/item/weapon/storage/wallet/color/update_icon()
|
||||
/obj/item/storage/wallet/color/update_icon()
|
||||
if(front_id)
|
||||
switch(front_id.icon_state)
|
||||
if("id")
|
||||
@@ -138,20 +138,20 @@
|
||||
return
|
||||
icon_state = "[item_color]_wallet"
|
||||
|
||||
/obj/item/weapon/storage/wallet/color/blue
|
||||
/obj/item/storage/wallet/color/blue
|
||||
item_color = "blue"
|
||||
|
||||
/obj/item/weapon/storage/wallet/color/red
|
||||
/obj/item/storage/wallet/color/red
|
||||
item_color = "red"
|
||||
|
||||
/obj/item/weapon/storage/wallet/color/yellow
|
||||
/obj/item/storage/wallet/color/yellow
|
||||
item_color = "yellow"
|
||||
|
||||
/obj/item/weapon/storage/wallet/color/green
|
||||
/obj/item/storage/wallet/color/green
|
||||
item_color = "green"
|
||||
|
||||
/obj/item/weapon/storage/wallet/color/pink
|
||||
/obj/item/storage/wallet/color/pink
|
||||
item_color = "pink"
|
||||
|
||||
/obj/item/weapon/storage/waller/color/brown
|
||||
/obj/item/storage/waller/color/brown
|
||||
item_color = "brown"
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/obj/item/weapon/melee/baton
|
||||
/obj/item/melee/baton
|
||||
name = "stunbaton"
|
||||
desc = "A stun baton for incapacitating people with."
|
||||
icon_state = "stunbaton"
|
||||
@@ -12,29 +12,29 @@
|
||||
attack_verb = list("beaten")
|
||||
var/stunforce = 7
|
||||
var/status = 0
|
||||
var/obj/item/weapon/stock_parts/cell/high/bcell = null
|
||||
var/obj/item/stock_parts/cell/high/bcell = null
|
||||
var/hitcost = 1000
|
||||
|
||||
/obj/item/weapon/melee/baton/suicide_act(mob/user)
|
||||
/obj/item/melee/baton/suicide_act(mob/user)
|
||||
user.visible_message("<span class='suicide'>[user] is putting the live [name] in \his mouth! It looks like \he's trying to commit suicide.</span>")
|
||||
return (FIRELOSS)
|
||||
|
||||
/obj/item/weapon/melee/baton/New()
|
||||
/obj/item/melee/baton/New()
|
||||
..()
|
||||
update_icon()
|
||||
return
|
||||
|
||||
/obj/item/weapon/melee/baton/Destroy()
|
||||
/obj/item/melee/baton/Destroy()
|
||||
QDEL_NULL(bcell)
|
||||
return ..()
|
||||
|
||||
/obj/item/weapon/melee/baton/loaded/New() //this one starts with a cell pre-installed.
|
||||
/obj/item/melee/baton/loaded/New() //this one starts with a cell pre-installed.
|
||||
..()
|
||||
bcell = new(src)
|
||||
update_icon()
|
||||
return
|
||||
|
||||
/obj/item/weapon/melee/baton/proc/deductcharge(var/chrgdeductamt)
|
||||
/obj/item/melee/baton/proc/deductcharge(var/chrgdeductamt)
|
||||
if(bcell)
|
||||
if(bcell.charge < (hitcost+chrgdeductamt)) // If after the deduction the baton doesn't have enough charge for a stun hit it turns off.
|
||||
status = 0
|
||||
@@ -45,7 +45,7 @@
|
||||
else
|
||||
return 0
|
||||
|
||||
/obj/item/weapon/melee/baton/update_icon()
|
||||
/obj/item/melee/baton/update_icon()
|
||||
if(status)
|
||||
icon_state = "[base_icon]_active"
|
||||
else if(!bcell)
|
||||
@@ -53,16 +53,16 @@
|
||||
else
|
||||
icon_state = "[base_icon]"
|
||||
|
||||
/obj/item/weapon/melee/baton/examine(mob/user)
|
||||
/obj/item/melee/baton/examine(mob/user)
|
||||
..(user)
|
||||
if(bcell)
|
||||
to_chat(user, "<span class='notice'>The baton is [round(bcell.percent())]% charged.</span>")
|
||||
if(!bcell)
|
||||
to_chat(user, "<span class='warning'>The baton does not have a power source installed.</span>")
|
||||
|
||||
/obj/item/weapon/melee/baton/attackby(obj/item/weapon/W, mob/user, params)
|
||||
if(istype(W, /obj/item/weapon/stock_parts/cell))
|
||||
var/obj/item/weapon/stock_parts/cell/C = W
|
||||
/obj/item/melee/baton/attackby(obj/item/W, mob/user, params)
|
||||
if(istype(W, /obj/item/stock_parts/cell))
|
||||
var/obj/item/stock_parts/cell/C = W
|
||||
if(bcell)
|
||||
to_chat(user, "<span class='notice'>[src] already has a cell.</span>")
|
||||
else
|
||||
@@ -76,7 +76,7 @@
|
||||
to_chat(user, "<span class='notice'>You install a cell in [src].</span>")
|
||||
update_icon()
|
||||
|
||||
else if(istype(W, /obj/item/weapon/screwdriver))
|
||||
else if(istype(W, /obj/item/screwdriver))
|
||||
if(bcell)
|
||||
bcell.updateicon()
|
||||
bcell.loc = get_turf(src.loc)
|
||||
@@ -88,7 +88,7 @@
|
||||
..()
|
||||
return
|
||||
|
||||
/obj/item/weapon/melee/baton/attack_self(mob/user)
|
||||
/obj/item/melee/baton/attack_self(mob/user)
|
||||
if(bcell && bcell.charge >= hitcost)
|
||||
status = !status
|
||||
to_chat(user, "<span class='notice'>[src] is now [status ? "on" : "off"].</span>")
|
||||
@@ -102,7 +102,7 @@
|
||||
update_icon()
|
||||
add_fingerprint(user)
|
||||
|
||||
/obj/item/weapon/melee/baton/attack(mob/M, mob/living/user)
|
||||
/obj/item/melee/baton/attack(mob/M, mob/living/user)
|
||||
if(status && (CLUMSY in user.mutations) && prob(50))
|
||||
user.visible_message("<span class='danger'>[user] accidentally hits themself with [src]!</span>", \
|
||||
"<span class='userdanger'>You accidentally hit yourself with [src]!</span>")
|
||||
@@ -132,7 +132,7 @@
|
||||
..()
|
||||
|
||||
|
||||
/obj/item/weapon/melee/baton/proc/baton_stun(mob/living/L, mob/user)
|
||||
/obj/item/melee/baton/proc/baton_stun(mob/living/L, mob/user)
|
||||
if(ishuman(L))
|
||||
var/mob/living/carbon/human/H = L
|
||||
if(H.check_shields(0, "[user]'s [name]", src, MELEE_ATTACK)) //No message; check_shields() handles that
|
||||
@@ -162,12 +162,12 @@
|
||||
|
||||
add_logs(user, L, "stunned", object="stunbaton")
|
||||
|
||||
/obj/item/weapon/melee/baton/emp_act(severity)
|
||||
/obj/item/melee/baton/emp_act(severity)
|
||||
if(bcell)
|
||||
deductcharge(1000 / severity)
|
||||
..()
|
||||
|
||||
/obj/item/weapon/melee/baton/wash(mob/user, atom/source)
|
||||
/obj/item/melee/baton/wash(mob/user, atom/source)
|
||||
if(bcell)
|
||||
if(bcell.charge > 0 && status == 1)
|
||||
flick("baton_active", source)
|
||||
@@ -182,7 +182,7 @@
|
||||
..()
|
||||
|
||||
//Makeshift stun baton. Replacement for stun gloves.
|
||||
/obj/item/weapon/melee/baton/cattleprod
|
||||
/obj/item/melee/baton/cattleprod
|
||||
name = "stunprod"
|
||||
desc = "An improvised stun baton."
|
||||
icon_state = "stunprod_nocell"
|
||||
@@ -196,14 +196,14 @@
|
||||
slot_flags = SLOT_BACK
|
||||
var/obj/item/device/assembly/igniter/sparkler = null
|
||||
|
||||
/obj/item/weapon/melee/baton/cattleprod/New()
|
||||
/obj/item/melee/baton/cattleprod/New()
|
||||
..()
|
||||
sparkler = new(src)
|
||||
|
||||
/obj/item/weapon/melee/baton/cattleprod/Destroy()
|
||||
/obj/item/melee/baton/cattleprod/Destroy()
|
||||
QDEL_NULL(sparkler)
|
||||
return ..()
|
||||
|
||||
/obj/item/weapon/melee/baton/cattleprod/baton_stun()
|
||||
/obj/item/melee/baton/cattleprod/baton_stun()
|
||||
if(sparkler.activate())
|
||||
..()
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
/*
|
||||
* Banhammer
|
||||
*/
|
||||
/obj/item/weapon/banhammer/attack(mob/M, mob/user)
|
||||
/obj/item/banhammer/attack(mob/M, mob/user)
|
||||
to_chat(M, "<font color='red'><b> You have been banned FOR NO REISIN by [user]<b></font>")
|
||||
to_chat(user, "<font color='red'> You have <b>BANNED</b> [M]</font>")
|
||||
playsound(loc, 'sound/effects/adminhelp.ogg', 15) //keep it at 15% volume so people don't jump out of their skin too much
|
||||
@@ -16,10 +16,9 @@
|
||||
* Classic Baton
|
||||
*/
|
||||
|
||||
/obj/item/weapon/melee/classic_baton
|
||||
/obj/item/melee/classic_baton
|
||||
name = "police baton"
|
||||
desc = "A wooden truncheon for beating criminal scum."
|
||||
icon = 'icons/obj/weapons.dmi'
|
||||
icon_state = "baton"
|
||||
item_state = "classic_baton"
|
||||
slot_flags = SLOT_BELT
|
||||
@@ -28,7 +27,7 @@
|
||||
var/cooldown = 0
|
||||
var/on = 1
|
||||
|
||||
/obj/item/weapon/melee/classic_baton/attack(mob/target as mob, mob/living/user as mob)
|
||||
/obj/item/melee/classic_baton/attack(mob/target as mob, mob/living/user as mob)
|
||||
if(on)
|
||||
add_fingerprint(user)
|
||||
if((CLUMSY in user.mutations) && prob(50))
|
||||
@@ -71,21 +70,20 @@
|
||||
else
|
||||
return ..()
|
||||
|
||||
/obj/item/weapon/melee/classic_baton/ntcane
|
||||
/obj/item/melee/classic_baton/ntcane
|
||||
name = "fancy cane"
|
||||
desc = "A cane with special engraving on it. It seems well suited for fending off assailants..."
|
||||
icon_state = "cane_nt"
|
||||
item_state = "cane_nt"
|
||||
needs_permit = 0
|
||||
|
||||
/obj/item/weapon/melee/classic_baton/ntcane/is_crutch()
|
||||
/obj/item/melee/classic_baton/ntcane/is_crutch()
|
||||
return 1
|
||||
|
||||
//Telescopic baton
|
||||
/obj/item/weapon/melee/classic_baton/telescopic
|
||||
/obj/item/melee/classic_baton/telescopic
|
||||
name = "telescopic baton"
|
||||
desc = "A compact yet robust personal defense weapon. Can be concealed when folded."
|
||||
icon = 'icons/obj/weapons.dmi'
|
||||
icon_state = "telebaton_0"
|
||||
item_state = null
|
||||
slot_flags = SLOT_BELT
|
||||
@@ -94,7 +92,7 @@
|
||||
force = 0
|
||||
on = 0
|
||||
|
||||
/obj/item/weapon/melee/classic_baton/telescopic/attack_self(mob/user as mob)
|
||||
/obj/item/melee/classic_baton/telescopic/attack_self(mob/user as mob)
|
||||
on = !on
|
||||
if(on)
|
||||
to_chat(user, "<span class ='warning'>You extend the baton.</span>")
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user