From ba1fa9fb634d7d3d9c78880cb19d79ca133e6eb1 Mon Sep 17 00:00:00 2001
From: Eric6426-Blossom <92941557+Eric6426-Blossom@users.noreply.github.com>
Date: Tue, 10 Jan 2023 23:03:43 +0100
Subject: [PATCH] Resprites Xeno structures. Adds Xeno Doors. Fixes and
polishes a lot of issues and features of Xenos (#19978)
* Benodoor1
* TheScopeOfThisPRisOutTheWindow
* BalancesDoor+GoodSounds
* Fixes Map Issues(?) - Mapedit by Lightfire
* FixesMapIssues for good
* Nests+WallWeeds(WIP)
* Doorforcing
* EggSprite
* Weed,Carbon,Wallchecks
* Spelling+cleanercomment1
* ReviewBatchTest
Co-authored-by: Sirryan2002 <80364400+Sirryan2002@users.noreply.github.com>
* Sirryan'sReviewBatchTest
Co-authored-by: Sirryan2002 <80364400+Sirryan2002@users.noreply.github.com>
* Sirryan'sReviewFinalBatch
Co-authored-by: Sirryan2002 <80364400+Sirryan2002@users.noreply.github.com>
* MoreFixesForReview
* Initializes+UserFeedbackWarns
* ForgorWallweedName
* SeanRequestsPart1
* SeanPart2
* SirryanReviewPart1
Co-authored-by: Sirryan2002 <80364400+Sirryan2002@users.noreply.github.com>
* TheWeedening
* SirryanReviewPart2
* CleaningLayer
* SirryanReviewPart1
Co-authored-by: Ryan <80364400+Sirryan2002@users.noreply.github.com>
* SirryanReviewPart2
* SirryanReview
Co-authored-by: Ryan <80364400+Sirryan2002@users.noreply.github.com>
* RemovingOldSprites
Co-authored-by: Sirryan2002 <80364400+Sirryan2002@users.noreply.github.com>
---
.../RandomRuins/SpaceRuins/derelict1.dmm | 14 +-
code/__DEFINES/icon_smoothing.dm | 2 +-
code/game/machinery/doors/airlock.dm | 24 +-
code/game/objects/structures/aliens.dm | 312 +++++++++++++++---
code/game/objects/structures/mineral_doors.dm | 31 +-
.../stool_bed_chair_nest/alien_nests.dm | 17 +-
code/game/turfs/turf.dm | 9 +-
.../carbon/alien/humanoid/alien_powers.dm | 41 ++-
.../mob/living/carbon/alien/humanoid/queen.dm | 3 +-
icons/mob/alien.dmi | Bin 82148 -> 74965 bytes
icons/obj/doors/mineral_doors.dmi | Bin 57285 -> 49751 bytes
icons/obj/smooth_structures/alien/nest.dmi | Bin 3026 -> 0 bytes
.../smooth_structures/alien/resin_door.dmi | Bin 0 -> 4508 bytes
.../alien/resin_membrane.dmi | Bin 16949 -> 0 bytes
.../smooth_structures/alien/resin_wall.dmi | Bin 3764 -> 18069 bytes
.../obj/smooth_structures/alien/weednode.dmi | Bin 3450 -> 0 bytes
icons/obj/smooth_structures/alien/weeds.dmi | Bin 0 -> 23412 bytes
icons/obj/smooth_structures/alien/weeds1.dmi | Bin 2643 -> 0 bytes
icons/obj/smooth_structures/alien/weeds2.dmi | Bin 2644 -> 0 bytes
icons/obj/smooth_structures/alien/weeds3.dmi | Bin 2648 -> 0 bytes
sound/effects/alien_resin_break1.ogg | Bin 0 -> 28452 bytes
sound/effects/alien_resin_break2.ogg | Bin 0 -> 27468 bytes
sound/machines/alien_airlock.ogg | Bin 0 -> 15942 bytes
23 files changed, 356 insertions(+), 97 deletions(-)
delete mode 100644 icons/obj/smooth_structures/alien/nest.dmi
create mode 100644 icons/obj/smooth_structures/alien/resin_door.dmi
delete mode 100644 icons/obj/smooth_structures/alien/resin_membrane.dmi
delete mode 100644 icons/obj/smooth_structures/alien/weednode.dmi
create mode 100644 icons/obj/smooth_structures/alien/weeds.dmi
delete mode 100644 icons/obj/smooth_structures/alien/weeds1.dmi
delete mode 100644 icons/obj/smooth_structures/alien/weeds2.dmi
delete mode 100644 icons/obj/smooth_structures/alien/weeds3.dmi
create mode 100644 sound/effects/alien_resin_break1.ogg
create mode 100644 sound/effects/alien_resin_break2.ogg
create mode 100644 sound/machines/alien_airlock.ogg
diff --git a/_maps/map_files/RandomRuins/SpaceRuins/derelict1.dmm b/_maps/map_files/RandomRuins/SpaceRuins/derelict1.dmm
index 3d983d2a5be..5d159c28d40 100644
--- a/_maps/map_files/RandomRuins/SpaceRuins/derelict1.dmm
+++ b/_maps/map_files/RandomRuins/SpaceRuins/derelict1.dmm
@@ -11,7 +11,7 @@
/area/ruin/space/unpowered)
"d" = (
/obj/structure/alien/weeds,
-/obj/structure/alien/resin/membrane,
+/obj/structure/alien/resin/wall,
/turf/simulated/floor/plating/airless,
/area/ruin/space/unpowered)
"e" = (
@@ -47,10 +47,6 @@
/obj/structure/alien/resin/wall,
/turf/simulated/floor/plating/airless,
/area/ruin/space/unpowered)
-"l" = (
-/obj/structure/alien/resin/membrane,
-/turf/simulated/floor/plating/airless,
-/area/ruin/space/unpowered)
"m" = (
/obj/structure/alien/weeds,
/obj/structure/table,
@@ -819,7 +815,7 @@ f
c
f
f
-l
+k
b
b
a
@@ -862,7 +858,7 @@ f
f
f
f
-l
+k
q
b
a
@@ -1229,8 +1225,8 @@ a
a
b
b
-l
-l
+k
+k
p
p
a
diff --git a/code/__DEFINES/icon_smoothing.dm b/code/__DEFINES/icon_smoothing.dm
index bcc1c8fa8af..023d7b63d32 100644
--- a/code/__DEFINES/icon_smoothing.dm
+++ b/code/__DEFINES/icon_smoothing.dm
@@ -117,7 +117,7 @@ DEFINE_BITFIELD(smoothing_flags, list(
#define SMOOTH_GROUP_REINFORCED_TABLES S_OBJ(56) ///obj/structure/table/reinforced, /obj/structure/table/glass/reinforced
#define SMOOTH_GROUP_ALIEN_RESIN S_OBJ(60) ///obj/structure/alien/resin
-#define SMOOTH_GROUP_ALIEN_WALLS S_OBJ(61) ///obj/structure/alien/resin/wall, /obj/structure/alien/resin/membrane
+#define SMOOTH_GROUP_ALIEN_WALLS S_OBJ(61) ///obj/structure/alien/resin/wall,
#define SMOOTH_GROUP_ALIEN_WEEDS S_OBJ(62) ///obj/structure/alien/weeds
#define SMOOTH_GROUP_SECURITY_BARRICADE S_OBJ(63) ///obj/structure/barricade/security
diff --git a/code/game/machinery/doors/airlock.dm b/code/game/machinery/doors/airlock.dm
index 523d0d0d6c7..eed6f6627ba 100644
--- a/code/game/machinery/doors/airlock.dm
+++ b/code/game/machinery/doors/airlock.dm
@@ -1384,6 +1384,12 @@ GLOBAL_LIST_EMPTY(airlock_emissive_underlays)
shock(user, 100) //Mmm, fried xeno!
return
if(!density) //Already open
+ if(!arePowerSystemsOn())
+ close(TRUE)
+ return
+ if(HAS_TRAIT_FROM(user, TRAIT_FORCE_DOORS, VAMPIRE_TRAIT))
+ close(TRUE)
+ return
return
if(locked || welded) //Extremely generic, as aliens only understand the basics of how airlocks work.
to_chat(user, "[src] refuses to budge!")
@@ -1391,14 +1397,22 @@ GLOBAL_LIST_EMPTY(airlock_emissive_underlays)
if(prying_so_hard)
return
prying_so_hard = TRUE
- user.visible_message("[user] begins prying open [src].",\
- "You begin digging your claws into [src] with all your might!",\
- "You hear groaning metal...")
- var/time_to_open = 5
+ var/time_to_open = 0
if(arePowerSystemsOn())
+ if(HAS_TRAIT_FROM(user, TRAIT_FORCE_DOORS, VAMPIRE_TRAIT))
+ open(TRUE)
+ visible_message("[user] forces the door!")
+ playsound(loc, "sparks", 100, TRUE, SHORT_RANGE_SOUND_EXTRARANGE)
+ prying_so_hard = FALSE
+ return
+ user.visible_message("[user] begins prying open [src].",\
+ "You begin digging your claws into [src] with all your might!",\
+ "You hear groaning metal...")
time_to_open = 50 //Powered airlocks take longer to open, and are loud.
playsound(src, 'sound/machines/airlock_alien_prying.ogg', 100, TRUE)
-
+ else
+ visible_message("[user] forces the door!")
+ playsound(loc, "sparks", 100, TRUE, SHORT_RANGE_SOUND_EXTRARANGE)
if(do_after(user, time_to_open, TRUE, src))
if(density && !open(2)) //The airlock is still closed, but something prevented it opening. (Another player noticed and bolted/welded the airlock in time!)
diff --git a/code/game/objects/structures/aliens.dm b/code/game/objects/structures/aliens.dm
index 56071ee5650..1235b7d9add 100644
--- a/code/game/objects/structures/aliens.dm
+++ b/code/game/objects/structures/aliens.dm
@@ -53,12 +53,18 @@
max_integrity = 200
var/resintype = null
-/obj/structure/alien/resin/Initialize()
+/obj/structure/alien/resin/Initialize(mapload)
air_update_turf(1)
- ..()
+ for(var/obj/structure/alien/weeds/node/W in get_turf(src))
+ qdel(W)
+ if(locate(/obj/structure/alien/weeds) in get_turf(src))
+ return ..()
+ new /obj/structure/alien/weeds(loc)
+ return ..()
/obj/structure/alien/resin/Destroy()
var/turf/T = get_turf(src)
+ playsound(loc, 'sound/effects/alien_resin_break2.ogg', 100, TRUE)
. = ..()
T.air_update_turf(TRUE)
@@ -70,6 +76,14 @@
/obj/structure/alien/resin/CanAtmosPass()
return !density
+/obj/structure/alien/resin/attack_alien(mob/living/carbon/alien/humanoid/user)
+ if(user.a_intent != INTENT_HARM)
+ return
+ to_chat(user, "We begin tearing down this resin structure.")
+ if(!do_after(user, 40, target = src) || QDELETED(src))
+ return
+ qdel(src)
+
/obj/structure/alien/resin/wall
name = "resin wall"
desc = "Thick resin solidified into a wall."
@@ -82,23 +96,140 @@
/obj/structure/alien/resin/wall/BlockSuperconductivity()
return TRUE
-/obj/structure/alien/resin/membrane
- name = "resin membrane"
- desc = "Resin just thin enough to let light pass through."
- icon = 'icons/obj/smooth_structures/alien/resin_membrane.dmi'
- icon_state = "resin_membrane-0"
- base_icon_state = "resin_membrane"
- opacity = FALSE
- max_integrity = 160
- resintype = "membrane"
+/*
+ *Resin-Door - Borrows its code from Mineral-Door, not a subtype due to needing many overrides if so
+*/
+/obj/structure/alien/resin/door
+ name = "resin door"
+ density = TRUE
+ anchored = TRUE
+ opacity = TRUE
+
+ icon = 'icons/obj/smooth_structures/alien/resin_door.dmi'
+ icon_state = "resin"
+ base_icon_state = "resin"
+ max_integrity = 150
+ armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, RAD = 0, FIRE = 50, ACID = 50)
+ damage_deflection = 0
+ flags_2 = RAD_PROTECT_CONTENTS_2 | RAD_NO_CONTAMINATE_2
+ rad_insulation = RAD_MEDIUM_INSULATION
+ var/initial_state
+ var/state_open = FALSE
+ var/is_operating = FALSE
+ var/close_delay = 1.5 SECONDS
+ smoothing_flags = null
+ var/open_sound = 'sound/machines/alien_airlock.ogg'
+ var/close_sound = 'sound/machines/alien_airlock.ogg'
+
smoothing_groups = list(SMOOTH_GROUP_ALIEN_RESIN, SMOOTH_GROUP_ALIEN_WALLS)
canSmoothWith = list(SMOOTH_GROUP_ALIEN_WALLS)
-/obj/structure/alien/resin/CanPass(atom/movable/mover, turf/target)
- if(istype(mover) && mover.checkpass(PASSGLASS))
- return !opacity
+/obj/structure/alien/resin/door/Initialize(mapload)
+ . = ..()
+ initial_state = icon_state
+ QUEUE_SMOOTH_NEIGHBORS(src)
+
+/obj/structure/alien/resin/door/Destroy()
+ density = FALSE
+ QUEUE_SMOOTH_NEIGHBORS(src)
+ air_update_turf(1)
+ return ..()
+
+/obj/structure/alien/resin/door/Move()
+ var/turf/T = loc
+ . = ..()
+ move_update_air(T)
+
+/obj/structure/alien/resin/door/Crossed(mob/living/L, oldloc)
+ ..()
+ if(!state_open)
+ return try_to_operate(L)
+
+/obj/structure/alien/resin/door/attack_ai(mob/user)
+ return
+
+/obj/structure/alien/resin/door/attack_hand(mob/user)
+ return try_to_operate(user)
+
+/obj/structure/alien/resin/door/attack_ghost(mob/user)
+ if(user.can_advanced_admin_interact())
+ operate()
+
+/obj/structure/alien/resin/door/CanAtmosPass(turf/T)
return !density
+/obj/structure/alien/resin/door/proc/try_to_operate(mob/user)
+ if(is_operating)
+ return
+ if(!iscarbon(user))
+ return
+ var/mob/living/carbon/C = user
+ if(C.get_int_organ(/obj/item/organ/internal/xenos/hivenode))
+ if(world.time - C.last_bumped <= 60)
+ return
+ if(!C.handcuffed)
+ operate()
+ return
+ to_chat(user, "Your lack of connection to the hive prevents the resin door from opening")
+/*
+ * This 2nd try_to_operate() is needed so that CALLBACK can close the door without having to either call operate() and get bugged when clicked much or
+ * call try_to_operate(atom/user) and not be able to use it due to not having a mob using it
+*/
+/obj/structure/alien/resin/door/proc/mobless_try_to_operate()
+ if(is_operating)
+ if(state_open)
+ addtimer(CALLBACK(src, PROC_REF(mobless_try_to_operate)), close_delay)
+ return
+ operate()
+
+/obj/structure/alien/resin/door/proc/operate()
+ is_operating = TRUE
+ if(!state_open)
+ playsound(loc, open_sound, 100, TRUE)
+ flick("[initial_state]opening", src)
+ else
+ for(var/mob/living/L in get_turf(src))
+ is_operating = FALSE
+ if(state_open)
+ addtimer(CALLBACK(src, PROC_REF(mobless_try_to_operate)), close_delay)
+ return
+ playsound(loc, close_sound, 100, 1)
+ flick("[initial_state]closing", src)
+ density = !density
+ opacity = !opacity
+ state_open = !state_open
+ addtimer(CALLBACK(src, PROC_REF(operate_update)), 1 SECONDS)
+
+/obj/structure/alien/resin/door/proc/operate_update()
+ air_update_turf(1)
+ update_icon(UPDATE_ICON_STATE)
+ is_operating = FALSE
+
+ if(state_open)
+ addtimer(CALLBACK(src, PROC_REF(mobless_try_to_operate)), close_delay)
+
+/obj/structure/alien/resin/door/update_icon_state()
+ icon_state = state_open ? "[initial_state]open" : initial_state
+
+/obj/structure/alien/resin/door/attack_alien(mob/living/carbon/alien/humanoid/user)
+ if(user.a_intent != INTENT_HARM)
+ try_to_operate(user)
+ return
+ to_chat(user, "We begin tearing down this resin structure.")
+ if(!do_after(user, 40, target = src) || QDELETED(src))
+ return
+ qdel(src)
+
+/obj/structure/alien/resin/door/CanPass(atom/movable/mover, turf/target)
+ if(iscarbon(mover))
+ var/mob/living/carbon/C = mover
+ if(C.get_int_organ(/obj/item/organ/internal/xenos/hivenode))
+ return TRUE
+ if(iscarbon(mover.pulledby))
+ var/mob/living/carbon/L = mover.pulledby
+ if(L.get_int_organ(/obj/item/organ/internal/xenos/hivenode))
+ return TRUE
+ return !density
/*
* Weeds
@@ -112,38 +243,91 @@
desc = "A thick resin surface covers the floor."
anchored = TRUE
density = FALSE
- layer = ABOVE_OPEN_TURF_LAYER
plane = FLOOR_PLANE
- icon = 'icons/obj/smooth_structures/alien/weeds1.dmi'
- icon_state = "weeds1"
- base_icon_state = "weeds1"
+ icon = 'icons/obj/smooth_structures/alien/weeds.dmi'
+ icon_state = "weeds"
+ base_icon_state = "weeds"
max_integrity = 15
+ layer = WIRE_TERMINAL_LAYER
smoothing_flags = SMOOTH_BITMASK
smoothing_groups = list(SMOOTH_GROUP_ALIEN_RESIN, SMOOTH_GROUP_ALIEN_WEEDS)
canSmoothWith = list(SMOOTH_GROUP_ALIEN_WEEDS, SMOOTH_GROUP_WALLS)
- transform = matrix(1, 0, -4, 0, 1, -4)
var/obj/structure/alien/weeds/node/linked_node = null
+ var/obj/structure/alien/wallweed/wall_weed // This var is used to handle wall-weed interactions for when they need to be deleted
var/static/list/weedImageCache
+ var/check_counter // This var is how many process() procs it takes for a weed to spread
-
-/obj/structure/alien/weeds/New(pos, node)
+/obj/structure/alien/weeds/Initialize(mapload, node)
..()
linked_node = node
if(isspaceturf(loc))
qdel(src)
return
- if(icon_state == "weeds")
- icon_state = pick("weeds", "weeds1", "weeds2")
- spawn(rand(150, 200))
- if(src)
- Life()
+ check_surroundings()
+ START_PROCESSING(SSobj, src)
/obj/structure/alien/weeds/Destroy()
+ STOP_PROCESSING(SSobj, src)
QUEUE_SMOOTH_NEIGHBORS(src)
+ playsound(loc, pick('sound/effects/alien_resin_break2.ogg','sound/effects/alien_resin_break1.ogg'), 50, FALSE)
linked_node = null
+ clear_wall_weed()
return ..()
-/obj/structure/alien/weeds/proc/Life()
+/obj/structure/alien/weeds/attack_alien(mob/living/carbon/alien/humanoid/user)
+ if(user.a_intent != INTENT_HARM)
+ return
+ return ..()
+
+/obj/structure/alien/weeds/process()
+ check_counter++
+ if(check_counter >= 5)
+ spread()
+ check_counter = 0
+
+/obj/structure/alien/weeds/proc/clear_wall_weed()
+ QDEL_NULL(wall_weed)
+
+/obj/structure/alien/weeds/proc/check_surroundings()
+ var/turf/T = get_turf(src)
+ var/list/nearby_dense_turfs = T.AdjacentTurfs(cardinal_only = FALSE, dense_only = TRUE)
+ if(!length(nearby_dense_turfs)) // There is no dense turfs around it
+ clear_wall_weed()
+ return
+
+ var/list/wall_dirs = list()
+ for(var/turf/W in nearby_dense_turfs)
+ if(iswallturf(W))
+ wall_dirs.Add(get_dir(W, T))
+ if(!length(wall_dirs)) // There is no walls around it
+ clear_wall_weed()
+ return
+
+ var/list/nearby_open_turfs = T.AdjacentTurfs(open_only = TRUE, cardinal_only = TRUE)
+
+ for(var/turf/W in nearby_open_turfs) // This handles removal of corner-weeds when they are to be replaced with a full side-weed instead
+ if(locate(/obj/structure/alien/weeds, W))
+ var/dirs = get_dir(W, T)
+ switch(dirs)
+ if(NORTH)
+ wall_dirs.Remove(NORTHEAST, NORTHWEST)
+ if(SOUTH)
+ wall_dirs.Remove(SOUTHEAST, SOUTHWEST)
+ if(EAST)
+ wall_dirs.Remove(NORTHEAST, SOUTHEAST)
+ if(WEST)
+ wall_dirs.Remove(NORTHWEST, SOUTHWEST)
+
+ if(!length(wall_dirs)) // No weeds will be applied, better off deleting it
+ clear_wall_weed()
+ return
+
+ if(!wall_weed || QDELETED(wall_weed))
+ wall_weed = new(get_turf(src))
+
+ wall_weed.compare_overlays(wall_dirs)
+
+/obj/structure/alien/weeds/proc/spread()
var/turf/U = get_turf(src)
if(isspaceturf(U))
@@ -154,29 +338,81 @@
return
for(var/turf/T in U.GetAtmosAdjacentTurfs())
-
if(locate(/obj/structure/alien/weeds) in T || isspaceturf(T))
continue
-
new /obj/structure/alien/weeds(T, linked_node)
+ check_surroundings()
/obj/structure/alien/weeds/temperature_expose(datum/gas_mixture/air, exposed_temperature, exposed_volume)
..()
if(exposed_temperature > 300)
take_damage(5, BURN, 0, 0)
-//Weed nodes
+/*
+ * Wall Weeds
+ */
+
+/obj/structure/alien/wallweed
+ name = "resin overgrowth"
+ desc = "A thick resin surface covers the wall."
+ icon = 'icons/obj/smooth_structures/alien/weeds.dmi'
+ icon_state = null
+ anchored = TRUE
+ layer = ABOVE_WINDOW_LAYER
+ plane = GAME_PLANE
+
+ max_integrity = 15
+ var/list/overlay_list = list()
+
+/obj/structure/alien/wallweed/Destroy()
+ playsound(loc, pick('sound/effects/alien_resin_break2.ogg','sound/effects/alien_resin_break1.ogg'), 50, FALSE)
+ return ..()
+
+/obj/structure/alien/wallweed/proc/compare_overlays(list/wall_dirs)
+ if(overlay_list != wall_dirs)
+ overlay_list = wall_dirs
+ update_icon(UPDATE_OVERLAYS)
+
+/obj/structure/alien/wallweed/update_overlays()
+ . = ..()
+ if(!length(overlay_list))
+ return
+ for(var/dirs in overlay_list)
+ var/image/I = image(icon, icon_state = "wallweed-[dirs]")
+ switch(dirs)
+ if(NORTH, NORTHEAST, NORTHWEST)
+ I.pixel_y = -32
+ if(SOUTH, SOUTHEAST, SOUTHWEST)
+ I.pixel_y = 32
+ switch(dirs)
+ if(EAST, NORTHEAST, SOUTHEAST)
+ I.pixel_x = -32
+ if(WEST, NORTHWEST, SOUTHWEST)
+ I.pixel_x = 32
+ I.layer = BELOW_MOB_LAYER
+ . += I
+
+/obj/structure/alien/wallweed/attack_alien(mob/living/carbon/alien/humanoid/user)
+ if(user.a_intent != INTENT_HARM)
+ return
+ return ..()
+
+/*
+ * Weed nodes
+ */
+
/obj/structure/alien/weeds/node
- name = "glowing resin"
- desc = "Blue bioluminescence shines from beneath the surface."
- icon = 'icons/obj/smooth_structures/alien/weednode.dmi'
- icon_state = "weednode"
- base_icon_state = "weednode"
+ name = "resin node"
+ desc = "A large bulbous node pumping resin into the surface bellow it."
+ icon = 'icons/obj/smooth_structures/alien/weeds.dmi'
+ icon_state = "weeds"
+ base_icon_state = "weeds"
light_range = 1
var/node_range = NODERANGE
-/obj/structure/alien/weeds/node/New()
+/obj/structure/alien/weeds/node/Initialize()
+ add_overlay("weednode")
..(loc, src)
#undef NODERANGE
@@ -208,7 +444,7 @@
/*can be GROWING, GROWN or BURST; all mutually exclusive. GROWING has the egg in the grown state, and it will take 180-300 seconds for it to advance to the hatched state
*In the GROWN state, an alien egg can be destroyed or attacked by a xenomorph to force it to be burst, going near an egg in this state will also cause it to burst if you can be infected by a face hugger
*In the BURST/BURSTING state, the alien egg can be removed by being attacked by a alien or any other weapon
- **/
+ **/
var/status = GROWING
/obj/structure/alien/egg/grown
@@ -231,7 +467,7 @@
return attack_hand(user)
/obj/structure/alien/egg/attack_hand(mob/living/user)
- if(user.get_int_organ(/obj/item/organ/internal/xenos/plasmavessel))
+ if(user.get_int_organ(/obj/item/organ/internal/xenos/hivenode))
switch(status)
if(BURST)
to_chat(user, "You clear the hatched egg.")
diff --git a/code/game/objects/structures/mineral_doors.dm b/code/game/objects/structures/mineral_doors.dm
index d664e0f3495..90a0e4e21c0 100644
--- a/code/game/objects/structures/mineral_doors.dm
+++ b/code/game/objects/structures/mineral_doors.dm
@@ -19,8 +19,8 @@
var/hardness = 1
var/sheetType = /obj/item/stack/sheet/metal
var/sheetAmount = 7
- var/openSound = 'sound/effects/stonedoor_openclose.ogg'
- var/closeSound = 'sound/effects/stonedoor_openclose.ogg'
+ var/open_sound = 'sound/effects/stonedoor_openclose.ogg'
+ var/close_sound = 'sound/effects/stonedoor_openclose.ogg'
var/damageSound = null
/obj/structure/mineral_door/Initialize()
@@ -82,15 +82,18 @@
/obj/structure/mineral_door/proc/operate()
is_operating = TRUE
if(!state_open)
- playsound(loc, openSound, 100, 1)
+ playsound(loc, open_sound, 100, TRUE)
flick("[initial_state]opening",src)
else
var/turf/T = get_turf(src)
for(var/mob/living/L in T)
+ is_operating = FALSE
return
- playsound(loc, closeSound, 100, 1)
+ playsound(loc, close_sound, 100, TRUE)
flick("[initial_state]closing",src)
- sleep(10)
+ addtimer(CALLBACK(src, PROC_REF(operate_update)), 1 SECONDS)
+
+/obj/structure/mineral_door/proc/operate_update()
density = !density
opacity = !opacity
state_open = !state_open
@@ -198,24 +201,10 @@
/obj/structure/mineral_door/wood
name = "wood door"
icon_state = "wood"
- openSound = 'sound/effects/doorcreaky.ogg'
- closeSound = 'sound/effects/doorcreaky.ogg'
+ open_sound = 'sound/effects/doorcreaky.ogg'
+ close_sound = 'sound/effects/doorcreaky.ogg'
sheetType = /obj/item/stack/sheet/wood
hardness = 1
resistance_flags = FLAMMABLE
max_integrity = 200
rad_insulation = RAD_VERY_LIGHT_INSULATION
-
-/obj/structure/mineral_door/resin
- name = "resin door"
- icon_state = "resin"
- hardness = 1.5
- close_delay = 100
- openSound = 'sound/effects/attackblob.ogg'
- closeSound = 'sound/effects/attackblob.ogg'
- damageSound = 'sound/effects/attackblob.ogg'
- sheetType = null
-
-/obj/structure/mineral_door/resin/try_to_operate(atom/user)
- if(isalien(user))
- return ..()
diff --git a/code/game/objects/structures/stool_bed_chair_nest/alien_nests.dm b/code/game/objects/structures/stool_bed_chair_nest/alien_nests.dm
index 80a3ab3b3d9..cc4ac4e012f 100644
--- a/code/game/objects/structures/stool_bed_chair_nest/alien_nests.dm
+++ b/code/game/objects/structures/stool_bed_chair_nest/alien_nests.dm
@@ -14,12 +14,12 @@
. = ..()
nest_overlay = image('icons/mob/alien.dmi', "nestoverlay", layer=MOB_LAYER - 0.2)
-/obj/structure/bed/nest/user_unbuckle_mob(mob/living/user)
+/obj/structure/bed/nest/user_unbuckle_mob(mob/living/buckled_mob, mob/user)
if(has_buckled_mobs())
for(var/buck in buckled_mobs) //breaking a nest releases all the buckled mobs, because the nest isn't holding them down anymore
var/mob/living/M = buck
- if(user.get_int_organ(/obj/item/organ/internal/xenos/plasmavessel))
+ if(user.get_int_organ(/obj/item/organ/internal/xenos/hivenode))
unbuckle_mob(M)
add_fingerprint(user)
return
@@ -45,15 +45,16 @@
unbuckle_mob(M)
add_fingerprint(user)
-
/obj/structure/bed/nest/user_buckle_mob(mob/living/M, mob/living/user)
if (!ismob(M) || (get_dist(src, user) > 1) || (M.loc != loc) || user.incapacitated() || M.buckled)
return
- if(M.get_int_organ(/obj/item/organ/internal/xenos/plasmavessel))
+ if(M.get_int_organ(/obj/item/organ/internal/xenos/hivenode))
+ to_chat(user, "[M]'s linkage with the hive prevents you from securing them into [src]")
return
- if(!user.get_int_organ(/obj/item/organ/internal/xenos/plasmavessel))
+ if(!user.get_int_organ(/obj/item/organ/internal/xenos/hivenode))
+ to_chat(user, "Your lack of linkage to the hive prevents you from buckling [M] into [src]")
return
if(has_buckled_mobs())
@@ -87,8 +88,10 @@
/obj/structure/bed/nest/attack_alien(mob/living/carbon/alien/user)
if(user.a_intent != INTENT_HARM)
return attack_hand(user)
- else
- return ..()
+ if(!do_after(user, 4 SECONDS, target = src) || QDELETED(src))
+ return
+ playsound(loc, pick('sound/effects/alien_resin_break2.ogg','sound/effects/alien_resin_break1.ogg'), 50, FALSE)
+ qdel(src)
/obj/structure/bed/nest/prevents_buckled_mobs_attacking()
return TRUE
diff --git a/code/game/turfs/turf.dm b/code/game/turfs/turf.dm
index c55913c0205..485e843e399 100644
--- a/code/game/turfs/turf.dm
+++ b/code/game/turfs/turf.dm
@@ -279,11 +279,16 @@
//update firedoor adjacency
var/list/turfs_to_check = get_adjacent_open_turfs(src) | src
- for(var/I in turfs_to_check)
- var/turf/T = I
+ for(var/turf/T in turfs_to_check)
for(var/obj/machinery/door/firedoor/FD in T)
FD.CalculateAffectingAreas()
+ // Check for weeds and either update, create or delete wall weeds
+ turfs_to_check = AdjacentTurfs(open_only = TRUE, cardinal_only = FALSE)
+ for(var/turf/T in turfs_to_check)
+ for(var/obj/structure/alien/weeds/W in T)
+ W.check_surroundings()
+
if(!keep_cabling && !can_have_cabling())
for(var/obj/structure/cable/C in contents)
qdel(C)
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 a62dc4be832..1593bab6d4d 100644
--- a/code/modules/mob/living/carbon/alien/humanoid/alien_powers.dm
+++ b/code/modules/mob/living/carbon/alien/humanoid/alien_powers.dm
@@ -28,9 +28,14 @@ Doesn't work on other aliens/AI.*/
return
if(powerc(50,1))
+ for(var/obj/structure/alien/resin in get_turf(src))
+ to_chat(src, "There is already a resin construction here.")
+ return
adjustPlasma(-50)
for(var/mob/O in viewers(src, null))
O.show_message(text("[src] has planted some alien weeds!"), 1)
+ for(var/obj/structure/alien/weeds/W in get_turf(src))
+ qdel(W)
new /obj/structure/alien/weeds/node(loc)
return
@@ -114,29 +119,39 @@ Doesn't work on other aliens/AI.*/
return
/mob/living/carbon/alien/humanoid/proc/resin() // -- TLE
- set name = "Secrete Resin (55)"
+ set name = "Secrete Resin"
set desc = "Secrete tough malleable resin."
set category = "Alien"
+ var/list/resin_buildings = list("Resin Wall (55)" = image(icon = 'icons/obj/smooth_structures/alien/resin_wall.dmi', icon_state = "resin_wall-0"),
+ "Resin Nest (55)" = image(icon = 'icons/mob/alien.dmi', icon_state = "nest"),
+ "Resin Door (80)" = image(icon = 'icons/obj/smooth_structures/alien/resin_door.dmi', icon_state = "resin"))
+ var/choice = show_radial_menu(src, src, resin_buildings, src, radius = 40)
if(powerc(55, TRUE))
- var/choice = input("Choose what you wish to shape.","Resin building") as null|anything in list("resin wall","resin membrane","resin nest") //would do it through typesof but then the player choice would have the type path and we don't want the internal workings to be exposed ICly - Urist
-
- if(!choice || !powerc(55, TRUE))
- return
- var/obj/structure/alien/resin/T = locate() in get_turf(src)
- if(T)
+ var/built = FALSE
+ if(locate(/obj/structure/alien/resin) in get_turf(src))
to_chat(src, "There is already a resin construction here.")
return
adjustPlasma(-55)
- for(var/mob/O in viewers(src, null))
- O.show_message(text("[src] vomits up a thick purple substance and shapes it!"), 1)
+
switch(choice)
- if("resin wall")
+ if("Resin Wall (55)")
new /obj/structure/alien/resin/wall(loc)
- if("resin membrane")
- new /obj/structure/alien/resin/membrane(loc)
- if("resin nest")
+ built = TRUE
+ if("Resin Nest (55)")
new /obj/structure/bed/nest(loc)
+ built = TRUE
+ if("Resin Door (80)")
+ if(powerc(25, TRUE))
+ var/obj/structure/alien/resin/door/door = new(loc)
+ door.dir = dir
+ adjustPlasma(-25)
+ built = TRUE
+ else
+ to_chat(src, "Not enough plasma stored.")
+ adjustPlasma(55)
+ if(built)
+ visible_message("[src] vomits up a thick purple substance and shapes it!")
return
/mob/living/carbon/alien/humanoid/verb/regurgitate()
diff --git a/code/modules/mob/living/carbon/alien/humanoid/queen.dm b/code/modules/mob/living/carbon/alien/humanoid/queen.dm
index 6b53be110cc..093d279908d 100644
--- a/code/modules/mob/living/carbon/alien/humanoid/queen.dm
+++ b/code/modules/mob/living/carbon/alien/humanoid/queen.dm
@@ -15,14 +15,15 @@
alien_slash_damage = 30 //Queens do higher slashing damage to people
alien_movement_delay = 1 //This represents a movement delay of 1, or roughly 80% the movement speed of a normal carbon mob
-
/mob/living/carbon/alien/humanoid/queen/Initialize(mapload)
. = ..()
//there should only be one queen
for(var/mob/living/carbon/alien/humanoid/queen/Q in GLOB.alive_mob_list)
if(Q == src)
+ ADD_TRAIT(Q, TRAIT_FORCE_DOORS, VAMPIRE_TRAIT)
continue
if(Q.stat == DEAD)
+ ADD_TRAIT(Q, TRAIT_FORCE_DOORS, VAMPIRE_TRAIT)
continue
if(Q.client)
name = "alien princess ([rand(1, 999)])" //if this is too cutesy feel free to change it/remove it.
diff --git a/icons/mob/alien.dmi b/icons/mob/alien.dmi
index 74154047ccc6bed413b91cc3ff5772ddef7c1cf9..15631f719dbc4def003ec1d6aa2479d7f0fa4044 100644
GIT binary patch
literal 74965
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
F_n)1eAH!&{`FY=
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⪼_ck
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