diff --git a/_maps/map_files/generic/lavaland.dmm b/_maps/map_files/generic/lavaland.dmm index 5d66bbc616b..c864950a0c5 100644 --- a/_maps/map_files/generic/lavaland.dmm +++ b/_maps/map_files/generic/lavaland.dmm @@ -33916,7 +33916,7 @@ aa aa aa aj -en +aj aj ab ab @@ -34173,7 +34173,7 @@ aa aa aa aj -aj +en aj aj ab diff --git a/code/game/objects/structures/flora.dm b/code/game/objects/structures/flora.dm index 8aa32271e7d..daac9933bd8 100644 --- a/code/game/objects/structures/flora.dm +++ b/code/game/objects/structures/flora.dm @@ -1,11 +1,11 @@ /obj/structure/flora burn_state = FLAMMABLE burntime = 30 + anchored = 1 //trees /obj/structure/flora/tree name = "tree" - anchored = 1 density = 1 pixel_x = -16 layer = FLY_LAYER @@ -17,14 +17,14 @@ if(W.sharpness && W.force > 0) if(W.hitsound) playsound(get_turf(src), W.hitsound, 100, 0, 0) - user.visible_message("[user] begins to cut down [src] with [W].","You begin to cut down [src] with [W].", "You hear the sound of cutting a tree.") + user.visible_message("[user] begins to cut down [src] with [W].","You begin to cut down [src] with [W].", "You hear the sound of sawing.") if(do_after(user, 1000/W.force, target = user)) //5 seconds with 20 force, 8 seconds with a hatchet, 20 seconds with a shard. if(cut) return - user.visible_message("[user] falls [src] with the [W].","You fall [src] with the [W].", "You hear the sound of a tree falling.") + user.visible_message("[user] fells [src] with the [W].","You fell [src] with the [W].", "You hear the sound of a tree falling.") playsound(get_turf(src), 'sound/effects/meteorimpact.ogg', 100 , 0, 0) icon_state = "tree_stump" - name = "stump" + name += " stump" cut = TRUE for(var/i=1 to log_amount) new /obj/item/weapon/grown/log/tree(get_turf(src)) @@ -71,7 +71,6 @@ /obj/structure/flora/grass name = "grass" icon = 'icons/obj/flora/snowflora.dmi' - anchored = 1 gender = PLURAL //"this is grass" not "this is a grass" /obj/structure/flora/grass/brown @@ -114,7 +113,6 @@ name = "bush" icon = 'icons/obj/flora/ausflora.dmi' icon_state = "firstbush_1" - anchored = 1 /obj/structure/flora/ausbushes/New() if(icon_state == "firstbush_1") @@ -279,7 +277,6 @@ icon_state = "basalt" desc = "A volcanic rock" icon = 'icons/obj/flora/rocks.dmi' - anchored = 1 burn_state = FIRE_PROOF density = 1 diff --git a/code/game/objects/structures/fluff.dm b/code/game/objects/structures/fluff.dm index e316bc66234..2839c6bec08 100644 --- a/code/game/objects/structures/fluff.dm +++ b/code/game/objects/structures/fluff.dm @@ -8,12 +8,10 @@ anchored = TRUE density = FALSE opacity = 0 - var/deconstructible = 1 + var/deconstructible = TRUE /obj/structure/fluff/attackby(obj/item/I, mob/living/user, params) - if(istype(I, /obj/item/weapon/wrench)) - if(!deconstructible) - return + if(istype(I, /obj/item/weapon/wrench) && deconstructible) user.visible_message("[user] starts disassembling [src]...", "You start disassembling [src]...") playsound(user, 'sound/items/Ratchet.ogg', 50, 1) if(!do_after(user, 50, target = src)) @@ -64,7 +62,9 @@ desc = "A towering basalt sculpture of a proud and regal drake. Its eyes are six glowing gemstones." icon = 'icons/effects/64x64.dmi' icon_state = "drake_statue" + pixel_x = -16 density = TRUE + deconstructible = FALSE /obj/structure/fluff/drake_statue/falling //A variety of statue in disrepair; parts are broken off and a gemstone is missing desc = "A towering basalt sculpture of a drake. Cracks run down its surface and parts of it have fallen off." diff --git a/code/game/turfs/simulated/floor/plating.dm b/code/game/turfs/simulated/floor/plating.dm index 3a540a57857..d72e106b393 100644 --- a/code/game/turfs/simulated/floor/plating.dm +++ b/code/game/turfs/simulated/floor/plating.dm @@ -214,7 +214,6 @@ icon_state = "lava" baseturf = /turf/open/floor/plating/lava //lava all the way down slowdown = 2 - var/processing = 0 luminosity = 1 /turf/open/floor/plating/lava/airless @@ -222,13 +221,10 @@ /turf/open/floor/plating/lava/Entered(atom/movable/AM) burn_stuff() - if(!processing) - processing = 1 - START_PROCESSING(SSobj, src) + START_PROCESSING(SSobj, src) /turf/open/floor/plating/lava/process() if(!burn_stuff()) - processing = 0 STOP_PROCESSING(SSobj, src) /turf/open/floor/plating/lava/make_plating() @@ -245,8 +241,10 @@ /turf/open/floor/plating/lava/proc/burn_stuff() . = 0 for(var/thing in contents) - if(istype(thing, /obj)) + if(isobj(thing)) var/obj/O = thing + if(O.burn_state == LAVA_PROOF || O.throwing) + continue if(istype(O, /obj/effect/decal/cleanable/ash)) //So we don't get stuck burning the same ash pile forever qdel(O) continue @@ -257,7 +255,7 @@ O.fire_act() - else if (istype(thing, /mob/living)) + else if (isliving(thing)) . = 1 var/mob/living/L = thing if("lava" in L.weather_immunities) diff --git a/code/modules/mining/mine_turfs.dm b/code/modules/mining/mine_turfs.dm index 6dcd7a11f7e..1ec44083591 100644 --- a/code/modules/mining/mine_turfs.dm +++ b/code/modules/mining/mine_turfs.dm @@ -575,41 +575,56 @@ var/drop_y = 1 var/drop_z = 1 - /turf/open/chasm/Entered(atom/movable/AM) - if(istype(AM, /obj/singularity) || istype(AM, /obj/item/projectile)) - return + START_PROCESSING(SSobj, src) + drop_stuff() + +/turf/open/chasm/process() + if(!drop_stuff()) + STOP_PROCESSING(SSobj, src) + +/turf/open/chasm/proc/drop_stuff() + . = 0 + for(var/thing in contents) + if(droppable(thing)) + . = 1 + drop(thing) + +/turf/open/chasm/proc/droppable(atom/movable/AM) + if(!isliving(AM) && !isobj(AM)) + return 0 + if(istype(AM, /obj/singularity) || istype(AM, /obj/item/projectile) || AM.throwing) + return 0 if(istype(AM, /obj/effect/portal)) - // Portals aren't affected by gravity. Probably. - return - // Flies right over the chasm - if(istype(AM, /mob/living/simple_animal)) - // apparently only simple_animals can fly?? + //Portals aren't affected by gravity. Probably. + return 0 + //Flies right over the chasm + if(isanimal(AM)) var/mob/living/simple_animal/SA = AM if(SA.flying) - return - if(istype(AM, /mob/living/carbon/human)) + return 0 + if(ishuman(AM)) var/mob/living/carbon/human/H = AM if(istype(H.belt, /obj/item/device/wormhole_jaunter)) var/obj/item/device/wormhole_jaunter/J = H.belt - // To freak out any bystanders + //To freak out any bystanders visible_message("[H] falls into [src]!") J.chasm_react(H) - return - if(H.dna.species && (FLYING in H.dna.species.specflags)) - return - drop(AM) - + return 0 + if(H.dna && H.dna.species && (FLYING in H.dna.species.specflags)) + return 0 + return 1 /turf/open/chasm/proc/drop(atom/movable/AM) - /*visible_message("[AM] falls into [src]!") - qdel(AM)*/ - AM.forceMove(locate(drop_x, drop_y, drop_z)) - AM.visible_message("[AM] falls from above!", "GAH! Ah... where are you?") - if(istype(AM, /mob/living)) - var/mob/living/L = AM - L.Weaken(5) - L.adjustBruteLoss(30) + var/turf/T = locate(drop_x, drop_y, drop_z) + if(T) + AM.visible_message("[AM] falls into [src]!", "GAH! Ah... where are you?") + T.visible_message("[AM] falls from above!") + AM.forceMove(T) + if(isliving(AM)) + var/mob/living/L = AM + L.Weaken(5) + L.adjustBruteLoss(30) /turf/open/chasm/straight_down/New() ..() @@ -636,22 +651,21 @@ initial_gas_mix = "o2=22;n2=82;TEMP=293.15" /turf/open/chasm/straight_down/lava_land_surface/drop(atom/movable/AM) - if(!AM.invisibility) - AM.visible_message("[AM] falls into [src]!", "You stumble and stare into an abyss before you. It stares back, and you fall \ - into the enveloping dark.") - if(isliving(AM)) - var/mob/living/L = AM - L.notransform = TRUE - L.Stun(10) - L.resting = TRUE - animate(AM, transform = matrix() - matrix(), alpha = 0, color = rgb(0, 0, 0), time = 10) - for(var/i in 1 to 5) - AM.pixel_y-- - sleep(2) - if(isrobot(AM)) - var/mob/living/silicon/robot/S = AM - qdel(S.mmi) - qdel(AM) + AM.visible_message("[AM] falls into [src]!", "You stumble and stare into an abyss before you. It stares back, and you fall \ + into the enveloping dark.") + if(isliving(AM)) + var/mob/living/L = AM + L.notransform = TRUE + L.Stun(10) + L.resting = TRUE + animate(AM, transform = matrix() - matrix(), alpha = 0, color = rgb(0, 0, 0), time = 10) + for(var/i in 1 to 5) + AM.pixel_y-- + sleep(2) + if(isrobot(AM)) + var/mob/living/silicon/robot/S = AM + qdel(S.mmi) + qdel(AM) /turf/closed/mineral/volcanic/lava_land_surface environment_type = "basalt" diff --git a/code/modules/spells/spell_types/charge.dm b/code/modules/spells/spell_types/charge.dm index fc6c555a47b..57088176cb2 100644 --- a/code/modules/spells/spell_types/charge.dm +++ b/code/modules/spells/spell_types/charge.dm @@ -62,11 +62,12 @@ break else if(istype(item, /obj/item/weapon/stock_parts/cell/)) var/obj/item/weapon/stock_parts/cell/C = item - if(prob(80)) - C.maxcharge -= 200 - if(C.maxcharge <= 1) //Div by 0 protection - C.maxcharge = 1 - burnt_out = 1 + if(!C.self_recharge) + if(prob(80)) + C.maxcharge -= 200 + if(C.maxcharge <= 1) //Div by 0 protection + C.maxcharge = 1 + burnt_out = 1 C.charge = C.maxcharge charged_item = C break @@ -75,11 +76,12 @@ for(I in item.contents) if(istype(I, /obj/item/weapon/stock_parts/cell/)) var/obj/item/weapon/stock_parts/cell/C = I - if(prob(80)) - C.maxcharge -= 200 - if(C.maxcharge <= 1) //Div by 0 protection - C.maxcharge = 1 - burnt_out = 1 + if(!C.self_recharge) + if(prob(80)) + C.maxcharge -= 200 + if(C.maxcharge <= 1) //Div by 0 protection + C.maxcharge = 1 + burnt_out = 1 C.charge = C.maxcharge item.update_icon() charged_item = item