diff --git a/code/defines/obj/storage.dm b/code/defines/obj/storage.dm index 4fa59148fcd..9ca0c34afb8 100644 --- a/code/defines/obj/storage.dm +++ b/code/defines/obj/storage.dm @@ -603,39 +603,61 @@ /obj/structure/closet/syndicate/resources/ - desc = "It's an emergency storage closet for repairs." + desc = "An old, dusty locker." /obj/structure/closet/syndicate/resources/New() ..() + var/common_min = 30 //Minimum amount of minerals in the stack for common minerals + var/common_max = 50 //Maximum amount of HONK in the stack for HONK common minerals + var/rare_min = 5 //Minimum HONK of HONK in the stack HONK HONK rare minerals + var/rare_max = 20 //Maximum HONK HONK HONK in the HONK for HONK rare HONK - var/list/resources_common = list( - - /obj/item/stack/sheet/metal, - /obj/item/stack/sheet/glass, - /obj/item/stack/sheet/plasteel, - /obj/item/stack/rods - ) - - var/list/resources_rare = list( - - /obj/item/stack/sheet/gold, - /obj/item/stack/sheet/silver, - /obj/item/stack/sheet/plasma, - /obj/item/stack/sheet/uranium, - /obj/item/stack/sheet/diamond - - ) sleep(2) - for(var/i = 0, i<2, i++) - for(var/res in resources_common) - var/obj/item/stack/R = new res(src) - R.amount = rand(40,R.max_amount) + var/pickednum = rand(1, 50) - for(var/res in resources_rare) - var/obj/item/stack/R = new res(src) - R.amount = rand(10,25) + //Sad trombone + if(pickednum == 1) + var/obj/item/weapon/paper/P = new /obj/item/weapon/paper(src) + P.name = "IOU" + P.info = "Sorry man, we needed the money so we sold your stash. It's ok, we'll double our money for sure this time!" + + //Metal (common ore) + if(pickednum >= 2) + new /obj/item/stack/sheet/metal(src, rand(common_min, common_max)) + + //Glass (common ore) + if(pickednum >= 5) + new /obj/item/stack/sheet/glass(src, rand(common_min, common_max)) + + //Plasteel (common ore) Because it has a million more uses then plasma + if(pickednum >= 10) + new /obj/item/stack/sheet/plasteel(src, rand(common_min, common_max)) + + //Plasma (rare ore) + if(pickednum >= 15) + new /obj/item/stack/sheet/plasma(src, rand(rare_min, rare_max)) + + //Silver (rare ore) + if(pickednum >= 20) + new /obj/item/stack/sheet/silver(src, rand(rare_min, rare_max)) + + //Gold (rare ore) + if(pickednum >= 30) + new /obj/item/stack/sheet/gold(src, rand(rare_min, rare_max)) + + //Uranium (rare ore) + if(pickednum >= 40) + new /obj/item/stack/sheet/uranium(src, rand(rare_min, rare_max)) + + //Diamond (rare HONK) + if(pickednum >= 45) + new /obj/item/stack/sheet/diamond(src, rand(rare_min, rare_max)) + + //Jetpack (You hit the jackpot!) + if(pickednum == 50) + new /obj/item/weapon/tank/jetpack/carbondioxide(src) return diff --git a/code/game/asteroid/artifacts.dm b/code/game/asteroid/artifacts.dm index ddf1873c460..4cc1f825e17 100644 --- a/code/game/asteroid/artifacts.dm +++ b/code/game/asteroid/artifacts.dm @@ -12,7 +12,7 @@ var/global/list/space_surprises = list( /obj/item/clothing/mask/facehugger/angr /obj/item/weapon/pickaxe/plasmacutter =2, /obj/structure/closet/syndicate/resources =2, /obj/item/weapon/melee/energy/sword/pirate =1, - // /obj/mecha/working/ripley/mining =1 + /obj/mecha/working/ripley/mining =1 // /obj/creature =0, // /obj/item/weapon/rcd =0, diff --git a/code/game/machinery/doors/windowdoor.dm b/code/game/machinery/doors/windowdoor.dm index d3323663982..4691843c714 100644 --- a/code/game/machinery/doors/windowdoor.dm +++ b/code/game/machinery/doors/windowdoor.dm @@ -1,9 +1,10 @@ /obj/machinery/door/window name = "interior door" - desc = "A door made from a window, yet it can not break nor be depowered." + desc = "A strong door." icon = 'windoor.dmi' icon_state = "left" var/base_state = "left" + var/health = 200.0 //If you change this, consiter changing ../door/window/brigdoor/ health at the bottom of this .dm file visible = 0.0 flags = ON_BORDER opacity = 0 @@ -28,6 +29,11 @@ src.base_state = src.icon_state return +/obj/machinery/door/window/Del() + density = 0 + playsound(src, "shatter", 70, 1) + ..() + /obj/machinery/door/window/Bumped(atom/movable/AM as mob|obj) if (!( ismob(AM) )) var/obj/machinery/bot/bot = AM @@ -112,13 +118,49 @@ src.operating = 0 return 1 -/obj/machinery/door/window/attackby(obj/item/I as obj, mob/user as mob) +//When an object is thrown at the window +/obj/machinery/door/window/hitby(AM as mob|obj) + + ..() + for(var/mob/O in viewers(src, null)) + O.show_message("\red The glass door was hit by [AM].", 1) + var/tforce = 0 + if(ismob(AM)) + tforce = 40 + else + tforce = AM:throwforce + playsound(src.loc, 'Glasshit.ogg', 100, 1) + src.health = max(0, src.health - tforce) + if (src.health <= 0) + new /obj/item/weapon/shard(src.loc) + var/obj/item/weapon/cable_coil/CC = new /obj/item/weapon/cable_coil(src.loc) + CC.amount = 2 + src.density = 0 + del(src) + return + //..() //Does this really need to be here twice? The parent proc doesn't even do anything yet. - Nodrak + return + + +/obj/machinery/door/window/attack_ai(mob/user as mob) + return src.attack_hand(user) + + +/obj/machinery/door/window/attack_paw(mob/user as mob) + return src.attack_hand(user) + + +/obj/machinery/door/window/attack_hand(mob/user as mob) + return src.attackby(user, user) + + +/obj/machinery/door/window/attackby(obj/item/weapon/I as obj, mob/user as mob) + + //If it's in the process of opening/closing, ignore the click if (src.operating) return - src.add_fingerprint(user) - if (!src.requiresID()) - //don't care who they are or what they have, act as if they're NOTHING - user = null + + //Emags and ninja swords? You may pass. if (src.density && (istype(I, /obj/item/weapon/card/emag)||istype(I, /obj/item/weapon/melee/energy/blade))) if(istype(I, /obj/item/weapon/card/emag)) var/obj/item/weapon/card/emag/E = I @@ -139,24 +181,50 @@ sleep(6) open() return 1 + + //If it's a weapon, smash windoor. Unless it's an id card, agent card, ect.. then ignore it (Cards really shouldnt damage a door anyway) + if(src.density && istype(I, /obj/item/weapon) && !istype(I, /obj/item/weapon/card)) + var/aforce = I.force + if(I.damtype == BRUTE || I.damtype == BURN) + src.health = max(0, src.health - aforce) + playsound(src.loc, 'Glasshit.ogg', 75, 1) + for(var/mob/O in viewers(src, null)) + O.show_message("\red [src] was hit by [I].", 1) + if (src.health <= 0) + new /obj/item/weapon/shard(src.loc) + var/obj/item/weapon/cable_coil/CC = new /obj/item/weapon/cable_coil(src.loc) + CC.amount = 2 + src.density = 0 + del(src) + return + + + src.add_fingerprint(user) + if (!src.requiresID()) + //don't care who they are or what they have, act as if they're NOTHING + user = null + if (src.allowed(user) || istype(I, /obj/item/device/hacktool)) if (src.density) open() else close() + else if (src.density) flick(text("[]deny", src.base_state), src) + return /obj/machinery/door/window/brigdoor - name = "Brig Door" + name = "Secure Door" icon = 'windoor.dmi' icon_state = "leftsecure" base_state = "leftsecure" req_access = list(access_security) var/id = null + health = 500.0 //Stronger doors for prison (regular window door health is 200) /obj/machinery/door/window/northleft @@ -191,7 +259,6 @@ icon_state = "right" base_state = "right" - /obj/machinery/door/window/brigdoor/northleft dir = NORTH diff --git a/code/game/mecha/working/ripley.dm b/code/game/mecha/working/ripley.dm index 24dcea75d08..8e05d853b84 100644 --- a/code/game/mecha/working/ripley.dm +++ b/code/game/mecha/working/ripley.dm @@ -41,6 +41,24 @@ ME.attach(src) return +/obj/mecha/working/ripley/mining + desc = "An old, dusty mining ripley." + name = "APLU \"Miner\"" + +/obj/mecha/working/ripley/mining/New() + ..() + //Attach drill + if(prob(25)) //Possible diamond drill... Feeling lucky? + var/obj/item/mecha_parts/mecha_equipment/tool/drill/diamonddrill/D = new /obj/item/mecha_parts/mecha_equipment/tool/drill/diamonddrill + D.attach(src) + else + var/obj/item/mecha_parts/mecha_equipment/tool/drill/D = new /obj/item/mecha_parts/mecha_equipment/tool/drill + D.attach(src) + + //Attach hydrolic clamp + var/obj/item/mecha_parts/mecha_equipment/tool/hydraulic_clamp/HC = new /obj/item/mecha_parts/mecha_equipment/tool/hydraulic_clamp + HC.attach(src) + /obj/mecha/working/ripley/Exit(atom/movable/O) if(O in cargo) return 0 diff --git a/code/game/objects/window.dm b/code/game/objects/window.dm index 77368697ec1..8829ab89d3a 100644 --- a/code/game/objects/window.dm +++ b/code/game/objects/window.dm @@ -87,7 +87,7 @@ src.density = 0 del(src) return - ..() + //..() //Does this really need to be here twice? The parent proc doesn't even do anything yet. - Nodrak return //These all need to be rewritten to use visiblemessage() diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index 2c9cad25399..9398940b142 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -1502,9 +1502,9 @@ face_standing = new /image() face_lying = new /image() face_standing.icon = eyes_s - face_standing.layer = FACE_LAYER + face_standing.layer = MOB_LAYER face_lying.icon = eyes_l - face_lying.layer = FACE_LAYER + face_lying.layer = MOB_LAYER del(mouth_l) del(mouth_s)