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

Sapper Burrower Strain #6321

Closed
wants to merge 10 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions code/__DEFINES/mobs.dm
Original file line number Diff line number Diff line change
Expand Up @@ -232,6 +232,7 @@
#define MOB_SIZE_XENO_VERY_SMALL 1.5
#define MOB_SIZE_XENO_SMALL 2
#define MOB_SIZE_XENO 3
#define MOB_SIZE_BULKY 3.5
#define MOB_SIZE_BIG 4
#define MOB_SIZE_IMMOBILE 5 // if you are not supposed to be able to moved AT ALL then you get this flag

Expand Down
3 changes: 3 additions & 0 deletions code/__DEFINES/xeno.dm
Original file line number Diff line number Diff line change
Expand Up @@ -406,6 +406,9 @@
#define PRAETORIAN_WARDEN "Warden"
#define PRAETORIAN_OPPRESSOR "Oppressor"

// Burrower strain flags
#define BURROWER_SAPPER "Sapper"

/////////////////////////////////////////////////////////////////////////////////////
//
// Modifiers
Expand Down
22 changes: 22 additions & 0 deletions code/datums/ammo/xeno.dm
Original file line number Diff line number Diff line change
Expand Up @@ -395,3 +395,25 @@

/datum/ammo/xeno/oppressor_tail/proc/remove_tail_overlay(mob/overlayed_mob, image/tail_image)
overlayed_mob.overlays -= tail_image

/datum/ammo/xeno/sapper_stone
name = "boulder"
icon_state = "neurotoxin"
sound_hit = "slam"
sound_bounce = "metalbang"
flags_ammo_behavior = AMMO_XENO
damage_type = BRUTE
shell_speed = AMMO_SPEED_TIER_2

damage = 80 // It's a large boulder being hurled by an angry and muscley mole, it's gonna do some damage
max_range = 8
accuracy = HIT_ACCURACY_TIER_MAX

/datum/ammo/xeno/sapper_stone/on_hit_mob(mob/target, obj/projectile/proj)
if(iscarbon(target))
var/mob/living/carbon/carbon = target
if(carbon.status_flags & XENO_HOST && HAS_TRAIT(carbon, TRAIT_NESTED) || carbon.stat == DEAD)
return
target.apply_effect(7 SECONDS, DAZE)
target.apply_effect(2 SECONDS, WEAKEN)
slam_back(target, proj)
2 changes: 1 addition & 1 deletion code/game/machinery/vending/cm_vending.dm
Original file line number Diff line number Diff line change
Expand Up @@ -410,7 +410,7 @@ GLOBAL_LIST_EMPTY(vending_products)
user.visible_message(SPAN_WARNING("[user] begins to lean against [src]."), \
SPAN_WARNING("You begin to lean against [src]."), null, 5, CHAT_TYPE_XENO_COMBAT)
var/shove_time = 80
if(user.mob_size >= MOB_SIZE_BIG)
if(user.mob_size >= MOB_SIZE_BULKY)
shove_time = 30
if(istype(user,/mob/living/carbon/xenomorph/crusher))
shove_time = 15
Expand Down
4 changes: 2 additions & 2 deletions code/game/objects/effects/acid_hole.dm
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@
return

if(!use_wall_hole(user))
if(user.mob_size >= MOB_SIZE_BIG)
if(user.mob_size >= MOB_SIZE_BULKY)
expand_hole(user)
return XENO_NO_DELAY_ACTION

Expand All @@ -64,7 +64,7 @@

/obj/effect/acid_hole/proc/use_wall_hole(mob/living/user)

if(user.mob_size >= MOB_SIZE_BIG || user.is_mob_incapacitated() || user.buckled || user.anchored)
if(user.mob_size >= MOB_SIZE_BULKY || user.is_mob_incapacitated() || user.buckled || user.anchored)
return FALSE

var/mob_dir = get_dir(user, src)
Expand Down
4 changes: 3 additions & 1 deletion code/game/objects/explosion_recursive.dm
Original file line number Diff line number Diff line change
Expand Up @@ -311,7 +311,7 @@ explosion resistance exactly as much as their health
return 0
if(MOB_SIZE_HUMAN)
return 20
if(MOB_SIZE_XENO, MOB_SIZE_XENO_SMALL)
if(MOB_SIZE_XENO, MOB_SIZE_XENO_SMALL, MOB_SIZE_BULKY)
return 20
if(MOB_SIZE_BIG, MOB_SIZE_IMMOBILE)
return 40
Expand Down Expand Up @@ -363,6 +363,8 @@ explosion resistance exactly as much as their health
weight = 1
if(MOB_SIZE_XENO, MOB_SIZE_XENO_SMALL)
weight = 1
if(MOB_SIZE_BULKY)
weight = 2
if(MOB_SIZE_BIG, MOB_SIZE_IMMOBILE)
weight = 4
var/range = round( severity/weight * 0.02 ,1)
Expand Down
3 changes: 3 additions & 0 deletions code/game/objects/structures/barricade/barricade.dm
Original file line number Diff line number Diff line change
Expand Up @@ -266,6 +266,9 @@
if(istype(bullet.ammo, /datum/ammo/xeno/boiler_gas))
take_damage(floor(50 * burn_multiplier))

