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"