Skip to content

Commit

Permalink
Merge remote-tracking bran' into impaler
Browse files Browse the repository at this point in the history
  • Loading branch information
Unknownity committed Jun 8, 2023
2 parents 825e8fe + 479da7f commit a30f27e
Show file tree
Hide file tree
Showing 31 changed files with 605 additions and 25 deletions.
1 change: 1 addition & 0 deletions code/__DEFINES/mobs.dm
Original file line number Diff line number Diff line change
Expand Up @@ -326,6 +326,7 @@
// Burrower strain flags
#define BURROWER_NORMAL "Normal"
#define BURROWER_TREMOR "Tremor"
#define BURROWER_IMPALER "Impaler"

// Sentinel strain flags
#define SENTINEL_NORMAL "Normal"
Expand Down
1 change: 1 addition & 0 deletions code/__DEFINES/movement.dm
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,7 @@
#define PASS_HIGH_OVER_ONLY (1<<15) // For atoms that require a high toss to go over it, should only really be using this for flags_can_pass_x vars
#define PASS_BUILDING_ONLY (1<<16) // For throwing stuff over walls (that lead to open ceilings)
#define PASS_CRUSHER_CHARGE (1<<17) // For crusher charge specifically
#define PASS_BURROWED (1<<18) // For burrowed mobs to pass though wired and normal barricades along with any structure specifically

// Pass flag groups
#define PASS_OVER (PASS_OVER_THROW_ITEM|PASS_OVER_THROW_MOB|PASS_OVER_FIRE|PASS_OVER_ACID_SPRAY)
Expand Down
5 changes: 4 additions & 1 deletion code/__DEFINES/traits.dm
Original file line number Diff line number Diff line change
Expand Up @@ -179,6 +179,8 @@
#define TRAIT_ABILITY_NO_PLASMA_TRANSFER "t_ability_no_plasma_transfer"
/// Shows that the xeno queen is on ovi
#define TRAIT_ABILITY_OVIPOSITOR "t_ability_ovipositor"
/// Used for burrowed mobs, prevent's SG/sentrys/claymores from autofiring.
#define TRAIT_ABILITY_BURROWED "t_ability_burrowed"

//-- item traits --
// TOOL TRAITS
Expand Down Expand Up @@ -228,7 +230,8 @@ GLOBAL_LIST_INIT(mob_traits, list(
TRAIT_TWOBORE_TRAINING,
TRAIT_LEADERSHIP,
TRAIT_DEXTROUS,
TRAIT_REAGENT_SCANNER
TRAIT_REAGENT_SCANNER,
TRAIT_ABILITY_BURROWED
))

