From 55e177a07605aeba98f164f2af41d64dac1842a9 Mon Sep 17 00:00:00 2001 From: Aronai Sieyes Date: Thu, 23 Apr 2020 15:34:32 -0400 Subject: [PATCH 1/5] Port/improve /tg/ RCD --- code/game/objects/items/weapons/RCD.dm | 12 +- code/game/objects/items/weapons/RCD_vr.dm | 218 ++++++++++++++++++++++ code/game/objects/items/weapons/RSF.dm | 4 +- icons/effects/effects_rcd.dmi | Bin 0 -> 22425 bytes icons/mob/items/lefthand_vr.dmi | Bin 1255 -> 2147 bytes icons/mob/items/righthand_vr.dmi | Bin 1150 -> 2042 bytes icons/obj/tools_vr.dmi | Bin 548 -> 13812 bytes vorestation.dme | 1 + 8 files changed, 229 insertions(+), 6 deletions(-) create mode 100644 code/game/objects/items/weapons/RCD_vr.dm create mode 100644 icons/effects/effects_rcd.dmi diff --git a/code/game/objects/items/weapons/RCD.dm b/code/game/objects/items/weapons/RCD.dm index 034063c453..4f45423f6e 100644 --- a/code/game/objects/items/weapons/RCD.dm +++ b/code/game/objects/items/weapons/RCD.dm @@ -27,13 +27,14 @@ var/window_type = /obj/structure/window/reinforced/full var/material_to_use = DEFAULT_WALL_MATERIAL // So badmins can make RCDs that print diamond walls. var/make_rwalls = FALSE // If true, when building walls, they will be reinforced. - +/* VOREStation Removal - Unused /obj/item/weapon/rcd/Initialize() + src.spark_system = new /datum/effect/effect/system/spark_spread spark_system.set_up(5, 0, src) spark_system.attach(src) return ..() - +*/ /obj/item/weapon/rcd/Destroy() QDEL_NULL(spark_system) spark_system = null @@ -48,6 +49,7 @@ return "It currently holds [stored_matter]/[max_stored_matter] matter-units." // Used to add new cartridges. +/* VOREStation Tweak - Wow this is annoying, moved to _vr file for overhaul /obj/item/weapon/rcd/attackby(obj/item/weapon/W, mob/user) if(istype(W, /obj/item/weapon/rcd_ammo)) var/obj/item/weapon/rcd_ammo/cartridge = W @@ -61,9 +63,10 @@ to_chat(user, span("notice", "The RCD now holds [stored_matter]/[max_stored_matter] matter-units.")) return TRUE return ..() - +*/ // Changes which mode it is on. /obj/item/weapon/rcd/attack_self(mob/living/user) +/* VOREStation Removal - Moved to VR if(mode_index >= modes.len) // Shouldn't overflow unless someone messes with it in VV poorly but better safe than sorry. mode_index = 1 else @@ -74,7 +77,7 @@ if(prob(20)) src.spark_system.start() - +*/ // Removes resources if the RCD can afford it. /obj/item/weapon/rcd/proc/consume_resources(amount) if(!can_afford(amount)) @@ -118,6 +121,7 @@ rcd_beam = beam_origin.Beam(A, icon_state = "rped_upgrade", time = max(true_delay, 5)) busy = TRUE + perform_effect(A, true_delay) //VOREStation Add if(do_after(user, true_delay, target = A)) busy = FALSE // Doing another check in case we lost matter during the delay for whatever reason. diff --git a/code/game/objects/items/weapons/RCD_vr.dm b/code/game/objects/items/weapons/RCD_vr.dm new file mode 100644 index 0000000000..2369ca0d93 --- /dev/null +++ b/code/game/objects/items/weapons/RCD_vr.dm @@ -0,0 +1,218 @@ +/obj/item/weapon/rcd + icon = 'icons/obj/tools_vr.dmi' + icon_state = "rcd" + item_state = "rcd" + item_icons = list( + slot_l_hand_str = 'icons/mob/items/lefthand_vr.dmi', + slot_r_hand_str = 'icons/mob/items/righthand_vr.dmi', + ) + var/ammostate + var/list/effects = list() + + var/static/image/radial_image_airlock = image(icon = 'icons/mob/radial.dmi', icon_state = "airlock"), + var/static/image/radial_image_decon = image(icon= 'icons/mob/radial.dmi', icon_state = "delete"), + var/static/image/radial_image_grillewind = image(icon = 'icons/mob/radial.dmi', icon_state = "grillewindow"), + var/static/image/radial_image_floorwall = image(icon = 'icons/mob/radial.dmi', icon_state = "wallfloor") + +// Ammo for the (non-electric) RCDs. +/obj/item/weapon/rcd_ammo + name = "compressed matter cartridge" + desc = "Highly compressed matter for the RCD." + icon = 'icons/obj/tools_vr.dmi' + icon_state = "rcdammo" + item_state = "rcdammo" + item_icons = list( + slot_l_hand_str = 'icons/mob/items/lefthand_vr.dmi', + slot_r_hand_str = 'icons/mob/items/righthand_vr.dmi', + ) + +/obj/item/weapon/rcd/Initialize() + . = ..() + update_icon() + +/obj/item/weapon/rcd/consume_resources(amount) + . = ..() + update_icon() + +/obj/item/weapon/rcd/update_icon() + var/nearest_ten = round((stored_matter/max_stored_matter)*10, 1) + + //Just to prevent updates every use + if(ammostate == nearest_ten) + return //No change + ammostate = nearest_ten + + cut_overlays() + + //Main sprite update + if(!nearest_ten) + icon_state = "[initial(icon_state)]_empty" + else + icon_state = "[initial(icon_state)]" + + add_overlay("[initial(icon_state)]_charge[nearest_ten]") + +/obj/item/weapon/rcd/proc/perform_effect(var/atom/A, var/time_taken) + effects[A] = new /obj/effect/constructing_effect(get_turf(A), time_taken, modes[mode_index]) + +/obj/item/weapon/rcd/use_rcd(atom/A, mob/living/user) + . = ..() + cleanup_effect(A) + +/obj/item/weapon/rcd/proc/cleanup_effect(var/atom/A) + if(A in effects) + qdel(effects[A]) + effects -= A + +/obj/item/weapon/rcd/attackby(obj/item/weapon/W, mob/user) + if(istype(W, /obj/item/weapon/rcd_ammo)) + var/obj/item/weapon/rcd_ammo/cartridge = W + var/can_store = min(max_stored_matter - stored_matter, cartridge.remaining) + if(can_store <= 0) + to_chat(user, span("warning", "There's either no space or \the [cartridge] is empty!")) + return FALSE + stored_matter += can_store + cartridge.remaining -= can_store + if(!cartridge.remaining) + to_chat(user, span("warning", "\The [cartridge] dissolves as it empties of compressed matter.")) + user.drop_from_inventory(W) + qdel(W) + playsound(src.loc, 'sound/machines/click.ogg', 50, 1) + to_chat(user, span("notice", "The RCD now holds [stored_matter]/[max_stored_matter] matter-units.")) + update_icon() + return TRUE + return ..() + +/obj/item/weapon/rcd/proc/check_menu(mob/living/user) + if(!istype(user)) + return FALSE + if(user.incapacitated() || !user.Adjacent(src)) + return FALSE + return TRUE + +/obj/item/weapon/rcd/attack_self(mob/living/user) + ..() + var/list/choices = list( + "Airlock" = radial_image_airlock, + "Deconstruct" = radial_image_decon, + "Grilles & Windows" = radial_image_grillewind, + "Floors & Walls" = radial_image_floorwall + ) + /* We don't have these features yet + if(upgrade & RCD_UPGRADE_FRAMES) + choices += list( + "Machine Frames" = image(icon = 'icons/mob/radial.dmi', icon_state = "machine"), + "Computer Frames" = image(icon = 'icons/mob/radial.dmi', icon_state = "computer_dir"), + ) + if(upgrade & RCD_UPGRADE_SILO_LINK) + choices += list( + "Silo Link" = image(icon = 'icons/obj/mining.dmi', icon_state = "silo"), + ) + if(mode == RCD_AIRLOCK) + choices += list( + "Change Access" = image(icon = 'icons/mob/radial.dmi', icon_state = "access"), + "Change Airlock Type" = image(icon = 'icons/mob/radial.dmi', icon_state = "airlocktype") + ) + else if(mode == RCD_WINDOWGRILLE) + choices += list( + "Change Window Type" = image(icon = 'icons/mob/radial.dmi', icon_state = "windowtype") + ) + */ + var/choice = show_radial_menu(user, src, choices, custom_check = CALLBACK(src, .proc/check_menu, user), require_near = TRUE, tooltips = TRUE) + if(!check_menu(user)) + return + switch(choice) + if("Floors & Walls") + mode_index = modes.Find(RCD_FLOORWALL) + if("Airlock") + mode_index = modes.Find(RCD_AIRLOCK) + if("Deconstruct") + mode_index = modes.Find(RCD_DECONSTRUCT) + if("Grilles & Windows") + mode_index = modes.Find(RCD_WINDOWGRILLE) + /* We don't have these features yet + if("Machine Frames") + mode = RCD_MACHINE + if("Computer Frames") + mode = RCD_COMPUTER + change_computer_dir(user) + return + if("Change Access") + change_airlock_access(user) + return + if("Change Airlock Type") + change_airlock_setting(user) + return + if("Change Window Type") + toggle_window_type(user) + return + if("Silo Link") + toggle_silo_link(user) + return + */ + else + return + playsound(src, 'sound/effects/pop.ogg', 50, FALSE) + to_chat(user, "You change RCD's mode to '[choice]'.") + +////////////////// +/obj/item/weapon/rcd/electric/update_icon() + return + +/obj/item/weapon/rcd/shipwright + icon_state = "swrcd" + item_state = "ircd" + can_remove_rwalls = TRUE + make_rwalls = TRUE + +////////////////// +/obj/item/weapon/rcd_ammo/examine(mob/user) + ..() + to_chat(user, display_resources()) + +// Used to show how much stuff (matter units, cell charge, etc) is left inside. +/obj/item/weapon/rcd_ammo/proc/display_resources() + return "It currently holds [remaining]/[initial(remaining)] matter-units." + +////////////////// +/obj/effect/constructing_effect + icon = 'icons/effects/effects_rcd.dmi' + icon_state = "" + plane = TURF_PLANE + layer = ABOVE_TURF_LAYER + anchored = TRUE + mouse_opacity = MOUSE_OPACITY_TRANSPARENT + var/status = 0 + var/delay = 0 + +/obj/effect/constructing_effect/Initialize(mapload, rcd_delay, rcd_status) + . = ..() + status = rcd_status + delay = rcd_delay + if (status == RCD_DECONSTRUCT) + addtimer(CALLBACK(src, /atom/.proc/update_icon), 11) + delay -= 11 + icon_state = "rcd_end_reverse" + else + update_icon() + +/obj/effect/constructing_effect/update_icon() + icon_state = "rcd" + if (delay < 10) + icon_state += "_shortest" + else if (delay < 20) + icon_state += "_shorter" + else if (delay < 37) + icon_state += "_short" + if (status == RCD_DECONSTRUCT) + icon_state += "_reverse" + +/obj/effect/constructing_effect/proc/end_animation() + if (status == RCD_DECONSTRUCT) + qdel(src) + else + icon_state = "rcd_end" + addtimer(CALLBACK(src, .proc/end), 15) + +/obj/effect/constructing_effect/proc/end() + qdel(src) diff --git a/code/game/objects/items/weapons/RSF.dm b/code/game/objects/items/weapons/RSF.dm index 260a01b04d..7af320d69f 100644 --- a/code/game/objects/items/weapons/RSF.dm +++ b/code/game/objects/items/weapons/RSF.dm @@ -8,8 +8,8 @@ RSF name = "\improper Rapid-Service-Fabricator" desc = "A device used to rapidly deploy service items." description_info = "Control Clicking on the device will allow you to choose the glass it dispenses when in the proper mode." - icon = 'icons/obj/tools.dmi' - icon_state = "rcd" + icon = 'icons/obj/tools_vr.dmi' //VOREStation Edit + icon_state = "rsf" //VOREStation Edit opacity = 0 density = 0 anchored = 0.0 diff --git a/icons/effects/effects_rcd.dmi b/icons/effects/effects_rcd.dmi new file mode 100644 index 0000000000000000000000000000000000000000..efb13bfb11a15a8d03bb24d5da9c89e3d2f59de2 GIT binary patch literal 22425 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 Rf=gm{eH-9+f5-9c{{u)XGM)ec literal 0 HcmV?d00001 diff --git a/icons/mob/items/lefthand_vr.dmi b/icons/mob/items/lefthand_vr.dmi index 009e558532811d9ef231bbab9b0369cfd68c8e7f..c419b6f07508cbfbddb37cd0435259c85bf378a5 100644 GIT binary patch delta 2072 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 delta 1173 zcmV;G1Zw-^5a$UciBL{Q4GJ0x0000DNk~Le0001>0001h2m=5B0K2`CDF6TfsF5Wx zGq1bGFE>b(2O5r#nB?c`R#s+ERb((VMj#_CkpKX^LPFCwH>fBmk&ytqyke-RL*e3f zk%=~cf_{{#l$4KFJA_m|m|#V3JR@lfFDZ*Bkpc$`yKaB_9`^iy#0_2eo`Eh^5;&r`5fFwryM;w;ZhDainGjE%TBGg33t zGfE(w;*!LYR3KBSD7830FR>)QNQsLxC9|l17^IPlGp#5wHxB3D7KyWC-M`TzfHla^wdwn@geggs}T4;&aU^CT1d;Vl#p1VIoa9|(zm ze{Z6H?Dxg*Ul95s+toEzD9YDhPJxy87Su8R_mDOC{z)yYlD{G$B@1?h@vDR8!1~*= z9TBQkD*J-v5>*B6KG0>Bf>xrV8&bbY&Fi0kELgQ1hrM+is|pmn?vAVZbI>)Ug0)NkgdU`R z{hk`uA(xPFySvsdb09^{C5Y6|dm?aOJHRI!x4Y{S{v0gL1;YJvAiBCYhg^H6Cf_4L z5ClOG1VIo4$qf_v9|RNmAE=vw{14QP*tgIBAdre}!}GsLx(J_xcDvex4bK06BIzQ0 z4%+P;t5&h0`ClYm^yiR^p+gOUg3)v_n1in2<5TG4)1%4|nEyr6#b6Fv`Cp^py3e7? zv+L5TL=l?*MbpL09JKPkmqO#U8LBj28?>4wvH4$3bCYj{W7K_yA@(M z#-R%GZiART@n5Nfyta?BmI9feGRSLp+TC84zA9>I5W}&spd!d?_d4Bfx6^AYYN-U1 zho}tl`h$<*U@#bd4ExerDk9++hbqYHQh(CIol;{eGwQOEZ4n5#ISlJkV=+FfAeF z{?AbV9-89*&oH}txH{~A4&F32j7*mF*UjV%cPqNnK#M*%x4MoRDU^2)kHRlSC?@#zS16v&8Tk2}6PMCVq1gY&`4l$H&`$y+g%S-gZvrTVI!C6QKd=<) n{FS?q$bF?yabOCCAQAon_xe;*eT#vk00000NkvXXu0mjf@AfWu diff --git a/icons/mob/items/righthand_vr.dmi b/icons/mob/items/righthand_vr.dmi index c9a7af5fb8739ba379af9596504cdc16f772fea3..53abebcd3f1d83628692dd04f3348b989924f8a9 100644 GIT binary patch delta 1954 zcmV;T2VMC72>K5tiBL{Q4GJ0x0000DNk~Le0002s0002s2m=5B04?*H(*OVg2$3a2 zA&~$8P*r5SLPFCwH>fBmFf~SzkpR2AVyLJ?;o^26BQ24MA%B>90RPMY*sTC9EiJN+ z08LFzKR-WvB_%>ZL625DGtB>1Qc`a`BQyX1nVA4Hng4`TK3ZB@Gcq+*R9Q$zOe-oa z%K-td0028WKDdlU>%Alp5D)+W003spMJzzNkW2u~%%7mNzLiz+(rR5$N1dIWB_$s!9ol2ptLD_nJA{Z#YOi+7 zl@t%O$>p-$NZ|knmp&yXogl|5KxER1LnVd95T`*YERW5hH!q9UWHkVu94q@F;mR60>bxL;8ZdndfO6{q*w;r{6JKH=7#M4ut~B-&iVp z|CAoo-PyLUA#Hy!o63x&<@)K745xo*w%KfI)W+awDw`$i-4ic>$WO5z0c94lR*xo@t zs=*g8dsn-?gX9g0)nC4lMqcG|LJa|}9VBm1tB)I(8+UTKSHg%h@!DKKPSg%kt4|tN zn{>usPY5H<#5fbsOf@l5XL7?=PFnqqQF+Z9wp%_DYH(_LYG!su{WK7l#SW@e^mjSLEM&D1I8a@;uh$RsNr|*4(~fX?aC=tQud6HMeh2 zQ(0~d#l)Z>w{KWoTg$Jnujkj+R%6ZW8&=oy`SpMQ*7JEIgXX#Y!)lwDa{&MV007J= z6dt>S9#hyzj77$Xa`?cF^oBxGj4(U}e@Qk7e}he|{tB9oe>^%d`csxR{uXQgJG8QA zRJFC1VK;k`O~vD{pg)-#9b;?xWy^b;CJyb^GXFFYi$86}A*>V{Ch0TY=9X71MwYf) z%lv=SSS<6~ke4YbgXOXx<3ZR(d5 zxv*wW8{Ch4(R8(zsci2`56DG04m{5*`_TrwSj$wlE4v@9nu`O^+bWg)$oFU$YnjR? zb#r~NYAz1c9jXjQrggEF`DFR<#Duq5Dn)<$8_>0k#w$gC12u!YmicUE5C8xG00000 z001C)m~F6nMps)w9l0>NQ55d3YeSoF3S zhjgH^!D7ob)Fpq~D;9$)VG*5s-%BD z8Q75-^pt|~u|o=wfxR$;4Ryar_DfP#`pO5bPX_jc2AzHFV~+?ifz}3#rlG#?2n;G2 z<%8BI0|!A680=r#c#dCI9Ulk+VH>QLy2PMgR%hU{cCQKms`b{!H$I(8>*C>Az2;E?b)wN9U?JM;fWdiEs5eOAZCHgx-2SPVk za&;vWFdsZR5PX*}n2IIlksu0gwqSvAZ&ZHC6%?Yv@Bla&*Jwm~MfAXaRbaZnu zBzIxZk-Ye&9|-^e0000000000002lR7HhS^!eXs9SXivp28+w<vH$=8 delta 1070 zcmV+}1kwBY5B>-xiBL{Q4GJ0x0000DNk~Le0001>0001h2m=5B0K2`CDF6TflaVDu zAy8FhFf~RXBQ22t0K7s%(>FJ$C@7JU0K2?msHj8X;&zdVA%A-%B|iGmI6p73 zB)>?Bi!&v&sDBuwk&82}C^0t`#5TmDGQO0c+PuWP{M`H$g6azL^O7_22`bA;%u7zi zrAk@B)z1a&cK{&SN|sw(!|(tA0|7}yK~#90?U?OS@-Prao0k@-MJI& zA)0l0oGj?q>P_&&1a_P40A9EV?*gp9i2Rl^BnnEumLFZ7Qj0p@?P&+FVC0950P7z` zezS;R(|?a5(C=cmryamOWd9HqR241qmr%4IKkw*wzT0dEnik41r+-xBcNfr;_yXE( z&JGIoFATg}c$_P7Q!)(0Fbu;m48t%^sPO;5LfFjzTwpW*bArmK0z3JiBZLTohI#%M z=<`2E$OYboy8Q2aw^;^Rsh}S;LS6oMzS~mxP5@)0XSk~uVR%7!-+(bV=wgW+&E7@@Zy z$s8tVG<;6&c=9@(OeWLU=@>h%Pv)=$&1m?X+OgD|O1}v%h$M6R1kG@Gymt0Be_PBK z@^OX>YLhvAf@V5AT05IBl%15s1&bterhmhuwepSm;q@HBBA5=3)-G48WW8P|tJTuJ zAYpiI?Q)eQ>-Tk%I1r=^udiL6u9q}VNH;g5s1cEd z6^p>6w<4n9H~8JMAp4cWs$Z)3@x;QF*8HT>=Kp2K=jCs<<(I0T%*~IrWxnOEw_D_= zR6IZ>JxG?j*vkGkPX5e3J}vldx9ZW+ufT3c^V@Hs7x%VwpoTl@0XHJrcKh9Dr5$PP ozvPGWacv8PFNa?qhGG6X-?Ttb3gyL^$N&HU07*qoM6N<$f>vb)Z~y=R diff --git a/icons/obj/tools_vr.dmi b/icons/obj/tools_vr.dmi index 72316467dd6c5edb25435954eaa2b0d235b992e0..b6fb6487c73d31155c01df3b578169edeac91f24 100644 GIT binary patch literal 13812 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 literal 548 zcmV+<0^9wGP)Z=s0J;SQnE(I{C@~X0 zN)$p+h-gZ!00001bW%=J06^y0W&i*Hi+WU8bVOxyV{&P5bZKvH004NLQ&wmb+GAXf0 ziHkEOv#1y-V93RpR+N~V3Spxui%%~~P0b@#abjswYEgP-UMjH~ic(XERhpDjiqlwS z1y?^8a9{uc*>+KN+ZT@p00030Nklh7PiW`F`%_~lX? zgaX+3`KB>|mERiRG=5us>CL}f7m6P^z6j#q?t$P>5~VMHjZymYS5XX3;VX5(M+PDr z$A<=S+bDi^fNzji4gv9@wDlbt8XEdrp$>!XKv0JPI}pfM8wA{e82HeiFmSu!fJqp* z{b4!4);o}M`1KCtEPkVYoS#za%Rin+qP|}PKQVld`2-%VAD6%EYzBTSzBuIFQC+@7 m&OiKtByRo<;_?p-QF;N3lnAX*FxN2v0000 Date: Thu, 23 Apr 2020 15:34:46 -0400 Subject: [PATCH 2/5] Port/improve /tg/ Inducer --- code/game/objects/items/weapons/inducer_vr.dm | 270 ++++++++++++++++++ icons/mob/items/lefthand_vr.dmi | Bin 2147 -> 2222 bytes icons/mob/items/righthand_vr.dmi | Bin 2042 -> 2112 bytes icons/obj/tools_vr.dmi | Bin 13812 -> 14475 bytes vorestation.dme | 1 + 5 files changed, 271 insertions(+) create mode 100644 code/game/objects/items/weapons/inducer_vr.dm diff --git a/code/game/objects/items/weapons/inducer_vr.dm b/code/game/objects/items/weapons/inducer_vr.dm new file mode 100644 index 0000000000..8ca20c049b --- /dev/null +++ b/code/game/objects/items/weapons/inducer_vr.dm @@ -0,0 +1,270 @@ +/obj/item/weapon/inducer + name = "industrial inducer" + desc = "A tool for inductively charging internal power cells." + icon = 'icons/obj/tools_vr.dmi' + icon_state = "inducer-engi" + item_state = "inducer-engi" + item_icons = list( + slot_l_hand_str = 'icons/mob/items/lefthand_vr.dmi', + slot_r_hand_str = 'icons/mob/items/righthand_vr.dmi', + ) + force = 7 + + var/powertransfer = 1000 //Transfer per time when charging something + var/cell_type = /obj/item/weapon/cell/high //Type of cell to spawn in it + var/charge_guns = FALSE //Can it charge guns? + + var/datum/effect/effect/system/spark_spread/spark_system + var/obj/item/weapon/cell/cell + var/recharging = FALSE + var/opened = FALSE + +/obj/item/weapon/inducer/unloaded + cell_type = null + opened = TRUE + +/obj/item/weapon/inducer/Initialize() + . = ..() + if(!cell && cell_type) + cell = new cell_type + +/obj/item/weapon/inducer/proc/induce(var/obj/item/weapon/cell/target, coefficient) + var/totransfer = min(cell.charge,(powertransfer * coefficient)) + var/transferred = target.give(totransfer) + cell.use(transferred) + cell.update_icon() + target.update_icon() + +/obj/item/weapon/inducer/get_cell() + return cell + +/obj/item/weapon/inducer/emp_act(severity) + . = ..() + if(cell) + cell.emp_act(severity) + +/obj/item/weapon/inducer/afterattack(atom/A, mob/living/carbon/user, proximity) + if(user.a_intent == I_HURT) + return ..() + + if(cantbeused(user)) + return + + if(recharge(A, user)) + return + + return ..() + +/obj/item/weapon/inducer/proc/cantbeused(mob/user) + if(!user.IsAdvancedToolUser()) + to_chat(user, "You don't have the dexterity to use [src]!") + return TRUE + + if(!cell) + to_chat(user, "[src] doesn't have a power cell installed!") + return TRUE + + if(!cell.charge) + to_chat(user, "[src]'s battery is dead!") + return TRUE + return FALSE + + +/obj/item/weapon/inducer/attackby(obj/item/W, mob/user) + if(W.is_screwdriver()) + playsound(src, W.usesound, 50, 1) + if(!opened) + to_chat(user, "You open the battery compartment.") + opened = TRUE + update_icon() + return + else + to_chat(user, "You close the battery compartment.") + opened = FALSE + update_icon() + return + if(istype(W, /obj/item/weapon/cell)) + if(opened) + if(!cell) + user.drop_from_inventory(W) + W.forceMove(src) + to_chat(user, "You insert [W] into [src].") + cell = W + update_icon() + return + else + to_chat(user, "[src] already has \a [cell] installed!") + return + + if(cantbeused(user)) + return + + if(recharge(W, user)) + return + + return ..() + +/obj/item/weapon/inducer/proc/recharge(atom/movable/A, mob/user) + if(!isturf(A) && user.loc == A) + return FALSE + if(recharging) + return TRUE + else + recharging = TRUE + + if(istype(A, /obj/item/weapon/gun/energy) && !charge_guns) + to_chat(user, "Error unable to interface with device.") + return FALSE + + //The cell we hopefully eventually find + var/obj/item/weapon/cell/C + + //Synthetic humanoids + if(ishuman(A)) + var/mob/living/carbon/human/H = A + if(H.isSynthetic()) + C = new /obj/item/weapon/cell/standin(null, H) // o o f + + //Borg frienbs + else if(isrobot(A)) + var/mob/living/silicon/robot/R = A + C = R.cell + + //Can set different coefficients per item if you want + var/coefficient = 1 + + //Last ditch effort + var/obj/O //For updating icons, just in case they have a battery meter icon + if(!C && isobj(A)) + O = A + C = O.get_cell() + + if(C) + var/done_any = FALSE + + if(C.charge >= C.maxcharge) + to_chat(user, "[A] is fully charged ([round(C.charge)] / [C.maxcharge])!") + recharging = FALSE + return TRUE + user.visible_message("[user] starts recharging [A] with [src].", "You start recharging [A] with [src].") + + var/datum/beam/charge_beam = user.Beam(A, icon_state = "rped_upgrade", time = 20 SECONDS) + var/filter = filter(type = "outline", size = 1, color = "#22AAFF") + A.filters += filter + + spark_system = new /datum/effect/effect/system/spark_spread + spark_system.set_up(5, 0, get_turf(A)) + spark_system.attach(A) + + while(C.charge < C.maxcharge) + if(do_after(user, 2 SECONDS, target = user) && cell.charge) + done_any = TRUE + induce(C, coefficient) + spark_system.start() + if(O) + O.update_icon() + else + break + + QDEL_NULL(charge_beam) + QDEL_NULL(spark_system) + if(A) + A.filters -= filter + + if(done_any) // Only show a message if we succeeded at least once + user.visible_message("[user] recharged [A]!", "You recharged [A]!") + + recharging = FALSE + return TRUE + else //Couldn't find a cell + to_chat(user, "Error unable to interface with device.") + + recharging = FALSE + +/obj/item/weapon/inducer/attack_self(mob/user) + if(opened && cell) + user.visible_message("[user] removes [cell] from [src]!", "You remove [cell].") + cell.update_icon() + user.put_in_hands(cell) + cell = null + update_icon() + +/obj/item/weapon/inducer/examine(mob/living/M) + . = ..() + var/dat = "" + if(cell) + dat += "
Its display shows: [round(cell.charge)] / [cell.maxcharge]." + else + dat += "
Its display is dark." + if(opened) + dat += "
Its battery compartment is open." + to_chat(M, dat) + +/obj/item/weapon/inducer/update_icon() + ..() + cut_overlays() + if(opened) + if(!cell) + add_overlay("inducer-nobat") + else + add_overlay("inducer-bat") + +//////// Variants +/obj/item/weapon/inducer/sci + name = "inducer" + desc = "A tool for inductively charging internal power cells. This one has a science color scheme, and is less potent than its engineering counterpart." + icon_state = "inducer-sci" + item_state = "inducer-sci" + cell_type = null + powertransfer = 500 + opened = TRUE + +/obj/item/weapon/inducer/sci/Initialize() + . = ..() + update_icon() //To get the 'open' state applied + +/obj/item/weapon/inducer/syndicate + name = "suspicious inducer" + desc = "A tool for inductively charging internal power cells. This one has a suspicious colour scheme, and seems to be rigged to transfer charge at a much faster rate." + icon_state = "inducer-syndi" + item_state = "inducer-syndi" + powertransfer = 2000 + cell_type = /obj/item/weapon/cell/super + charge_guns = TRUE + +/obj/item/weapon/inducer/hybrid + name = "hybrid-tech inducer" + desc = "A tool for inductively charging internal power cells. This one has some flashy bits and recharges devices slower, but seems to recharge itself between uses." + icon_state = "inducer-hybrid" + item_state = "inducer-hybrid" + powertransfer = 250 + cell_type = /obj/item/weapon/cell/void + charge_guns = TRUE + +// A 'human stand-in' cell for recharging 'nutrition' on synthetic humans (wow this is terrible! \o/) +/obj/item/weapon/cell/standin + name = "don't spawn this" + desc = "this is for weird code use, don't spawn it!!!" + + charge = 100 + maxcharge = 100 + + var/mob/living/carbon/human/hume + +/obj/item/weapon/cell/standin/New(newloc, var/mob/living/carbon/human/H) + ..() + hume = H + charge = H.nutrition + maxcharge = initial(H.nutrition) + + QDEL_IN(src, 10 SECONDS) + +/obj/item/weapon/cell/standin/give(var/amount) + amount *= 0.05 // So 1000 becomes 50 + ..(amount) + hume.nutrition += amount + +// Various sideways-defined get_cells +/obj/mecha/get_cell() + return cell + diff --git a/icons/mob/items/lefthand_vr.dmi b/icons/mob/items/lefthand_vr.dmi index c419b6f07508cbfbddb37cd0435259c85bf378a5..c033b491179cbfbd161854e63557a18215fe9dcc 100644 GIT binary patch delta 1926 zcmV;12YLA85UvrBBmo_V=-0C=30(#;COFboIqbNdu!J1c%&y~u{_;9fy$8`pqMr0tZwy_;T@&RhQQ z3rQfQI@HIeRn@7H4+s&N)L!kDD=D66lN-Z!BZUL(T>6BVbb_%g0z@W%oj4RySPXG$ zl;Rq+hpAqFk>@^ZNfUdvS$AhLjl_IG!kuEvzj&v>_HW-E{Y4_*SiU3;O8GIFkY&)mJE3Cp9FP-= zd?UrSe{rP1^}o71-3*3C^QDsfSSsa5nE|iwPN>#82h@b3#o~>Bks0v%?sU1v8N1SN zI*f510w;8Lu4`9+=fL@cDB%>t{zayLp&0RxUn6vHel0QIY@xezEzvp$d1{a8{7w1N z6PItEgWj5U^&eDI00000000000000$8g65b+fVp&)NH|@qh<^K95rLK=BRy2c=ujk zY{InXsMLg!7Vq8Vn3c=-b^pW@V$hzWlIC~gu@>)_%c4quW&FW}?w@!<9Ioc5r1{;$ zSc?-6#zmFN#JDyfL1?mtu@8JM~Xtlt5!w88rzyU#Ywe)-D&OMj^PHnBB2Pl%a$ij zab&=^|3r#Adu%%$dnPG2w=V;}V=EJKY%#e8PmoL6;S_dRwXcp*nnA0@vaEh+e*`l^#jlW-4FVN|@ zZ?@e^h2fwXPDvfo`buYu{z2X6`F}j{>+!PGQC(gWja922!$CcqYU)sy%lTcX#kzlg z@R8{+R>%FDI;zWeWn*52aZ1(0saPp8F3nLDUMFKMe)gJ`+rdc)akf2&O7MJKrx)+>D;vFf3f4Q*ZIIVNUsxW z@mBl+000000000006+(a5t7Q~)^K~b~R zf#ka);CDOHB%RHLW1QK&vtAOrquGWZt6 zoJAmOkFNAVpb4-hH;ogvXtg7S6j z#hGqSrfkVZ4K>=64qS(;1wf zpBoK=qxcS5`U60ce>w-kus_xO&g9?Q6H1%I^>TiPIUoQ4007$j4<+7DTmIT*%K!iX M07*qoM6N<$f(XK~RR910 delta 1851 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 Ye^mT4kybD1bN~PV07*qoM6N<$f(#{eivR!s delta 1763 zcmV<91|0do5c&_0BmoGqB@6+73AM*~00001bW%=J06^y0W&i*Ht9n#ebVOxyV{&P5 zbZKvH004NLmC?@%!Y~X5@N@eVWjibWyLyog*}=Vnls2vbn@HO!zP+7ZmCoDu!7n6` zS{>SB*Q@5#$vcFIOlq%o%as%lw8`bN-ALg82bVr2CY>P1DnMk?i9;oSg~br3K`Aal zdzkY2i#(4-OPbiTExH?%aa?3qO$N#bn({)NgR;@ym(N17qk*sh8gMp_<`4TM`%~Ad z?VI<{U+)K!XmRZ2P5=M}=}AOERCt{2n`u)MT@Zz5BmrVj1A?p~vV=DbBpC$)=nxkY zQ1At0`Tsw~d$U*ux@T^G-%KDG&hvq?=)QgWOwUq9myQDf0000m*tqV)oOvvL*L@~d zP)9^(!m@jJ@?wG1(C{dEGZM3ZZCyk9g1edLX&e3Y z^9-loF))Gg`x??3N93(r%rU0XJ%%mXN?RBa?R8!=5pLP_{bzHF~9J3 zabaO$@$KS#q_QN}Or2zoePBZ(@3_dkYI#xhykKHbkZYz+@{YY8e1vD|{qp;jQj9P>1%F942!Df3to{m` zj(PdmSH!0kxj+pub@AFnHwErYx!l%dz&T>?bb5?G!ctG zZN(w16dES!Gv4NwS1d-Bwp+{m(^xF?+mM$jDTC#*ALY9JAvB6@?HPj`4f7&Y+gDT^Y4pf7~FTDQ!`hK~re3Ymd z9oPvo*iet&-*xJLISi_#J{j1N8T6Eb^07k-kb%80gAH}RNcKxoRr<;YtxpE_ga(~` z?PHG!F@e?wi>9Hz?+6Sk8Rdi4Cj$pT5E$%V+IWs%RvjM*0%04hmb%2CUsh-C%dmle zAgC${a|O>Ym$p2jUoH^3!IG*gBg#iLpk5|SAo%)CGC{}DKFHT76A0a4iPg1C@a-%0 z8f60N;}HlIN+tR`K?g!NSaNkG6EGhOV000000000`9BI0L%$C)7V2*0Fn!q5LEvxasJPCt!TM@RJ^0)s#5#MAaO!r-Z(pHt2U8;Ibjc4qERIXok*{QAFE`^BF*IWg~z z&6O1C>3BRu5>#Rj4|r&<;!ht_!H2?78B000000001g002Or zaiQrpTUMl#OHEIboBY1Iy87L1wya1em)Fm(x%6*+bAyuP zCb~DldW$o7Y;RBv#khgG#RM;e`#bU(?8cxkXh5aPCn(w9)$3=m-=f!|2F|1t)XfR9 z86);DQ9VMze}D3&19WtAF(h|ZVbGDh_@y5S000000000000000NGKL-wZXz-tu|O# ztknjK%j@H$Pw+V56TH2>O|(IEk0#q6_G$nC000;){s3x66qZZx?gIb-002ovPDHLk FV1k%qJ^%m! diff --git a/icons/obj/tools_vr.dmi b/icons/obj/tools_vr.dmi index b6fb6487c73d31155c01df3b578169edeac91f24..0b8f5f04900947dc63e76d91487389335700791b 100644 GIT binary patch literal 14475 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 Og0wYs)r;@gg#9meNkYE> literal 13812 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 diff --git a/vorestation.dme b/vorestation.dme index a453552ef0..7a1b7c71fe 100644 --- a/vorestation.dme +++ b/vorestation.dme @@ -1166,6 +1166,7 @@ #include "code\game\objects\items\weapons\handcuffs.dm" #include "code\game\objects\items\weapons\handcuffs_vr.dm" #include "code\game\objects\items\weapons\improvised_components.dm" +#include "code\game\objects\items\weapons\inducer_vr.dm" #include "code\game\objects\items\weapons\manuals.dm" #include "code\game\objects\items\weapons\manuals_vr.dm" #include "code\game\objects\items\weapons\mop.dm" From be6f4e0da08df1a8afecd15dc7f8798aa329ada5 Mon Sep 17 00:00:00 2001 From: Aronai Sieyes Date: Thu, 23 Apr 2020 15:57:33 -0400 Subject: [PATCH 3/5] Add inducer designs, make protolathe take titanium --- code/modules/research/designs/misc_vr.dm | 24 ++++++++++++++++++++---- code/modules/research/protolathe.dm | 21 ++++++++++++++++++++- 2 files changed, 40 insertions(+), 5 deletions(-) diff --git a/code/modules/research/designs/misc_vr.dm b/code/modules/research/designs/misc_vr.dm index 2b397185c3..d26f24ed59 100644 --- a/code/modules/research/designs/misc_vr.dm +++ b/code/modules/research/designs/misc_vr.dm @@ -2,7 +2,7 @@ name = "Bluespace jumpsuit" id = "bsjumpsuit" req_tech = list(TECH_BLUESPACE = 2, TECH_MATERIAL = 3, TECH_POWER = 2) - materials = list(DEFAULT_WALL_MATERIAL = 4000, "glass" = 4000) + materials = list(DEFAULT_WALL_MATERIAL = 4000, MAT_GLASS = 4000) build_path = /obj/item/clothing/under/bluespace sort_string = "TAVAA" @@ -10,7 +10,7 @@ name = "Size gun" id = "sizegun" req_tech = list(TECH_COMBAT = 3, TECH_MATERIAL = 3, TECH_POWER = 2) - materials = list(DEFAULT_WALL_MATERIAL = 3000, "glass" = 2000, "uranium" = 2000) + materials = list(DEFAULT_WALL_MATERIAL = 3000, MAT_GLASS = 2000, MAT_URANIUM = 2000) build_path = /obj/item/weapon/gun/energy/sizegun sort_string = "TAVAB" @@ -18,6 +18,22 @@ name = "Body Snatcher" id = "bodysnatcher" req_tech = list(TECH_MAGNET = 3, TECH_BIO = 3, TECH_ILLEGAL = 2) - materials = list(DEFAULT_WALL_MATERIAL = 4000, "glass" = 4000) + materials = list(DEFAULT_WALL_MATERIAL = 4000, MAT_GLASS = 4000) build_path = /obj/item/device/bodysnatcher - sort_string = "TBVAA" \ No newline at end of file + sort_string = "TBVAA" + +/datum/design/item/general/inducer_sci + name = "Inducer (Scientific)" + id = "inducersci" + req_tech = list(TECH_BLUESPACE = 4, TECH_MATERIAL = 5, TECH_POWER = 6) + materials = list(DEFAULT_WALL_MATERIAL = 8000, MAT_GLASS = 2000, MAT_URANIUM = 4000, MAT_PHORON = 4000) + build_path = /obj/item/weapon/inducer/sci + sort_string = "TAVAB" + +/datum/design/item/general/inducer_eng + name = "Inducer (Industrial)" + id = "inducerind" + req_tech = list(TECH_BLUESPACE = 5, TECH_MATERIAL = 7, TECH_POWER = 7) + materials = list(DEFAULT_WALL_MATERIAL = 3000, MAT_GLASS = 2000, MAT_URANIUM = 2000, MAT_TITANIUM = 2000) + build_path = /obj/item/weapon/inducer/unloaded + sort_string = "TAVAC" diff --git a/code/modules/research/protolathe.dm b/code/modules/research/protolathe.dm index 3837e13aae..1de0d5bed0 100644 --- a/code/modules/research/protolathe.dm +++ b/code/modules/research/protolathe.dm @@ -15,7 +15,26 @@ var/mat_efficiency = 1 var/speed = 1 - materials = list(DEFAULT_WALL_MATERIAL = 0, "glass" = 0, MAT_PLASTEEL = 0, "plastic" = 0, MAT_GRAPHITE = 0, "gold" = 0, "silver" = 0, "osmium" = 0, MAT_LEAD = 0, "phoron" = 0, "uranium" = 0, "diamond" = 0, MAT_DURASTEEL = 0, MAT_VERDANTIUM = 0, MAT_MORPHIUM = 0, MAT_METALHYDROGEN = 0, MAT_SUPERMATTER = 0) + //VOREStation Edit - Broke this into lines + materials = list( + DEFAULT_WALL_MATERIAL = 0, + "glass" = 0, + MAT_PLASTEEL = 0, + "plastic" = 0, + MAT_GRAPHITE = 0, + "gold" = 0, + "silver" = 0, + "osmium" = 0, + MAT_LEAD = 0, + "phoron" = 0, + "uranium" = 0, + "diamond" = 0, + MAT_DURASTEEL = 0, + MAT_VERDANTIUM = 0, + MAT_MORPHIUM = 0, + MAT_METALHYDROGEN = 0, + MAT_SUPERMATTER = 0, + MAT_TITANIUM = 0) hidden_materials = list(MAT_PLASTEEL, MAT_DURASTEEL, MAT_GRAPHITE, MAT_VERDANTIUM, MAT_MORPHIUM, MAT_METALHYDROGEN, MAT_SUPERMATTER) From 068509e918256637b6f2c91e16d69844367dcdc0 Mon Sep 17 00:00:00 2001 From: Aronai Sieyes Date: Thu, 23 Apr 2020 15:57:50 -0400 Subject: [PATCH 4/5] Give shipself hybrid inducer --- maps/tether/submaps/om_ships/aro2.dmm | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/maps/tether/submaps/om_ships/aro2.dmm b/maps/tether/submaps/om_ships/aro2.dmm index ae008df7eb..650bb8419e 100644 --- a/maps/tether/submaps/om_ships/aro2.dmm +++ b/maps/tether/submaps/om_ships/aro2.dmm @@ -1378,10 +1378,7 @@ /area/aro2/storage) "cO" = ( /obj/structure/table/rack/shelf/steel, -/obj/item/device/sleevemate, /obj/item/device/universal_translator, -/obj/item/weapon/cell/device/weapon/recharge/alien, -/obj/item/device/perfect_tele/alien, /turf/simulated/floor/tiled/techmaint, /area/aro2/storage) "cP" = ( @@ -1596,6 +1593,8 @@ pixel_y = 0; report_danger_level = 0 }, +/obj/structure/table/rack/shelf/steel, +/obj/item/device/sleevemate, /turf/simulated/floor/tiled/techmaint, /area/aro2/storage) "dp" = ( @@ -2065,6 +2064,9 @@ name = "east bump"; pixel_x = 24 }, +/obj/structure/table/rack/shelf/steel, +/obj/item/device/perfect_tele/alien, +/obj/item/weapon/inducer/hybrid, /turf/simulated/floor/tiled/techmaint, /area/aro2/storage) "ef" = ( From 45fd68ca8838a130b4e77c451c41c4623b5d7085 Mon Sep 17 00:00:00 2001 From: Aronai Sieyes Date: Thu, 23 Apr 2020 16:03:28 -0400 Subject: [PATCH 5/5] Tweak fakecell qdel time to be higher just in case --- code/game/objects/items/weapons/inducer_vr.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/objects/items/weapons/inducer_vr.dm b/code/game/objects/items/weapons/inducer_vr.dm index 8ca20c049b..aec62a69be 100644 --- a/code/game/objects/items/weapons/inducer_vr.dm +++ b/code/game/objects/items/weapons/inducer_vr.dm @@ -257,7 +257,7 @@ charge = H.nutrition maxcharge = initial(H.nutrition) - QDEL_IN(src, 10 SECONDS) + QDEL_IN(src, 20 SECONDS) /obj/item/weapon/cell/standin/give(var/amount) amount *= 0.05 // So 1000 becomes 50