mirror of
https://github.com/VOREStation/VOREStation.git
synced 2026-08-29 06:58:30 +01:00
Merge remote-tracking branch 'upstream/master' into kk-knockknock
This commit is contained in:
@@ -1,7 +1,6 @@
|
||||
/* Alien Effects!
|
||||
* Contains:
|
||||
* effect/alien
|
||||
* Resin
|
||||
* Weeds
|
||||
* Acid
|
||||
*/
|
||||
@@ -14,139 +13,6 @@
|
||||
desc = "theres something alien about this"
|
||||
icon = 'icons/mob/alien.dmi'
|
||||
|
||||
/*
|
||||
* Resin
|
||||
*/
|
||||
/obj/effect/alien/resin
|
||||
name = "resin"
|
||||
desc = "Looks like some kind of slimy growth."
|
||||
icon_state = "resin"
|
||||
|
||||
density = TRUE
|
||||
opacity = 1
|
||||
anchored = TRUE
|
||||
can_atmos_pass = ATMOS_PASS_NO
|
||||
var/health = 200
|
||||
//var/mob/living/affecting = null
|
||||
|
||||
/obj/effect/alien/resin/wall
|
||||
name = "resin wall"
|
||||
desc = "Purple slime solidified into a wall."
|
||||
icon_state = "resinwall" //same as resin, but consistency ho!
|
||||
|
||||
/obj/effect/alien/resin/membrane
|
||||
name = "resin membrane"
|
||||
desc = "Purple slime just thin enough to let light pass through."
|
||||
icon_state = "resinmembrane"
|
||||
opacity = 0
|
||||
health = 120
|
||||
|
||||
/obj/effect/alien/resin/New()
|
||||
..()
|
||||
var/turf/T = get_turf(src)
|
||||
T.thermal_conductivity = WALL_HEAT_TRANSFER_COEFFICIENT
|
||||
|
||||
/obj/effect/alien/resin/Destroy()
|
||||
var/turf/T = get_turf(src)
|
||||
T.thermal_conductivity = initial(T.thermal_conductivity)
|
||||
..()
|
||||
|
||||
/obj/effect/alien/resin/proc/healthcheck()
|
||||
if(health <=0)
|
||||
density = FALSE
|
||||
qdel(src)
|
||||
return
|
||||
|
||||
/obj/effect/alien/resin/bullet_act(var/obj/item/projectile/Proj)
|
||||
health -= Proj.damage
|
||||
..()
|
||||
healthcheck()
|
||||
return
|
||||
|
||||
/obj/effect/alien/resin/attack_generic(var/mob/user, var/damage, var/attack_verb)
|
||||
visible_message("<span class='danger'>[user] [attack_verb] the [src]!</span>")
|
||||
playsound(src, 'sound/effects/attackblob.ogg', 100, 1)
|
||||
user.do_attack_animation(src)
|
||||
health -= damage
|
||||
healthcheck()
|
||||
return
|
||||
|
||||
/obj/effect/alien/resin/take_damage(var/damage)
|
||||
health -= damage
|
||||
healthcheck()
|
||||
return
|
||||
|
||||
/obj/effect/alien/resin/ex_act(severity)
|
||||
switch(severity)
|
||||
if(1.0)
|
||||
health-=50
|
||||
if(2.0)
|
||||
health-=50
|
||||
if(3.0)
|
||||
if (prob(50))
|
||||
health-=50
|
||||
else
|
||||
health-=25
|
||||
healthcheck()
|
||||
return
|
||||
|
||||
/obj/effect/alien/resin/hitby(AM as mob|obj)
|
||||
..()
|
||||
for(var/mob/O in viewers(src, null))
|
||||
O.show_message("<span class='danger'>[src] was hit by [AM].</span>", 1)
|
||||
var/tforce = 0
|
||||
if(ismob(AM))
|
||||
tforce = 10
|
||||
else
|
||||
tforce = AM:throwforce
|
||||
playsound(src, 'sound/effects/attackblob.ogg', 100, 1)
|
||||
health = max(0, health - tforce)
|
||||
healthcheck()
|
||||
..()
|
||||
return
|
||||
|
||||
/obj/effect/alien/resin/attack_hand()
|
||||
usr.setClickCooldown(DEFAULT_ATTACK_COOLDOWN)
|
||||
if (HULK in usr.mutations)
|
||||
to_chat(usr, "<span class='notice'>You easily destroy the [name].</span>")
|
||||
for(var/mob/O in oviewers(src))
|
||||
O.show_message("<span class='warning'>[usr] destroys the [name]!</span>", 1)
|
||||
health = 0
|
||||
else
|
||||
|
||||
// Aliens can get straight through these.
|
||||
if(istype(usr,/mob/living/carbon))
|
||||
var/mob/living/carbon/M = usr
|
||||
if(locate(/obj/item/organ/internal/xenos/hivenode) in M.internal_organs)
|
||||
for(var/mob/O in oviewers(src))
|
||||
O.show_message("<span class='warning'>[usr] strokes the [name] and it melts away!</span>", 1)
|
||||
health = 0
|
||||
healthcheck()
|
||||
return
|
||||
|
||||
to_chat(usr, "<span class='notice'>You claw at the [name].</span>")
|
||||
for(var/mob/O in oviewers(src))
|
||||
O.show_message("<span class='warning'>[usr] claws at the [name]!</span>", 1)
|
||||
health -= rand(5,10)
|
||||
healthcheck()
|
||||
return
|
||||
|
||||
/obj/effect/alien/resin/attackby(obj/item/weapon/W as obj, mob/user as mob)
|
||||
|
||||
user.setClickCooldown(user.get_attack_speed(W))
|
||||
var/aforce = W.force
|
||||
health = max(0, health - aforce)
|
||||
playsound(src, 'sound/effects/attackblob.ogg', 100, 1)
|
||||
healthcheck()
|
||||
..()
|
||||
return
|
||||
|
||||
/obj/effect/alien/resin/CanPass(atom/movable/mover, turf/target)
|
||||
if(istype(mover) && mover.checkpass(PASSGLASS))
|
||||
return !opacity
|
||||
return !density
|
||||
|
||||
|
||||
/*
|
||||
* Weeds
|
||||
*/
|
||||
|
||||
@@ -291,7 +291,8 @@ var/global/list/semirandom_mob_spawner_decisions = list()
|
||||
/mob/living/simple_mob/vore/sect_queen = 1
|
||||
),
|
||||
list(/mob/living/simple_mob/vore/solargrub),
|
||||
list(/mob/living/simple_mob/vore/woof)
|
||||
list(/mob/living/simple_mob/vore/woof),
|
||||
list(/mob/living/simple_mob/vore/alienanimals/teppi)
|
||||
)
|
||||
|
||||
/obj/random/mob/semirandom_mob_spawner/item_to_spawn()
|
||||
@@ -405,8 +406,8 @@ var/global/list/semirandom_mob_spawner_decisions = list()
|
||||
/mob/living/simple_mob/animal/sif/shantak/leader = 1
|
||||
) = 5,
|
||||
list(/mob/living/simple_mob/animal/sif/siffet) = 5,
|
||||
list(/mob/living/simple_mob/animal/sif/tymisian) = 5
|
||||
|
||||
list(/mob/living/simple_mob/animal/sif/tymisian) = 5,
|
||||
list(/mob/living/simple_mob/vore/alienanimals/teppi) = 10
|
||||
)
|
||||
|
||||
/obj/random/mob/semirandom_mob_spawner/monster
|
||||
@@ -499,7 +500,8 @@ var/global/list/semirandom_mob_spawner_decisions = list()
|
||||
list(
|
||||
/mob/living/simple_mob/vore/oregrub = 5,
|
||||
/mob/living/simple_mob/vore/oregrub/lava = 1
|
||||
) = 15
|
||||
) = 15,
|
||||
list(/mob/living/simple_mob/vore/alienanimals/teppi) = 15
|
||||
)
|
||||
|
||||
/obj/random/mob/semirandom_mob_spawner/humanoid
|
||||
@@ -738,7 +740,8 @@ var/global/list/semirandom_mob_spawner_decisions = list()
|
||||
/mob/living/simple_mob/vore/sect_queen = 1
|
||||
) = 50,
|
||||
list(/mob/living/simple_mob/vore/solargrub) = 100,
|
||||
list(/mob/living/simple_mob/vore/woof) = 1
|
||||
list(/mob/living/simple_mob/vore/woof) = 1,
|
||||
list(/mob/living/simple_mob/vore/alienanimals/teppi) = 25
|
||||
)
|
||||
|
||||
/obj/random/mob/semirandom_mob_spawner/sus
|
||||
|
||||
@@ -4,6 +4,8 @@
|
||||
w_class = ITEMSIZE_NORMAL
|
||||
blocks_emissive = EMISSIVE_BLOCK_GENERIC
|
||||
|
||||
matter = list(MAT_STEEL = 1)
|
||||
|
||||
var/image/blood_overlay = null //this saves our blood splatter overlay, which will be processed not to go over the edges of the sprite
|
||||
var/randpixel = 6
|
||||
var/abstract = 0
|
||||
@@ -352,9 +354,9 @@
|
||||
if(user.pulling == src) user.stop_pulling()
|
||||
if((slot_flags & slot))
|
||||
if(equip_sound)
|
||||
playsound(src, equip_sound, 30)
|
||||
playsound(src, equip_sound, 20)
|
||||
else
|
||||
playsound(src, drop_sound, 30)
|
||||
playsound(src, drop_sound, 20)
|
||||
else if(slot == slot_l_hand || slot == slot_r_hand)
|
||||
playsound(src, pickup_sound, 20, preference = /datum/client_preference/pickup_sounds)
|
||||
return
|
||||
|
||||
@@ -6,6 +6,7 @@
|
||||
icon = 'icons/obj/apc_repair.dmi'
|
||||
icon_state = "apc_frame"
|
||||
refund_amt = 2
|
||||
matter = list(MAT_STEEL = 100, MAT_GLASS = 30)
|
||||
|
||||
/obj/item/frame/apc/try_build(turf/on_wall, mob/user as mob)
|
||||
if (get_dist(on_wall, user)>1)
|
||||
|
||||
@@ -6,6 +6,7 @@
|
||||
force = 2
|
||||
throwforce = 2
|
||||
w_class = 2.0
|
||||
matter = list(MAT_STEEL = 50)
|
||||
var/broken
|
||||
attack_verb = list("annoyed")
|
||||
var/static/radial_examine = image(icon = 'icons/mob/radial.dmi', icon_state = "radial_examine")
|
||||
|
||||
@@ -8,6 +8,7 @@
|
||||
desc = "This is rubbish."
|
||||
drop_sound = 'sound/items/drop/wrapper.ogg'
|
||||
pickup_sound = 'sound/items/pickup/wrapper.ogg'
|
||||
matter = list(MAT_STEEL = 30)
|
||||
var/age = 0
|
||||
|
||||
/obj/item/trash/New(var/newloc, var/_age)
|
||||
|
||||
@@ -18,6 +18,7 @@ AI MODULES
|
||||
throw_range = 15
|
||||
origin_tech = list(TECH_DATA = 3)
|
||||
preserve_item = 1
|
||||
matter = list(MAT_STEEL = 30, MAT_GLASS = 10)
|
||||
var/datum/ai_laws/laws = null
|
||||
|
||||
/obj/item/weapon/aiModule/proc/install(var/atom/movable/AM, var/mob/living/user)
|
||||
|
||||
@@ -16,6 +16,7 @@
|
||||
throwforce = 5.0
|
||||
throw_speed = 3
|
||||
throw_range = 15
|
||||
matter = list(MAT_STEEL = 30, MAT_GLASS = 10)
|
||||
var/build_path = null
|
||||
var/board_type = new /datum/frame/frame_types/computer
|
||||
var/list/req_components = null
|
||||
|
||||
@@ -111,6 +111,46 @@
|
||||
/obj/item/device/analyzer
|
||||
)
|
||||
|
||||
/obj/item/weapon/storage/belt/utility/holding
|
||||
name = "tool-belt of holding"
|
||||
desc = "A belt that uses localized bluespace pockets to hold more items than expected!"
|
||||
icon_state = "utility_holding"
|
||||
storage_slots = 14 //twice the amount as a normal belt
|
||||
max_storage_space = ITEMSIZE_COST_NORMAL * 14
|
||||
can_hold = list(
|
||||
/obj/item/weapon/tool/crowbar,
|
||||
/obj/item/weapon/tool/screwdriver,
|
||||
/obj/item/weapon/weldingtool,
|
||||
/obj/item/weapon/tool/wirecutters,
|
||||
/obj/item/weapon/tool/wrench,
|
||||
/obj/item/device/multitool,
|
||||
/obj/item/device/flashlight,
|
||||
/obj/item/weapon/cell/device,
|
||||
/obj/item/stack/cable_coil,
|
||||
/obj/item/device/t_scanner,
|
||||
/obj/item/device/analyzer,
|
||||
/obj/item/clothing/glasses,
|
||||
/obj/item/clothing/gloves,
|
||||
/obj/item/device/pda,
|
||||
/obj/item/device/megaphone,
|
||||
/obj/item/taperoll,
|
||||
/obj/item/device/radio/headset,
|
||||
/obj/item/device/robotanalyzer,
|
||||
/obj/item/weapon/material/minihoe,
|
||||
/obj/item/weapon/material/knife/machete/hatchet,
|
||||
/obj/item/device/analyzer/plant_analyzer,
|
||||
/obj/item/weapon/extinguisher/mini,
|
||||
/obj/item/weapon/tape_roll,
|
||||
/obj/item/device/integrated_electronics/wirer,
|
||||
/obj/item/device/integrated_electronics/debugger,
|
||||
/obj/item/weapon/shovel/spade,
|
||||
/obj/item/stack/nanopaste,
|
||||
/obj/item/weapon/cell, //this is a bigger belt, might as well make it hold bigger cells too
|
||||
/obj/item/weapon/pipe_dispenser, //bigger belt for bigger tools
|
||||
/obj/item/weapon/rcd //see above
|
||||
)
|
||||
|
||||
|
||||
/obj/item/weapon/storage/belt/medical
|
||||
name = "medical belt"
|
||||
desc = "Can hold various medical equipment."
|
||||
@@ -149,6 +189,13 @@
|
||||
desc = "A sturdy black webbing belt with attached pouches."
|
||||
icon_state = "ems"
|
||||
|
||||
/obj/item/weapon/storage/belt/medical/holding
|
||||
name = "medical belt of holding"
|
||||
desc = "A belt that uses localized bluespace pockets to hold more items than expected!"
|
||||
icon_state = "med_holding"
|
||||
storage_slots = 14 //twice the amount as a normal belt
|
||||
max_storage_space = ITEMSIZE_COST_NORMAL * 14
|
||||
|
||||
/obj/item/weapon/storage/belt/security
|
||||
name = "security belt"
|
||||
desc = "Can hold security gear like handcuffs and flashes."
|
||||
|
||||
@@ -22,6 +22,7 @@
|
||||
/obj/item/weapon/storage/box
|
||||
name = "box"
|
||||
desc = "It's just an ordinary box."
|
||||
icon = 'icons/obj/boxes.dmi'
|
||||
icon_state = "box"
|
||||
item_state = "syringe_kit"
|
||||
center_of_mass = list("x" = 13,"y" = 10)
|
||||
@@ -72,21 +73,29 @@
|
||||
/obj/item/weapon/storage/box/survival
|
||||
name = "emergency supply box"
|
||||
desc = "A survival box issued to crew members for use in emergency situations."
|
||||
icon_state = "survival"
|
||||
starts_with = list(
|
||||
/obj/item/weapon/tool/prybar/red,
|
||||
/obj/item/clothing/glasses/goggles,
|
||||
/obj/item/clothing/mask/breath
|
||||
)
|
||||
|
||||
/obj/item/weapon/storage/box/survival/synth
|
||||
name = "synthetic supply box"
|
||||
desc = "A survival box issued to synthetic crew members for use in emergency situations."
|
||||
icon_state = "survival_synth"
|
||||
starts_with = list(
|
||||
/obj/item/weapon/tool/prybar/red,
|
||||
/obj/item/clothing/glasses/goggles
|
||||
)
|
||||
|
||||
/obj/item/weapon/storage/box/survival/comp
|
||||
name = "emergency supply box"
|
||||
desc = "A comprehensive survival box issued to crew members for use in emergency situations. Contains additional supplies."
|
||||
icon_state = "survival"
|
||||
icon_state = "survival_comp"
|
||||
starts_with = list(
|
||||
/obj/item/weapon/tool/prybar/red,
|
||||
/obj/item/clothing/glasses/goggles,
|
||||
/obj/item/weapon/reagent_containers/hypospray/autoinjector,
|
||||
/obj/item/stack/medical/bruise_pack,
|
||||
/obj/item/device/flashlight/glowstick,
|
||||
@@ -115,7 +124,7 @@
|
||||
/obj/item/weapon/storage/box/syringegun
|
||||
name = "box of syringe gun cartridges"
|
||||
desc = "A box full of compressed gas cartridges."
|
||||
icon_state = "syringe"
|
||||
icon_state = "syringe2"
|
||||
starts_with = list(/obj/item/weapon/syringe_cartridge = 7)
|
||||
|
||||
/obj/item/weapon/storage/box/beakers
|
||||
@@ -127,6 +136,7 @@
|
||||
/obj/item/weapon/storage/box/injectors
|
||||
name = "box of DNA injectors"
|
||||
desc = "This box contains injectors it seems."
|
||||
icon_state = "dna"
|
||||
starts_with = list(
|
||||
/obj/item/weapon/dnainjector/h2m = 3,
|
||||
/obj/item/weapon/dnainjector/m2h = 3
|
||||
@@ -374,17 +384,19 @@
|
||||
/obj/item/weapon/storage/box/condimentbottles
|
||||
name = "box of condiment bottles"
|
||||
desc = "It has a large ketchup smear on it."
|
||||
icon_state = "condiment"
|
||||
starts_with = list(/obj/item/weapon/reagent_containers/food/condiment = 7)
|
||||
|
||||
/obj/item/weapon/storage/box/cups
|
||||
name = "box of paper cups"
|
||||
desc = "It has pictures of paper cups on the front."
|
||||
icon_state = "cups"
|
||||
starts_with = list(/obj/item/weapon/reagent_containers/food/drinks/sillycup = 7)
|
||||
|
||||
/obj/item/weapon/storage/box/donkpockets
|
||||
name = "box of donk-pockets"
|
||||
desc = "<B>Instructions:</B> <I>Heat in microwave. Product will cool if not eaten within seven minutes.</I>"
|
||||
icon_state = "donk_kit"
|
||||
icon_state = "donkpocketbox"
|
||||
starts_with = list(/obj/item/weapon/reagent_containers/food/snacks/donkpocket = 7)
|
||||
|
||||
/obj/item/weapon/storage/box/sinpockets
|
||||
@@ -450,6 +462,7 @@
|
||||
/obj/item/weapon/storage/box/pillbottles
|
||||
name = "box of pill bottles"
|
||||
desc = "It has pictures of pill bottles on its front."
|
||||
icon_state = "pillbox"
|
||||
starts_with = list(/obj/item/weapon/storage/pill_bottle = 7)
|
||||
|
||||
/obj/item/weapon/storage/box/snappops
|
||||
@@ -485,12 +498,12 @@
|
||||
/obj/item/weapon/storage/box/autoinjectors
|
||||
name = "box of injectors"
|
||||
desc = "Contains autoinjectors."
|
||||
icon_state = "syringe"
|
||||
icon_state = "auto"
|
||||
starts_with = list(/obj/item/weapon/reagent_containers/hypospray/autoinjector = 7)
|
||||
|
||||
/obj/item/weapon/storage/box/lights
|
||||
name = "box of replacement bulbs"
|
||||
icon = 'icons/obj/storage.dmi'
|
||||
icon = 'icons/obj/boxes.dmi'
|
||||
icon_state = "light"
|
||||
desc = "This box is shaped on the inside so that only light tubes and bulbs fit."
|
||||
item_state_slots = list(slot_r_hand_str = "syringe_kit", slot_l_hand_str = "syringe_kit")
|
||||
|
||||
@@ -1,27 +1,3 @@
|
||||
/obj/item/weapon/storage/box/survival
|
||||
starts_with = list(
|
||||
/obj/item/weapon/tool/prybar/red,
|
||||
/obj/item/clothing/glasses/goggles,
|
||||
/obj/item/clothing/mask/breath
|
||||
)
|
||||
|
||||
/obj/item/weapon/storage/box/survival/synth
|
||||
starts_with = list(
|
||||
/obj/item/weapon/tool/prybar/red,
|
||||
/obj/item/clothing/glasses/goggles
|
||||
)
|
||||
|
||||
/obj/item/weapon/storage/box/survival/comp
|
||||
starts_with = list(
|
||||
/obj/item/weapon/tool/prybar/red,
|
||||
/obj/item/clothing/glasses/goggles,
|
||||
/obj/item/weapon/reagent_containers/hypospray/autoinjector,
|
||||
/obj/item/stack/medical/bruise_pack,
|
||||
/obj/item/device/flashlight/glowstick,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/candy/proteinbar,
|
||||
/obj/item/clothing/mask/breath
|
||||
)
|
||||
|
||||
/obj/item/weapon/storage/box/explorerkeys
|
||||
name = "box of volunteer headsets"
|
||||
desc = "A box full of volunteer headsets, for issuing out to exploration volunteers."
|
||||
@@ -39,7 +15,7 @@
|
||||
|
||||
/obj/item/weapon/storage/box/survival/space
|
||||
name = "boxed emergency suit and helmet"
|
||||
icon_state = "survivaleng"
|
||||
icon_state = "survival_comp3"
|
||||
starts_with = list(
|
||||
/obj/item/clothing/suit/space/emergency,
|
||||
/obj/item/clothing/head/helmet/space/emergency,
|
||||
|
||||
@@ -16,6 +16,10 @@
|
||||
allow_quick_empty = TRUE
|
||||
use_sound = 'sound/items/drop/flesh.ogg'
|
||||
|
||||
/obj/item/weapon/storage/vore_egg/Initialize()
|
||||
. = ..()
|
||||
randpixel_xy()
|
||||
|
||||
/obj/item/weapon/storage/vore_egg/open(mob/user as mob)
|
||||
if(isobserver(user))
|
||||
return
|
||||
|
||||
@@ -4,8 +4,7 @@
|
||||
desc = "It looks like a weird egg."
|
||||
name = "egg"
|
||||
icon_state = "egg_growing"
|
||||
density = 0
|
||||
anchored = 1
|
||||
density = FALSE
|
||||
var/progress = 0
|
||||
|
||||
/obj/structure/alien/egg/Initialize()
|
||||
|
||||
@@ -1,10 +1,11 @@
|
||||
/obj/structure/alien //Gurg Addition, framework for alien eggs.
|
||||
/obj/structure/alien //Gurg Addition, framework for alien eggs and structures.
|
||||
name = "alien thing"
|
||||
desc = "There's something alien about this."
|
||||
icon = 'icons/mob/alien.dmi'
|
||||
layer = ABOVE_JUNK_LAYER
|
||||
var/health = 50
|
||||
unacidable = TRUE
|
||||
anchored = TRUE
|
||||
|
||||
/obj/structure/alien/proc/healthcheck()
|
||||
if(health <=0)
|
||||
@@ -46,16 +47,45 @@
|
||||
..()
|
||||
return
|
||||
|
||||
/obj/structure/alien/attack_generic()
|
||||
attack_hand(usr)
|
||||
/obj/structure/alien/attack_generic(var/mob/user, var/damage, var/attack_verb)
|
||||
visible_message("<span class='danger'>[user] [attack_verb] the [src]!</span>")
|
||||
playsound(src, 'sound/effects/attackblob.ogg', 100, 1)
|
||||
user.do_attack_animation(src)
|
||||
health -= damage
|
||||
healthcheck()
|
||||
return
|
||||
|
||||
/obj/structure/alien/attackby(var/obj/item/weapon/W, var/mob/user)
|
||||
health = max(0, health - W.force)
|
||||
playsound(loc, 'sound/effects/attackblob.ogg', 100, 1)
|
||||
/obj/structure/alien/attackby(obj/item/weapon/W as obj, mob/user as mob)
|
||||
|
||||
user.setClickCooldown(user.get_attack_speed(W))
|
||||
var/aforce = W.force
|
||||
health = max(0, health - aforce)
|
||||
playsound(src, 'sound/effects/attackblob.ogg', 100, 1)
|
||||
visible_message("<span class='danger'>[user] attacks the [src]!</span>")
|
||||
healthcheck()
|
||||
..()
|
||||
return
|
||||
|
||||
/obj/structure/alien/attack_hand()
|
||||
usr.setClickCooldown(DEFAULT_ATTACK_COOLDOWN)
|
||||
if (HULK in usr.mutations)
|
||||
visible_message("<span class='warning'>[usr] destroys the [name]!</span>")
|
||||
health = 0
|
||||
else
|
||||
|
||||
// Aliens can get straight through these.
|
||||
if(istype(usr,/mob/living/carbon))
|
||||
var/mob/living/carbon/M = usr
|
||||
if(locate(/obj/item/organ/internal/xenos/hivenode) in M.internal_organs)
|
||||
visible_message ("<span class='warning'>[usr] strokes the [name] and it melts away!</span>", 1)
|
||||
health = 0
|
||||
healthcheck()
|
||||
return
|
||||
visible_message("<span class='warning'>[usr] claws at the [name]!</span>")
|
||||
health -= rand(5,10)
|
||||
healthcheck()
|
||||
return
|
||||
|
||||
/obj/structure/alien/CanPass(atom/movable/mover, turf/target, height=0, air_group=0)
|
||||
if(air_group) return 0
|
||||
if(istype(mover) && mover.checkpass(PASSGLASS))
|
||||
|
||||
@@ -0,0 +1,17 @@
|
||||
/obj/structure/alien/wall
|
||||
name = "resin wall"
|
||||
desc = "A disgusting mass of purple slime solidified into a wall."
|
||||
icon_state = "resin wall"
|
||||
health = 200
|
||||
opacity = 1
|
||||
density = TRUE
|
||||
can_atmos_pass = ATMOS_PASS_NO
|
||||
|
||||
/obj/structure/alien/membrane
|
||||
name = "resin membrane"
|
||||
desc = "A revolting mass of purple slime, it appears to be stretched enough to be transparent."
|
||||
icon_state = "resin membrane"
|
||||
opacity = 0
|
||||
health = 120
|
||||
density = TRUE
|
||||
can_atmos_pass = ATMOS_PASS_NO
|
||||
Reference in New Issue
Block a user