Xenomorph Hybrid traits, Protean RIG compatibility (#6936)

This commit is contained in:
Aroliacue
2023-09-10 17:33:14 +10:00
committed by GitHub
parent a5dc83b20d
commit a2078f7060
5 changed files with 122 additions and 67 deletions

View File

@@ -97,43 +97,45 @@
name = "mass"
desc = "A helmet-shaped clump of nanomachines."
light_overlay = "should not use a light overlay"
species_restricted = list(SPECIES_PROTEAN, SPECIES_HUMAN, SPECIES_SKRELL, SPECIES_TAJ, SPECIES_UNATHI, SPECIES_NEVREAN, SPECIES_AKULA, SPECIES_SERGAL, SPECIES_ZORREN_HIGH, SPECIES_VULPKANIN, SPECIES_PROMETHEAN, SPECIES_XENOHYBRID, SPECIES_VOX, SPECIES_TESHARI, SPECIES_VASILISSAN)
species_restricted = list(SPECIES_PROTEAN, SPECIES_HUMAN, SPECIES_SKRELL, SPECIES_TAJ, SPECIES_UNATHI, SPECIES_NEVREAN, SPECIES_AKULA, SPECIES_SERGAL, SPECIES_ZORREN_HIGH, SPECIES_VULPKANIN, SPECIES_PROMETHEAN, SPECIES_XENOHYBRID, SPECIES_VOX, SPECIES_TESHARI, SPECIES_VASILISSAN, SPECIES_XENOMORPH_HYBRID)
sprite_sheets = list(
SPECIES_PROTEAN = 'modular_chomp/icons/mob/head_ch.dmi',
SPECIES_HUMAN = 'modular_chomp/icons/mob/head_ch.dmi',
SPECIES_TAJ = 'modular_chomp/icons/mob/species/tajaran/helmet_ch.dmi',
SPECIES_SKRELL = 'modular_chomp/icons/mob/species/skrell/helmet_ch.dmi',
SPECIES_UNATHI = 'modular_chomp/icons/mob/species/unathi/helmet_ch.dmi',
SPECIES_XENOHYBRID = 'modular_chomp/icons/mob/species/unathi/helmet_ch.dmi',
SPECIES_AKULA = 'modular_chomp/icons/mob/species/akula/helmet_ch.dmi',
SPECIES_SERGAL = 'modular_chomp/icons/mob/species/sergal/helmet_ch.dmi',
SPECIES_NEVREAN = 'modular_chomp/icons/mob/species/sergal/helmet_ch.dmi',
SPECIES_VULPKANIN = 'modular_chomp/icons/mob/species/vulpkanin/helmet_ch.dmi',
SPECIES_ZORREN_HIGH = 'modular_chomp/icons/mob/species/fox/helmet_ch.dmi',
SPECIES_FENNEC = 'modular_chomp/icons/mob/species/vulpkanin/helmet_ch.dmi',
SPECIES_PROMETHEAN = 'modular_chomp/icons/mob/species/skrell/helmet_ch.dmi',
SPECIES_TESHARI = 'modular_chomp/icons/mob/species/teshari/helmet_ch.dmi',
SPECIES_VASILISSAN = 'modular_chomp/icons/mob/species/skrell/helmet_ch.dmi',
SPECIES_VOX = 'modular_chomp/icons/mob/species/vox/head_ch.dmi'
SPECIES_PROTEAN = 'modular_chomp/icons/mob/head_ch.dmi',
SPECIES_HUMAN = 'modular_chomp/icons/mob/head_ch.dmi',
SPECIES_TAJ = 'modular_chomp/icons/mob/species/tajaran/helmet_ch.dmi',
SPECIES_SKRELL = 'modular_chomp/icons/mob/species/skrell/helmet_ch.dmi',
SPECIES_UNATHI = 'modular_chomp/icons/mob/species/unathi/helmet_ch.dmi',
SPECIES_XENOHYBRID = 'modular_chomp/icons/mob/species/unathi/helmet_ch.dmi',
SPECIES_AKULA = 'modular_chomp/icons/mob/species/akula/helmet_ch.dmi',
SPECIES_SERGAL = 'modular_chomp/icons/mob/species/sergal/helmet_ch.dmi',
SPECIES_NEVREAN = 'modular_chomp/icons/mob/species/sergal/helmet_ch.dmi',
SPECIES_VULPKANIN = 'modular_chomp/icons/mob/species/vulpkanin/helmet_ch.dmi',
SPECIES_ZORREN_HIGH = 'modular_chomp/icons/mob/species/fox/helmet_ch.dmi',
SPECIES_FENNEC = 'modular_chomp/icons/mob/species/vulpkanin/helmet_ch.dmi',
SPECIES_PROMETHEAN = 'modular_chomp/icons/mob/species/skrell/helmet_ch.dmi',
SPECIES_TESHARI = 'modular_chomp/icons/mob/species/teshari/helmet_ch.dmi',
SPECIES_VASILISSAN = 'modular_chomp/icons/mob/species/skrell/helmet_ch.dmi',
SPECIES_VOX = 'modular_chomp/icons/mob/species/vox/head_ch.dmi',
SPECIES_XENOMORPH_HYBRID = 'modular_chomp/icons/mob/species/xenomorph_hybrid/helmet_ch.dmi'
)
sprite_sheets_obj = list(
SPECIES_PROTEAN = 'modular_chomp/icons/mob/head_ch.dmi',
SPECIES_HUMAN = 'modular_chomp/icons/mob/head_ch.dmi',
SPECIES_TAJ = 'modular_chomp/icons/mob/head_ch.dmi',
SPECIES_SKRELL = 'modular_chomp/icons/mob/head_ch.dmi',
SPECIES_UNATHI = 'modular_chomp/icons/mob/head_ch.dmi',
SPECIES_XENOHYBRID = 'modular_chomp/icons/mob/head_ch.dmi',
SPECIES_AKULA = 'modular_chomp/icons/mob/head_ch.dmi',
SPECIES_SERGAL = 'modular_chomp/icons/mob/head_ch.dmi',
SPECIES_NEVREAN = 'modular_chomp/icons/mob/head_ch.dmi',
SPECIES_VULPKANIN = 'modular_chomp/icons/mob/head_ch.dmi',
SPECIES_ZORREN_HIGH = 'modular_chomp/icons/mob/head_ch.dmi',
SPECIES_FENNEC = 'modular_chomp/icons/mob/head_ch.dmi',
SPECIES_PROMETHEAN = 'modular_chomp/icons/mob/head_ch.dmi',
SPECIES_TESHARI = 'modular_chomp/icons/mob/head_ch.dmi',
SPECIES_VASILISSAN = 'modular_chomp/icons/mob/head_ch.dmi',
SPECIES_VOX = 'modular_chomp/icons/mob/head_ch.dmi'
SPECIES_PROTEAN = 'modular_chomp/icons/mob/head_ch.dmi',
SPECIES_HUMAN = 'modular_chomp/icons/mob/head_ch.dmi',
SPECIES_TAJ = 'modular_chomp/icons/mob/head_ch.dmi',
SPECIES_SKRELL = 'modular_chomp/icons/mob/head_ch.dmi',
SPECIES_UNATHI = 'modular_chomp/icons/mob/head_ch.dmi',
SPECIES_XENOHYBRID = 'modular_chomp/icons/mob/head_ch.dmi',
SPECIES_AKULA = 'modular_chomp/icons/mob/head_ch.dmi',
SPECIES_SERGAL = 'modular_chomp/icons/mob/head_ch.dmi',
SPECIES_NEVREAN = 'modular_chomp/icons/mob/head_ch.dmi',
SPECIES_VULPKANIN = 'modular_chomp/icons/mob/head_ch.dmi',
SPECIES_ZORREN_HIGH = 'modular_chomp/icons/mob/head_ch.dmi',
SPECIES_FENNEC = 'modular_chomp/icons/mob/head_ch.dmi',
SPECIES_PROMETHEAN = 'modular_chomp/icons/mob/head_ch.dmi',
SPECIES_TESHARI = 'modular_chomp/icons/mob/head_ch.dmi',
SPECIES_VASILISSAN = 'modular_chomp/icons/mob/head_ch.dmi',
SPECIES_VOX = 'modular_chomp/icons/mob/head_ch.dmi',
SPECIES_XENOMORPH_HYBRID = 'modular_chomp/icons/mob/head_ch.dmi'
)
icon = 'modular_chomp/icons/mob/head_ch.dmi'
default_worn_icon = 'modular_chomp/icons/mob/head_ch.dmi'
@@ -142,42 +144,44 @@
name = "mass"
desc = "Glove-shaped clusters of nanomachines."
siemens_coefficient= 0
species_restricted = list(SPECIES_PROTEAN, SPECIES_HUMAN, SPECIES_SKRELL, SPECIES_TAJ, SPECIES_UNATHI, SPECIES_NEVREAN, SPECIES_AKULA, SPECIES_SERGAL, SPECIES_ZORREN_HIGH, SPECIES_VULPKANIN, SPECIES_PROMETHEAN, SPECIES_XENOHYBRID, SPECIES_VOX, SPECIES_TESHARI, SPECIES_VASILISSAN)
species_restricted = list(SPECIES_PROTEAN, SPECIES_HUMAN, SPECIES_SKRELL, SPECIES_TAJ, SPECIES_UNATHI, SPECIES_NEVREAN, SPECIES_AKULA, SPECIES_SERGAL, SPECIES_ZORREN_HIGH, SPECIES_VULPKANIN, SPECIES_PROMETHEAN, SPECIES_XENOHYBRID, SPECIES_VOX, SPECIES_TESHARI, SPECIES_VASILISSAN, SPECIES_XENOMORPH_HYBRID)
sprite_sheets = list(
SPECIES_PROTEAN = 'modular_chomp/icons/mob/hands_ch.dmi',
SPECIES_HUMAN = 'modular_chomp/icons/mob/hands_ch.dmi',
SPECIES_TAJ = 'modular_chomp/icons/mob/hands_ch.dmi',
SPECIES_SKRELL = 'modular_chomp/icons/mob/hands_ch.dmi',
SPECIES_UNATHI = 'modular_chomp/icons/mob/hands_ch.dmi',
SPECIES_XENOHYBRID = 'modular_chomp/icons/mob/hands_ch.dmi',
SPECIES_AKULA = 'modular_chomp/icons/mob/hands_ch.dmi',
SPECIES_SERGAL = 'modular_chomp/icons/mob/hands_ch.dmi',
SPECIES_NEVREAN = 'modular_chomp/icons/mob/hands_ch.dmi',
SPECIES_VULPKANIN = 'modular_chomp/icons/mob/hands_ch.dmi',
SPECIES_ZORREN_HIGH = 'modular_chomp/icons/mob/hands_ch.dmi',
SPECIES_FENNEC = 'modular_chomp/icons/mob/hands_ch.dmi',
SPECIES_PROMETHEAN = 'modular_chomp/icons/mob/hands_ch.dmi',
SPECIES_TESHARI = 'modular_chomp/icons/mob/species/teshari/hands_ch.dmi',
SPECIES_VASILISSAN = 'modular_chomp/icons/mob/hands_ch.dmi',
SPECIES_VOX = 'modular_chomp/icons/mob/species/vox/gloves_ch.dmi'
SPECIES_PROTEAN = 'modular_chomp/icons/mob/hands_ch.dmi',
SPECIES_HUMAN = 'modular_chomp/icons/mob/hands_ch.dmi',
SPECIES_TAJ = 'modular_chomp/icons/mob/hands_ch.dmi',
SPECIES_SKRELL = 'modular_chomp/icons/mob/hands_ch.dmi',
SPECIES_UNATHI = 'modular_chomp/icons/mob/hands_ch.dmi',
SPECIES_XENOHYBRID = 'modular_chomp/icons/mob/hands_ch.dmi',
SPECIES_AKULA = 'modular_chomp/icons/mob/hands_ch.dmi',
SPECIES_SERGAL = 'modular_chomp/icons/mob/hands_ch.dmi',
SPECIES_NEVREAN = 'modular_chomp/icons/mob/hands_ch.dmi',
SPECIES_VULPKANIN = 'modular_chomp/icons/mob/hands_ch.dmi',
SPECIES_ZORREN_HIGH = 'modular_chomp/icons/mob/hands_ch.dmi',
SPECIES_FENNEC = 'modular_chomp/icons/mob/hands_ch.dmi',
SPECIES_PROMETHEAN = 'modular_chomp/icons/mob/hands_ch.dmi',
SPECIES_TESHARI = 'modular_chomp/icons/mob/species/teshari/hands_ch.dmi',
SPECIES_VASILISSAN = 'modular_chomp/icons/mob/hands_ch.dmi',
SPECIES_VOX = 'modular_chomp/icons/mob/species/vox/gloves_ch.dmi',
SPECIES_XENOMORPH_HYBRID = 'modular_chomp/icons/mob/hands_ch.dmi'
)
sprite_sheets_obj = list(
SPECIES_HUMAN = 'modular_chomp/icons/mob/hands_ch.dmi',
SPECIES_TAJ = 'modular_chomp/icons/mob/hands_ch.dmi',
SPECIES_SKRELL = 'modular_chomp/icons/mob/hands_ch.dmi',
SPECIES_UNATHI = 'modular_chomp/icons/mob/hands_ch.dmi',
SPECIES_XENOHYBRID = 'modular_chomp/icons/mob/hands_ch.dmi',
SPECIES_AKULA = 'modular_chomp/icons/mob/hands_ch.dmi',
SPECIES_SERGAL = 'modular_chomp/icons/mob/hands_ch.dmi',
SPECIES_NEVREAN = 'modular_chomp/icons/mob/hands_ch.dmi',
SPECIES_VULPKANIN = 'modular_chomp/icons/mob/hands_ch.dmi',
SPECIES_ZORREN_HIGH = 'modular_chomp/icons/mob/hands_ch.dmi',
SPECIES_FENNEC = 'modular_chomp/icons/mob/hands_ch.dmi',
SPECIES_PROMETHEAN = 'modular_chomp/icons/mob/hands_ch.dmi',
SPECIES_TESHARI = 'modular_chomp/icons/mob/hands_ch.dmi',
SPECIES_VASILISSAN = 'modular_chomp/icons/mob/hands_ch.dmi',
SPECIES_VOX = 'modular_chomp/icons/mob/hands_ch.dmi'
SPECIES_HUMAN = 'modular_chomp/icons/mob/hands_ch.dmi',
SPECIES_TAJ = 'modular_chomp/icons/mob/hands_ch.dmi',
SPECIES_SKRELL = 'modular_chomp/icons/mob/hands_ch.dmi',
SPECIES_UNATHI = 'modular_chomp/icons/mob/hands_ch.dmi',
SPECIES_XENOHYBRID = 'modular_chomp/icons/mob/hands_ch.dmi',
SPECIES_AKULA = 'modular_chomp/icons/mob/hands_ch.dmi',
SPECIES_SERGAL = 'modular_chomp/icons/mob/hands_ch.dmi',
SPECIES_NEVREAN = 'modular_chomp/icons/mob/hands_ch.dmi',
SPECIES_VULPKANIN = 'modular_chomp/icons/mob/hands_ch.dmi',
SPECIES_ZORREN_HIGH = 'modular_chomp/icons/mob/hands_ch.dmi',
SPECIES_FENNEC = 'modular_chomp/icons/mob/hands_ch.dmi',
SPECIES_PROMETHEAN = 'modular_chomp/icons/mob/hands_ch.dmi',
SPECIES_TESHARI = 'modular_chomp/icons/mob/hands_ch.dmi',
SPECIES_VASILISSAN = 'modular_chomp/icons/mob/hands_ch.dmi',
SPECIES_VOX = 'modular_chomp/icons/mob/hands_ch.dmi',
SPECIES_XENOMORPH_HYBRID = 'modular_chomp/icons/mob/hands_ch.dmi'
)
icon = 'modular_chomp/icons/mob/hands_ch.dmi'
default_worn_icon = 'modular_chomp/icons/mob/hands_ch.dmi'
@@ -185,7 +189,7 @@
/obj/item/clothing/shoes/magboots/rig/protean
name = "mass"
desc = "Boot-shaped clusters of nanomachines."
species_restricted = list(SPECIES_PROTEAN, SPECIES_HUMAN, SPECIES_SKRELL, SPECIES_TAJ, SPECIES_UNATHI, SPECIES_NEVREAN, SPECIES_AKULA, SPECIES_SERGAL, SPECIES_ZORREN_HIGH, SPECIES_VULPKANIN, SPECIES_PROMETHEAN, SPECIES_XENOHYBRID, SPECIES_VOX, SPECIES_TESHARI, SPECIES_VASILISSAN)
species_restricted = list(SPECIES_PROTEAN, SPECIES_HUMAN, SPECIES_SKRELL, SPECIES_TAJ, SPECIES_UNATHI, SPECIES_NEVREAN, SPECIES_AKULA, SPECIES_SERGAL, SPECIES_ZORREN_HIGH, SPECIES_VULPKANIN, SPECIES_PROMETHEAN, SPECIES_XENOHYBRID, SPECIES_VOX, SPECIES_TESHARI, SPECIES_VASILISSAN, SPECIES_XENOMORPH_HYBRID)
sprite_sheets = list(
SPECIES_TESHARI = 'modular_chomp/icons/mob/species/teshari/feet_ch.dmi',
SPECIES_VOX = 'modular_chomp/icons/mob/species/vox/shoes_ch.dmi'
@@ -198,7 +202,7 @@
name = "mass"
desc = "A body-hugging mass of nanomachines."
can_breach = 0
species_restricted = list(SPECIES_PROTEAN, SPECIES_HUMAN, SPECIES_SKRELL, SPECIES_TAJ, SPECIES_UNATHI, SPECIES_NEVREAN, SPECIES_AKULA, SPECIES_SERGAL, SPECIES_ZORREN_HIGH, SPECIES_VULPKANIN, SPECIES_PROMETHEAN, SPECIES_XENOHYBRID, SPECIES_VOX, SPECIES_TESHARI, SPECIES_VASILISSAN)
species_restricted = list(SPECIES_PROTEAN, SPECIES_HUMAN, SPECIES_SKRELL, SPECIES_TAJ, SPECIES_UNATHI, SPECIES_NEVREAN, SPECIES_AKULA, SPECIES_SERGAL, SPECIES_ZORREN_HIGH, SPECIES_VULPKANIN, SPECIES_PROMETHEAN, SPECIES_XENOHYBRID, SPECIES_VOX, SPECIES_TESHARI, SPECIES_VASILISSAN, SPECIES_XENOMORPH_HYBRID)
allowed = list(
/obj/item/weapon/gun,
/obj/item/device/flashlight,

View File

@@ -0,0 +1,50 @@
/* Shamelessly stolen from xenochimera_trait_vr.dm
** For now, these are just neutral traits for Xenomorph Hybrids only to take.
** Traits defined as custom_only = FALSE in neutral.dm will be available for Xenomorph Hybrids to take as well.
** As such, be careful not to duplicate the traits, and only add dupes where necessary.
** However, if custom_only = FALSE is set, then any species including things like humans can take it. A little silly.
** Therefore, use this file only for Xenomorph Hybrid traits that you want to keep custom + Xenomorph Hybrid only.
*/
/datum/trait/negative/lonely/xenomorph_praetorian
sort = TRAIT_SORT_SPECIES
allowed_species = list(SPECIES_XENOMORPH_HYBRID)
name = "Xenomorph Hybrid: Praetorian"
desc = "Our body has shifted and matured to take the shape and stature of a Praetorian. Our \
bulky size impedes our speed, but we feel significantly tougher. We find it difficult \
to go about our day normally without being in the presence of another soul..."
cost = 0
category = 0
custom_only = FALSE
var_changes = list("item_slowdown_mod" = 0.80, "total_health" = 175, "brute_mod" = 0.8, "trauma_mod" = 0.9, "slowdown" = -0.1, "burn_mod" = 1.5) // Can carry heavy stuff better, more health, more brute resist, slightly less pain but moves slower, takes more burn damage and has the loneliness trait applied.
/datum/trait/neutral/xenomorph_warrior
sort = TRAIT_SORT_SPECIES
allowed_species = list(SPECIES_XENOMORPH_HYBRID)
name = "Xenomorph Hybrid: Warrior"
desc = "Our body has shifted and matured to take the shape and stature of a Warrior. Compared \
to a drone, we feel more resistant to knockdown effects, at the cost of our \
carrying strength."
cost = 0
category = 0
custom_only = FALSE
var_changes = list("stun_mod" = 0.8, "weaken_mod" = 0.8, "item_slowdown_mod" = 1) // Can't carry heavy stuff as well, but has 20% faster recovery for stun and weaken effects.
/datum/trait/neutral/xenomorph_hunter
sort = TRAIT_SORT_SPECIES
allowed_species = list(SPECIES_XENOMORPH_HYBRID)
name = "Xenomorph Hybrid: Hunter"
desc = "Our body has shifted and matured to take the shape and stature of a Hunter. Our \
flexibility and speed is like no other, but our form has grown significantly more \
fragile as a result."
cost = 0
category = 0
custom_only = FALSE
var_changes = list("slowdown" = -0.5, "item_slowdown_mod" = 0.5, "total_health" = 100, "brute_mod" = 1.1) // Much faster and carry-capable, but significantly less tanky.
has_preferences = list("pass_table" = list(TRAIT_PREF_TYPE_BOOLEAN, "On spawn", TRAIT_NO_VAREDIT_TARGET, TRUE))
/datum/trait/neutral/xenomorph_hunter/apply(var/datum/species/S,var/mob/living/carbon/human/H, var/list/trait_prefs)
..()
if (trait_prefs?["pass_table"] || !trait_prefs)
H.pass_flags |= PASSTABLE
H.verbs |= /mob/living/proc/toggle_pass_table

Binary file not shown.

After

Width:  |  Height:  |  Size: 636 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 182 B

View File

@@ -4694,6 +4694,7 @@
#include "modular_chomp\code\modules\mob\living\carbon\human\species\station\protean\protean_species.dm"
#include "modular_chomp\code\modules\mob\living\carbon\human\species\station\traits\negative.dm"
#include "modular_chomp\code\modules\mob\living\carbon\human\species\station\traits\positive.dm"
#include "modular_chomp\code\modules\mob\living\carbon\human\species\station\traits\xenomorph_hybrid_trait.dm"
#include "modular_chomp\code\modules\mob\living\silicon\robot\drone\drone_items.dm"
#include "modular_chomp\code\modules\mob\living\silicon\robot\sprites\civilian.dm"
#include "modular_chomp\code\modules\mob\living\silicon\robot\sprites\clown.dm"