mirror of
https://github.com/PolarisSS13/Polaris.git
synced 2025-12-29 11:31:51 +00:00
Xenomorph Queens can now infest victims.
This commit is contained in:
@@ -1113,14 +1113,15 @@
|
||||
seed_name = "alien weed"
|
||||
display_name = "alien weeds"
|
||||
force_layer = 3
|
||||
chems = list("phoron" = list(1,3))
|
||||
|
||||
/datum/seed/xenomorph/New()
|
||||
..()
|
||||
set_trait(TRAIT_PLANT_ICON,"vine2")
|
||||
set_trait(TRAIT_IMMUTABLE,1)
|
||||
set_trait(TRAIT_PRODUCT_COLOUR,"#080006")
|
||||
set_trait(TRAIT_FLESH_COLOUR,"#080006")
|
||||
set_trait(TRAIT_PLANT_COLOUR,"#080006")
|
||||
set_trait(TRAIT_PRODUCT_COLOUR,"#3D1934")
|
||||
set_trait(TRAIT_FLESH_COLOUR,"#3D1934")
|
||||
set_trait(TRAIT_PLANT_COLOUR,"#3D1934")
|
||||
set_trait(TRAIT_PRODUCTION,1)
|
||||
set_trait(TRAIT_YIELD,-1)
|
||||
set_trait(TRAIT_SPREAD,2)
|
||||
|
||||
@@ -132,7 +132,7 @@
|
||||
update_icon()
|
||||
plant_controller.add_plant(src)
|
||||
// Some plants eat through plating.
|
||||
if(!isnull(seed.chems["pacid"]))
|
||||
if(islist(seed.chems) && !isnull(seed.chems["pacid"]))
|
||||
var/turf/T = get_turf(src)
|
||||
T.ex_act(prob(80) ? 3 : 2)
|
||||
|
||||
@@ -190,7 +190,7 @@
|
||||
if(growth>2 && growth == max_growth)
|
||||
layer = (seed && seed.force_layer) ? seed.force_layer : 5
|
||||
opacity = 1
|
||||
if(!isnull(seed.chems["woodpulp"]))
|
||||
if(islist(seed.chems) && !isnull(seed.chems["woodpulp"]))
|
||||
density = 1
|
||||
else
|
||||
layer = (seed && seed.force_layer) ? seed.force_layer : 5
|
||||
|
||||
@@ -219,4 +219,46 @@
|
||||
new /obj/structure/alien/resin/membrane(loc)
|
||||
if("resin nest")
|
||||
new /obj/structure/bed/nest(loc)
|
||||
return
|
||||
return
|
||||
|
||||
mob/living/carbon/human/proc/xeno_infest(mob/living/carbon/human/M as mob in oview())
|
||||
set name = "Infest (500)"
|
||||
set desc = "Link a victim to the hivemind."
|
||||
set category = "Abilities"
|
||||
|
||||
if(!M.Adjacent(src))
|
||||
src << "<span class='warning'>They are too far away.</span>"
|
||||
return
|
||||
|
||||
if(!M.mind)
|
||||
src << "<span class='warning'>This mindless flesh adds nothing to the hive.</span>"
|
||||
return
|
||||
|
||||
if(M.species.get_bodytype() == "Xenomorph" || !isnull(M.internal_organs_by_name["hive node"]))
|
||||
src << "<span class='warning'>They are already part of the hive.</span>"
|
||||
return
|
||||
|
||||
var/obj/item/organ/affecting = M.get_organ("chest")
|
||||
if(!affecting || (affecting.status & ORGAN_ROBOT))
|
||||
src << "<span class='warning'>This form is not compatible with our physiology.</span>"
|
||||
return
|
||||
|
||||
src.visible_message("<span class='danger'>\The [src] crouches over \the [M], extending a hideous protuberance from its head!</span>")
|
||||
|
||||
if(!do_after(src, 150))
|
||||
return
|
||||
|
||||
if(!check_alien_ability(500,1,"egg sac"))
|
||||
return
|
||||
|
||||
if(!M.Adjacent(src))
|
||||
src << "<span class='warning'>They are too far away.</span>"
|
||||
return
|
||||
|
||||
if(!M || M.species.get_bodytype() == "Xenomorph" || !isnull(M.internal_organs_by_name["hive node"]) || !affecting || (affecting.status & ORGAN_ROBOT))
|
||||
return
|
||||
|
||||
src.visible_message("<span class='danger'>\The [src] regurgitates something into \the [M]'s torso!</span>")
|
||||
M << "<span class='danger'>A hideous lump of alien mass strains your ribcage as it settles within!</span>"
|
||||
var/obj/item/organ/xenos/hivenode/node = new(affecting)
|
||||
node.replaced(M,affecting)
|
||||
@@ -15,8 +15,8 @@
|
||||
|
||||
eyes = "blank_eyes"
|
||||
|
||||
brute_mod = 0.5 // Hardened carapace.
|
||||
burn_mod = 2 // Weak to fire.
|
||||
brute_mod = 0.25 // Hardened carapace.
|
||||
burn_mod = 1.1 // Weak to fire.
|
||||
|
||||
warning_low_pressure = 50
|
||||
hazard_low_pressure = -1
|
||||
@@ -270,7 +270,8 @@
|
||||
/mob/living/carbon/human/proc/transfer_plasma,
|
||||
/mob/living/carbon/human/proc/corrosive_acid,
|
||||
/mob/living/carbon/human/proc/neurotoxin,
|
||||
/mob/living/carbon/human/proc/resin
|
||||
/mob/living/carbon/human/proc/resin,
|
||||
/mob/living/carbon/human/proc/xeno_infest
|
||||
)
|
||||
|
||||
/datum/species/xenos/queen/handle_login_special(var/mob/living/carbon/human/H)
|
||||
|
||||
@@ -38,15 +38,34 @@
|
||||
icon_state = "xgibtorso"
|
||||
organ_tag = "acid gland"
|
||||
|
||||
/obj/item/organ/xenos/hivenode
|
||||
name = "hive node"
|
||||
parent_organ = "chest"
|
||||
icon_state = "xgibmid2"
|
||||
organ_tag = "hive node"
|
||||
|
||||
/obj/item/organ/xenos/resinspinner
|
||||
name = "resin spinner"
|
||||
parent_organ = "head"
|
||||
icon_state = "xgibmid2"
|
||||
organ_tag = "resin spinner"
|
||||
|
||||
/obj/item/organ/xenos/hivenode
|
||||
name = "hive node"
|
||||
parent_organ = "chest"
|
||||
icon_state = "xgibmid2"
|
||||
organ_tag = "hive node"
|
||||
|
||||
/obj/item/organ/xenos/hivenode/removed(var/mob/living/user)
|
||||
if(owner && ishuman(owner))
|
||||
var/mob/living/carbon/human/H = owner
|
||||
H << "<span class='alium'>You feel your connection to the hivemind fray and fade away...</span>"
|
||||
H.remove_language("Hivemind")
|
||||
if(H.mind && H.species.get_bodytype() != "Xenomorph")
|
||||
xenomorphs.remove_antagonist(H.mind)
|
||||
..(user)
|
||||
|
||||
/obj/item/organ/xenos/hivenode/replaced(var/mob/living/carbon/human/target,var/obj/item/organ/external/affected)
|
||||
..(target, affected)
|
||||
if(owner && ishuman(owner))
|
||||
var/mob/living/carbon/human/H = owner
|
||||
H.add_language("Hivemind")
|
||||
if(H.mind)
|
||||
H << "<span class='alium'>You feel a sense of pressure as a vast intelligence meshes with your thoughts...</span>"
|
||||
if(H.species.get_bodytype() != "Xenomorph" && xenomorphs.add_antagonist_mind(H.mind,1))
|
||||
H << "Your will is ripped away as your humanity merges with the xenomorph hive. You are now a thrall to the queen and her brood. \
|
||||
Obey their instructions without question. Serve the hive.</span>"
|
||||
Reference in New Issue
Block a user