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

rav strain #798

Closed
wants to merge 11 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
5 changes: 4 additions & 1 deletion code/__DEFINES/mobs.dm
Original file line number Diff line number Diff line change
Expand Up @@ -610,7 +610,10 @@ GLOBAL_LIST_INIT(xenoupgradetiers, list(XENO_UPGRADE_BASETYPE, XENO_UPGRADE_INVA

#define RAVAGER_RAGE_DURATION 10 SECONDS
#define RAVAGER_RAGE_WARNING 0.7
#define RAVAGER_RAGE_MIN_HEALTH_THRESHOLD 0.75 //The maximum % of HP we can have to trigger Rage
#define RAVAGER_RAGE_POWER_MULTIPLIER 0.5 //How much we multiply our % of missing HP by to determine Rage Power
#define RAVAGER_RAGE_SUPER_RAGE_THRESHOLD 0.5 //The minimum amount of Rage Power we need to trigger the bonus Rage effects
#define AUTORAVAGER_RAGE_MIN_HEALTH_THRESHOLD 0.75 //The maximum % of HP we can have to trigger Rage
#define RAVAGER_RAGE_MIN_HEALTH_THRESHOLD 0.5 //The maximum % of HP we can have to trigger Rage
#define RAVAGER_RAGE_STAGGERSTUN_IMMUNE_THRESHOLD 0.5
#define RAVAGER_RAGE_ENDURE_INCREASE_PER_SLASH 2 SECONDS //The amount of time each slash during Rage increases Endure's duration
#define RAVAGER_RAGE_HEALTH_RECOVERY_PER_SLASH 40 //Base amount of healing from slash during Rage
Expand Down
1 change: 1 addition & 0 deletions code/__DEFINES/movespeed_modification.dm
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@
#define MOVESPEED_ID_WARRIOR_AGILITY "WARRIOR_AGILITY"
#define MOVESPEED_ID_FRENZY_AURA "FRENZY_AURA"
#define MOVESPEED_ID_XENO_HEMODILE "XENO_HEMODILE"
#define MOVESPEED_ID_RAVAGER_DEATHMARK "RAVAGER_DEATHMARK"
#define MOVESPEED_ID_RAVAGER_RAGE "RAVAGER_RAGE"
#define MOVESPEED_ID_BULL_ACID_CHARGE "BULL_ACID_CHARGE"
#define MOVESPEED_ID_BULL_HEADBUTT_CHARGE "BULL_HEADBUTT_CHARGE"
Expand Down
1 change: 1 addition & 0 deletions code/__DEFINES/traits.dm
Original file line number Diff line number Diff line change
Expand Up @@ -191,6 +191,7 @@
#define TRAIT_STEALTH "stealth" //mob is in stealth, it means that turrets and ai ignore it, also you can't bump it
#define TRAIT_MOB_ICON_UPDATE_BLOCKED "icon_blocked" //target should not update its icon_state
#define TRAIT_VALHALLA_XENO "valhalla_xeno"
#define TRAIT_BLOODTHIRSTER "bloodthirster" // xeno has the bloodthirster ability
//important_recursive_contents traits
/*
* Used for movables that need to be updated, via COMSIG_ENTER_AREA and COMSIG_EXIT_AREA, when transitioning areas.
Expand Down
8 changes: 8 additions & 0 deletions code/datums/looping_sounds/xeno_sounds.dm
Original file line number Diff line number Diff line change
Expand Up @@ -4,3 +4,11 @@
)
mid_length = 16
volume = 60

/datum/looping_sound/secretsuperrage

mid_sounds = list(
'sound/voice/alien/ravager_red_mist.ogg'
)
mid_length = 16
volume = 50

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
Expand Up @@ -44,16 +44,20 @@
/datum/action/ability/activable/xeno/ravage,
/datum/action/ability/xeno_action/endure,
)
///multiplier on plasma amount vs damage that is recieved on attack
var/plasma_damage_dealt_mult = 1.5
///multiplier on plasma amount vs damage that is recieved on being attacked
var/plasma_damage_recieved_mult = 0.5

/datum/xeno_caste/ravager/on_caste_applied(mob/xenomorph)
. = ..()
xenomorph.AddElement(/datum/element/plasma_on_attack, 1.5)
xenomorph.AddElement(/datum/element/plasma_on_attacked, 0.5)
xenomorph.AddElement(/datum/element/plasma_on_attack, plasma_damage_dealt_mult)
xenomorph.AddElement(/datum/element/plasma_on_attacked, plasma_damage_recieved_mult)

/datum/xeno_caste/ravager/on_caste_removed(mob/xenomorph)
. = ..()
xenomorph.RemoveElement(/datum/element/plasma_on_attack, 1.5)
xenomorph.RemoveElement(/datum/element/plasma_on_attacked, 0.5)
xenomorph.RemoveElement(/datum/element/plasma_on_attack, plasma_damage_dealt_mult)
xenomorph.RemoveElement(/datum/element/plasma_on_attacked, plasma_damage_recieved_mult)

/datum/xeno_caste/ravager/normal
upgrade = XENO_UPGRADE_NORMAL
Expand All @@ -74,3 +78,77 @@
/datum/action/ability/xeno_action/endure,
/datum/action/ability/xeno_action/immortality,
)

/datum/xeno_caste/ravager/bloodthirster
caste_name = "Bloodthirster"
display_name = "Bloodthirster"
upgrade_name = ""
caste_desc = "A thirsting fighter that knows no rest."
caste_type_path = /mob/living/carbon/xenomorph/ravager/bloodthirster
base_caste_type_path = /mob/living/carbon/xenomorph/ravager
tier = XENO_TIER_THREE
upgrade = XENO_UPGRADE_BASETYPE
wound_type = "ravager" //used to match appropriate wound overlays

// *** Melee Attacks *** //
melee_damage = 30
attack_delay = 7

// *** Speed *** //
speed = -1.0

// *** Plasma *** //
plasma_max = 500
plasma_gain = 0
plasma_regen_limit = 0.5 // tivi todo
plasma_icon_state = "fury"

// *** Health *** //
max_health = 400

// *** Flags *** //
caste_flags = CASTE_INNATE_PLASMA_REGEN|CASTE_PLASMADRAIN_IMMUNE|CASTE_EVOLUTION_ALLOWED
can_flags = CASTE_CAN_BE_QUEEN_HEALED|CASTE_CAN_BE_LEADER
caste_traits = null

// *** Defense *** //
soft_armor = list(MELEE = 50, BULLET = 55, LASER = 50, ENERGY = 50, BOMB = 10, BIO = 40, FIRE = 70, ACID = 40)

// *** Minimap Icon *** //
minimap_icon = "ravager"

// *** Abilities *** //
actions = list(
/datum/action/ability/xeno_action/xeno_resting,
/datum/action/ability/xeno_action/watch_xeno,
/datum/action/ability/activable/xeno/psydrain,
/datum/action/ability/activable/xeno/charge/nocost,
/datum/action/ability/activable/xeno/ravage/nocost,
/datum/action/ability/xeno_action/endure,
/datum/action/ability/xeno_action/rage,
/datum/action/ability/xeno_action/bloodthirst,
)
plasma_damage_dealt_mult = 2
plasma_damage_recieved_mult = 0.5

/datum/xeno_caste/ravager/bloodthirster/normal
upgrade = XENO_UPGRADE_NORMAL

/datum/xeno_caste/ravager/bloodthirster/primordial
upgrade_name = "Primordial"
caste_desc = "A blood caked merciless killer."
primordial_message = "BLOOD FOR THE BLOOD GOD! SKULLS FOR THE SKULL THRONE!"
upgrade = XENO_UPGRADE_PRIMO

// *** Abilities *** //
actions = list(
/datum/action/ability/xeno_action/xeno_resting,
/datum/action/ability/xeno_action/watch_xeno,
/datum/action/ability/activable/xeno/psydrain,
/datum/action/ability/activable/xeno/charge/nocost,
/datum/action/ability/activable/xeno/ravage/nocost,
/datum/action/ability/xeno_action/endure,
/datum/action/ability/xeno_action/rage,
/datum/action/ability/xeno_action/bloodthirst,
/datum/action/ability/xeno_action/deathmark,
)
32 changes: 12 additions & 20 deletions code/modules/mob/living/carbon/xenomorph/castes/ravager/ravager.dm
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@
/datum/xenomorph_skin/ravager/bonehead,
/datum/xenomorph_skin/ravager,
)
var/autorage = TRUE
var/rage_power
var/rage = FALSE
var/staggerstun_immune = FALSE
Expand All @@ -28,14 +29,16 @@
/mob/living/carbon/xenomorph/ravager/Initialize(mapload)
. = ..()
ADD_TRAIT(src, TRAIT_LIGHT_STEP, XENO_TRAIT)
RegisterSignal(src, COMSIG_XENOMORPH_TAKING_DAMAGE, PROC_REF(update_rage))
if(autorage)
RegisterSignal(src, COMSIG_XENOMORPH_TAKING_DAMAGE, PROC_REF(update_rage))

/mob/living/carbon/xenomorph/ravager/Life()
. = ..()
update_rage()
if(autorage)
update_rage()

/mob/living/carbon/xenomorph/ravager/proc/update_rage()
if(health > maxHealth * RAVAGER_RAGE_MIN_HEALTH_THRESHOLD)
if(health > maxHealth * AUTORAVAGER_RAGE_MIN_HEALTH_THRESHOLD)
if(!rage)
return
rage = FALSE
Expand All @@ -52,7 +55,7 @@
balloon_alert(src, "We are rested enough")
return

var/rage_threshold = maxHealth * (1 - RAVAGER_RAGE_MIN_HEALTH_THRESHOLD)
var/rage_threshold = maxHealth * (1 - AUTORAVAGER_RAGE_MIN_HEALTH_THRESHOLD)
rage_power = max(0, (1 - ((health - RAVAGER_ENDURE_HP_LIMIT) / (maxHealth - RAVAGER_ENDURE_HP_LIMIT - rage_threshold))))

add_filter("ravager_rage_outline", 5, outline_filter(rage_power, COLOR_RED))
Expand Down Expand Up @@ -132,22 +135,11 @@
emote("roar")
to_chat(src, span_xenodanger("The heat of the fire roars in our veins! KILL! CHARGE! DESTROY!"))

// ***************************************
// *********** Ability related
// ***************************************
/mob/living/carbon/xenomorph/ravager/get_crit_threshold()
. = ..()
if(!endure)
return
var/datum/action/ability/xeno_action/endure/endure_ability = actions_by_path[/datum/action/ability/xeno_action/endure]
return endure_ability.endure_threshold

/mob/living/carbon/xenomorph/ravager/get_death_threshold()
. = ..()
if(!endure)
return
var/datum/action/ability/xeno_action/endure/endure_ability = actions_by_path[/datum/action/ability/xeno_action/endure]
return endure_ability.endure_threshold
/mob/living/carbon/xenomorph/ravager/bloodthirster
icon = 'icons/Xeno/castes/ravager/bloodthirster.dmi'
caste_base_type = /datum/xeno_caste/ravager/bloodthirster
skins = null
autorage = null

/mob/living/carbon/xenomorph/ravager/med_hud_set_health()
var/image/holder = hud_list[HEALTH_HUD_XENO]
Expand Down
12 changes: 11 additions & 1 deletion code/modules/mob/living/carbon/xenomorph/xeno_helpers.dm
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,18 @@
SHOULD_CALL_PARENT(FALSE)
return FALSE

/mob/living/carbon/xenomorph/get_crit_threshold()
. = ..()
if(!endure)
return
var/datum/action/ability/xeno_action/endure/endure_ability = actions_by_path[/datum/action/ability/xeno_action/endure]
return endure_ability.endure_threshold

/mob/living/carbon/xenomorph/get_death_threshold()
return xeno_caste.crit_health
if(!endure)
return xeno_caste.crit_health
var/datum/action/ability/xeno_action/endure/endure_ability = actions_by_path[/datum/action/ability/xeno_action/endure]
return endure_ability.endure_threshold

///Helper proc for giving the rally abilities
/mob/living/carbon/xenomorph/proc/give_rally_abilities()
Expand Down
3 changes: 3 additions & 0 deletions code/modules/mob/living/carbon/xenomorph/xenoupgrade.dm
Original file line number Diff line number Diff line change
Expand Up @@ -158,6 +158,9 @@
/mob/living/carbon/xenomorph/ravager/primordial
upgrade = XENO_UPGRADE_PRIMO

/mob/living/carbon/xenomorph/ravager/bloodthirster/primordial
upgrade = XENO_UPGRADE_PRIMO

//----RAVAGER END----//
//================//
//RAVAGER ERT START
Expand Down
Binary file modified icons/Xeno/64x64_Xeno_overlays.dmi
Binary file not shown.
Binary file modified icons/Xeno/actions.dmi
Binary file not shown.
Binary file added icons/Xeno/castes/ravager/bloodthirster.dmi
Binary file not shown.
Binary file added sound/voice/alien/ravager_red_mist.ogg
Binary file not shown.
Loading