From 641e481d47cd4e48d848bf77fe78483d715acfd8 Mon Sep 17 00:00:00 2001 From: tralezab <40974010+tralezab@users.noreply.github.com> Date: Fri, 10 Sep 2021 10:24:55 -0700 Subject: [PATCH] TGUI Apprentice Contracts (#61094) TGUI-ifies apprentice contracts. Yummy! --- .../antagonists/_common/antag_spawner.dm | 89 +++++++------- code/modules/asset_cache/asset_list_items.dm | 8 ++ icons/UI_Icons/contracts/bluespace.png | Bin 0 -> 4009 bytes icons/UI_Icons/contracts/destruction.png | Bin 0 -> 4560 bytes icons/UI_Icons/contracts/healing.png | Bin 0 -> 4336 bytes icons/UI_Icons/contracts/robeless.png | Bin 0 -> 4284 bytes icons/ui_icons/contracts/bluespace.png | Bin 0 -> 4009 bytes icons/ui_icons/contracts/destruction.png | Bin 0 -> 4560 bytes icons/ui_icons/contracts/healing.png | Bin 0 -> 4336 bytes icons/ui_icons/contracts/robeless.png | Bin 0 -> 4284 bytes .../tgui/interfaces/ApprenticeContract.tsx | 112 ++++++++++++++++++ 11 files changed, 163 insertions(+), 46 deletions(-) create mode 100644 icons/UI_Icons/contracts/bluespace.png create mode 100644 icons/UI_Icons/contracts/destruction.png create mode 100644 icons/UI_Icons/contracts/healing.png create mode 100644 icons/UI_Icons/contracts/robeless.png create mode 100644 icons/ui_icons/contracts/bluespace.png create mode 100644 icons/ui_icons/contracts/destruction.png create mode 100644 icons/ui_icons/contracts/healing.png create mode 100644 icons/ui_icons/contracts/robeless.png create mode 100644 tgui/packages/tgui/interfaces/ApprenticeContract.tsx diff --git a/code/modules/antagonists/_common/antag_spawner.dm b/code/modules/antagonists/_common/antag_spawner.dm index 4b30be12f78..0f81b9ef305 100644 --- a/code/modules/antagonists/_common/antag_spawner.dm +++ b/code/modules/antagonists/_common/antag_spawner.dm @@ -18,58 +18,55 @@ desc = "A magic contract previously signed by an apprentice. In exchange for instruction in the magical arts, they are bound to answer your call for aid." icon = 'icons/obj/wizard.dmi' icon_state ="scroll2" + var/polling = FALSE -/obj/item/antag_spawner/contract/attack_self(mob/user) - user.set_machine(src) - var/dat - if(used) - dat = "You have already summoned your apprentice.
" - else - dat = "Contract of Apprenticeship:
" - dat += "Using this contract, you may summon an apprentice to aid you on your mission.
" - dat += "If you are unable to establish contact with your apprentice, you can feed the contract back to the spellbook to refund your points.
" - dat += "Which school of magic is your apprentice studying?:
" - dat += "Destruction
" - dat += "Your apprentice is skilled in offensive magic. They know Magic Missile and Fireball.
" - dat += "Bluespace Manipulation
" - dat += "Your apprentice is able to defy physics, melting through solid objects and travelling great distances in the blink of an eye. They know Teleport and Ethereal Jaunt.
" - dat += "Healing
" - dat += "Your apprentice is training to cast spells that will aid your survival. They know Forcewall and Charge and come with a Staff of Healing.
" - dat += "Robeless
" - dat += "Your apprentice is training to cast spells without their robes. They know Knock and Mindswap.
" - user << browse(dat, "window=radio") - onclose(user, "radio") - return - -/obj/item/antag_spawner/contract/Topic(href, href_list) +/obj/item/antag_spawner/contract/can_interact(mob/user) . = ..() + if(!.) + return FALSE + if(polling) + balloon_alert(user, "already calling an apprentice!") + return FALSE - if(usr.stat != CONSCIOUS || HAS_TRAIT(usr, TRAIT_HANDS_BLOCKED)) +/obj/item/antag_spawner/contract/ui_interact(mob/user, datum/tgui/ui) + ui = SStgui.try_update_ui(user, src, ui) + if(!ui) + ui = new(user, src, "ApprenticeContract", name) + ui.open() + +/obj/item/antag_spawner/contract/ui_state(mob/user) + if(used) + return GLOB.never_state + return GLOB.default_state + +/obj/item/antag_spawner/contract/ui_assets(mob/user) + . = ..() + return list( + get_asset_datum(/datum/asset/simple/contracts), + ) + +/obj/item/antag_spawner/contract/ui_act(action, list/params) + . = ..() + if(used || polling || !ishuman(usr)) return - if(!ishuman(usr)) - return TRUE - var/mob/living/carbon/human/H = usr + INVOKE_ASYNC(src, .proc/poll_for_student, usr, params["school"]) + SStgui.close_uis(src) - if(loc == H || (in_range(src, H) && isturf(loc))) - H.set_machine(src) - if(href_list["school"]) - if(used) - to_chat(H, span_warning("You already used this contract!")) - return - var/list/candidates = poll_candidates_for_mob("Do you want to play as a wizard's [href_list["school"]] apprentice?", ROLE_WIZARD, ROLE_WIZARD, 15 SECONDS, src) - if(LAZYLEN(candidates)) - if(QDELETED(src)) - return - if(used) - to_chat(H, span_warning("You already used this contract!")) - return - used = TRUE - var/mob/dead/observer/C = pick(candidates) - spawn_antag(C.client, get_turf(src), href_list["school"],H.mind) - else - to_chat(H, span_warning("Unable to reach your apprentice! You can either attack the spellbook with the contract to refund your points, or wait and try again later.")) +/obj/item/antag_spawner/contract/proc/poll_for_student(mob/living/carbon/human/teacher, apprentice_school) + balloon_alert(teacher, "contacting apprentice...") + polling = TRUE + var/list/candidates = poll_candidates_for_mob("Do you want to play as a wizard's [apprentice_school] apprentice?", ROLE_WIZARD, ROLE_WIZARD, 15 SECONDS, src) + polling = FALSE + if(!LAZYLEN(candidates)) + to_chat(teacher, span_warning("Unable to reach your apprentice! You can either attack the spellbook with the contract to refund your points, or wait and try again later.")) + return + if(QDELETED(src) || used) + return + used = TRUE + var/mob/dead/observer/student = pick(candidates) + spawn_antag(student.client, get_turf(src), apprentice_school, teacher.mind) -/obj/item/antag_spawner/contract/spawn_antag(client/C, turf/T, kind ,datum/mind/user) +/obj/item/antag_spawner/contract/spawn_antag(client/C, turf/T, kind, datum/mind/user) new /obj/effect/particle_effect/smoke(T) var/mob/living/carbon/human/M = new/mob/living/carbon/human(T) C.prefs.safe_transfer_prefs_to(M, is_antag = TRUE) diff --git a/code/modules/asset_cache/asset_list_items.dm b/code/modules/asset_cache/asset_list_items.dm index 001068f3a14..c72eabe3b16 100644 --- a/code/modules/asset_cache/asset_list_items.dm +++ b/code/modules/asset_cache/asset_list_items.dm @@ -500,6 +500,14 @@ "safe_dial.png" = 'icons/ui_icons/safe/safe_dial.png' ) +/datum/asset/simple/contracts + assets = list( + "bluespace.png" = 'icons/ui_icons/contracts/bluespace.png', + "destruction.png" = 'icons/ui_icons/contracts/destruction.png', + "healing.png" = 'icons/ui_icons/contracts/healing.png', + "robeless.png" = 'icons/ui_icons/contracts/robeless.png', + ) + /datum/asset/spritesheet/fish name = "fish" diff --git a/icons/UI_Icons/contracts/bluespace.png b/icons/UI_Icons/contracts/bluespace.png new file mode 100644 index 0000000000000000000000000000000000000000..f62bde4c9529aa2280b2d6ce591003e39ddcd7ee GIT binary patch literal 4009 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 P00000NkvXXu0mjfAXLSg literal 0 HcmV?d00001 diff --git a/icons/UI_Icons/contracts/destruction.png b/icons/UI_Icons/contracts/destruction.png new file mode 100644 index 0000000000000000000000000000000000000000..ed101d8f25a9b9f924f1413d94123b8f0e656a6c GIT binary patch literal 4560 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 P00000NkvXXu0mjfAXLSg literal 0 HcmV?d00001 diff --git a/icons/ui_icons/contracts/destruction.png b/icons/ui_icons/contracts/destruction.png new file mode 100644 index 0000000000000000000000000000000000000000..ed101d8f25a9b9f924f1413d94123b8f0e656a6c GIT binary patch literal 4560 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 { + return ( + + + + +
+ If you cannot reach any of your apprentices today, + you can feed the contract back into your spellbook to refund it. +
+
+ + + + + + +
+
+
+ ); +}; + +const ApprenticeSelection = (props, context) => { + const { act } = useBackend(context); + const { + iconName, + fluffName, + schoolTitle, + assetName, + blurb, + } = props; + return ( +
+ + + + + + + + + + + + + + {fluffName} + +
+ {blurb} +
+
+
+
+ ); +};