diff --git a/code/__defines/mobs.dm b/code/__defines/mobs.dm
index 8bc561b4a6..d9a5f7a847 100644
--- a/code/__defines/mobs.dm
+++ b/code/__defines/mobs.dm
@@ -319,13 +319,13 @@
#define SPECIES_VR_SKELETON "Virtual Reality Skeleton"
#define SPECIES_VR_VOX "Virtual Reality Vox"
-// Ayyy IDs. CHOMPedit
-#define SPECIES_GENA "Genaprawn"
-#define SPECIES_GENA_DRONE "Genaprawn Drone"
-#define SPECIES_GENA_HUNTER "Genaprawn Hunter"
-#define SPECIES_GENA_SENTINEL "Genaprawn Sentinel"
-#define SPECIES_GENA_QUEEN "Genaprawn Queen"
-//CHOMPedit end
+// Ayyy IDs.
+#define SPECIES_XENO "Xenomorph"
+#define SPECIES_XENO_DRONE "Xenomorph Drone"
+#define SPECIES_XENO_HUNTER "Xenomorph Hunter"
+#define SPECIES_XENO_SENTINEL "Xenomorph Sentinel"
+#define SPECIES_XENO_QUEEN "Xenomorph Queen"
+
// Misc species. Mostly unused but might as well be complete.
#define SPECIES_SHADOW "Shadow"
#define SPECIES_SKELETON "Skeleton"
diff --git a/code/_helpers/global_lists_vr.dm b/code/_helpers/global_lists_vr.dm
index 7224522352..47107f6888 100644
--- a/code/_helpers/global_lists_vr.dm
+++ b/code/_helpers/global_lists_vr.dm
@@ -507,11 +507,11 @@ var/global/list/remainless_species = list(SPECIES_PROMETHEAN,
SPECIES_MONKEY_NEVREAN,
SPECIES_MONKEY_SERGAL,
SPECIES_MONKEY_VULPKANIN,
- SPECIES_GENA, //Same for xenos, CHOMPedit
- SPECIES_GENA_DRONE,
- SPECIES_GENA_HUNTER,
- SPECIES_GENA_SENTINEL,
- SPECIES_GENA_QUEEN, //CHOMPedit end
+ SPECIES_XENO, //Same for xenos,
+ SPECIES_XENO_DRONE,
+ SPECIES_XENO_HUNTER,
+ SPECIES_XENO_SENTINEL,
+ SPECIES_XENO_QUEEN,
SPECIES_SHADOW,
SPECIES_GOLEM, //Some special species that may or may not be ever used in event too,
SPECIES_SHADEKIN) //Shadefluffers just poof away
diff --git a/code/controllers/configuration.dm b/code/controllers/configuration.dm
index 037664027a..7ddfc9e088 100644
--- a/code/controllers/configuration.dm
+++ b/code/controllers/configuration.dm
@@ -232,7 +232,7 @@ var/list/gamemode_cache = list()
// 15, 45, 70 minutes respectively
var/static/list/event_delay_upper = list(EVENT_LEVEL_MUNDANE = 9000, EVENT_LEVEL_MODERATE = 27000, EVENT_LEVEL_MAJOR = 42000)
- var/static/aliens_allowed = 1 //CHOMPedit to 1. This not only allows the natural spawning of xenos, but also the ability to lay eggs. Genaprawns cannot lay eggs if this is 0
+ var/static/aliens_allowed = 1
var/static/ninjas_allowed = 0
var/static/abandon_allowed = 1
var/static/ooc_allowed = 1
diff --git a/code/game/machinery/doors/airlock.dm b/code/game/machinery/doors/airlock.dm
index 02f80de642..279efa36a5 100644
--- a/code/game/machinery/doors/airlock.dm
+++ b/code/game/machinery/doors/airlock.dm
@@ -86,17 +86,17 @@
var/mob/living/carbon/human/X = user
if(istype(X.species, /datum/species/xenos))
if(src.locked || src.welded)
- visible_message("\The [user] begins tearing into \the [src] internals!") //CHOMPedit . edited message to make it more violent
+ visible_message("\The [user] begins tearing into \the [src] internals!")
src.do_animate("deny")
- if(do_after(user,30 SECONDS,src)) //CHOMPedit . Increased time to force open welded door for alien
- visible_message("\The [user] tears \the [src] open, sparks flying from its electronics!") //CHOMPedit
+ if(do_after(user,15 SECONDS,src))
+ visible_message("\The [user] tears \the [src] open, sparks flying from its electronics!")
src.do_animate("spark")
- playsound(src, 'sound/machines/door/airlock_creaking_xeno.ogg', 100, 1, volume_channel = VOLUME_CHANNEL_DOORS) //CHOMPedit gave xeno airlock breaking its own sound effect
+ playsound(src, 'sound/machines/door/airlock_tear_apart.ogg', 100, 1, volume_channel = VOLUME_CHANNEL_DOORS)
src.locked = 0
src.welded = 0
update_icon()
open(1)
- src.set_broken() //CHOMPedit . Changed action to make ripping open the airlock more realistic
+ src.set_broken() //These aren't emags, these be CLAWS
else if(src.density)
visible_message("\The [user] begins forcing \the [src] open!")
if(do_after(user, 5 SECONDS,src))
diff --git a/code/game/objects/effects/alien/aliens.dm b/code/game/objects/effects/alien/aliens.dm
index 0cc5868762..c0c01f3a46 100644
--- a/code/game/objects/effects/alien/aliens.dm
+++ b/code/game/objects/effects/alien/aliens.dm
@@ -203,6 +203,7 @@
layer = ABOVE_TURF_LAYER+0.01
light_range = NODERANGE
light_on = TRUE
+ light_color = "#673972"
var/node_range = NODERANGE
var/set_color = "#321D37"
@@ -420,5 +421,3 @@
if(0 to 1)
visible_message("[src.target] begins to crumble under the acid!")
spawn(rand(150, 200)) tick()
-
-//CHOMPedit old eggs removed
diff --git a/code/game/objects/structures/alien/alien egg.dm b/code/game/objects/structures/alien/alien egg.dm
new file mode 100644
index 0000000000..90319e8a83
--- /dev/null
+++ b/code/game/objects/structures/alien/alien egg.dm
@@ -0,0 +1,96 @@
+#define MAX_PROGRESS 100
+
+/obj/structure/alien/egg //Gurg Addition, working alien egg structure.
+ desc = "It looks like a weird egg."
+ name = "egg"
+ icon_state = "egg_growing"
+ density = 0
+ anchored = 1
+ var/progress = 0
+
+/obj/structure/alien/egg/Initialize()
+ . = ..()
+ START_PROCESSING(SSobj, src)
+
+/obj/structure/alien/egg/Destroy()
+ STOP_PROCESSING(SSobj, src)
+ . = ..()
+
+/obj/structure/alien/egg/CanUseTopic(var/mob/user)
+ return isobserver(user) ? STATUS_INTERACTIVE : STATUS_CLOSE
+
+/obj/structure/alien/egg/Topic(href, href_list)
+ if(..())
+ return 1
+
+ if(href_list["spawn"])
+ attack_ghost(usr)
+
+/obj/structure/alien/egg/process()
+ progress++
+ if(progress >= MAX_PROGRESS)
+ for(var/mob/observer/dead/O in observer_mob_list)
+ if(O.client)
+ to_chat(O, "An alien is ready to hatch at [get_area(src.loc)]! (spawn)")
+ STOP_PROCESSING(SSobj, src)
+ update_icon()
+
+/obj/structure/alien/egg/update_icon()
+ if(progress == -1)
+ icon_state = "egg_hatched"
+ else if(progress < MAX_PROGRESS)
+ icon_state = "egg_growing"
+ else
+ icon_state = "egg"
+
+/obj/structure/alien/egg/attack_ghost(var/mob/observer/ghost/user)
+ if(progress == -1) //Egg has been hatched.
+ return
+
+ if(progress < MAX_PROGRESS)
+ to_chat(user, "\The [src] has not yet matured.")
+ return
+
+ if(!user.MayRespawn(1))
+ return
+
+ // Check for bans properly.
+ if(jobban_isbanned(user, "Xenomorph"))
+ to_chat(user, "You are banned from playing a Xenomorph.")
+ return
+
+ var/confirm = alert(user, "Are you sure you want to join as a Xenomorph larva?", "Become Larva", "No", "Yes")
+
+ if(!src || confirm != "Yes")
+ return
+
+ if(!user || !user.ckey)
+ return
+
+ if(progress == -1) //Egg has been hatched.
+ to_chat(user, "Too slow...")
+ return
+
+ flick("egg_opening",src)
+ progress = -1 // No harvesting pls.
+ sleep(5)
+
+ if(!src || !user)
+ visible_message("\The [src] writhes with internal motion, but nothing comes out.")
+ progress = MAX_PROGRESS // Someone else can have a go.
+ return // What a pain.
+
+ // Create the mob, transfer over key.
+ var/mob/living/carbon/alien/larva/larva = new(get_turf(src))
+ larva.ckey = user.ckey
+ spawn(-1)
+ if(user) qdel(user) // Remove the keyless ghost if it exists.
+
+ visible_message("\The [src] splits open with a wet slithering noise, and \the [larva] writhes free!")
+
+ // Turn us into a hatched egg.
+ name = "hatched alien egg"
+ desc += " This one has hatched."
+ update_icon()
+
+#undef MAX_PROGRESS
diff --git a/code/game/objects/structures/alien/alien.dm b/code/game/objects/structures/alien/alien.dm
new file mode 100644
index 0000000000..31a609e5a5
--- /dev/null
+++ b/code/game/objects/structures/alien/alien.dm
@@ -0,0 +1,62 @@
+/obj/structure/alien //Gurg Addition, framework for alien eggs.
+ name = "alien thing"
+ desc = "There's something alien about this."
+ icon = 'icons/mob/alien.dmi'
+ layer = ABOVE_JUNK_LAYER
+ var/health = 50
+
+/obj/structure/alien/proc/healthcheck()
+ if(health <=0)
+ set_density(0)
+ qdel(src)
+ return
+
+/obj/structure/alien/bullet_act(var/obj/item/projectile/Proj)
+ health -= Proj.damage
+ ..()
+ healthcheck()
+ return
+
+/obj/structure/alien/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/structure/alien/hitby(AM as mob|obj)
+ ..()
+ visible_message("\The [src] was hit by \the [AM].")
+ var/tforce = 0
+ if(ismob(AM))
+ tforce = 10
+ else
+ tforce = AM:throwforce
+ playsound(loc, 'sound/effects/attackblob.ogg', 100, 1)
+ health = max(0, health - tforce)
+ healthcheck()
+ ..()
+ return
+
+/obj/structure/alien/attack_generic()
+ attack_hand(usr)
+
+/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)
+ 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))
+ return !opacity
+ return !density
diff --git a/code/modules/mob/living/carbon/alien/alien.dm b/code/modules/mob/living/carbon/alien/alien.dm
index a90553b2e5..35aca42244 100644
--- a/code/modules/mob/living/carbon/alien/alien.dm
+++ b/code/modules/mob/living/carbon/alien/alien.dm
@@ -43,10 +43,6 @@
/mob/living/carbon/alien/u_equip(obj/item/W as obj)
return
-/*/mob/living/carbon/alien/Stat() //CHOMPedit. Commented out because this doesn't work properly for larva, when it should. Will probably give Diona their own kind of they don't have one
- ..()
- stat(null, "Progress: [amount_grown]/[max_grown]") */
-
/mob/living/carbon/alien/restrained()
return 0
diff --git a/code/modules/mob/living/carbon/alien/diona/progression.dm b/code/modules/mob/living/carbon/alien/diona/progression.dm
index 1fd40b4311..6a8d0864f4 100644
--- a/code/modules/mob/living/carbon/alien/diona/progression.dm
+++ b/code/modules/mob/living/carbon/alien/diona/progression.dm
@@ -1,3 +1,8 @@
+/mob/living/carbon/alien/diona/Stat() //Specified where progression is at, doesn't work right for some things in carbon/alien
+ . = ..()
+ if(. && statpanel("Status"))
+ stat("Growth", "[round(amount_grown)]/[max_grown]")
+
/mob/living/carbon/alien/diona/confirm_evolution()
if(!is_alien_whitelisted(src, GLOB.all_species[SPECIES_DIONA]))
diff --git a/code/modules/mob/living/carbon/alien/larva/larva.dm b/code/modules/mob/living/carbon/alien/larva/larva.dm
index 6582b5f6a8..41630f8282 100644
--- a/code/modules/mob/living/carbon/alien/larva/larva.dm
+++ b/code/modules/mob/living/carbon/alien/larva/larva.dm
@@ -5,10 +5,10 @@
speak_emote = list("hisses")
icon_state = "larva"
language = "Hivemind"
- maxHealth = 50 //CHOMPedit. Larva can gain a little more health on weeds/phoron to make them just a little harder to kill
- health = 25
+ maxHealth = 50
+ health = 50
faction = "xeno"
- max_grown = 325 //CHOMPedit. Since xenos can reproduce without people now I decided to drastically increase the growth time
+ max_grown = 325 //Increase larva growth time due to not needing hosts.
/mob/living/carbon/alien/larva/Initialize()
. = ..()
diff --git a/code/modules/mob/living/carbon/alien/larva/progression.dm b/code/modules/mob/living/carbon/alien/larva/progression.dm
index 21cd101f50..2318c87187 100644
--- a/code/modules/mob/living/carbon/alien/larva/progression.dm
+++ b/code/modules/mob/living/carbon/alien/larva/progression.dm
@@ -1,4 +1,4 @@
-/mob/living/carbon/alien/larva/Stat() //CHOMPedit. Oh thank god we can see how close we are to full grown now
+/mob/living/carbon/alien/larva/Stat() //Specified where progression stats come from, because for some reason it doesn't work right in carbon/alien
. = ..()
if(. && statpanel("Status"))
stat("Growth", "[round(amount_grown)]/[max_grown]")
diff --git a/code/modules/mob/living/carbon/alien/life.dm b/code/modules/mob/living/carbon/alien/life.dm
index 7eee938239..64e5145b97 100644
--- a/code/modules/mob/living/carbon/alien/life.dm
+++ b/code/modules/mob/living/carbon/alien/life.dm
@@ -28,7 +28,7 @@
var/rads = radiation/25
radiation -= rads
- /*adjust_nutrition(rads)*/ //CHOMPedit. Commented out to prevent xeno/diona obesity, it was a real problem
+ //adjust_nutrition(rads) //Commented out to prevent alien obesity.
heal_overall_damage(rads,rads)
adjustOxyLoss(-(rads))
adjustToxLoss(-(rads))
diff --git a/code/modules/mob/living/carbon/human/species/species_attack.dm b/code/modules/mob/living/carbon/human/species/species_attack.dm
index 3b38201206..5e2aaafb8e 100644
--- a/code/modules/mob/living/carbon/human/species/species_attack.dm
+++ b/code/modules/mob/living/carbon/human/species/species_attack.dm
@@ -64,11 +64,11 @@
/datum/unarmed_attack/claws/strong/xeno
attack_verb = list("slashed", "gouged", "stabbed")
- damage = 10
+ damage = 15
/datum/unarmed_attack/claws/strong/xeno/queen
attack_verb = list("slashed", "gouged", "stabbed", "gored")
- damage = 15
+ damage = 20
/datum/unarmed_attack/bite/strong
attack_name = "strong bite"
@@ -77,7 +77,7 @@
shredding = 1
/datum/unarmed_attack/bite/strong/xeno
- damage = 10
+ damage = 15
/datum/unarmed_attack/slime_glomp
attack_name = "glomp"
diff --git a/code/modules/mob/living/carbon/human/species/xenomorphs/alien_embryo.dm b/code/modules/mob/living/carbon/human/species/xenomorphs/alien_embryo.dm
deleted file mode 100644
index 88efb6d355..0000000000
--- a/code/modules/mob/living/carbon/human/species/xenomorphs/alien_embryo.dm
+++ /dev/null
@@ -1,161 +0,0 @@
-// This is to replace the previous datum/disease/alien_embryo for slightly improved handling and maintainability
-// It functions almost identically (see code/datums/diseases/alien_embryo.dm)
-
-/*
-/obj/item/alien_embryo //Commented out as reference for future reproduction methods, or addition later.
- name = "alien embryo"
- desc = "All slimy and yuck."
- icon = 'icons/mob/alien.dmi'
- icon_state = "larva0_dead"
- var/mob/living/affected_mob
- var/stage = 0
-
-/obj/item/alien_embryo/New()
- if(istype(loc, /mob/living))
- affected_mob = loc
- START_PROCESSING(SSobj, src)
- spawn(0)
- AddInfectionImages(affected_mob)
- else
- qdel(src)
-
-/obj/item/alien_embryo/Destroy()
- if(affected_mob)
- affected_mob.status_flags &= ~(XENO_HOST)
- spawn(0)
- RemoveInfectionImages(affected_mob)
- ..()
-
-/obj/item/alien_embryo/process()
- if(!affected_mob) return
- if(loc != affected_mob)
- affected_mob.status_flags &= ~(XENO_HOST)
- STOP_PROCESSING(SSobj, src)
- spawn(0)
- RemoveInfectionImages(affected_mob)
- affected_mob = null
- return
-
- if(stage < 5 && prob(3))
- stage++
- spawn(0)
- RefreshInfectionImage(affected_mob)
-
- switch(stage)
- if(2, 3)
- if(prob(1))
- affected_mob.emote("sneeze")
- if(prob(1))
- affected_mob.emote("cough")
- if(prob(1))
- to_chat(affected_mob, "Your throat feels sore.")
- if(prob(1))
- to_chat(affected_mob, "Mucous runs down the back of your throat.")
- if(4)
- if(prob(1))
- affected_mob.emote("sneeze")
- if(prob(1))
- affected_mob.emote("cough")
- if(prob(2))
- to_chat(affected_mob, " Your muscles ache.")
- if(prob(20))
- affected_mob.take_organ_damage(1)
- if(prob(2))
- to_chat(affected_mob, "Your stomach hurts.")
- if(prob(20))
- affected_mob.adjustToxLoss(1)
- affected_mob.updatehealth()
- if(5)
- to_chat(affected_mob, "You feel something tearing its way out of your stomach...")
- affected_mob.adjustToxLoss(10)
- affected_mob.updatehealth()
- if(prob(50))
- AttemptGrow()
-
-/obj/item/alien_embryo/proc/AttemptGrow(var/gib_on_success = 1)
- var/list/candidates = get_alien_candidates()
- var/picked = null
-
- // To stop clientless larva, we will check that our host has a client
- // if we find no ghosts to become the alien. If the host has a client
- // he will become the alien but if he doesn't then we will set the stage
- // to 2, so we don't do a process heavy check everytime.
-
- if(candidates.len)
- picked = pick(candidates)
- else if(affected_mob.client)
- picked = affected_mob.key
- else
- stage = 4 // Let's try again later.
- return
-
- if(affected_mob.lying)
- affected_mob.add_overlay("burst_lie")
- else
- affected_mob.add_overlay("burst_stand")
- spawn(6)
- var/mob/living/carbon/alien/larva/new_xeno = new(affected_mob.loc)
- new_xeno.key = picked
- new_xeno << sound('sound/voice/hiss5.ogg',0,0,0,100) //To get the player's attention
- if(gib_on_success)
- affected_mob.gib()
- qdel(src)
-
-/*----------------------------------------
-Proc: RefreshInfectionImage()
-Des: Removes all infection images from aliens and places an infection image on all infected mobs for aliens.
-----------------------------------------*/
-/obj/item/alien_embryo/proc/RefreshInfectionImage()
-
- for(var/mob/living/carbon/alien in player_list)
-
- if(!locate(/obj/item/organ/internal/xenos/hivenode) in alien.internal_organs)
- continue
-
- if(alien.client)
- for(var/image/I in alien.client.images)
- if(dd_hasprefix_case(I.icon_state, "infected"))
- qdel(I)
- for(var/mob/living/L in mob_list)
- if(iscorgi(L) || iscarbon(L))
- if(L.status_flags & XENO_HOST)
- var/I = image('icons/mob/alien.dmi', loc = L, icon_state = "infected[stage]")
- alien.client.images += I
-
-/*----------------------------------------
-Proc: AddInfectionImages(C)
-Des: Checks if the passed mob (C) is infected with the alien egg, then gives each alien client an infected image at C.
-----------------------------------------*/
-/obj/item/alien_embryo/proc/AddInfectionImages(var/mob/living/C)
- if(C)
-
- for(var/mob/living/carbon/alien in player_list)
-
- if(!locate(/obj/item/organ/internal/xenos/hivenode) in alien.internal_organs)
- continue
-
- if(alien.client)
- if(C.status_flags & XENO_HOST)
- var/I = image('icons/mob/alien.dmi', loc = C, icon_state = "infected[stage]")
- alien.client.images += I
-
-/*----------------------------------------
-Proc: RemoveInfectionImage(C)
-Des: Removes the alien infection image from all aliens in the world located in passed mob (C).
-----------------------------------------*/
-
-/obj/item/alien_embryo/proc/RemoveInfectionImages(var/mob/living/C)
-
- if(C)
-
- for(var/mob/living/carbon/alien in player_list)
-
- if(!locate(/obj/item/organ/internal/xenos/hivenode) in alien.internal_organs)
- continue
-
- if(alien.client)
- for(var/image/I in alien.client.images)
- if(I.loc == C)
- if(dd_hasprefix_case(I.icon_state, "infected"))
- qdel(I)
-*/
diff --git a/code/modules/mob/living/carbon/human/species/xenomorphs/alien_powers.dm b/code/modules/mob/living/carbon/human/species/xenomorphs/alien_powers.dm
index 262c5bd732..27e1df5b5a 100644
--- a/code/modules/mob/living/carbon/human/species/xenomorphs/alien_powers.dm
+++ b/code/modules/mob/living/carbon/human/species/xenomorphs/alien_powers.dm
@@ -2,7 +2,7 @@
for(var/mob/living/carbon/human/Q in living_mob_list)
if(self && ignore_self && self == Q)
continue
- if(Q.species.name != SPECIES_GENA_QUEEN) //CHOMPedit
+ if(Q.species.name != SPECIES_XENO_QUEEN)
continue
if(!Q.key || !Q.client || Q.stat)
continue
@@ -79,8 +79,8 @@
// Queen verbs.
/mob/living/carbon/human/proc/lay_egg()
- set name = "Lay Egg (200)" //CHOMPedit changed number value
- set desc = "Lay an egg that hatch into larva." //CHOMPedit
+ set name = "Lay Egg (200)"
+ set desc = "Lay an egg to produce huggers to impregnate prey with."
set category = "Abilities"
if(!config.aliens_allowed)
@@ -88,13 +88,13 @@
verbs -= /mob/living/carbon/human/proc/lay_egg
return
- if(locate(/obj/structure/alien/egg) in get_turf(src)) //CHOMPedit. Changed from obj/effect to obj/structure
+ if(locate(/obj/structure/alien/egg) in get_turf(src))
to_chat(src, "There's already an egg here.")
return
- if(check_alien_ability(200,1,O_EGG)) //CHOMPedit changed plasma cost from 75 to 200
+ if(check_alien_ability(200,1,O_EGG))
visible_message("[src] has laid an egg!")
- new /obj/structure/alien/egg(loc) //CHOMPedit. Changed from obj/effect to obj/structure
+ new /obj/structure/alien/egg(loc)
return
@@ -110,7 +110,7 @@
if(check_alien_ability(500))
visible_message("[src] begins to twist and contort!", "You begin to evolve!")
- src.set_species("Genaprawn Queen") //CHOMPedit
+ src.set_species("Xenomorph Queen")
return
@@ -144,7 +144,7 @@
P.firer = src
P.old_style_target(A)
P.fire()
- playsound(src, 'sound/weapons/pierce.ogg', 25, 0)
+ playsound(src, 'sound/weapons/alien_spitacid.ogg', 25, 0)
/mob/living/carbon/human/proc/corrosive_acid(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)"
@@ -329,7 +329,7 @@
/mob/living/carbon/human/proc/gut()
set category = "Abilities"
- set name = "Slaughter" //CHOMPedit renamed Gut to Slaughter so its more obvious what it does
+ set name = "Slaughter"
set desc = "While grabbing someone aggressively, rip their guts out or tear them apart."
if(last_special > world.time)
@@ -345,7 +345,7 @@
return
if(G.state < GRAB_AGGRESSIVE)
- to_chat(src, "You must have an aggressive grab to slaughter your prey!") //CHOMPedit
+ to_chat(src, "You must have an aggressive grab to slaughter your prey!")
return
last_special = world.time + 50
diff --git a/code/modules/mob/living/carbon/human/species/xenomorphs/alien_species.dm b/code/modules/mob/living/carbon/human/species/xenomorphs/alien_species.dm
index b01849f4db..ac85b0314a 100644
--- a/code/modules/mob/living/carbon/human/species/xenomorphs/alien_species.dm
+++ b/code/modules/mob/living/carbon/human/species/xenomorphs/alien_species.dm
@@ -1,32 +1,21 @@
//Stand-in until this is made more lore-friendly.
/datum/species/xenos
- name = SPECIES_GENA //CHOMPedit
- name_plural = "Genaprawns" //CHOMPedit
+ name = SPECIES_XENO
+ name_plural = "Xenomorphs"
- default_language = "Xenolingua" //CHOMPedit
+ default_language = "Xenomorph"
language = "Hivemind"
assisted_langs = list()
unarmed_types = list(/datum/unarmed_attack/claws/strong/xeno, /datum/unarmed_attack/bite/strong/xeno)
hud_type = /datum/hud_data/alien
rarity_value = 3
- male_scream_sound = list('sound/effects/mob_effects/x_scream1.ogg','sound/effects/mob_effects/x_scream2.ogg','sound/effects/mob_effects/x_scream3.ogg') //CHOMPedit SCREE
- female_scream_sound = list('sound/effects/mob_effects/x_scream1.ogg','sound/effects/mob_effects/x_scream2.ogg','sound/effects/mob_effects/x_scream3.ogg') //CHOMPedit SCREE
-
- darksight = 10 //CHOMPedit. Added darksight
- vision_flags = SEE_SELF|SEE_MOBS|SEE_TURFS //CHOMPedit trying to make xenos see properly
-
- pixel_offset_x = -16 //CHOMPedit. I literally had to make a different form of pixel_x just for this species, fuck my life
-
-
- icon_template = 'icons/mob/human_races/xenos/template.dmi' //CHOMPedit. Add icon template for 64x64 sprites
-
has_fine_manipulation = 0
siemens_coefficient = 0
gluttonous = 2
- brute_mod = 0.65 //CHOMPedit. Edited brute vulnerability
- burn_mod = 1.50 //CHOMPedit. Edited burn vulnerability
+ brute_mod = 0.6 // Hardened carapace.
+ burn_mod = 1.75 // Weak to fire.
warning_low_pressure = 50
hazard_low_pressure = -1
@@ -44,21 +33,20 @@
flesh_color = "#282846"
gibbed_anim = "gibbed-a"
dusted_anim = "dust-a"
- death_message = "lets out a piercing multi-toned screech, green blood bubbling from its maw as it ceases." //CHOMPedit. Changed message.
+ death_message = "lets out a guttural screech, green blood bubbling from its maw."
death_sound = 'sound/voice/hiss6.ogg'
- damage_overlays = null //CHOMPedit. They don't have overlays yet, if someone wants to add some then be my guest
- damage_mask = null //CHOMPedit.
- blood_mask = null //CHOMPedit.
-
speech_sounds = list('sound/voice/hiss1.ogg','sound/voice/hiss2.ogg','sound/voice/hiss3.ogg','sound/voice/hiss4.ogg')
- speech_chance = 100
+ speech_chance = 75
virus_immune = 1
breath_type = null
poison_type = null
+ vision_flags = SEE_SELF|SEE_MOBS|SEE_TURFS
+ darksight = 10
+
has_organ = list(
O_HEART = /obj/item/organ/internal/heart,
O_BRAIN = /obj/item/organ/internal/brain/xeno,
@@ -93,10 +81,10 @@
)
/datum/species/xenos/get_bodytype()
- return SPECIES_GENA //CHOMPedit
+ return SPECIES_XENO
/datum/species/xenos/get_random_name()
- return "Genaprawn [caste_name] ([alien_number])" //CHOMPedit
+ return "xenomorph [caste_name] ([alien_number])"
/datum/species/xenos/can_understand(var/mob/other)
if(istype(other, /mob/living/carbon/alien/larva))
@@ -104,8 +92,8 @@
return FALSE
/datum/species/xenos/hug(var/mob/living/carbon/human/H,var/mob/living/target)
- H.visible_message("[H] caresses [target] with its eldritch arm.", \
- "You caress [target] with your eldritch arm.") //CHOMPedit. Changed messages
+ H.visible_message("[H] caresses [target] with its scythe-like arm.", \
+ "You caress [target] with your scythe-like arm.")
/datum/species/xenos/handle_post_spawn(var/mob/living/carbon/human/H)
@@ -114,7 +102,7 @@
H.mind.special_role = "Alien"
alien_number++ //Keep track of how many aliens we've had so far.
- H.real_name = "Genaprawn [caste_name] ([alien_number])" //CHOMPedit
+ H.real_name = "xenomorph [caste_name] ([alien_number])"
H.name = H.real_name
..()
@@ -167,14 +155,13 @@
return 1
return 0
-//CHOMPedit removed infection images, since they do not exist anymore.
/datum/species/xenos/drone
- name = SPECIES_GENA_DRONE //CHOMPedit
+ name = SPECIES_XENO_DRONE
caste_name = "drone"
weeds_plasma_rate = 15
slowdown = 1
- tail = null //CHOMPedit. Set to null
+ tail = "xenos_drone_tail"
rarity_value = 5
icobase = 'icons/mob/human_races/xenos/r_xenos_drone.dmi'
@@ -210,12 +197,12 @@
..()
/datum/species/xenos/hunter
- name = SPECIES_GENA_HUNTER //CHOMPedit
+ name = SPECIES_XENO_HUNTER
weeds_plasma_rate = 5
caste_name = "hunter"
- slowdown = -2
+ slowdown = -1
total_health = 150
- tail = null //CHOMPedit. Set to null
+ tail = "xenos_hunter_tail"
icobase = 'icons/mob/human_races/xenos/r_xenos_hunter.dmi'
deform = 'icons/mob/human_races/xenos/r_xenos_hunter.dmi'
@@ -240,12 +227,12 @@
)
/datum/species/xenos/sentinel
- name = SPECIES_GENA_SENTINEL //CHOMPedit
+ name = SPECIES_XENO_SENTINEL
weeds_plasma_rate = 10
caste_name = "sentinel"
slowdown = 0
total_health = 200
- tail = null //CHOMPedit. Set to null
+ tail = "xenos_sentinel_tail"
icobase = 'icons/mob/human_races/xenos/r_xenos_sentinel.dmi'
deform = 'icons/mob/human_races/xenos/r_xenos_sentinel.dmi'
@@ -273,13 +260,13 @@
/datum/species/xenos/queen
- name = SPECIES_GENA_QUEEN //CHOMPedit
- total_health = 300 //CHOMPedit. Queen is chonk
+ name = SPECIES_XENO_QUEEN
+ total_health = 300
weeds_heal_rate = 5
weeds_plasma_rate = 20
caste_name = "queen"
- slowdown = 4
- tail = null //CHOMPedit. Set to null
+ slowdown = 3
+ tail = "xenos_queen_tail"
rarity_value = 10
icobase = 'icons/mob/human_races/xenos/r_xenos_queen.dmi'
@@ -317,10 +304,10 @@
..()
// Make sure only one official queen exists at any point.
if(!alien_queen_exists(1,H))
- H.real_name = "Genaprawn queen ([alien_number])" //CHOMPedit
+ H.real_name = "xenomorph queen ([alien_number])"
H.name = H.real_name
else
- H.real_name = "Genaprawn princess ([alien_number])" //CHOMPedit
+ H.real_name = "xenomorph princess ([alien_number])"
H.name = H.real_name
/datum/hud_data/alien
@@ -341,4 +328,4 @@
gear = list(
"storage1" = list("loc" = ui_storage1, "name" = "Left Pocket", "slot" = slot_l_store, "state" = "pocket"),
"storage2" = list("loc" = ui_storage2, "name" = "Right Pocket", "slot" = slot_r_store, "state" = "pocket"),
- ) //CHOMPedit removed head and outer layer item slots, since they caused a slew of problems with xenomorphs
+ ) //Removed hat and outer slots, it caused too many problems that required admin intervention.
diff --git a/code/modules/mob/living/carbon/human/species/xenomorphs/xenomorphs.dm b/code/modules/mob/living/carbon/human/species/xenomorphs/xenomorphs.dm
index 7330c80c38..6c73c18430 100644
--- a/code/modules/mob/living/carbon/human/species/xenomorphs/xenomorphs.dm
+++ b/code/modules/mob/living/carbon/human/species/xenomorphs/xenomorphs.dm
@@ -4,28 +4,27 @@
if(!target || !alien_caste) return
var/mob/living/carbon/human/new_alien = new(target)
- new_alien.set_species("Genaprawn [alien_caste]") //CHOMPedit
+ new_alien.set_species("Xenomorph [alien_caste]")
return new_alien
/mob/living/carbon/human/xdrone/New(var/new_loc)
h_style = "Bald"
faction = "xeno"
- ..(new_loc, SPECIES_GENA_DRONE) //CHOMPedit
+ ..(new_loc, SPECIES_XENO_DRONE)
/mob/living/carbon/human/xsentinel/New(var/new_loc)
h_style = "Bald"
faction = "xeno"
- ..(new_loc, SPECIES_GENA_SENTINEL) //CHOMPedit
+ ..(new_loc, SPECIES_XENO_SENTINEL)
/mob/living/carbon/human/xhunter/New(var/new_loc)
h_style = "Bald"
faction = "xeno"
- ..(new_loc, SPECIES_GENA_HUNTER) //CHOMPedit
+ ..(new_loc, SPECIES_XENO_HUNTER)
/mob/living/carbon/human/xqueen/New(var/new_loc)
h_style = "Bald"
faction = "xeno"
- ..(new_loc, SPECIES_GENA_QUEEN) //CHOMPedit
-
-//CHOMPedit. Removed AddInfectionImages code, due to it being commented out and not used
+ ..(new_loc, SPECIES_XENO_QUEEN)
+//Removed AddInfectionImages, no longer required.
diff --git a/code/modules/paperwork/photocopier.dm b/code/modules/paperwork/photocopier.dm
index 74cceb11f6..72eca4beb4 100644
--- a/code/modules/paperwork/photocopier.dm
+++ b/code/modules/paperwork/photocopier.dm
@@ -286,7 +286,7 @@
temp_img = icon('icons/obj/butts_vr.dmi', "machine")
if(SPECIES_WEREBEAST)
temp_img = icon('icons/obj/butts_vr.dmi', "vulp") // Give Werewolves their own thicc'er than a boal of oatmeal ass sprite someday?
- if(SPECIES_XENOHYBRID, SPECIES_GENA, SPECIES_GENA_DRONE, SPECIES_GENA_HUNTER, SPECIES_GENA_QUEEN, SPECIES_GENA_SENTINEL) // Xenos + Xenohybrids have their own asses, thanks to Pybro. CHOMPedit
+ if(SPECIES_XENOHYBRID, SPECIES_XENO, SPECIES_XENO_DRONE, SPECIES_XENO_HUNTER, SPECIES_XENO_QUEEN, SPECIES_XENO_SENTINEL) // Xenos + Xenohybrids have their own asses, thanks to Pybro.
temp_img = icon('icons/obj/butts_vr.dmi', "xeno")
if(SPECIES_ZORREN_HIGH)
temp_img = icon('icons/obj/butts_vr.dmi', "vulp") // placeholder until we get zorren butts.
diff --git a/code/modules/projectiles/projectile/energy.dm b/code/modules/projectiles/projectile/energy.dm
index 91896ed393..bb05ff47cb 100644
--- a/code/modules/projectiles/projectile/energy.dm
+++ b/code/modules/projectiles/projectile/energy.dm
@@ -144,17 +144,21 @@
agony = 10
check_armour = "bio"
armor_penetration = 25 // It's acid
+ hitsound_wall = 'sound/weapons/effects/alien_spit_wall.ogg'
+ hitsound = 'sound/weapons/effects/alien_spit_wall.ogg'
combustion = FALSE
/obj/item/projectile/energy/neurotoxin
name = "neurotoxic spit"
icon_state = "neurotoxin"
- damage = 5
+ damage = 0
damage_type = BIOACID
agony = 60 //CHOMPedit lowered agony damage
check_armour = "bio"
armor_penetration = 25 // It's acid-based
+ hitsound_wall = 'sound/weapons/effects/alien_spit_wall.ogg'
+ hitsound = 'sound/weapons/effects/alien_spit_wall.ogg'
combustion = FALSE
diff --git a/code/modules/surgery/organs_internal.dm b/code/modules/surgery/organs_internal.dm
index 063a313b5b..e5f49cc922 100644
--- a/code/modules/surgery/organs_internal.dm
+++ b/code/modules/surgery/organs_internal.dm
@@ -14,7 +14,7 @@
return 0
return affected && affected.open == (affected.encased ? 3 : 2)
-//CHOMPedit. Removed unused embryo surgery
+//Removed unused Embryo Surgery, derelict and broken.
//////////////////////////////////////////////////////////////////
// CHEST INTERNAL ORGAN SURGERY //
diff --git a/maps/submaps/pois_vr/debris_field/derelict.dmm b/maps/submaps/pois_vr/debris_field/derelict.dmm
index c1dcd09022..cbc325c351 100644
--- a/maps/submaps/pois_vr/debris_field/derelict.dmm
+++ b/maps/submaps/pois_vr/debris_field/derelict.dmm
@@ -870,7 +870,6 @@
/turf/simulated/floor/tiled/dark,
/area/submap/debrisfield/derelict/interior)
"cF" = (
-/obj/effect/alien/egg,
/obj/effect/alien/weeds,
/turf/simulated/floor/tiled/dark,
/area/submap/debrisfield/derelict/interior)
diff --git a/maps/submaps/pois_vr/debris_field/new_escapepod_xeno.dmm b/maps/submaps/pois_vr/debris_field/new_escapepod_xeno.dmm
index ed2b127f4f..5042974f3c 100644
--- a/maps/submaps/pois_vr/debris_field/new_escapepod_xeno.dmm
+++ b/maps/submaps/pois_vr/debris_field/new_escapepod_xeno.dmm
@@ -66,7 +66,6 @@
/area/submap/debrisfield/misc_debris)
"W" = (
/obj/effect/alien/weeds,
-/obj/effect/alien/egg,
/turf/simulated/floor/airless,
/area/submap/debrisfield/misc_debris)
"X" = (
diff --git a/maps/submaps/surface_submaps/mountains/crashed_ufo_frigate.dmm b/maps/submaps/surface_submaps/mountains/crashed_ufo_frigate.dmm
index 5e8267e0fe..e7cc5b471f 100644
--- a/maps/submaps/surface_submaps/mountains/crashed_ufo_frigate.dmm
+++ b/maps/submaps/surface_submaps/mountains/crashed_ufo_frigate.dmm
@@ -2,7 +2,7 @@
"ab" = (/turf/simulated/shuttle/wall/alien,/area/submap/cave/crashed_ufo_frigate)
"ac" = (/turf/simulated/shuttle/floor/alienplating,/area/submap/cave/crashed_ufo_frigate)
"ad" = (/turf/simulated/mineral/floor/ignore_mapgen,/area/template_noop)
-"ae" = (/obj/structure/closet/secure_closet/egg/xenomorph,/obj/item/organ/internal/intestine/xeno{name = "inert xeno larva"},/turf/simulated/shuttle/floor/alienplating,/area/submap/cave/crashed_ufo_frigate)
+"ae" = (/turf/simulated/shuttle/floor/alienplating,/area/submap/cave/crashed_ufo_frigate)
"af" = (/mob/living/simple_mob/animal/space/alien/drone,/turf/simulated/shuttle/floor/alienplating,/area/submap/cave/crashed_ufo_frigate)
"ag" = (/obj/machinery/porta_turret/alien{faction = "xeno"},/turf/simulated/floor/outdoors/ice,/area/submap/cave/crashed_ufo_frigate)
"ah" = (/obj/structure/table/alien,/turf/simulated/floor/outdoors/ice,/area/submap/cave/crashed_ufo_frigate)
@@ -11,7 +11,7 @@
"ak" = (/obj/machinery/porta_turret/alien{faction = "xeno"},/turf/simulated/shuttle/floor/alienplating,/area/submap/cave/crashed_ufo_frigate)
"al" = (/turf/simulated/floor/outdoors/ice,/area/submap/cave/crashed_ufo_frigate)
"am" = (/obj/structure/window/phoronreinforced,/turf/simulated/shuttle/floor/alienplating,/area/submap/cave/crashed_ufo_frigate)
-"an" = (/obj/structure/window/phoronreinforced,/obj/structure/closet/secure_closet/egg/xenomorph,/obj/item/organ/internal/intestine/xeno{name = "inert xeno larva"},/turf/simulated/shuttle/floor/alienplating,/area/submap/cave/crashed_ufo_frigate)
+"an" = (/obj/structure/window/phoronreinforced,/turf/simulated/shuttle/floor/alienplating,/area/submap/cave/crashed_ufo_frigate)
"ao" = (/obj/structure/loot_pile/surface/alien/security,/turf/simulated/shuttle/floor/alienplating,/area/submap/cave/crashed_ufo_frigate)
"ap" = (/turf/simulated/shuttle/floor/alien,/area/submap/cave/crashed_ufo_frigate)
"aq" = (/obj/structure/prop/alien/pod/open,/turf/simulated/shuttle/floor/alien,/area/submap/cave/crashed_ufo_frigate)
@@ -47,8 +47,8 @@
"aU" = (/obj/machinery/replicator,/turf/simulated/shuttle/floor/alienplating,/area/submap/cave/crashed_ufo_frigate)
"aV" = (/obj/structure/closet/alien,/obj/random/unidentified_medicine/drug_den,/turf/simulated/shuttle/floor/alienplating,/area/submap/cave/crashed_ufo_frigate)
"aW" = (/obj/effect/decal/remains/xeno,/obj/item/clothing/under/psysuit,/turf/simulated/shuttle/floor/alienplating,/area/submap/cave/crashed_ufo_frigate)
-"aX" = (/obj/structure/prop/alien/computer/camera/flipped{dir = 4},/turf/simulated/shuttle/floor/alienplating,/area/submap/cave/crashed_ufo_frigate)
-"aY" = (/obj/structure/prop/alien/computer/camera{dir = 8},/turf/simulated/shuttle/floor/alienplating,/area/submap/cave/crashed_ufo_frigate)
+"aX" = (/obj/structure/prop/alien/computer/camera/flipped{icon_state = "camera_flipped"; dir = 4},/turf/simulated/shuttle/floor/alienplating,/area/submap/cave/crashed_ufo_frigate)
+"aY" = (/obj/structure/prop/alien/computer/camera{icon_state = "camera"; dir = 8},/turf/simulated/shuttle/floor/alienplating,/area/submap/cave/crashed_ufo_frigate)
"aZ" = (/obj/machinery/porta_turret/alien/destroyed,/turf/simulated/shuttle/floor/alienplating,/area/submap/cave/crashed_ufo_frigate)
"ba" = (/obj/structure/closet/alien,/obj/random/unidentified_medicine/scientific,/turf/simulated/shuttle/floor/alien,/area/submap/cave/crashed_ufo_frigate)
"bb" = (/obj/structure/closet/alien,/obj/random/unidentified_medicine/nanites,/turf/simulated/floor/outdoors/ice,/area/submap/cave/crashed_ufo_frigate)
@@ -67,7 +67,7 @@
"bo" = (/obj/machinery/porta_turret/alien{faction = "xeno"},/turf/simulated/shuttle/floor/alien,/area/submap/cave/crashed_ufo_frigate)
"bp" = (/obj/structure/foamedmetal,/turf/simulated/shuttle/floor/alienplating,/area/submap/cave/crashed_ufo_frigate)
"bq" = (/obj/machinery/implantchair,/turf/simulated/shuttle/floor/alienplating,/area/submap/cave/crashed_ufo_frigate)
-"br" = (/obj/structure/prop/alien/computer{dir = 8},/turf/simulated/shuttle/floor/alienplating,/area/submap/cave/crashed_ufo_frigate)
+"br" = (/obj/structure/prop/alien/computer{icon_state = "console-c"; dir = 8},/turf/simulated/shuttle/floor/alienplating,/area/submap/cave/crashed_ufo_frigate)
"bs" = (/obj/effect/alien/weeds/node,/mob/living/simple_mob/animal/space/alien/sentinel/praetorian,/turf/simulated/shuttle/floor/alien,/area/submap/cave/crashed_ufo_frigate)
"bt" = (/obj/structure/loot_pile/maint/technical,/turf/simulated/shuttle/floor/alienplating,/area/submap/cave/crashed_ufo_frigate)
"bu" = (/obj/structure/loot_pile/surface/drone,/turf/simulated/shuttle/floor/alienplating,/area/submap/cave/crashed_ufo_frigate)
@@ -78,14 +78,14 @@
"bz" = (/obj/structure/mopbucket,/turf/simulated/shuttle/floor/alienplating,/area/submap/cave/crashed_ufo_frigate)
"bA" = (/obj/item/brokenbug,/turf/simulated/mineral/floor/ignore_mapgen,/area/template_noop)
"bB" = (/mob/living/simple_mob/animal/space/alien/sentinel,/turf/simulated/shuttle/floor/alien,/area/submap/cave/crashed_ufo_frigate)
-"bC" = (/obj/structure/prop/alien/computer/camera/flipped{dir = 4},/turf/simulated/shuttle/floor/alien,/area/submap/cave/crashed_ufo_frigate)
-"bD" = (/obj/structure/prop/alien/computer/camera{dir = 8},/turf/simulated/shuttle/floor/alien,/area/submap/cave/crashed_ufo_frigate)
+"bC" = (/obj/structure/prop/alien/computer/camera/flipped{icon_state = "camera_flipped"; dir = 4},/turf/simulated/shuttle/floor/alien,/area/submap/cave/crashed_ufo_frigate)
+"bD" = (/obj/structure/prop/alien/computer/camera{icon_state = "camera"; dir = 8},/turf/simulated/shuttle/floor/alien,/area/submap/cave/crashed_ufo_frigate)
"bE" = (/obj/structure/loot_pile/maint/boxfort,/turf/simulated/shuttle/floor/alienplating,/area/submap/cave/crashed_ufo_frigate)
"bF" = (/obj/structure/prop/blackbox/xenofrigate,/turf/simulated/shuttle/floor/alienplating,/area/submap/cave/crashed_ufo_frigate)
"bG" = (/obj/random/outcrop,/turf/simulated/mineral/floor/ignore_mapgen,/area/template_noop)
"bH" = (/obj/structure/loot_pile/maint/junk,/turf/simulated/shuttle/floor/alienplating,/area/submap/cave/crashed_ufo_frigate)
"bI" = (/obj/structure/table/alien,/obj/structure/loot_pile/surface/alien/medical,/turf/simulated/shuttle/floor/alienplating,/area/submap/cave/crashed_ufo_frigate)
-"bJ" = (/obj/structure/window/phoronreinforced{dir = 8},/turf/simulated/shuttle/floor/alienplating,/area/submap/cave/crashed_ufo_frigate)
+"bJ" = (/obj/structure/window/phoronreinforced{icon_state = "phoronrwindow"; dir = 8},/turf/simulated/shuttle/floor/alienplating,/area/submap/cave/crashed_ufo_frigate)
"bK" = (/obj/structure/table/alien,/obj/item/prop/alien/junk,/turf/simulated/shuttle/floor/alienplating,/area/submap/cave/crashed_ufo_frigate)
"bL" = (/obj/structure/table/alien,/obj/item/weapon/paper/alien{icon_state = "alienpaper_words"; info = "\[i]This tablet has a large collection of symbols that you've never seen before outside this ship. You have no hope of figuring out what any of the mean...\[/i]"},/obj/item/device/gps/internal/poi,/turf/simulated/shuttle/floor/alienplating,/area/submap/cave/crashed_ufo_frigate)
"bM" = (/obj/structure/window/phoronreinforced{dir = 4},/turf/simulated/shuttle/floor/alienplating,/area/submap/cave/crashed_ufo_frigate)
@@ -95,7 +95,7 @@
"bQ" = (/obj/structure/table/alien,/obj/structure/window/phoronreinforced{dir = 4},/obj/item/weapon/paper/alien{icon_state = "alienpaper_words"; info = "\[i]This tablet has a large collection of symbols that you've never seen before outside this ship. You have no hope of figuring out what any of the mean...\[/i]"},/turf/simulated/shuttle/floor/alien,/area/submap/cave/crashed_ufo_frigate)
"bR" = (/obj/structure/table/alien,/obj/structure/foamedmetal,/turf/simulated/shuttle/floor/alienplating,/area/submap/cave/crashed_ufo_frigate)
"bS" = (/obj/structure/closet/alien,/turf/simulated/shuttle/floor/alienplating,/area/submap/cave/crashed_ufo_frigate)
-"bT" = (/obj/structure/window/phoronreinforced{dir = 8},/obj/structure/window/phoronreinforced,/turf/simulated/shuttle/floor/alienplating,/area/submap/cave/crashed_ufo_frigate)
+"bT" = (/obj/structure/window/phoronreinforced{icon_state = "phoronrwindow"; dir = 8},/obj/structure/window/phoronreinforced,/turf/simulated/shuttle/floor/alienplating,/area/submap/cave/crashed_ufo_frigate)
"bU" = (/obj/structure/window/phoronreinforced,/obj/structure/window/phoronreinforced{dir = 4},/turf/simulated/floor/outdoors/ice,/area/submap/cave/crashed_ufo_frigate)
"bV" = (/obj/structure/table/alien,/obj/structure/window/phoronreinforced,/obj/item/weapon/paper/alien,/turf/simulated/shuttle/floor/alien,/area/submap/cave/crashed_ufo_frigate)
"bW" = (/obj/structure/table/alien,/obj/structure/window/phoronreinforced{dir = 4},/obj/structure/window/phoronreinforced,/turf/simulated/shuttle/floor/alien,/area/submap/cave/crashed_ufo_frigate)
diff --git a/maps/submaps/surface_submaps/mountains/vault4.dmm b/maps/submaps/surface_submaps/mountains/vault4.dmm
index 6ea85a27e9..43939ca317 100644
--- a/maps/submaps/surface_submaps/mountains/vault4.dmm
+++ b/maps/submaps/surface_submaps/mountains/vault4.dmm
@@ -7,7 +7,7 @@
"g" = (/obj/effect/alien/weeds/node,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/vault4)
"h" = (/obj/effect/alien/weeds,/obj/random/multiple/minevault,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/vault4)
"i" = (/obj/effect/alien/weeds,/mob/living/simple_mob/animal/space/alien,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/vault4)
-"j" = (/obj/effect/alien/weeds,/obj/structure/closet/secure_closet/egg/xenomorph,/obj/item/organ/internal/intestine/xeno{name = "inert xeno larva"},/obj/item/organ/internal/intestine/xeno{name = "inert xeno larva"},/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/vault4)
+"j" = (/obj/effect/alien/weeds,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/vault4)
(1,1,1) = {"
aaaaaaaaa
diff --git a/maps/submaps/surface_submaps/mountains/vault5.dmm b/maps/submaps/surface_submaps/mountains/vault5.dmm
index 8daebc236f..19b3a3d910 100644
--- a/maps/submaps/surface_submaps/mountains/vault5.dmm
+++ b/maps/submaps/surface_submaps/mountains/vault5.dmm
@@ -6,7 +6,7 @@
"f" = (/obj/effect/alien/weeds,/obj/item/clothing/suit/storage/vest/tactical,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/vault5)
"g" = (/obj/effect/alien/weeds,/obj/structure/bed/nest,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/vault5)
"h" = (/obj/effect/alien/weeds,/obj/random/multiple/minevault,/mob/living/simple_mob/animal/space/alien/sentinel/praetorian,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/vault5)
-"i" = (/obj/effect/alien/weeds,/obj/structure/closet/secure_closet/egg/xenomorph,/obj/item/organ/internal/intestine/xeno{name = "inert xeno larva"},/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/vault5)
+"i" = (/obj/effect/alien/weeds,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/vault5)
"j" = (/obj/effect/alien/weeds,/obj/effect/alien/weeds/node,/mob/living/simple_mob/animal/space/alien/queen/empress,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/vault5)
"k" = (/obj/effect/alien/weeds,/obj/item/clothing/head/helmet/tac,/obj/item/weapon/gun/projectile/SVD,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/vault5)
diff --git a/sound/machines/door/airlock_tear_apart.ogg b/sound/machines/door/airlock_tear_apart.ogg
new file mode 100644
index 0000000000..aba517475f
Binary files /dev/null and b/sound/machines/door/airlock_tear_apart.ogg differ
diff --git a/sound/weapons/alien_spitacid.ogg b/sound/weapons/alien_spitacid.ogg
new file mode 100644
index 0000000000..db630d0e8c
Binary files /dev/null and b/sound/weapons/alien_spitacid.ogg differ
diff --git a/sound/weapons/effects/alien_spit_wall.ogg b/sound/weapons/effects/alien_spit_wall.ogg
new file mode 100644
index 0000000000..3d4fc90d27
Binary files /dev/null and b/sound/weapons/effects/alien_spit_wall.ogg differ
diff --git a/vorestation.dme b/vorestation.dme
index 29a53ccd20..24611116ae 100644
--- a/vorestation.dme
+++ b/vorestation.dme
@@ -1142,8 +1142,6 @@
#include "code\game\objects\effects\zone_divider.dm"
#include "code\game\objects\effects\zz_portals_ch.dm"
#include "code\game\objects\effects\zz_triggers_ch.dm"
-#include "code\game\objects\effects\alien\alien egg.dm"
-#include "code\game\objects\effects\alien\alien.dm"
#include "code\game\objects\effects\alien\aliens.dm"
#include "code\game\objects\effects\chem\chemsmoke.dm"
#include "code\game\objects\effects\chem\coating.dm"
@@ -1573,6 +1571,8 @@
#include "code\game\objects\structures\window.dm"
#include "code\game\objects\structures\window_spawner.dm"
#include "code\game\objects\structures\window_vr.dm"
+#include "code\game\objects\structures\alien\alien egg.dm"
+#include "code\game\objects\structures\alien\alien.dm"
#include "code\game\objects\structures\crates_lockers\__closets.dm"
#include "code\game\objects\structures\crates_lockers\_closets_appearance_definitions.dm"
#include "code\game\objects\structures\crates_lockers\_closets_appearance_definitions_vr.dm"