Mothership grey clothing now melts from water (canon) (#33093)

* acidible to dissolvable

* compiles and works

* move message to acid_melt proc

* add probability

* fix some alien shitcode

* Update mothership_lab.dm

* Update supplypacks.dm
This commit is contained in:
adacovsk
2022-08-22 19:39:16 -04:00
committed by GitHub
parent 78967aa780
commit bcf586a0ff
53 changed files with 156 additions and 127 deletions

View File

@@ -548,7 +548,7 @@ var/list/cheartstopper = list(/*"potassium_chloride",*/ CHEESYGLOOP) //this stop
#define IMPEDREZENES list(IMPEDREZENE, HYOSCYAMINE)
#define LEXORINS list(LEXORIN, CORIAMYRTIN)
#define DEXALINS list(DEXALIN, THYMOL)
#define PETRITRICINCURES list(SACID, PACID, FORMIC_ACID, PACID, PHENOL, ACIDSPIT, ACIDTEA)
#define ACIDS list(SACID, PACID, FORMIC_ACID, PACID, PHENOL, ACIDSPIT, ACIDTEA)
#define WATERS list(WATER, HOLYWATER, ICE)
#define CORES list(SOFTCORES, MEDCORES)
#define ALLNANITES list(NANITES, AUTISTNANITES)

View File

@@ -23,7 +23,7 @@
name = "Acid-Proof Air Injector"
desc = "Has a valve and pump attached to it. This one has an acid proof coating."
/obj/machinery/atmospherics/unary/outlet_injector/acid_proof/acidable()
/obj/machinery/atmospherics/unary/outlet_injector/acid_proof/dissolvable()
return 0
/obj/machinery/atmospherics/unary/outlet_injector/update_icon()

View File

@@ -627,5 +627,5 @@
qdel(objects)
src.screen = null
/obj/abstract/screen/acidable()
/obj/abstract/screen/dissolvable()
return 0

View File

@@ -68,7 +68,7 @@
return
//nuh-uh
/obj/structure/cult/acidable()
/obj/structure/cult/dissolvable()
return 0
/obj/structure/cult/ex_act(var/severity)

View File

@@ -462,7 +462,7 @@
to_chat(H, "<span class='warning'>Your helmet protects you from the holy water!</span>")
return
if(H.acidable())
if(H.dissolvable())
if(prob(15) && volume >= 30)
var/datum/organ/external/head/head_organ = H.get_organ(LIMB_HEAD)
if(head_organ)
@@ -486,7 +486,7 @@
to_chat(H, "<span class='warning'>You are doused with a freezing liquid. Your vampiric current powers protect you!</span>")
smitecounter += volume * 0.4
else
if(H.acidable())
if(H.dissolvable())
H.take_organ_damage(min(15, volume * 2))
smitecounter += 5

View File

@@ -2809,4 +2809,4 @@ var/list/all_supply_groups = list("Supplies","Clothing","Security","Hospitality"
cost = 20
containertype = /obj/structure/stackopacks
containername = "\improper Meat Fridge stack of packs"
group = "Vending Machine packs"
group = "Vending Machine packs"

View File

@@ -512,7 +512,7 @@ its easier to just keep the beam vertical.
return ex_act(severity, child)
/atom/proc/can_mech_drill()
return acidable()
return dissolvable()
/atom/proc/blob_act(destroy = 0, var/obj/effect/blob/source = null)
if(flags & INVULNERABLE)
@@ -854,12 +854,9 @@ its easier to just keep the beam vertical.
/atom/proc/update_icon()
/atom/proc/acidable()
/atom/proc/dissolvable()
return 0
/atom/proc/isacidhardened()
return FALSE
/atom/proc/salt_act()
return

View File

@@ -332,8 +332,8 @@ var/list/nuclear_bombs = list()
reset_vars_after_duration(resettable_vars, duration)
/obj/machinery/nuclearbomb/isacidhardened() // Requires Aliens to channel acidspit on the nuke.
return TRUE
/obj/machinery/nuclearbomb/dissolvable()
return FALSE
/obj/item/weapon/disk/nuclear
name = "nuclear authentication disk"

View File

@@ -31,7 +31,7 @@ var/list/pinpointerpinpointer_list = list()
..()
/obj/item/weapon/pinpointer/acidable()
/obj/item/weapon/pinpointer/dissolvable()
return FALSE
/obj/item/weapon/pinpointer/attack_self()

View File

@@ -285,7 +285,7 @@
playsound(src, soundeffect, 100, 1)
return ..()
/obj/machinery/door/mineral/resin/acidable()
/obj/machinery/door/mineral/resin/dissolvable()
return 0
/obj/machinery/door/mineral/hive

View File

@@ -169,7 +169,7 @@
var/frequency = 1449 //seems to be the frequency used for all the controllers on /vg/ so why not make it default
var/datum/radio_frequency/radio_connection
/obj/machinery/embedded_controller/radio/acidable()
/obj/machinery/embedded_controller/radio/dissolvable()
return 0
/obj/machinery/embedded_controller/radio/initialize()

View File

@@ -11,7 +11,7 @@
maxHealth = 200
health = 200 //The shield can only take so much beating (prevents perma-prisons)
/obj/machinery/shield/acidable()
/obj/machinery/shield/dissolvable()
return 0
/obj/machinery/shield/New()
@@ -526,7 +526,7 @@
var/obj/machinery/shieldwallgen/gen_primary
var/obj/machinery/shieldwallgen/gen_secondary
/obj/machinery/shieldwall/acidable()
/obj/machinery/shieldwall/dissolvable()
return 0
/obj/machinery/shieldwall/can_overload()

View File

@@ -2078,7 +2078,7 @@
return 1
return 0
/obj/mecha/acidable()
/obj/mecha/dissolvable()
return 0
/obj/mecha/beam_connect(var/obj/effect/beam/B)

View File

@@ -14,7 +14,7 @@ would spawn and follow the beaker, even if it is carried or thrown.
w_type=NOT_RECYCLABLE
pass_flags = PASSTABLE|PASSGRILLE|PASSMACHINE
/obj/effect/acidable()
/obj/effect/dissolvable()
return 0
/obj/effect/water

View File

@@ -121,10 +121,10 @@
return return_cover_protection(body_parts_covered) * (1 - heat_conductivity)
/obj/item/acid_melt()
if (acidable())
var/obj/effect/decal/cleanable/molten_item/I = new/obj/effect/decal/cleanable/molten_item(loc)
I.desc = "Looks like this was \a [src] some time ago."
qdel(src)
var/obj/effect/decal/cleanable/molten_item/I = new/obj/effect/decal/cleanable/molten_item(loc)
I.desc = "Looks like this was \a [src] some time ago."
visible_message("<span class='warning'>\The [src] melts.</span>")
qdel(src)
/obj/item/hide(i)
if(isturf(loc))

View File

@@ -44,5 +44,5 @@
else
to_chat(user, "<span class='notice'>You try to remove \the [src]'s cap, but it won't budge.</span>")
/obj/item/changeling_vial/acidable()
/obj/item/changeling_vial/dissolvable()
return 0

View File

@@ -597,8 +597,11 @@ a {
/obj/proc/give_tech_list()
return null
/obj/acidable()
return !(flags & INVULNERABLE)
/obj/dissolvable()
if (flags & INVULNERABLE)
return FALSE
else
return PACID
/obj/proc/t_scanner_expose()
//don't reveal docking ports or spawns

View File

@@ -243,7 +243,7 @@
"You gently run your hands over \the [src] in appreciation of its contents.", \
"You hear someone streaking glass with their greasy hands.")
/obj/structure/displaycase/acidable()
/obj/structure/displaycase/dissolvable()
return 0

View File

@@ -86,7 +86,7 @@
update_icon()
return
/obj/structure/lamarr/acidable()
/obj/structure/lamarr/dissolvable()
return 0
/obj/item/clothing/mask/facehugger/lamarr

View File

@@ -109,7 +109,7 @@
if(!gcDestroyed && is_locking(/datum/locking_category/buckle/bed/nest))
stabilize()
/obj/structure/bed/nest/acidable()
/obj/structure/bed/nest/dissolvable()
return 0
#undef ALIEN_NEST_LOCKED_Y_OFFSET

View File

@@ -662,5 +662,5 @@
bus.remove_HUD(M)
M.unregister_event(/event/living_login, bus, /obj/structure/bed/chair/vehicle/adminbus/proc/add_HUD)
/obj/structure/bed/chair/vehicle/adminbus/acidable()
/obj/structure/bed/chair/vehicle/adminbus/dissolvable()
return 0

View File

@@ -465,8 +465,11 @@
if(H.foot_impact(src,rand(5,7)))
to_chat(H, "<span class='userdanger'>Ouch! That hurts!</span>")
/turf/simulated/wall/acidable()
return !(flags & INVULNERABLE)
/turf/simulated/wall/dissolvable()
if(flags & INVULNERABLE)
return FALSE
else
return PACID
/turf/simulated/wall/clockworkify()
ChangeTurf(/turf/simulated/wall/mineral/clockwork)

View File

@@ -399,7 +399,7 @@
update_icon()
return
/turf/simulated/wall/r_wall/acidable()
/turf/simulated/wall/r_wall/dissolvable()
return 0
#undef WALLCOMPLETED

View File

@@ -71,5 +71,5 @@
species_fit = list(INSECT_SHAPED)
armor = list(melee = 40, bullet = 25, laser = 30, energy = 25, bomb = 15, bio = 20, rad = 20)
/obj/item/clothing/head/leather/xeno/acidable()
/obj/item/clothing/head/leather/xeno/dissolvable()
return 0

View File

@@ -192,7 +192,7 @@
/obj/item/clothing/mask/gas/clown_hat/stickymagic
canremove = 0
/obj/item/clothing/mask/gas/clown_hat/stickymagic/acidable()
/obj/item/clothing/mask/gas/clown_hat/stickymagic/dissolvable()
return 0
/obj/item/clothing/mask/gas/clown_hat/wiz
@@ -254,7 +254,7 @@
canremove = 0
muted = 1
/obj/item/clothing/mask/gas/mime/stickymagic/acidable()
/obj/item/clothing/mask/gas/mime/stickymagic/dissolvable()
return 0
/obj/item/clothing/mask/gas/monkeymask

View File

@@ -78,5 +78,5 @@ var/list/has_been_shade = list()
to_chat(H, "<span class='sinister'>Oh joy! [M.real_name]'s decided to join the party!</span>")
to_chat(S, "<span class='sinister'>You have been given form by the power of the happiest mask! Go forth and carry out [H.real_name]'s bidding with joy!</span>")
/obj/item/clothing/mask/happy/acidable()
/obj/item/clothing/mask/happy/dissolvable()
return 0

View File

@@ -24,7 +24,7 @@
/obj/item/clothing/mask/explosive_collar/update_icon()
icon_state = primed ? "bombcollaron" : "bombcollaroff"
/obj/item/clothing/mask/explosive_collar/acidable()
/obj/item/clothing/mask/explosive_collar/dissolvable()
return FALSE
/obj/item/clothing/mask/explosive_collar/proc/explode()

View File

@@ -74,7 +74,7 @@
visible_message("<span class='info'>\The [src] crumbles into dust...</span>")
qdel(src)
/obj/item/clothing/mask/stone/acidable()
/obj/item/clothing/mask/stone/dissolvable()
return 0
/obj/item/clothing/mask/stone/infinite //this mask can be used any number of times

View File

@@ -304,7 +304,7 @@
canremove = 0
wizard_garb = 1
/obj/item/clothing/shoes/clown_shoes/stickymagic/acidable()
/obj/item/clothing/shoes/clown_shoes/stickymagic/dissolvable()
return 0
/obj/item/clothing/shoes/clown_shoes/slippy

View File

@@ -679,6 +679,9 @@
species_restricted = list(GREY_SHAPED)
species_fit = list(GREY_SHAPED)
/obj/item/clothing/head/helmet/space/grey/dissolvable()
return FALSE
/obj/item/clothing/suit/space/grey
name = "explorer pressure suit"
icon_state = "grey-pressure-suit"
@@ -690,6 +693,9 @@
species_restricted = list(GREY_SHAPED)
species_fit = list(GREY_SHAPED)
/obj/item/clothing/suit/space/grey/dissolvable()
return FALSE
//Martian Fishbowl

View File

@@ -11,6 +11,9 @@
head_type = /obj/item/clothing/head/helmet/space/rig/grey
initial_modules = list(/obj/item/rig_module/rad_shield)
/obj/item/clothing/suit/space/rig/grey/dissolvable()
return WATER
/obj/item/clothing/head/helmet/space/rig/grey
name = "worker pressure helmet"
desc = " A grey laborer's pressure helmet. It protects the cranium from common work hazards in vacuum. Safety first!"
@@ -21,6 +24,9 @@
species_restricted = list(GREY_SHAPED)
species_fit = list(GREY_SHAPED)
/obj/item/clothing/head/helmet/space/rig/grey/dissolvable()
return WATER
//Researcher//
@@ -32,6 +38,9 @@
armor = list(melee = 30, bullet = 5, laser = 20, energy = 5, bomb = 40, bio = 100, rad = 40)
head_type = /obj/item/clothing/head/helmet/space/rig/grey/researcher
/obj/item/clothing/suit/space/rig/grey/researcher/dissolvable()
return WATER
/obj/item/clothing/head/helmet/space/rig/grey/researcher
name = "researcher pressure helmet"
desc = "A grey researcher's pressure helmet. The brightest minds will lead the way!"
@@ -40,6 +49,9 @@
_color = "grey_researcher_dome"
armor = list(melee = 30, bullet = 5, laser = 20, energy = 5, bomb = 40, bio = 100, rad = 40)
/obj/item/clothing/head/helmet/space/rig/grey/researcher/dissolvable()
return WATER
//Soldier//
/obj/item/clothing/suit/space/rig/grey/soldier
@@ -52,6 +64,9 @@
allowed = list(/obj/item/weapon/tank, /obj/item/weapon/handcuffs, /obj/item/weapon/gun/energy/smalldisintegrator, /obj/item/weapon/gun/energy/heavydisintegrator)
head_type = /obj/item/clothing/head/helmet/space/rig/grey/soldier
/obj/item/clothing/suit/space/rig/grey/soldier/dissolvable()
return WATER
/obj/item/clothing/head/helmet/space/rig/grey/soldier
name = "soldier pressure helmet"
desc = "A grey soldier's pressure helmet. All enemies of the mothership must be disintegrated!"
@@ -60,6 +75,9 @@
_color = "grey_soldier_dome"
armor = list(melee = 40, bullet = 15, laser = 50, energy = 15, bomb = 30, bio = 100, rad = 20)
/obj/item/clothing/head/helmet/space/rig/grey/soldier/dissolvable()
return WATER
//Leader//
/obj/item/clothing/suit/space/rig/grey/leader
@@ -72,8 +90,8 @@
head_type = /obj/item/clothing/head/helmet/space/rig/grey/leader
clothing_flags = PLASMAGUARD
/obj/item/clothing/suit/space/rig/grey/leader/acidable() // A grey leader's suit melted by acid? I imagine maybe it happened once and they vowed to never let it happen again
return 0
/obj/item/clothing/suit/space/rig/grey/leader/dissolvable() // A grey leader's suit melted by acid? I imagine maybe it happened once and they vowed to never let it happen again
return FALSE
/obj/item/clothing/head/helmet/space/rig/grey/leader
name = "Administrator Pressure Helmet"
@@ -84,5 +102,5 @@
armor = list(melee = 50, bullet = 25, laser = 70, energy = 25, bomb = 40, bio = 100, rad = 50)
clothing_flags = PLASMAGUARD
/obj/item/clothing/head/helmet/space/rig/grey/leader/acidable() // A grey leader's suit melted by acid? I imagine maybe it happened once and they vowed to never let it happen again
return 0
/obj/item/clothing/head/helmet/space/rig/grey/leader/dissolvable() // A grey leader's suit melted by acid? I imagine maybe it happened once and they vowed to never let it happen again
return FALSE

View File

@@ -434,7 +434,7 @@
armor = list(melee = 60, bullet = 50, laser = 50, energy = 50, bomb = 80, bio = 100, rad = 100)
canremove = 0
/obj/item/clothing/suit/space/plasmaman/sith/acidable()
/obj/item/clothing/suit/space/plasmaman/sith/dissolvable()
return 0
//Unlike the suit, the helmet can be taken off
@@ -446,5 +446,5 @@
desc = "A menacing helmet that protects the wearer from harm, fit for a plasmaman."
armor = list(melee = 60, bullet = 50, laser = 50, energy = 50, bomb = 80, bio = 100, rad = 100)
/obj/item/clothing/head/helmet/space/plasmaman/sith/acidable()
/obj/item/clothing/head/helmet/space/plasmaman/sith/dissolvable()
return 0

View File

@@ -204,7 +204,7 @@
species_restricted = null
/obj/item/clothing/head/helmet/space/rig/wizard/acidable()
/obj/item/clothing/head/helmet/space/rig/wizard/dissolvable()
return 0
/obj/item/clothing/suit/space/rig/wizard
@@ -224,7 +224,7 @@
head_type = /obj/item/clothing/head/helmet/space/rig/wizard
allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank,/obj/item/weapon/teleportation_scroll,/obj/item/weapon/gun/energy/staff)
/obj/item/clothing/suit/space/rig/wizard/acidable()
/obj/item/clothing/suit/space/rig/wizard/dissolvable()
return 0
/obj/item/clothing/head/helmet/space/rig/wizard/lich_king

View File

@@ -50,5 +50,5 @@
item_state = "suit_leather_xeno"
armor = list(melee = 40, bullet = 25, laser = 30, energy = 25, bomb = 15, bio = 20, rad = 20)
/obj/item/clothing/suit/leather/xeno/acidable()
/obj/item/clothing/suit/leather/xeno/dissolvable()
return 0

View File

@@ -695,12 +695,12 @@
return TRUE
var/water_value = 0
if(!C.reagents.has_any_reagents(PETRITRICINCURES) && C.reagents.has_any_reagents(WATERS))
if(!C.reagents.has_any_reagents(ACIDS) && C.reagents.has_any_reagents(WATERS))
acidic = FALSE
water_value += C.reagents.get_reagent_amount(WATER)
water_value += C.reagents.get_reagent_amount(HOLYWATER) *1.1
water_value += C.reagents.get_reagent_amount(ICE) * 0.80
else if(C.reagents.has_any_reagents(PETRITRICINCURES) && !C.reagents.has_any_reagents(WATERS))
else if(C.reagents.has_any_reagents(ACIDS) && !C.reagents.has_any_reagents(WATERS))
acidic = TRUE
water_value += C.reagents.get_reagent_amount(PACID) * 2
water_value += C.reagents.get_reagent_amount(SACID)

View File

@@ -196,7 +196,7 @@ Doesn't work on other aliens/AI.*/
spell_flags = IGNORESPACE|IGNOREDENSE|NODUPLICATE
full_list = list("Resin Door" = /obj/machinery/door/mineral/resin,"Resin Wall" = /obj/effect/alien/resin/wall,"Resin Membrane" = /obj/effect/alien/resin/membrane,"Resin Nest" = /obj/structure/bed/nest)
/spell/alienacid
/spell/corrosive_acid
name = "Corrosive Acid"
desc = "Drench an object in acid, destroying it over time."
user_type = USER_TYPE_XENOMORPH
@@ -213,42 +213,19 @@ Doesn't work on other aliens/AI.*/
range = 1
/spell/alienacid/is_valid_target(var/atom/target, mob/user)
return is_valid_target_to_acid(target,user,range)
/proc/is_valid_target_to_acid(var/atom/target, mob/user,var/range=1)
/spell/corrosive_acid/is_valid_target(var/atom/target, mob/user)
var/range = 1
if(get_dist(user, target) > range)
to_chat(user, "<span class='alien'>Target is too far away!</span>")
return FALSE
if(target.isacidhardened())
if(!do_after(user,target,3 SECONDS))
to_chat(user, "<span class='alien'>You have to stay next to the object to acid it!</span>")
return FALSE
return TRUE
if(!ismob(target) && target.acidable())
if(!ismob(target) && target.dissolvable() == PACID)
return TRUE
to_chat(user, "<span class='alien'>You cannot dissolve this object.</span>")
return FALSE
/spell/alienacid/cast(list/targets, mob/user)
acidify(targets[1], user)
/mob/living/carbon/alien/humanoid/proc/corrosive_acid(atom/O as obj|turf in oview(1)) //If they right click to corrode, an error will flash if its an invalid target./N
set name = "Corrosive Acid (200)"
set desc = "Drench an object in acid, destroying it over time."
set category = null
if(ismob(O)) //This sort of thing may be possible by manually calling the verb, not sure
return
if(powerc(200))
if(is_valid_target_to_acid(O, usr))
acidify(O, usr)
AdjustPlasma(-200)
/proc/acidify(atom/O, mob/user)
new /obj/effect/alien/acid(get_turf(O), O)
user.visible_message("<span class='alien'>\The [user] vomits globs of vile stuff all over [O]. It begins to sizzle and melt under the bubbling mess of acid!</span>")
/spell/corrosive_acid/cast(list/targets, mob/user)
user.visible_message("<span class='alien'>\The [user] vomits globs of vile stuff all over [targets[1]]! It begins to sizzle and melt under the bubbling mess of acid!</span>")
new /obj/effect/alien/acid(get_turf(targets[1]), targets[1])
/spell/aoe_turf/alienregurgitate
name = "Regurgitate"

View File

@@ -22,6 +22,5 @@
/mob/living/carbon/alien/humanoid/drone/add_spells_and_verbs()
..()
add_spell(new /spell/aoe_turf/conjure/choice/alienresin, "alien_spell_ready", /obj/abstract/screen/movable/spell_master/alien)
add_spell(new /spell/alienacid, "alien_spell_ready", /obj/abstract/screen/movable/spell_master/alien)
add_spell(new /spell/aoe_turf/evolve/drone, "alien_spell_ready", /obj/abstract/screen/movable/spell_master/alien)
verbs.Add(/mob/living/carbon/alien/humanoid/proc/corrosive_acid)
add_spell(new /spell/corrosive_acid, "alien_spell_ready", /obj/abstract/screen/movable/spell_master/alien)
add_spell(new /spell/aoe_turf/evolve/drone, "alien_spell_ready", /obj/abstract/screen/movable/spell_master/alien)

View File

@@ -22,5 +22,4 @@
/mob/living/carbon/alien/humanoid/sentinel/add_spells_and_verbs()
..()
add_spell(new /spell/targeted/projectile/alienneurotoxin, "alien_spell_ready", /obj/abstract/screen/movable/spell_master/alien)
add_spell(new /spell/alienacid, "alien_spell_ready", /obj/abstract/screen/movable/spell_master/alien)
verbs.Add(/mob/living/carbon/alien/humanoid/proc/corrosive_acid)
add_spell(new /spell/corrosive_acid, "alien_spell_ready", /obj/abstract/screen/movable/spell_master/alien)

View File

@@ -34,10 +34,9 @@
/mob/living/carbon/alien/humanoid/queen/add_spells_and_verbs()
..()
add_spell(new /spell/aoe_turf/conjure/alienegg, "alien_spell_ready", /obj/abstract/screen/movable/spell_master/alien)
add_spell(new /spell/alienacid, "alien_spell_ready", /obj/abstract/screen/movable/spell_master/alien)
add_spell(new /spell/corrosive_acid, "alien_spell_ready", /obj/abstract/screen/movable/spell_master/alien)
add_spell(new /spell/targeted/projectile/alienneurotoxin, "alien_spell_ready", /obj/abstract/screen/movable/spell_master/alien)
add_spell(new /spell/aoe_turf/conjure/choice/alienresin, "alien_spell_ready", /obj/abstract/screen/movable/spell_master/alien)
verbs.Add(/mob/living/carbon/alien/humanoid/proc/corrosive_acid)
verbs -= /mob/living/carbon/alien/verb/ventcrawl
/mob/living/carbon/alien/humanoid/queen/large

View File

@@ -396,7 +396,7 @@
processing_objects.Remove(src)
icon_state = "[initial(icon_state)]_dead"
stat = DEAD
sterile = TRUE //Dead huggers can't make people pregnant, duh. This also makes them acidable to avoid acid cheesers AND prevents people from using dead huggers to avoid getting hugged.
sterile = TRUE //Dead huggers can't make people pregnant, duh. This also makes them dissolvable to avoid acid cheesers AND prevents people from using dead huggers to avoid getting hugged.
visible_message("<span class='danger'>\The [src] curls up into a ball!</span>")
@@ -429,8 +429,11 @@
return TRUE
/obj/item/clothing/mask/facehugger/acidable()
return sterile
/obj/item/clothing/mask/facehugger/dissolvable()
if(sterile)
return PACID
else
return FALSE

View File

@@ -576,5 +576,8 @@ emp_act
apply_damage(run_armor_absorb(affecting, "melee", rand(30,40)), BRUTE, affecting, run_armor_check(affecting, "melee"))
/mob/living/carbon/human/acidable()
return !(species && species.anatomy_flags & ACID4WATER)
/mob/living/carbon/human/dissolvable()
if(species && species.anatomy_flags & ACID4WATER)
return WATER
else
return PACID

View File

@@ -879,7 +879,7 @@
canremove = 0
siemens_coefficient = 0
/obj/item/clothing/mask/gas/golem/acidable()
/obj/item/clothing/mask/gas/golem/dissolvable()
return 0
/obj/item/clothing/gloves/golem
@@ -904,7 +904,7 @@
armor = list(melee = 80, bullet = 20, laser = 20, energy = 10, bomb = 0, bio = 0, rad = 0)
heat_conductivity = SPACESUIT_HEAT_CONDUCTIVITY
/obj/item/clothing/head/space/golem/acidable()
/obj/item/clothing/head/space/golem/dissolvable()
return 0
*/
/obj/effect/golem_rune

View File

@@ -1910,8 +1910,8 @@ Use this proc preferably at the end of an equipment loadout
mind.heard_before[M.name] = M.mind
M.heard_by |= mind
/mob/acidable()
return 1
/mob/dissolvable()
return PACID
/mob/proc/get_view_range()
if(client)

View File

@@ -77,5 +77,5 @@
FG2 = master2
return 1
/obj/machinery/containment_field/acidable()
/obj/machinery/containment_field/dissolvable()
return 0

View File

@@ -730,7 +730,7 @@ var/list/obj/machinery/singularity/white_hole_candidates
/obj/machinery/singularity/kick_act(mob/user)
consume(user)
/obj/machinery/singularity/acidable()
/obj/machinery/singularity/dissolvable()
return 0
/obj/machinery/singularity/Move(NewLoc, Dir = 0, step_x = 0, step_y = 0, glide_size_override = 0)

View File

@@ -125,5 +125,5 @@
update_icon()
return 1
/obj/item/weapon/gun/energy/advdisintegrator/acidable() // Can't be destroyed by polyacid
/obj/item/weapon/gun/energy/advdisintegrator/dissolvable() // Can't be destroyed by polyacid
return 0

View File

@@ -837,7 +837,7 @@ var/list/impact_master = list()
if(ismob(A) || isturf(A) || isobj(A))
impact = get_hit_atom(A)
/obj/item/projectile/acidable()
/obj/item/projectile/dissolvable()
return 0
/obj/item/projectile/proc/launch_at(var/atom/target,var/tar_zone = "chest",var/atom/curloc = get_turf(src),var/from = null,var/variance_angle = 0) // doot doot shitcode alert

View File

@@ -376,7 +376,7 @@
anchored = 1
layer = BELOW_PROJECTILE_LAYER
/obj/structure/ricochet_trail/acidable()
/obj/structure/ricochet_trail/dissolvable()
return 0
/obj/structure/ricochet_trail/New()
@@ -393,7 +393,7 @@
anchored = 1
layer = ABOVE_PROJECTILE_LAYER
/obj/structure/ricochet_bump/acidable()
/obj/structure/ricochet_bump/dissolvable()
return 0
/obj/structure/ricochet_bump/New()

View File

@@ -788,6 +788,8 @@
else if(O.molten) // Molten shit.
O.molten=0
O.solidify()
else if(O.dissolvable() == WATER && prob(15))
O.acid_melt()
/datum/reagent/water/reaction_animal(var/mob/living/simple_animal/M, var/method=TOUCH, var/volume)
..()
@@ -1713,11 +1715,10 @@
specheatcap = 1.38
/datum/reagent/sacid/on_mob_life(var/mob/living/M)
if(..())
return 1
if(M.acidable())
if(M.dissolvable() == PACID) //not PACID but it'll do
M.adjustFireLoss(REM)
M.take_organ_damage(0, REM)
@@ -1738,14 +1739,14 @@
targeted_zones.Remove(part)
break
if(covered)
if(C.acidable() && prob(15))
if(C.dissolvable() == PACID && prob(15)) //not PACID but it will do
to_chat(H, "<span class='warning'>Your [C.name] melts away but protects you from the acid!</span>")
H.u_equip(C,0)
qdel(C)
else
to_chat(H, "<span class='warning'>Your [C.name] protects you from the acid!</span>")
if(M.acidable() && targeted_zones.len)
if(M.dissolvable() == PACID && targeted_zones.len) //not PACID but it will do
if(prob(15) && ishuman(M) && volume >= 30)
var/mob/living/carbon/human/H = M
var/screamed = FALSE
@@ -1764,11 +1765,10 @@
M.take_organ_damage(min(15, volume * 2)) //uses min() and volume to make sure they aren't being sprayed in trace amounts (1 unit != insta rape) -- Doohl
/datum/reagent/sacid/reaction_obj(var/obj/O, var/volume)
if(..())
return 1
if(!O.acidable())
if(!(O.dissolvable() == PACID)) //not PACID but it will do
return
if((istype(O,/obj/item) || istype(O,/obj/effect/glowshroom)) && prob(10))
@@ -1818,14 +1818,14 @@
targeted_zones.Remove(part)
break
if(covered)
if(C.acidable() && prob(15))
if(C.dissolvable() == PACID && prob(15))
to_chat(H, "<span class='warning'>Your [C.name] melts away but protects you from the acid!</span>")
H.u_equip(C,0)
qdel(C)
else
to_chat(H, "<span class='warning'>Your [C.name] protects you from the acid!</span>")
if(M.acidable() && targeted_zones.len) //I think someone doesn't know what this does
if(M.dissolvable() == PACID && targeted_zones.len) //I think someone doesn't know what this does
if(ishuman(M))
var/mob/living/carbon/human/H = M
var/screamed = FALSE
@@ -1844,15 +1844,13 @@
M.take_organ_damage(min(15, volume * 4)) //Same deal as sulphuric acid
/datum/reagent/pacid/reaction_obj(var/obj/O, var/volume)
if(..())
return 1
if(!O.acidable())
if(!(O.dissolvable() == PACID))
return
if((istype(O,/obj/item) || istype(O,/obj/effect/glowshroom)))
O.visible_message("<span class='warning'>\The [O] melts.</span>")
O.acid_melt()
else if(istype(O,/obj/effect/plantsegment))
var/obj/effect/decal/cleanable/molten_item/I = new/obj/effect/decal/cleanable/molten_item(get_turf(O))
@@ -9191,7 +9189,7 @@ var/global/list/tonio_doesnt_remove=list("tonio", "blood")
if(volume >= min_to_start && !is_being_petrified)
is_being_petrified = TRUE
if(is_being_petrified)
if(holder.has_any_reagents(PETRITRICINCURES))
if(holder.has_any_reagents(ACIDS))
to_chat(M, "<span class='notice'>You feel a wave of relief as your muscles loosen up.</span>")
C.pain_shock_stage = max(0, C.pain_shock_stage - 300)
is_being_petrified = FALSE
@@ -9473,7 +9471,7 @@ var/global/list/tonio_doesnt_remove=list("tonio", "blood")
if(..())
return 1
if(!O.acidable())
if(!(O.dissolvable() == PACID))
return
if(istype(O,/obj/structure/table))

View File

@@ -392,7 +392,7 @@
visible_message("<span class='warning'>The bucket's content spills on [src]</span>")
reagents.clear_reagents()
/obj/item/weapon/reagent_containers/glass/bucket/acidable()
/obj/item/weapon/reagent_containers/glass/bucket/dissolvable()
var/mob/living/carbon/human/H = get_holder_of_type(src,/mob/living/carbon/human)
if(H && src == H.head)
return 0

View File

@@ -619,7 +619,7 @@
new /obj/spacepod/random(get_turf(src))
qdel(src)
/obj/spacepod/acidable()
/obj/spacepod/dissolvable()
return 0
/obj/spacepod/proc/move_into_pod(var/mob/living/L)

View File

@@ -95,7 +95,7 @@ var/global/list/invoked_emotions = list()
/obj/item/weapon/paper/emotion_invoker/canfold(mob/user)
return FALSE
/obj/item/weapon/paper/emotion_invoker/acidable()
/obj/item/weapon/paper/emotion_invoker/dissolvable()
return FALSE
/obj/item/weapon/paper/emotion_invoker/ashify_item(mob/user)

View File

@@ -230,6 +230,9 @@
species_restricted = list("exclude", VOX_SHAPED, INSECT_SHAPED) // Can fit humans and ayys, but not other exotic species
armor = list(melee = 50, bullet = 15, laser = 50, energy = 10, bomb = 25, bio = 0, rad = 0) // Identical to default sec helmet, but a lot more stylish!
/obj/item/clothing/head/helmet/mothership/dissolvable()
return WATER
/obj/item/clothing/head/helmet/mothership_visor
name = "MDF Visored Helmet"
icon_state = "ayy_helm_visor"
@@ -239,6 +242,9 @@
species_fit = list(GREY_SHAPED) // This one only fits ayys
armor = list(melee = 50, bullet = 15, laser = 50, energy = 10, bomb = 25, bio = 0, rad = 0) // Identical to default sec helmet, but a lot more stylish!
/obj/item/clothing/head/helmet/mothership_visor/dissolvable()
return WATER
/obj/item/clothing/head/helmet/mothership_visor_heavy
name = "MDF Heavy Helmet"
icon_state = "ayy_helm_heavy"
@@ -249,6 +255,9 @@
species_restricted = list("exclude", VOX_SHAPED, INSECT_SHAPED) // Can fit humans and ayys, but not other exotic species
armor = list(melee = 65, bullet = 30, laser = 65, energy = 15, bomb = 40, bio = 0, rad = 0)
/obj/item/clothing/head/helmet/mothership_visor_heavy/dissolvable()
return FALSE
//Ayy lmao armor vest
/obj/item/clothing/suit/armor/mothership
name = "MDF Armor"
@@ -260,6 +269,9 @@
species_restricted = list("exclude", VOX_SHAPED, INSECT_SHAPED) // Can fit humans and ayys, but not other exotic species
armor = list(melee = 50, bullet = 15, laser = 50, energy = 10, bomb = 25, bio = 0, rad = 0) // Identical to default armor vest, but a lot more stylish!
/obj/item/clothing/suit/armor/mothership/dissolvable()
return WATER
//Ayy lmao heavy armor
/obj/item/clothing/suit/armor/mothership_heavy
name = "MDF Heavy Armor"
@@ -273,6 +285,9 @@
armor = list(melee = 65, bullet = 30, laser = 65, energy = 15, bomb = 40, bio = 0, rad = 0) // Slightly better stats, but nothing too crazy
siemens_coefficient = 0.5
/obj/item/clothing/suit/armor/mothership_heavy/dissolvable()
return FALSE
//Ayy lmao soldier belt
/obj/item/weapon/storage/belt/mothership
name = "MDF belt"
@@ -304,6 +319,9 @@
"/obj/item/weapon/tank/emergency_oxygen",
)
/obj/item/weapon/storage/belt/mothership/dissolvable()
return WATER
//////////////////////////////
// AYY MISC ITEMS (Uniforms and other stuff that doesn't quite fit a "military" label)
//////////////////////////////
@@ -349,6 +367,9 @@
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 10, rad = 10)
sterility = 20
/obj/item/clothing/under/grey/grey_researcher/dissolvable()
return WATER
/obj/item/clothing/under/grey/grey_leader
name = "Administrator's Uniform"
desc = "A uniform for high-ranking mothership officials. For those who wish to command their minions while looking impeccably stylish."
@@ -358,8 +379,8 @@
armor = list(melee = 10, bullet = 0, laser = 15,energy = 5, bomb = 0, bio = 0, rad = 0)
siemens_coefficient = 0.8
/obj/item/clothing/under/grey/grey_leader/acidable() // It'll take more than acid to ruin a uniform this sharp
return 0
/obj/item/clothing/under/grey/grey_leader/dissolvable() // It'll take more than acid to ruin a uniform this sharp
return FALSE
//Ayy lmao labcoat (Same as a normal labcoat in stats, but slightly altered spritewise to look better when paired with the uniform)
/obj/item/clothing/suit/storage/labcoat/mothership
@@ -376,6 +397,9 @@
desc = "Issued, recalled post-mortem, and reissued countless times to many mothership denizens. Despite that, the boots still shine impeccably."
sterility = 75
/obj/item/clothing/shoes/jackboots/mothership/dissolvable() // It'll take more than acid to ruin a fine pair of boots like these
return WATER
/obj/item/clothing/shoes/jackboots/steeltoe/mothership_superior // Meant to be worn by ayy VIPs, like leaders and such
name = "Superior Mothership Boots"
desc = "A spotless pair of boots freshly synthesized by a mothership vat. This pair is very durable and has an exceptionally strong grip."
@@ -383,8 +407,8 @@
clothing_flags = NOSLIP
sterility = 100
/obj/item/clothing/shoes/jackboots/steeltoe/mothership_superior/acidable() // It'll take more than acid to ruin a fine pair of boots like these
return 0
/obj/item/clothing/shoes/jackboots/steeltoe/mothership_superior/dissolvable() // It'll take more than acid to ruin a fine pair of boots like these
return FALSE
//////////////////////////////
// AYY ID CARDS (Some IDs for access requirements for the vault. Also allows future coders to use them for their own projects, if they want.)
@@ -431,8 +455,8 @@
access = list(access_mothership_general, access_mothership_maintenance, access_mothership_military, access_mothership_research, access_mothership_leader)
base_access = list(access_mothership_general, access_mothership_maintenance, access_mothership_military, access_mothership_research, access_mothership_leader)
/obj/item/weapon/card/id/mothership_leader/acidable() // ID nanobots or something. This is mostly to prevent it being melted by a stray grenade in the vault crossfire
return 0
/obj/item/weapon/card/id/mothership_leader/dissolvable() // ID nanobots or something. This is mostly to prevent it being melted by a stray grenade in the vault crossfire
return FALSE
//////////////////////////////
// GREY GOO (Pill and pill bottle items for an experimental grey brain medication. More info on Chemistry-Reagents.dm)