mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-07-21 03:55:05 +01:00
@@ -8,6 +8,8 @@ var/bomb_set
|
||||
density = 1
|
||||
var/deployable = 0.0
|
||||
var/extended = 0.0
|
||||
var/lighthack = 0
|
||||
var/opened = 0.0
|
||||
var/timeleft = 60.0
|
||||
var/timing = 0.0
|
||||
var/r_code = "ADMIN"
|
||||
@@ -15,15 +17,36 @@ var/bomb_set
|
||||
var/yes_code = 0.0
|
||||
var/safety = 1.0
|
||||
var/obj/item/weapon/disk/nuclear/auth = null
|
||||
var/list/wires = list()
|
||||
var/light_wire
|
||||
var/safety_wire
|
||||
var/timing_wire
|
||||
var/removal_stage = 0 // 0 is no removal, 1 is covers removed, 2 is covers open,
|
||||
// 3 is sealant open, 4 is unwrenched, 5 is removed from bolts.
|
||||
flags = FPRINT
|
||||
use_power = 0
|
||||
|
||||
|
||||
|
||||
/obj/machinery/nuclearbomb/New()
|
||||
..()
|
||||
r_code = "[rand(10000, 99999.0)]"//Creates a random code upon object spawn.
|
||||
|
||||
src.wires["Red"] = 0
|
||||
src.wires["Blue"] = 0
|
||||
src.wires["Green"] = 0
|
||||
src.wires["Marigold"] = 0
|
||||
src.wires["Fuschia"] = 0
|
||||
src.wires["Black"] = 0
|
||||
src.wires["Pearl"] = 0
|
||||
var/list/w = list("Red","Blue","Green","Marigold","Black","Fuschia","Pearl")
|
||||
src.light_wire = pick(w)
|
||||
w -= src.light_wire
|
||||
src.timing_wire = pick(w)
|
||||
w -= src.timing_wire
|
||||
src.safety_wire = pick(w)
|
||||
w -= src.safety_wire
|
||||
|
||||
/obj/machinery/nuclearbomb/process()
|
||||
if (src.timing)
|
||||
bomb_set = 1 //So long as there is one nuke timing, it means one nuke is armed.
|
||||
@@ -36,6 +59,30 @@ var/bomb_set
|
||||
return
|
||||
|
||||
/obj/machinery/nuclearbomb/attackby(obj/item/weapon/O as obj, mob/user as mob)
|
||||
|
||||
if (istype(O, /obj/item/weapon/screwdriver))
|
||||
src.add_fingerprint(user)
|
||||
if (src.auth)
|
||||
if (src.opened == 0)
|
||||
src.opened = 1
|
||||
overlays += image(icon, "npanel_open")
|
||||
user << "You unscrew the control panel of [src]."
|
||||
|
||||
else
|
||||
src.opened = 0
|
||||
overlays -= image(icon, "npanel_open")
|
||||
user << "You screw the control panel of [src] back on."
|
||||
else
|
||||
if (src.opened == 0)
|
||||
user << "The [src] emits a buzzing noise, the panel staying locked in."
|
||||
if (src.opened == 1)
|
||||
src.opened = 0
|
||||
overlays -= image(icon, "npanel_open")
|
||||
user << "You screw the control panel of [src] back on."
|
||||
flick("nuclearbombc", src)
|
||||
|
||||
return
|
||||
|
||||
if (src.extended)
|
||||
if (istype(O, /obj/item/weapon/disk/nuclear))
|
||||
usr.drop_item()
|
||||
@@ -119,6 +166,8 @@ var/bomb_set
|
||||
|
||||
/obj/machinery/nuclearbomb/attack_hand(mob/user as mob)
|
||||
if (src.extended)
|
||||
if (src.opened)
|
||||
nukehack_win(user,50)
|
||||
user.set_machine(src)
|
||||
var/dat = text("<TT><B>Nuclear Fission Explosive</B><BR>\nAuth. Disk: <A href='?src=\ref[];auth=1'>[]</A><HR>", src, (src.auth ? "++++++++++" : "----------"))
|
||||
if (src.auth)
|
||||
@@ -145,11 +194,23 @@ var/bomb_set
|
||||
visible_message("\red With a steely snap, bolts slide out of [src] and anchor it to the flooring!")
|
||||
else
|
||||
visible_message("\red \The [src] makes a highly unpleasant crunching noise. It looks like the anchoring bolts have been cut.")
|
||||
flick("nuclearbombc", src)
|
||||
src.icon_state = "nuclearbomb1"
|
||||
if(!src.lighthack)
|
||||
flick("nuclearbombc", src)
|
||||
src.icon_state = "nuclearbomb1"
|
||||
src.extended = 1
|
||||
return
|
||||
|
||||
obj/machinery/nuclearbomb/proc/nukehack_win(mob/user as mob)
|
||||
var/dat as text
|
||||
dat += "<TT><B>Nuclear Fission Explosive</B><BR>\nNuclear Device Wires:</A><HR>"
|
||||
for(var/wire in src.wires)
|
||||
dat += text("[wire] Wire: <A href='?src=\ref[src];wire=[wire];act=wire'>[src.wires[wire] ? "Mend" : "Cut"]</A> <A href='?src=\ref[src];wire=[wire];act=pulse'>Pulse</A><BR>")
|
||||
dat += text("<HR>The device is [src.timing ? "shaking!" : "still"]<BR>")
|
||||
dat += text("The device is [src.safety ? "quiet" : "whirring"].<BR>")
|
||||
dat += text("The lights are [src.lighthack ? "static" : "functional"].<BR>")
|
||||
user << browse("<HTML><HEAD><TITLE>Bomb Defusion</TITLE></HEAD><BODY>[dat]</BODY></HTML>","window=nukebomb_hack")
|
||||
onclose(user, "nukebomb_hack")
|
||||
|
||||
/obj/machinery/nuclearbomb/verb/make_deployable()
|
||||
set category = "Object"
|
||||
set name = "Make Deployable"
|
||||
@@ -161,16 +222,57 @@ var/bomb_set
|
||||
else
|
||||
usr << "\red You adjust some panels to make [src] deployable."
|
||||
src.deployable = 1
|
||||
return
|
||||
|
||||
|
||||
/obj/machinery/nuclearbomb/Topic(href, href_list)
|
||||
..()
|
||||
if (!usr.canmove || usr.stat || usr.restrained())
|
||||
return
|
||||
if (!ishuman(usr))
|
||||
usr << "\red You don't have the dexterity to do this!"
|
||||
return 1
|
||||
if ((usr.contents.Find(src) || (in_range(src, usr) && istype(src.loc, /turf))))
|
||||
usr.set_machine(src)
|
||||
if(href_list["act"])
|
||||
var/temp_wire = href_list["wire"]
|
||||
if(href_list["act"] == "pulse")
|
||||
if (!istype(usr.get_active_hand(), /obj/item/device/multitool))
|
||||
usr << "You need a multitool!"
|
||||
else
|
||||
if(src.wires[temp_wire])
|
||||
usr << "You can't pulse a cut wire."
|
||||
else
|
||||
if(src.light_wire == temp_wire)
|
||||
src.lighthack = !src.lighthack
|
||||
spawn(100) src.lighthack = !src.lighthack
|
||||
if(src.timing_wire == temp_wire)
|
||||
if(src.timing)
|
||||
explode()
|
||||
if(src.safety_wire == temp_wire)
|
||||
src.safety = !src.safety
|
||||
spawn(100) src.safety = !src.safety
|
||||
if(src.safety == 1)
|
||||
visible_message("\blue The [src] quiets down.")
|
||||
if(!src.lighthack)
|
||||
if (src.icon_state == "nuclearbomb2")
|
||||
src.icon_state = "nuclearbomb1"
|
||||
else
|
||||
visible_message("\blue The [src] emits a quiet whirling noise!")
|
||||
if(href_list["act"] == "wire")
|
||||
if (!istype(usr.get_active_hand(), /obj/item/weapon/wirecutters))
|
||||
usr << "You need wirecutters!"
|
||||
else
|
||||
wires[temp_wire] = !wires[temp_wire]
|
||||
if(src.safety_wire == temp_wire)
|
||||
if(src.timing)
|
||||
explode()
|
||||
if(src.timing_wire == temp_wire)
|
||||
if(!src.lighthack)
|
||||
if (src.icon_state == "nuclearbomb2")
|
||||
src.icon_state = "nuclearbomb1"
|
||||
src.timing = 0
|
||||
bomb_set = 0
|
||||
if(src.light_wire == temp_wire)
|
||||
src.lighthack = !src.lighthack
|
||||
|
||||
if (href_list["auth"])
|
||||
if (src.auth)
|
||||
src.auth.loc = src.loc
|
||||
@@ -211,14 +313,16 @@ var/bomb_set
|
||||
return
|
||||
src.timing = !( src.timing )
|
||||
if (src.timing)
|
||||
src.icon_state = "nuclearbomb2"
|
||||
if(!src.lighthack)
|
||||
src.icon_state = "nuclearbomb2"
|
||||
if(!src.safety)
|
||||
bomb_set = 1//There can still be issues with this reseting when there are multiple bombs. Not a big deal tho for Nuke/N
|
||||
else
|
||||
bomb_set = 0
|
||||
else
|
||||
src.icon_state = "nuclearbomb1"
|
||||
bomb_set = 0
|
||||
if(!src.lighthack)
|
||||
src.icon_state = "nuclearbomb1"
|
||||
if (href_list["safety"])
|
||||
src.safety = !( src.safety )
|
||||
if(safety)
|
||||
@@ -266,7 +370,8 @@ var/bomb_set
|
||||
src.timing = -1.0
|
||||
src.yes_code = 0
|
||||
src.safety = 1
|
||||
src.icon_state = "nuclearbomb3"
|
||||
if(!src.lighthack)
|
||||
src.icon_state = "nuclearbomb3"
|
||||
playsound(src,'sound/machines/Alarm.ogg',100,0,5)
|
||||
if (ticker && ticker.mode)
|
||||
ticker.mode.explosion_in_progress = 1
|
||||
|
||||
@@ -0,0 +1,146 @@
|
||||
/obj/structure/closet/crate/secure/loot
|
||||
name = "abandoned crate"
|
||||
desc = "What could be inside?"
|
||||
icon_state = "securecrate"
|
||||
icon_opened = "securecrateopen"
|
||||
icon_closed = "securecrate"
|
||||
var/code = null
|
||||
var/lastattempt = null
|
||||
var/attempts = 3
|
||||
locked = 1
|
||||
var/min = 1
|
||||
var/max = 10
|
||||
|
||||
/obj/structure/closet/crate/secure/loot/New()
|
||||
..()
|
||||
code = rand(min,max)
|
||||
var/loot = rand(1,30)
|
||||
switch(loot)
|
||||
if(1)
|
||||
new/obj/item/weapon/reagent_containers/food/drinks/bottle/rum(src)
|
||||
new/obj/item/weapon/reagent_containers/food/snacks/grown/ambrosiadeus(src)
|
||||
new/obj/item/weapon/reagent_containers/food/drinks/bottle/whiskey(src)
|
||||
new/obj/item/weapon/lighter/zippo(src)
|
||||
if(2)
|
||||
new/obj/item/weapon/pickaxe/drill(src)
|
||||
new/obj/item/device/taperecorder(src)
|
||||
new/obj/item/clothing/suit/space/rig(src)
|
||||
new/obj/item/clothing/head/helmet/space/rig(src)
|
||||
if(3)
|
||||
for(var/i = 0, i < 12, i++)
|
||||
new/obj/item/weapon/coin/diamond(src)
|
||||
if(4)
|
||||
new/obj/item/clothing/shoes/clown_shoes(src)
|
||||
new/obj/item/clothing/under/rank/clown(src)
|
||||
new/obj/item/clothing/mask/gas/clown_hat(src)
|
||||
new/obj/item/weapon/bananapeel(src)
|
||||
if(5)
|
||||
for(var/i = 0, i < 6, i++)
|
||||
new/obj/item/weapon/reagent_containers/food/snacks/sliceable/birthdaycake(src)
|
||||
new/obj/item/weapon/lighter/zippo(src)
|
||||
if(7)
|
||||
new/obj/item/weapon/reagent_containers/glass/beaker/bluespace(src)
|
||||
if(9)
|
||||
for(var/i = 0, i < 5, i++)
|
||||
new/obj/item/weapon/ore/diamond(src)
|
||||
if(10)
|
||||
for(var/i = 0, i < 5, i++)
|
||||
new/obj/item/weapon/ore/clown(src)
|
||||
if(11)
|
||||
return
|
||||
if(12)
|
||||
new/obj/item/seeds/deathberryseed(src)
|
||||
new/obj/item/seeds/deathnettleseed(src)
|
||||
if(13)
|
||||
new/obj/machinery/hydroponics(src)
|
||||
if(14)
|
||||
new/obj/item/seeds/cashseed(src)
|
||||
if(15)
|
||||
for(var/i = 0, i < 3, i++)
|
||||
new/obj/item/weapon/reagent_containers/glass/beaker/noreact(src)
|
||||
new/obj/item/weapon/reagent_containers/hypospray(src)
|
||||
if(16)
|
||||
new /obj/item/weapon/storage/pill_bottle/random_meds(src)
|
||||
if(17)
|
||||
new/obj/item/mecha_parts/mecha_equipment/weapon/honker(src)
|
||||
new/obj/item/mecha_parts/chassis/honker(src)
|
||||
new/obj/item/mecha_parts/part/honker_torso(src)
|
||||
new/obj/item/mecha_parts/part/honker_head(src)
|
||||
new/obj/item/mecha_parts/part/honker_left_arm(src)
|
||||
if(18)
|
||||
return
|
||||
if(19)
|
||||
for(var/i = 0, i < 4, i++)
|
||||
new/obj/item/weapon/melee/classic_baton(src)
|
||||
if(20)
|
||||
new/obj/item/weapon/storage/lockbox/clusterbang(src)
|
||||
if(21)
|
||||
new/obj/item/weapon/aiModule/robocop(src)
|
||||
if(22)
|
||||
new/obj/item/clothing/under/chameleon(src)
|
||||
for(var/i = 0, i < 7, i++)
|
||||
new/obj/item/clothing/tie/horrible(src)
|
||||
if(23)
|
||||
new/obj/item/clothing/under/shorts(src)
|
||||
new/obj/item/clothing/under/shorts/red(src)
|
||||
new/obj/item/clothing/under/shorts/blue(src)
|
||||
//Dummy crates start here.
|
||||
if(24 to 29)
|
||||
return
|
||||
if(8)
|
||||
return
|
||||
if(6)
|
||||
return
|
||||
//Dummy crates end here.
|
||||
if(30)
|
||||
for(var/i = 0, i < 4, i++)
|
||||
new/obj/item/weapon/melee/baton(src)
|
||||
|
||||
/obj/structure/closet/crate/secure/loot/attack_hand(mob/user as mob)
|
||||
if(locked)
|
||||
user << "<span class='notice'>The crate is locked with a Deca-code lock.</span>"
|
||||
var/input = input(usr, "Enter digit from [min] to [max].", "Deca-Code Lock", "") as num
|
||||
if(in_range(src, user))
|
||||
input = Clamp(input, 0, 10)
|
||||
if (input == code)
|
||||
user << "<span class='notice'>The crate unlocks!</span>"
|
||||
locked = 0
|
||||
else if (input == null || input > max || input < min)
|
||||
user << "<span class='notice'>You leave the crate alone.</span>"
|
||||
else
|
||||
user << "<span class='warning'>A red light flashes.</span>"
|
||||
lastattempt = input
|
||||
attempts--
|
||||
if (attempts == 0)
|
||||
user << "<span class='danger'>The crate's anti-tamper system activates!</span>"
|
||||
var/turf/T = get_turf(src.loc)
|
||||
explosion(T, 0, 1, 2, 1)
|
||||
del(src)
|
||||
return
|
||||
else
|
||||
user << "<span class='notice'>You attempt to interact with the device using a hand gesture, but it appears this crate is from before the DECANECT came out.</span>"
|
||||
return
|
||||
else
|
||||
return ..()
|
||||
|
||||
/obj/structure/closet/crate/secure/loot/attackby(obj/item/weapon/W as obj, mob/user as mob)
|
||||
if(locked)
|
||||
if (istype(W, /obj/item/weapon/card/emag))
|
||||
user << "<span class='notice'>The crate unlocks!</span>"
|
||||
locked = 0
|
||||
if (istype(W, /obj/item/device/multitool))
|
||||
user << "<span class='notice'>DECA-CODE LOCK REPORT:</span>"
|
||||
if (attempts == 1)
|
||||
user << "<span class='warning'>* Anti-Tamper Bomb will activate on next failed access attempt.</span>"
|
||||
else
|
||||
user << "<span class='notice'>* Anti-Tamper Bomb will activate after [src.attempts] failed access attempts.</span>"
|
||||
if (lastattempt == null)
|
||||
user << "<span class='notice'> has been made to open the crate thus far.</span>"
|
||||
return
|
||||
// hot and cold
|
||||
if (code > lastattempt)
|
||||
user << "<span class='notice'>* Last access attempt lower than expected code.</span>"
|
||||
else
|
||||
user << "<span class='notice'>* Last access attempt higher than expected code.</span>"
|
||||
else ..()
|
||||
else ..()
|
||||
@@ -495,7 +495,11 @@ commented out in r5061, I left it because of the shroom thingies
|
||||
|
||||
var/turf/simulated/floor/plating/airless/asteroid/N = ChangeTurf(/turf/simulated/floor/plating/airless/asteroid)
|
||||
N.fullUpdateMineralOverlays()
|
||||
|
||||
var/crate = rand(1,30)
|
||||
switch(crate)
|
||||
if(1)
|
||||
visible_message("<span class='notice'>After digging, you find an old dusty crate buried within!</span>")
|
||||
new/obj/structure/closet/crate/secure/loot(src)
|
||||
return
|
||||
|
||||
/turf/simulated/mineral/proc/excavate_find(var/prob_clean = 0, var/datum/find/F)
|
||||
|
||||
@@ -487,7 +487,11 @@ commented out in r5061, I left it because of the shroom thingies
|
||||
|
||||
var/turf/unsimulated/floor/plating/airless/asteroid/N = ChangeTurf(/turf/unsimulated/floor/plating/airless/asteroid)
|
||||
N.fullUpdateMineralOverlays()
|
||||
|
||||
var/crate = rand(1,30)
|
||||
switch(crate)
|
||||
if(1)
|
||||
visible_message("<span class='notice'>After digging, you find an old dusty crate buried within!</span>")
|
||||
new/obj/structure/closet/crate/secure/loot(src)
|
||||
return
|
||||
|
||||
/turf/unsimulated/mineral/proc/excavate_find(var/prob_clean = 0, var/datum/find/F)
|
||||
|
||||
@@ -309,6 +309,7 @@ var/list/department_radio_keys = list(
|
||||
var/list/listening
|
||||
|
||||
listening = get_mobs_in_view(message_range, src)
|
||||
var/list/onscreen = get_mobs_in_view(7, src)
|
||||
for(var/mob/M in player_list)
|
||||
if (!M.client)
|
||||
continue //skip monkeys and leavers
|
||||
@@ -379,12 +380,14 @@ var/list/department_radio_keys = list(
|
||||
M:show_message("<span class='notice'>[src] talks into [used_radios.len ? used_radios[1] : "radio"]</span>")
|
||||
|
||||
var/rendered = null
|
||||
|
||||
if (length(heard_a))
|
||||
var/message_a = say_quote(message,speaking)
|
||||
|
||||
if (italics)
|
||||
message_a = "<i>[message_a]</i>"
|
||||
|
||||
var/message_ghost = "<b>[message_a]</b>" // bold so ghosts know the person is in view.
|
||||
rendered = "<span class='game say'><span class='name'>[GetVoice()]</span>[alt_name] <span class='message'>[message_a]</span></span>"
|
||||
var/rendered2 = null
|
||||
|
||||
@@ -392,10 +395,14 @@ var/list/department_radio_keys = list(
|
||||
//BEGIN TELEPORT CHANGES
|
||||
if(!istype(M, /mob/new_player))
|
||||
if(M && M.stat == DEAD)
|
||||
rendered2 = "<span class='game say'><span class='name'>[GetVoice()]</span></span> [alt_name] <a href='byond://?src=\ref[M];follow2=\ref[M];follow=\ref[src]'>(Follow)</a> <span class='message'>[message_a]</span></span>"
|
||||
if ((M.client.prefs.toggles & CHAT_GHOSTEARS) && M in onscreen)
|
||||
rendered2 = "<span class='game say'><span class='name'>[GetVoice()]</span></span> [alt_name] <a href='byond://?src=\ref[M];follow2=\ref[M];follow=\ref[src]'>(Follow)</a> <span class='message'>[message_ghost]</span></span>"
|
||||
else
|
||||
rendered2 = "<span class='game say'><span class='name'>[GetVoice()]</span></span> [alt_name] <a href='byond://?src=\ref[M];follow2=\ref[M];follow=\ref[src]'>(Follow)</a> <span class='message'>[message_a]</span></span>"
|
||||
M:show_message(rendered2, 2)
|
||||
continue
|
||||
//END CHANGES
|
||||
|
||||
if(hascall(M,"show_message"))
|
||||
var/deaf_message = ""
|
||||
var/deaf_type = 1
|
||||
|
||||
@@ -45,6 +45,7 @@
|
||||
// how often wounds should be updated, a higher number means less often
|
||||
var/wound_update_accuracy = 1
|
||||
|
||||
|
||||
/datum/organ/external/New(var/datum/organ/external/P)
|
||||
if(P)
|
||||
parent = P
|
||||
@@ -297,6 +298,11 @@ This function completely restores a damaged organ to perfect condition.
|
||||
#define GANGREN_LEVEL_TERMINAL 2500
|
||||
#define GERM_TRANSFER_AMOUNT germ_level/500
|
||||
/datum/organ/external/proc/update_germs()
|
||||
|
||||
if(status & ORGAN_ROBOT|ORGAN_DESTROYED) //Robotic limbs shouldn't be infected, nor should nonexistant limbs.
|
||||
germ_level = 0
|
||||
return
|
||||
|
||||
if(germ_level > 0 && owner.bodytemperature >= 170) //cryo stops germs from moving and doing their bad stuffs
|
||||
//Syncing germ levels with external wounds
|
||||
for(var/datum/wound/W in wounds)
|
||||
|
||||
@@ -1340,7 +1340,7 @@ datum
|
||||
var/mob/living/carbon/human/H = M
|
||||
if(H.dna)
|
||||
if(H.species.flags & IS_PLANT) //plantmen take a LOT of damage
|
||||
H.adjustToxLoss(10)
|
||||
H.adjustToxLoss(50)
|
||||
|
||||
plasma
|
||||
name = "Plasma"
|
||||
|
||||
@@ -1680,3 +1680,167 @@ datum/design/borg_syndicate_module
|
||||
req_tech = list("combat" = 4, "syndicate" = 3)
|
||||
build_path = "/obj/item/borg/upgrade/syndicate"
|
||||
category = "Cyborg Upgrade Modules"
|
||||
|
||||
/////////////////////////////////////////
|
||||
/////////////PDA and Radio stuff/////////
|
||||
/////////////////////////////////////////
|
||||
datum/design/binaryencrypt
|
||||
name = "Binary Encrpytion Key"
|
||||
desc = "An encyption key for a radio headset. Contains cypherkeys."
|
||||
id = "binaryencrypt"
|
||||
req_tech = list("syndicate" = 2)
|
||||
build_type = PROTOLATHE
|
||||
materials = list("$metal" = 300, "$glass" = 300)
|
||||
build_path = "/obj/item/device/encryptionkey/binary"
|
||||
datum/design/pda
|
||||
name = "PDA"
|
||||
desc = "A portable microcomputer by Thinktronic Systems, LTD. Functionality determined by a preprogrammed ROM cartridge."
|
||||
id = "pda"
|
||||
req_tech = list("engineering" = 2, "powerstorage" = 3)
|
||||
build_type = PROTOLATHE
|
||||
materials = list("$metal" = 50, "$glass" = 50)
|
||||
build_path = "/obj/item/device/pda"
|
||||
datum/design/cart_basic
|
||||
name = "Generic Cartridge"
|
||||
desc = "A data cartridge for portable microcomputers."
|
||||
id = "cart_basic"
|
||||
req_tech = list("engineering" = 2, "powerstorage" = 3)
|
||||
build_type = PROTOLATHE
|
||||
materials = list("$metal" = 50, "$glass" = 50)
|
||||
build_path = "/obj/item/weapon/cartridge"
|
||||
datum/design/cart_engineering
|
||||
name = "Power-ON Cartridge"
|
||||
desc = "A data cartridge for portable microcomputers."
|
||||
id = "cart_engineering"
|
||||
req_tech = list("engineering" = 2, "powerstorage" = 3)
|
||||
build_type = PROTOLATHE
|
||||
materials = list("$metal" = 50, "$glass" = 50)
|
||||
build_path = "/obj/item/weapon/cartridge/engineering"
|
||||
datum/design/cart_atmos
|
||||
name = "BreatheDeep Cartridge"
|
||||
desc = "A data cartridge for portable microcomputers."
|
||||
id = "cart_atmos"
|
||||
req_tech = list("engineering" = 2, "powerstorage" = 3)
|
||||
build_type = PROTOLATHE
|
||||
materials = list("$metal" = 50, "$glass" = 50)
|
||||
build_path = "/obj/item/weapon/cartridge/atmos"
|
||||
datum/design/cart_medical
|
||||
name = "Med-U Cartridge"
|
||||
desc = "A data cartridge for portable microcomputers."
|
||||
id = "cart_medical"
|
||||
req_tech = list("engineering" = 2, "powerstorage" = 3)
|
||||
build_type = PROTOLATHE
|
||||
materials = list("$metal" = 50, "$glass" = 50)
|
||||
build_path = "/obj/item/weapon/cartridge/medical"
|
||||
datum/design/cart_chemistry
|
||||
name = "ChemWhiz Cartridge"
|
||||
desc = "A data cartridge for portable microcomputers."
|
||||
id = "cart_chemistry"
|
||||
req_tech = list("engineering" = 2, "powerstorage" = 3)
|
||||
build_type = PROTOLATHE
|
||||
materials = list("$metal" = 50, "$glass" = 50)
|
||||
build_path = "/obj/item/weapon/cartridge/chemistry"
|
||||
datum/design/cart_security
|
||||
name = "R.O.B.U.S.T. Cartridge"
|
||||
desc = "A data cartridge for portable microcomputers."
|
||||
id = "cart_security"
|
||||
req_tech = list("engineering" = 2, "powerstorage" = 3)
|
||||
build_type = PROTOLATHE
|
||||
materials = list("$metal" = 50, "$glass" = 50)
|
||||
build_path = "/obj/item/weapon/cartridge/security"
|
||||
locked = 1
|
||||
datum/design/cart_janitor
|
||||
name = "CustodiPRO Cartridge"
|
||||
desc = "A data cartridge for portable microcomputers."
|
||||
id = "cart_janitor"
|
||||
req_tech = list("engineering" = 2, "powerstorage" = 3)
|
||||
build_type = PROTOLATHE
|
||||
materials = list("$metal" = 50, "$glass" = 50)
|
||||
build_path = "/obj/item/weapon/cartridge/janitor"
|
||||
datum/design/cart_clown
|
||||
name = "Honkworks 5.0 Cartridge"
|
||||
desc = "A data cartridge for portable microcomputers."
|
||||
id = "cart_clown"
|
||||
req_tech = list("engineering" = 2, "powerstorage" = 3)
|
||||
build_type = PROTOLATHE
|
||||
materials = list("$metal" = 50, "$glass" = 50)
|
||||
build_path = "/obj/item/weapon/cartridge/clown"
|
||||
datum/design/cart_mime
|
||||
name = "Gestur-O 1000 Cartridge"
|
||||
desc = "A data cartridge for portable microcomputers."
|
||||
id = "cart_mime"
|
||||
req_tech = list("engineering" = 2, "powerstorage" = 3)
|
||||
build_type = PROTOLATHE
|
||||
materials = list("$metal" = 50, "$glass" = 50)
|
||||
build_path = "/obj/item/weapon/cartridge/mime"
|
||||
datum/design/cart_toxins
|
||||
name = "Signal Ace 2 Cartridge"
|
||||
desc = "A data cartridge for portable microcomputers."
|
||||
id = "cart_toxins"
|
||||
req_tech = list("engineering" = 2, "powerstorage" = 3)
|
||||
build_type = PROTOLATHE
|
||||
materials = list("$metal" = 50, "$glass" = 50)
|
||||
build_path = "/obj/item/weapon/cartridge/toxins"
|
||||
datum/design/cart_quartermaster
|
||||
name = "Space Parts & Space Vendors Cartridge"
|
||||
desc = "A data cartridge for portable microcomputers."
|
||||
id = "cart_quartermaster"
|
||||
req_tech = list("engineering" = 2, "powerstorage" = 3)
|
||||
build_type = PROTOLATHE
|
||||
materials = list("$metal" = 50, "$glass" = 50)
|
||||
build_path = "/obj/item/weapon/cartridge/quartermaster"
|
||||
locked = 1
|
||||
datum/design/cart_hop
|
||||
name = "Human Resources 9001 Cartridge"
|
||||
desc = "A data cartridge for portable microcomputers."
|
||||
id = "cart_hop"
|
||||
req_tech = list("engineering" = 2, "powerstorage" = 3)
|
||||
build_type = PROTOLATHE
|
||||
materials = list("$metal" = 50, "$glass" = 50)
|
||||
build_path = "/obj/item/weapon/cartridge/hop"
|
||||
locked = 1
|
||||
datum/design/cart_hos
|
||||
name = "R.O.B.U.S.T. DELUXE Cartridge"
|
||||
desc = "A data cartridge for portable microcomputers."
|
||||
id = "cart_hos"
|
||||
req_tech = list("engineering" = 2, "powerstorage" = 3)
|
||||
build_type = PROTOLATHE
|
||||
materials = list("$metal" = 50, "$glass" = 50)
|
||||
build_path = "/obj/item/weapon/cartridge/hos"
|
||||
locked = 1
|
||||
datum/design/cart_ce
|
||||
name = "Power-On DELUXE Cartridge"
|
||||
desc = "A data cartridge for portable microcomputers."
|
||||
id = "cart_ce"
|
||||
req_tech = list("engineering" = 2, "powerstorage" = 3)
|
||||
build_type = PROTOLATHE
|
||||
materials = list("$metal" = 50, "$glass" = 50)
|
||||
build_path = "/obj/item/weapon/cartridge/ce"
|
||||
locked = 1
|
||||
datum/design/cart_cmo
|
||||
name = "Med-U DELUXE Cartridge"
|
||||
desc = "A data cartridge for portable microcomputers."
|
||||
id = "cart_cmo"
|
||||
req_tech = list("engineering" = 2, "powerstorage" = 3)
|
||||
build_type = PROTOLATHE
|
||||
materials = list("$metal" = 50, "$glass" = 50)
|
||||
build_path = "/obj/item/weapon/cartridge/cmo"
|
||||
locked = 1
|
||||
datum/design/cart_rd
|
||||
name = "Signal Ace DELUXE Cartridge"
|
||||
desc = "A data cartridge for portable microcomputers."
|
||||
id = "cart_rd"
|
||||
req_tech = list("engineering" = 2, "powerstorage" = 3)
|
||||
build_type = PROTOLATHE
|
||||
materials = list("$metal" = 50, "$glass" = 50)
|
||||
build_path = "/obj/item/weapon/cartridge/rd"
|
||||
locked = 1
|
||||
datum/design/cart_captain
|
||||
name = "Value-PAK Cartridge"
|
||||
desc = "A data cartridge for portable microcomputers."
|
||||
id = "cart_captain"
|
||||
req_tech = list("engineering" = 2, "powerstorage" = 3)
|
||||
build_type = PROTOLATHE
|
||||
materials = list("$metal" = 50, "$glass" = 50)
|
||||
build_path = "/obj/item/weapon/cartridge/captain"
|
||||
locked = 1
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
//////////////////////////////////////////////////////////////////
|
||||
|
||||
/datum/surgery_step/limb/
|
||||
can_infect = 1
|
||||
can_infect = 0
|
||||
can_use(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
if (!hasorgans(target))
|
||||
return 0
|
||||
@@ -125,7 +125,6 @@
|
||||
|
||||
/datum/surgery_step/limb/attach
|
||||
allowed_tools = list(/obj/item/robot_parts = 100)
|
||||
can_infect = 0
|
||||
|
||||
min_duration = 80
|
||||
max_duration = 100
|
||||
@@ -148,6 +147,8 @@
|
||||
var/datum/organ/external/affected = target.get_organ(target_zone)
|
||||
user.visible_message("\blue [user] has attached [tool] where [target]'s [affected.display_name] used to be.", \
|
||||
"\blue You have attached [tool] where [target]'s [affected.display_name] used to be.")
|
||||
|
||||
affected.germ_level = 0
|
||||
affected.robotize()
|
||||
if(L.sabotaged)
|
||||
affected.sabotaged = 1
|
||||
@@ -162,4 +163,4 @@
|
||||
var/datum/organ/external/affected = target.get_organ(target_zone)
|
||||
user.visible_message("\red [user]'s hand slips, damaging connectors on [target]'s [affected.display_name]!", \
|
||||
"\red Your hand slips, damaging connectors on [target]'s [affected.display_name]!")
|
||||
target.apply_damage(10, BRUTE, affected)
|
||||
target.apply_damage(10, BRUTE, affected)
|
||||
|
||||
Reference in New Issue
Block a user