Skip to content

Commit

Permalink
2
Browse files Browse the repository at this point in the history
  • Loading branch information
AndroBetel committed Jan 10, 2025
1 parent fb642eb commit 407fd79
Show file tree
Hide file tree
Showing 9 changed files with 115 additions and 10 deletions.
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 @@ -703,9 +703,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_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_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 @@ -746,6 +746,8 @@ I hope it's easier to tell what the heck this proc is even doing, unlike previou
M = /mob/living/carbon/xenomorph/hellhound
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 @@ -346,6 +346,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 @@ -575,6 +577,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

if(!(HAS_TRAIT(target_carbon, TRAIT_KNOCKEDOUT) || target_carbon.stat == UNCONSCIOUS)) //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!"))
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!"))
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 @@ -2119,6 +2119,7 @@
#include "code\modules\mob\living\carbon\xenomorph\castes\Runner.dm"
#include "code\modules\mob\living\carbon\xenomorph\castes\Sentinel.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.

0 comments on commit 407fd79

Please sign in to comment.