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
zcmV;>5ijnEP)kH<&gW=bP2V6XJhd7Yw;XvAL@^*Ag2>T=w`bh
zgv$N_N%=WsNYH3IAjem+I(!BO9K(_N$V5PXXF!(6-%
z_7PhcLAgsnkb;vS_2>_+ibQC8I1!WxtqZQw_v#KQ?g~-2M5hlT$5b*YhQhrtj(kmp
zsr)5X6~b<~mUsEP;$_v=2*v1
zFqA&0!dUt&%q4pmzJ;wIxR!VI+gN&->rv27$&ZDj9qtDnqs=Xlv}
z6Rb#irGuRF*JE*21FEAkS*VlQDs~C)5ms%UR|@
zgAVVQ^?1uJ;f;6=<8Xf+W(*9%q^uCM-xlnq98$x#zuU$L9JCdhw5{0J+`{=eb6Pl`
zKVHdy^z;^wwwJ3(+cOoP#8|Q8b}K4!Y|dRN5ah>PrD8lu3DjtiCTWo;D;VWxKy{b}
zLjp~ZU6k^uL5HvW3^>}?2OBbd@nWnV$D?&Z`#RVv1l6s<-By+(sfNsFZh8B_E!Y_bHS@Eo0LAyUr!8?i1S2zTd(
zqP>qFzV_4Oe1H+BLkxJkuY~;kd=wQH;PZnU7=o0~4{hZ9*UxQbrF?aGGv~j2W|N|(
zqb+Ki%G?YP@OnP*Q3-HvIPmFkTsm2Vi_hocueC8aALWPEzE+eBCO;+wv2hA99g6XM
z&MuZ#=atE>43{O0)5#d6laWMc7mb$P>)>D$?y>t}M_(&1txd6k_(LBPK8}#_WsHn(
zGWGbZ%;%bta_RjNT=;S{F8tdVT>7FM_@EegWeEOvemwpo!Vi0+12BAO7_tWTLVQ9H
zA|w3}6l8K5-p-%X3prg^mNgm_$rARM^tfLy!=TY3xTg=|5`r)ws~5@#hhg{aR-Cu$
zaiWieH`6sJEG$AxOAF@DpO1?>`{L3&d3d|Nmhr`*jUb%c)r509oAA+-%kift7UScs
zD>;9D_c|^=e_*}Z=Eol@apBw1xcJpb{P_JO{O$WmxcK$RE=UReWl13xqqSO$*2$>S
z%b2Z~vB+w~>TnC1qXV!t#){wf@xiG`8E?gEaV%AX^70BCIdTN6R;>bFNCjRs&IT?&zOtju#jh&xx4+(lAOB}E
zE`Bo#7rz~iAAgvPzkNL(7mpQsCnYfmkx{P8M>wEeuMFo>>P{u4!~T-QOXw++o(cIh
zM28bm5_To|V#S^QINHyIkHTff>11ET#wD;~+S}Xl!}1VZ+#jdTJ}E({#x?!8^>MEA
z;v>_56Ggz8Qe6713>VIn7*Om%c2=h404V!r6+>mGWzmA`~-2FXN0^k9Wf*
z{8N7|9vc{diGxD%RG$ER>TkqnwEOfl;I`=7(cIjOrlz$ZpMvnGCl)b2X8igXRPpC+tMFmVN)Mdb(ZC9Ne^;~GhWa4zZgX}R
z@Np@t=2|!r`jWC*A&p^L8DN6h`L6$H|
zFQe2VA+Lvwc$*I*`vf22YWh~xy9IN-di?V8NOq&f80yxP0QO
zx79X+6w}C8xL;a^)K==5hC%5eh)d{!hzMo-H5he}WcmL$DNIPDKfCijKBN%wYQ_0>
z^4cmztU;Gl4I3x}Yqb&xa?BK-IT4QZDQ)LaqOD-LD*f{EauCRl5I%T64PHBBR4V8xIkSuv3%e7>PKinmB{Aw^8kjZ4b#
zBd|EO^E(@w<>KOEBqk;@gi>;*ZARwg4G7Aa&$AuwSjzeG*?U8g|)pOi8pr4_v$4IYM8kdl1&4vw?>4_L^ggbZE5`NHahDk;J^caXB3`@Nw_
zk@{4CpdZ=_gX17fMSI~})CRwy>k*i<2oZU;sy!$uC;)*Tno!;JGG?uN6>;UO;GZ!I
zdG~JN{M7p2D|KeJaeZndNC_JB823wW7ik=mV;_&JAK1Y6A=!(rzfB<{M=%Wk9n0C*
zv6l^DKyE#HWYr=vXS(`8!qAF$IQ6^!$co4uzlQ6U*X-mx5k++p#%}a5w82@kxUS#e
zCLV_jIxQnI@O&>ZQ+{Pq)SZX6I>pL6X6^tXaKu6QlpKQJko5={v>bi|7Q&o13%0B(
zm6V*E91wbs*v44C)18zGCn*m!y~^eGvW;Ay+6bjs(rUP0|Lny)j-_BLj~h95Ki^00
z-3{u!iKB>mG;!OSf6_O*yn@RXEILvNao>uCeF!h#&NFAtevD_*lCHeT>ydsxKM)yO
zVIRbMFZim)l8m;MX8<~cJCvponcSj98i6)6)|pW-&LBiFLJ
z229<Ca?Ops!i$s)=VqnazUth^@p=k_m@v#dJPEo)E~!;
z^{3#deg+v6x1w+9O1>U3z}xbnZFM`w)}O@0hEs^CXkt?CoYKbmg1MxW?eH(~Ts}eR
z4{^VVqt@{_qvpTF;|{Am!q)>5E3dy&L@@e`XO(v~XZJL5(CFma1sqa5ID49hO%Y!o
z^c$mmdqT^NcB%+RJJ7iZr-K)I7`ue#oyvEP$Scx~6R-<)RHF{*#
zAULZA#U-VT*!V;c3LV89rkvM!0FC=jV#eGxT%I?02$v@$CZVKs7=!vCyuP@a`#rl$
z32uuZ_~~u+H=a_wlCtDMwAK(QwIKIg7)!Af91aIxo8NeV-TRqy8#zCC@L*nY2?+@(
zEiGkGAB5KzD{mR;g_$6P($m{k-Z-QrM}>p%(xWqQqM;5a*F1ugO>^=1J>^J_vLp76
z6xA+7oO2QO`Bi>Wtj))~RFM##=VFm}A6zKh9|2HFoobGw0&Osb?Q0?kT)RtyTtM
zL|Ovw%1*^y*=dZlge*v5dC*6fBVbUySA>?ez&2t#;wld#rRqiW8`lbZ;d0pWS9q;Y
z{YYVhx!=OHOy^iMW-7A#-NyH!+>a6>RnI))-o-hNQ}K+QrkxdZpA?}Otwet$&~cQV
zjsW_!d3<0K4x4LAUaQ!iDGkV5#i|O-Uf5|HxxaGI)LQI3PRF>)|oPazr0D2q}Uv7uAsb
z)T24QUs2xqD8yVwiu%dutLg)~s>AiSsuZX5MoJPyicdvl=f}m~ltTBRz!^4hTP}3}
z;#sSuMc{rad@!f4-1{|J`^e-
zua%-1h}{Ei*bd2he|?sJP2!@0XU_eVhj8NPyAcj*
zC)YvFdYlnBa2^Oj+4J4tllCwS$u$^L@ep>`R-x3^*1dSde~{dspdo8+UeEG(o3QkiV`vqecaTf7(&zFmp%)Y^jcUl>tM;K
zgHP%#uh7|t@_z%Tm5yLijxL&w)${7Hc=mF&KKGGX$9+=2I{%wcDL%c^)mav^EoS-h
zR0@cOB$~n@^`qmII)^rP+6UPk3VV(pkaCL@LGBGsilP|d=I2Fef6^XYZfn8=C`hGK
um2!D`SNZr5t&38GdY$R@bMyZ(N%=ofxM;eN3o3d50000IsO=4ck_a*VA{Coe$`{q1%?HrB=P{49;{4u_Dc9~_5HP&2fuMKKyYHE0=(9%V}
zDFIzVrfc%HbNoPx3Q@cpQe?WutPTx}5Daw5Wejjg13@T9O-uJ}D@4TmKuVt~Mg3!2
z?p1YtcV>8)o-Xb*UQ&riw;IuY_c~VZIKnoX(;`_FLLI8ws_J^S`Kq~ArB8~b;(_|&
zT+fyAK9HiPrw4+rt}e8-wflk)^3i)zrh4o~L1qe0<{kwpLKW^c*P`uO4K7xkMM2>y
zY~5RkfzH_~QFQ7o2(1lOZ1bS?ib|gphvE_@gPRR6`4j%dz2ATLHFgASg=RlB^po|xqyHt6o;#T1;)RH~
zd}QXA;_1B>JiT{AN`CFZCJ=n1${7s}jeJi^K_gb~t;5W1HPCTCuM%{f(0r|#Z88ck
zAt<&KoA(r8^^R2RJdi8Jk;iR8c*qXMAVVjpkC_dP{=<5snx2yq@c9N#?%DmD_~Gk^
z`2N`gDOoMgMi4~rSJt-jJ$?x{`MkK^ReQDhE4J~Eses9{V;Joe%SGDMW3Lp4;u3^%
zM%jh(J=(hZ?}ilTxwCO-Uj*V0L?Jmo2FVGrh)X@e&~z*Wp}$)RW9QLk96o&qbGBdP
z^Wu6}ZA9h`ws8r*gmFuXq34TgtDZq_-wH~e*Lx;
z-;{2|gT!%oe0VV0Q)PG%D??k94ELgCxVKOK`);@le;-nwUBlA?574l=e@KSMUuvN}
zYcif3_mI$@?~X^gZuq7y2|s@KCqK@
zfB!Omcys4oPuc;E3vqMl4<%-K+E@f3b
zuJC8IkYa>V=sMw6brIW?9Y4Z8R(QJM_ZL6m*Kcp)=Z95tJg&w6{@Bi>ym;{fKmYtQ
zQc_Z2YikQjOG}2nzCJWHHQzlcq8Bcm&H{nnl4&Vkb8I&XLmY51!BZkZkRe*SPH4MY
z!8T2oirL2&UvJdc*W=lQBUj@SsIbq#`Nn)~&;Z3l}<&LJE2Q{5cX66M6f9lp&MJ
zlppkUj^7R`Ep-*VbwGO~q?l`^sVE4VsS;v4;L+`-my|ML!UW{z=1Mh$hRf~Sw^3GB
zhNVlFzRrVpb?=)YW#Yt%AjIz7#i%OD$F-_6ylF(F+^jx<3#r>tc_aW;8DB8ynDEt&
zItHoh=9LS`PfubWzN=TTPXhx3sfIjx@&pM932<_90-YBM?PdFBNZGu3GYGD(u8h1R
zv0N8g>(6uV)5Z}gqU~BW9}`hRA@rM2Tb|E0JGO3QAIp|4W1ou`FXows>PTB#8+?3x
z`iczUrw>VysY9kSlCjh;3Ool0=iK{ZR;nq@l@ub*iFTIV47Q=Y
zSMoD?K{#(EXwI*YUKFdVt3e9t<#189??a`$15&8C8XFrcKU8mzdryjNuz|ei%tNJ3
zA@LnYC}rWoh4Aq3Ku~lh5>MSjadkSrX}84Vdvhh_&@q9o6IQHV&o*vuZmbkj=PmrL
zsJ~O56h~|+ymw0ZK#GcuBvqt{4QrtkQB&6Mh+`FOj;rIXM8ie$FNW0PVrx+-#l~)K
zhniwK&tLw{+4aP~r&9j5q{v20ML!ciXjn!<%e@*}3oc@S<1vPwZ3qZLDO48-_RAt*
zx$Za??L3R<+?xnYu7j@i4h9_)=sLk=;R?2yKYu>^v2a+;K6PhCN^v-@do|}lxu|LM
z?`@GK`<@qC@hw@yCRQ%zMfK80^I_9>fFMW_h1SL^jE9MPa5)d7u(U?LkM0%2Mhqj@
zMJqcLS__Aje6OzUE-8+f`lW)a@md?yoe|h`QY;)+!6&K$PTR}S-=zrso%1ntMkGVq
zJP-sy3cbo(Sy^FQa3Io-XCt-nY^S7*SdasPxs5a1I5;@4pDDAv*=PT$K~fx!>r%vd
zP%b(H`{Zw0dQOV#vaS4JpB<7bWZ;}ssnN%RKje11;#laV01>x{zxA*
z*T$l_q6nec53xD%y7Yi_Oz4gj?Ww_19EwYzJP29?hIaO#uXDcVN)a{X6SowsOMZft
zardQZwKGzpLcP#X5rpibbhhz|Zk0$OAB65m8DOZpCOy
z$9EsQ`D-xQZ8xTRMoDofE`jnOj2rV`oSTl;Yi&O&tLXKW;^j0QL2DNvY^5!tmrp?E
zHXF3%t;Vff9~7j=Ge`{tWl}^jGbwr&onqu3brUVCUMOjf6N{**X
zaVRc<@*o7Sapl|$$Bj~c(APQc1u3g%VxRY9WNx2<+u1A8lD!tWsfQR>&IW@pZ{9qH
zm6<6lCKw}b|5h%v$vN3DUV02ho<}iq#!iOu(o7HpDgT^e2a^etVP|L0K7zJ?jtVKHQ&sEMxyR?xirV39vMs#1M+1?E=C>a~)u+8h$vml1Vv`
zmc~h6P9^*953HcdGFwh^%5IrY)-`>fS>x;FuHTU|oY18=FYxx>!B`fNW
zP#5jH(h`6CEI(F^hff466i37s?Ty-VoLf@3Kj%8byhnR2uU=C=kfP$9NRU#T
zm4Nz+LYys3M`1>S0upf|JC#vdmi0PpecV7
zYR~P)o`e_-cgw*@_k0+xEN6_K9RY%{QEtaN9blhsKG706f()9b3D>GhIk)PPT+a1C
z$QI7s&f>NHJ*NAbLJKv*^_ns+V)TKEAPVi7{G%_CB9`4^&2cz&CoUEHO9(xrz@KfhqFOedYDGIH~G5^bG&V7l~^uArZDU))&x(rR1&ahG_nXX9D
znO_RR;iJ2mkh*hWxLS1(dyjX5HH8Qwh~XnhNzI5tP04mN
zUW!IbLkjk#9_=wHM$Vy9oHMzHL7+Sc%A}mhPU76Rt@Y$*(H}GNRfbXLHAM^?nrR61
z9hf93ND=2NPao?r3sLb?CM6?#AHN`q7sbf9eLW`SpN>1Fcp?YoRw(6KRSD-_oE6Wt
zg_aesum#&aDYPab2vTVF5$7lwB1Nnh#BA`kNKwp#auLTgJ5mSIY((dZk0th=6peoU
z*a@jcRC48(iY+BlRhrMWg%)dXn-r0gP)cjPe3>uKi~|D|=uK&N9JYRMp{bm>(<*ogJYz}YEm)79)Fl%SZ8;%`zj-Sftj
z^0z1DBMl8C?%vE0y&*^uMNFK(dZ~nK%IVxA*tK~jL-e}3MFa>#tb-**2qjQE)Ov@c
zsti|y;><>O9`dal;-iX90*$9^Vz58q
zOgn_E*j*Bi>7iJ0zo(u
zAI%tRAH??$vr=IB=DUM(UB4Y8On
z{J7_6)hHH5ibI5c(^oyA0L7O6X-e3fOb!L1{zMGpli5LRGssfDpCWt?ndB|mh#{`r
zUMkM+prSq@MO|GTcGD&^PG!VG5#Aoo(lxrr)?y+oCy$4ziJ_FN{Zw-(!p6)T)~03>
zoaZ>g*JmRZdoGu3PRDHlA=b~9;b?8a_s_KG=*!$>yksMCRBmH-`FF@UJ~EJVrd&lQ
zbkTOcq7_EUyn5m&FgnJm`Ow2l@1pTG1;+S3r+$@l=%eGmdaAb$bu_xJBSHy^ttzD`UhnRAZ*%U%
e{sSq>#QZ-fG2}g7Evvi$0000`#rlAo~kpx$E1(AJgcA=Z55d>6JLFMdAGcqIQ8p?Vg35Hs=;QxLC3b%hJJ4w7`QEHQ~D;>t(I@C-Y({M4hjL8
z;4%V>6bdW}3P5gJj#>D;X>L(
zR8OCb>WmbvrccK9F>1sNv)7gL7&H(*HbY@z6VC3C`mTVf`XEfz2Oy8w$r8@d)7Nhm
zW^0hUDZgV*At2Q2!Vz?_*A~sj-Io@kCUYigGH2j!eh$9gune`ESF-5$yNhQt7*TFn
zXdqUE2mQ98$P5fI(9{%>wl*k?2*)cE$KiZ>GTvS=0}|^HNSvlXzrQ!`6fMV(JJ;an
z!<+DP=@$I+a0&jgXANqLm*SnAS*V^hm1ShBMla_y$b52P61Ev8;oBgO+@)2WQ#e0t
zGYp(kwe=hKf6|U=+bINOtfLcN3J$^E__4S&YbHJ}T#C<&S3ojE!$W}J{8+jj|8sO3
z10gU3n+|zWj%nK|0?NsWNw~c-mx0_bS&q*N7wDjfz}S(karoA{z)HcjWeF(G
z6ZU~*>Yt}|jHTyO0>#_{^V~gAK50BYU7LqTd)MNdEz9x6>IL{{$uvj?MMB~*flu1N
zGZ(#rw=|MbKmkZnzkHUl>JUsupKepe(I-F}JZ2B8f5ck!4P6Ce$3*D&b?uP!42-%0
zux+Q?q$bVh8Jq#w=>xz$Lh)Y^&Ax2-n}t%_;4JEj=W>R48r)czg3nhkz_;68!cTkFu;_Pf
z@nU>dIImexHtc!&Z5Xh&*)igRnr@8}YFczvzj2l991(M9E6P5R$=h=>BdD#PN4DEA
z>{9!qDpiB)*(vyQK_+TTma^#g?c8bjQ&zI>@P-&@b+ksZtQRkSEPS~mP!z+oQbqc|W
z#1NFl2ca}J0Ec6Ia5%;jCldT{F(tCuMRhxr;~zk8(gH0Q(=Nr4hHyFtMK~sq95Zql
zN)%po@2@}alxAxK(tH;OYz%hA0ksDXYTUaY3JnzkKp+T+fU~CtdR}1-d%G*Y9}kMw
zF)|F5o3to}Wgoma+!p)x?PHb3dgDN}7fuzg!o}^yczEk7etGyQ?!W&IZdFy_M#X8o
zec}kNzEa9*%A@_H>Kz-nOsJVYeX-^7oWi|C_HAVhi`Wws6a>=Z#fw?tKAs46cg4|lD{;O2
z2(DM0#P#ZP_*2zcT&p<6qBM*4mmdK+gvyx7O_~pdrck;!wmc>jaWd`n3^_(=WvO$_
z%i%5{t(q~Fd%vb^KL=3?zD-4rB1t5Y<}k!N<(`c#orKa(&yZsX%+{@2S@OXOen#58
zZaqG#D#y*ra$KuC-J)ne$?!REF5}?r0e5$ISXx@vL+aVs(n%;C9Luw3&j!iFOZY
zvf>Sn7oWZRN7R%bZBZhoNIkSKnG#dxavg4NZuL-Fb4>RH+%7_C#WB{_)*wxrHjQPX
zSOt2D-mv2wYA(Np%jc_6dFl+VoIQ*8Upt2zm(FpT@@PLv8c@V#Vkge#IsyU$xK0ZT
zi+VUs9rIK`5sqnaG87AhLo^xG3bSvv*xnup;SSZ@CQg0
z>(I+18w92J*iDpIe}JFw-^HUZ?{J#(Xg^7o@CKI&96g<(Bu`G^IwO=((9@S__0&TN
z9INeR_iWuGzkuTE>IxSZ7bN5yN80AQ@SJ*-kBy!&5&!kw5Pb2egU%tepEP2GwoF7s
z1VeF%+r;%sRb|>^>48u{5qG0jrV6^_#PMx!yU{7XCKM4{TA5V#EELfr4W2!kzmBZY
zEnf(y#K*^jw7jI8V@Ks5SK*U8KGBuHm&|S|1ip
zp~=_Ckt314`Utxqy|4m)X)j|~;(G3FBd;7zQ=V{&o13;wWMm}QGc0;3*J~1Us+m)&
zXQuKxwphFFqGKM@DIJEQUDFXzM4-(o(n6V>U&ZfPhs2aH6sc#9?!BvkGNLXxi$JS|
zau6*+soh?LuQ#sHtzCD~F`b0s=nj1=A4qKDVd#|$srnR*)UUuKsuU(sN6;rYpCzEE
zR4UN?LN#p@RP#u+un8(imAD7g|JuX%WP*^
zTy
zRqp3@>E*bX@cnJuO8jU3JY39}fVGjq80TcqU^*B}1iVf{(bI!_)Eubi9)fF18H_dM
zFj1GnJfw&v_s#-IKnV#6L2z&|95e+OFlIl-FTdC-6xvS;4hiKlQBhG`k5fn**J<>BZ8{Iq_q2LhG#~HIpMv9wD$MtEfrEvaxY&+vI}c^b{PlccWAm!G=X!^i
z=o}(?PCyYc#WGC$kxpE0b*oUss-lZamv1b;y(^s*i&Y3%PE+ZfxFUvs9
ztg$GK4Z=KkdpMZOI|@S_*Lf%r6PIAd>Po1yUWNUnldv6o2-c%sf_3-`ot;~Q61DIW
zRv!Kk=>=7MfrG-Aa+>nmgCh4?#O(}J7IC}OHk}9Q_R?v%`r>$;Pf=ly(hIYl2g9zn
zvAEcdZaWV}e4pZ)e2}N*V+-EncriR_Z@WC>+#yV}qXy(rgD}sQd{+F?EPVU;i8gPCJauo%b-c_&WU44#IEh0nVp=
zEj#4^eCAw2%7%{+m2*)GB{YxIlt=R$Qq$q%5|+;O4pkL!JE1d=bGy_wwMDx8f(FME
zeEBV3k%tqe3?6_X#$+7r)l)anqPkS0^faj4c~q64(HQaO*1G#
zxf}-u#O~(awvXG)Q2GZh;xyfP#P=yKE+hCMQp{8K6)fX=zq)*u+xhX%b=?{fwM9CY
z9EPKDUeBP=;+cSQW@0c(<2;`pDF1p?t6QF6$9#B=dzxMu^!I;}9bp!!{gO$p+{=!j
zAW3l~dEG7EPxBiQQ~CwuaGvAHK(1%kxZ>zygqz
z>NrGeV&LWN3+E9dp$H5{v}QC?GP1Gp_${nGbd~qhF|?mVzcn$VVG}%y>nO_G$aOw=
z^PE}DF?Ywun6c#+
zrzwy2ljwMom4e)s4M%r1*PE4+#O+a=Lev(Yi<=`}a&h?epa@G&i;LEcX|nO1lLrKG
z9TWjaY=@}V@-0{~^E3zAlnu9aw`6fl)2+s7>LJg^sqEZZo*Eu|%AA
z=ba*;xZ2y`g}7*)(qp5wpQu}hz&vD4i?WQ`3hOZkV3TwVp0h5&Bcl?7RYk1U${0DP
za=rE=M(NrT?b47ThY%3oKIWZ`CEW)_z|n2>CAw+8n20soD);Jcy>tui9koyAs%FR5
zeX}q1U&ZxGhD7s4(^@snSR0D+I&rrVFvPa&PSL>-FK!w@F;O1_NqiG4kK7Hpa*y`&
z^9EmBH-e(v!^a3X^wNszkSeraRuUAkR!vj*h9V%HxZ4OAV%xJMhDX$UQt+GmYBc
z$RT2)))0!w6HsJhs`+J7uaNCJr!?yb(IMTleFmikz|WvOgVM3#^~@>Hobp?63cX68
znQLGF`cKZqOjaJTgYQ`Xc6XnDODF~b>p`*z%tN2RrRW=!*GOgoOCa@F0Ly?JT-dpr
zMQIWpPm%_#<~j_#mi<2FDH5;cAoZ<#izbGK*wT_Iy@|IBSg3o*6L03lF;ee5uEW4%
z(Qg|{Z=WoXO#K$KOuVvS+=7gpr|{nd_8#bs-D_5{6fqefi87|Xi?sFl=5U=dJB^r*
z_tds$ZposT#n#Zh<$v-(i{f-kl*wes%*$0&MDNeqpw%rd!qOXT^
zkG3^wlrs_&6QNKj_`;-8DW@r~y|Q6LyZ@Y&AA;jv&a6Lprg*}J}6dJRvZf`9#D_BrR4D8>2@pIc&inFG2GF0000 {
+ 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}
+
+
+
+
+ );
+};