Merge branch 'master' into Unmodular
This commit is contained in:
@@ -111,5 +111,6 @@ GLOBAL_LIST_INIT(maintenance_loot, list(
|
||||
/obj/item/storage/pill_bottle/penis_enlargement = 2,
|
||||
/obj/item/clothing/shoes/wheelys = 1,
|
||||
/obj/item/clothing/shoes/kindleKicks = 1,
|
||||
/obj/item/autosurgeon/penis = 1,
|
||||
"" = 3
|
||||
))
|
||||
|
||||
@@ -86,13 +86,13 @@
|
||||
return 0
|
||||
|
||||
/datum/martial_art/krav_maga/proc/leg_sweep(var/mob/living/carbon/human/A, var/mob/living/carbon/human/D)
|
||||
if(D.stat || D.IsKnockdown())
|
||||
if(D.lying || D.IsKnockdown())
|
||||
return 0
|
||||
D.visible_message("<span class='warning'>[A] leg sweeps [D]!</span>", \
|
||||
"<span class='userdanger'>[A] leg sweeps you!</span>")
|
||||
playsound(get_turf(A), 'sound/effects/hit_kick.ogg', 50, 1, -1)
|
||||
D.apply_damage(5, BRUTE)
|
||||
D.Knockdown(40)
|
||||
D.Knockdown(40, override_hardstun = 0.01, 25)
|
||||
log_combat(A, D, "leg sweeped")
|
||||
return 1
|
||||
|
||||
|
||||
@@ -229,4 +229,4 @@
|
||||
/datum/mutation/human/stoner/on_losing(mob/living/carbon/human/owner)
|
||||
..()
|
||||
owner.grant_language(/datum/language/common)
|
||||
owner.remove_language(/datum/language/beachbum)
|
||||
owner.remove_language(/datum/language/beachbum)
|
||||
@@ -60,7 +60,7 @@
|
||||
if("Scientist")
|
||||
heirloom_type = /obj/item/toy/plush/slimeplushie
|
||||
if("Assistant")
|
||||
heirloom_type = /obj/item/storage/toolbox/mechanical/old/heirloom
|
||||
heirloom_type = /obj/item/clothing/gloves/cut/family
|
||||
if("Chaplain")
|
||||
heirloom_type = /obj/item/camera/spooky/family
|
||||
if("Captain")
|
||||
|
||||
@@ -542,6 +542,7 @@ GLOBAL_LIST_EMPTY(possible_items_special)
|
||||
return checking.researched_nodes.len >= target_amount
|
||||
|
||||
/datum/objective/capture
|
||||
var/captured_amount = 0
|
||||
|
||||
/datum/objective/capture/proc/gen_amount_goal()
|
||||
target_amount = rand(5,10)
|
||||
@@ -549,8 +550,7 @@ GLOBAL_LIST_EMPTY(possible_items_special)
|
||||
return target_amount
|
||||
|
||||
/datum/objective/capture/check_completion()//Basically runs through all the mobs in the area to determine how much they are worth.
|
||||
var/captured_amount = 0
|
||||
var/area/centcom/holding/A = GLOB.areas_by_type[/area/centcom/holding]
|
||||
/*var/area/centcom/holding/A = GLOB.areas_by_type[/area/centcom/holding]
|
||||
for(var/mob/living/carbon/human/M in A)//Humans.
|
||||
if(M.stat == DEAD)//Dead folks are worth less.
|
||||
captured_amount+=0.5
|
||||
@@ -573,7 +573,7 @@ GLOBAL_LIST_EMPTY(possible_items_special)
|
||||
if(M.stat == DEAD)
|
||||
captured_amount+=1
|
||||
continue
|
||||
captured_amount+=2
|
||||
captured_amount+=2*/ //Removed in favour of adding points on capture, in energy_net_nets.dm
|
||||
return captured_amount >= target_amount
|
||||
|
||||
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
#define ARCADE_WEIGHT_TRICK 4
|
||||
#define ARCADE_WEIGHT_USELESS 2
|
||||
#define ARCADE_WEIGHT_RARE 1
|
||||
#define ARCADE_WEIGHT_PLUSH 3
|
||||
|
||||
|
||||
/obj/machinery/computer/arcade
|
||||
@@ -26,7 +27,7 @@
|
||||
/obj/item/toy/katana = ARCADE_WEIGHT_TRICK,
|
||||
/obj/item/toy/minimeteor = ARCADE_WEIGHT_TRICK,
|
||||
/obj/item/toy/nuke = ARCADE_WEIGHT_TRICK,
|
||||
/obj/item/toy/plush/random = ARCADE_WEIGHT_USELESS,
|
||||
/obj/item/toy/plush/random = ARCADE_WEIGHT_PLUSH,
|
||||
/obj/item/toy/redbutton = ARCADE_WEIGHT_TRICK,
|
||||
/obj/item/toy/spinningtoy = ARCADE_WEIGHT_TRICK,
|
||||
/obj/item/toy/sword = ARCADE_WEIGHT_TRICK,
|
||||
|
||||
@@ -173,14 +173,15 @@
|
||||
var/obj/machinery/shuttle_manipulator/M = locate() in GLOB.machines
|
||||
if(M)
|
||||
SSshuttle.shuttle_purchased = TRUE
|
||||
M.unload_preview()
|
||||
M.load_template(S)
|
||||
M.existing_shuttle = SSshuttle.emergency
|
||||
M.action_load(S)
|
||||
SSshuttle.points -= S.credit_cost
|
||||
minor_announce("[usr.real_name] has purchased [S.name] for [S.credit_cost] credits." , "Shuttle Purchase")
|
||||
message_admins("[ADMIN_LOOKUPFLW(usr)] purchased [S.name].")
|
||||
SSblackbox.record_feedback("text", "shuttle_purchase", 1, "[S.name]")
|
||||
M.unload_preview()
|
||||
M.load_template(S)
|
||||
M.existing_shuttle = SSshuttle.emergency
|
||||
M.action_load(S)
|
||||
message_admins("[S.name] loaded, purchased by [usr]")
|
||||
else
|
||||
to_chat(usr, "Something went wrong! The shuttle exchange system seems to be down.")
|
||||
else
|
||||
|
||||
@@ -109,6 +109,7 @@ GLOBAL_VAR_INIT(rpg_loot_items, FALSE)
|
||||
var/list/grind_results //A reagent list containing the reagents this item produces when ground up in a grinder - this can be an empty list to allow for reagent transferring only
|
||||
var/list/juice_results //A reagent list containing blah blah... but when JUICED in a grinder!
|
||||
|
||||
|
||||
/obj/item/Initialize()
|
||||
|
||||
materials = typelist("materials", materials)
|
||||
|
||||
@@ -0,0 +1,127 @@
|
||||
/obj/item/compressionkit
|
||||
name = "bluespace compression kit"
|
||||
desc = "An illegally modified BSRPED, capable of reducing the size of most items."
|
||||
icon = 'icons/obj/tools.dmi'
|
||||
icon_state = "compression_c"
|
||||
item_state = "RPED"
|
||||
lefthand_file = 'icons/mob/inhands/misc/devices_lefthand.dmi'
|
||||
righthand_file = 'icons/mob/inhands/misc/devices_righthand.dmi'
|
||||
w_class = WEIGHT_CLASS_NORMAL
|
||||
var/charges = 5
|
||||
// var/damage_multiplier = 0.2 Not in use yet.
|
||||
var/mode = 0
|
||||
|
||||
/obj/item/compressionkit/examine(mob/user)
|
||||
..()
|
||||
to_chat(user, "<span class='notice'>It has [charges] charges left. Recharge with bluespace crystals.</span>")
|
||||
to_chat(user, "<span class='notice'>Use in-hand to swap toggle compress/expand mode (expand mode not yet implemented).</span>")
|
||||
|
||||
/obj/item/compressionkit/attack_self(mob/user)
|
||||
if(mode == 0)
|
||||
mode = 1
|
||||
icon_state = "compression_e"
|
||||
to_chat(user, "<span class='notice'>You switch the compressor to expand mode. This isn't implemented yet, so right now it wont do anything different!</span>")
|
||||
return
|
||||
if(mode == 1)
|
||||
mode = 0
|
||||
icon_state = "compression_c"
|
||||
to_chat(user, "<span class='notice'>You switch the compressor to compress mode. Usage will now reduce the size of objects.</span>")
|
||||
return
|
||||
else
|
||||
mode = 0
|
||||
icon_state = "compression_c"
|
||||
to_chat(user, "<span class='notice'>Some coder cocked up or an admin broke your compressor. It's been set back to compress mode..</span>")
|
||||
|
||||
/obj/item/compressionkit/proc/sparks()
|
||||
var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread
|
||||
s.set_up(5, 1, get_turf(src))
|
||||
s.start()
|
||||
|
||||
/obj/item/compressionkit/suicide_act(mob/living/carbon/M)
|
||||
M.visible_message("<span class='suicide'>[M] is sticking their head in [src] and turning it on! [M.p_theyre(TRUE)] going to compress their own skull!</span>")
|
||||
var/obj/item/bodypart/head = M.get_bodypart("head")
|
||||
if(!head)
|
||||
return
|
||||
var/turf/T = get_turf(M)
|
||||
var/list/organs = M.getorganszone("head") + M.getorganszone("eyes") + M.getorganszone("mouth")
|
||||
for(var/internal_organ in organs)
|
||||
var/obj/item/organ/I = internal_organ
|
||||
I.Remove(M)
|
||||
I.forceMove(T)
|
||||
head.drop_limb()
|
||||
qdel(head)
|
||||
new M.gib_type(T,1,M.get_static_viruses())
|
||||
M.add_splatter_floor(T)
|
||||
playsound(M, 'sound/weapons/flash.ogg', 50, 1)
|
||||
playsound(M, 'sound/effects/splat.ogg', 50, 1)
|
||||
|
||||
return OXYLOSS
|
||||
|
||||
/obj/item/compressionkit/afterattack(atom/target, mob/user, proximity)
|
||||
. = ..()
|
||||
if(!proximity || !target)
|
||||
return
|
||||
else
|
||||
if(charges == 0)
|
||||
playsound(get_turf(src), 'sound/machines/buzz-two.ogg', 50, 1)
|
||||
to_chat(user, "<span class='notice'>The bluespace compression kit is out of charges! Recharge it with bluespace crystals.</span>")
|
||||
return
|
||||
if(istype(target, /obj/item))
|
||||
var/obj/item/O = target
|
||||
if(O.w_class == 1)
|
||||
playsound(get_turf(src), 'sound/machines/buzz-two.ogg', 50, 1)
|
||||
to_chat(user, "<span class='notice'>[target] cannot be compressed smaller!.</span>")
|
||||
return
|
||||
if(O.GetComponent(/datum/component/storage))
|
||||
to_chat(user, "<span class='notice'>You feel like compressing an item that stores other items would be counterproductive.</span>")
|
||||
return
|
||||
if(O.w_class > 1)
|
||||
playsound(get_turf(src), 'sound/weapons/flash.ogg', 50, 1)
|
||||
user.visible_message("<span class='warning'>[user] is compressing [O] with their bluespace compression kit!</span>")
|
||||
if(do_mob(user, O, 40) && charges > 0 && O.w_class > 1)
|
||||
playsound(get_turf(src), 'sound/weapons/emitter2.ogg', 50, 1)
|
||||
sparks()
|
||||
flash_lighting_fx(3, 3, LIGHT_COLOR_CYAN)
|
||||
O.w_class -= 1
|
||||
// O.force_mult -= damage_multiplier
|
||||
charges -= 1
|
||||
to_chat(user, "<span class='notice'>You successfully compress [target]! The compressor now has [charges] charges.</span>")
|
||||
else
|
||||
to_chat(user, "<span class='notice'>Anomalous error. Summon a coder.</span>")
|
||||
|
||||
if(istype(target, /mob/living))
|
||||
var/mob/living/victim = target
|
||||
if(istype(victim, /mob/living/carbon/human))
|
||||
if(user.zone_selected == "groin") // pp smol. There's probably a smarter way to do this but im retarded. If you have a simpler method let me know.
|
||||
var/list/organs = victim.getorganszone("groin")
|
||||
for(var/internal_organ in organs)
|
||||
if(istype(internal_organ, /obj/item/organ/genital/penis))
|
||||
var/obj/item/organ/genital/penis/O = internal_organ
|
||||
playsound(get_turf(src), 'sound/weapons/flash.ogg', 50, 1)
|
||||
victim.visible_message("<span class='warning'>[user] is preparing to shrink [victim]\'s [O.name] with their bluespace compression kit!</span>")
|
||||
if(do_mob(user, victim, 40) && charges > 0 && O.length > 0)
|
||||
victim.visible_message("<span class='warning'>[user] has shrunk [victim]\'s [O.name]!</span>")
|
||||
playsound(get_turf(src), 'sound/weapons/emitter2.ogg', 50, 1)
|
||||
sparks()
|
||||
flash_lighting_fx(3, 3, LIGHT_COLOR_CYAN)
|
||||
charges -= 1
|
||||
O.length -= 5
|
||||
if(O.length < 1)
|
||||
victim.visible_message("<span class='warning'>[user]\'s [O.name] vanishes!</span>")
|
||||
qdel(O) // no pp for you
|
||||
else
|
||||
O.update_size()
|
||||
O.update_appearance()
|
||||
|
||||
|
||||
|
||||
/obj/item/compressionkit/attackby(obj/item/I, mob/user, params)
|
||||
..()
|
||||
if(istype(I, /obj/item/stack/ore/bluespace_crystal))
|
||||
var/obj/item/stack/ore/bluespace_crystal/B = I
|
||||
charges += 2
|
||||
to_chat(user, "<span class='notice'>You insert [I] into [src]. It now has [charges] charges.</span>")
|
||||
if(B.amount > 1)
|
||||
B.amount -= 1
|
||||
else
|
||||
qdel(I)
|
||||
@@ -0,0 +1,32 @@
|
||||
/obj/item/syndie_glue
|
||||
name = "bottle of super glue"
|
||||
desc = "A black market brand of high strength adhesive, rarely sold to the public. Do not ingest."
|
||||
icon = 'icons/obj/tools.dmi'
|
||||
icon_state = "glue"
|
||||
w_class = WEIGHT_CLASS_SMALL
|
||||
var/uses = 1
|
||||
|
||||
/obj/item/syndie_glue/suicide_act(mob/living/carbon/M)
|
||||
return //todo
|
||||
|
||||
/obj/item/syndie_glue/afterattack(atom/target, mob/user, proximity)
|
||||
. = ..()
|
||||
if(!proximity || !target)
|
||||
return
|
||||
else
|
||||
if(uses == 0)
|
||||
to_chat(user, "<span class='warning'>The bottle of glue is empty!</span>")
|
||||
return
|
||||
if(istype(target, /obj/item))
|
||||
var/obj/item/I = target
|
||||
if(I.item_flags & NODROP)
|
||||
to_chat(user, "<span class='warning'>[I] is already sticky!</span>")
|
||||
return
|
||||
uses -= 1
|
||||
I.item_flags |= NODROP
|
||||
I.desc += " It looks sticky."
|
||||
to_chat(user, "<span class='notice'>You smear the [I] with glue, making it incredibly sticky!</span>")
|
||||
if(uses == 0)
|
||||
icon_state = "glue_used"
|
||||
name = "empty bottle of super glue"
|
||||
return
|
||||
@@ -576,6 +576,7 @@
|
||||
lefthand_file = 'icons/mob/inhands/weapons/melee_lefthand.dmi'
|
||||
righthand_file = 'icons/mob/inhands/weapons/melee_righthand.dmi'
|
||||
slot_flags = ITEM_SLOT_BELT
|
||||
reach = 2
|
||||
attack_verb = list("whipped", "lashed")
|
||||
hitsound = 'sound/weapons/chainhit.ogg'
|
||||
|
||||
|
||||
@@ -20,6 +20,7 @@
|
||||
slot_flags = ITEM_SLOT_BELT
|
||||
force = 14
|
||||
throwforce = 10
|
||||
reach = 2
|
||||
w_class = WEIGHT_CLASS_NORMAL
|
||||
attack_verb = list("flogged", "whipped", "lashed", "disciplined")
|
||||
hitsound = 'sound/weapons/chainhit.ogg'
|
||||
|
||||
@@ -38,9 +38,10 @@
|
||||
/obj/item/storage/briefcase/lawyer
|
||||
folder_path = /obj/item/folder/blue
|
||||
|
||||
/obj/item/storage/briefcase/lawyer/family
|
||||
/obj/item/storage/briefcase/lawyer/family
|
||||
name = "battered briefcase"
|
||||
desc = "An old briefcase, this one has seen better days in its time. It's clear they don't make them nowadays as good as they used to. The corners are modified with metal trim adding in weight!"
|
||||
desc = "An old briefcase, this one has seen better days in its time. It's clear they don't make them nowadays as good as they used to. Comes with an added belt clip!"
|
||||
slot_flags = ITEM_SLOT_BELT
|
||||
|
||||
/obj/item/storage/briefcase/lawyer/family/PopulateContents()
|
||||
new /obj/item/stamp/law(src)
|
||||
@@ -79,3 +80,12 @@
|
||||
new /obj/item/ammo_box/magazine/sniper_rounds/soporific(src)
|
||||
new /obj/item/suppressor/specialoffer(src)
|
||||
|
||||
/obj/item/storage/briefcase/medical
|
||||
name = "medical briefcase"
|
||||
icon_state = "medbriefcase"
|
||||
desc = "A white with a blue cross brieface, this is ment to hold medical gear that would not be able to normally fit in a bag."
|
||||
|
||||
/obj/item/storage/briefcase/medical/PopulateContents()
|
||||
new /obj/item/clothing/neck/stethoscope(src)
|
||||
new /obj/item/healthanalyzer(src)
|
||||
..() //In case of paperwork
|
||||
|
||||
@@ -22,7 +22,10 @@
|
||||
var/preload_cell_type //if not empty the baton starts with this type of cell
|
||||
|
||||
/obj/item/melee/baton/get_cell()
|
||||
return cell
|
||||
. = cell
|
||||
if(iscyborg(loc))
|
||||
var/mob/living/silicon/robot/R = loc
|
||||
. = R.get_cell()
|
||||
|
||||
/obj/item/melee/baton/suicide_act(mob/user)
|
||||
user.visible_message("<span class='suicide'>[user] is putting the live [name] in [user.p_their()] mouth! It looks like [user.p_theyre()] trying to commit suicide!</span>")
|
||||
@@ -46,14 +49,18 @@
|
||||
/obj/item/melee/baton/loaded //this one starts with a cell pre-installed.
|
||||
preload_cell_type = /obj/item/stock_parts/cell/high
|
||||
|
||||
/obj/item/melee/baton/proc/deductcharge(chrgdeductamt, chargecheck = TRUE)
|
||||
if(!cell)
|
||||
/obj/item/melee/baton/proc/deductcharge(chrgdeductamt, chargecheck = TRUE, explode = TRUE)
|
||||
var/obj/item/stock_parts/cell/copper_top = get_cell()
|
||||
if(!copper_top)
|
||||
switch_status(FALSE, TRUE)
|
||||
return FALSE
|
||||
//Note this value returned is significant, as it will determine
|
||||
//if a stun is applied or not
|
||||
. = cell.use(chrgdeductamt)
|
||||
if(status && (!. || (chargecheck && cell.charge < hitcost * STUNBATON_CHARGE_LENIENCY)))
|
||||
|
||||
copper_top.use(min(chrgdeductamt, copper_top.charge), explode)
|
||||
if(QDELETED(src))
|
||||
return FALSE
|
||||
if(status && (!copper_top || !copper_top.charge || (chargecheck && copper_top.charge < (hitcost * STUNBATON_CHARGE_LENIENCY))))
|
||||
//we're below minimum, turn off
|
||||
switch_status(FALSE)
|
||||
|
||||
@@ -69,7 +76,7 @@
|
||||
update_icon()
|
||||
|
||||
/obj/item/melee/baton/process()
|
||||
deductcharge(hitcost * 0.004, FALSE)
|
||||
deductcharge(hitcost * 0.004, FALSE, FALSE)
|
||||
|
||||
/obj/item/melee/baton/update_icon()
|
||||
if(status)
|
||||
@@ -80,9 +87,10 @@
|
||||
icon_state = "[initial(name)]"
|
||||
|
||||
/obj/item/melee/baton/examine(mob/user)
|
||||
..()
|
||||
if(cell)
|
||||
to_chat(user, "<span class='notice'>\The [src] is [round(cell.percent())]% charged.</span>")
|
||||
. = ..()
|
||||
var/obj/item/stock_parts/cell/copper_top = get_cell()
|
||||
if(copper_top)
|
||||
to_chat(user, "<span class='notice'>\The [src] is [round(copper_top.percent())]% charged.</span>")
|
||||
else
|
||||
to_chat(user, "<span class='warning'>\The [src] does not have a power source installed.</span>")
|
||||
|
||||
@@ -92,7 +100,7 @@
|
||||
if(cell)
|
||||
to_chat(user, "<span class='notice'>[src] already has a cell.</span>")
|
||||
else
|
||||
if(C.maxcharge < hitcost * STUNBATON_CHARGE_LENIENCY)
|
||||
if(C.maxcharge < (hitcost * STUNBATON_CHARGE_LENIENCY))
|
||||
to_chat(user, "<span class='notice'>[src] requires a higher capacity cell.</span>")
|
||||
return
|
||||
if(!user.transferItemToLoc(W, src))
|
||||
@@ -112,15 +120,16 @@
|
||||
return ..()
|
||||
|
||||
/obj/item/melee/baton/attack_self(mob/user)
|
||||
if(cell && cell.charge > hitcost * STUNBATON_CHARGE_LENIENCY)
|
||||
switch_status(!status)
|
||||
to_chat(user, "<span class='notice'>[src] is now [status ? "on" : "off"].</span>")
|
||||
else
|
||||
var/obj/item/stock_parts/cell/copper_top = get_cell()
|
||||
if(!copper_top || copper_top.charge < (hitcost * STUNBATON_CHARGE_LENIENCY))
|
||||
switch_status(FALSE, TRUE)
|
||||
if(!cell)
|
||||
if(!copper_top)
|
||||
to_chat(user, "<span class='warning'>[src] does not have a power source!</span>")
|
||||
else
|
||||
to_chat(user, "<span class='warning'>[src] is out of charge.</span>")
|
||||
else
|
||||
switch_status(!status)
|
||||
to_chat(user, "<span class='notice'>[src] is now [status ? "on" : "off"].</span>")
|
||||
add_fingerprint(user)
|
||||
|
||||
/obj/item/melee/baton/attack(mob/M, mob/living/carbon/human/user)
|
||||
@@ -164,16 +173,21 @@
|
||||
playsound(L, 'sound/weapons/genhit.ogg', 50, 1)
|
||||
return FALSE
|
||||
var/stunpwr = stunforce
|
||||
if(iscyborg(loc))
|
||||
var/mob/living/silicon/robot/R = loc
|
||||
if(!istype(R) || !R.cell || !R.cell.use(hitcost))
|
||||
var/obj/item/stock_parts/cell/our_cell = get_cell()
|
||||
if(!our_cell)
|
||||
switch_status(FALSE)
|
||||
return FALSE
|
||||
var/stuncharge = our_cell.charge
|
||||
deductcharge(hitcost, FALSE)
|
||||
if(QDELETED(src) || QDELETED(our_cell)) //it was rigged
|
||||
return FALSE
|
||||
if(stuncharge < hitcost)
|
||||
if(stuncharge < (hitcost * STUNBATON_CHARGE_LENIENCY))
|
||||
L.visible_message("<span class='warning'>[user] has prodded [L] with [src]. Luckily it was out of charge.</span>", \
|
||||
"<span class='warning'>[user] has prodded you with [src]. Luckily it was out of charge.</span>")
|
||||
return FALSE
|
||||
else
|
||||
var/stuncharge = cell.charge
|
||||
if(!deductcharge(hitcost, FALSE))
|
||||
stunpwr *= round(stuncharge/hitcost)
|
||||
if(stunpwr < stunforce * STUNBATON_CHARGE_LENIENCY)
|
||||
return FALSE
|
||||
stunpwr *= round(stuncharge/hitcost, 0.1)
|
||||
|
||||
|
||||
L.Knockdown(stunpwr)
|
||||
L.adjustStaminaLoss(stunpwr*0.1, affected_zone = (istype(user) ? user.zone_selected : BODY_ZONE_CHEST))//CIT CHANGE - makes stunbatons deal extra staminaloss. Todo: make this also deal pain when pain gets implemented.
|
||||
@@ -198,14 +212,17 @@
|
||||
/obj/item/melee/baton/proc/clowning_around(mob/living/user)
|
||||
user.visible_message("<span class='danger'>[user] accidentally hits [user.p_them()]self with [src]!</span>", \
|
||||
"<span class='userdanger'>You accidentally hit yourself with [src]!</span>")
|
||||
SEND_SIGNAL(user, COMSIG_LIVING_MINOR_SHOCK)
|
||||
user.Knockdown(stunforce*3)
|
||||
playsound(loc, 'sound/weapons/egloves.ogg', 50, 1, -1)
|
||||
deductcharge(hitcost)
|
||||
|
||||
/obj/item/melee/baton/emp_act(severity)
|
||||
. = ..()
|
||||
if (!(. & EMP_PROTECT_SELF))
|
||||
switch_status(FALSE)
|
||||
deductcharge(1000 / severity)
|
||||
if(!iscyborg(loc))
|
||||
deductcharge(1000 / severity, TRUE, FALSE)
|
||||
|
||||
//Makeshift stun baton. Replacement for stun gloves.
|
||||
/obj/item/melee/baton/cattleprod
|
||||
|
||||
@@ -10,15 +10,14 @@
|
||||
. = ..()
|
||||
if(!. || !istype(M) || M.anchored)
|
||||
return
|
||||
else
|
||||
SEND_SIGNAL(M, COMSIG_LIVING_MINOR_SHOCK)
|
||||
do_teleport(M, get_turf(M), 15)
|
||||
do_teleport(M, get_turf(M), 15)
|
||||
|
||||
/obj/item/melee/baton/cattleprod/teleprod/clowning_around(mob/living/user)
|
||||
user.visible_message("<span class='danger'>[user] accidentally hits [user.p_them()]self with [src]!</span>", \
|
||||
"<span class='userdanger'>You accidentally hit yourself with [src]!</span>")
|
||||
SEND_SIGNAL(user, COMSIG_LIVING_MINOR_SHOCK)
|
||||
user.Knockdown(stunforce*3)
|
||||
playsound(loc, 'sound/weapons/egloves.ogg', 50, 1, -1)
|
||||
if(do_teleport(user, get_turf(user), 50))
|
||||
deductcharge(hitcost)
|
||||
else
|
||||
|
||||
@@ -106,6 +106,7 @@
|
||||
new /obj/item/radio/headset/headset_sec(src)
|
||||
new /obj/item/clothing/suit/armor/vest/warden(src)
|
||||
new /obj/item/clothing/head/warden(src)
|
||||
new /obj/item/clothing/head/warden/drill(src)
|
||||
new /obj/item/clothing/head/beret/sec/navywarden(src)
|
||||
new /obj/item/clothing/suit/armor/vest/warden/alt(src)
|
||||
new /obj/item/clothing/under/rank/warden/navyblue(src)
|
||||
|
||||
@@ -101,6 +101,12 @@
|
||||
icon_state = "festivus_pole"
|
||||
desc = "During last year's Feats of Strength the Research Director was able to suplex this passing immobile rod into a planter."
|
||||
|
||||
/obj/structure/festivus/anchored
|
||||
name = "suplexed rod"
|
||||
desc = "A true feat of strength, almost as good as last year."
|
||||
icon_state = "anchored_rod"
|
||||
anchored = TRUE
|
||||
|
||||
/obj/structure/flora/tree/dead/Initialize()
|
||||
icon_state = "tree_[rand(1, 6)]"
|
||||
. = ..()
|
||||
|
||||
@@ -27,7 +27,12 @@ Thus, the two variables affect pump operation are set in New():
|
||||
|
||||
construction_type = /obj/item/pipe/directional
|
||||
pipe_state = "pump"
|
||||
|
||||
|
||||
/obj/machinery/atmospherics/components/binary/pump/examine(mob/user)
|
||||
. = ..()
|
||||
to_chat(user,"<span class='notice'>You can hold <b>Ctrl</b> and click on it to toggle it on and off.</span>")
|
||||
to_chat(user,"<span class='notice'>You can hold <b>Alt</b> and click on it to maximize its pressure.</span>")
|
||||
|
||||
/obj/machinery/atmospherics/components/binary/pump/CtrlClick(mob/user)
|
||||
var/area/A = get_area(src)
|
||||
var/turf/T = get_turf(src)
|
||||
@@ -37,7 +42,7 @@ Thus, the two variables affect pump operation are set in New():
|
||||
investigate_log("Pump, [src.name], turned on by [key_name(usr)] at [x], [y], [z], [A]", INVESTIGATE_ATMOS)
|
||||
message_admins("Pump, [src.name], turned [on ? "on" : "off"] by [ADMIN_LOOKUPFLW(usr)] at [ADMIN_COORDJMP(T)], [A]")
|
||||
return ..()
|
||||
|
||||
|
||||
/obj/machinery/atmospherics/components/binary/pump/AltClick(mob/user)
|
||||
var/area/A = get_area(src)
|
||||
var/turf/T = get_turf(src)
|
||||
@@ -46,7 +51,7 @@ Thus, the two variables affect pump operation are set in New():
|
||||
to_chat(user,"<span class='notice'>You maximize the pressure on the [src].</span>")
|
||||
investigate_log("Pump, [src.name], was maximized by [key_name(usr)] at [x], [y], [z], [A]", INVESTIGATE_ATMOS)
|
||||
message_admins("Pump, [src.name], was maximized by [ADMIN_LOOKUPFLW(usr)] at [ADMIN_COORDJMP(T)], [A]")
|
||||
|
||||
|
||||
/obj/machinery/atmospherics/components/binary/pump/layer1
|
||||
piping_layer = PIPING_LAYER_MIN
|
||||
pixel_x = -PIPING_LAYER_P_X
|
||||
|
||||
@@ -28,16 +28,21 @@ Thus, the two variables affect pump operation are set in New():
|
||||
construction_type = /obj/item/pipe/directional
|
||||
pipe_state = "volumepump"
|
||||
|
||||
/obj/machinery/atmospherics/components/binary/volume_pump/examine(mob/user)
|
||||
. = ..()
|
||||
to_chat(user,"<span class='notice'>You can hold <b>Ctrl</b> and click on it to toggle it on and off.</span>")
|
||||
to_chat(user,"<span class='notice'>You can hold <b>Alt</b> and click on it to maximize its pressure.</span>")
|
||||
|
||||
/obj/machinery/atmospherics/components/binary/volume_pump/CtrlClick(mob/user)
|
||||
var/area/A = get_area(src)
|
||||
var/turf/T = get_turf(src)
|
||||
if(user.canUseTopic(src, BE_CLOSE, FALSE,))
|
||||
on = !on
|
||||
update_icon()
|
||||
investigate_log("Pump, [src.name], turned on by [key_name(usr)] at [x], [y], [z], [A]", INVESTIGATE_ATMOS)
|
||||
message_admins("Pump, [src.name], turned [on ? "on" : "off"] by [ADMIN_LOOKUPFLW(usr)] at [ADMIN_COORDJMP(T)], [A]")
|
||||
investigate_log("Volume Pump, [src.name], turned on by [key_name(usr)] at [x], [y], [z], [A]", INVESTIGATE_ATMOS)
|
||||
message_admins("Volume Pump, [src.name], turned [on ? "on" : "off"] by [ADMIN_LOOKUPFLW(usr)] at [ADMIN_COORDJMP(T)], [A]")
|
||||
return ..()
|
||||
|
||||
|
||||
/obj/machinery/atmospherics/components/binary/volume_pump/layer1
|
||||
piping_layer = PIPING_LAYER_MIN
|
||||
pixel_x = -PIPING_LAYER_P_X
|
||||
|
||||
@@ -12,24 +12,29 @@
|
||||
construction_type = /obj/item/pipe/trinary/flippable
|
||||
pipe_state = "filter"
|
||||
|
||||
/obj/machinery/atmospherics/components/trinary/filter/examine(mob/user)
|
||||
. = ..()
|
||||
to_chat(user,"<span class='notice'>You can hold <b>Ctrl</b> and click on it to toggle it on and off.</span>")
|
||||
to_chat(user,"<span class='notice'>You can hold <b>Alt</b> and click on it to maximize its pressure.</span>")
|
||||
|
||||
/obj/machinery/atmospherics/components/trinary/filter/CtrlClick(mob/user)
|
||||
var/area/A = get_area(src)
|
||||
var/turf/T = get_turf(src)
|
||||
if(user.canUseTopic(src, BE_CLOSE, FALSE,))
|
||||
on = !on
|
||||
update_icon()
|
||||
investigate_log("Pump, [src.name], turned on by [key_name(usr)] at [x], [y], [z], [A]", INVESTIGATE_ATMOS)
|
||||
message_admins("Pump, [src.name], turned [on ? "on" : "off"] by [ADMIN_LOOKUPFLW(usr)] at [ADMIN_COORDJMP(T)], [A]")
|
||||
investigate_log("Filter, [src.name], turned on by [key_name(usr)] at [x], [y], [z], [A]", INVESTIGATE_ATMOS)
|
||||
message_admins("Filter, [src.name], turned [on ? "on" : "off"] by [ADMIN_LOOKUPFLW(usr)] at [ADMIN_COORDJMP(T)], [A]")
|
||||
return ..()
|
||||
|
||||
|
||||
/obj/machinery/atmospherics/components/trinary/filter/AltClick(mob/user)
|
||||
var/area/A = get_area(src)
|
||||
var/turf/T = get_turf(src)
|
||||
if(user.canUseTopic(src, BE_CLOSE, FALSE,))
|
||||
target_pressure = MAX_OUTPUT_PRESSURE
|
||||
to_chat(user,"<span class='notice'>You maximize the pressure on the [src].</span>")
|
||||
investigate_log("Pump, [src.name], was maximized by [key_name(usr)] at [x], [y], [z], [A]", INVESTIGATE_ATMOS)
|
||||
message_admins("Pump, [src.name], was maximized by [ADMIN_LOOKUPFLW(usr)] at [ADMIN_COORDJMP(T)], [A]")
|
||||
investigate_log("Filter, [src.name], was maximized by [key_name(usr)] at [x], [y], [z], [A]", INVESTIGATE_ATMOS)
|
||||
message_admins("Filter, [src.name], was maximized by [ADMIN_LOOKUPFLW(usr)] at [ADMIN_COORDJMP(T)], [A]")
|
||||
|
||||
/obj/machinery/atmospherics/components/trinary/filter/layer1
|
||||
piping_layer = PIPING_LAYER_MIN
|
||||
|
||||
@@ -14,25 +14,31 @@
|
||||
pipe_state = "mixer"
|
||||
|
||||
//node 3 is the outlet, nodes 1 & 2 are intakes
|
||||
/obj/machinery/atmospherics/components/trinary/mixer/examine(mob/user)
|
||||
. = ..()
|
||||
to_chat(user,"<span class='notice'>You can hold <b>Ctrl</b> and click on it to toggle it on and off.</span>")
|
||||
to_chat(user,"<span class='notice'>You can hold <b>Alt</b> and click on it to maximize its pressure.</span>")
|
||||
|
||||
/obj/machinery/atmospherics/components/trinary/mixer/CtrlClick(mob/user)
|
||||
var/area/A = get_area(src)
|
||||
var/turf/T = get_turf(src)
|
||||
if(user.canUseTopic(src, BE_CLOSE, FALSE,))
|
||||
on = !on
|
||||
update_icon()
|
||||
investigate_log("Pump, [src.name], turned on by [key_name(usr)] at [x], [y], [z], [A]", INVESTIGATE_ATMOS)
|
||||
message_admins("Pump, [src.name], turned [on ? "on" : "off"] by [ADMIN_LOOKUPFLW(usr)] at [ADMIN_COORDJMP(T)], [A]")
|
||||
investigate_log("Mixer, [src.name], turned on by [key_name(usr)] at [x], [y], [z], [A]", INVESTIGATE_ATMOS)
|
||||
message_admins("Mixer, [src.name], turned [on ? "on" : "off"] by [ADMIN_LOOKUPFLW(usr)] at [ADMIN_COORDJMP(T)], [A]")
|
||||
return ..()
|
||||
|
||||
|
||||
/obj/machinery/atmospherics/components/trinary/mixer/AltClick(mob/user)
|
||||
var/area/A = get_area(src)
|
||||
var/turf/T = get_turf(src)
|
||||
if(user.canUseTopic(src, BE_CLOSE, FALSE,))
|
||||
target_pressure = MAX_OUTPUT_PRESSURE
|
||||
to_chat(user,"<span class='notice'>You maximize the pressure on the [src].</span>")
|
||||
investigate_log("Pump, [src.name], was maximized by [key_name(usr)] at [x], [y], [z], [A]", INVESTIGATE_ATMOS)
|
||||
message_admins("Pump, [src.name], was maximized by [ADMIN_LOOKUPFLW(usr)] at [ADMIN_COORDJMP(T)], [A]")
|
||||
|
||||
investigate_log("Mixer, [src.name], was maximized by [key_name(usr)] at [x], [y], [z], [A]", INVESTIGATE_ATMOS)
|
||||
message_admins("Mixer, [src.name], was maximized by [ADMIN_LOOKUPFLW(usr)] at [ADMIN_COORDJMP(T)], [A]")
|
||||
|
||||
//node 3 is the outlet, nodes 1 & 2 are intakes
|
||||
/obj/machinery/atmospherics/components/trinary/mixer/layer1
|
||||
piping_layer = PIPING_LAYER_MIN
|
||||
pixel_x = -PIPING_LAYER_P_X
|
||||
|
||||
@@ -7,6 +7,7 @@
|
||||
permeability_coefficient = 0.05
|
||||
item_color="yellow"
|
||||
resistance_flags = NONE
|
||||
var/can_be_cut = 1
|
||||
|
||||
/obj/item/clothing/gloves/color/fyellow //Cheap Chinese Crap
|
||||
desc = "These gloves are cheap knockoffs of the coveted ones - no way this can end badly."
|
||||
@@ -17,6 +18,7 @@
|
||||
permeability_coefficient = 0.05
|
||||
item_color="yellow"
|
||||
resistance_flags = NONE
|
||||
var/can_be_cut = 1
|
||||
|
||||
/obj/item/clothing/gloves/color/fyellow/New()
|
||||
..()
|
||||
@@ -30,6 +32,38 @@
|
||||
. = ..()
|
||||
siemens_coefficient = pick(0,0,0,0.5,0.5,0.5,0.75)
|
||||
|
||||
/obj/item/clothing/gloves/cut
|
||||
desc = "These gloves would protect the wearer from electric shock.. if the fingers were covered."
|
||||
name = "fingerless insulated gloves"
|
||||
icon_state = "yellowcut"
|
||||
item_state = "yglovescut"
|
||||
siemens_coefficient = 1
|
||||
permeability_coefficient = 1
|
||||
resistance_flags = NONE
|
||||
transfer_prints = TRUE
|
||||
|
||||
/obj/item/clothing/gloves/cut/family
|
||||
desc = "The old gloves your great grandfather stole from Engineering, many moons ago. They've seen some tough times recently."
|
||||
name = "fingerless insulated gloves"
|
||||
|
||||
/obj/item/clothing/gloves/color/yellow/attackby(obj/item/I, mob/user, params)
|
||||
if(istype(I, /obj/item/wirecutters))
|
||||
if(can_be_cut && icon_state == initial(icon_state))//only if not dyed
|
||||
to_chat(user, "<span class='notice'>You snip the fingertips off of [src].</span>")
|
||||
I.play_tool_sound(src)
|
||||
new /obj/item/clothing/gloves/cut(drop_location())
|
||||
qdel(src)
|
||||
..()
|
||||
|
||||
/obj/item/clothing/gloves/color/fyellow/attackby(obj/item/I, mob/user, params)
|
||||
if(istype(I, /obj/item/wirecutters))
|
||||
if(can_be_cut && icon_state == initial(icon_state))//only if not dyed
|
||||
to_chat(user, "<span class='notice'>You snip the fingertips off of [src].</span>")
|
||||
I.play_tool_sound(src)
|
||||
new /obj/item/clothing/gloves/cut(drop_location())
|
||||
qdel(src)
|
||||
..()
|
||||
|
||||
/obj/item/clothing/gloves/color/black
|
||||
desc = "These gloves are fire-resistant."
|
||||
name = "black gloves"
|
||||
|
||||
@@ -1,3 +1,8 @@
|
||||
//defines the drill hat's yelling setting
|
||||
#define DRILL_DEFAULT "default"
|
||||
#define DRILL_SHOUTING "shouting"
|
||||
#define DRILL_YELLING "yelling"
|
||||
#define DRILL_CANADIAN "canadian"
|
||||
|
||||
//Chef
|
||||
/obj/item/clothing/head/chefhat
|
||||
@@ -148,6 +153,65 @@
|
||||
strip_delay = 60
|
||||
dog_fashion = /datum/dog_fashion/head/warden
|
||||
|
||||
/obj/item/clothing/head/warden/drill
|
||||
name = "warden's campaign hat"
|
||||
desc = "A special armored campaign hat with the security insignia emblazoned on it. Uses reinforced fabric to offer sufficient protection. Has the letters 'FMJ' enscribed on its side."
|
||||
icon_state = "wardendrill"
|
||||
item_state = "wardendrill"
|
||||
dog_fashion = null
|
||||
var/mode = DRILL_DEFAULT
|
||||
|
||||
/obj/item/clothing/head/warden/drill/screwdriver_act(mob/living/carbon/human/user, obj/item/I)
|
||||
if(..())
|
||||
return TRUE
|
||||
switch(mode)
|
||||
if(DRILL_DEFAULT)
|
||||
to_chat(user, "<span class='notice'>You set the voice circuit to the middle position.</span>")
|
||||
mode = DRILL_SHOUTING
|
||||
if(DRILL_SHOUTING)
|
||||
to_chat(user, "<span class='notice'>You set the voice circuit to the last position.</span>")
|
||||
mode = DRILL_YELLING
|
||||
if(DRILL_YELLING)
|
||||
to_chat(user, "<span class='notice'>You set the voice circuit to the first position.</span>")
|
||||
mode = DRILL_DEFAULT
|
||||
if(DRILL_CANADIAN)
|
||||
to_chat(user, "<span class='danger'>You adjust voice circuit but nothing happens, probably because it's broken.</span>")
|
||||
return TRUE
|
||||
|
||||
/obj/item/clothing/head/warden/drill/wirecutter_act(mob/living/user, obj/item/I)
|
||||
if(mode != DRILL_CANADIAN)
|
||||
to_chat(user, "<span class='danger'>You broke the voice circuit!</span>")
|
||||
mode = DRILL_CANADIAN
|
||||
return TRUE
|
||||
|
||||
/obj/item/clothing/head/warden/drill/speechModification(M)
|
||||
if(copytext(M, 1, 2) != "*")
|
||||
if(mode == DRILL_DEFAULT)
|
||||
M = " [M]"
|
||||
return trim(M)
|
||||
if(mode == DRILL_SHOUTING)
|
||||
M = " [M]!"
|
||||
return trim(M)
|
||||
if(mode == DRILL_YELLING)
|
||||
M = " [M]!!"
|
||||
return trim(M)
|
||||
if(mode == DRILL_CANADIAN)
|
||||
M = " [M]"
|
||||
var/list/canadian_words = strings("canadian_replacement.json", "canadian")
|
||||
|
||||
for(var/key in canadian_words)
|
||||
var/value = canadian_words[key]
|
||||
if(islist(value))
|
||||
value = pick(value)
|
||||
|
||||
M = replacetextEx(M, " [uppertext(key)]", " [uppertext(value)]")
|
||||
M = replacetextEx(M, " [capitalize(key)]", " [capitalize(value)]")
|
||||
M = replacetextEx(M, " [key]", " [value]")
|
||||
|
||||
if(prob(30))
|
||||
M += pick(", eh?", ", EH?")
|
||||
return trim(M)
|
||||
|
||||
/obj/item/clothing/head/beret/sec
|
||||
name = "security beret"
|
||||
desc = "A robust beret with the security insignia emblazoned on it. Uses reinforced fabric to offer sufficient protection."
|
||||
@@ -201,3 +265,8 @@
|
||||
name = "quartermaster's beret"
|
||||
desc = "This headwear shows off your Cargonian leadership"
|
||||
icon_state = "qmberet"
|
||||
|
||||
#undef DRILL_DEFAULT
|
||||
#undef DRILL_SHOUTING
|
||||
#undef DRILL_YELLING
|
||||
#undef DRILL_CANADIAN
|
||||
|
||||
@@ -749,3 +749,11 @@
|
||||
fitted = NO_FEMALE_UNIFORM
|
||||
can_adjust = FALSE
|
||||
resistance_flags = NONE
|
||||
|
||||
/obj/item/clothing/under/permit
|
||||
name = "public nudity permit"
|
||||
desc = "This permit entitles the bearer to conduct their duties without a uniform. Normally issued to furred crewmembers or those with nothing to hide."
|
||||
icon = 'icons/obj/card.dmi'
|
||||
icon_state = "fingerprint1"
|
||||
item_state = "golem" //This is dumb and hacky but was here when I got here.//No, it really isn't. Why make a new blank clothing sprite if we already have one?
|
||||
body_parts_covered = CHEST|GROIN
|
||||
|
||||
@@ -45,6 +45,7 @@ In my current plan for it, 'solid' will be defined as anything with density == 1
|
||||
throwforce = 100
|
||||
density = TRUE
|
||||
anchored = TRUE
|
||||
var/mob/living/wizard
|
||||
var/z_original = 0
|
||||
var/destination
|
||||
var/notify = TRUE
|
||||
@@ -140,3 +141,23 @@ In my current plan for it, 'solid' will be defined as anything with density == 1
|
||||
H.adjustBruteLoss(160)
|
||||
if(L && (L.density || prob(10)))
|
||||
L.ex_act(EXPLODE_HEAVY)
|
||||
|
||||
obj/effect/immovablerod/attack_hand(mob/living/user)
|
||||
if(ishuman(user))
|
||||
var/mob/living/carbon/human/U = user
|
||||
if(U.job in list("Research Director"))
|
||||
playsound(src, 'sound/effects/meteorimpact.ogg', 100, 1)
|
||||
for(var/mob/M in urange(8, src))
|
||||
if(!M.stat)
|
||||
shake_camera(M, 2, 3)
|
||||
if(wizard)
|
||||
U.visible_message("<span class='boldwarning'>[src] transforms into [wizard] as [U] suplexes them!</span>", "<span class='warning'>As you grab [src], it suddenly turns into [wizard] as you suplex them!</span>")
|
||||
to_chat(wizard, "<span class='boldwarning'>You're suddenly jolted out of rod-form as [U] somehow manages to grab you, slamming you into the ground!</span>")
|
||||
wizard.Stun(60)
|
||||
wizard.apply_damage(25, BRUTE)
|
||||
qdel(src)
|
||||
else
|
||||
U.visible_message("<span class='boldwarning'>[U] suplexes [src] into the ground!</span>", "<span class='warning'>You suplex [src] into the ground!</span>")
|
||||
new /obj/structure/festivus/anchored(drop_location())
|
||||
new /obj/effect/anomaly/flux(drop_location())
|
||||
qdel(src)
|
||||
|
||||
@@ -53,6 +53,7 @@
|
||||
H.adjust_blurriness(1)
|
||||
H.visible_message("<span class='warning'>[H] is creamed by [src]!</span>", "<span class='userdanger'>You've been creamed by [src]!</span>")
|
||||
playsound(H, "desceration", 50, TRUE)
|
||||
reagents.trans_to(H,15) //Transfers the cream pies total volume of reagents to target on it
|
||||
if(!H.creamed) // one layer at a time
|
||||
H.add_overlay(creamoverlay)
|
||||
H.creamed = TRUE
|
||||
@@ -268,3 +269,24 @@
|
||||
bonus_reagents = list("nutriment" = 4, "vitamin" = 6)
|
||||
tastes = list("mint" = 1, "pie" = 1)
|
||||
foodtype = GRAIN | FRUIT | SUGAR
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/pie/baklava
|
||||
name = "baklava"
|
||||
desc = "A delightful healthy snake made of nut layers with thin bread."
|
||||
icon_state = "baklava"
|
||||
slice_path = /obj/item/reagent_containers/food/snacks/baklavaslice
|
||||
slices_num = 6
|
||||
bonus_reagents = list("nutriment" = 2, "vitamin" = 6)
|
||||
tastes = list("nuts" = 1, "pie" = 1)
|
||||
foodtype = GRAIN
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/baklavaslice
|
||||
name = "baklava dish"
|
||||
desc = "A portion delightful healthy snake made of nut layers with thin bread"
|
||||
icon = 'icons/obj/food/piecake.dmi'
|
||||
icon_state = "baklavaslice"
|
||||
trash = /obj/item/trash/plate
|
||||
filling_color = "#1E90FF"
|
||||
list_reagents = list("nutriment" = 2, "vitamins" = 4)
|
||||
tastes = list("nuts" = 1, "pie" = 1)
|
||||
foodtype = GRAIN
|
||||
@@ -159,3 +159,13 @@
|
||||
)
|
||||
result = /obj/item/reagent_containers/food/snacks/pie/frostypie
|
||||
subcategory = CAT_PIE
|
||||
|
||||
/datum/crafting_recipe/food/baklava
|
||||
name = "Baklava pie"
|
||||
reqs = list(
|
||||
/obj/item/reagent_containers/food/snacks/butter = 1,
|
||||
/obj/item/reagent_containers/food/snacks/tortilla = 4, //Layers
|
||||
/obj/item/seeds/wheat/oat = 3
|
||||
)
|
||||
result = /obj/item/reagent_containers/food/snacks/pie/baklava
|
||||
subcategory = CAT_PIE
|
||||
@@ -144,7 +144,12 @@ GLOBAL_LIST(labor_sheet_values)
|
||||
points += inp.point_value * inp.amount
|
||||
..()
|
||||
|
||||
|
||||
/obj/machinery/mineral/stacking_machine/laborstacker/attackby(obj/item/I, mob/living/user)
|
||||
if(istype(I, /obj/item/stack/sheet) && user.canUnEquip(I))
|
||||
var/obj/item/stack/sheet/inp = I
|
||||
points += inp.point_value * inp.amount
|
||||
return ..()
|
||||
|
||||
/**********************Point Lookup Console**************************/
|
||||
/obj/machinery/mineral/labor_points_checker
|
||||
name = "points checking console"
|
||||
|
||||
@@ -502,10 +502,13 @@ GLOBAL_LIST_EMPTY(roundstart_races)
|
||||
else
|
||||
standing += mutable_appearance(undershirt.icon, undershirt.icon_state, -BODY_LAYER)
|
||||
|
||||
if(H.socks && H.get_num_legs(FALSE) >= 2 && !(DIGITIGRADE in species_traits))
|
||||
if(H.socks && H.get_num_legs(FALSE) >= 2)
|
||||
var/datum/sprite_accessory/socks/socks = GLOB.socks_list[H.socks]
|
||||
if(socks)
|
||||
standing += mutable_appearance(socks.icon, socks.icon_state, -BODY_LAYER)
|
||||
if(DIGITIGRADE in species_traits)
|
||||
standing += mutable_appearance(socks.icon, socks.icon_state + "_d", -BODY_LAYER)
|
||||
else
|
||||
standing += mutable_appearance(socks.icon, socks.icon_state, -BODY_LAYER)
|
||||
|
||||
if(standing.len)
|
||||
H.overlays_standing[BODY_LAYER] = standing
|
||||
|
||||
@@ -124,6 +124,18 @@
|
||||
if(user == anchored || !isturf(user.loc))
|
||||
return FALSE
|
||||
|
||||
//pacifist vore check.
|
||||
if(user.pulling && HAS_TRAIT(user, TRAIT_PACIFISM) && user.voremode) //they can only do heals, noisy guts, absorbing (technically not harm)
|
||||
if(ismob(user.pulling))
|
||||
var/mob/P = user.pulling
|
||||
if(src != user)
|
||||
to_chat(user, "<span class='notice'>You can't risk digestion!</span>")
|
||||
return FALSE
|
||||
else
|
||||
user.vore_attack(user, P, user)
|
||||
return
|
||||
|
||||
//normal vore check.
|
||||
if(user.pulling && user.grab_state == GRAB_AGGRESSIVE && user.voremode)
|
||||
if(ismob(user.pulling))
|
||||
var/mob/P = user.pulling
|
||||
|
||||
@@ -348,7 +348,7 @@
|
||||
if(vore_active)
|
||||
if(isliving(target))
|
||||
var/mob/living/L = target
|
||||
if(L.Adjacent(src) && L.devourable) // aggressive check to ensure vore attacks can be made
|
||||
if(!client && L.Adjacent(src) && L.devourable) // aggressive check to ensure vore attacks can be made
|
||||
if(prob(voracious_chance))
|
||||
vore_attack(src,L,src)
|
||||
else
|
||||
|
||||
@@ -37,6 +37,8 @@
|
||||
var/mindrain = 200
|
||||
var/maxdrain = 400
|
||||
|
||||
var/stunforce = 140 //Same as stunbaton, adjustable.
|
||||
|
||||
|
||||
/obj/item/clothing/gloves/space_ninja/Touch(atom/A,proximity)
|
||||
if(!candrain || draining)
|
||||
|
||||
@@ -14,7 +14,7 @@ It is possible to destroy the net by the occupant or someone else.
|
||||
mouse_opacity = MOUSE_OPACITY_ICON//So you can hit it with stuff.
|
||||
anchored = TRUE//Can't drag/grab the net.
|
||||
layer = ABOVE_ALL_MOB_LAYER
|
||||
max_integrity = 25 //How much health it has.
|
||||
max_integrity = 50 //How much health it has.
|
||||
can_buckle = 1
|
||||
buckle_lying = 0
|
||||
buckle_prevents_pull = TRUE
|
||||
@@ -59,6 +59,41 @@ It is possible to destroy the net by the occupant or someone else.
|
||||
continue
|
||||
H.dropItemToGround(W)
|
||||
|
||||
var/datum/antagonist/antag_datum
|
||||
for(var/datum/antagonist/ninja/AD in GLOB.antagonists) //Because only ninjas get capture objectives; They're not doable without the suit.
|
||||
if(AD.owner == master)
|
||||
antag_datum = AD
|
||||
break
|
||||
|
||||
for(var/datum/objective/capture/capture in antag_datum)
|
||||
if(istype(affecting, /mob/living/carbon/human)) //Humans.
|
||||
if(affecting.stat == DEAD)//Dead folks are worth less.
|
||||
capture.captured_amount+=0.5
|
||||
continue
|
||||
capture.captured_amount+=1
|
||||
if(istype(affecting, /mob/living/carbon/monkey)) //Monkeys are almost worthless, you failure.
|
||||
capture.captured_amount+=0.1
|
||||
if(istype(affecting, /mob/living/carbon/alien/larva)) //Larva are important for research.
|
||||
if(affecting.stat == DEAD)
|
||||
capture.captured_amount+=0.5
|
||||
continue
|
||||
capture.captured_amount+=1
|
||||
if(istype(affecting, /mob/living/carbon/alien/humanoid)) //Aliens are worth twice as much as humans.
|
||||
if(istype(affecting, /mob/living/carbon/alien/humanoid/royal/queen)) //Queens are worth three times as much as humans.
|
||||
if(affecting.stat == DEAD)
|
||||
capture.captured_amount+=1.5
|
||||
else
|
||||
capture.captured_amount+=3
|
||||
continue
|
||||
if(affecting.stat == DEAD)
|
||||
capture.captured_amount+=1
|
||||
continue
|
||||
capture.captured_amount+=2
|
||||
|
||||
|
||||
affecting.revive(1, 1) //Basically a revive and full heal, including limbs/organs
|
||||
//In case people who have been captured dead want to hang out at the holding area
|
||||
|
||||
playsound(affecting, 'sound/effects/sparks4.ogg', 50, 1)
|
||||
new /obj/effect/temp_visual/dir_setting/ninja/phase/out(affecting.drop_location(), affecting.dir)
|
||||
|
||||
@@ -73,8 +108,9 @@ It is possible to destroy the net by the occupant or someone else.
|
||||
playsound(affecting, 'sound/effects/sparks2.ogg', 50, 1)
|
||||
new /obj/effect/temp_visual/dir_setting/ninja/phase(affecting.drop_location(), affecting.dir)
|
||||
|
||||
/obj/structure/energy_net/attack_paw(mob/user)
|
||||
return attack_hand()
|
||||
/obj/attack_alien(mob/living/carbon/alien/humanoid/user)
|
||||
if(attack_generic(user, 15, BRUTE, "melee", 0)) //Aliens normally deal 60 damage to structures. They'd one-shot nets without this.
|
||||
playsound(src.loc, 'sound/weapons/slash.ogg', 100, 1)
|
||||
|
||||
/obj/structure/energy_net/user_buckle_mob(mob/living/M, mob/living/user)
|
||||
return//We only want our target to be buckled
|
||||
|
||||
@@ -2,21 +2,34 @@
|
||||
//Allows the ninja to kidnap people
|
||||
/obj/item/clothing/suit/space/space_ninja/proc/ninjanet()
|
||||
var/mob/living/carbon/human/H = affecting
|
||||
var/mob/living/carbon/C = input("Select who to capture:","Capture who?",null) as null|mob in oview(H)
|
||||
var/mob/living/carbon/C
|
||||
|
||||
//If there's only one valid target, let's actually try to capture it, rather than forcing
|
||||
//the user to fiddle with the dialog displaying a list of one
|
||||
//Also, let's make this smarter and not list mobs you can't currently net.
|
||||
var/Candidates[]
|
||||
for(var/mob/mob in oview(H))
|
||||
if(!mob.client)//Monkeys without a client can still step_to() and bypass the net. Also, netting inactive people is lame.
|
||||
//to_chat(H, "<span class='warning'>[C.p_they(TRUE)] will bring no honor to your Clan!</span>")
|
||||
continue
|
||||
if(locate(/obj/structure/energy_net) in get_turf(mob))//Check if they are already being affected by an energy net.
|
||||
//to_chat(H, "<span class='warning'>[C.p_they(TRUE)] are already trapped inside an energy net!</span>")
|
||||
continue
|
||||
for(var/turf/T in getline(get_turf(H), get_turf(mob)))
|
||||
if(T.density)//Don't want them shooting nets through walls. It's kind of cheesy.
|
||||
//to_chat(H, "<span class='warning'>You may not use an energy net through solid obstacles!</span>")
|
||||
continue
|
||||
Candidates+=mob
|
||||
|
||||
if(Candidates.len == 1)
|
||||
C = Candidates[1]
|
||||
else
|
||||
C = input("Select who to capture:","Capture who?",null) as null|mob in Candidates
|
||||
|
||||
|
||||
if(QDELETED(C)||!(C in oview(H)))
|
||||
return 0
|
||||
|
||||
if(!C.client)//Monkeys without a client can still step_to() and bypass the net. Also, netting inactive people is lame.
|
||||
to_chat(H, "<span class='warning'>[C.p_they(TRUE)] will bring no honor to your Clan!</span>")
|
||||
return
|
||||
if(locate(/obj/structure/energy_net) in get_turf(C))//Check if they are already being affected by an energy net.
|
||||
to_chat(H, "<span class='warning'>[C.p_they(TRUE)] are already trapped inside an energy net!</span>")
|
||||
return
|
||||
for(var/turf/T in getline(get_turf(H), get_turf(C)))
|
||||
if(T.density)//Don't want them shooting nets through walls. It's kind of cheesy.
|
||||
to_chat(H, "<span class='warning'>You may not use an energy net through solid obstacles!</span>")
|
||||
return
|
||||
if(!ninjacost(200,N_STEALTH_CANCEL))
|
||||
H.Beam(C,"n_beam",time=15)
|
||||
H.say("Get over here!", forced = "ninja net")
|
||||
|
||||
@@ -261,4 +261,19 @@ They *could* go in their appropriate files, but this is supposed to be modular
|
||||
spark_system.set_up(5, 0, loc)
|
||||
playsound(src, "sparks", 50, 1)
|
||||
visible_message("<span class='danger'>[H] electrocutes [src] with [H.p_their()] touch!</span>", "<span class='userdanger'>[H] electrocutes you with [H.p_their()] touch!</span>")
|
||||
electrocute_act(25, H)
|
||||
electrocute_act(15, H)
|
||||
|
||||
Knockdown(G.stunforce)
|
||||
adjustStaminaLoss(G.stunforce*0.1, affected_zone = (istype(H) ? H.zone_selected : BODY_ZONE_CHEST))
|
||||
apply_effect(EFFECT_STUTTER, G.stunforce)
|
||||
SEND_SIGNAL(src, COMSIG_LIVING_MINOR_SHOCK)
|
||||
|
||||
lastattacker = H.real_name
|
||||
lastattackerckey = H.ckey
|
||||
log_combat(H, src, "stunned")
|
||||
|
||||
playsound(loc, 'sound/weapons/egloves.ogg', 50, 1, -1)
|
||||
|
||||
if(ishuman(src))
|
||||
var/mob/living/carbon/human/Hsrc = src
|
||||
Hsrc.forcesay(GLOB.hit_appends)
|
||||
|
||||
@@ -26,7 +26,8 @@
|
||||
|
||||
/obj/item/stock_parts/cell/Initialize(mapload, override_maxcharge)
|
||||
. = ..()
|
||||
START_PROCESSING(SSobj, src)
|
||||
if(self_recharge)
|
||||
START_PROCESSING(SSobj, src)
|
||||
create_reagents(5, INJECTABLE | DRAINABLE)
|
||||
if (override_maxcharge)
|
||||
maxcharge = override_maxcharge
|
||||
@@ -69,8 +70,8 @@
|
||||
return 100*charge/maxcharge
|
||||
|
||||
// use power from a cell
|
||||
/obj/item/stock_parts/cell/use(amount)
|
||||
if(rigged && amount > 0)
|
||||
/obj/item/stock_parts/cell/use(amount, can_explode = TRUE)
|
||||
if(rigged && amount > 0 && can_explode)
|
||||
explode()
|
||||
return 0
|
||||
if(charge < amount)
|
||||
@@ -103,9 +104,8 @@
|
||||
return (FIRELOSS)
|
||||
|
||||
/obj/item/stock_parts/cell/on_reagent_change(changetype)
|
||||
rigged = !isnull(reagents.has_reagent("plasma", 5)) //has_reagent returns the reagent datum
|
||||
..()
|
||||
|
||||
rigged = reagents?.has_reagent("plasma", 5) ? TRUE : FALSE //has_reagent returns the reagent datum
|
||||
|
||||
/obj/item/stock_parts/cell/proc/explode()
|
||||
var/turf/T = get_turf(src.loc)
|
||||
|
||||
@@ -1,475 +1,517 @@
|
||||
|
||||
/////////////////////////////////////////
|
||||
/////////////////HUDs////////////////////
|
||||
/////////////////////////////////////////
|
||||
|
||||
/datum/design/health_hud
|
||||
name = "Health Scanner HUD"
|
||||
desc = "A heads-up display that scans the humans in view and provides accurate data about their health status."
|
||||
id = "health_hud"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 500, MAT_GLASS = 500)
|
||||
build_path = /obj/item/clothing/glasses/hud/health
|
||||
category = list("Equipment")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_MEDICAL
|
||||
|
||||
/datum/design/health_hud_prescription
|
||||
name = "Prescription Health Scanner HUD"
|
||||
desc = "A heads-up display that scans the humans in view and provides accurate data about their health status. This one has a prescription lens."
|
||||
id = "health_hud_prescription"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 500, MAT_GLASS = 500, MAT_SILVER = 350)
|
||||
build_path = /obj/item/clothing/glasses/hud/health/prescription
|
||||
category = list("Equipment")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_MEDICAL
|
||||
|
||||
/datum/design/health_hud_night
|
||||
name = "Night Vision Health Scanner HUD"
|
||||
desc = "An advanced medical head-up display that allows doctors to find patients in complete darkness."
|
||||
id = "health_hud_night"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 600, MAT_GLASS = 600, MAT_URANIUM = 1000, MAT_SILVER = 350)
|
||||
build_path = /obj/item/clothing/glasses/hud/health/night
|
||||
category = list("Equipment")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_MEDICAL
|
||||
|
||||
/datum/design/security_hud
|
||||
name = "Security HUD"
|
||||
desc = "A heads-up display that scans the humans in view and provides accurate data about their ID status."
|
||||
id = "security_hud"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 500, MAT_GLASS = 500)
|
||||
build_path = /obj/item/clothing/glasses/hud/security
|
||||
category = list("Equipment")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SECURITY
|
||||
|
||||
/datum/design/security_hud_prescription
|
||||
name = "Prescription Security HUD"
|
||||
desc = "A heads-up display that scans the humans in view and provides accurate data about their ID status. This one has a prescription lens."
|
||||
id = "security_hud_prescription"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 500, MAT_GLASS = 500, MAT_SILVER = 350)
|
||||
build_path = /obj/item/clothing/glasses/hud/security/prescription
|
||||
category = list("Equipment")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SECURITY
|
||||
|
||||
|
||||
/datum/design/security_hud_night
|
||||
name = "Night Vision Security HUD"
|
||||
desc = "A heads-up display which provides id data and vision in complete darkness."
|
||||
id = "security_hud_night"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 600, MAT_GLASS = 600, MAT_URANIUM = 1000, MAT_GOLD = 350)
|
||||
build_path = /obj/item/clothing/glasses/hud/security/night
|
||||
category = list("Equipment")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SECURITY
|
||||
|
||||
/datum/design/diagnostic_hud
|
||||
name = "Diagnostic HUD"
|
||||
desc = "A HUD used to analyze and determine faults within robotic machinery."
|
||||
id = "diagnostic_hud"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 500, MAT_GLASS = 500)
|
||||
build_path = /obj/item/clothing/glasses/hud/diagnostic
|
||||
category = list("Equipment")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE
|
||||
|
||||
/datum/design/diagnostic_hud_prescription
|
||||
name = "Prescription Diagnostic HUD"
|
||||
desc = "A HUD used to analyze and determine faults within robotic machinery. This one has a prescription lens."
|
||||
id = "diagnostic_hud_prescription"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 500, MAT_GLASS = 500, MAT_GOLD = 350)
|
||||
build_path = /obj/item/clothing/glasses/hud/diagnostic/prescription
|
||||
category = list("Equipment")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE
|
||||
|
||||
/datum/design/diagnostic_hud_night
|
||||
name = "Night Vision Diagnostic HUD"
|
||||
desc = "Upgraded version of the diagnostic HUD designed to function during a power failure."
|
||||
id = "diagnostic_hud_night"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 600, MAT_GLASS = 600, MAT_URANIUM = 1000, MAT_PLASMA = 300)
|
||||
build_path = /obj/item/clothing/glasses/hud/diagnostic/night
|
||||
category = list("Equipment")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE
|
||||
|
||||
/datum/design/sci_goggles
|
||||
name = "Science Goggles"
|
||||
desc = "Goggles fitted with a portable analyzer capable of determining the research worth of an item or components of a machine."
|
||||
id = "scigoggles"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 500, MAT_GLASS = 500)
|
||||
build_path = /obj/item/clothing/glasses/science
|
||||
category = list("Equipment")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE
|
||||
|
||||
/datum/design/mesons
|
||||
name = "Optical Meson Scanners"
|
||||
desc = "Used by engineering and mining staff to see basic structural and terrain layouts through walls, regardless of lighting condition."
|
||||
id = "mesons"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 500, MAT_GLASS = 500)
|
||||
build_path = /obj/item/clothing/glasses/meson
|
||||
category = list("Equipment")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_CARGO | DEPARTMENTAL_FLAG_ENGINEERING
|
||||
|
||||
/datum/design/mesons_prescription
|
||||
name = "Prescription Optical Meson Scanners"
|
||||
desc = "Used by engineering and mining staff to see basic structural and terrain layouts through walls, regardless of lighting condition. Prescription lens has been added into this design."
|
||||
id = "mesons_prescription"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 500, MAT_GLASS = 500, MAT_SILVER = 350)
|
||||
build_path = /obj/item/clothing/glasses/meson/prescription
|
||||
category = list("Equipment")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_CARGO | DEPARTMENTAL_FLAG_ENGINEERING
|
||||
|
||||
/datum/design/engine_goggles
|
||||
name = "Engineering Scanner Goggles"
|
||||
desc = "Goggles used by engineers. The Meson Scanner mode lets you see basic structural and terrain layouts through walls, regardless of lighting condition. The T-ray Scanner mode lets you see underfloor objects such as cables and pipes."
|
||||
id = "engine_goggles"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 500, MAT_GLASS = 500, MAT_PLASMA = 100)
|
||||
build_path = /obj/item/clothing/glasses/meson/engine
|
||||
category = list("Equipment")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING
|
||||
|
||||
/datum/design/engine_goggles_prescription
|
||||
name = "Prescription Engineering Scanner Goggles"
|
||||
desc = "Goggles used by engineers. The Meson Scanner mode lets you see basic structural and terrain layouts through walls, regardless of lighting condition. The T-ray Scanner mode lets you see underfloor objects such as cables and pipes. Prescription lens has been added into this design."
|
||||
id = "engine_goggles_prescription"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 500, MAT_GLASS = 500, MAT_PLASMA = 100, MAT_SILVER = 350)
|
||||
build_path = /obj/item/clothing/glasses/meson/engine/prescription
|
||||
category = list("Equipment")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING
|
||||
|
||||
/datum/design/tray_goggles
|
||||
name = "Optical T-Ray Scanners"
|
||||
desc = "Used by engineering staff to see underfloor objects such as cables and pipes."
|
||||
id = "tray_goggles"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 500, MAT_GLASS = 500)
|
||||
build_path = /obj/item/clothing/glasses/meson/engine/tray
|
||||
category = list("Equipment")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING
|
||||
|
||||
/datum/design/tray_goggles_prescription
|
||||
name = "Prescription Optical T-Ray Scanners"
|
||||
desc = "Used by engineering staff to see underfloor objects such as cables and pipes. Prescription lens has been added into this design."
|
||||
id = "tray_goggles_prescription"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 500, MAT_GLASS = 500, MAT_SILVER = 150)
|
||||
build_path = /obj/item/clothing/glasses/meson/engine/tray/prescription
|
||||
category = list("Equipment")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING
|
||||
|
||||
/datum/design/nvgmesons
|
||||
name = "Night Vision Optical Meson Scanners"
|
||||
desc = "Prototype meson scanners fitted with an extra sensor which amplifies the visible light spectrum and overlays it to the UHD display."
|
||||
id = "nvgmesons"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 600, MAT_GLASS = 600, MAT_PLASMA = 350, MAT_URANIUM = 1000)
|
||||
build_path = /obj/item/clothing/glasses/meson/night
|
||||
category = list("Equipment")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING | DEPARTMENTAL_FLAG_CARGO
|
||||
|
||||
/datum/design/night_vision_goggles
|
||||
name = "Night Vision Goggles"
|
||||
desc = "Goggles that let you see through darkness unhindered."
|
||||
id = "night_visision_goggles"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 600, MAT_GLASS = 600, MAT_PLASMA = 350, MAT_URANIUM = 1000)
|
||||
build_path = /obj/item/clothing/glasses/night
|
||||
category = list("Equipment")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE | DEPARTMENTAL_FLAG_SECURITY
|
||||
|
||||
/datum/design/night_vision_goggles_glasses
|
||||
name = "Prescription Night Vision Goggles"
|
||||
desc = "Goggles that let you see through darkness unhindered. Corrects vision."
|
||||
id = "night_visision_goggles_glasses"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 600, MAT_GLASS = 600, MAT_PLASMA = 350, MAT_URANIUM = 1000)
|
||||
build_path = /obj/item/clothing/glasses/night/prescription
|
||||
category = list("Equipment")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE | DEPARTMENTAL_FLAG_SECURITY | DEPARTMENTAL_FLAG_MEDICAL | DEPARTMENTAL_FLAG_ENGINEERING
|
||||
|
||||
/////////////////////////////////////////
|
||||
//////////////////Misc///////////////////
|
||||
/////////////////////////////////////////
|
||||
|
||||
/datum/design/welding_mask
|
||||
name = "Welding Gas Mask"
|
||||
desc = "A gas mask with built in welding goggles and face shield. Looks like a skull, clearly designed by a nerd."
|
||||
id = "weldingmask"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 3000, MAT_GLASS = 1000)
|
||||
build_path = /obj/item/clothing/mask/gas/welding
|
||||
category = list("Equipment")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE | DEPARTMENTAL_FLAG_ENGINEERING
|
||||
|
||||
/datum/design/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."
|
||||
id = "portaseeder"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 1000, MAT_GLASS = 400)
|
||||
build_path = /obj/item/storage/bag/plants/portaseeder
|
||||
category = list("Equipment")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SERVICE
|
||||
|
||||
/datum/design/air_horn
|
||||
name = "Air Horn"
|
||||
desc = "Damn son, where'd you find this?"
|
||||
id = "air_horn"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 4000, MAT_BANANIUM = 1000)
|
||||
build_path = /obj/item/bikehorn/airhorn
|
||||
category = list("Equipment")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_ALL //HONK!
|
||||
|
||||
/datum/design/magboots
|
||||
name = "Magnetic Boots"
|
||||
desc = "Magnetic boots, often used during extravehicular activity to ensure the user remains safely attached to the vehicle."
|
||||
id = "magboots"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 4500, MAT_SILVER = 1500, MAT_GOLD = 2500)
|
||||
build_path = /obj/item/clothing/shoes/magboots
|
||||
category = list("Equipment")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING
|
||||
|
||||
/datum/design/diskplantgene
|
||||
name = "Plant Data Disk"
|
||||
desc = "A disk for storing plant genetic data."
|
||||
id = "diskplantgene"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL=200, MAT_GLASS=100)
|
||||
build_path = /obj/item/disk/plantgene
|
||||
category = list("Electronics")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SERVICE
|
||||
|
||||
/datum/design/roastingstick
|
||||
name = "Advanced roasting stick"
|
||||
desc = "A roasting stick for cooking sausages in exotic ovens."
|
||||
id = "roastingstick"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL=1000, MAT_GLASS=500, MAT_BLUESPACE = 250)
|
||||
build_path = /obj/item/melee/roastingstick
|
||||
category = list("Equipment")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SERVICE
|
||||
|
||||
/datum/design/locator
|
||||
name = "Bluespace locator"
|
||||
desc = "Used to track portable teleportation beacons and targets with embedded tracking implants."
|
||||
id = "locator"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL=1000, MAT_GLASS=500, MAT_SILVER = 500)
|
||||
build_path = /obj/item/locator
|
||||
category = list("Equipment")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SECURITY
|
||||
|
||||
/////////////////////////////////////////
|
||||
////////////Janitor Designs//////////////
|
||||
/////////////////////////////////////////
|
||||
|
||||
/datum/design/advmop
|
||||
name = "Advanced Mop"
|
||||
desc = "An upgraded mop with a large internal capacity for holding water or other cleaning chemicals."
|
||||
id = "advmop"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 2500, MAT_GLASS = 200)
|
||||
build_path = /obj/item/mop/advanced
|
||||
category = list("Equipment")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SERVICE
|
||||
|
||||
/datum/design/blutrash
|
||||
name = "Trashbag of Holding"
|
||||
desc = "An advanced trash bag with bluespace properties; capable of holding a plethora of garbage."
|
||||
id = "blutrash"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_GOLD = 1500, MAT_URANIUM = 250, MAT_PLASMA = 1500)
|
||||
build_path = /obj/item/storage/bag/trash/bluespace
|
||||
category = list("Equipment")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SERVICE
|
||||
|
||||
/datum/design/buffer
|
||||
name = "Floor Buffer Upgrade"
|
||||
desc = "A floor buffer that can be attached to vehicular janicarts."
|
||||
id = "buffer"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 3000, MAT_GLASS = 200)
|
||||
build_path = /obj/item/janiupgrade
|
||||
category = list("Equipment")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SERVICE
|
||||
|
||||
/////////////////////////////////////////
|
||||
////////////Holosign Designs/////////////
|
||||
/////////////////////////////////////////
|
||||
|
||||
/datum/design/holosign
|
||||
name = "Holographic Sign Projector"
|
||||
desc = "A holograpic projector used to project various warning signs."
|
||||
id = "holosign"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 2000, MAT_GLASS = 1000)
|
||||
build_path = /obj/item/holosign_creator
|
||||
category = list("Equipment")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SERVICE
|
||||
|
||||
/datum/design/holosignsec
|
||||
name = "Security Holobarrier Projector"
|
||||
desc = "A holographic projector that creates holographic security barriers."
|
||||
id = "holosignsec"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 5000, MAT_GLASS = 1000, MAT_GOLD = 1000, MAT_SILVER = 1000)
|
||||
build_path = /obj/item/holosign_creator/security
|
||||
category = list("Equipment")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SECURITY
|
||||
|
||||
/datum/design/holosignengi
|
||||
name = "Engineering Holobarrier Projector"
|
||||
desc = "A holographic projector that creates holographic engineering barriers."
|
||||
id = "holosignengi"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 5000, MAT_GLASS = 1000, MAT_GOLD = 1000, MAT_SILVER = 1000)
|
||||
build_path = /obj/item/holosign_creator/engineering
|
||||
category = list("Equipment")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING
|
||||
|
||||
/datum/design/holosignatmos
|
||||
name = "ATMOS Holofan Projector"
|
||||
desc = "A holographic projector that creates holographic barriers that prevent changes in atmospheric conditions."
|
||||
id = "holosignatmos"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 5000, MAT_GLASS = 1000, MAT_GOLD = 1000, MAT_SILVER = 1000)
|
||||
build_path = /obj/item/holosign_creator/atmos
|
||||
category = list("Equipment")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING
|
||||
|
||||
/datum/design/forcefield_projector
|
||||
name = "Forcefield Projector"
|
||||
desc = "A device which can project temporary forcefields to seal off an area."
|
||||
id = "forcefield_projector"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 2500, MAT_GLASS = 1000)
|
||||
build_path = /obj/item/forcefield_projector
|
||||
category = list("Equipment")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING
|
||||
|
||||
///////////////////////////////
|
||||
////////////Tools//////////////
|
||||
///////////////////////////////
|
||||
|
||||
/datum/design/exwelder
|
||||
name = "Experimental Welding Tool"
|
||||
desc = "An experimental welder capable of self-fuel generation."
|
||||
id = "exwelder"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 1000, MAT_GLASS = 500, MAT_PLASMA = 1500, MAT_URANIUM = 200)
|
||||
build_path = /obj/item/weldingtool/experimental
|
||||
category = list("Equipment")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE | DEPARTMENTAL_FLAG_ENGINEERING
|
||||
|
||||
/datum/design/handdrill
|
||||
name = "Hand Drill"
|
||||
desc = "A small electric hand drill with an interchangeable screwdriver and bolt bit"
|
||||
id = "handdrill"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 3500, MAT_SILVER = 1500, MAT_TITANIUM = 2500)
|
||||
build_path = /obj/item/screwdriver/power
|
||||
category = list("Equipment")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING
|
||||
|
||||
/datum/design/jawsoflife
|
||||
name = "Jaws of Life"
|
||||
desc = "A small, compact Jaws of Life with an interchangeable pry jaws and cutting jaws"
|
||||
id = "jawsoflife" // added one more requirment since the Jaws of Life are a bit OP
|
||||
build_path = /obj/item/crowbar/power
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 4500, MAT_SILVER = 2500, MAT_TITANIUM = 3500)
|
||||
category = list("Equipment")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING
|
||||
|
||||
/datum/design/alienwrench
|
||||
name = "Alien Wrench"
|
||||
desc = "An advanced wrench obtained through Abductor technology."
|
||||
id = "alien_wrench"
|
||||
build_path = /obj/item/wrench/abductor
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 5000, MAT_SILVER = 2500, MAT_PLASMA = 1000, MAT_TITANIUM = 2000, MAT_DIAMOND = 2000)
|
||||
category = list("Equipment")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING
|
||||
|
||||
/datum/design/alienwirecutters
|
||||
name = "Alien Wirecutters"
|
||||
desc = "Advanced wirecutters obtained through Abductor technology."
|
||||
id = "alien_wirecutters"
|
||||
build_path = /obj/item/wirecutters/abductor
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 5000, MAT_SILVER = 2500, MAT_PLASMA = 1000, MAT_TITANIUM = 2000, MAT_DIAMOND = 2000)
|
||||
category = list("Equipment")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING
|
||||
|
||||
/datum/design/alienscrewdriver
|
||||
name = "Alien Screwdriver"
|
||||
desc = "An advanced screwdriver obtained through Abductor technology."
|
||||
id = "alien_screwdriver"
|
||||
build_path = /obj/item/screwdriver/abductor
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 5000, MAT_SILVER = 2500, MAT_PLASMA = 1000, MAT_TITANIUM = 2000, MAT_DIAMOND = 2000)
|
||||
category = list("Equipment")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING
|
||||
|
||||
/datum/design/aliencrowbar
|
||||
name = "Alien Crowbar"
|
||||
desc = "An advanced crowbar obtained through Abductor technology."
|
||||
id = "alien_crowbar"
|
||||
build_path = /obj/item/crowbar/abductor
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 5000, MAT_SILVER = 2500, MAT_PLASMA = 1000, MAT_TITANIUM = 2000, MAT_DIAMOND = 2000)
|
||||
category = list("Equipment")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING
|
||||
|
||||
/datum/design/alienwelder
|
||||
name = "Alien Welding Tool"
|
||||
desc = "An advanced welding tool obtained through Abductor technology."
|
||||
id = "alien_welder"
|
||||
build_path = /obj/item/weldingtool/abductor
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 5000, MAT_SILVER = 2500, MAT_PLASMA = 5000, MAT_TITANIUM = 2000, MAT_DIAMOND = 2000)
|
||||
category = list("Equipment")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING
|
||||
|
||||
/datum/design/alienmultitool
|
||||
name = "Alien Multitool"
|
||||
desc = "An advanced multitool obtained through Abductor technology."
|
||||
id = "alien_multitool"
|
||||
build_path = /obj/item/multitool/abductor
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 5000, MAT_SILVER = 2500, MAT_PLASMA = 5000, MAT_TITANIUM = 2000, MAT_DIAMOND = 2000)
|
||||
category = list("Equipment")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING
|
||||
|
||||
/datum/design/anomaly_neutralizer
|
||||
name = "Anomaly Neutralizer"
|
||||
desc = "An advanced tool capable of instantly neutralizing anomalies, designed to capture the fleeting aberrations created by the engine."
|
||||
id = "anomaly_neutralizer"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 2000, MAT_GOLD = 2000, MAT_PLASMA = 5000, MAT_URANIUM = 2000)
|
||||
build_path = /obj/item/anomaly_neutralizer
|
||||
category = list("Equipment")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE | DEPARTMENTAL_FLAG_ENGINEERING
|
||||
|
||||
/////////////////////////////////////////
|
||||
////////////Armour///////////////////////
|
||||
/////////////////////////////////////////
|
||||
|
||||
/datum/design/reactive_armour
|
||||
name = "Reactive Armour Shell"
|
||||
desc = "An experimental suit of armour capable of utilizing an implanted anomaly core to protect the user."
|
||||
id = "reactive_armour"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 10000, MAT_DIAMOND = 5000, MAT_URANIUM = 8000, MAT_SILVER = 4500, MAT_GOLD = 5000)
|
||||
build_path = /obj/item/reactive_armour_shell
|
||||
category = list("Equipment")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE | DEPARTMENTAL_FLAG_ENGINEERING
|
||||
|
||||
/////////////////////////////////////////
|
||||
/////////////////HUDs////////////////////
|
||||
/////////////////////////////////////////
|
||||
|
||||
/datum/design/health_hud
|
||||
name = "Health Scanner HUD"
|
||||
desc = "A heads-up display that scans the humans in view and provides accurate data about their health status."
|
||||
id = "health_hud"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 500, MAT_GLASS = 500)
|
||||
build_path = /obj/item/clothing/glasses/hud/health
|
||||
category = list("Equipment")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_MEDICAL
|
||||
|
||||
/datum/design/health_hud_prescription
|
||||
name = "Prescription Health Scanner HUD"
|
||||
desc = "A heads-up display that scans the humans in view and provides accurate data about their health status. This one has a prescription lens."
|
||||
id = "health_hud_prescription"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 500, MAT_GLASS = 500, MAT_SILVER = 350)
|
||||
build_path = /obj/item/clothing/glasses/hud/health/prescription
|
||||
category = list("Equipment")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_MEDICAL
|
||||
|
||||
/datum/design/health_hud_night
|
||||
name = "Night Vision Health Scanner HUD"
|
||||
desc = "An advanced medical head-up display that allows doctors to find patients in complete darkness."
|
||||
id = "health_hud_night"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 600, MAT_GLASS = 600, MAT_URANIUM = 1000, MAT_SILVER = 350)
|
||||
build_path = /obj/item/clothing/glasses/hud/health/night
|
||||
category = list("Equipment")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_MEDICAL
|
||||
|
||||
/datum/design/security_hud
|
||||
name = "Security HUD"
|
||||
desc = "A heads-up display that scans the humans in view and provides accurate data about their ID status."
|
||||
id = "security_hud"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 500, MAT_GLASS = 500)
|
||||
build_path = /obj/item/clothing/glasses/hud/security
|
||||
category = list("Equipment")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SECURITY
|
||||
|
||||
/datum/design/security_hud_prescription
|
||||
name = "Prescription Security HUD"
|
||||
desc = "A heads-up display that scans the humans in view and provides accurate data about their ID status. This one has a prescription lens."
|
||||
id = "security_hud_prescription"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 500, MAT_GLASS = 500, MAT_SILVER = 350)
|
||||
build_path = /obj/item/clothing/glasses/hud/security/prescription
|
||||
category = list("Equipment")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SECURITY
|
||||
|
||||
/datum/design/security_hud_night
|
||||
name = "Night Vision Security HUD"
|
||||
desc = "A heads-up display which provides id data and vision in complete darkness."
|
||||
id = "security_hud_night"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 600, MAT_GLASS = 600, MAT_URANIUM = 1000, MAT_GOLD = 350)
|
||||
build_path = /obj/item/clothing/glasses/hud/security/night
|
||||
category = list("Equipment")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SECURITY
|
||||
|
||||
/datum/design/diagnostic_hud
|
||||
name = "Diagnostic HUD"
|
||||
desc = "A HUD used to analyze and determine faults within robotic machinery."
|
||||
id = "diagnostic_hud"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 500, MAT_GLASS = 500)
|
||||
build_path = /obj/item/clothing/glasses/hud/diagnostic
|
||||
category = list("Equipment")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE
|
||||
|
||||
/datum/design/diagnostic_hud_prescription
|
||||
name = "Prescription Diagnostic HUD"
|
||||
desc = "A HUD used to analyze and determine faults within robotic machinery. This one has a prescription lens."
|
||||
id = "diagnostic_hud_prescription"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 500, MAT_GLASS = 500, MAT_GOLD = 350)
|
||||
build_path = /obj/item/clothing/glasses/hud/diagnostic/prescription
|
||||
category = list("Equipment")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE
|
||||
|
||||
/datum/design/diagnostic_hud_night
|
||||
name = "Night Vision Diagnostic HUD"
|
||||
desc = "Upgraded version of the diagnostic HUD designed to function during a power failure."
|
||||
id = "diagnostic_hud_night"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 600, MAT_GLASS = 600, MAT_URANIUM = 1000, MAT_PLASMA = 300)
|
||||
build_path = /obj/item/clothing/glasses/hud/diagnostic/night
|
||||
category = list("Equipment")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE
|
||||
|
||||
/datum/design/sci_goggles
|
||||
name = "Science Goggles"
|
||||
desc = "Goggles fitted with a portable analyzer capable of determining the research worth of an item or components of a machine."
|
||||
id = "scigoggles"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 500, MAT_GLASS = 500)
|
||||
build_path = /obj/item/clothing/glasses/science
|
||||
category = list("Equipment")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE
|
||||
|
||||
/datum/design/mesons
|
||||
name = "Optical Meson Scanners"
|
||||
desc = "Used by engineering and mining staff to see basic structural and terrain layouts through walls, regardless of lighting condition."
|
||||
id = "mesons"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 500, MAT_GLASS = 500)
|
||||
build_path = /obj/item/clothing/glasses/meson
|
||||
category = list("Equipment")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_CARGO | DEPARTMENTAL_FLAG_ENGINEERING
|
||||
|
||||
/datum/design/mesons_prescription
|
||||
name = "Prescription Optical Meson Scanners"
|
||||
desc = "Used by engineering and mining staff to see basic structural and terrain layouts through walls, regardless of lighting condition. Prescription lens has been added into this design."
|
||||
id = "mesons_prescription"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 500, MAT_GLASS = 500, MAT_SILVER = 350)
|
||||
build_path = /obj/item/clothing/glasses/meson/prescription
|
||||
category = list("Equipment")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_CARGO | DEPARTMENTAL_FLAG_ENGINEERING
|
||||
|
||||
/datum/design/engine_goggles
|
||||
name = "Engineering Scanner Goggles"
|
||||
desc = "Goggles used by engineers. The Meson Scanner mode lets you see basic structural and terrain layouts through walls, regardless of lighting condition. The T-ray Scanner mode lets you see underfloor objects such as cables and pipes."
|
||||
id = "engine_goggles"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 500, MAT_GLASS = 500, MAT_PLASMA = 100)
|
||||
build_path = /obj/item/clothing/glasses/meson/engine
|
||||
category = list("Equipment")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING
|
||||
|
||||
/datum/design/engine_goggles_prescription
|
||||
name = "Prescription Engineering Scanner Goggles"
|
||||
desc = "Goggles used by engineers. The Meson Scanner mode lets you see basic structural and terrain layouts through walls, regardless of lighting condition. The T-ray Scanner mode lets you see underfloor objects such as cables and pipes. Prescription lens has been added into this design."
|
||||
id = "engine_goggles_prescription"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 500, MAT_GLASS = 500, MAT_PLASMA = 100, MAT_SILVER = 350)
|
||||
build_path = /obj/item/clothing/glasses/meson/engine/prescription
|
||||
category = list("Equipment")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING
|
||||
|
||||
/datum/design/tray_goggles
|
||||
name = "Optical T-Ray Scanners"
|
||||
desc = "Used by engineering staff to see underfloor objects such as cables and pipes."
|
||||
id = "tray_goggles"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 500, MAT_GLASS = 500)
|
||||
build_path = /obj/item/clothing/glasses/meson/engine/tray
|
||||
category = list("Equipment")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING
|
||||
|
||||
/datum/design/tray_goggles_prescription
|
||||
name = "Prescription Optical T-Ray Scanners"
|
||||
desc = "Used by engineering staff to see underfloor objects such as cables and pipes. Prescription lens has been added into this design."
|
||||
id = "tray_goggles_prescription"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 500, MAT_GLASS = 500, MAT_SILVER = 150)
|
||||
build_path = /obj/item/clothing/glasses/meson/engine/tray/prescription
|
||||
category = list("Equipment")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING
|
||||
|
||||
/datum/design/nvgmesons
|
||||
name = "Night Vision Optical Meson Scanners"
|
||||
desc = "Prototype meson scanners fitted with an extra sensor which amplifies the visible light spectrum and overlays it to the UHD display."
|
||||
id = "nvgmesons"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 600, MAT_GLASS = 600, MAT_PLASMA = 350, MAT_URANIUM = 1000)
|
||||
build_path = /obj/item/clothing/glasses/meson/night
|
||||
category = list("Equipment")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING | DEPARTMENTAL_FLAG_CARGO
|
||||
|
||||
/datum/design/night_vision_goggles
|
||||
name = "Night Vision Goggles"
|
||||
desc = "Goggles that let you see through darkness unhindered."
|
||||
id = "night_visision_goggles"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 600, MAT_GLASS = 600, MAT_PLASMA = 350, MAT_URANIUM = 1000)
|
||||
build_path = /obj/item/clothing/glasses/night
|
||||
category = list("Equipment")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE | DEPARTMENTAL_FLAG_SECURITY
|
||||
|
||||
/datum/design/night_vision_goggles_glasses
|
||||
name = "Prescription Night Vision Goggles"
|
||||
desc = "Goggles that let you see through darkness unhindered. Corrects vision."
|
||||
id = "night_visision_goggles_glasses"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 600, MAT_GLASS = 600, MAT_PLASMA = 350, MAT_URANIUM = 1000)
|
||||
build_path = /obj/item/clothing/glasses/night/prescription
|
||||
category = list("Equipment")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE | DEPARTMENTAL_FLAG_SECURITY | DEPARTMENTAL_FLAG_MEDICAL | DEPARTMENTAL_FLAG_ENGINEERING
|
||||
|
||||
/////////////////////////////////////////
|
||||
//////////////////Misc///////////////////
|
||||
/////////////////////////////////////////
|
||||
|
||||
/datum/design/welding_mask
|
||||
name = "Welding Gas Mask"
|
||||
desc = "A gas mask with built in welding goggles and face shield. Looks like a skull, clearly designed by a nerd."
|
||||
id = "weldingmask"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 3000, MAT_GLASS = 1000)
|
||||
build_path = /obj/item/clothing/mask/gas/welding
|
||||
category = list("Equipment")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE | DEPARTMENTAL_FLAG_ENGINEERING
|
||||
|
||||
/datum/design/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."
|
||||
id = "portaseeder"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 1000, MAT_GLASS = 400)
|
||||
build_path = /obj/item/storage/bag/plants/portaseeder
|
||||
category = list("Equipment")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SERVICE
|
||||
|
||||
/datum/design/air_horn
|
||||
name = "Air Horn"
|
||||
desc = "Damn son, where'd you find this?"
|
||||
id = "air_horn"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 4000, MAT_BANANIUM = 1000)
|
||||
build_path = /obj/item/bikehorn/airhorn
|
||||
category = list("Equipment")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_ALL //HONK!
|
||||
|
||||
/datum/design/magboots
|
||||
name = "Magnetic Boots"
|
||||
desc = "Magnetic boots, often used during extravehicular activity to ensure the user remains safely attached to the vehicle."
|
||||
id = "magboots"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 4500, MAT_SILVER = 1500, MAT_GOLD = 2500)
|
||||
build_path = /obj/item/clothing/shoes/magboots
|
||||
category = list("Equipment")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING
|
||||
|
||||
/datum/design/sci_goggles
|
||||
name = "Science Goggles"
|
||||
desc = "Goggles fitted with a portable analyzer capable of determining the research worth of an item or components of a machine."
|
||||
id = "scigoggles"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 500, MAT_GLASS = 500)
|
||||
build_path = /obj/item/clothing/glasses/science
|
||||
category = list("Equipment")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE
|
||||
|
||||
/datum/design/diskplantgene
|
||||
name = "Plant Data Disk"
|
||||
desc = "A disk for storing plant genetic data."
|
||||
id = "diskplantgene"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL=200, MAT_GLASS=100)
|
||||
build_path = /obj/item/disk/plantgene
|
||||
category = list("Electronics")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SERVICE
|
||||
|
||||
/datum/design/roastingstick
|
||||
name = "Advanced roasting stick"
|
||||
desc = "A roasting stick for cooking sausages in exotic ovens."
|
||||
id = "roastingstick"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL=1000, MAT_GLASS=500, MAT_BLUESPACE = 250)
|
||||
build_path = /obj/item/melee/roastingstick
|
||||
category = list("Equipment")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SERVICE
|
||||
|
||||
/datum/design/locator
|
||||
name = "Bluespace locator"
|
||||
desc = "Used to track portable teleportation beacons and targets with embedded tracking implants."
|
||||
id = "locator"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL=1000, MAT_GLASS=500, MAT_SILVER = 500)
|
||||
build_path = /obj/item/locator
|
||||
category = list("Equipment")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SECURITY
|
||||
|
||||
/////////////////////////////////////////
|
||||
////////////Janitor Designs//////////////
|
||||
/////////////////////////////////////////
|
||||
|
||||
/datum/design/advmop
|
||||
name = "Advanced Mop"
|
||||
desc = "An upgraded mop with a large internal capacity for holding water or other cleaning chemicals."
|
||||
id = "advmop"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 2500, MAT_GLASS = 200)
|
||||
build_path = /obj/item/mop/advanced
|
||||
category = list("Equipment")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SERVICE
|
||||
|
||||
/datum/design/blutrash
|
||||
name = "Trashbag of Holding"
|
||||
desc = "An advanced trash bag with bluespace properties; capable of holding a plethora of garbage."
|
||||
id = "blutrash"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_GOLD = 1500, MAT_URANIUM = 250, MAT_PLASMA = 1500)
|
||||
build_path = /obj/item/storage/bag/trash/bluespace
|
||||
category = list("Equipment")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SERVICE
|
||||
|
||||
/datum/design/buffer
|
||||
name = "Floor Buffer Upgrade"
|
||||
desc = "A floor buffer that can be attached to vehicular janicarts."
|
||||
id = "buffer"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 3000, MAT_GLASS = 200)
|
||||
build_path = /obj/item/janiupgrade
|
||||
category = list("Equipment")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SERVICE
|
||||
|
||||
/////////////////////////////////////////
|
||||
////////////Holosign Designs//////////////
|
||||
/////////////////////////////////////////
|
||||
|
||||
/datum/design/holosign
|
||||
name = "Holographic Sign Projector"
|
||||
desc = "A holograpic projector used to project various warning signs."
|
||||
id = "holosign"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 2000, MAT_GLASS = 1000)
|
||||
build_path = /obj/item/holosign_creator
|
||||
category = list("Equipment")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SERVICE
|
||||
|
||||
/datum/design/holosignsec
|
||||
name = "Security Holobarrier Projector"
|
||||
desc = "A holographic projector that creates holographic security barriers."
|
||||
id = "holosignsec"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 5000, MAT_GLASS = 1000, MAT_GOLD = 1000, MAT_SILVER = 1000)
|
||||
build_path = /obj/item/holosign_creator/security
|
||||
category = list("Equipment")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SECURITY
|
||||
|
||||
/datum/design/holosignengi
|
||||
name = "Engineering Holobarrier Projector"
|
||||
desc = "A holographic projector that creates holographic engineering barriers."
|
||||
id = "holosignengi"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 5000, MAT_GLASS = 1000, MAT_GOLD = 1000, MAT_SILVER = 1000)
|
||||
build_path = /obj/item/holosign_creator/engineering
|
||||
category = list("Equipment")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING
|
||||
|
||||
/datum/design/holosignatmos
|
||||
name = "ATMOS Holofan Projector"
|
||||
desc = "A holographic projector that creates holographic barriers that prevent changes in atmospheric conditions."
|
||||
id = "holosignatmos"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 5000, MAT_GLASS = 1000, MAT_GOLD = 1000, MAT_SILVER = 1000)
|
||||
build_path = /obj/item/holosign_creator/atmos
|
||||
category = list("Equipment")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING
|
||||
|
||||
/datum/design/forcefield_projector
|
||||
name = "Forcefield Projector"
|
||||
desc = "A device which can project temporary forcefields to seal off an area."
|
||||
id = "forcefield_projector"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 2500, MAT_GLASS = 1000)
|
||||
build_path = /obj/item/forcefield_projector
|
||||
category = list("Equipment")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING
|
||||
|
||||
|
||||
///////////////////////////////
|
||||
////////////Tools//////////////
|
||||
///////////////////////////////
|
||||
|
||||
/datum/design/exwelder
|
||||
name = "Experimental Welding Tool"
|
||||
desc = "An experimental welder capable of self-fuel generation."
|
||||
id = "exwelder"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 1000, MAT_GLASS = 500, MAT_PLASMA = 1500, MAT_URANIUM = 200)
|
||||
build_path = /obj/item/weldingtool/experimental
|
||||
category = list("Equipment")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE | DEPARTMENTAL_FLAG_ENGINEERING
|
||||
|
||||
/datum/design/handdrill
|
||||
name = "Hand Drill"
|
||||
desc = "A small electric hand drill with an interchangeable screwdriver and bolt bit"
|
||||
id = "handdrill"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 3500, MAT_SILVER = 1500, MAT_TITANIUM = 2500)
|
||||
build_path = /obj/item/screwdriver/power
|
||||
category = list("Equipment")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING
|
||||
|
||||
/datum/design/jawsoflife
|
||||
name = "Jaws of Life"
|
||||
desc = "A small, compact Jaws of Life with an interchangeable pry jaws and cutting jaws"
|
||||
id = "jawsoflife" // added one more requirment since the Jaws of Life are a bit OP
|
||||
build_path = /obj/item/crowbar/power
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 4500, MAT_SILVER = 2500, MAT_TITANIUM = 3500)
|
||||
category = list("Equipment")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING
|
||||
|
||||
/datum/design/alienwrench
|
||||
name = "Alien Wrench"
|
||||
desc = "An advanced wrench obtained through Abductor technology."
|
||||
id = "alien_wrench"
|
||||
build_path = /obj/item/wrench/abductor
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 5000, MAT_SILVER = 2500, MAT_PLASMA = 1000, MAT_TITANIUM = 2000, MAT_DIAMOND = 2000)
|
||||
category = list("Equipment")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING
|
||||
|
||||
/datum/design/alienwirecutters
|
||||
name = "Alien Wirecutters"
|
||||
desc = "Advanced wirecutters obtained through Abductor technology."
|
||||
id = "alien_wirecutters"
|
||||
build_path = /obj/item/wirecutters/abductor
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 5000, MAT_SILVER = 2500, MAT_PLASMA = 1000, MAT_TITANIUM = 2000, MAT_DIAMOND = 2000)
|
||||
category = list("Equipment")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING
|
||||
|
||||
/datum/design/alienscrewdriver
|
||||
name = "Alien Screwdriver"
|
||||
desc = "An advanced screwdriver obtained through Abductor technology."
|
||||
id = "alien_screwdriver"
|
||||
build_path = /obj/item/screwdriver/abductor
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 5000, MAT_SILVER = 2500, MAT_PLASMA = 1000, MAT_TITANIUM = 2000, MAT_DIAMOND = 2000)
|
||||
category = list("Equipment")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING
|
||||
|
||||
/datum/design/aliencrowbar
|
||||
name = "Alien Crowbar"
|
||||
desc = "An advanced crowbar obtained through Abductor technology."
|
||||
id = "alien_crowbar"
|
||||
build_path = /obj/item/crowbar/abductor
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 5000, MAT_SILVER = 2500, MAT_PLASMA = 1000, MAT_TITANIUM = 2000, MAT_DIAMOND = 2000)
|
||||
category = list("Equipment")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING
|
||||
|
||||
/datum/design/alienwelder
|
||||
name = "Alien Welding Tool"
|
||||
desc = "An advanced welding tool obtained through Abductor technology."
|
||||
id = "alien_welder"
|
||||
build_path = /obj/item/weldingtool/abductor
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 5000, MAT_SILVER = 2500, MAT_PLASMA = 5000, MAT_TITANIUM = 2000, MAT_DIAMOND = 2000)
|
||||
category = list("Equipment")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING
|
||||
|
||||
/datum/design/alienmultitool
|
||||
name = "Alien Multitool"
|
||||
desc = "An advanced multitool obtained through Abductor technology."
|
||||
id = "alien_multitool"
|
||||
build_path = /obj/item/multitool/abductor
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 5000, MAT_SILVER = 2500, MAT_PLASMA = 5000, MAT_TITANIUM = 2000, MAT_DIAMOND = 2000)
|
||||
category = list("Equipment")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING
|
||||
|
||||
/datum/design/anomaly_neutralizer
|
||||
name = "Anomaly Neutralizer"
|
||||
desc = "An advanced tool capable of instantly neutralizing anomalies, designed to capture the fleeting aberrations created by the engine."
|
||||
id = "anomaly_neutralizer"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 2000, MAT_GOLD = 2000, MAT_PLASMA = 5000, MAT_URANIUM = 2000)
|
||||
build_path = /obj/item/anomaly_neutralizer
|
||||
category = list("Equipment")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE | DEPARTMENTAL_FLAG_ENGINEERING
|
||||
|
||||
/////////////////////////////////////////
|
||||
////////////Armour///////////////////////
|
||||
/////////////////////////////////////////
|
||||
|
||||
/datum/design/reactive_armour
|
||||
name = "Reactive Armour Shell"
|
||||
desc = "An experimental suit of armour capable of utilizing an implanted anomaly core to protect the user."
|
||||
id = "reactive_armour"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 10000, MAT_DIAMOND = 5000, MAT_URANIUM = 8000, MAT_SILVER = 4500, MAT_GOLD = 5000)
|
||||
build_path = /obj/item/reactive_armour_shell
|
||||
category = list("Equipment")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE | DEPARTMENTAL_FLAG_ENGINEERING
|
||||
|
||||
/////////////////////////////////////////
|
||||
////////////Meteor///////////////////////
|
||||
/////////////////////////////////////////
|
||||
|
||||
/datum/design/meteor_defence
|
||||
name = "Meteor Defence"
|
||||
desc = "A blue print of a early model of the Meteor defence turret."
|
||||
id = "meteor_defence"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 50000, MAT_GLASS = 50000, MAT_SILVER = 8500, MAT_GOLD = 8500, MAT_TITANIUM = 7500, MAT_URANIUM = 7500)
|
||||
build_path = /obj/machinery/satellite/meteor_shield/sci
|
||||
category = list("Equipment")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING
|
||||
|
||||
/datum/design/meteor_disk
|
||||
name = "Meteor Defence Upgrade Disk"
|
||||
desc = "A disk containing debugging programming to solve and monitor meteors more effectively."
|
||||
id = "meteor_disk"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 1500, MAT_GLASS = 1500, MAT_SILVER = 2500, MAT_GOLD = 1000)
|
||||
build_path = /obj/item/disk/meteor
|
||||
category = list("Electronics")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING
|
||||
|
||||
/datum/design/board/meteor_console
|
||||
name = "Computer Design (Meteor Satellite Console)"
|
||||
desc = "Allows for the construction of circuit boards used to build a new Meteor Satellite monitor console."
|
||||
id = "meteor_console"
|
||||
build_path = /obj/item/circuitboard/computer/sat_control
|
||||
category = list("Computer Boards")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING
|
||||
|
||||
@@ -20,3 +20,12 @@
|
||||
/obj/item/disk/tech_disk/debug/Initialize()
|
||||
. = ..()
|
||||
stored_research = new /datum/techweb/admin
|
||||
|
||||
/obj/item/disk/tech_disk/illegal
|
||||
name = "Illegal technology disk"
|
||||
desc = "A technology disk containing schematics for syndicate inspired equipment."
|
||||
materials = list()
|
||||
|
||||
/obj/item/disk/tech_disk/illegal/Initialize()
|
||||
. = ..()
|
||||
stored_research = new /datum/techweb/syndicate
|
||||
|
||||
@@ -41,6 +41,14 @@
|
||||
research_points[i] = INFINITY
|
||||
hidden_nodes = list()
|
||||
|
||||
/datum/techweb/syndicate
|
||||
id = "SYNDICATE"
|
||||
organization = "Syndicate"
|
||||
|
||||
/datum/techweb/syndicate/New()
|
||||
var/datum/techweb_node/syndicate_basic/Node = new()
|
||||
research_node(Node, TRUE)
|
||||
|
||||
/datum/techweb/science //Global science techweb for RND consoles.
|
||||
id = "SCIENCE"
|
||||
organization = "Nanotrasen"
|
||||
|
||||
@@ -203,6 +203,24 @@
|
||||
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 3000)
|
||||
export_price = 5000
|
||||
|
||||
/datum/techweb_node/basic_meteor_defense
|
||||
id = "basic_meteor_defense"
|
||||
display_name = "Meteor Defense Research"
|
||||
description = "Unlock the potential of the mysterious of why CC decided to not build these around the station themselves."
|
||||
prereq_ids = list("adv_engi", "high_efficiency")
|
||||
design_ids = list("meteor_defence", "meteor_console")
|
||||
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 5000)
|
||||
export_price = 5000
|
||||
|
||||
//datum/techweb_node/adv_meteor_defense
|
||||
//id = "adv_meteor_defense"
|
||||
//display_name = "Meteor Defense Research"
|
||||
//description = "New and improved coding and lock on tech for meteor defence!"
|
||||
//prereq_ids = list("basic_meteor_defense", "adv_datatheory", "emp_adv")
|
||||
//design_ids = list("meteor_disk")
|
||||
//research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 1500)
|
||||
//export_price = 5000
|
||||
|
||||
/datum/techweb_node/computer_board_gaming
|
||||
id = "computer_board_gaming"
|
||||
display_name = "Games and Toys"
|
||||
|
||||
@@ -28,7 +28,6 @@
|
||||
/obj/effect/immovablerod/wizard
|
||||
var/max_distance = 13
|
||||
var/damage_bonus = 0
|
||||
var/mob/living/wizard
|
||||
var/turf/start_turf
|
||||
notify = FALSE
|
||||
|
||||
|
||||
@@ -134,6 +134,31 @@
|
||||
speed_process = TRUE
|
||||
var/kill_range = 14
|
||||
|
||||
/obj/machinery/satellite/meteor_shield/sci
|
||||
name = "\improper Meteor Shield Satellite"
|
||||
desc = "A station made meteor point-defense satellite."
|
||||
mode = "M-SHIELD"
|
||||
|
||||
/obj/item/disk/meteor
|
||||
name = "Meteor Shield Upgrade Disk"
|
||||
desc = "A floppy disk that allows meteor shields to fire at longer ranges and lowers meteor drawing from gravitational fields.."
|
||||
|
||||
/obj/machinery/satellite/meteor_shield/attackby(obj/item/I, mob/user, params)
|
||||
if(istype(I, /obj/item/disk/meteor))
|
||||
to_chat(user, "<span class='notice'>The disk uploads better tracking and rang modification software.</span>")
|
||||
kill_range = 17
|
||||
else
|
||||
return ..()
|
||||
|
||||
/obj/machinery/satellite/meteor_shield/sci/toggle(user)
|
||||
if(!..(user))
|
||||
return FALSE
|
||||
if(obj_flags & EMAGGED)
|
||||
if(active)
|
||||
change_meteor_chance(8)
|
||||
else
|
||||
change_meteor_chance(0.125)
|
||||
|
||||
/obj/machinery/satellite/meteor_shield/proc/space_los(meteor)
|
||||
for(var/turf/T in getline(src,meteor))
|
||||
if(!isspaceturf(T))
|
||||
@@ -177,4 +202,4 @@
|
||||
obj_flags |= EMAGGED
|
||||
to_chat(user, "<span class='notice'>You access the satellite's debug mode, increasing the chance of meteor strikes.</span>")
|
||||
if(active)
|
||||
change_meteor_chance(2)
|
||||
change_meteor_chance(4)
|
||||
|
||||
@@ -98,3 +98,8 @@
|
||||
|
||||
/obj/item/autosurgeon/reviver
|
||||
starting_organ = /obj/item/organ/cyberimp/chest/reviver
|
||||
|
||||
/obj/item/autosurgeon/penis
|
||||
desc = "A single use autosurgeon that contains a penis. A screwdriver can be used to remove it, but implants can't be placed back in."
|
||||
uses = 1
|
||||
starting_organ = /obj/item/organ/genital/penis
|
||||
|
||||
@@ -1274,6 +1274,23 @@ datum/uplink_item/stealthy_tools/taeclowndo_shoes
|
||||
item = /obj/item/codespeak_manual/unlimited
|
||||
cost = 3
|
||||
|
||||
/datum/uplink_item/device_tools/compressionkit
|
||||
name = "Bluespace Compression Kit"
|
||||
desc = "A modified version of a BSRPED that can be used to reduce the size of most items while retaining their original functions! \
|
||||
Does not work on storage items. \
|
||||
Recharge using bluespace crystals. \
|
||||
Comes with 5 charges."
|
||||
item = /obj/item/compressionkit
|
||||
cost = 5
|
||||
|
||||
/datum/uplink_item/device_tools/syndie_glue
|
||||
name = "Glue"
|
||||
desc = "A cheap bottle of one use syndicate brand super glue. \
|
||||
Use on any item to make it undroppable. \
|
||||
Be careful not to glue an item you're already holding!"
|
||||
item = /obj/item/syndie_glue
|
||||
cost = 2
|
||||
|
||||
// Implants
|
||||
/datum/uplink_item/implants
|
||||
category = "Implants"
|
||||
|
||||
@@ -23,14 +23,16 @@
|
||||
/obj/item/reagent_containers/glass/bottle/salglu_solution = 3,
|
||||
/obj/item/reagent_containers/glass/bottle/morphine = 4,
|
||||
/obj/item/reagent_containers/glass/bottle/toxin = 3,
|
||||
/obj/item/reagent_containers/syringe/antiviral = 6)
|
||||
/obj/item/reagent_containers/syringe/antiviral = 6,
|
||||
/obj/item/storage/briefcase/medical = 2)
|
||||
contraband = list(/obj/item/reagent_containers/pill/tox = 3,
|
||||
/obj/item/reagent_containers/pill/morphine = 4,
|
||||
/obj/item/reagent_containers/pill/charcoal = 6)
|
||||
premium = list(/obj/item/storage/box/hug/medical = 1,
|
||||
/obj/item/reagent_containers/hypospray/medipen = 3,
|
||||
/obj/item/storage/belt/medical = 3,
|
||||
/obj/item/wrench/medical = 1)
|
||||
/obj/item/wrench/medical = 1,
|
||||
/obj/item/storage/briefcase/medical = 2)
|
||||
armor = list("melee" = 100, "bullet" = 100, "laser" = 100, "energy" = 100, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 50)
|
||||
resistance_flags = FIRE_PROOF
|
||||
refill_canister = /obj/item/vending_refill/medical
|
||||
@@ -41,4 +43,4 @@
|
||||
|
||||
/obj/machinery/vending/medical/syndicate_access
|
||||
name = "\improper SyndiMed Plus"
|
||||
req_access = list(ACCESS_SYNDICATE)
|
||||
req_access = list(ACCESS_SYNDICATE)
|
||||
|
||||
Reference in New Issue
Block a user