Xenomorph Queens can now infest victims.

This commit is contained in:
Zuhayr
2015-09-04 14:06:25 +09:30
parent 13e0682a22
commit 95f270ad3a
6 changed files with 80 additions and 15 deletions

View File

@@ -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)

View File

@@ -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

View File

@@ -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)

View File

@@ -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)

View File

@@ -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>"