From 96a527d04d10e2059cd872e981a12ffe5e3c800a Mon Sep 17 00:00:00 2001 From: Geeves Date: Sun, 28 May 2023 18:17:59 +0200 Subject: [PATCH] Technomancer Summoning Stone & Bracelet (#16252) --- .../technomancer/assistance/assistance.dm | 36 ++++++++++++- code/game/gamemodes/technomancer/catalog.dm | 48 +++++++++--------- code/game/gamemodes/technomancer/core_obj.dm | 39 ++++++++++---- code/game/gamemodes/technomancer/equipment.dm | 12 +++++ .../game/gamemodes/technomancer/spell_objs.dm | 23 +++++---- .../technomancer/spells/energy_siphon.dm | 8 +-- html/changelogs/geeves-techno_bracelet.yml | 7 +++ icons/obj/clothing/technomancer.dmi | Bin 3335 -> 3511 bytes icons/obj/telescience.dmi | Bin 6555 -> 6599 bytes 9 files changed, 122 insertions(+), 51 deletions(-) create mode 100644 html/changelogs/geeves-techno_bracelet.yml diff --git a/code/game/gamemodes/technomancer/assistance/assistance.dm b/code/game/gamemodes/technomancer/assistance/assistance.dm index 3ec95a1f5c7..9ed25aa0fa0 100644 --- a/code/game/gamemodes/technomancer/assistance/assistance.dm +++ b/code/game/gamemodes/technomancer/assistance/assistance.dm @@ -27,4 +27,38 @@ functions. It also has a large storage capacity for energy, and due to it's synthetic nature, instability is less of an issue for them." cost = 350 obj_path = /obj/item/antag_spawner/technomancer_apprentice/golem - one_use_only = TRUE \ No newline at end of file + one_use_only = TRUE + +/datum/technomancer/assistance/summoning_stone + name = "Summoning Stone" + desc = "A summoning stone is a small bluespace stone that's intra-dimensionally linked to a Core Bracelet, a miniaturized version of a manipulation core. \ + Upon crushing the crystal in one's hand, the bracelet will appear on their wrist and a catalog in their hand. You can give this to anyone you deem worthy to bring them into the fold. \ + NOTE: The agent will in no way have their free will modified, they can do whatever they wish with their power." + cost = 150 + obj_path = /obj/item/summoning_stone + +/obj/item/summoning_stone + name = "small bluespace crystal" + desc = "A smaller variant of the bluespace crystal. This one probably isn't big enough to teleport you around." + icon = 'icons/obj/telescience.dmi' + icon_state = "bluespace_crystal_small" + +/obj/item/summoning_stone/attack_self(mob/living/carbon/human/user) + if(!ishuman(user) || !user.mind) + return + // since this gives us a catalogue with more points than it costs, prevent the antag from farming points by using this + if(technomancers.is_technomancer(user.mind)) + to_chat(user, SPAN_WARNING("You're already in the fold, you can't use this!")) + return + var/turf/user_turf = get_turf(user) + user.drop_from_inventory(src, user_turf) + user.visible_message(SPAN_DANGER("[user] crushes \the [src] in their hand with a shower of sparks! A small bracelet appears on their wrist, and a catalog flies into their hand."), SPAN_DANGER("You crush \the [src] in your hand with a shower of sparks! A small bracelet appears on your wrist, and a catalog flies into your hand.")) + spark(user_turf, 4, alldirs) + if(user.wrists) + user.drop_from_inventory(user.wrists, get_turf(user_turf)) + var/obj/item/technomancer_core/bracelet/bracelet = new(user_turf) + user.equip_to_slot_if_possible(bracelet, slot_wrists, assisted_equip = TRUE) + var/obj/item/technomancer_catalog/initiate/catalog = new(user_turf) + catalog.owner = user + user.put_in_active_hand(catalog) + qdel(src) diff --git a/code/game/gamemodes/technomancer/catalog.dm b/code/game/gamemodes/technomancer/catalog.dm index 7532aa41319..712f57d380f 100644 --- a/code/game/gamemodes/technomancer/catalog.dm +++ b/code/game/gamemodes/technomancer/catalog.dm @@ -45,15 +45,25 @@ var/list/all_technomancer_assistance = typesof(/datum/technomancer/assistance) - var/spell_tab = ALL_SPELLS var/show_scepter_text = 0 + var/has_assistance_items = TRUE + /obj/item/technomancer_catalog/apprentice name = "apprentice's catalog" budget = 700 max_budget = 700 + has_assistance_items = FALSE /obj/item/technomancer_catalog/golem name = "golem's catalog" budget = 500 max_budget = 500 + has_assistance_items = FALSE + +/obj/item/technomancer_catalog/initiate + name = "initiate's catalog" + budget = 300 + max_budget = 300 + has_assistance_items = FALSE /obj/item/technomancer_catalog/master //for badmins, I suppose name = "master's catalog" @@ -88,19 +98,10 @@ var/list/all_technomancer_assistance = typesof(/datum/technomancer/assistance) - if(!consumable_instances.len) for(var/C in all_technomancer_consumables) consumable_instances += new C() - if(!assistance_instances.len) - for(var/A in all_technomancer_assistance) - assistance_instances += new A() - -/obj/item/technomancer_catalog/apprentice/set_up() - ..() - for(var/datum/technomancer/assistance/A in assistance_instances) - assistance_instances.Remove(A) - -/obj/item/technomancer_catalog/golem/set_up() - ..() - for(var/datum/technomancer/assistance/A in assistance_instances) - assistance_instances.Remove(A) + if(has_assistance_items) + if(!assistance_instances.len) + for(var/A in all_technomancer_assistance) + assistance_instances += new A() // Proc: show_categories() // Parameters: 1 (category - the category link to display) @@ -132,7 +133,8 @@ var/list/all_technomancer_assistance = typesof(/datum/technomancer/assistance) - dat += "Functions | " dat += "Equipment | " dat += "Consumables | " - dat += "Assistance | " + if(length(assistance_instances)) + dat += "Assistance | " dat += "Info
" dat += "You currently have a budget of [budget]/[max_budget].

" dat += "Refund Functions

" @@ -164,7 +166,8 @@ var/list/all_technomancer_assistance = typesof(/datum/technomancer/assistance) - dat += "Functions | " dat += "Equipment | " dat += "Consumables | " - dat += "Assistance | " + if(length(assistance_instances)) + dat += "Assistance | " dat += "Info
" dat += "You currently have a budget of [budget]/[max_budget].

" for(var/datum/technomancer/equipment/E in equipment_instances) @@ -184,7 +187,8 @@ var/list/all_technomancer_assistance = typesof(/datum/technomancer/assistance) - dat += "Functions | " dat += "Equipment | " dat += "Consumables | " - dat += "Assistance | " + if(length(assistance_instances)) + dat += "Assistance | " dat += "Info
" dat += "You currently have a budget of [budget]/[max_budget].

" for(var/datum/technomancer/consumable/C in consumable_instances) @@ -224,7 +228,8 @@ var/list/all_technomancer_assistance = typesof(/datum/technomancer/assistance) - dat += "Functions | " dat += "Equipment | " dat += "Consumables | " - dat += "Assistance | " + if(length(assistance_instances)) + dat += "Assistance | " dat += "Info
" dat += "You currently have a budget of [budget]/[max_budget].

" dat += "
" @@ -316,10 +321,7 @@ var/list/all_technomancer_assistance = typesof(/datum/technomancer/assistance) - new_spell = spell break - var/obj/item/technomancer_core/core = null - if(istype(H.back, /obj/item/technomancer_core)) - core = H.back - + var/obj/item/technomancer_core/core = H.get_technomancer_core() if(new_spell && core) if(new_spell.cost <= budget) if(!core.has_spell(new_spell)) @@ -358,9 +360,7 @@ var/list/all_technomancer_assistance = typesof(/datum/technomancer/assistance) - if(T.z in current_map.player_levels) to_chat(H, "You can only refund at your base, it's too late now!") return - var/obj/item/technomancer_core/core = null - if(istype(H.back, /obj/item/technomancer_core)) - core = H.back + var/obj/item/technomancer_core/core = H.get_technomancer_core() if(core) for(var/obj/spellbutton/spell in core.spells) for(var/datum/technomancer/spell/spell_datum in spell_instances) diff --git a/code/game/gamemodes/technomancer/core_obj.dm b/code/game/gamemodes/technomancer/core_obj.dm index eae508e6b64..161ce105889 100644 --- a/code/game/gamemodes/technomancer/core_obj.dm +++ b/code/game/gamemodes/technomancer/core_obj.dm @@ -31,7 +31,9 @@ var/max_summons = 10 // Maximum allowed summoned entities. Some cores will have different caps. var/never_remove = FALSE // whether it can ever be removed + var/simple_operation = FALSE // whether anyone can use this core + var/can_chameleon = TRUE var/global/list/chameleon_options /obj/item/technomancer_core/Initialize() @@ -41,10 +43,11 @@ verbs += /obj/item/technomancer_core/proc/toggle_lock else canremove = FALSE - if(!chameleon_options) + if(can_chameleon && !chameleon_options) var/list/blocked = list(/obj/item/storage/backpack/satchel/leather/withwallet) + typesof(/obj/item/technomancer_core) chameleon_options = list("Reset") chameleon_options += generate_chameleon_choices(/obj/item/storage/backpack, blocked) + verbs += /obj/item/technomancer_core/proc/change_appearance /obj/item/technomancer_core/Destroy() dismiss_all_summons() @@ -69,11 +72,8 @@ // 'pay_energy' is too vague of a name for a proc at the mob level. /mob/proc/technomancer_pay_energy(amount) - return FALSE - -/mob/living/carbon/human/technomancer_pay_energy(amount) - if(istype(back, /obj/item/technomancer_core)) - var/obj/item/technomancer_core/TC = back + var/obj/item/technomancer_core/TC = get_technomancer_core() + if(TC) return TC.pay_energy(amount) return FALSE @@ -144,7 +144,7 @@ wards_in_use -= ward qdel(ward) -/obj/item/technomancer_core/verb/change_appearance(picked in chameleon_options) +/obj/item/technomancer_core/proc/change_appearance(picked in chameleon_options) set name = "Change Core Appearance" set category = "Chameleon Items" set src in usr @@ -202,8 +202,8 @@ /mob/living/carbon/human/Stat() . = ..() - if(. && istype(back,/obj/item/technomancer_core)) - var/obj/item/technomancer_core/core = back + var/obj/item/technomancer_core/core = get_technomancer_core() + if(core) setup_technomancer_stat(core) /mob/living/carbon/human/proc/setup_technomancer_stat(var/obj/item/technomancer_core/core) @@ -249,8 +249,9 @@ /mob/living/carbon/human/proc/wiz_energy_update_hud() if(client && hud_used) - if(istype(back, /obj/item/technomancer_core)) //I reckon there's a better way of doing this. - var/obj/item/technomancer_core/core = back + //I reckon there's a better way of doing this. + var/obj/item/technomancer_core/core = get_technomancer_core() + if(core) energy_display.set_invisibility(0) instability_display.set_invisibility(0) var/ratio = core.energy / core.max_energy @@ -386,6 +387,22 @@ instability_modifier = 0.75 never_remove = TRUE +/obj/item/technomancer_core/bracelet + name = "bracelet core" + desc = "A bewilderingly complex 'black box' that allows the wearer to accomplish amazing feats. This variant is miniaturized and made to be simple to use, even though the internals are... nearly impossible to decipher." + icon_state = "bracelet_core" + item_state = "bracelet_core" + contained_sprite = TRUE + w_class = ITEMSIZE_SMALL + slot_flags = SLOT_WRISTS + energy = 5000 + max_energy = 5000 + regen_rate = 50 // 100 seconds to full + instability_modifier = 0.6 + energy_cost_modifier = 0.6 + spell_power_modifier = 0.6 + can_chameleon = FALSE + simple_operation = TRUE /obj/item/technomancer_core/proc/toggle_lock() set name = "Toggle Core Lock" diff --git a/code/game/gamemodes/technomancer/equipment.dm b/code/game/gamemodes/technomancer/equipment.dm index e7d0ec12336..f5fc5245a4d 100644 --- a/code/game/gamemodes/technomancer/equipment.dm +++ b/code/game/gamemodes/technomancer/equipment.dm @@ -101,6 +101,18 @@ cost = 100 obj_path = /obj/item/technomancer_core/overcharged +/datum/technomancer/equipment/bracelet + name = "Bracelet Core" + desc = "A core created for those unable to master the art of technomancy, or for those that desire a more incognito approach. \ + This variant of the core goes onto the wrists instead of onto the back.
\ + Capacity: 5k
\ + Recharge: 50/s
\ + Instability Modifier: 60%
\ + Energy Cost Modifier: 60%
\ + Spell Power: 60%" + cost = 50 + obj_path = /obj/item/technomancer_core/bracelet + /datum/technomancer/equipment/hypo_belt name = "Hypo Belt" desc = "A medical belt designed to carry autoinjectors and other medical equipment. Comes with one of each hypo." diff --git a/code/game/gamemodes/technomancer/spell_objs.dm b/code/game/gamemodes/technomancer/spell_objs.dm index 0464a10f73a..82923c8e35a 100644 --- a/code/game/gamemodes/technomancer/spell_objs.dm +++ b/code/game/gamemodes/technomancer/spell_objs.dm @@ -32,8 +32,7 @@ ) throwforce = 0 force = 0 -// var/mob/living/carbon/human/owner = null - var/mob/living/owner = null + var/mob/living/carbon/human/owner = null var/obj/item/technomancer_core/core = null var/cast_methods = null // Controls how the spell is casted. var/aspect = null // Used for combining spells. @@ -123,14 +122,16 @@ // Proc: get_technomancer_core() // Parameters: 0 // Description: Returns the technomancer's core, assuming it is being worn properly. -/mob/living/proc/get_technomancer_core() +/mob/proc/get_technomancer_core() + if(istype(back, /obj/item/technomancer_core)) + return back return null /mob/living/carbon/human/get_technomancer_core() - var/obj/item/technomancer_core/core = back - if(istype(core)) - return core - return null + . = ..() + if(!.) + if(istype(wrists, /obj/item/technomancer_core)) + return wrists // Proc: New() // Parameters: 0 @@ -183,12 +184,12 @@ if(!core) core = locate(/obj/item/technomancer_core) in owner if(!core) - to_chat(owner, "You need to be wearing a core on your back!") + to_chat(owner, "You need to be wearing a core on your back or your wrists!") return 0 - if(core.loc != owner || owner.back != core) //Make sure the core's being worn. - to_chat(owner, "You need to be wearing a core on your back!") + if(core.loc != owner || (owner.back != core && owner.wrists != core)) //Make sure the core's being worn. + to_chat(owner, "You need to be wearing a core on your back or your wrists!") return 0 - if(!technomancers.is_technomancer(owner.mind)) //Now make sure the person using this is the actual antag. + if(!core.simple_operation && !technomancers.is_technomancer(owner.mind)) //Now make sure the person using this is the actual antag. to_chat(owner, "You can't seem to figure out how to make the machine work properly.") return 0 return 1 diff --git a/code/game/gamemodes/technomancer/spells/energy_siphon.dm b/code/game/gamemodes/technomancer/spells/energy_siphon.dm index b8ddc544943..70613fcc86b 100644 --- a/code/game/gamemodes/technomancer/spells/energy_siphon.dm +++ b/code/game/gamemodes/technomancer/spells/energy_siphon.dm @@ -61,7 +61,7 @@ else stop_siphoning() -/obj/item/spell/energy_siphon/proc/populate_siphon_list(atom/movable/target) +/obj/item/spell/energy_siphon/proc/populate_siphon_list(atom/movable/target) things_to_siphon.Cut() things_to_siphon |= target.GetAllContents() for(var/atom/movable/AM in things_to_siphon) @@ -124,9 +124,9 @@ charge_to_give += nutrition_delta * SIPHON_FBP_TO_ENERGY flow_remaining = flow_remaining - nutrition_to_steal / 0.025 // Let's steal some energy from another Technomancer. - if(istype(H.back, /obj/item/technomancer_core) && H != user) - var/obj/item/technomancer_core/their_core = H.back - if(their_core.pay_energy(flow_remaining / 2)) // Don't give energy from nothing. + if(H != user) + var/obj/item/technomancer_core/their_core = H.get_technomancer_core() + if(their_core && their_core.pay_energy(flow_remaining / 2)) // Don't give energy from nothing. charge_to_give += flow_remaining * SIPHON_CORE_TO_ENERGY flow_remaining = 0 diff --git a/html/changelogs/geeves-techno_bracelet.yml b/html/changelogs/geeves-techno_bracelet.yml new file mode 100644 index 00000000000..83d7a08d9ea --- /dev/null +++ b/html/changelogs/geeves-techno_bracelet.yml @@ -0,0 +1,7 @@ +author: Geeves + +delete-after: True + +changes: + - rscadd: "Added a summoning stone to the Technomancer assistance category. You can give this to anyone to grant them a core and an initiate's catalogue, effectively making them a mini-technomancer." + - rscadd: "Added a Bracelet Core, a wrist mounted variant of the technomancer manipulation core." diff --git a/icons/obj/clothing/technomancer.dmi b/icons/obj/clothing/technomancer.dmi index ec94a9b03dd86a16b8ac4cb44c288739df2ef579..a4b73343679f72127aad540be8cbc8d70e4ee9a6 100644 GIT binary patch delta 3446 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 VsB$*Q*!~+q9FCo_ePMkm?q4*b+WG(h delta 3269 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%0A?p|4Q?@%W_dDYQ>!N>wH-m5xL zXx?{r^LPI}W5jVSNZLN+pW&0NLK|%tvjdEi3D6coV{Q$AVvsGokkH>A!v6*@goCt} z)aq;rmW(tP$iMe8em1<8@gxsMxrjpHO*3&x<$*-*6@j*xk zf1C0hj}+D8q#Q;aqS4a8%ptfU`P`j&NxhF@#Ds-}NSPjPm;1w%l(>XptxtelYGPxT zsBB}OvOT2t-Dy@Y;OQ{$?pdp~*g0MqEjJ@>Ny#&7PCrtj^X4*Dk;H@QNml9y;3uB zk0>9&An()MyP{D0fYslM8JS^X5Mfw{d|y1xo3bwFIsWC&xu~9X|Sw+tY zjEjKVX8}yTNW@JT_Q69d2AoXfBT>ty>w%;8A$kPh=p*FOxkj3aNOyx;` zPOZ|4A_I*IBuJX_!I*hluag5S{4@90oFZ~}*%$G#^+Z?C2IfD?Ztr!1aLX&Pt5mAj zfonq+-E^`4af`KogD?-M;wid6}r z(LxlA=o0Jd?Tdg(1@;&X$Q=>jQYnnt(LUH cEXG8jgLhOYlIy#Rf{2ffhQ4~as@=Q)0i`&2Z2$lO delta 6192 zcmW+(1ymH@7hbwULQ2Y@1q3ODr9qT#Bo;(UN;;Q8Qut9ymrH}x5)w*^lmaddQcHIV zODyc}fBnxnbLQMP@6CPpyKnCI-2us5$&~v5d9bm$ubP98y|>F-Ul&gg5GXJ&@uQAM zk2rnw%!!~zonIw`(Ps|NN}e0X z9I~$-^0Y3m+Eri^n9}<7I6WU%h5;U(58TeB@H>YRMa>b2r9hFdKp<9KEj4B1z`TQe zs1?%`c0e(gVZk*%#ZG?bZ-L;m?25RbBt{|A`=mMNr#qUaWg8iBOJ)`eXBmoPLDi6Tgh<8P#TopM(JBUq*owjf5k-m2ixVxPW@+;a?WKOk;;)qaUM3U*L3t5~G^=DPlSc!lN; zDzLWMeQ4w0@95}w$YlaSUkA+ONn~M#xmndG&F5lU&H|MhR~0QNF0j3llk*sBZ%1yU zSVteM@sM|rr!!KIb=2Z$i@YYbsG85_&H<6L4BNUk>^Q;HQ%O)&&jjV5{kFoLP%{Xq zn%dKu)cH}%5q`M0rpJ9Ay zjoVX(n9^mngq4c&b;_KVhQ(!FF6EfoR4d*?lS^X6$}vTiomHPA;kb~1eY;?6Qz!PO zqO9qQq9*!NQu}K<^SI!wiYHKeNF~V@UDBk2g>oCEnKR1HjG@JBrt1)K=m}O{8dNsP+4h*dWu}_ zy?8S3dve~AYU)3+!$s; z2R)$~;Pl6_Ij|4#RdFklb+8kudJ}oaM~I;7yW{>-f^AI0PJS3*XR$cLvZF89;BNDc zGOPs30)m^ag(*}p7%}>p+pVWq+=W2Im$$!A>vE6Xsy7I(Zo^P9(JmG;Qqk$@D$UgL zUe=Z{1<Op&oD6z9ByzF035|6b(z%%fZRh5|RSb-zK{rgLiGok)y7D>?a2H=LCS{h%yRFYd4*B#H2#H9t0}-i1uXIF!6cw3lxeg2 z4!pOA1SnBvNuIF>nMPw5E%Ip?ugA2;pZbY$q1BzQr?)2dc7NN_Q`Qx1J8Gd#6$-xF zE@K}RP{-LlA%2)h3h@G&rsMuaNZZcA9WDAJ;oE1^of|C>Pu}~O9Zh`FSAKRtKcuFv zor$j3hpih9%bui#V6xN2O;t0nA&fU4%%%WF>$aEzr&Em^Ch_qi?nWlbB#W~v#6Q1Z zu>8a3P_0FD03@DG>Ndtsrgort$Ym}cAe#XWRXOXhqYsDArrdz`pC!Ae8os5TPTjKt z3Y-2v8NUT!)17dF1(1rX^jPE}e-3ktLYQ60747~ZabOXkNqnqY^9$`2ev$%QozAlI z1Y|x_WWQXga0nTuFDPnI@7j=++T&g#ku^XZ-ke&ApHPNHcxKQa@$8k zEfOB+_=O3y-tKCBcb-O>hLnh`yK-oK!mY3OIGUlE^NyGUs}i~dP}mtlKaz$O+VwX^ z)bZQ9m8O7qT9~00q)aR-ajgu`U}y6Yo%`JOr$r({dgv0Q>6s-4=w(#1)HtV4<00SB zr%Nqlz7O;S92Y#|6hj7d~6RDRvSQ6IrF+r0FdMbtvPDZ2Z%m$JU(lrixVEPldKQ zs7XBny$R7YtXb=*Vf7S(#S|C};di*eb}*l-2c*Mbuwx5bTb{qCr(ZWW9f^sFK_E9| zGMi-o7PXL{-}ZWm?EME1j4GZ>wNU^$b6?ygX1whDKitL?3-TqajuG zc>Vf5-pl*_7Sp?)$F>2ngE3(V2Qe-aWnNJ9**hEfz#6Sn9wP%VjaCR}h~^uiOp@i_owY1m?t(uKX9b|+rByR2X=zcb ztFMN0q+a}$VnR|cu-TZ>4U*}yot*xxtVvYs)2OcyvFRw?HdU-0ZUzZ%e1S;84<&^~8LLKO+Ac~!m zlKbyNZsE=k?(ZeD%P~mGc&Ob5!mDZ0H_bpuqCp{HMw>>^>xZ~eQA|e$W~QkBx=

RwnQ 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 BYlHv*