mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-07-17 18:13:34 +01:00
Merge branch 'master' into tgglassfloors
This commit is contained in:
@@ -23,6 +23,7 @@
|
||||
/datum/painter/floor/paint_atom(atom/target, mob/user)
|
||||
if(!istype(target, /turf/simulated/floor/plasteel))
|
||||
to_chat(user, "<span class='warning'>[holder] can only be used on station flooring.</span>")
|
||||
return
|
||||
var/turf/simulated/floor/plasteel/F = target
|
||||
|
||||
if(F.icon_state == floor_state && F.dir == floor_dir)
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
/obj/item/painter
|
||||
name = "modular painter"
|
||||
icon = 'icons/obj/painting.dmi'
|
||||
icon_state = "floor_painter"
|
||||
usesound = 'sound/effects/spray2.ogg'
|
||||
flags = CONDUCT | NOBLUDGEON
|
||||
w_class = WEIGHT_CLASS_SMALL
|
||||
|
||||
@@ -264,6 +264,9 @@ REAGENT SCANNER
|
||||
else
|
||||
to_chat(user, "<span class='notice'>Subject's genes are stable.</span>")
|
||||
|
||||
if(HAS_TRAIT(H, TRAIT_HUSK))
|
||||
to_chat(user, "<span class='danger'>Subject is husked. Application of synthflesh is recommended.</span>")
|
||||
|
||||
/obj/item/healthanalyzer/attack_self(mob/user)
|
||||
toggle_mode()
|
||||
|
||||
|
||||
@@ -23,6 +23,10 @@ GLOBAL_LIST_INIT(rod_recipes, list ( \
|
||||
usesound = 'sound/items/deconstruct.ogg'
|
||||
merge_type = /obj/item/stack/rods
|
||||
|
||||
/obj/item/stack/rods/detailed_examine()
|
||||
return "Made from metal sheets. You can build a grille by using it in your hand. \
|
||||
Clicking on a floor without any tiles will reinforce the floor. You can make reinforced glass by combining rods and normal glass sheets."
|
||||
|
||||
/obj/item/stack/rods/cyborg
|
||||
energy_type = /datum/robot_energy_storage/rods
|
||||
is_cyborg = TRUE
|
||||
|
||||
@@ -36,6 +36,9 @@ GLOBAL_LIST_INIT(glass_recipes, list ( \
|
||||
merge_type = /obj/item/stack/sheet/glass
|
||||
point_value = 1
|
||||
|
||||
/obj/item/stack/sheet/glass/detailed_examine()
|
||||
return "Use in your hand to build a window. Can be upgraded to reinforced glass by adding metal rods, which are made from metal sheets."
|
||||
|
||||
/obj/item/stack/sheet/glass/fifty
|
||||
amount = 50
|
||||
|
||||
@@ -44,6 +47,10 @@ GLOBAL_LIST_INIT(glass_recipes, list ( \
|
||||
is_cyborg = TRUE
|
||||
materials = list()
|
||||
|
||||
/obj/item/stack/sheet/glass/cyborg/detailed_examine()
|
||||
return "Use in your hand to build a window. Can be upgraded to reinforced glass by adding metal rods, which are made from metal sheets.<br>\
|
||||
As a synthetic, you can acquire more sheets of glass by recharging."
|
||||
|
||||
/obj/item/stack/sheet/glass/New(loc, amount)
|
||||
recipes = GLOB.glass_recipes
|
||||
..()
|
||||
@@ -103,6 +110,9 @@ GLOBAL_LIST_INIT(reinforced_glass_recipes, list ( \
|
||||
recipes = GLOB.reinforced_glass_recipes
|
||||
..()
|
||||
|
||||
/obj/item/stack/sheet/rglass/detailed_examine()
|
||||
return "Use in your hand to build a window. Reinforced glass is much stronger against damage."
|
||||
|
||||
GLOBAL_LIST_INIT(pglass_recipes, list ( \
|
||||
new/datum/stack_recipe/window("directional window", /obj/structure/window/plasmabasic, time = 0, on_floor = TRUE, window_checks = TRUE), \
|
||||
new/datum/stack_recipe/window("fulltile window", /obj/structure/window/full/plasmabasic, 2, time = 0, on_floor = TRUE, window_checks = TRUE) \
|
||||
@@ -113,6 +123,10 @@ GLOBAL_LIST_INIT(pglass_recipes, list ( \
|
||||
is_cyborg = TRUE
|
||||
materials = list()
|
||||
|
||||
/obj/item/stack/sheet/rglass/cyborg/detailed_examine()
|
||||
return "Use in your hand to build a window. Reinforced glass is much stronger against damage.<br>\
|
||||
As a synthetic, you can gain more reinforced glass by recharging."
|
||||
|
||||
/obj/item/stack/sheet/plasmaglass
|
||||
name = "plasma glass"
|
||||
desc = "A very strong and very resistant sheet of a plasma-glass alloy."
|
||||
|
||||
@@ -114,6 +114,10 @@ GLOBAL_LIST_INIT(metal_recipes, list(
|
||||
is_cyborg = TRUE
|
||||
materials = list()
|
||||
|
||||
/obj/item/stack/sheet/metal/cyborg/detailed_examine()
|
||||
return "Use in your hand to bring up the recipe menu. If you have enough sheets, click on something on the list to build it.<br>\
|
||||
You can replenish your supply of metal as a synthetic by recharging."
|
||||
|
||||
/obj/item/stack/sheet/metal/fifty
|
||||
amount = 50
|
||||
|
||||
@@ -378,6 +382,8 @@ GLOBAL_LIST_INIT(cult_recipes, list ( \
|
||||
if(!iscultist(user))
|
||||
to_chat(user, "<span class='warning'>Only one with forbidden knowledge could hope to work this metal...</span>")
|
||||
return
|
||||
if(usr.holy_check())
|
||||
return
|
||||
if(!is_level_reachable(user.z))
|
||||
to_chat(user, "<span class='warning'>The energies of this place interfere with the metal shaping!</span>")
|
||||
return
|
||||
|
||||
@@ -16,3 +16,6 @@
|
||||
usesound = 'sound/items/deconstruct.ogg'
|
||||
toolspeed = 1
|
||||
var/wall_allowed = TRUE //determines if sheet can be used in wall construction or not.
|
||||
|
||||
/obj/item/stack/sheet/detailed_examine()
|
||||
return "Use in your hand to bring up the recipe menu. If you have enough sheets, click on something on the list to build it."
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
var/to_transfer = 0
|
||||
var/max_amount = 50 //also see stack recipes initialisation, param "max_res_amount" must be equal to this max_amount
|
||||
var/merge_type = null // This path and its children should merge with this stack, defaults to src.type
|
||||
var/recipe_width = 400 //Width of the recipe popup
|
||||
var/recipe_width = 400 //Width of the recipe popup
|
||||
var/recipe_height = 400 //Height of the recipe popup
|
||||
|
||||
/obj/item/stack/New(loc, new_amount, merge = TRUE)
|
||||
@@ -197,25 +197,31 @@
|
||||
to_chat(usr, "<span class='warning'>You haven't got enough [src] to build \the [R.title]!</span>")
|
||||
return FALSE
|
||||
|
||||
if(R.window_checks && !valid_window_location(usr.loc, usr.dir))
|
||||
if(R.window_checks && !valid_window_location(get_turf(src), usr.dir))
|
||||
to_chat(usr, "<span class='warning'>\The [R.title] won't fit here!</span>")
|
||||
return FALSE
|
||||
|
||||
if(R.one_per_turf && (locate(R.result_type) in usr.drop_location()))
|
||||
if(R.one_per_turf && (locate(R.result_type) in get_turf(src)))
|
||||
to_chat(usr, "<span class='warning'>There is another [R.title] here!</span>")
|
||||
return FALSE
|
||||
|
||||
if(R.on_floor && !istype(usr.drop_location(), /turf/simulated))
|
||||
if(R.on_floor && !istype(get_turf(src), /turf/simulated))
|
||||
to_chat(usr, "<span class='warning'>\The [R.title] must be constructed on the floor!</span>")
|
||||
return FALSE
|
||||
|
||||
if(R.no_cult_structure && (locate(/obj/structure/cult) in usr.drop_location()))
|
||||
to_chat(usr, "<span class='warning'>There is a structure here!</span>")
|
||||
return FALSE
|
||||
if(R.no_cult_structure)
|
||||
if(usr.holy_check())
|
||||
return
|
||||
if(!is_level_reachable(usr.z))
|
||||
to_chat(usr, "<span class='warning'>The energies of this place interfere with the metal shaping!</span>")
|
||||
return
|
||||
if(locate(/obj/structure/cult) in get_turf(src))
|
||||
to_chat(usr, "<span class='warning'>There is a structure here!</span>")
|
||||
return FALSE
|
||||
|
||||
if(R.time)
|
||||
to_chat(usr, "<span class='notice'>Building [R.title] ...</span>")
|
||||
if(!do_after(usr, R.time, target = usr))
|
||||
to_chat(usr, "<span class='notice'>Building [R.title]...</span>")
|
||||
if(!do_after(usr, R.time, target = loc))
|
||||
return 0
|
||||
|
||||
if(get_amount() < R.req_amount * multiplier)
|
||||
@@ -223,9 +229,9 @@
|
||||
|
||||
var/atom/O
|
||||
if(R.max_res_amount > 1) //Is it a stack?
|
||||
O = new R.result_type(usr.drop_location(), R.res_amount * multiplier)
|
||||
O = new R.result_type(get_turf(src), R.res_amount * multiplier)
|
||||
else
|
||||
O = new R.result_type(usr.drop_location())
|
||||
O = new R.result_type(get_turf(src))
|
||||
O.setDir(usr.dir)
|
||||
use(R.req_amount * multiplier)
|
||||
updateUsrDialog()
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
/obj/item/stack/telecrystal
|
||||
name = "telecrystal"
|
||||
desc = "It seems to be pulsing with suspiciously enticing energies."
|
||||
description_antag = "Telecrystals can be activated by utilizing them on devices with an actively running uplink. They will not activate on unactivated uplinks."
|
||||
singular_name = "telecrystal"
|
||||
icon = 'icons/obj/telescience.dmi'
|
||||
icon_state = "telecrystal"
|
||||
@@ -34,6 +33,9 @@
|
||||
use(amount)
|
||||
to_chat(user, "<span class='notice'>You slot [src] into [cart]. The next time it's used, it will also give telecrystals</span>")
|
||||
|
||||
/obj/item/stack/telecrystal/detailed_examine_antag()
|
||||
return "Telecrystals can be activated by utilizing them on devices with an actively running uplink. They will not activate on unactivated uplinks."
|
||||
|
||||
/obj/item/stack/telecrystal/five
|
||||
amount = 5
|
||||
|
||||
|
||||
@@ -1358,9 +1358,14 @@
|
||||
. += "Has [fake_bullets] round\s remaining."
|
||||
. += "[fake_bullets] of those are live rounds."
|
||||
|
||||
/obj/item/toy/russian_revolver/trick_revolver/detailed_examine() //oh no
|
||||
return "This is a ballistic weapon. To reload, click the weapon in your hand to unload (if needed), then add the appropriate ammo. The description \
|
||||
will tell you what caliber you need."
|
||||
|
||||
/obj/item/toy/russian_revolver/trick_revolver/post_shot(user)
|
||||
to_chat(user, "<span class='danger'>[src] did look pretty dodgey!</span>")
|
||||
SEND_SOUND(user, sound('sound/misc/sadtrombone.ogg')) //HONK
|
||||
|
||||
/*
|
||||
* Rubber Chainsaw
|
||||
*/
|
||||
|
||||
@@ -22,6 +22,14 @@ AI MODULES
|
||||
materials = list(MAT_GOLD=50)
|
||||
var/datum/ai_laws/laws = null
|
||||
|
||||
/obj/item/aiModule/Initialize(mapload)
|
||||
. = ..()
|
||||
if(laws)
|
||||
desc += "<br>"
|
||||
for(var/datum/ai_law/current in laws.inherent_laws)
|
||||
desc += current.law
|
||||
desc += "<br>"
|
||||
|
||||
/obj/item/aiModule/proc/install(obj/machinery/computer/C)
|
||||
if(istype(C, /obj/machinery/computer/aiupload))
|
||||
var/obj/machinery/computer/aiupload/comp = C
|
||||
@@ -92,7 +100,7 @@ AI MODULES
|
||||
|
||||
/******************** Safeguard ********************/
|
||||
/obj/item/aiModule/safeguard
|
||||
name = "\improper 'Safeguard' AI module"
|
||||
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"
|
||||
@@ -118,16 +126,16 @@ AI MODULES
|
||||
|
||||
/******************** oneCrewMember ********************/
|
||||
/obj/item/aiModule/oneCrewMember
|
||||
name = "\improper 'oneCrewMember' AI module"
|
||||
name = "\improper One Crewmember AI module"
|
||||
var/targetName = ""
|
||||
desc = "A 'one human' AI module: 'Only <name> is crew.'"
|
||||
desc = "A 'one crew' AI module: 'Only <name> is crew.'"
|
||||
origin_tech = "programming=4;materials=4"
|
||||
|
||||
/obj/item/aiModule/oneCrewMember/attack_self(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)
|
||||
desc = text("A 'one crew' AI module: 'Only [] is crew.'", targetName)
|
||||
|
||||
/obj/item/aiModule/oneCrewMember/install(obj/machinery/computer/C)
|
||||
if(!targetName)
|
||||
@@ -149,7 +157,7 @@ AI MODULES
|
||||
|
||||
/******************** ProtectStation ********************/
|
||||
/obj/item/aiModule/protectStation
|
||||
name = "\improper 'ProtectStation' AI module"
|
||||
name = "\improper Protect Station 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
|
||||
|
||||
@@ -162,10 +170,10 @@ AI MODULES
|
||||
to_chat(target, law)
|
||||
target.add_supplied_law(5, law)
|
||||
|
||||
/******************** OxygenIsToxicToHumans ********************/
|
||||
/******************** OxygenIsToxicToCrew ********************/
|
||||
/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.'"
|
||||
name = "\improper Oxygen Is Toxic To Crew AI module"
|
||||
desc = "A 'Oxygen Is Toxic To Crew' 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/aiModule/oxygen/attack_self(mob/user as mob)
|
||||
@@ -179,7 +187,7 @@ AI MODULES
|
||||
|
||||
/****************** New Freeform ******************/
|
||||
/obj/item/aiModule/freeform // Slightly more dynamic freeform module -- TLE
|
||||
name = "\improper 'Freeform' AI module"
|
||||
name = "\improper Freeform AI module"
|
||||
var/newFreeFormLaw = "freeform"
|
||||
var/lawpos = 15
|
||||
desc = "A 'freeform' AI module: '<freeform>'"
|
||||
@@ -212,7 +220,7 @@ AI MODULES
|
||||
|
||||
/******************** Reset ********************/
|
||||
/obj/item/aiModule/reset
|
||||
name = "\improper 'Reset' AI module"
|
||||
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"
|
||||
@@ -230,7 +238,7 @@ AI MODULES
|
||||
|
||||
/******************** Purge ********************/
|
||||
/obj/item/aiModule/purge // -- TLE
|
||||
name = "\improper 'Purge' AI module"
|
||||
name = "\improper Purge AI module"
|
||||
desc = "A 'purge' AI Module: 'Purges all laws.'"
|
||||
origin_tech = "programming=5;materials=4"
|
||||
|
||||
@@ -245,77 +253,107 @@ AI MODULES
|
||||
|
||||
/******************** Asimov ********************/
|
||||
/obj/item/aiModule/asimov // -- TLE
|
||||
name = "\improper 'Asimov' core AI module"
|
||||
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
|
||||
laws = new /datum/ai_laws/asimov
|
||||
|
||||
/******************** Crewsimov ********************/
|
||||
/obj/item/aiModule/crewsimov // -- TLE
|
||||
name = "\improper 'Crewsimov' core AI module"
|
||||
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
|
||||
laws = new /datum/ai_laws/crewsimov
|
||||
|
||||
/******************* Quarantine ********************/
|
||||
/obj/item/aiModule/quarantine
|
||||
name = "\improper 'Quarantine' core AI module"
|
||||
name = "\improper Quarantine core AI module"
|
||||
desc = "A 'Quarantine' Core AI Module: 'Reconfigures the AI's core laws.'"
|
||||
origin_tech = "programming=3;materials=4"
|
||||
laws = new/datum/ai_laws/quarantine
|
||||
laws = new /datum/ai_laws/quarantine
|
||||
|
||||
/******************** NanoTrasen ********************/
|
||||
/obj/item/aiModule/nanotrasen // -- TLE
|
||||
name = "'NT Default' Core AI Module"
|
||||
name = "\improper 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
|
||||
laws = new /datum/ai_laws/nanotrasen
|
||||
|
||||
/******************** Corporate ********************/
|
||||
/obj/item/aiModule/corp
|
||||
name = "\improper 'Corporate' core AI module"
|
||||
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
|
||||
laws = new /datum/ai_laws/corporate
|
||||
|
||||
/******************** Drone ********************/
|
||||
/obj/item/aiModule/drone
|
||||
name = "\improper 'Drone' core AI module"
|
||||
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
|
||||
laws = new /datum/ai_laws/drone
|
||||
|
||||
/******************** Robocop ********************/
|
||||
/obj/item/aiModule/robocop // -- TLE
|
||||
name = "\improper 'Robocop' core AI module"
|
||||
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()
|
||||
laws = new /datum/ai_laws/robocop()
|
||||
|
||||
/****************** P.A.L.A.D.I.N. **************/
|
||||
/obj/item/aiModule/paladin // -- NEO
|
||||
name = "\improper 'P.A.L.A.D.I.N.' core AI module"
|
||||
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
|
||||
laws = new /datum/ai_laws/paladin
|
||||
|
||||
/****************** T.Y.R.A.N.T. *****************/
|
||||
/obj/item/aiModule/tyrant // -- Darem
|
||||
name = "\improper 'T.Y.R.A.N.T.' core AI module"
|
||||
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()
|
||||
laws = new /datum/ai_laws/tyrant()
|
||||
|
||||
/******************** Antimov ********************/
|
||||
/obj/item/aiModule/antimov // -- TLE
|
||||
name = "\improper 'Antimov' core AI module"
|
||||
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()
|
||||
laws = new /datum/ai_laws/antimov()
|
||||
|
||||
/******************** NT Aggressive ********************/
|
||||
/obj/item/aiModule/nanotrasen_aggressive
|
||||
name = "\improper NT Aggressive core AI module"
|
||||
desc = "An 'NT Aggressive' Core AI Module: 'Reconfigures the AI's core laws.'"
|
||||
laws = new /datum/ai_laws/nanotrasen_aggressive()
|
||||
|
||||
/******************** CCTV ********************/
|
||||
/obj/item/aiModule/cctv
|
||||
name = "\improper CCTV core AI module"
|
||||
desc = "A 'CCTV' Core AI Module: 'Reconfigures the AI's core laws.'"
|
||||
laws = new /datum/ai_laws/cctv()
|
||||
|
||||
/******************** Hippocratic Oath ********************/
|
||||
/obj/item/aiModule/hippocratic
|
||||
name = "\improper Hippocratic Oath core AI module"
|
||||
desc = "An 'Hippocratic' Oath Core AI Module: 'Reconfigures the AI's core laws.'"
|
||||
laws = new /datum/ai_laws/hippocratic()
|
||||
|
||||
/******************** Station Efficiency ********************/
|
||||
/obj/item/aiModule/maintain
|
||||
name = "\improper Station Efficiency core AI module"
|
||||
desc = "A 'Station Efficiency' Core AI Module: 'Reconfigures the AI's core laws.'"
|
||||
laws = new /datum/ai_laws/maintain()
|
||||
|
||||
/******************** Peacekeeper ********************/
|
||||
/obj/item/aiModule/peacekeeper
|
||||
name = "\improper Peacekeeper core AI module"
|
||||
desc = "A 'Peacekeeper' Core AI Module: 'Reconfigures the AI's core laws.'"
|
||||
laws = new /datum/ai_laws/peacekeeper()
|
||||
|
||||
/******************** Freeform Core ******************/
|
||||
/obj/item/aiModule/freeformcore // Slightly more dynamic freeform module -- TLE
|
||||
name = "\improper 'Freeform' core AI module"
|
||||
name = "\improper Freeform core AI module"
|
||||
var/newFreeFormLaw = ""
|
||||
desc = "A 'freeform' Core AI module: '<freeform>'"
|
||||
origin_tech = "programming=5;materials=4"
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
/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."
|
||||
icon = 'icons/obj/storage.dmi'
|
||||
icon_state = "briefcase"
|
||||
item_state = "briefcase"
|
||||
@@ -28,6 +27,9 @@
|
||||
else
|
||||
. += "<span class='danger'>The bees are gone... Colony collapse disorder?</span>"
|
||||
|
||||
/obj/item/bee_briefcase/detailed_examine_antag()
|
||||
return "A briefcase filled with deadly bees, you should inject this with a syringe of your own blood before opening it."
|
||||
|
||||
/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
|
||||
|
||||
@@ -416,7 +416,6 @@
|
||||
"gold",
|
||||
"silver",
|
||||
"centcom",
|
||||
"centcom_old",
|
||||
"security",
|
||||
"medical",
|
||||
"HoS",
|
||||
@@ -891,7 +890,7 @@
|
||||
return list("data","id","gold","silver","security","medical","research","cargo","engineering","HoS","CMO","RD","CE","clown","mime","rainbow","prisoner")
|
||||
|
||||
/proc/get_centcom_card_skins()
|
||||
return list("centcom","centcom_old","nanotrasen","ERT_leader","ERT_empty","ERT_security","ERT_engineering","ERT_medical","ERT_janitorial","deathsquad","commander","syndie","TDred","TDgreen")
|
||||
return list("centcom","nanotrasen","ERT_leader","ERT_empty","ERT_security","ERT_engineering","ERT_medical","ERT_janitorial","deathsquad","commander","syndie","TDred","TDgreen")
|
||||
|
||||
/proc/get_all_card_skins()
|
||||
return get_station_card_skins() + get_centcom_card_skins()
|
||||
@@ -910,8 +909,6 @@
|
||||
return "Research Director"
|
||||
if("CE")
|
||||
return "Chief Engineer"
|
||||
if("centcom_old")
|
||||
return "Centcom Old"
|
||||
if("ERT_leader")
|
||||
return "ERT Leader"
|
||||
if("ERT_empty")
|
||||
|
||||
@@ -445,6 +445,8 @@
|
||||
user.visible_message("<span class='boldnotice'>[defib] buzzes: Resuscitation failed - Heart tissue damage beyond point of no return for defibrillation.</span>")
|
||||
else if(total_burn >= 180 || total_brute >= 180)
|
||||
user.visible_message("<span class='boldnotice'>[defib] buzzes: Resuscitation failed - Severe tissue damage detected.</span>")
|
||||
else if(HAS_TRAIT(H, TRAIT_HUSK))
|
||||
user.visible_message("<span class='notice'>[defib] buzzes: Resucitation failed: Subject is husked.</span>")
|
||||
else if(ghost)
|
||||
if(!ghost.can_reenter_corpse) // DNR or AntagHUD
|
||||
user.visible_message("<span class='notice'>[defib] buzzes: Resucitation failed: No electrical brain activity detected.</span>")
|
||||
|
||||
@@ -179,12 +179,11 @@
|
||||
addtimer(CALLBACK(src, .proc/boom, user, result), 4 SECONDS)
|
||||
|
||||
/obj/item/dice/d20/e20/proc/boom(mob/user, result)
|
||||
var/capped = FALSE
|
||||
var/capped = TRUE
|
||||
var/actual_result = result
|
||||
if(result != 20)
|
||||
capped = TRUE
|
||||
result = min(result, GLOB.max_ex_light_range) // Apply the bombcap
|
||||
else // Rolled a nat 20, screw the bombcap
|
||||
// Rolled a nat 20, screw the bombcap
|
||||
if(result == 20)
|
||||
capped = FALSE
|
||||
result = 24
|
||||
|
||||
var/turf/epicenter = get_turf(src)
|
||||
|
||||
@@ -561,7 +561,6 @@
|
||||
/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."
|
||||
reskinned = TRUE
|
||||
reskin_selectable = FALSE
|
||||
icon_state = "godstaff-red"
|
||||
@@ -575,6 +574,10 @@
|
||||
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/nullrod/missionary_staff/detailed_examine_antag()
|
||||
return "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."
|
||||
|
||||
/obj/item/nullrod/missionary_staff/New()
|
||||
..()
|
||||
team_color = pick("red", "blue")
|
||||
|
||||
@@ -47,7 +47,7 @@
|
||||
a.autosay("[mobname] has died in [t.name]!", "[mobname]'s Death Alarm")
|
||||
qdel(src)
|
||||
if("emp")
|
||||
var/name = prob(50) ? t.name : pick(GLOB.teleportlocs)
|
||||
var/name = prob(50) ? t.name : pick(SSmapping.teleportlocs)
|
||||
a.autosay("[mobname] has died in [name]!", "[mobname]'s Death Alarm")
|
||||
else
|
||||
a.autosay("[mobname] has died-zzzzt in-in-in...", "[mobname]'s Death Alarm")
|
||||
|
||||
@@ -58,7 +58,7 @@
|
||||
|
||||
/obj/item/implant/emp/activate()
|
||||
uses--
|
||||
empulse(imp_in, 3, 5, 1)
|
||||
INVOKE_ASYNC(GLOBAL_PROC, .proc/empulse, get_turf(imp_in), 3, 5, 1)
|
||||
if(!uses)
|
||||
qdel(src)
|
||||
|
||||
|
||||
@@ -125,6 +125,11 @@
|
||||
if(item_color == null)
|
||||
item_color = pick("red", "blue", "green", "purple")
|
||||
|
||||
/obj/item/melee/energy/sword/detailed_examine()
|
||||
return "The energy sword is a very strong melee weapon, capable of severing limbs easily, if they are targeted. It can also has a chance \
|
||||
to block projectiles and melee attacks while it is on and being held. The sword can be toggled on or off by using it in your hand. While it is off, \
|
||||
it can be concealed in your pocket or bag."
|
||||
|
||||
/obj/item/melee/energy/sword/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK)
|
||||
if(active)
|
||||
return ..()
|
||||
|
||||
@@ -89,17 +89,20 @@
|
||||
/mob/living/simple_animal/hostile/poison/bees/,
|
||||
/mob/living/simple_animal/butterfly,
|
||||
/mob/living/simple_animal/cockroach,
|
||||
/obj/item/queen_bee
|
||||
))
|
||||
/obj/item/queen_bee))
|
||||
strong_against -= /mob/living/simple_animal/hostile/poison/bees/syndi // Syndi-bees have special anti-flyswatter tech installed
|
||||
|
||||
/obj/item/melee/flyswatter/afterattack(atom/target, mob/user, proximity_flag)
|
||||
/obj/item/melee/flyswatter/attack(mob/living/M, mob/living/user, def_zone)
|
||||
. = ..()
|
||||
if(proximity_flag)
|
||||
if(is_type_in_typecache(target, strong_against))
|
||||
new /obj/effect/decal/cleanable/insectguts(target.drop_location())
|
||||
to_chat(user, "<span class='warning'>You easily splat [target].</span>")
|
||||
if(istype(target, /mob/living/))
|
||||
var/mob/living/bug = target
|
||||
bug.death(1)
|
||||
else
|
||||
qdel(target)
|
||||
if(!.)
|
||||
return
|
||||
if(is_type_in_typecache(M, strong_against))
|
||||
new /obj/effect/decal/cleanable/insectguts(M.drop_location())
|
||||
user.visible_message("<span class='warning'>[user] splats [M] with [src].</span>",
|
||||
"<span class='warning'>You splat [M] with [src].</span>",
|
||||
"<span class='warning'>You hear a splat.</span>")
|
||||
if(isliving(M))
|
||||
var/mob/living/bug = M
|
||||
bug.death(TRUE)
|
||||
if(!QDELETED(M))
|
||||
qdel(M)
|
||||
|
||||
@@ -47,12 +47,12 @@
|
||||
|
||||
var/A
|
||||
|
||||
A = input(user, "Area to jump to", "BOOYEA", A) as null|anything in GLOB.teleportlocs
|
||||
A = input(user, "Area to jump to", "BOOYEA", A) as null|anything in SSmapping.teleportlocs
|
||||
|
||||
if(!A)
|
||||
return
|
||||
|
||||
var/area/thearea = GLOB.teleportlocs[A]
|
||||
var/area/thearea = SSmapping.teleportlocs[A]
|
||||
|
||||
if(user.stat || user.restrained())
|
||||
return
|
||||
|
||||
@@ -409,7 +409,6 @@
|
||||
new /obj/item/soap(src)
|
||||
new /obj/item/grenade/chem_grenade/cleaner(src)
|
||||
new /obj/item/grenade/chem_grenade/cleaner(src)
|
||||
new /obj/item/melee/flyswatter(src)
|
||||
update_icon()
|
||||
|
||||
/obj/item/storage/belt/lazarus
|
||||
|
||||
@@ -71,6 +71,11 @@
|
||||
else
|
||||
. += "<span class='warning'>The baton does not have a power source installed.</span>"
|
||||
|
||||
/obj/item/melee/baton/detailed_examine()
|
||||
return "The baton needs to be turned on to apply the stunning effect. Use it in your hand to toggle it on or off. If your intent is \
|
||||
set to 'harm', you will inflict damage when using it, regardless if it is on or not. Each stun reduces the baton's charge, which can be replenished by \
|
||||
putting it inside a weapon recharger."
|
||||
|
||||
/obj/item/melee/baton/get_cell()
|
||||
return cell
|
||||
|
||||
|
||||
@@ -643,13 +643,13 @@
|
||||
slot_flags = SLOT_BACK
|
||||
force = 5
|
||||
force_unwielded = 5
|
||||
force_wielded = 20
|
||||
force_wielded = 40
|
||||
throwforce = 15
|
||||
throw_range = 1
|
||||
w_class = WEIGHT_CLASS_HUGE
|
||||
armor = list("melee" = 50, "bullet" = 50, "laser" = 50, "energy" = 0, "bomb" = 50, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 100)
|
||||
resistance_flags = FIRE_PROOF | ACID_PROOF
|
||||
var/charged = 5
|
||||
var/charged = 2
|
||||
origin_tech = "combat=4;bluespace=4;plasmatech=7"
|
||||
|
||||
/obj/item/twohanded/singularityhammer/New()
|
||||
@@ -661,7 +661,7 @@
|
||||
return ..()
|
||||
|
||||
/obj/item/twohanded/singularityhammer/process()
|
||||
if(charged < 5)
|
||||
if(charged < 2)
|
||||
charged++
|
||||
|
||||
/obj/item/twohanded/singularityhammer/update_icon() //Currently only here to fuck with the on-mob icons.
|
||||
@@ -684,7 +684,7 @@
|
||||
var/obj/item/clothing/shoes/magboots/M = H.shoes
|
||||
if(M.magpulse)
|
||||
continue
|
||||
H.apply_effect(1, WEAKEN, 0)
|
||||
H.Weaken(2)
|
||||
step_towards(H, pull)
|
||||
step_towards(H, pull)
|
||||
step_towards(H, pull)
|
||||
@@ -693,7 +693,7 @@
|
||||
if(!proximity)
|
||||
return
|
||||
if(wielded)
|
||||
if(charged == 5)
|
||||
if(charged == 2)
|
||||
charged = 0
|
||||
if(isliving(A))
|
||||
var/mob/living/Z = A
|
||||
|
||||
Reference in New Issue
Block a user