Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Lesser drone nerfs #6140

Merged
merged 13 commits into from
Apr 20, 2024
25 changes: 24 additions & 1 deletion code/modules/mob/living/carbon/xenomorph/Facehuggers.dm
Drulikar marked this conversation as resolved.
Show resolved Hide resolved
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,9 @@
/// the nearest human before dying
var/jumps_left = 2

var/time_to_live = 30 SECONDS
var/death_timer

var/icon_xeno = 'icons/mob/xenos/effects.dmi'
var/icon_xenonid = 'icons/mob/xenonids/xenonid_crab.dmi'

Expand All @@ -55,6 +58,9 @@
set_hive_data(src, hivenumber)
go_active()

if (hivenumber != XENO_HIVE_TUTORIAL)
death_timer = addtimer(CALLBACK(src, PROC_REF(end_lifecycle)), time_to_live, TIMER_OVERRIDE|TIMER_STOPPABLE|TIMER_UNIQUE)


/obj/item/clothing/mask/facehugger/Destroy()
. = ..()
Expand All @@ -75,6 +81,10 @@
if(QDESTROYING(src))
return
addtimer(CALLBACK(src, PROC_REF(check_turf)), 0.2 SECONDS)

if(!death_timer && hivenumber != XENO_HIVE_TUTORIAL)
death_timer = addtimer(CALLBACK(src, PROC_REF(end_lifecycle)), time_to_live, TIMER_OVERRIDE|TIMER_STOPPABLE|TIMER_UNIQUE)

if(stat == CONSCIOUS && loc) //Make sure we're conscious and not idle or dead.
go_idle()
if(attached)
Expand Down Expand Up @@ -173,9 +183,18 @@
if(exposed_temperature > 300)
die()

/obj/item/clothing/mask/facehugger/equipped(mob/M)
/obj/item/clothing/mask/facehugger/equipped(mob/holder)
SHOULD_CALL_PARENT(FALSE) // ugh equip sounds
// So picking up a hugger does not prematurely kill it
if (!isxeno(holder))
return

var/mob/living/carbon/xenomorph/xeno = holder

if ((xeno.caste.hugger_nurturing || hivenumber == XENO_HIVE_TUTORIAL) && death_timer)
deltimer(death_timer)
death_timer = null

go_idle()

/obj/item/clothing/mask/facehugger/Crossed(atom/target)
Expand Down Expand Up @@ -410,6 +429,10 @@
deltimer(jump_timer)
jump_timer = null

if(death_timer)
deltimer(death_timer)
death_timer = null

if(!impregnated)
icon_state = "[initial(icon_state)]_dead"
stat = DEAD
Expand Down
10 changes: 9 additions & 1 deletion code/modules/mob/living/carbon/xenomorph/castes/lesser_drone.dm
Original file line number Diff line number Diff line change
Expand Up @@ -16,9 +16,10 @@
can_be_revived = FALSE

build_time_mult = BUILD_TIME_MULT_LESSER_DRONE
behavior_delegate_type = /datum/behavior_delegate/lesser_drone_base

caste_desc = "A builder of hives."
can_hold_facehuggers = 1
can_hold_facehuggers = TRUE
can_hold_eggs = CAN_HOLD_TWO_HANDS
acid_level = 1
weed_level = WEED_LEVEL_STANDARD
Expand Down Expand Up @@ -118,3 +119,10 @@

/mob/living/carbon/xenomorph/lesser_drone/handle_ghost_message()
return

/datum/behavior_delegate/lesser_drone_base
name = "Base Lesser Drone Behavior Delegate"

/datum/behavior_delegate/lesser_drone_base/on_life()
if(bound_xeno.body_position == STANDING_UP && !(locate(/obj/effect/alien/weeds) in get_turf(bound_xeno)))
bound_xeno.adjustBruteLoss(5)
Loading