else if(istype(bullet.ammo, /datum/ammo/xeno/sapper_stone))
take_damage(bullet.damage * 4)

else if(bullet.ammo.flags_ammo_behavior & AMMO_ANTISTRUCT)
take_damage(bullet.damage * ANTISTRUCT_DMG_MULT_BARRICADES)

Expand Down
2 changes: 1 addition & 1 deletion code/game/turfs/walls/walls.dm
Original file line number Diff line number Diff line change
Expand Up @@ -115,7 +115,7 @@
..()

/turf/closed/wall/attack_alien(mob/living/carbon/xenomorph/user)
if(acided_hole && user.mob_size >= MOB_SIZE_BIG)
if(acided_hole && user.mob_size >= MOB_SIZE_BULKY)
acided_hole.expand_hole(user) //This proc applies the attack delay itself.
return XENO_NO_DELAY_ACTION

Expand Down
2 changes: 1 addition & 1 deletion code/modules/cm_aliens/structures/tunnel.dm
Original file line number Diff line number Diff line change
Expand Up @@ -215,7 +215,7 @@
return XENO_NO_DELAY_ACTION

if(!isfriendly(M))
if(M.mob_size < MOB_SIZE_BIG)
if(M.mob_size < MOB_SIZE_BULKY)
to_chat(M, SPAN_XENOWARNING("We aren't large enough to collapse this tunnel!"))
return XENO_NO_DELAY_ACTION

Expand Down
2 changes: 1 addition & 1 deletion code/modules/mob/living/carbon/xenomorph/XenoProcs.dm
Original file line number Diff line number Diff line change
Expand Up @@ -271,7 +271,7 @@
return

var/mob/living/carbon/M = L
if(M.stat == DEAD || M.mob_size >= MOB_SIZE_BIG || can_not_harm(L) || M == src)
if(M.stat == DEAD || M.mob_size >= MOB_SIZE_BULKY || can_not_harm(L) || M == src)
throwing = FALSE
return

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,3 +34,49 @@
var/mob/living/carbon/xenomorph/X = owner
X.tremor()
return ..()

// Sapper
/datum/action/xeno_action/activable/sapper_punch
name = "Punch"
action_icon_state = "punch"
ability_name = "punch"
macro_path = /datum/action/xeno_action/verb/verb_punch
action_type = XENO_ACTION_CLICK
ability_primacy = XENO_PRIMARY_ACTION_1
xeno_cooldown = 4 SECONDS

var/base_damage = 20
var/damage_variance = 10

/datum/action/xeno_action/onclick/demolish
name = "Demolish"
action_icon_state = "rav_enrage"
ability_name = "demolish"
macro_path = /datum/action/xeno_action/verb/verb_demolish
action_type = XENO_ACTION_ACTIVATE
ability_primacy = XENO_PRIMARY_ACTION_2
xeno_cooldown = 45 SECONDS
plasma_cost = 100

/datum/action/xeno_action/onclick/earthquake
name = "Earthquake"
action_icon_state = "stomp"
ability_name = "earthquake"
macro_path = /datum/action/xeno_action/verb/verb_earthquake
action_type = XENO_ACTION_CLICK
ability_primacy = XENO_PRIMARY_ACTION_3
xeno_cooldown = 40 SECONDS
plasma_cost = 100

/datum/action/xeno_action/activable/boulder_toss
name = "Boulder Toss"
action_icon_state = "bombard"
ability_name = "boulder toss"
macro_path = /datum/action/xeno_action/verb/verb_boulder_toss
action_type = XENO_ACTION_CLICK
ability_primacy = XENO_PRIMARY_ACTION_4
xeno_cooldown = 90 SECONDS
plasma_cost = 100

var/aim_turf = FALSE
var/ammo_type = /datum/ammo/xeno/sapper_stone
Original file line number Diff line number Diff line change
Expand Up @@ -4,3 +4,23 @@
set hidden = TRUE
var/action_name = "Tremor (100)"
handle_xeno_macro(src, action_name)

/datum/action/xeno_action/verb/verb_demolish()
set category = "Alien"
set name = "Demolish"
set hidden = TRUE
var/action_name = "Demolish"
handle_xeno_macro(src, action_name)

/datum/action/xeno_action/verb/verb_earthquake()
set category = "Alien"
set name = "Earthquake"
set hidden = TRUE
var/action_name = "Earthquake"
handle_xeno_macro(src, action_name)
/datum/action/xeno_action/verb/verb_boulder_toss()
set category = "Alien"
set name = "Boulder Toss"
set hidden = TRUE
var/action_name = "Boulder Toss"
handle_xeno_macro(src, action_name)
Loading
Loading