Skip to content

Commit

Permalink
TGS Test Merge (#5075)
Browse files Browse the repository at this point in the history
  • Loading branch information
cm13-github committed May 5, 2024
2 parents 841ec02 + 9b573b8 commit 2d6d883
Show file tree
Hide file tree
Showing 23 changed files with 299 additions and 11 deletions.
2 changes: 2 additions & 0 deletions code/__DEFINES/job.dm
Original file line number Diff line number Diff line change
Expand Up @@ -359,6 +359,7 @@ GLOBAL_LIST_INIT(job_command_roles, JOB_COMMAND_ROLES_LIST)
#define JOB_PLAYTIME_TIER_2 (25 HOURS)
#define JOB_PLAYTIME_TIER_3 (70 HOURS)
#define JOB_PLAYTIME_TIER_4 (175 HOURS)
#define JOB_PLAYTIME_TIER_5 (1000 HOURS)

#define XENO_NO_AGE -1
#define XENO_YOUNG 0
Expand All @@ -367,6 +368,7 @@ GLOBAL_LIST_INIT(job_command_roles, JOB_COMMAND_ROLES_LIST)
#define XENO_ELDER 3
#define XENO_ANCIENT 4
#define XENO_PRIME 5
#define XENO_IMPERATOR 6

/// For monthly time tracking
#define JOB_OBSERVER "Observer"
Expand Down
3 changes: 2 additions & 1 deletion code/__DEFINES/xeno.dm
Original file line number Diff line number Diff line change
Expand Up @@ -697,7 +697,8 @@
#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_PALATINE "Palatine"
#define XENO_SPECIAL_CASTES list(XENO_CASTE_QUEEN, XENO_CASTE_PREDALIEN, XENO_CASTE_HELLHOUND, XENO_CASTE_PALATINE)

#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)

Expand Down
4 changes: 3 additions & 1 deletion code/datums/entities/player_times.dm
Original file line number Diff line number Diff line change
Expand Up @@ -54,8 +54,10 @@ BSQL_PROTECT_DATUM(/datum/entity/player_time)
icon_display = "tier2_big"
if(JOB_PLAYTIME_TIER_3 to JOB_PLAYTIME_TIER_4)
icon_display = "tier3_big"
if(JOB_PLAYTIME_TIER_4 to INFINITY)
if(JOB_PLAYTIME_TIER_4 to JOB_PLAYTIME_TIER_5)
icon_display = "tier4_big"
if(JOB_PLAYTIME_TIER_5 to INFINITY)
icon_display = "tier5_big"

var/playtime_percentage = min((total_minutes MINUTES_TO_DECISECOND) / JOB_PLAYTIME_TIER_4, 1)
return list(
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 @@ -760,6 +760,8 @@ I hope it's easier to tell what the heck this proc is even doing, unlike previou
M = /mob/living/carbon/xenomorph/predalien
if(XENO_CASTE_HELLHOUND)
M = /mob/living/carbon/xenomorph/hellhound
if(XENO_CASTE_PALATINE)
M = /mob/living/carbon/xenomorph/palatine
return M


Expand Down
11 changes: 8 additions & 3 deletions code/modules/admin/player_panel/actions/transform.dm
Original file line number Diff line number Diff line change
Expand Up @@ -137,9 +137,14 @@ GLOBAL_LIST_INIT(pp_transformables, list(
color = "purple"
),
list(
name = XENO_CASTE_PREDALIEN,
key = /mob/living/carbon/xenomorph/predalien,
color = "purple"
name = XENO_CASTE_PALATINE,
key = /mob/living/carbon/xenomorph/palatine,
color = "purple"
),
list(
name = XENO_CASTE_PREDALIEN,
key = /mob/living/carbon/xenomorph/predalien,
color = "purple"
)
),

Expand Down
6 changes: 6 additions & 0 deletions code/modules/asset_cache/asset_list_items.dm
Original file line number Diff line number Diff line change
Expand Up @@ -191,11 +191,13 @@
var/tier2_state = "hudxenoupgrade3"
var/tier3_state = "hudxenoupgrade4"
var/tier4_state = "hudxenoupgrade5"
var/tier5_state = "hudxenoupgrade6"

var/icon/tier1_icon = icon(icon_file, tier1_state, SOUTH)
var/icon/tier2_icon = icon(icon_file, tier2_state, SOUTH)
var/icon/tier3_icon = icon(icon_file, tier3_state, SOUTH)
var/icon/tier4_icon = icon(icon_file, tier4_state, SOUTH)
var/icon/tier5_icon = icon(icon_file, tier5_state, SOUTH)


tier1_icon.Crop(6,26,18,14)
Expand All @@ -213,6 +215,10 @@
tier4_icon.Crop(6,30,18,18)
tier4_icon.Scale(32, 32)
Insert("tier4_big", tier4_icon)

tier5_icon.Crop(6,30,18,18)
tier5_icon.Scale(32, 32)
Insert("tier5_big", tier5_icon)
return ..()

/datum/asset/spritesheet/choose_mark
Expand Down
6 changes: 5 additions & 1 deletion code/modules/mob/living/carbon/xenomorph/XenoUpgrade.dm
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,10 @@
age = XENO_ELDER
if(JOB_PLAYTIME_TIER_3 to JOB_PLAYTIME_TIER_4)
age = XENO_ANCIENT
if(JOB_PLAYTIME_TIER_4 to INFINITY)
if(JOB_PLAYTIME_TIER_4 to JOB_PLAYTIME_TIER_5)
age = XENO_PRIME
if(JOB_PLAYTIME_TIER_5 to INFINITY)
age = XENO_IMPERATOR

if(hours_as_xeno < JOB_PLAYTIME_TIER_1)
age = XENO_YOUNG
Expand All @@ -36,6 +38,8 @@
age_prefix = "Ancient "
if(XENO_PRIME)
age_prefix = "Prime "
if(XENO_IMPERATOR)
age_prefix = "Imperator "

hud_update() //update the age level insignia on our xeno hud.

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -233,7 +233,7 @@
/**
* Any additional effects to apply to the target
* is called if and only if we actually hit a human target
*/
*/
/datum/action/xeno_action/activable/pounce/proc/additional_effects(mob/living/L)
return

Expand Down Expand Up @@ -449,6 +449,8 @@

/datum/action/xeno_action/activable/xeno_spit/queen_macro //so it doesn't screw other macros up
ability_primacy = XENO_PRIMARY_ACTION_3
/datum/action/xeno_action/activable/xeno_spit/palatine_macro
ability_primacy = XENO_NOT_PRIMARY_ACTION

/datum/action/xeno_action/activable/bombard
name = "Bombard"
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
/datum/action/xeno_action/onclick/palatine_roar
name = "Roar"
icon_file = 'icons/mob/hud/actions_palatine.dmi'
action_icon_state = "screech_empower"
ability_name = "roar"
action_type = XENO_ACTION_CLICK
ability_primacy = XENO_PRIMARY_ACTION_1
xeno_cooldown = 60 SECONDS
plasma_cost = 50

var/roar_type = "piercing"
var/screech_sound_effect = "sound/voice/alien_distantroar_3.ogg"
var/bonus_damage_scale = 2.5
var/bonus_speed_scale = 0.05

/datum/action/xeno_action/onclick/palatine_change_roar
name = "Change Roar"
icon_file = 'icons/mob/hud/actions_palatine.dmi'
action_icon_state = "screech_shift"
ability_name = "change roar"
action_type = XENO_ACTION_CLICK
ability_primacy = XENO_NOT_PRIMARY_ACTION
plasma_cost = 0

/datum/action/xeno_action/onclick/palatine_change_roar/use_ability(atom/A)
var/mob/living/carbon/xenomorph/X = owner
var/action_icon_result

if(!X.check_state(1))
return

var/datum/action/xeno_action/onclick/palatine_roar/PR = get_xeno_action_by_type(X, /datum/action/xeno_action/onclick/palatine_roar)
if (!istype(PR))
return

if (PR.roar_type == "piercing")
action_icon_result = "screech_disrupt"
PR.roar_type = "thundering"
PR.screech_sound_effect = "sound/voice/4_xeno_roars.ogg"
to_chat(X, SPAN_XENOWARNING("You will now disrupt dangers to the hive!"))

else
action_icon_result = "screech_empower"
PR.roar_type = "piercing"
PR.screech_sound_effect = "sound/voice/alien_distantroar_3.ogg"
to_chat(X, SPAN_XENOWARNING("You will now empower your allies with rage!"))

PR.button.overlays.Cut()
PR.button.overlays += image('icons/mob/hud/actions_palatine.dmi', button, action_icon_result)
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
/datum/action/xeno_action/onclick/palatine_roar/use_ability(atom/target)
var/mob/living/carbon/xenomorph/xeno = owner

if (!action_cooldown_check())
return

if (!xeno.check_state())
return

if(!check_and_use_plasma_owner())
return

if(roar_type == "piercing")
var/datum/behavior_delegate/palatine_base/behavior = xeno.behavior_delegate
if(!istype(behavior))
to_chat(xeno, SPAN_ALERTWARNING("Something went wrong with your behavior delegate! Inform forest2001 or a coder!"))
return FALSE
if(behavior.thirst < 3)
to_chat(xeno, SPAN_WARNING("You have not slain enough in the name of the Queen Mother to unleash this power!"))
return FALSE

xeno.visible_message(SPAN_XENOHIGHDANGER("[xeno] emits a piercing screech!"))
for(var/mob/living/carbon/carbon in view(7, xeno))
if(isxeno(carbon) && xeno.can_not_harm(carbon))
new /datum/effects/xeno_buff(carbon, xeno, ttl = (0.5 SECONDS * behavior.thirst + 3 SECONDS), bonus_damage = bonus_damage_scale * behavior.thirst, bonus_speed = (bonus_speed_scale * behavior.thirst))

for(var/mob/M in view(xeno))
if(M && M.client)
shake_camera(M, 10, 1)
behavior.thirst = max(0, behavior.thirst - 3)
to_chat(xeno, SPAN_XENOMINORWARNING("Your bloodlust cools as you unleash your rage."))
else
xeno.visible_message(SPAN_XENOHIGHDANGER("[xeno] emits a thundering roar!"))
for(var/mob/living/carbon/carbon in view(7, xeno))
if(ishuman(carbon))
var/mob/living/carbon/human/human = carbon
human.disable_special_items()

var/obj/item/clothing/gloves/yautja/hunter/YG = locate(/obj/item/clothing/gloves/yautja/hunter) in human
if(isyautja(human) && YG)
if(HAS_TRAIT(human, TRAIT_CLOAKED))
YG.decloak(human, TRUE, DECLOAK_PREDALIEN)

xeno.create_shriekwave(9)
playsound(xeno.loc, screech_sound_effect, 75, 0, status = 0)
apply_cooldown()

. = ..()
return
Original file line number Diff line number Diff line change
Expand Up @@ -131,6 +131,9 @@
var/max_distance = 7
var/windup = 8 DECISECONDS

/datum/action/xeno_action/activable/prae_abduct/palatine_macro
ability_primacy = XENO_NOT_PRIMARY_ACTION

/datum/action/xeno_action/activable/oppressor_punch
name = "Dislocate"
action_icon_state = "punch"
Expand Down Expand Up @@ -307,6 +310,8 @@

var/curr_effect_type = WARDEN_HEAL_HP

/datum/action/xeno_action/activable/warden_heal/palatine_macro
ability_primacy = XENO_PRIMARY_ACTION_4

/datum/action/xeno_action/onclick/prae_switch_heal_type
name = "Toggle Aid Type"
Expand Down Expand Up @@ -360,3 +365,6 @@
var/max_distance = 7
var/windup = 6
var/retrieve_cost = 100

/datum/action/xeno_action/activable/prae_retrieve/palatine_macro
ability_primacy = XENO_PRIMARY_ACTION_3
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,8 @@

/datum/action/xeno_action/onclick/predalien_roar
name = "Roar"
action_icon_state = "screech"
icon_file = 'icons/mob/hud/actions_palatine.dmi'
action_icon_state = "screech_disrupt"
ability_name = "roar"
action_type = XENO_ACTION_CLICK
ability_primacy = XENO_PRIMARY_ACTION_2
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
/datum/action/xeno_action/activable/flight
name = "Flight"
action_icon_state = "flight"
plasma_cost = 200
xeno_cooldown = 1 MINUTES
var/max_distance = 5
var/speed = 5

/datum/action/xeno_action/activable/flight/can_use_action()
. = ..()
if(!.)
return FALSE

/datum/action/xeno_action/activable/flight/use_ability(atom/target)
if(!..())
return FALSE
var/mob/living/carbon/xenomorph/xeno = owner
if(isstorage(target.loc) || xeno.contains(target) || istype(target, /atom/movable/screen)) return FALSE

if(!xeno.check_plasma(plasma_cost))
to_chat(owner, SPAN_XENOWARNING("You have insufficient plasma to do this."))
return FALSE
if(target.z != xeno.z)
to_chat(owner, SPAN_XENOWARNING("Not even you can fly that far!"))
return FALSE
apply_cooldown()

use_plasma_owner()
playsound(owner, 'sound/effects/wingflap.ogg')
owner.visible_message(SPAN_DANGER("\The [src] spreads their wings and leaps into the air!"), \
SPAN_DANGER("You spread your wings and leap into the air!"), null, 5, CHAT_TYPE_XENO_COMBAT)

var/turf/t_turf = get_turf(target)
var/obj/effect/warning/hover/warning = new(t_turf)
calculate_warning_turf(warning, owner, t_turf)

//has sleep

RegisterSignal(owner, COMSIG_CLIENT_MOB_MOVE, PROC_REF(disable_flying_movement))
owner.throw_atom(t_turf, max_distance, speed, launch_type = HIGH_LAUNCH)
UnregisterSignal(owner, COMSIG_CLIENT_MOB_MOVE)
qdel(warning)

/datum/action/xeno_action/activable/flight/proc/disable_flying_movement(mob/living/carbon/human/user)
SIGNAL_HANDLER
return COMPONENT_OVERRIDE_MOVE

/datum/action/xeno_action/activable/flight/proc/calculate_warning_turf(obj/effect/warning/warning, mob/living/user, turf/t_turf)
var/t_dist = get_dist(user, t_turf)
if(!(t_dist > max_distance))
return
var/list/turf/path = get_line(user, t_turf, FALSE)
warning.forceMove(path[max_distance])
Loading

0 comments on commit 2d6d883

Please sign in to comment.