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

adds The Alien caste #661

Open
wants to merge 2 commits into
base: master
Choose a base branch
from
Open
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
7 changes: 4 additions & 3 deletions code/__DEFINES/xeno.dm
Original file line number Diff line number Diff line change
Expand Up @@ -258,7 +258,7 @@
#define XENO_HEALTH_QUEEN 1000 * XENO_UNIVERSAL_HPMULT
#define XENO_HEALTH_IMMORTAL 1200 * XENO_UNIVERSAL_HPMULT
#define XENO_HEALTH_KING 1500 * XENO_UNIVERSAL_HPMULT

#define XENO_HEALTH_ALIEN 5000 * XENO_UNIVERSAL_HPMULT
// Plasma bands
#define XENO_NO_PLASMA 0
#define XENO_PLASMA_TIER_1 100 * XENO_UNIVERSAL_PLASMAMULT
Expand Down Expand Up @@ -704,9 +704,10 @@
#define XENO_CASTE_QUEEN "Queen"
#define XENO_CASTE_PREDALIEN "Predalien"
#define XENO_CASTE_HELLHOUND "Hellhound"
#define XENO_SPECIAL_CASTES list(XENO_CASTE_QUEEN, XENO_CASTE_PREDALIEN, XENO_CASTE_HELLHOUND)
#define XENO_CASTE_ALIEN "Alien"
#define XENO_SPECIAL_CASTES list(XENO_CASTE_QUEEN, XENO_CASTE_PREDALIEN, XENO_CASTE_HELLHOUND, XENO_CASTE_ALIEN)

#define ALL_XENO_CASTES list(XENO_CASTE_LARVA, XENO_CASTE_PREDALIEN_LARVA, XENO_CASTE_FACEHUGGER, XENO_CASTE_LESSER_DRONE, XENO_CASTE_DRONE, XENO_CASTE_RUNNER, XENO_CASTE_SENTINEL, XENO_CASTE_DEFENDER, XENO_CASTE_BURROWER, XENO_CASTE_CARRIER, XENO_CASTE_HIVELORD, XENO_CASTE_LURKER, XENO_CASTE_WARRIOR, XENO_CASTE_SPITTER, XENO_CASTE_BOILER, XENO_CASTE_PRAETORIAN, XENO_CASTE_CRUSHER, XENO_CASTE_RAVAGER, XENO_CASTE_QUEEN, XENO_CASTE_PREDALIEN, XENO_CASTE_HELLHOUND, XENO_CASTE_SOLDIER, XENO_CASTE_KING)
#define ALL_XENO_CASTES list(XENO_CASTE_LARVA, XENO_CASTE_PREDALIEN_LARVA, XENO_CASTE_FACEHUGGER, XENO_CASTE_LESSER_DRONE, XENO_CASTE_DRONE, XENO_CASTE_RUNNER, XENO_CASTE_SENTINEL, XENO_CASTE_DEFENDER, XENO_CASTE_BURROWER, XENO_CASTE_CARRIER, XENO_CASTE_HIVELORD, XENO_CASTE_LURKER, XENO_CASTE_WARRIOR, XENO_CASTE_SPITTER, XENO_CASTE_BOILER, XENO_CASTE_PRAETORIAN, XENO_CASTE_CRUSHER, XENO_CASTE_RAVAGER, XENO_CASTE_QUEEN, XENO_CASTE_PREDALIEN, XENO_CASTE_HELLHOUND, XENO_CASTE_SOLDIER, XENO_CASTE_KING, XENO_CASTE_ALIEN)

// Checks if two hives are allied to each other.
// PARAMETERS:
Expand Down
2 changes: 2 additions & 0 deletions code/game/jobs/role_authority.dm
Original file line number Diff line number Diff line change
Expand Up @@ -748,6 +748,8 @@ I hope it's easier to tell what the heck this proc is even doing, unlike previou
M = /mob/living/carbon/xenomorph/soldier
if(XENO_CASTE_KING)
M = /mob/living/carbon/xenomorph/king
if(XENO_CASTE_ALIEN)
M = /mob/living/carbon/xenomorph/alien
return M


Expand Down
5 changes: 5 additions & 0 deletions code/modules/admin/player_panel/actions/transform.dm
Original file line number Diff line number Diff line change
Expand Up @@ -145,6 +145,11 @@ GLOBAL_LIST_INIT(pp_transformables, list(
name = XENO_CASTE_KING,
key = /mob/living/carbon/xenomorph/king,
color="purple"
),
list(
name = XENO_CASTE_ALIEN,
key = /mob/living/carbon/xenomorph/alien,
color = "purple"
)
),

