diff --git a/code/game/objects/items/weapons/tanks/watertank.dm b/code/game/objects/items/weapons/tanks/watertank.dm index 02e3ec5a543..ebd2d4626f1 100644 --- a/code/game/objects/items/weapons/tanks/watertank.dm +++ b/code/game/objects/items/weapons/tanks/watertank.dm @@ -193,6 +193,10 @@ item_state = "waterbackpackatmos" volume = 200 +/obj/item/weapon/watertank/atmos/New() + ..() + reagents.add_reagent("water", 200) + /obj/item/weapon/watertank/atmos/make_noz() return new /obj/item/weapon/extinguisher/mini/nozzle(src) diff --git a/code/game/turfs/simulated/floor.dm b/code/game/turfs/simulated/floor.dm index 0aae7a28e69..c3b1e5857dc 100644 --- a/code/game/turfs/simulated/floor.dm +++ b/code/game/turfs/simulated/floor.dm @@ -63,8 +63,10 @@ var/list/wood_icons = list("wood","wood-broken") //set src in oview(1) switch(severity) if(1.0) + src.ChangeTurf(/turf/space) + if(2.0) switch(pick(1,2;75,3)) - if (1) + if(1) src.ReplaceWithLattice() if(prob(33)) new /obj/item/stack/sheet/metal(src) if(2) @@ -76,14 +78,10 @@ var/list/wood_icons = list("wood","wood-broken") src.break_tile() src.hotspot_expose(1000,CELL_VOLUME) if(prob(33)) new /obj/item/stack/sheet/metal(src) - if(2.0) + if(3.0) if (prob(50)) src.break_tile() src.hotspot_expose(1000,CELL_VOLUME) - if(3.0) - if (prob(25)) - src.break_tile() - src.hotspot_expose(500,CELL_VOLUME) return /turf/simulated/floor/fire_act(datum/gas_mixture/air, exposed_temperature, exposed_volume) diff --git a/code/game/turfs/simulated/walls.dm b/code/game/turfs/simulated/walls.dm index afbcc4b74be..e9a59453030 100644 --- a/code/game/turfs/simulated/walls.dm +++ b/code/game/turfs/simulated/walls.dm @@ -163,7 +163,7 @@ src.ChangeTurf(/turf/space) return if(2.0) - if(prob(75)) + if(prob(50)) take_damage(rand(150, 250)) else dismantle_wall(1,1) @@ -175,7 +175,7 @@ /turf/simulated/wall/blob_act() take_damage(rand(75, 125)) return - + /turf/simulated/wall/mech_melee_attack(obj/mecha/M) if(M.damtype == "brute") playsound(src, 'sound/weapons/punch4.ogg', 50, 1) @@ -185,7 +185,7 @@ dismantle_wall(1) M.occupant_message("You smash through the wall.") visible_message("[src.name] smashes through the wall!") - playsound(src, 'sound/effects/meteorimpact.ogg', 100, 1) + playsound(src, 'sound/effects/meteorimpact.ogg', 100, 1) // Wall-rot effect, a nasty fungus that destroys walls. /turf/simulated/wall/proc/rot() @@ -459,8 +459,8 @@ else if(istype(W,/obj/item/newscaster_frame)) var/obj/item/newscaster_frame/AH = W AH.try_build(src) - return 1 - + return 1 + else if(istype(W,/obj/item/alarm_frame)) var/obj/item/alarm_frame/AH = W AH.try_build(src) diff --git a/code/modules/mob/living/carbon/brain/brain.dm b/code/modules/mob/living/carbon/brain/brain.dm index bbcd527386b..c56a6480b40 100644 --- a/code/modules/mob/living/carbon/brain/brain.dm +++ b/code/modules/mob/living/carbon/brain/brain.dm @@ -56,6 +56,9 @@ use_me = 1 //If it can move, let it emote else canmove = 0 return canmove - + +/mob/living/carbon/brain/ex_act() //you cant blow up brainmobs because it makes transfer_to() freak out when borgs blow up. + return + /mob/living/carbon/brain/binarycheck() return istype(loc, /obj/item/device/mmi/posibrain) \ No newline at end of file diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index 05ec3909226..59f4fba99d7 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -214,9 +214,6 @@ stat("Spacepod Integrity", "[!S.health ? "0" : "[(S.health / initial(S.health)) * 100]"]%") /mob/living/carbon/human/ex_act(severity) - if(!blinded) - flick("flash", flash) - var/shielded = 0 var/b_loss = null var/f_loss = null @@ -235,8 +232,8 @@ while(limbs_affected != 0) processing_dismember = pick(organs) - if(processing_dismember.name != "chest" && processing_dismember.name != "groin") - processing_dismember.dismember_limb() + if(processing_dismember.name != "chest" && processing_dismember.name != "groin" && processing_dismember.name != "head") + processing_dismember.droplimb(1,1,1) limbs_affected -= 1 @@ -260,7 +257,7 @@ while(limbs_affected != 0) processing_dismember = pick(organs) if(processing_dismember.name != "chest" && processing_dismember.name != "groin" && processing_dismember.name != "head") - processing_dismember.dismember_limb() + processing_dismember.droplimb(1,1,1) limbs_affected -= 1 else @@ -269,8 +266,8 @@ while(limbs_affected != 0) processing_dismember = pick(organs) - if(processing_dismember.name != "chest" && processing_dismember.name != "groin") - processing_dismember.dismember_limb() + if(processing_dismember.name != "chest" && processing_dismember.name != "groin" && processing_dismember.name != "head") + processing_dismember.droplimb(1,1,1) limbs_affected -= 1 if (!istype(l_ear, /obj/item/clothing/ears/earmuffs) && !istype(r_ear, /obj/item/clothing/ears/earmuffs)) @@ -292,7 +289,7 @@ while(limbs_affected != 0) processing_dismember = pick(organs) if(processing_dismember.name != "chest" && processing_dismember.name != "groin" && processing_dismember.name != "head") - processing_dismember.dismember_limb() + processing_dismember.droplimb(1,1,1) limbs_affected -= 1 if (!istype(l_ear, /obj/item/clothing/ears/earmuffs) && !istype(r_ear, /obj/item/clothing/ears/earmuffs)) @@ -302,23 +299,15 @@ Paralyse(10) var/update = 0 - - // focus most of the blast on one organ - var/datum/organ/external/take_blast = pick(organs) - update |= take_blast.take_damage(b_loss * 0.9, f_loss * 0.9, used_weapon = "Explosive blast") - - // distribute the remaining 10% on all limbs equally - b_loss *= 0.1 - f_loss *= 0.1 - var/weapon_message = "Explosive Blast" - for(var/datum/organ/external/temp in organs) switch(temp.name) if("head") update |= temp.take_damage(b_loss * 0.2, f_loss * 0.2, used_weapon = weapon_message) if("chest") update |= temp.take_damage(b_loss * 0.4, f_loss * 0.4, used_weapon = weapon_message) + if("groin") + update |= temp.take_damage(b_loss * 0.1, f_loss * 0.1, used_weapon = weapon_message) if("l_arm") update |= temp.take_damage(b_loss * 0.05, f_loss * 0.05, used_weapon = weapon_message) if("r_arm") @@ -328,15 +317,16 @@ if("r_leg") update |= temp.take_damage(b_loss * 0.05, f_loss * 0.05, used_weapon = weapon_message) if("r_foot") - update |= temp.take_damage(b_loss * 0.05, f_loss * 0.05, used_weapon = weapon_message) + update |= temp.take_damage(b_loss * 0.025, f_loss * 0.025, used_weapon = weapon_message) if("l_foot") - update |= temp.take_damage(b_loss * 0.05, f_loss * 0.05, used_weapon = weapon_message) - if("r_arm") - update |= temp.take_damage(b_loss * 0.05, f_loss * 0.05, used_weapon = weapon_message) - if("l_arm") - update |= temp.take_damage(b_loss * 0.05, f_loss * 0.05, used_weapon = weapon_message) + update |= temp.take_damage(b_loss * 0.025, f_loss * 0.025, used_weapon = weapon_message) + if("r_hand") + update |= temp.take_damage(b_loss * 0.025, f_loss * 0.025, used_weapon = weapon_message) + if("l_hand") + update |= temp.take_damage(b_loss * 0.025, f_loss * 0.025, used_weapon = weapon_message) if(update) UpdateDamageIcon() + ..() /mob/living/carbon/human/blob_act() if(stat == 2) return diff --git a/code/modules/mob/living/carbon/metroid/metroid.dm b/code/modules/mob/living/carbon/metroid/metroid.dm index 598bcacf1d0..7b00947daa2 100644 --- a/code/modules/mob/living/carbon/metroid/metroid.dm +++ b/code/modules/mob/living/carbon/metroid/metroid.dm @@ -190,7 +190,7 @@ var/f_loss = null switch (severity) if (1.0) - del(src) + qdel(src) return if (2.0) @@ -255,7 +255,7 @@ if (Victim) return // can't attack while eating! if (health > -100) - + M.do_attack_animation(src) visible_message(" The [M.name] has glomped [src]!", \ " The [M.name] has glomped [src]!") @@ -338,7 +338,7 @@ var/damage = rand(1, 3) L.amount_grown = min(L.amount_grown + damage, L.max_grown) adjustBruteLoss(damage) - + /mob/living/carbon/slime/attack_hand(mob/living/carbon/human/M as mob) if (!ticker) M << "You cannot attack people before the game has started." diff --git a/code/modules/mob/living/carbon/monkey/monkey.dm b/code/modules/mob/living/carbon/monkey/monkey.dm index feb0a420f28..aecf82f3a00 100644 --- a/code/modules/mob/living/carbon/monkey/monkey.dm +++ b/code/modules/mob/living/carbon/monkey/monkey.dm @@ -462,26 +462,18 @@ ..() /mob/living/carbon/monkey/ex_act(severity) - if(!blinded) - flick("flash", flash) - + ..() switch(severity) if(1.0) - if (stat != 2) - adjustBruteLoss(200) - health = 100 - getOxyLoss() - getToxLoss() - getFireLoss() - getBruteLoss() + gib() + return if(2.0) - if (stat != 2) - adjustBruteLoss(60) - adjustFireLoss(60) - health = 100 - getOxyLoss() - getToxLoss() - getFireLoss() - getBruteLoss() + adjustBruteLoss(60) + adjustFireLoss(60) if(3.0) - if (stat != 2) - adjustBruteLoss(30) - health = 100 - getOxyLoss() - getToxLoss() - getFireLoss() - getBruteLoss() + adjustBruteLoss(30) if (prob(50)) Paralyse(10) - else return /mob/living/carbon/monkey/blob_act() diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index 15991b13201..e3917bf373f 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -33,6 +33,11 @@ /mob/living/proc/InCritical() return (src.health < 0 && src.health > -95.0 && stat == UNCONSCIOUS) +/mob/living/ex_act(severity) + ..() + if(client && !eye_blind) + flick("flash", src.flash) + /mob/living/proc/updatehealth() if(status_flags & GODMODE) health = 100 diff --git a/code/modules/mob/living/silicon/ai/ai.dm b/code/modules/mob/living/silicon/ai/ai.dm index c189c1e19ff..b61649ff519 100644 --- a/code/modules/mob/living/silicon/ai/ai.dm +++ b/code/modules/mob/living/silicon/ai/ai.dm @@ -467,14 +467,11 @@ var/list/ai_verbs_default = list( ..() /mob/living/silicon/ai/ex_act(severity) - if(!blinded) - flick("flash", flash) + ..() switch(severity) if(1.0) - if (stat != 2) - adjustBruteLoss(100) - adjustFireLoss(100) + gib() if(2.0) if (stat != 2) adjustBruteLoss(60) @@ -483,7 +480,7 @@ var/list/ai_verbs_default = list( if (stat != 2) adjustBruteLoss(30) - updatehealth() + return /mob/living/silicon/ai/Topic(href, href_list) diff --git a/code/modules/mob/living/silicon/pai/pai.dm b/code/modules/mob/living/silicon/pai/pai.dm index fcb51fdbc08..566ed88266b 100644 --- a/code/modules/mob/living/silicon/pai/pai.dm +++ b/code/modules/mob/living/silicon/pai/pai.dm @@ -183,23 +183,22 @@ src << "You feel an electric surge run through your circuitry and become acutely aware at how lucky you are that you can still feel at all." /mob/living/silicon/pai/ex_act(severity) - if(!blinded) - flick("flash", src.flash) + ..() switch(severity) if(1.0) - if (src.stat != 2) //Let's not have two of these instantly kill you. - adjustBruteLoss(45) - adjustFireLoss(45) + if (src.stat != 2) + adjustBruteLoss(100) + adjustFireLoss(100) if(2.0) if (src.stat != 2) - adjustBruteLoss(30) - adjustFireLoss(30) + adjustBruteLoss(60) + adjustFireLoss(60) if(3.0) if (src.stat != 2) - adjustBruteLoss(20) + adjustBruteLoss(30) - src.updatehealth() + return // See software.dm for Topic() diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm index 3f70e98c3ac..15d48f454d4 100644 --- a/code/modules/mob/living/silicon/robot/robot.dm +++ b/code/modules/mob/living/silicon/robot/robot.dm @@ -514,16 +514,10 @@ var/list/robot_verbs_default = list( /mob/living/silicon/robot/ex_act(severity) - if(!blinded) - flick("flash", flash) - switch(severity) if(1.0) - if (stat != 2) - adjustBruteLoss(100) - adjustFireLoss(100) - gib() - return + gib() + return if(2.0) if (stat != 2) adjustBruteLoss(60) @@ -531,8 +525,7 @@ var/list/robot_verbs_default = list( if(3.0) if (stat != 2) adjustBruteLoss(30) - - updatehealth() + return /mob/living/silicon/robot/meteorhit(obj/O as obj) diff --git a/code/modules/mob/living/simple_animal/simple_animal.dm b/code/modules/mob/living/simple_animal/simple_animal.dm index 4046d556947..76c8c4733d7 100644 --- a/code/modules/mob/living/simple_animal/simple_animal.dm +++ b/code/modules/mob/living/simple_animal/simple_animal.dm @@ -477,11 +477,9 @@ return /mob/living/simple_animal/ex_act(severity) - if(!blinded) - flick("flash", flash) + ..() switch (severity) if (1.0) - adjustBruteLoss(500) gib() return diff --git a/code/modules/reagents/reagent_dispenser.dm b/code/modules/reagents/reagent_dispenser.dm index 95d8694c449..f12c2ad8848 100644 --- a/code/modules/reagents/reagent_dispenser.dm +++ b/code/modules/reagents/reagent_dispenser.dm @@ -98,7 +98,9 @@ bullet_act(var/obj/item/projectile/Proj) if(istype(Proj ,/obj/item/projectile/beam)||istype(Proj,/obj/item/projectile/bullet)) - if(!istype(Proj ,/obj/item/projectile/lasertag) && !istype(Proj ,/obj/item/projectile/practice) ) + if((Proj.damage_type == BURN) || (Proj.damage_type == BRUTE)) + message_admins("[key_name_admin(Proj.firer)] triggered a fueltank explosion.") + log_game("[key_name(Proj.firer)] triggered a fueltank explosion.") explode() blob_act() @@ -107,64 +109,8 @@ ex_act() explode() - -/obj/structure/reagent_dispensers/fueltank/examine() - set src in view() - ..() - if (!(usr in view(2)) && usr!=src.loc) return - if (modded) - usr << "\red Fuel faucet is wrenched open, leaking the fuel!" - if(rig) - usr << "There is some kind of device rigged to the tank." - -/obj/structure/reagent_dispensers/fueltank/attack_hand() - if (rig) - usr.visible_message("[usr] begins to detach [rig] from \the [src].", "You begin to detach [rig] from \the [src]") - if(do_after(usr, 20)) - usr.visible_message("\blue [usr] detaches [rig] from \the [src].", "\blue You detach [rig] from \the [src]") - rig.loc = get_turf(usr) - rig = null - overlays = new/list() - -/obj/structure/reagent_dispensers/fueltank/attackby(obj/item/weapon/W as obj, mob/user as mob, params) - if (istype(W,/obj/item/weapon/wrench)) - user.visible_message("[user] wrenches [src]'s faucet [modded ? "closed" : "open"].", \ - "You wrench [src]'s faucet [modded ? "closed" : "open"]") - modded = modded ? 0 : 1 - if (modded) - leak_fuel(amount_per_transfer_from_this) - if (istype(W,/obj/item/device/assembly_holder)) - if (rig) - user << "\red There is another device in the way." - return ..() - user.visible_message("[user] begins rigging [W] to \the [src].", "You begin rigging [W] to \the [src]") - if(do_after(user, 20)) - user.visible_message("\blue [user] rigs [W] to \the [src].", "\blue You rig [W] to \the [src]") - - var/obj/item/device/assembly_holder/H = W - if (istype(H.a_left,/obj/item/device/assembly/igniter) || istype(H.a_right,/obj/item/device/assembly/igniter)) - msg_admin_attack("[key_name_admin(user)] rigged fueltank at ([loc.x],[loc.y],[loc.z]) for explosion.") - log_game("[key_name(user)] rigged fueltank at ([loc.x],[loc.y],[loc.z]) for explosion.") - - rig = W - user.drop_item() - W.loc = src - - var/icon/test = getFlatIcon(W) - test.Shift(NORTH,1) - test.Shift(EAST,6) - overlays += test - - return ..() - - /obj/structure/reagent_dispensers/fueltank/proc/explode() - if (reagents.total_volume > 500) - explosion(src.loc,1,2,4) - else if (reagents.total_volume > 100) - explosion(src.loc,0,1,3) - else - explosion(src.loc,-1,1,2) + explosion(src.loc,0,1,3) if(src) del(src) @@ -173,37 +119,6 @@ explode() return ..() -/obj/structure/reagent_dispensers/fueltank/Move() - ..() - if(modded) - leak_fuel(amount_per_transfer_from_this) - if(rig) - rig.process_movement() - -/obj/structure/reagent_dispensers/fueltank/proc/leak_fuel(amount) - if (reagents.total_volume == 0) - return - - amount = min(amount, reagents.total_volume) - reagents.remove_reagent("fuel",amount) -// new /obj/effect/decal/cleanable/liquid_fuel(src.loc, amount) - -/obj/structure/reagent_dispensers/fueltank/HasProximity(atom/movable/AM) - if(rig) - rig.HasProximity(AM) - -/obj/structure/reagent_dispensers/fueltank/Crossed(atom/movable/AM) - if(rig) - rig.Crossed(AM) - -/obj/structure/reagent_dispensers/fueltank/hear_talk(mob/living/M, msg) - if(rig) - rig.hear_talk(M, msg) - -/obj/structure/reagent_dispensers/fueltank/Bump() - ..() - if(rig) - rig.process_movement() /obj/structure/reagent_dispensers/peppertank name = "Pepper Spray Refiller"