Xenomorphs fixes and improvements (#3548)

This pr makes xenomorphs less awful via some additions and porting some fixes:
-removes the NO_MINOR_CUT that is not used anywhere and replace with NO_EMBED that stops things from embedding into mobs, like xenomorphs, shadow people and golems
-adds the night vision verbs to xenomorphs
-fixes aliens eggs layers behind under their weeds
-fixes some hud things missing
-makes their limbs unbreakable

This should make them a bit less buggy.
This commit is contained in:
Alberyk
2017-10-07 13:10:18 +03:00
committed by Erki
parent 26e7341781
commit 094c057386
19 changed files with 50 additions and 41 deletions
-1
View File
@@ -261,7 +261,6 @@
/*
This list really long, mainly because I can't make up my mind about which mandarin syllables should be removed,
and the english syllables had to be duplicated so that there is roughly a 50-50 weighting.
Sources:
http://www.sttmedia.com/syllablefrequency-english
http://www.chinahighlights.com/travelguide/learning-chinese/pinyin-syllables.htm
@@ -26,7 +26,7 @@ emp_act
return 100
//Shrapnel
if(P.can_embed())
if(!(species.flags & NO_EMBED) && P.can_embed())
var/armor = getarmor_organ(organ, "bullet")
if(prob(20 + max(P.damage - armor, -10)))
var/obj/item/weapon/SP = new P.shrapnel_type()
@@ -56,7 +56,7 @@
remains_type = /obj/effect/decal/cleanable/ash
death_message = "dissolves into ash..."
flags = NO_BLOOD | NO_SCAN | NO_SLIP | NO_POISON | NO_PAIN | NO_BREATHE | NO_MINOR_CUT
flags = NO_BLOOD | NO_SCAN | NO_SLIP | NO_POISON | NO_PAIN | NO_BREATHE | NO_EMBED
spawn_flags = IS_RESTRICTED
vision_flags = DEFAULT_SIGHT | SEE_MOBS
@@ -47,7 +47,7 @@
breath_type = null
poison_type = null
flags = NO_BLOOD | NO_SCAN | NO_SLIP | NO_POISON | NO_PAIN | NO_BREATHE | NO_MINOR_CUT
flags = NO_BLOOD | NO_SCAN | NO_SLIP | NO_POISON | NO_PAIN | NO_BREATHE | NO_EMBED
spawn_flags = IS_RESTRICTED
has_limbs = list(
@@ -94,7 +94,7 @@
flesh_color = "#551A8B"
flags = NO_BLOOD | NO_SCAN | NO_SLIP | NO_POISON | NO_PAIN | NO_BREATHE | NO_MINOR_CUT
flags = NO_BLOOD | NO_SCAN | NO_SLIP | NO_POISON | NO_PAIN | NO_BREATHE
spawn_flags = IS_RESTRICTED
stamina = 500 //Tireless automatons
@@ -43,7 +43,7 @@
poison_type = "oxygen"
siemens_coefficient = 0.2
flags = NO_SCAN | NO_MINOR_CUT
flags = NO_SCAN
spawn_flags = IS_RESTRICTED
appearance_flags = HAS_EYE_COLOR
@@ -8,18 +8,18 @@
language = "Ceti Basic"
unarmed_types = list(/datum/unarmed_attack/stomp, /datum/unarmed_attack/kick, /datum/unarmed_attack/punch)
flags = NO_BREATHE | NO_PAIN | NO_BLOOD | NO_SCAN | NO_POISON | NO_MINOR_CUT
flags = NO_BREATHE | NO_PAIN | NO_BLOOD | NO_SCAN | NO_POISON | NO_EMBED
spawn_flags = IS_RESTRICTED
siemens_coefficient = 0
rarity_value = 5
ethanol_resistance = -1
taste_sensitivity = TASTE_NUMB
brute_mod = 0.5
slowdown = 1
virus_immune = 1
warning_low_pressure = 50 //golems can into space now
hazard_low_pressure = 0
@@ -8,7 +8,7 @@
language = null //todo?
unarmed_types = list(/datum/unarmed_attack/slime_glomp)
flags = NO_SCAN | NO_SLIP | NO_BREATHE | NO_MINOR_CUT
flags = NO_SCAN | NO_SLIP | NO_BREATHE | NO_EMBED
spawn_flags = IS_RESTRICTED
siemens_coefficient = 3 //conductive
darksight = 3
@@ -316,7 +316,7 @@
body_temperature = T0C + 15 //make the plant people have a bit lower body temperature, why not
flags = NO_BREATHE | NO_SCAN | IS_PLANT | NO_BLOOD | NO_PAIN | NO_SLIP | NO_MINOR_CUT
flags = NO_BREATHE | NO_SCAN | IS_PLANT | NO_BLOOD | NO_PAIN | NO_SLIP
appearance_flags = 0
spawn_flags = CAN_JOIN | IS_WHITELISTED
@@ -449,7 +449,7 @@
body_temperature = null
passive_temp_gain = 10 // This should cause IPCs to stabilize at ~80 C in a 20 C environment.
flags = NO_BREATHE | NO_SCAN | NO_BLOOD | NO_PAIN | NO_POISON | NO_MINOR_CUT
flags = NO_BREATHE | NO_SCAN | NO_BLOOD | NO_PAIN | NO_POISON
appearance_flags = HAS_SKIN_COLOR | HAS_HAIR_COLOR
spawn_flags = CAN_JOIN | IS_WHITELISTED
@@ -675,7 +675,7 @@ datum/species/machine/handle_post_spawn(var/mob/living/carbon/human/H)
heat_level_1 = 330 //Default 360
heat_level_2 = 380 //Default 400
heat_level_3 = 600 //Default 1000
flags = NO_SLIP | NO_MINOR_CUT
flags = NO_SLIP
spawn_flags = CAN_JOIN | IS_WHITELISTED
appearance_flags = HAS_SKIN_COLOR
blood_color = "#E6E600" // dark yellow
@@ -68,7 +68,7 @@
stamina_recovery = 3
spawn_flags = IS_RESTRICTED
flags = NO_SCAN | NO_SLIP | NO_MINOR_CUT
flags = NO_SCAN | NO_SLIP
inherent_verbs = list(
/mob/living/carbon/human/proc/bugbite,
@@ -173,25 +173,8 @@
visible_message("<span class='warning'>[src] spits neurotoxin at [target]!</span>", "<span class='alium'>You spit neurotoxin at [target].</span>")
//I'm not motivated enough to revise this. Prjectile code in general needs update.
// Maybe change this to use throw_at? ~ Z
var/turf/T = loc
var/turf/U = (istype(target, /atom/movable) ? target.loc : target)
if(!U || !T)
return
while(U && !istype(U,/turf))
U = U.loc
if(!istype(T, /turf))
return
if (U == T)
usr.bullet_act(new /obj/item/projectile/energy/neurotoxin(usr.loc), get_organ_target())
return
if(!istype(U, /turf))
return
var/obj/item/projectile/energy/neurotoxin/A = new /obj/item/projectile/energy/neurotoxin(usr.loc)
A.launch(target, get_organ_target())
A.launch(target,get_organ_target())
/mob/living/carbon/human/proc/resin() // -- TLE
set name = "Secrete Resin (75)"
@@ -17,6 +17,20 @@
mob_size = 14
fall_mod = 0
has_limbs = list(
"chest" = list("path" = /obj/item/organ/external/chest/unbreakable),
"groin" = list("path" = /obj/item/organ/external/groin/unbreakable),
"head" = list("path" = /obj/item/organ/external/head/unbreakable),
"l_arm" = list("path" = /obj/item/organ/external/arm/unbreakable),
"r_arm" = list("path" = /obj/item/organ/external/arm/right/unbreakable),
"l_leg" = list("path" = /obj/item/organ/external/leg/unbreakable),
"r_leg" = list("path" = /obj/item/organ/external/leg/right/unbreakable),
"l_hand" = list("path" = /obj/item/organ/external/hand/unbreakable),
"r_hand" = list("path" = /obj/item/organ/external/hand/right/unbreakable),
"l_foot" = list("path" = /obj/item/organ/external/foot/unbreakable),
"r_foot" = list("path" = /obj/item/organ/external/foot/right/unbreakable)
)
eyes = "blank_eyes"
stamina = 175
@@ -27,7 +41,7 @@
virus_immune = 1
brute_mod = 0.25 // Hardened carapace.
burn_mod = 2 // Weak to fire.
burn_mod = 1.75 // Weak to fire.
warning_low_pressure = 50
hazard_low_pressure = -1
@@ -36,7 +50,7 @@
cold_level_2 = -1
cold_level_3 = -1
flags = NO_BREATHE | NO_SCAN | NO_PAIN | NO_SLIP | NO_POISON | NO_MINOR_CUT
flags = NO_BREATHE | NO_SCAN | NO_PAIN | NO_SLIP | NO_POISON | NO_EMBED
spawn_flags = IS_RESTRICTED
reagent_tag = IS_XENOS
@@ -56,6 +70,8 @@
vision_flags = DEFAULT_SIGHT | SEE_MOBS
darksight = 8
has_organ = list(
"heart" = /obj/item/organ/heart,
"brain" = /obj/item/organ/brain/xeno,
@@ -180,7 +196,8 @@
/mob/living/carbon/human/proc/transfer_plasma,
/mob/living/carbon/human/proc/evolve,
/mob/living/carbon/human/proc/resin,
/mob/living/carbon/human/proc/corrosive_acid
/mob/living/carbon/human/proc/corrosive_acid,
/mob/living/carbon/human/proc/darkness_eyes
)
/datum/species/xenos/drone/handle_post_spawn(var/mob/living/carbon/human/H)
@@ -222,7 +239,8 @@
/mob/living/carbon/human/proc/leap,
/mob/living/carbon/human/proc/psychic_whisper,
/mob/living/proc/devour,
/mob/living/carbon/human/proc/regurgitate
/mob/living/carbon/human/proc/regurgitate,
/mob/living/carbon/human/proc/darkness_eyes
)
/datum/species/xenos/sentinel
@@ -252,7 +270,8 @@
/mob/living/carbon/human/proc/regurgitate,
/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/neurotoxin,
/mob/living/carbon/human/proc/darkness_eyes
)
/datum/species/xenos/queen
@@ -291,7 +310,8 @@
/mob/living/carbon/human/proc/corrosive_acid,
/mob/living/carbon/human/proc/neurotoxin,
/mob/living/carbon/human/proc/resin,
/mob/living/carbon/human/proc/xeno_infest
/mob/living/carbon/human/proc/xeno_infest,
/mob/living/carbon/human/proc/darkness_eyes
)
/datum/species/xenos/queen/handle_login_special(var/mob/living/carbon/human/H)
+2
View File
@@ -996,6 +996,8 @@ Note that amputating the affected organ does in fact remove the infection from t
/obj/item/organ/external/proc/embed(var/obj/item/weapon/W, var/silent = 0, var/supplied_message)
if(!owner || loc != owner)
return
if(species.flags & NO_EMBED)
return
if(!silent)
if(supplied_message)
owner.visible_message("<span class='danger'>[supplied_message]</span>")