From 73d7af2675889c1001af4dc4ff7ab1b75667ea56 Mon Sep 17 00:00:00 2001 From: uraniummeltdown Date: Tue, 26 Dec 2017 18:16:42 +0500 Subject: [PATCH] moves var/can_deconstruct to obj level moves proc/deconstruct() and proc/take_damage() to obj level, moves a few obj damage procs in with it to new obj_defense.dm moves plastic flaps to new plasticflaps.dm --- code/game/gamemodes/blob/theblob.dm | 2 +- code/game/gamemodes/cult/cult_structures.dm | 2 +- code/game/machinery/doors/firedoor.dm | 1 - code/game/machinery/doors/windowdoor.dm | 2 +- code/game/machinery/machinery.dm | 2 +- code/game/machinery/portable_turret.dm | 2 +- code/game/mecha/mecha.dm | 2 +- code/game/objects/obj_defense.dm | 57 ++++++++ code/game/objects/objs.dm | 39 +---- code/game/objects/structures/curtains.dm | 2 +- code/game/objects/structures/girders.dm | 5 +- code/game/objects/structures/grille.dm | 32 ++-- code/game/objects/structures/mineral_doors.dm | 10 +- code/game/objects/structures/plasticflaps.dm | 135 +++++++++++++++++ code/modules/mining/mine_items.dm | 2 +- .../computers/item/computer_damage.dm | 2 +- .../modular_computers/hardware/_hardware.dm | 2 +- code/modules/shuttle/supply.dm | 137 ------------------ code/modules/surgery/organs/organ.dm | 2 +- paradise.dme | 2 + 20 files changed, 229 insertions(+), 211 deletions(-) create mode 100644 code/game/objects/obj_defense.dm create mode 100644 code/game/objects/structures/plasticflaps.dm diff --git a/code/game/gamemodes/blob/theblob.dm b/code/game/gamemodes/blob/theblob.dm index 1f45794ac14..0b82f067d0c 100644 --- a/code/game/gamemodes/blob/theblob.dm +++ b/code/game/gamemodes/blob/theblob.dm @@ -174,7 +174,7 @@ take_damage(damage, BRUTE) return -/obj/structure/blob/proc/take_damage(damage, damage_type) +/obj/structure/blob/take_damage(damage, damage_type) if(!damage || damage_type == STAMINA) // Avoid divide by zero errors return switch(damage_type) diff --git a/code/game/gamemodes/cult/cult_structures.dm b/code/game/gamemodes/cult/cult_structures.dm index 182ed68e004..b2b97f9adc8 100644 --- a/code/game/gamemodes/cult/cult_structures.dm +++ b/code/game/gamemodes/cult/cult_structures.dm @@ -73,7 +73,7 @@ if(health <= 0) destroy_structure() -/obj/structure/cult/functional/proc/take_damage(damage, damage_type = BRUTE) +/obj/structure/cult/functional/take_damage(damage, damage_type = BRUTE) if(damage_type == BRUTE || damage_type == BURN) health -= damage updatehealth() diff --git a/code/game/machinery/doors/firedoor.dm b/code/game/machinery/doors/firedoor.dm index ee75775f151..947bcf6059d 100644 --- a/code/game/machinery/doors/firedoor.dm +++ b/code/game/machinery/doors/firedoor.dm @@ -24,7 +24,6 @@ var/can_crush = TRUE var/nextstate = null var/boltslocked = TRUE - var/can_deconstruct = TRUE var/active_alarm = FALSE /obj/machinery/door/firedoor/Bumped(atom/AM) diff --git a/code/game/machinery/doors/windowdoor.dm b/code/game/machinery/doors/windowdoor.dm index a45c19aff29..3e3ff6fc67b 100644 --- a/code/game/machinery/doors/windowdoor.dm +++ b/code/game/machinery/doors/windowdoor.dm @@ -144,7 +144,7 @@ operating = 0 return 1 -/obj/machinery/door/window/proc/take_damage(damage) +/obj/machinery/door/window/take_damage(damage) health = max(0, health - damage) if(health <= 0) var/debris = list( diff --git a/code/game/machinery/machinery.dm b/code/game/machinery/machinery.dm index 65f34737756..51a0b370a5d 100644 --- a/code/game/machinery/machinery.dm +++ b/code/game/machinery/machinery.dm @@ -403,7 +403,7 @@ Class Procs: return 1 return 0 -/obj/machinery/proc/deconstruct(disassembled = TRUE) +/obj/machinery/deconstruct(disassembled = TRUE) on_deconstruction() spawn_frame() for(var/obj/item/I in component_parts) diff --git a/code/game/machinery/portable_turret.dm b/code/game/machinery/portable_turret.dm index d46a49742e9..98013119723 100644 --- a/code/game/machinery/portable_turret.dm +++ b/code/game/machinery/portable_turret.dm @@ -453,7 +453,7 @@ var/list/turret_icons sleep(60) //6 seconds for the traitor to gtfo of the area before the turret decides to ruin his shit enabled = 1 //turns it back on. The cover popUp() popDown() are automatically called in process(), no need to define it here -/obj/machinery/porta_turret/proc/take_damage(var/force) +/obj/machinery/porta_turret/take_damage(force) if(!raised && !raising) force = force / 8 if(force < 5) diff --git a/code/game/mecha/mecha.dm b/code/game/mecha/mecha.dm index 2f2772774a3..3ab3d0e154b 100644 --- a/code/game/mecha/mecha.dm +++ b/code/game/mecha/mecha.dm @@ -447,7 +447,7 @@ //////// Health related procs //////// //////////////////////////////////////// -/obj/mecha/proc/take_damage(amount, type="brute") +/obj/mecha/take_damage(amount, type="brute") if(amount) var/damage = absorbDamage(amount,type) health -= damage diff --git a/code/game/objects/obj_defense.dm b/code/game/objects/obj_defense.dm new file mode 100644 index 00000000000..c78d8d0e2b4 --- /dev/null +++ b/code/game/objects/obj_defense.dm @@ -0,0 +1,57 @@ + +/obj/proc/take_damage() + return + +//the sound played when the obj is damaged. +/obj/proc/play_attack_sound(damage_amount, damage_type = BRUTE, damage_flag = 0) + switch(damage_type) + if(BRUTE) + if(damage_amount) + playsound(src, 'sound/weapons/smash.ogg', 50, 1) + else + playsound(src, 'sound/weapons/tap.ogg', 50, 1) + if(BURN) + playsound(src.loc, 'sound/items/welder.ogg', 100, 1) + +/obj/singularity_act() + ex_act(1) + if(src && !qdeleted(src)) + qdel(src) + return 2 + +//// FIRE + +/obj/fire_act(global_overlay=1) + if(!burn_state) + burn_state = ON_FIRE + fire_master.burning += src + burn_world_time = world.time + burntime*rand(10,20) + if(global_overlay) + overlays += fire_overlay + return 1 + +/obj/proc/burn() + empty_object_contents(1, loc) + var/obj/effect/decal/cleanable/ash/A = new(loc) + A.desc = "Looks like this used to be a [name] some time ago." + fire_master.burning -= src + qdel(src) + +/obj/proc/extinguish() + if(burn_state == ON_FIRE) + burn_state = FLAMMABLE + overlays -= fire_overlay + fire_master.burning -= src + +/obj/proc/tesla_act(power) + being_shocked = TRUE + var/power_bounced = power * 0.5 + tesla_zap(src, 3, power_bounced) + addtimer(src, "reset_shocked", 10) + +/obj/proc/reset_shocked() + being_shocked = FALSE + +//the obj is deconstructed into pieces, whether through careful disassembly or when destroyed. +/obj/proc/deconstruct(disassembled = TRUE) + qdel(src) \ No newline at end of file diff --git a/code/game/objects/objs.dm b/code/game/objects/objs.dm index 60f9538fde0..0ff6691c51e 100644 --- a/code/game/objects/objs.dm +++ b/code/game/objects/objs.dm @@ -9,7 +9,7 @@ var/list/attack_verb = list() //Used in attackby() to say how something was attacked "[x] has been [z.attack_verb] by [y] with [z]" var/sharp = 0 // whether this object cuts var/in_use = 0 // If we have a user using us, this will be set on. We will check if the user has stopped using us, and thus stop updating and LAGGING EVERYTHING! - + var/can_deconstruct = TRUE var/damtype = "brute" var/force = 0 @@ -253,12 +253,6 @@ a { user.set_machine(src) onclose(user, "mtcomputer") -/obj/singularity_act() - ex_act(1.0) - if(src && isnull(gcDestroyed)) - qdel(src) - return 2 - /obj/singularity_pull(S, current_size) if(anchored) if(current_size >= STAGE_FIVE) @@ -269,40 +263,9 @@ a { /obj/proc/container_resist(var/mob/living) return -/obj/proc/tesla_act(var/power) - being_shocked = 1 - var/power_bounced = power * 0.5 - tesla_zap(src, 3, power_bounced) - addtimer(src, "reset_shocked", 10) - -/obj/proc/reset_shocked() - being_shocked = 0 - /obj/proc/CanAStarPass() . = !density -/obj/fire_act(global_overlay=1) - if(!burn_state) - burn_state = ON_FIRE - fire_master.burning += src - burn_world_time = world.time + burntime*rand(10,20) - if(global_overlay) - overlays += fire_overlay - return 1 - -/obj/proc/burn() - empty_object_contents(1, loc) - var/obj/effect/decal/cleanable/ash/A = new(loc) - A.desc = "Looks like this used to be a [name] some time ago." - fire_master.burning -= src - qdel(src) - -/obj/proc/extinguish() - if(burn_state == ON_FIRE) - burn_state = FLAMMABLE - overlays -= fire_overlay - fire_master.burning -= src - /obj/proc/empty_object_contents(burn = 0, new_loc = loc) for(var/obj/item/Item in contents) //Empty out the contents Item.forceMove(new_loc) diff --git a/code/game/objects/structures/curtains.dm b/code/game/objects/structures/curtains.dm index 0fbc7b97879..d80f7bc8afd 100644 --- a/code/game/objects/structures/curtains.dm +++ b/code/game/objects/structures/curtains.dm @@ -67,7 +67,7 @@ else . = ..() -/obj/structure/curtain/proc/deconstruct(disassembled = TRUE) +/obj/structure/curtain/deconstruct(disassembled = TRUE) new /obj/item/stack/sheet/cloth(loc, 2) new /obj/item/stack/sheet/plastic(loc, 2) new /obj/item/stack/rods(loc, 1) diff --git a/code/game/objects/structures/girders.dm b/code/game/objects/structures/girders.dm index c8877b320ff..42f6a20e261 100644 --- a/code/game/objects/structures/girders.dm +++ b/code/game/objects/structures/girders.dm @@ -9,7 +9,6 @@ var/health = 200 var/can_displace = TRUE //If the girder can be moved around by crowbarring it var/metalUsed = 2 //used to determine amount returned in deconstruction - var/can_deconstruct = TRUE /obj/structure/girder/examine(mob/user) . = ..() @@ -42,7 +41,7 @@ take_damage(rand(25, 75)) return -/obj/structure/girder/proc/take_damage(amount) +/obj/structure/girder/take_damage(amount) health -= amount if(health <= 0) new /obj/item/stack/sheet/metal(get_turf(src)) @@ -369,7 +368,7 @@ var/atom/movable/mover = caller . = . || mover.checkpass(PASSGRILLE) -/obj/structure/girder/proc/deconstruct(disassembled = TRUE) +/obj/structure/girder/deconstruct(disassembled = TRUE) if(can_deconstruct) var/remains = pick(/obj/item/stack/rods,/obj/item/stack/sheet/metal) new remains(loc) diff --git a/code/game/objects/structures/grille.dm b/code/game/objects/structures/grille.dm index 36215a850c5..f3a025b9fd9 100644 --- a/code/game/objects/structures/grille.dm +++ b/code/game/objects/structures/grille.dm @@ -11,7 +11,6 @@ level = 3 var/health = 10 var/broken = 0 - var/can_deconstruct = TRUE var/rods_type = /obj/item/stack/rods var/rods_amount = 2 var/rods_broken = 1 @@ -243,13 +242,24 @@ visible_message("[user] has hit [src] with [I]!") take_damage(I.force * 0.3, I.damtype) -/obj/structure/grille/proc/deconstruct(disassembled = TRUE) +/obj/structure/grille/play_attack_sound(damage_amount, damage_type = BRUTE, damage_flag = 0) + switch(damage_type) + if(BRUTE) + if(damage_amount) + playsound(src, 'sound/effects/grillehit.ogg', 80, 1) + else + playsound(src, 'sound/weapons/tap.ogg', 50, 1) + if(BURN) + playsound(src, 'sound/items/welder.ogg', 80, 1) + +/obj/structure/grille/deconstruct(disassembled = TRUE) if(!loc) //if already qdel'd somehow, we do nothing return if(can_deconstruct) var/obj/R = new rods_type(loc, rods_amount) transfer_fingerprints_to(R) qdel(src) + ..() /obj/structure/grille/proc/obj_break() if(!broken && can_deconstruct) @@ -258,20 +268,10 @@ transfer_fingerprints_to(R) qdel(src) -/obj/structure/grille/proc/take_damage(damage, damage_type = BRUTE, sound_effect = 1) - switch(damage_type) - if(BURN) - if(sound_effect) - playsound(loc, 'sound/items/welder.ogg', 80, 1) - if(BRUTE) - if(sound_effect) - if(damage) - playsound(loc, 'sound/effects/grillehit.ogg', 80, 1) - else - playsound(loc, 'sound/weapons/tap.ogg', 50, 1) - else - return - health -= damage +/obj/structure/grille/take_damage(damage_amount, damage_type = BRUTE, damage_flag = 0, sound_effect = 1, attack_dir) + if(sound_effect) + play_attack_sound(damage_amount, damage_type, damage_flag) + health -= damage_amount if(health <= 0) if(!broken) obj_break() diff --git a/code/game/objects/structures/mineral_doors.dm b/code/game/objects/structures/mineral_doors.dm index 0dad11674b5..66680ecc8f5 100644 --- a/code/game/objects/structures/mineral_doors.dm +++ b/code/game/objects/structures/mineral_doors.dm @@ -54,7 +54,7 @@ /obj/structure/mineral_door/attack_animal(mob/user) return TryToSwitchState(user) - + /obj/structure/mineral_door/attack_ghost(mob/user) if(user.can_advanced_admin_interact()) SwitchState() @@ -68,11 +68,11 @@ return !density /obj/structure/mineral_door/proc/TryToSwitchState(atom/user) - if(isSwitchingStates) + if(isSwitchingStates) return if(isliving(user)) var/mob/living/M = user - if(world.time - user.last_bumped <= 60) + if(world.time - user.last_bumped <= 60) return //NOTE do we really need that? if(M.client) if(iscarbon(M)) @@ -101,7 +101,7 @@ air_update_turf(1) update_icon() isSwitchingStates = 0 - + if(close_delay != -1) spawn(close_delay) Close() @@ -157,7 +157,7 @@ if(hardness <= 0) deconstruct(FALSE) -/obj/structure/mineral_door/proc/deconstruct(disassembled = TRUE) +/obj/structure/mineral_door/deconstruct(disassembled = TRUE) var/turf/T = get_turf(src) if(sheetType) if(disassembled) diff --git a/code/game/objects/structures/plasticflaps.dm b/code/game/objects/structures/plasticflaps.dm new file mode 100644 index 00000000000..d9eff5b9ea3 --- /dev/null +++ b/code/game/objects/structures/plasticflaps.dm @@ -0,0 +1,135 @@ +/obj/structure/plasticflaps + name = "plastic flaps" + desc = "Completely impassable - or are they?" + icon = 'icons/obj/stationobjs.dmi' + icon_state = "plasticflaps" + density = 0 + anchored = 1 + layer = 4 + var/list/mobs_can_pass = list( + /mob/living/carbon/slime, + /mob/living/simple_animal/mouse, + /mob/living/silicon/robot/drone, + /mob/living/simple_animal/bot/mulebot + ) + var/state = PLASTIC_FLAPS_NORMAL + +/obj/structure/plasticflaps/examine(mob/user) + . = ..() + switch(state) + if(PLASTIC_FLAPS_NORMAL) + to_chat(user, "[src] are screwed to the floor.") + if(PLASTIC_FLAPS_DETACHED) + to_chat(user, "[src] are no longer screwed to the floor, and the flaps can be sliced apart.") + +/obj/structure/plasticflaps/attackby(obj/item/W, mob/user, params) + add_fingerprint(user) + if(isscrewdriver(W)) + if(state == PLASTIC_FLAPS_NORMAL) + playsound(loc, W.usesound, 100, 1) + user.visible_message("[user] unscrews [src] from the floor.", "You start to unscrew [src] from the floor...", "You hear rustling noises.") + if(do_after(user, 180*W.toolspeed, target = src)) + if(state != PLASTIC_FLAPS_NORMAL) + return + state = PLASTIC_FLAPS_DETACHED + anchored = FALSE + to_chat(user, "You unscrew [src] from the floor.") + else if(state == PLASTIC_FLAPS_DETACHED) + playsound(loc, W.usesound, 100, 1) + user.visible_message("[user] screws [src] to the floor.", "You start to screw [src] to the floor...", "You hear rustling noises.") + if(do_after(user, 40*W.toolspeed, target = src)) + if(state != PLASTIC_FLAPS_DETACHED) + return + state = PLASTIC_FLAPS_NORMAL + anchored = TRUE + to_chat(user, "You screw [src] to the floor.") + else if(iswelder(W)) + if(state == PLASTIC_FLAPS_DETACHED) + var/obj/item/weapon/weldingtool/WT = W + if(!WT.remove_fuel(0, user)) + return + playsound(loc, WT.usesound, 100, 1) + user.visible_message("[user] slices apart [src].", "You start to slice apart [src].", "You hear welding.") + if(do_after(user, 120*WT.toolspeed, target = src)) + if(state != PLASTIC_FLAPS_DETACHED) + return + to_chat(user, "You slice apart [src].") + var/obj/item/stack/sheet/plastic/five/P = new(loc) + P.add_fingerprint(user) + qdel(src) + else + . = ..() + +/obj/structure/plasticflaps/CanPass(atom/A, turf/T) + if(istype(A) && A.checkpass(PASSGLASS)) + return prob(60) + + var/obj/structure/stool/bed/B = A + if(istype(A, /obj/structure/stool/bed) && B.buckled_mob)//if it's a bed/chair and someone is buckled, it will not pass + return 0 + + if(istype(A, /obj/structure/closet/cardboard)) + var/obj/structure/closet/cardboard/C = A + if(C.move_delay) + return 0 + + if(istype(A, /obj/vehicle)) //no vehicles + return 0 + + var/mob/living/M = A + if(istype(M)) + if(M.lying) + return ..() + for(var/mob_type in mobs_can_pass) + if(istype(A, mob_type)) + return ..() + if(istype(A, /mob/living/carbon/human)) + var/mob/living/carbon/human/H = M + if(H.species.is_small) + return ..() + return 0 + + return ..() + + +/obj/structure/plasticflaps/CanAStarPass(ID, to_dir, caller) + if(istype(caller, /mob/living)) + for(var/mob_type in mobs_can_pass) + if(istype(caller, mob_type)) + return 1 + + var/mob/living/M = caller + if(!M.ventcrawler && M.mob_size > MOB_SIZE_SMALL) + return 0 + return 1 + +/obj/structure/plasticflaps/ex_act(severity) + switch(severity) + if(1) + qdel(src) + if(2) + if(prob(50)) + qdel(src) + if(3) + if(prob(5)) + qdel(src) + +/obj/structure/plasticflaps/deconstruct(disassembled = TRUE) + if(can_deconstruct) + new /obj/item/stack/sheet/plastic/five(loc) + qdel(src) + +/obj/structure/plasticflaps/mining //A specific type for mining that doesn't allow airflow because of them damn crates + name = "airtight plastic flaps" + desc = "Heavy duty, airtight, plastic flaps." + +/obj/structure/plasticflaps/mining/initialize() + air_update_turf(1) + ..() + +/obj/structure/plasticflaps/mining/Destroy() + air_update_turf(1) + return ..() + +/obj/structure/plasticflaps/mining/CanAtmosPass(turf/T) + return 0 \ No newline at end of file diff --git a/code/modules/mining/mine_items.dm b/code/modules/mining/mine_items.dm index bac0df5b7f4..80d575b9d1f 100644 --- a/code/modules/mining/mine_items.dm +++ b/code/modules/mining/mine_items.dm @@ -495,7 +495,7 @@ var/buildstacktype = /obj/item/stack/sheet/metal var/buildstackamount = 5 -/obj/structure/fans/proc/deconstruct() +/obj/structure/fans/deconstruct() if(buildstacktype) new buildstacktype(loc, buildstackamount) qdel(src) diff --git a/code/modules/modular_computers/computers/item/computer_damage.dm b/code/modules/modular_computers/computers/item/computer_damage.dm index 689e8c99ab7..2623794fa9d 100644 --- a/code/modules/modular_computers/computers/item/computer_damage.dm +++ b/code/modules/modular_computers/computers/item/computer_damage.dm @@ -24,7 +24,7 @@ if(prob(75)) take_damage(obj_integrity, BRUTE) -/obj/item/device/modular_computer/proc/take_damage(damage_amount, damage_type = BRUTE, damage_flag = 0, sound_effect = 1) +/obj/item/device/modular_computer/take_damage(damage_amount, damage_type = BRUTE, damage_flag = 0, sound_effect = 1) . = ..() var/component_probability = min(50, max(damage_amount*0.1, 1 - obj_integrity/max_integrity)) switch(damage_flag) diff --git a/code/modules/modular_computers/hardware/_hardware.dm b/code/modules/modular_computers/hardware/_hardware.dm index 4f752fdac10..d810ed623e2 100644 --- a/code/modules/modular_computers/hardware/_hardware.dm +++ b/code/modules/modular_computers/hardware/_hardware.dm @@ -77,7 +77,7 @@ return TRUE // Good to go. // Handles damage checks -/obj/item/weapon/computer_hardware/proc/take_damage(damage_amount) +/obj/item/weapon/computer_hardware/take_damage(damage_amount) obj_integrity = max(obj_integrity - damage_amount, 0) /obj/item/weapon/computer_hardware/examine(var/mob/user) diff --git a/code/modules/shuttle/supply.dm b/code/modules/shuttle/supply.dm index d24853a7948..4a060385dea 100644 --- a/code/modules/shuttle/supply.dm +++ b/code/modules/shuttle/supply.dm @@ -782,143 +782,6 @@ icon_state = "shuttle3" requires_power = 0 -/obj/structure/plasticflaps - name = "\improper plastic flaps" - desc = "Completely impassable - or are they?" - icon = 'icons/obj/stationobjs.dmi' - icon_state = "plasticflaps" - density = 0 - anchored = 1 - layer = 4 - var/list/mobs_can_pass = list( - /mob/living/carbon/slime, - /mob/living/simple_animal/mouse, - /mob/living/silicon/robot/drone, - /mob/living/simple_animal/bot/mulebot - ) - var/state = PLASTIC_FLAPS_NORMAL - var/can_deconstruct = TRUE - -/obj/structure/plasticflaps/examine(mob/user) - . = ..() - switch(state) - if(PLASTIC_FLAPS_NORMAL) - to_chat(user, "[src] are screwed to the floor.") - if(PLASTIC_FLAPS_DETACHED) - to_chat(user, "[src] are no longer screwed to the floor, and the flaps can be sliced apart.") - -/obj/structure/plasticflaps/attackby(obj/item/W, mob/user, params) - add_fingerprint(user) - if(isscrewdriver(W)) - if(state == PLASTIC_FLAPS_NORMAL) - playsound(loc, W.usesound, 100, 1) - user.visible_message("[user] unscrews [src] from the floor.", "You start to unscrew [src] from the floor...", "You hear rustling noises.") - if(do_after(user, 180*W.toolspeed, target = src)) - if(state != PLASTIC_FLAPS_NORMAL) - return - state = PLASTIC_FLAPS_DETACHED - anchored = FALSE - to_chat(user, "You unscrew [src] from the floor.") - else if(state == PLASTIC_FLAPS_DETACHED) - playsound(loc, W.usesound, 100, 1) - user.visible_message("[user] screws [src] to the floor.", "You start to screw [src] to the floor...", "You hear rustling noises.") - if(do_after(user, 40*W.toolspeed, target = src)) - if(state != PLASTIC_FLAPS_DETACHED) - return - state = PLASTIC_FLAPS_NORMAL - anchored = TRUE - to_chat(user, "You screw [src] from the floor.") - else if(iswelder(W)) - if(state == PLASTIC_FLAPS_DETACHED) - var/obj/item/weapon/weldingtool/WT = W - if(!WT.remove_fuel(0, user)) - return - playsound(loc, WT.usesound, 100, 1) - user.visible_message("[user] slices apart [src].", "You start to slice apart [src].", "You hear welding.") - if(do_after(user, 120*WT.toolspeed, target = src)) - if(state != PLASTIC_FLAPS_DETACHED) - return - to_chat(user, "You slice apart [src].") - var/obj/item/stack/sheet/plastic/five/P = new(loc) - P.add_fingerprint(user) - qdel(src) - else - . = ..() - -/obj/structure/plasticflaps/CanPass(atom/A, turf/T) - if(istype(A) && A.checkpass(PASSGLASS)) - return prob(60) - - var/obj/structure/stool/bed/B = A - if(istype(A, /obj/structure/stool/bed) && B.buckled_mob)//if it's a bed/chair and someone is buckled, it will not pass - return 0 - - if(istype(A, /obj/structure/closet/cardboard)) - var/obj/structure/closet/cardboard/C = A - if(C.move_delay) - return 0 - - if(istype(A, /obj/vehicle)) //no vehicles - return 0 - - var/mob/living/M = A - if(istype(M)) - if(M.lying) - return ..() - for(var/mob_type in mobs_can_pass) - if(istype(A, mob_type)) - return ..() - if(istype(A, /mob/living/carbon/human)) - var/mob/living/carbon/human/H = M - if(H.species.is_small) - return ..() - return 0 - - return ..() - - -/obj/structure/plasticflaps/CanAStarPass(ID, to_dir, caller) - if(istype(caller, /mob/living)) - for(var/mob_type in mobs_can_pass) - if(istype(caller, mob_type)) - return 1 - - var/mob/living/M = caller - if(!M.ventcrawler && M.mob_size > MOB_SIZE_SMALL) - return 0 - return 1 - -/obj/structure/plasticflaps/ex_act(severity) - switch(severity) - if(1) - qdel(src) - if(2) - if(prob(50)) - qdel(src) - if(3) - if(prob(5)) - qdel(src) - -/obj/structure/plasticflaps/proc/deconstruct(disassembled = TRUE) - if(can_deconstruct) - new /obj/item/stack/sheet/plastic/five(loc) - qdel(src) - -/obj/structure/plasticflaps/mining //A specific type for mining that doesn't allow airflow because of them damn crates - name = "\improper Airtight plastic flaps" - desc = "Heavy duty, airtight, plastic flaps." - -/obj/structure/plasticflaps/mining/initialize() - air_update_turf(1) - ..() - -/obj/structure/plasticflaps/mining/Destroy() - air_update_turf(1) - return ..() - -/obj/structure/plasticflaps/mining/CanAtmosPass(turf/T) - return 0 - #undef ORDER_SCREEN_WIDTH #undef ORDER_SCREEN_HEIGHT #undef SUPPLY_SCREEN_WIDTH diff --git a/code/modules/surgery/organs/organ.dm b/code/modules/surgery/organs/organ.dm index f43438417d5..85bd1782024 100644 --- a/code/modules/surgery/organs/organ.dm +++ b/code/modules/surgery/organs/organ.dm @@ -219,7 +219,7 @@ W.time_inflicted = world.time //Note: external organs have their own version of this proc -/obj/item/organ/proc/take_damage(amount, silent = 0) +/obj/item/organ/take_damage(amount, silent = 0) if(tough) return if(status & ORGAN_ROBOT) diff --git a/paradise.dme b/paradise.dme index 334e5326f2d..4cf60716903 100644 --- a/paradise.dme +++ b/paradise.dme @@ -682,6 +682,7 @@ #include "code\game\objects\empulse.dm" #include "code\game\objects\explosion.dm" #include "code\game\objects\items.dm" +#include "code\game\objects\obj_defense.dm" #include "code\game\objects\objs.dm" #include "code\game\objects\structures.dm" #include "code\game\objects\weapons.dm" @@ -949,6 +950,7 @@ #include "code\game\objects\structures\morgue.dm" #include "code\game\objects\structures\musician.dm" #include "code\game\objects\structures\noticeboard.dm" +#include "code\game\objects\structures\plasticflaps.dm" #include "code\game\objects\structures\safe.dm" #include "code\game\objects\structures\signs.dm" #include "code\game\objects\structures\spirit_board.dm"