/*
Expand Down
2 changes: 1 addition & 1 deletion code/_onclick/hud/screen_objects.dm
Original file line number Diff line number Diff line change
Expand Up @@ -557,7 +557,7 @@
if(!user.hive.living_xeno_queen)
to_chat(user, SPAN_WARNING("Your hive doesn't have a living queen!"))
return FALSE
if(user.burrow || user.is_mob_incapacitated() || user.buckled)
if(user.burrow || user.is_mob_incapacitated() || user.buckled || user.fortify)
return FALSE
user.overwatch(user.hive.living_xeno_queen)

Expand Down
2 changes: 1 addition & 1 deletion code/game/machinery/doors/airlock_control.dm
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
/obj/structure/machinery/door/airlock/initialize_pass_flags(datum/pass_flags_container/PF)
..()
if (PF)
PF.flags_can_pass_all = NONE
PF.flags_can_pass_all = PASS_BURROWED

/obj/structure/machinery/door/airlock/proc/can_radio()
if(!arePowerSystemsOn())
Expand Down
5 changes: 5 additions & 0 deletions code/game/machinery/doors/airlock_types.dm
Original file line number Diff line number Diff line change
Expand Up @@ -827,6 +827,11 @@
/obj/structure/machinery/door/airlock/dropship_hatch/ex_act(severity)
return

/obj/structure/machinery/door/airlock/dropship_hatch/initialize_pass_flags(var/datum/pass_flags_container/PF)
..()
if (PF)
PF.flags_can_pass_all = NONE

/obj/structure/machinery/door/airlock/dropship_hatch/unlock()
if(is_reserved_level(z)) // in flight
return
Expand Down
2 changes: 1 addition & 1 deletion code/game/machinery/doors/door.dm
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@
/obj/structure/machinery/door/initialize_pass_flags(datum/pass_flags_container/PF)
..()
if (PF)
PF.flags_can_pass_all = NONE
PF.flags_can_pass_all = PASS_BURROWED

/obj/structure/machinery/door/proc/handle_multidoor()
if(width > 1)
Expand Down
4 changes: 4 additions & 0 deletions code/game/machinery/doors/multi_tile.dm
Original file line number Diff line number Diff line change
Expand Up @@ -275,6 +275,10 @@
/obj/structure/machinery/door/airlock/multi_tile/almayer/dropshiprear/ex_act(severity)
return

/obj/structure/machinery/door/airlock/multi_tile/almayer/dropshiprear/initialize_pass_flags(var/datum/pass_flags_container/PF)
..()
if (PF)
PF.flags_can_pass_all = NONE

/obj/structure/machinery/door/airlock/multi_tile/almayer/dropshiprear/unlock()
if(is_reserved_level(z))
Expand Down
5 changes: 5 additions & 0 deletions code/game/machinery/doors/poddoor.dm
Original file line number Diff line number Diff line change
Expand Up @@ -300,6 +300,11 @@
unslashable = TRUE
unacidable = TRUE

/obj/structure/machinery/door/poddoor/shutters/almayer/locked/initialize_pass_flags(var/datum/pass_flags_container/PF)
..()
if (PF)
PF.flags_can_pass_all = NONE

/obj/structure/machinery/door/poddoor/almayer/locked/attackby(obj/item/C as obj, mob/user as mob)
if(HAS_TRAIT(C, TRAIT_TOOL_CROWBAR))
return
Expand Down
5 changes: 5 additions & 0 deletions code/game/machinery/doors/shutters.dm
Original file line number Diff line number Diff line change
Expand Up @@ -131,6 +131,11 @@
/obj/structure/machinery/door/poddoor/shutters/almayer/pressure/ex_act(severity)
return

/obj/structure/machinery/door/poddoor/shutters/almayer/pressure/initialize_pass_flags(var/datum/pass_flags_container/PF)
..()
if (PF)
PF.flags_can_pass_all = NONE

/obj/structure/machinery/door/poddoor/shutters/almayer/uniform_vendors
name = "\improper Uniform Vendor Shutters"
id = "bot_uniforms"
Expand Down
12 changes: 12 additions & 0 deletions code/game/objects/effects/aliens.dm
Original file line number Diff line number Diff line change
Expand Up @@ -482,6 +482,18 @@
/obj/effect/xenomorph/xeno_telegraph/brown/lash
icon_state = "xeno_telegraph_lash"

/obj/effect/xenomorph/ground_spike
name = "???"
desc = ""
icon_state = "ground_spike"
mouse_opacity = FALSE
var/mob/living/carbon/Xenomorph/source_xeno = null

/obj/effect/xenomorph/ground_spike/New(loc, source_xeno = null, ttl = 10)
if(isXeno(source_xeno))
src.source_xeno = source_xeno
..(loc)
QDEL_IN(src, ttl)


/obj/effect/xenomorph/acid_damage_delay
Expand Down
2 changes: 2 additions & 0 deletions code/game/objects/items/explosives/mine.dm
Original file line number Diff line number Diff line change
Expand Up @@ -198,6 +198,8 @@
return
if(L.get_target_lock(iff_signal) || isrobot(L))
return
if(HAS_TRAIT(L, TRAIT_ABILITY_BURROWED))
return
L.visible_message(SPAN_DANGER("[icon2html(src, viewers(src))] The [name] clicks as [L] moves in front of it."), \
SPAN_DANGER("[icon2html(src, L)] The [name] clicks as you move in front of it."), \
SPAN_DANGER("You hear a click."))
Expand Down
5 changes: 5 additions & 0 deletions code/game/objects/structures.dm
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,11 @@
if(climbable)
verbs += /obj/structure/proc/climb_on

/obj/structure/initialize_pass_flags(var/datum/pass_flags_container/PF)
..()
if (PF)
PF.flags_can_pass_all = PASS_BURROWED

/obj/structure/Destroy()
//before ..() because the parent does loc = null
for(var/atom/movable/A in contents_recursive())
Expand Down
2 changes: 1 addition & 1 deletion code/game/objects/structures/barricade/barricade.dm
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@
/obj/structure/barricade/initialize_pass_flags(datum/pass_flags_container/PF)
..()
if (PF)
PF.flags_can_pass_all = NONE
PF.flags_can_pass_all = PASS_BURROWED
PF.flags_can_pass_front = NONE
PF.flags_can_pass_behind = PASS_OVER^(PASS_OVER_ACID_SPRAY|PASS_OVER_THROW_MOB)
flags_can_pass_front_temp = PASS_OVER_THROW_MOB
Expand Down
2 changes: 1 addition & 1 deletion code/modules/defenses/sentry.dm
Original file line number Diff line number Diff line change
Expand Up @@ -367,7 +367,7 @@
targets.Remove(A)
continue

if(M.get_target_lock(faction_group) || M.invisibility)
if(M.get_target_lock(faction_group) || M.invisibility || HAS_TRAIT(M, TRAIT_ABILITY_BURROWED))
if(M == target)
target = null
targets.Remove(M)
Expand Down
3 changes: 3 additions & 0 deletions code/modules/mob/living/carbon/xenomorph/XenoAttacks.dm
Original file line number Diff line number Diff line change
Expand Up @@ -93,6 +93,9 @@
if (M.fortify || M.burrow)
return XENO_NO_DELAY_ACTION

if(HAS_TRAIT(src, TRAIT_ABILITY_BURROWED))
return XENO_NO_DELAY_ACTION

if(islarva(M)) //Larvas can't eat people
M.visible_message(SPAN_DANGER("[M] nudges its head against \the [src]."), \
SPAN_DANGER("You nudge your head against \the [src]."), null, null, CHAT_TYPE_XENO_FLUFF)
Expand Down
2 changes: 2 additions & 0 deletions code/modules/mob/living/carbon/xenomorph/Xenomorph.dm
Original file line number Diff line number Diff line change
Expand Up @@ -745,6 +745,8 @@
if(SEND_SIGNAL(AM, COMSIG_MOVABLE_XENO_START_PULLING, src) & COMPONENT_ALLOW_PULL)
return do_pull(AM, lunge, no_msg)

if(burrow)
return
if(!isliving(AM))
return FALSE
var/mob/living/L = AM
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,8 @@
ability_primacy = XENO_PRIMARY_ACTION_3

/datum/action/xeno_action/activable/burrow/use_ability(atom/A)
var/mob/living/carbon/xenomorph/X = owner
if(X.burrow)
var/mob/living/carbon/Xenomorph/X = owner
if(X.burrow && X.mutation_type != BURROWER_IMPALER)
X.tunnel(get_turf(A))
else
X.burrow()
Expand All @@ -29,3 +29,68 @@
var/mob/living/carbon/xenomorph/X = owner
X.tremor()
return ..()

//Spiker abilities
/datum/action/xeno_action/onclick/burrow
name = "Burrow"
action_icon_state = "agility_on"
ability_name = "burrow"
macro_path = /datum/action/xeno_action/verb/verb_burrow
action_type = XENO_ACTION_CLICK
ability_primacy = XENO_PRIMARY_ACTION_3

/datum/action/xeno_action/onclick/burrow/use_ability(atom/A)
var/mob/living/carbon/Xenomorph/X = owner
if(X.burrow && X.mutation_type != BURROWER_IMPALER)
X.tunnel(get_turf(A))
else
X.burrow()

/datum/action/xeno_action/activable/burrowed_spikes
name = "Burrowed Spikes"
ability_name = "burrowed spikes"
action_icon_state = "burrowed_spikes"
macro_path = /datum/action/xeno_action/verb/verb_burrowed_spikes
action_type = XENO_ACTION_CLICK
ability_primacy = XENO_PRIMARY_ACTION_1
xeno_cooldown = 8 SECONDS
plasma_cost = 50

// Config
var/base_damage = 35
var/chain_separation_delay = 0.2 SECONDS //Delay between each tile hit
var/max_distance = 4
var/reinforced_range_bonus = 2
var/reinforced_damage_bonus = 30

/datum/action/xeno_action/activable/sunken_tail
name = "Sunken Tail"
ability_name = "sunken tail"
action_icon_state = "sunken_tail"
macro_path = /datum/action/xeno_action/verb/verb_sunken_tail
action_type = XENO_ACTION_CLICK
ability_primacy = XENO_PRIMARY_ACTION_2
xeno_cooldown = 13 SECONDS
plasma_cost = 100

// Config
var/base_damage = 60
var/windup_delay = 0.8 SECONDS
var/max_distance = 7
var/reinforced_range_bonus = 2
var/reinforced_damage_bonus = 30
var/reinforced_spread_range = 2

/datum/action/xeno_action/onclick/ensconce
name = "Ensconce"
ability_name = "ensconce"
action_icon_state = "ensconce"
macro_path = /datum/action/xeno_action/verb/verb_ensconce
action_type = XENO_ACTION_CLICK
ability_primacy = XENO_PRIMARY_ACTION_4
xeno_cooldown = 3 SECONDS
plasma_cost = 0

// Config
var/windup_delay = 1 SECONDS
var/reinforced_vision_range = 10
Original file line number Diff line number Diff line change
Expand Up @@ -4,3 +4,25 @@
set hidden = TRUE
var/action_name = "Tremor (100)"
handle_xeno_macro(src, action_name)

//Spiker macros
/datum/action/xeno_action/verb/verb_burrowed_spikes()
set category = "Alien"
set name = "Burrowed Spikes"
set hidden = 1
var/action_name = "Burrowed Spikes"
handle_xeno_macro(src, action_name)

/datum/action/xeno_action/verb/verb_sunken_tail()
set category = "Alien"
set name = "Sunken Tail"
set hidden = 1
var/action_name = "Sunken Tail"
handle_xeno_macro(src, action_name)

/datum/action/xeno_action/verb/verb_ensconce()
set category = "Alien"
set name = "Ensconce"
set hidden = 1
var/action_name = "Ensconce"
handle_xeno_macro(src, action_name)
Loading

0 comments on commit a30f27e

Please sign in to comment.