mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-08-23 20:16:55 +01:00
Fixes merge conflicts
This commit is contained in:
@@ -163,21 +163,6 @@ AI MODULES
|
||||
to_chat(target, law)
|
||||
target.add_supplied_law(5, law)
|
||||
|
||||
/******************** 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/aiModule/quarantine/attack_self(var/mob/user as mob)
|
||||
..()
|
||||
|
||||
/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/aiModule/oxygen
|
||||
name = "\improper 'OxygenIsToxicToHumans' AI module"
|
||||
@@ -273,6 +258,13 @@ AI MODULES
|
||||
origin_tech = "programming=3;materials=4"
|
||||
laws = new/datum/ai_laws/crewsimov
|
||||
|
||||
/******************* Quarantine ********************/
|
||||
/obj/item/aiModule/quarantine
|
||||
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
|
||||
|
||||
/******************** NanoTrasen ********************/
|
||||
/obj/item/aiModule/nanotrasen // -- TLE
|
||||
name = "'NT Default' Core AI Module"
|
||||
|
||||
@@ -255,6 +255,8 @@ GLOBAL_LIST_INIT(rcd_door_types, list(
|
||||
var/turf/AT = get_turf(A)
|
||||
AT.ChangeTurf(/turf/simulated/floor/plating)
|
||||
return TRUE
|
||||
to_chat(user, "<span class='warning'>ERROR! Not enough matter in unit to construct this floor!</span>")
|
||||
playsound(loc, 'sound/machines/click.ogg', 50, 1)
|
||||
return FALSE
|
||||
|
||||
if(isfloorturf(A))
|
||||
@@ -268,27 +270,39 @@ GLOBAL_LIST_INIT(rcd_door_types, list(
|
||||
var/turf/AT = A
|
||||
AT.ChangeTurf(/turf/simulated/wall)
|
||||
return TRUE
|
||||
return FALSE
|
||||
to_chat(user, "<span class='warning'>ERROR! Not enough matter in unit to construct this wall!</span>")
|
||||
playsound(loc, 'sound/machines/click.ogg', 50, 1)
|
||||
return FALSE
|
||||
to_chat(user, "<span class='warning'>ERROR! Location unsuitable for wall construction!</span>")
|
||||
playsound(loc, 'sound/machines/click.ogg', 50, 1)
|
||||
return FALSE
|
||||
|
||||
/obj/item/rcd/proc/mode_airlock(atom/A, mob/user)
|
||||
if(isfloorturf(A) && checkResource(10, user))
|
||||
to_chat(user, "Building Airlock...")
|
||||
playsound(loc, 'sound/machines/click.ogg', 50, 1)
|
||||
if(do_after(user, 50 * toolspeed, target = A))
|
||||
if(locate(/obj/machinery/door/airlock) in A.contents)
|
||||
if(isfloorturf(A))
|
||||
if(checkResource(10, user))
|
||||
to_chat(user, "Building Airlock...")
|
||||
playsound(loc, 'sound/machines/click.ogg', 50, 1)
|
||||
if(do_after(user, 50 * toolspeed, target = A))
|
||||
if(locate(/obj/machinery/door/airlock) in A.contents)
|
||||
return FALSE
|
||||
if(!useResource(10, user))
|
||||
return FALSE
|
||||
playsound(loc, usesound, 50, 1)
|
||||
var/obj/machinery/door/airlock/T = new door_type(A)
|
||||
T.name = door_name
|
||||
T.autoclose = TRUE
|
||||
if(one_access)
|
||||
T.req_one_access = door_accesses.Copy()
|
||||
else
|
||||
T.req_access = door_accesses.Copy()
|
||||
return FALSE
|
||||
if(!useResource(10, user))
|
||||
return FALSE
|
||||
playsound(loc, usesound, 50, 1)
|
||||
var/obj/machinery/door/airlock/T = new door_type(A)
|
||||
T.name = door_name
|
||||
T.autoclose = TRUE
|
||||
if(one_access)
|
||||
T.req_one_access = door_accesses.Copy()
|
||||
else
|
||||
T.req_access = door_accesses.Copy()
|
||||
return FALSE
|
||||
to_chat(user, "<span class='warning'>ERROR! Not enough matter in unit to construct this airlock!</span>")
|
||||
playsound(loc, 'sound/machines/click.ogg', 50, 1)
|
||||
return FALSE
|
||||
to_chat(user, "<span class='warning'>ERROR! Location unsuitable for airlock construction!</span>")
|
||||
playsound(loc, 'sound/machines/click.ogg', 50, 1)
|
||||
return FALSE
|
||||
|
||||
/obj/item/rcd/proc/mode_decon(atom/A, mob/user)
|
||||
@@ -305,6 +319,9 @@ GLOBAL_LIST_INIT(rcd_door_types, list(
|
||||
var/turf/AT = A
|
||||
AT.ChangeTurf(/turf/simulated/floor/plating)
|
||||
return TRUE
|
||||
return FALSE
|
||||
to_chat(user, "<span class='warning'>ERROR! Not enough matter in unit to deconstruct this wall!</span>")
|
||||
playsound(loc, 'sound/machines/click.ogg', 50, 1)
|
||||
return FALSE
|
||||
|
||||
if(isfloorturf(A))
|
||||
@@ -318,6 +335,9 @@ GLOBAL_LIST_INIT(rcd_door_types, list(
|
||||
var/turf/AT = A
|
||||
AT.ChangeTurf(/turf/space)
|
||||
return TRUE
|
||||
return FALSE
|
||||
to_chat(user, "<span class='warning'>ERROR! Not enough matter in unit to deconstruct this floor!</span>")
|
||||
playsound(loc, 'sound/machines/click.ogg', 50, 1)
|
||||
return FALSE
|
||||
|
||||
if(istype(A, /obj/machinery/door/airlock))
|
||||
@@ -330,12 +350,17 @@ GLOBAL_LIST_INIT(rcd_door_types, list(
|
||||
playsound(loc, usesound, 50, 1)
|
||||
qdel(A)
|
||||
return TRUE
|
||||
return FALSE
|
||||
to_chat(user, "<span class='warning'>ERROR! Not enough matter in unit to deconstruct this airlock!</span>")
|
||||
playsound(loc, 'sound/machines/click.ogg', 50, 1)
|
||||
return FALSE
|
||||
|
||||
if(istype(A, /obj/structure/window)) // You mean the grille of course, do you?
|
||||
A = locate(/obj/structure/grille) in A.loc
|
||||
if(istype(A, /obj/structure/grille))
|
||||
if(!checkResource(2, user))
|
||||
to_chat(user, "<span class='warning'>ERROR! Not enough matter in unit to deconstruct this window!</span>")
|
||||
playsound(loc, 'sound/machines/click.ogg', 50, 1)
|
||||
return 0
|
||||
to_chat(user, "Deconstructing window...")
|
||||
playsound(loc, 'sound/machines/click.ogg', 50, 1)
|
||||
@@ -367,6 +392,8 @@ GLOBAL_LIST_INIT(rcd_door_types, list(
|
||||
if(locate(/obj/structure/grille) in A)
|
||||
return 0 // We already have window
|
||||
if(!checkResource(2, user))
|
||||
to_chat(user, "<span class='warning'>ERROR! Not enough matter in unit to construct this window!</span>")
|
||||
playsound(loc, 'sound/machines/click.ogg', 50, 1)
|
||||
return 0
|
||||
to_chat(user, "Constructing window...")
|
||||
playsound(loc, 'sound/machines/click.ogg', 50, 1)
|
||||
@@ -392,6 +419,9 @@ GLOBAL_LIST_INIT(rcd_door_types, list(
|
||||
var/turf/AT = A
|
||||
AT.ChangeTurf(/turf/simulated/floor/plating) // Platings go under windows.
|
||||
return 1
|
||||
to_chat(user, "<span class='warning'>ERROR! Location unsuitable for window construction!</span>")
|
||||
playsound(loc, 'sound/machines/click.ogg', 50, 1)
|
||||
return 0
|
||||
|
||||
/obj/item/rcd/afterattack(atom/A, mob/user, proximity)
|
||||
if(!proximity)
|
||||
|
||||
@@ -89,7 +89,7 @@ LIGHTERS ARE IN LIGHTERS.DM
|
||||
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. [user.p_they(TRUE)] light[user.p_s()] [user.p_their()] [name] in the process.</span>")
|
||||
light("<span class='warning'>[user] makes a violent slashing motion, barely missing [user.p_their()] nose as light flashes. [user.p_they(TRUE)] light[user.p_s()] [user.p_their()] [name] with [W] in the process.</span>")
|
||||
|
||||
else if(istype(W, /obj/item/assembly/igniter))
|
||||
light("<span class='notice'>[user] fiddles with [W], and manages to light [user.p_their()] [name].</span>")
|
||||
@@ -195,7 +195,8 @@ LIGHTERS ARE IN LIGHTERS.DM
|
||||
if(reagents && reagents.total_volume) // check if it has any reagents at all
|
||||
if(is_being_smoked) // if it's being smoked, transfer reagents to the mob
|
||||
var/mob/living/carbon/C = loc
|
||||
reagents.trans_to(C, REAGENTS_METABOLISM)
|
||||
for (var/datum/reagent/R in reagents.reagent_list)
|
||||
reagents.trans_to(C, REAGENTS_METABOLISM)
|
||||
if(!reagents.total_volume) // There were reagents, but now they're gone
|
||||
to_chat(C, "<span class='notice'>Your [name] loses its flavor.</span>")
|
||||
else // else just remove some of the reagents
|
||||
@@ -232,7 +233,7 @@ LIGHTERS ARE IN LIGHTERS.DM
|
||||
throw_speed = 0.5
|
||||
item_state = "spliffoff"
|
||||
smoketime = 180
|
||||
chem_volume = 50
|
||||
chem_volume = 100
|
||||
|
||||
/obj/item/clothing/mask/cigarette/rollie/New()
|
||||
..()
|
||||
|
||||
@@ -53,6 +53,6 @@
|
||||
for(M in ohearers(7, T))
|
||||
if(istype(M, /mob/living/carbon/human))
|
||||
var/mob/living/carbon/human/H = M
|
||||
if(istype(H.l_ear, /obj/item/clothing/ears/earmuffs) || istype(H.r_ear, /obj/item/clothing/ears/earmuffs) || H.ear_deaf)
|
||||
if(!H.can_hear())
|
||||
continue
|
||||
M.emote("flip")
|
||||
|
||||
@@ -59,13 +59,16 @@
|
||||
if(!ear_safety)
|
||||
M.Stun(max(10/distance, 3))
|
||||
M.Weaken(max(10/distance, 3))
|
||||
M.EarDeaf(15)
|
||||
M.AdjustEarDamage(rand(0, 5))
|
||||
if(M.ear_damage >= 15)
|
||||
to_chat(M, "<span class='warning'>Your ears start to ring badly!</span>")
|
||||
if(prob(M.ear_damage - 5))
|
||||
to_chat(M, "<span class='warning'>You can't hear anything!</span>")
|
||||
M.BecomeDeaf()
|
||||
else
|
||||
if(M.ear_damage >= 5)
|
||||
to_chat(M, "<span class='warning'>Your ears start to ring!</span>")
|
||||
M.AdjustEarDamage(rand(0, 5), 15)
|
||||
if(iscarbon(M))
|
||||
var/mob/living/carbon/C = M
|
||||
var/obj/item/organ/internal/ears/ears = C.get_int_organ(/obj/item/organ/internal/ears)
|
||||
if(istype(ears))
|
||||
if(ears.ear_damage >= 15)
|
||||
to_chat(M, "<span class='warning'>Your ears start to ring badly!</span>")
|
||||
if(prob(ears.ear_damage - 5))
|
||||
to_chat(M, "<span class='warning'>You can't hear anything!</span>")
|
||||
M.BecomeDeaf()
|
||||
else
|
||||
if(ears.ear_damage >= 5)
|
||||
to_chat(M, "<span class='warning'>Your ears start to ring!</span>")
|
||||
|
||||
@@ -45,7 +45,7 @@
|
||||
|
||||
/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."
|
||||
desc = "This grenade contains 5 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"
|
||||
|
||||
@@ -8,6 +8,7 @@
|
||||
throw_range = 5
|
||||
w_class = WEIGHT_CLASS_TINY
|
||||
origin_tech = "materials=1;biotech=2"
|
||||
container_type = OPENCONTAINER | INJECTABLE | DRAWABLE
|
||||
materials = list(MAT_GLASS=500)
|
||||
var/obj/item/implant/imp = null
|
||||
|
||||
|
||||
@@ -168,7 +168,7 @@
|
||||
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/reagent_containers/food/snacks/grown,/obj/item/seeds,/obj/item/grown,/obj/item/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/grown/ash_flora)
|
||||
burn_state = FLAMMABLE
|
||||
|
||||
/obj/item/storage/bag/plants/portaseeder
|
||||
|
||||
@@ -254,7 +254,7 @@
|
||||
new /obj/item/grenade/flashbang(src)
|
||||
new /obj/item/grenade/flashbang(src)
|
||||
update_icon()
|
||||
|
||||
|
||||
/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"
|
||||
@@ -295,6 +295,13 @@
|
||||
item_state = "military"
|
||||
max_w_class = WEIGHT_CLASS_SMALL
|
||||
|
||||
/obj/item/storage/belt/military/traitor
|
||||
name = "tool-belt"
|
||||
desc = "Can hold various tools. This model seems to have additional compartments."
|
||||
icon_state = "utilitybelt"
|
||||
item_state = "utility"
|
||||
use_item_overlays = 1 // So it will still show tools in it in case sec get lazy and just glance at it.
|
||||
|
||||
/obj/item/storage/belt/military/abductor
|
||||
name = "agent belt"
|
||||
desc = "A belt used by abductor agents."
|
||||
|
||||
@@ -58,13 +58,14 @@
|
||||
name = "large box"
|
||||
desc = "You could build a fort with this."
|
||||
icon_state = "largebox"
|
||||
w_class = 42 // Big, bulky.
|
||||
w_class = 4 // Big, bulky.
|
||||
foldable = /obj/item/stack/sheet/cardboard
|
||||
amt = 4
|
||||
storage_slots = 21
|
||||
max_combined_w_class = 42 // 21*2
|
||||
|
||||
/obj/item/storage/box/survival
|
||||
icon_state = "box_civ"
|
||||
New()
|
||||
..()
|
||||
contents = list()
|
||||
@@ -74,6 +75,7 @@
|
||||
return
|
||||
|
||||
/obj/item/storage/box/engineer
|
||||
icon_state = "box_eng"
|
||||
New()
|
||||
..()
|
||||
contents = list()
|
||||
@@ -83,6 +85,7 @@
|
||||
return
|
||||
|
||||
/obj/item/storage/box/survival_mining
|
||||
icon_state = "box_min"
|
||||
New()
|
||||
..()
|
||||
contents = list()
|
||||
@@ -563,6 +566,33 @@
|
||||
new /obj/item/cartridge/security(src)
|
||||
new /obj/item/cartridge/security(src)
|
||||
|
||||
/obj/item/storage/box/holobadge
|
||||
name = "holobadge box"
|
||||
icon_state = "box_badge"
|
||||
desc = "A box claiming to contain holobadges."
|
||||
New()
|
||||
new /obj/item/clothing/accessory/holobadge(src)
|
||||
new /obj/item/clothing/accessory/holobadge(src)
|
||||
new /obj/item/clothing/accessory/holobadge(src)
|
||||
new /obj/item/clothing/accessory/holobadge(src)
|
||||
new /obj/item/clothing/accessory/holobadge/cord(src)
|
||||
new /obj/item/clothing/accessory/holobadge/cord(src)
|
||||
..()
|
||||
return
|
||||
|
||||
/obj/item/storage/box/evidence
|
||||
name = "evidence bag box"
|
||||
desc = "A box claiming to contain evidence bags."
|
||||
icon_state = "box_evidence"
|
||||
|
||||
/obj/item/storage/box/evidence/New()
|
||||
new /obj/item/evidencebag(src)
|
||||
new /obj/item/evidencebag(src)
|
||||
new /obj/item/evidencebag(src)
|
||||
new /obj/item/evidencebag(src)
|
||||
new /obj/item/evidencebag(src)
|
||||
new /obj/item/evidencebag(src)
|
||||
..()
|
||||
|
||||
/obj/item/storage/box/handcuffs
|
||||
name = "spare handcuffs"
|
||||
@@ -642,6 +672,20 @@
|
||||
new /obj/item/storage/pill_bottle( src )
|
||||
new /obj/item/storage/pill_bottle( src )
|
||||
|
||||
/obj/item/storage/box/bodybags
|
||||
name = "body bags"
|
||||
desc = "This box contains body bags."
|
||||
icon_state = "bodybags"
|
||||
|
||||
/obj/item/storage/box/bodybags/New()
|
||||
..()
|
||||
new /obj/item/bodybag(src)
|
||||
new /obj/item/bodybag(src)
|
||||
new /obj/item/bodybag(src)
|
||||
new /obj/item/bodybag(src)
|
||||
new /obj/item/bodybag(src)
|
||||
new /obj/item/bodybag(src)
|
||||
new /obj/item/bodybag(src)
|
||||
|
||||
/obj/item/storage/box/snappops
|
||||
name = "snap pop box"
|
||||
@@ -834,7 +878,8 @@
|
||||
|
||||
/obj/item/storage/box/centcomofficer
|
||||
name = "officer kit"
|
||||
|
||||
icon_state = "box_ert"
|
||||
|
||||
/obj/item/storage/box/centcomofficer/New()
|
||||
..()
|
||||
contents = list()
|
||||
@@ -850,6 +895,19 @@
|
||||
new /obj/item/reagent_containers/hypospray/combat/nanites(src)
|
||||
new /obj/item/pinpointer/advpinpointer(src)
|
||||
|
||||
/obj/item/storage/box/responseteam
|
||||
name = "boxed survival kit"
|
||||
icon_state = "box_ert"
|
||||
|
||||
/obj/item/storage/box/responseteam/New()
|
||||
..()
|
||||
new /obj/item/clothing/mask/breath(src)
|
||||
new /obj/item/tank/emergency_oxygen/engi(src)
|
||||
new /obj/item/flashlight/flare(src)
|
||||
new /obj/item/kitchen/knife/combat(src)
|
||||
new /obj/item/radio/centcom(src)
|
||||
new /obj/item/reagent_containers/food/pill/patch/synthflesh(src)
|
||||
new /obj/item/reagent_containers/hypospray/autoinjector(src)
|
||||
|
||||
#undef NODESIGN
|
||||
#undef NANOTRASEN
|
||||
|
||||
@@ -87,24 +87,28 @@
|
||||
|
||||
/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)
|
||||
can_hold = list(/obj/item/clothing/suit/space/syndicate/black/red, /obj/item/clothing/head/helmet/space/syndicate/black/red, /obj/item/tank/emergency_oxygen/syndi, /obj/item/clothing/mask/gas/syndicate)
|
||||
max_w_class = WEIGHT_CLASS_NORMAL
|
||||
|
||||
/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)
|
||||
new /obj/item/clothing/mask/gas/syndicate(src)
|
||||
new /obj/item/tank/emergency_oxygen/syndi(src)
|
||||
return
|
||||
|
||||
/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)
|
||||
can_hold = list(/obj/item/clothing/suit/space/hardsuit/syndi, /obj/item/clothing/head/helmet/space/hardsuit/syndi, /obj/item/tank/emergency_oxygen/syndi, /obj/item/clothing/mask/gas/syndicate)
|
||||
max_w_class = WEIGHT_CLASS_NORMAL
|
||||
|
||||
/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)
|
||||
new /obj/item/clothing/mask/gas/syndicate(src)
|
||||
new /obj/item/tank/emergency_oxygen/syndi(src)
|
||||
return
|
||||
|
||||
/obj/item/storage/box/syndie_kit/elite_hardsuit
|
||||
@@ -261,4 +265,15 @@
|
||||
<font size = "1">This is a highly experimental prototype chemical designed to repair damaged bones of soldiers in the field, use only as a last resort. The autoinjector contains prototype nanites bearing a calcium based payload. The nanites will simultaneously shut down body systems whilst aiding bone repair.<BR><BR><BR>Warning: Side effects can cause temporary paralysis, loss of co-ordination and sickness. <B>Do not use with any kind of stimulant or drugs. Serious damage can occur!</B><BR><BR><BR>
|
||||
|
||||
To apply, hold the injector a short distance away from the outer thigh before applying firmly to the skin surface. Bones should begin repair after a short time, during which you are advised to remain still. <BR><BR><BR><BR>After use you are advised to see a doctor at the next available opportunity. Mild scarring and tissue damage may occur after use. This is a prototype.</font><BR><HR></font>
|
||||
"}
|
||||
"}
|
||||
|
||||
/obj/item/storage/box/syndie_kit/safecracking
|
||||
name = "Safe-cracking Kit"
|
||||
desc = "Everything you need to quietly open a mechanical combination safe."
|
||||
|
||||
/obj/item/storage/box/syndie_kit/safecracking/New()
|
||||
..()
|
||||
new /obj/item/clothing/gloves/color/latex/nitrile(src)
|
||||
new /obj/item/clothing/mask/balaclava(src)
|
||||
new /obj/item/clothing/accessory/stethoscope(src)
|
||||
new /obj/item/book/manual/engineering_hacking(src)
|
||||
|
||||
@@ -41,6 +41,16 @@
|
||||
return
|
||||
|
||||
/obj/item/melee/baton/proc/deductcharge(var/chrgdeductamt)
|
||||
if(isrobot(loc))
|
||||
var/mob/living/silicon/robot/R = loc
|
||||
if(R.cell && R.cell.charge < (hitcost+chrgdeductamt))
|
||||
status = 0
|
||||
update_icon()
|
||||
playsound(loc, "sparks", 75, 1, -1)
|
||||
if(R.cell.use(chrgdeductamt))
|
||||
return 1
|
||||
else
|
||||
return 0
|
||||
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
|
||||
@@ -61,6 +71,8 @@
|
||||
|
||||
/obj/item/melee/baton/examine(mob/user)
|
||||
..(user)
|
||||
if(isrobot(loc))
|
||||
to_chat(user, "<span class='notice'>This baton is drawing power directly from your own internal charge.</span>")
|
||||
if(bcell)
|
||||
to_chat(user, "<span class='notice'>The baton is [round(bcell.percent())]% charged.</span>")
|
||||
if(!bcell)
|
||||
@@ -95,7 +107,17 @@
|
||||
return
|
||||
|
||||
/obj/item/melee/baton/attack_self(mob/user)
|
||||
if(bcell && bcell.charge >= hitcost)
|
||||
|
||||
if(isrobot(loc))
|
||||
var/mob/living/silicon/robot/R = loc
|
||||
if(R && R.cell && R.cell.charge >= (hitcost))
|
||||
status = !status
|
||||
to_chat(user, "<span class='notice'>[src] is now [status ? "on" : "off"].</span>")
|
||||
playsound(loc, "sparks", 75, 1, -1)
|
||||
else
|
||||
status = 0
|
||||
to_chat(user, "<span class='warning'>You do not have enough reserve power to charge the [src]!</span>")
|
||||
else if(bcell && bcell.charge >= hitcost)
|
||||
status = !status
|
||||
to_chat(user, "<span class='notice'>[src] is now [status ? "on" : "off"].</span>")
|
||||
playsound(loc, "sparks", 75, 1, -1)
|
||||
@@ -141,13 +163,13 @@
|
||||
/obj/item/melee/baton/proc/baton_stun(mob/living/L, mob/user)
|
||||
if(!ismob(L)) //because this was being called on turfs for some reason
|
||||
return
|
||||
|
||||
|
||||
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
|
||||
playsound(L, 'sound/weapons/Genhit.ogg', 50, 1)
|
||||
return
|
||||
|
||||
|
||||
L.Stun(stunforce)
|
||||
L.Weaken(stunforce)
|
||||
L.apply_effect(STUTTER, stunforce)
|
||||
@@ -160,12 +182,7 @@
|
||||
add_attack_logs(user, L, "stunned")
|
||||
playsound(loc, 'sound/weapons/Egloves.ogg', 50, 1, -1)
|
||||
|
||||
if(isrobot(loc))
|
||||
var/mob/living/silicon/robot/R = loc
|
||||
if(R && R.cell)
|
||||
R.cell.use(hitcost)
|
||||
else
|
||||
deductcharge(hitcost)
|
||||
deductcharge(hitcost)
|
||||
|
||||
if(ishuman(L))
|
||||
var/mob/living/carbon/human/H = L
|
||||
|
||||
@@ -147,6 +147,12 @@
|
||||
icon_state = "emergency_engi"
|
||||
volume = 6
|
||||
|
||||
/obj/item/tank/emergency_oxygen/syndi
|
||||
name = "suspicious emergency oxygen tank"
|
||||
icon_state = "emergency_syndi"
|
||||
desc = "A dark emergency oxygen tank. The label on the back reads \"Original Oxygen Tank Design, Do Not Steal.\""
|
||||
volume = 6
|
||||
|
||||
/obj/item/tank/emergency_oxygen/double
|
||||
name = "double emergency oxygen tank"
|
||||
icon_state = "emergency_double"
|
||||
|
||||
Reference in New Issue
Block a user