Reworks xenomorphs (#23054)

* reworks xenomorphs

* part 2 electric boogaloo

* more tweaks

* more tweaks

* lints

* Update code/modules/mob/living/carbon/alien/alien_death.dm

Co-authored-by: Henri215 <77684085+Henri215@users.noreply.github.com>

* Update code/modules/surgery/organs/subtypes/xenos.dm

Co-authored-by: Henri215 <77684085+Henri215@users.noreply.github.com>

* Update code/game/objects/structures/stool_bed_chair_nest/alien_nests.dm

Co-authored-by: Henri215 <77684085+Henri215@users.noreply.github.com>

* Update code/datums/spells/alien_spells/transfer_plasma.dm

Co-authored-by: Henri215 <77684085+Henri215@users.noreply.github.com>

* reviews

* sprite fix

* high priority fix

* reverts most alien nerfs

---------

Co-authored-by: Henri215 <77684085+Henri215@users.noreply.github.com>
This commit is contained in:
GDN
2024-02-24 18:13:31 +00:00
committed by GitHub
co-authored by Henri215
parent f1059317c3
commit 5ebefe9fa1
51 changed files with 608 additions and 320 deletions
+9 -5
View File
@@ -38,16 +38,20 @@
if(isnull(dna)) // someone didn't set this right...
stack_trace("[src] at [loc] did not contain a dna datum at time of removal.")
dna = H.dna.Clone()
name = "\the [dna.real_name]'s [initial(src.name)]"
if(dna.real_name)
name = "\the [dna.real_name]'s [initial(name)]"
brainmob.name = dna.real_name
brainmob.real_name = dna.real_name
else
name = "\the [H.real_name]'s [initial(name)]"
brainmob.name = H.real_name
brainmob.real_name = H.real_name
brainmob.dna = dna.Clone() // Silly baycode, what you do
// brainmob.dna = H.dna.Clone() Putting in and taking out a brain doesn't make it a carbon copy of the original brain of the body you put it in
brainmob.name = dna.real_name
brainmob.real_name = dna.real_name
brainmob.timeofhostdeath = H.timeofdeath
if(H.mind)
H.mind.transfer_to(brainmob)
to_chat(brainmob, "<span class='notice'>You feel slightly disoriented. That's normal when you're just a [initial(src.name)].</span>")
to_chat(brainmob, "<span class='notice'>You feel slightly disoriented. That's normal when you're just a [initial(name)].</span>")
/obj/item/organ/internal/brain/examine(mob/user) // -- TLE
. = ..()
+52 -26
View File
@@ -2,20 +2,51 @@
origin_tech = "biotech=5"
icon_state = "xgibmid2"
var/list/alien_powers = list()
var/list/human_powers = list()
tough = TRUE
sterile = TRUE
/// Amount of credits that will be received by selling this in the cargo shuttle
var/cargo_profit = 250
/// Has this organ been hijacked? Can hijack via a hemostat
var/hijacked = FALSE
/// This adds and removes alien spells upon addition, if a noncarbon tries to do this well... I blame adminbus
/obj/item/organ/internal/alien/insert(mob/living/carbon/M, special = 0)
..()
for(var/powers_to_add in alien_powers)
M.AddSpell(new powers_to_add)
if(!hijacked)
for(var/powers_to_add in alien_powers)
M.AddSpell(new powers_to_add)
else
for(var/powers_to_add in human_powers)
M.AddSpell(new powers_to_add)
/obj/item/organ/internal/alien/remove(mob/living/carbon/M, special = 0)
for(var/powers_to_remove in alien_powers)
M.RemoveSpell(new powers_to_remove)
if(!hijacked)
for(var/powers_to_remove in alien_powers)
M.RemoveSpell(new powers_to_remove)
else
for(var/powers_to_add in human_powers)
M.AddSpell(new powers_to_add)
. = ..()
/obj/item/organ/internal/alien/examine(mob/user)
. = ..()
. += "<span class='notice'>Can be sold on the cargo shuttle for [cargo_profit] credits.</span>"
if(hijacked)
. += "<span class='notice'>This organ is hijacked, use a Hemostat on it to revert it to it's original function.</span>"
else
. += "<span class='notice'>You can hijack the latent functions of this organ by using a Hemostat on it.</span>"
/obj/item/organ/internal/alien/attackby(obj/item/hemostat/item, mob/user, params)
if(istype(item))
if(!hijacked)
to_chat(user, "<span class='notice'>You slice off the control node of this organ. This organ will now be effective against aliens.</span>")
else
to_chat(user, "<span class='notice'>You reattach the control node of this organ. This organ will now be effective against those who attack the hive.</span>")
hijacked = !hijacked
return
return ..()
/obj/item/organ/internal/alien/prepare_eat()
var/obj/S = ..()
S.reagents.add_reagent("sacid", 10)
@@ -28,18 +59,18 @@
icon_state = "plasma"
w_class = WEIGHT_CLASS_NORMAL
origin_tech = "biotech=5;plasmatech=4"
parent_organ = "chest"
slot = "plasmavessel"
alien_powers = list(/obj/effect/proc_holder/spell/alien_spell/plant_weeds, /obj/effect/proc_holder/spell/touch/alien_spell/transfer_plasma)
alien_powers = list(/obj/effect/proc_holder/spell/alien_spell/plant_weeds, /obj/effect/proc_holder/spell/alien_spell/transfer_plasma)
human_powers = list(/obj/effect/proc_holder/spell/alien_spell/syphon_plasma)
var/stored_plasma = 0
var/max_plasma = 500
var/stored_plasma = 100
var/max_plasma = 300
var/heal_rate = 5
var/plasma_rate = 10
/obj/item/organ/internal/alien/plasmavessel/prepare_eat()
var/obj/S = ..()
S.reagents.add_reagent("plasma", stored_plasma/10)
S.reagents.add_reagent("plasma", stored_plasma / 10)
return S
/obj/item/organ/internal/alien/plasmavessel/queen
@@ -47,14 +78,12 @@
icon_state = "plasma_large"
origin_tech = "biotech=6;plasmatech=4"
stored_plasma = 200
max_plasma = 500
plasma_rate = 25
/obj/item/organ/internal/alien/plasmavessel/drone
name = "large xeno plasma vessel"
icon_state = "plasma_large"
stored_plasma = 200
max_plasma = 500
/obj/item/organ/internal/alien/plasmavessel/sentinel
stored_plasma = 100
@@ -63,16 +92,15 @@
/obj/item/organ/internal/alien/plasmavessel/hunter
name = "small xeno plasma vessel"
icon_state = "plasma_tiny"
stored_plasma = 100
max_plasma = 150
alien_powers = list(/obj/effect/proc_holder/spell/alien_spell/plant_weeds)
stored_plasma = 50
max_plasma = 100
/obj/item/organ/internal/alien/plasmavessel/larva
name = "tiny xeno plasma vessel"
icon_state = "plasma_tiny"
max_plasma = 100
alien_powers = list(/obj/effect/proc_holder/spell/alien_spell/plant_weeds)
stored_plasma = 25
max_plasma = 50
cargo_profit = 150
/obj/item/organ/internal/alien/plasmavessel/on_life()
//If there are alien weeds on the ground then heal if needed or give some plasma
@@ -83,7 +111,7 @@
var/heal_amt = heal_rate
if(!isalien(owner))
heal_amt *= 0.2
owner.add_plasma((plasma_rate*0.5))
owner.add_plasma((plasma_rate / 2))
owner.adjustBruteLoss(-heal_amt)
owner.adjustFireLoss(-heal_amt)
owner.adjustOxyLoss(-heal_amt)
@@ -97,20 +125,17 @@
. =..()
M.update_plasma_display(M)
/obj/item/organ/internal/alien/acidgland
name = "xeno acid gland"
icon_state = "acid"
parent_organ = "head"
slot = "acid"
origin_tech = "biotech=5;materials=2;combat=2"
alien_powers = list(/obj/effect/proc_holder/spell/touch/alien_spell/corrosive_acid)
human_powers = list(/obj/effect/proc_holder/spell/touch/alien_spell/burning_touch)
/obj/item/organ/internal/alien/hivenode
name = "xeno hive node"
icon_state = "hivenode"
parent_organ = "head"
slot = "hivenode"
origin_tech = "biotech=5;magnets=4;bluespace=3"
w_class = WEIGHT_CLASS_TINY
@@ -133,24 +158,25 @@
/obj/item/organ/internal/alien/neurotoxin
name = "xeno neurotoxin gland"
icon_state = "neurotox"
parent_organ = "head"
slot = "neurotox"
origin_tech = "biotech=5;combat=5"
alien_powers = list(/obj/effect/proc_holder/spell/alien_spell/neurotoxin)
human_powers = list(/obj/effect/proc_holder/spell/alien_spell/neurotoxin/death_to_xenos)
/obj/item/organ/internal/alien/resinspinner
name = "xeno resin organ"//...there tiger....
parent_organ = "mouth"
name = "xeno resin organ"
icon_state = "liver-x"
slot = "spinner"
origin_tech = "biotech=5;materials=4"
alien_powers = list(/obj/effect/proc_holder/spell/alien_spell/build_resin)
human_powers = list(/obj/effect/proc_holder/spell/touch/alien_spell/consume_resin)
/obj/item/organ/internal/alien/eggsac
name = "xeno egg sac"
icon_state = "eggsac"
parent_organ = "groin"
slot = "eggsac"
w_class = WEIGHT_CLASS_BULKY
origin_tech = "biotech=6"
alien_powers = list(/obj/effect/proc_holder/spell/alien_spell/plant_weeds/eggs)
human_powers = list(/obj/effect/proc_holder/spell/alien_spell/combust_facehuggers)
cargo_profit = 1000