diff --git a/code/defines/obj.dm b/code/defines/obj.dm
index d126190a41..e9029aabcc 100644
--- a/code/defines/obj.dm
+++ b/code/defines/obj.dm
@@ -3,6 +3,7 @@
var/m_amt = 0 // metal
var/g_amt = 0 // glass
var/w_amt = 0 // waster amounts
+ var/unacidable = 0 //universal "unacidabliness" var, here so you can use it in any obj.
animate_movement = 2
var/throwforce = 0
proc
@@ -39,6 +40,7 @@
anchored = 1
layer = 99
mouse_opacity = 0
+ unacidable = 1
/obj/admins
name = "admins"
@@ -54,6 +56,7 @@
desc = "FUCK FUCK FUCK AAAHHH"
icon_state = "bhole2"
opacity = 0
+ unacidable = 1 //well, if you got that close, you're fucked anyway, but...
density = 0
anchored = 1
var/datum/effects/system/harmless_smoke_spread/smoke
@@ -101,6 +104,7 @@
icon = 'stationobjs.dmi'
icon_state = "begin"
anchored = 1.0
+ unacidable = 1
/obj/bullet
name = "bullet"
@@ -243,6 +247,7 @@
/obj/hud
name = "hud"
+ unacidable = 1
var/mob/mymob = null
var/list/adding = null
var/list/other = null
@@ -423,13 +428,13 @@
/obj/item/blueprints
name = "station blueprints"
- desc = "Blueprints of space station 13. It have stamp \"Classified\" and several coffee stains."
+ desc = "Blueprints of the station. There's stamp \"Classified\" and several coffee stains on it."
icon = 'items.dmi'
icon_state = "blueprints"
/obj/item/apc_frame
name = "APC frame"
- desc = "Use for repairing or building APCs"
+ desc = "Used for repairing or building APCs"
icon = 'apc_repair.dmi'
icon_state = "apc_frame"
flags = FPRINT | TABLEPASS| CONDUCT
@@ -439,6 +444,7 @@
icon = 'screen1.dmi'
icon_state = "x2"
anchored = 1.0
+ unacidable = 1
/obj/landmark/alterations
name = "alterations"
@@ -565,12 +571,14 @@
/obj/overlay
name = "overlay"
+ unacidable = 1
/obj/portal
name = "portal"
icon = 'stationobjs.dmi'
icon_state = "portal"
density = 1
+ unacidable = 1
var/failchance = 5
var/obj/item/target = null
var/creator = null
@@ -592,6 +600,7 @@
name = "screen"
icon = 'screen1.dmi'
layer = 20.0
+ unacidable = 1
var/id = 0.0
var/obj/master
diff --git a/code/game/machinery/shieldgen.dm b/code/game/machinery/shieldgen.dm
index a7b6aee272..95d8417031 100644
--- a/code/game/machinery/shieldgen.dm
+++ b/code/game/machinery/shieldgen.dm
@@ -43,6 +43,7 @@
density = 1
opacity = 1
anchored = 1
+ unacidable = 1
/obj/machinery/shieldwall
name = "Shield"
@@ -51,6 +52,7 @@
icon_state = "shieldwall"
anchored = 1
density = 1
+ unacidable = 1
var/active = 1
// var/power = 10
var/delay = 5
diff --git a/code/game/machinery/singularity.dm b/code/game/machinery/singularity.dm
index c91d31a3fd..da23b4736f 100644
--- a/code/game/machinery/singularity.dm
+++ b/code/game/machinery/singularity.dm
@@ -53,6 +53,7 @@ However people seem to like it for some reason.
icon_state = "Singularity"
anchored = 1
density = 1
+// unacidable = 1 //oh the hilarity.
var/active = 0
var/energy = 10
var/Dtime = null
@@ -417,6 +418,7 @@ However people seem to like it for some reason.
icon_state = "Contain_F"
anchored = 1
density = 0
+ unacidable = 1
var/active = 1
var/power = 10
var/delay = 5
diff --git a/code/game/mecha/mecha.dm b/code/game/mecha/mecha.dm
index 323e955668..589b8ffde3 100644
--- a/code/game/mecha/mecha.dm
+++ b/code/game/mecha/mecha.dm
@@ -11,6 +11,7 @@
density = 1 //Dense. To raise the heat.
opacity = 1 ///opaque. Menacing.
anchored = 1 //no pulling around.
+ unacidable = 1 //and no deleting hoomans inside
layer = MOB_LAYER //icon draw layer
var/can_move = 1
var/mob/living/carbon/human/occupant = null
diff --git a/code/game/objects/alien/acid.dm b/code/game/objects/alien/acid.dm
index eb7ae64bf3..ceeb9e2634 100644
--- a/code/game/objects/alien/acid.dm
+++ b/code/game/objects/alien/acid.dm
@@ -1,10 +1,15 @@
/obj/alien/acid/proc/tick()
ticks += 1
+ if(target.unacidable)
+ del(src)
+ return
for(var/mob/O in hearers(src, null))
O.show_message("\green [src.target] sizzles and begins to melt under the bubbling mess of acid!", 1)
if(prob(ticks*10))
for(var/mob/O in hearers(src, null))
O.show_message("\green [src.target] collapses under its own weight into a puddle of goop and undigested debris!", 1)
+// if(target.occupant) //I tried to fix mechas-with-humans-getting-deleted. Made them unacidable for now.
+// target.ex_act(1)
del(target)
del(src)
return
diff --git a/code/game/objects/alien/defines.dm b/code/game/objects/alien/defines.dm
index abed6e6cc6..528e1e6c95 100644
--- a/code/game/objects/alien/defines.dm
+++ b/code/game/objects/alien/defines.dm
@@ -2,6 +2,7 @@
name = "alien thing"
desc = "theres something alien about this"
icon = 'alien.dmi'
+ unacidable = 1 //alien acid don't melts alien things...
/obj/alien/egg
desc = "It looks like a weird egg"
@@ -38,6 +39,7 @@
density = 1
opacity = 1
anchored = 1
+ unacidable = 0 //...except for resin "wall" since it can block way.
var/health = 20
diff --git a/code/game/objects/lamarr.dm b/code/game/objects/lamarr.dm
index 65aae69bd1..884f8cc327 100644
--- a/code/game/objects/lamarr.dm
+++ b/code/game/objects/lamarr.dm
@@ -5,6 +5,7 @@
desc = "A glass lab container for storing interesting creatures."
density = 1
anchored = 1
+ unacidable = 1
var/health = 30
var/occupied = 1
var/destroyed = 0
diff --git a/code/game/objects/livestock.dm b/code/game/objects/livestock.dm
index 0456621e0d..a4eeb01572 100644
--- a/code/game/objects/livestock.dm
+++ b/code/game/objects/livestock.dm
@@ -7,6 +7,7 @@
layer = 5.0
density = 1
anchored = 0
+ unacidable = 1
var/state = 0 //0 = null, 1 = attack, 2 = idle
diff --git a/code/modules/mob/living/carbon/alien/humanoid/alien_powers.dm b/code/modules/mob/living/carbon/alien/humanoid/alien_powers.dm
index 710ba852cf..3dbc8a833a 100644
--- a/code/modules/mob/living/carbon/alien/humanoid/alien_powers.dm
+++ b/code/modules/mob/living/carbon/alien/humanoid/alien_powers.dm
@@ -281,7 +281,7 @@ Also perhaps only queens can do that?
O.show_message("You hear something crawling trough the ventilation pipes.")
spawn(travel_time)
- if(target_vent.welded)//the went can be welded while alien scrolled through the list or travelled.
+ if(target_vent.welded)//the vent can be welded while alien scrolled through the list or travelled.
target_vent = vent_found //travel back. No additional time required.
src << "\red The vent you were heading to appears to be welded."
src.loc = target_vent.loc
@@ -294,18 +294,21 @@ Also perhaps only queens can do that?
set category = "Alien"
if(src.stat)
- src << "You must be concious to do this."
+ src << "You must be concious to do this"
return
+
if(!istype(O, /obj))
return
+
+ if(O.unacidable) //noize, don't fucking touch this and learn, why algorithms must be universal when possible (here it IS possible)
+ src << "You cannot spit acid over this."
+ return //also, if you want list of unacidables - search("unacidable = 1". all files), key_press(F3).
+
/*if(range(O, src) > 1)
src << "That's too far away!"
return*/
if(src.toxloss < 200)
src << "You don't have enough plasma."
- return
- if(istype(O, /obj/hud)||istype(O, /obj/machinery/shield)||istype(O, /obj/machinery/shieldwall)||istype(O, /obj/machinery/the_singularity)||istype(O, /obj/portal)||istype(O, /obj/rune)||istype(O, /obj/marker)||istype(O, /obj/bhole)||istype(O, /obj/livestock)||istype(O, /obj/creature)||istype(O, /obj/alien)||istype(O, /obj/machinery/containment_field))
- src << "Can't destroy that object." //So you're not destroying black holes while you sizzle acid, dawg /N
else
src.toxloss -= 200
var/obj/alien/acid/A = new(O.loc)