Expand Down
7 changes: 7 additions & 0 deletions code/modules/mob/living/carbon/xenomorph/Xenomorph.dm
Original file line number Diff line number Diff line change
Expand Up @@ -348,6 +348,8 @@
var/atom/movable/vis_obj/xeno_pack/backpack_icon_holder
/// If TRUE, the xeno cannot slash anything
var/cannot_slash = FALSE
// If specified, will always default to that name.
var/preset_name = null

/mob/living/carbon/xenomorph/Initialize(mapload, mob/living/carbon/xenomorph/old_xeno, hivenumber, ai_hard_off = FALSE)

Expand Down Expand Up @@ -577,6 +579,11 @@
//Im putting this in here, because this proc gets called when a player inhabits a SSD xeno and it needs to go somewhere (sorry)
hud_set_marks()

if(preset_name)
change_real_name(src, preset_name)
in_hive.hive_ui.update_xeno_info()
return

var/name_prefix = in_hive.prefix
var/name_client_prefix = ""
var/name_client_postfix = ""
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -328,13 +328,12 @@

if(xeno.can_not_harm(target_carbon))
return
var/do_after_time = 0.8 SECONDS
if(!locate(/datum/effects/crit) in target_carbon.effects_list) //called knocked out because for some reason .stat seems to have a delay .
do_after_time = 3 SECONDS

if(!xeno.Adjacent(target_carbon))
to_chat(xeno, SPAN_XENOHIGHDANGER("We can only headbite an unconscious, adjacent target!"))
return

if(!(HAS_TRAIT(target_carbon, TRAIT_KNOCKEDOUT) || target_carbon.stat == UNCONSCIOUS || (locate(/datum/effects/crit) in target_carbon.effects_list))) //called knocked out because for some reason .stat seems to have a delay .
to_chat(xeno, SPAN_XENOHIGHDANGER("We can only headbite an unconscious, adjacent target!"))
to_chat(xeno, SPAN_XENOHIGHDANGER("We can only headbite an adjacent target!"))
return

if(xeno.stat == UNCONSCIOUS)
Expand All @@ -355,7 +354,7 @@
xeno.visible_message(SPAN_DANGER("[xeno] grabs [target_carbon]’s head aggressively."), \
SPAN_XENOWARNING("We grab [target_carbon]’s head aggressively."))

if(!do_after(xeno, 0.8 SECONDS, INTERRUPT_NO_NEEDHAND, BUSY_ICON_HOSTILE, numticks = 2)) // would be 0.75 but that doesn't really work with numticks
if(!do_after(xeno, do_after_time, INTERRUPT_NO_NEEDHAND, BUSY_ICON_HOSTILE, numticks = 2)) // would be 0.75 but that doesn't really work with numticks
return

// To make sure that the headbite does nothing if the target is moved away.
Expand All @@ -376,7 +375,6 @@
target_carbon.death(create_cause_data("headbite execution", xeno), FALSE)
xeno.gain_health(150)
xeno.xeno_jitter(1 SECONDS)
xeno.flick_heal_overlay(3 SECONDS, "#00B800")
xeno.emote("roar")
log_attack("[key_name(xeno)] was executed by [key_name(target_carbon)] with a headbite!")
apply_cooldown()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,15 @@
var/weaken_power = 0.5
var/slowdown = 2

/datum/action/xeno_action/activable/fling/alien
xeno_cooldown = 2 SECONDS

// Configurables
fling_distance = 2
stun_power = 1
weaken_power = 1
slowdown = 5

// Warrior Lunge
/datum/action/xeno_action/activable/lunge
name = "Lunge"
Expand All @@ -29,6 +38,11 @@
var/click_miss_cooldown = 15
var/twitch_message_cooldown = 0 //apparently this is necessary for a tiny code that makes the lunge message on cooldown not be spammable, doesn't need to be big so 5 will do.

/datum/action/xeno_action/activable/lunge/alien
xeno_cooldown = 10
grab_range = 7
click_miss_cooldown = 0

