From 6129eae3da3f599466e2c9522f733e3e08306e8f Mon Sep 17 00:00:00 2001
From: InsaneRed <47158596+InsaneRed@users.noreply.github.com>
Date: Fri, 12 Jan 2024 22:37:09 +0300
Subject: [PATCH] Uncluttering Queen UI P1 (#5350)
# About the pull request
Puts the banish/readmit/devolve into one category of "manage hive"
# Explain why it's good for the game
Queen ui is cluttered as hell and disheartening for new players this
aims to clear it up and put it into managable parts, this is the part
one of it.
# Testing Photographs and Procedure
![image](https://github.com/cmss13-devs/cmss13/assets/47158596/2de0fa68-36b8-43df-93ae-5ba9218913d5)
Put screenshots and videos here with an empty line between the
screenshots and the `` tags.
# Changelog
:cl:
qol: Moves "Banish, Re-admit and De-evolving" queen abilities into one
list, making the queen ui less clutterier
/:cl:
---------
Co-authored-by: InsaneRed
Co-authored-by: Birdtalon
---
.../mob/living/carbon/xenomorph/Abilities.dm | 15 -----
.../abilities/queen/queen_abilities.dm | 24 +------
.../xenomorph/abilities/queen/queen_powers.dm | 67 ++++++++++++++-----
.../living/carbon/xenomorph/castes/Queen.dm | 17 ++---
4 files changed, 60 insertions(+), 63 deletions(-)
diff --git a/code/modules/mob/living/carbon/xenomorph/Abilities.dm b/code/modules/mob/living/carbon/xenomorph/Abilities.dm
index dc44260187a7..5c8dcb9a2032 100644
--- a/code/modules/mob/living/carbon/xenomorph/Abilities.dm
+++ b/code/modules/mob/living/carbon/xenomorph/Abilities.dm
@@ -323,21 +323,6 @@
return
return ..()
-/datum/action/xeno_action/onclick/queen_award
- name = "Give Royal Jelly (500)"
- action_icon_state = "queen_award"
- plasma_cost = 500
-
-/datum/action/xeno_action/onclick/queen_award/use_ability(atom/target)
- var/mob/living/carbon/xenomorph/queen/xeno = owner
- if(!xeno.check_state())
- return
- if(!xeno.check_plasma(plasma_cost))
- return
- if(give_jelly_award(xeno.hive))
- xeno.use_plasma(plasma_cost)
- return ..()
-
/datum/action/xeno_action/onclick/queen_word
name = "Word of the Queen (50)"
action_icon_state = "queen_word"
diff --git a/code/modules/mob/living/carbon/xenomorph/abilities/queen/queen_abilities.dm b/code/modules/mob/living/carbon/xenomorph/abilities/queen/queen_abilities.dm
index 50fa9fd92b2c..d245449fa2cf 100644
--- a/code/modules/mob/living/carbon/xenomorph/abilities/queen/queen_abilities.dm
+++ b/code/modules/mob/living/carbon/xenomorph/abilities/queen/queen_abilities.dm
@@ -1,8 +1,3 @@
-/datum/action/xeno_action/onclick/deevolve
- name = "De-Evolve a Xenomorph (500)"
- action_icon_state = "xeno_deevolve"
- plasma_cost = 500
-
/datum/action/xeno_action/onclick/remove_eggsac
name = "Remove Eggsac"
action_icon_state = "grow_ovipositor"
@@ -45,23 +40,10 @@
var/node_plant_plasma_cost = 300
var/turf_build_cooldown = 7 SECONDS
-/datum/action/xeno_action/onclick/give_evo_points
- name = "Trade Larva for Evolution Points (100)"
- action_icon_state = "queen_give_evo_points"
- plasma_cost = 100
- xeno_cooldown = 60 SECONDS
- var/evo_points_per_larva = 250
- var/required_larva = 3
-
-/datum/action/xeno_action/onclick/banish
- name = "Banish a Xenomorph (500)"
- action_icon_state = "xeno_banish"
- plasma_cost = 500
-
-/datum/action/xeno_action/onclick/readmit
- name = "Readmit a Xenomorph (100)"
+/datum/action/xeno_action/onclick/manage_hive
+ name = "Manage The Hive"
action_icon_state = "xeno_readmit"
- plasma_cost = 100
+ plasma_cost = 0
/datum/action/xeno_action/activable/secrete_resin/remote/queen
name = "Projected Resin (100)"
diff --git a/code/modules/mob/living/carbon/xenomorph/abilities/queen/queen_powers.dm b/code/modules/mob/living/carbon/xenomorph/abilities/queen/queen_powers.dm
index 917a7b1c9af7..cbbc6ae21013 100644
--- a/code/modules/mob/living/carbon/xenomorph/abilities/queen/queen_powers.dm
+++ b/code/modules/mob/living/carbon/xenomorph/abilities/queen/queen_powers.dm
@@ -1,6 +1,7 @@
// devolve a xeno - lots of old, vaguely shitty code here
-/datum/action/xeno_action/onclick/deevolve/use_ability(atom/Atom)
+/datum/action/xeno_action/onclick/manage_hive/proc/de_evolve_other()
var/mob/living/carbon/xenomorph/queen/user_xeno = owner
+ var/plasma_cost_devolve = 500
if(!user_xeno.check_state())
return
if(!user_xeno.observed_xeno)
@@ -8,7 +9,7 @@
return
var/mob/living/carbon/xenomorph/target_xeno = user_xeno.observed_xeno
- if(!user_xeno.check_plasma(plasma_cost))
+ if(!user_xeno.check_plasma(plasma_cost_devolve))
return
if(target_xeno.hivenumber != user_xeno.hivenumber)
@@ -130,7 +131,7 @@
SSround_recording.recorder.stop_tracking(target_xeno)
SSround_recording.recorder.track_player(new_xeno)
qdel(target_xeno)
- return ..()
+ return
/datum/action/xeno_action/onclick/remove_eggsac/use_ability(atom/A)
var/mob/living/carbon/xenomorph/queen/X = owner
@@ -292,12 +293,15 @@
to_chat(X, SPAN_XENONOTICE("You channel your plasma to heal your sisters' wounds around this area."))
return ..()
-/datum/action/xeno_action/onclick/give_evo_points/use_ability(atom/Atom)
+/datum/action/xeno_action/onclick/manage_hive/proc/give_evo_points()
var/mob/living/carbon/xenomorph/queen/user_xeno = owner
+ var/plasma_cost_givepoints = 100
+
+
if(!user_xeno.check_state())
return
- if(!user_xeno.check_plasma(plasma_cost))
+ if(!user_xeno.check_plasma(plasma_cost_givepoints))
return
if(world.time < SSticker.mode.round_time_lobby + SHUTTLE_TIME_LOCK)
@@ -308,7 +312,8 @@
if(!choice)
return
-
+ var/evo_points_per_larva = 250
+ var/required_larva = 3
var/mob/living/carbon/xenomorph/target_xeno
for(var/mob/living/carbon/xenomorph/xeno in user_xeno.hive.totalXenos)
@@ -351,14 +356,45 @@
target_xeno.evolution_stored += evo_points_per_larva
user_xeno.hive.stored_larva--
- return ..()
+ return
+
+
+
+/datum/action/xeno_action/onclick/manage_hive/proc/give_jelly_reward()
+ var/mob/living/carbon/xenomorph/queen/xeno = owner
+ var/plasma_cost_jelly = 500
+ if(!xeno.check_state())
+ return
+ if(!xeno.check_plasma(plasma_cost_jelly))
+ return
+ if(give_jelly_award(xeno.hive))
+ xeno.use_plasma(plasma_cost_jelly)
+ return
+/datum/action/xeno_action/onclick/manage_hive/use_ability(atom/Atom)
+ var/mob/living/carbon/xenomorph/queen/queenbanish = owner
+ plasma_cost = 0
-/datum/action/xeno_action/onclick/banish/use_ability(atom/Atom)
+ var/choice = tgui_input_list(queenbanish, "Manage The Hive", "Hive Management", list("Banish (500)", "Re-Admit (100)", "De-evolve (500)", "Reward Jelly (500)", "Exchange larva for evolution (100)",), theme="hive_status")
+ switch(choice)
+ if("Banish (500)")
+ banish()
+ if("Re-Admit (100)")
+ readmit()
+ if("De-evolve (500)")
+ de_evolve_other()
+ if("Reward Jelly (500)")
+ give_jelly_reward(queenbanish.hive)
+ if("Exchange larva for evolution (100)")
+ give_evo_points()
+
+
+/datum/action/xeno_action/onclick/manage_hive/proc/banish()
var/mob/living/carbon/xenomorph/queen/user_xeno = owner
+ var/plasma_cost_banish = 500
if(!user_xeno.check_state())
return
- if(!user_xeno.check_plasma(plasma_cost))
+ if(!user_xeno.check_plasma(plasma_cost_banish))
return
var/choice = tgui_input_list(user_xeno, "Choose a xenomorph to banish:", "Banish", user_xeno.hive.totalXenos, theme="hive_status")
@@ -399,7 +435,7 @@
to_chat(user_xeno, SPAN_XENOWARNING("You must provide a reason for banishing [target_xeno]."))
return
- if(!user_xeno.check_state() || !check_and_use_plasma_owner(plasma_cost) || target_xeno.health < 0)
+ if(!user_xeno.check_state() || !check_and_use_plasma_owner(plasma_cost_banish) || target_xeno.health < 0)
return
// Let everyone know they were banished
@@ -413,20 +449,21 @@
addtimer(CALLBACK(src, PROC_REF(remove_banish), user_xeno.hive, target_xeno.name), 30 MINUTES)
message_admins("[key_name_admin(user_xeno)] has banished [key_name_admin(target_xeno)]. Reason: [reason]")
- return ..()
+ return
-/datum/action/xeno_action/onclick/banish/proc/remove_banish(datum/hive_status/hive, name)
+/datum/action/xeno_action/proc/remove_banish(datum/hive_status/hive, name)
hive.banished_ckeys.Remove(name)
// Readmission = un-banish
-/datum/action/xeno_action/onclick/readmit/use_ability(atom/Atom)
+/datum/action/xeno_action/onclick/manage_hive/proc/readmit()
var/mob/living/carbon/xenomorph/queen/user_xeno = owner
+ var/plasma_cost_readmit = 100
if(!user_xeno.check_state())
return
- if(!user_xeno.check_plasma(plasma_cost))
+ if(!user_xeno.check_plasma(plasma_cost_readmit))
return
var/choice = tgui_input_list(user_xeno, "Choose a xenomorph to readmit:", "Re-admit", user_xeno.hive.banished_ckeys, theme="hive_status")
@@ -470,7 +507,7 @@
target_xeno.lock_evolve = FALSE
user_xeno.hive.banished_ckeys.Remove(banished_name)
- return ..()
+ return
/datum/action/xeno_action/onclick/eye
name = "Enter Eye Form"
diff --git a/code/modules/mob/living/carbon/xenomorph/castes/Queen.dm b/code/modules/mob/living/carbon/xenomorph/castes/Queen.dm
index 6d082b327b48..f847c1a4ac8a 100644
--- a/code/modules/mob/living/carbon/xenomorph/castes/Queen.dm
+++ b/code/modules/mob/living/carbon/xenomorph/castes/Queen.dm
@@ -305,10 +305,8 @@
/datum/action/xeno_action/onclick/choose_resin/queen_macro, //fourth macro
/datum/action/xeno_action/activable/secrete_resin/queen_macro, //fifth macro
/datum/action/xeno_action/onclick/grow_ovipositor,
- /datum/action/xeno_action/onclick/banish,
- /datum/action/xeno_action/onclick/readmit,
- /datum/action/xeno_action/onclick/queen_award,
/datum/action/xeno_action/activable/info_marker/queen,
+ /datum/action/xeno_action/onclick/manage_hive,
)
inherent_verbs = list(
@@ -338,13 +336,12 @@
/datum/action/xeno_action/onclick/choose_resin/queen_macro, //fourth macro
/datum/action/xeno_action/activable/secrete_resin/queen_macro, //fifth macro
/datum/action/xeno_action/onclick/grow_ovipositor,
- /datum/action/xeno_action/onclick/banish,
- /datum/action/xeno_action/onclick/readmit,
- /datum/action/xeno_action/onclick/queen_award,
+ /datum/action/xeno_action/onclick/manage_hive,
/datum/action/xeno_action/activable/info_marker/queen,
/datum/action/xeno_action/onclick/screech, //custom macro, Screech
/datum/action/xeno_action/activable/xeno_spit/queen_macro, //third macro
- /datum/action/xeno_action/onclick/shift_spits, //second macro
+ /datum/action/xeno_action/onclick/shift_spits,
+ //second macro
)
// Abilities they get when they've successfully aged.
@@ -839,19 +836,15 @@
/datum/action/xeno_action/onclick/psychic_whisper,
/datum/action/xeno_action/onclick/psychic_radiance,
/datum/action/xeno_action/onclick/choose_resin/queen_macro, //fourth macro
- /datum/action/xeno_action/onclick/banish,
- /datum/action/xeno_action/onclick/readmit,
- /datum/action/xeno_action/onclick/queen_award,
+ /datum/action/xeno_action/onclick/manage_hive,
/datum/action/xeno_action/activable/info_marker/queen,
// Screech is typically new for this list, but its possible they never ovi and it then is forced here:
/datum/action/xeno_action/onclick/screech, //custom macro, Screech
// These are new and their arrangement matters:
/datum/action/xeno_action/onclick/remove_eggsac,
- /datum/action/xeno_action/onclick/give_evo_points,
/datum/action/xeno_action/onclick/set_xeno_lead,
/datum/action/xeno_action/activable/queen_heal, //first macro
/datum/action/xeno_action/activable/queen_give_plasma, //second macro
- /datum/action/xeno_action/onclick/deevolve,
/datum/action/xeno_action/onclick/queen_order,
/datum/action/xeno_action/activable/expand_weeds, //third macro
/datum/action/xeno_action/activable/secrete_resin/remote/queen, //fifth macro