mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-08-23 03:57:13 +01:00
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:
@@ -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
|
||||
. = ..()
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user