/datum/action/xeno_action/activable/warrior_punch
name = "Punch"
action_icon_state = "punch"
Expand Down
77 changes: 77 additions & 0 deletions code/modules/mob/living/carbon/xenomorph/castes/TheAlien.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,77 @@
/datum/caste_datum/alien
caste_type = XENO_CASTE_ALIEN
tier = 2
melee_damage_lower = XENO_DAMAGE_TIER_3
melee_damage_upper = XENO_DAMAGE_TIER_4
melee_vehicle_damage = XENO_DAMAGE_TIER_3
max_health = XENO_HEALTH_ALIEN
plasma_gain = XENO_PLASMA_GAIN_TIER_8
plasma_max = XENO_PLASMA_TIER_10 * 10
xeno_explosion_resistance = XENO_EXPLOSIVE_ARMOR_TIER_1
armor_deflection = XENO_ARMOR_TIER_1
evasion = XENO_EVASION_MEDIUM
speed = XENO_SPEED_HELLHOUND //Faster than drones, slower than lurkers.

caste_desc = "Creature from outer space."
evolves_to = list(XENO_CASTE_QUEEN) //Add more here separated by commas
deevolves_to = list("Drone")

can_hold_facehuggers = 1
can_hold_eggs = CAN_HOLD_TWO_HANDS
max_build_dist = 1

tackle_min = 1
tackle_max = 2
tackle_chance = 90
tacklestrength_min = 1
tacklestrength_max = 2

minimap_icon = "warrior"


/mob/living/carbon/xenomorph/alien
caste_type = XENO_CASTE_ALIEN
name = XENO_CASTE_ALIEN
desc = "Chitinous monstrosity."
icon = 'icons/mob/xenos/thealien.dmi'
icon_size = 48
icon_state = "Normal Alien Walking"
plasma_types = list(PLASMA_PURPLE)
tier = 2
organ_value = 800
pixel_x = -12
old_x = -12
base_actions = list(
/datum/action/xeno_action/onclick/xeno_resting,
/datum/action/xeno_action/onclick/regurgitate,
/datum/action/xeno_action/activable/tail_stab,
/datum/action/xeno_action/activable/pounce/runner,
/datum/action/xeno_action/onclick/xenohide,
/datum/action/xeno_action/activable/corrosive_acid/strong,
/datum/action/xeno_action/activable/fling/alien,
/datum/action/xeno_action/activable/headbite,
/datum/action/xeno_action/activable/lunge/alien,
/datum/action/xeno_action/onclick/plant_weeds, //first macro
/datum/action/xeno_action/onclick/choose_resin, //second macro
/datum/action/xeno_action/activable/secrete_resin, //third macro
)
inherent_verbs = list(
/mob/living/carbon/xenomorph/proc/vent_crawl,
)

icon_xeno = 'icons/mob/xenos/thealien.dmi'
icon_xenonid = 'icons/mob/xenonids/drone.dmi'
weed_food_icon = 'icons/mob/xenos/weeds_48x48.dmi'
weed_food_states = list("Drone_1","Drone_2","Drone_3")
weed_food_states_flipped = list("Drone_1","Drone_2","Drone_3")
universal_understand = TRUE
acid_blood_damage = 50
acid_splash_cooldown = 20
pull_multiplier = 0.2 /// Pretty much no pull delay, for those quick drags.
claw_type = CLAW_TYPE_SHARP
preset_name = "The Alien"

/mob/living/carbon/xenomorph/alien/Initialize(ai_hard_off = TRUE)
. = ..()
preset_name = pick("Abomination", "Monstrosity", "Alien")
generate_name()
1 change: 1 addition & 0 deletions colonialmarines.dme
Original file line number Diff line number Diff line change
Expand Up @@ -2177,6 +2177,7 @@
#include "code\modules\mob\living\carbon\xenomorph\castes\Sentinel.dm"
#include "code\modules\mob\living\carbon\xenomorph\castes\Soldier.dm"
#include "code\modules\mob\living\carbon\xenomorph\castes\Spitter.dm"
#include "code\modules\mob\living\carbon\xenomorph\castes\TheAlien.dm"
#include "code\modules\mob\living\carbon\xenomorph\castes\Warrior.dm"
#include "code\modules\mob\living\carbon\xenomorph\items\iff_tag.dm"
#include "code\modules\mob\living\carbon\xenomorph\strains\behavior_delegate.dm"
Expand Down
Binary file added icons/mob/xenos/thealien.dmi
Binary file not shown.
Loading