From e18a47ca8aa0c97c7ac1cbb5f9256ffa1aa92e96 Mon Sep 17 00:00:00 2001 From: Enric Gabriel <43283559+SandPoot@users.noreply.github.com> Date: Thu, 2 Jul 2020 00:13:08 -0300 Subject: [PATCH] bluespace pipe dispenser and sprite previews, isn't it nice? --- .vs/slnx.sqlite | Bin 0 -> 106496 bytes .vscode/extensions.json | 3 +- code/game/objects/items/RPD.dm | 29 +++-- .../closets/secure/engineering.dm | 4 +- .../code/game/machinery/pipe/construction.dm | 24 ++++ sandcode/code/game/objects/items/BSRPD.dm | 76 +++++++++++++ .../objects/items/robot/robot_upgrades.dm | 34 ++++++ .../atmospherics/machinery/pipes/bluespace.dm | 103 ++++++++++++++++++ .../designs/mechfabricator_designs.dm | 8 ++ .../modules/research/designs/tool_designs.dm | 9 ++ .../modules/research/techweb/all_nodes.dm | 5 + .../research/techweb/bluespace_nodes.dm | 4 + .../mob/inhands/equipment/tools_lefthand.dmi | Bin 0 -> 794 bytes .../mob/inhands/equipment/tools_righthand.dmi | Bin 0 -> 769 bytes .../obj/atmospherics/pipes/bluespace.dmi | Bin 0 -> 1355 bytes sandcode/icons/obj/tools.dmi | Bin 472 -> 1827 bytes tgstation.dme | 7 ++ 17 files changed, 295 insertions(+), 11 deletions(-) create mode 100644 .vs/slnx.sqlite create mode 100644 sandcode/code/game/machinery/pipe/construction.dm create mode 100644 sandcode/code/game/objects/items/BSRPD.dm create mode 100644 sandcode/code/game/objects/items/robot/robot_upgrades.dm create mode 100644 sandcode/code/modules/atmospherics/machinery/pipes/bluespace.dm create mode 100644 sandcode/code/modules/research/designs/mechfabricator_designs.dm create mode 100644 sandcode/code/modules/research/designs/tool_designs.dm create mode 100644 sandcode/code/modules/research/techweb/bluespace_nodes.dm create mode 100644 sandcode/icons/mob/inhands/equipment/tools_lefthand.dmi create mode 100644 sandcode/icons/mob/inhands/equipment/tools_righthand.dmi create mode 100644 sandcode/icons/obj/atmospherics/pipes/bluespace.dmi diff --git a/.vs/slnx.sqlite b/.vs/slnx.sqlite new file mode 100644 index 0000000000000000000000000000000000000000..c5a6fa0a492633b0923166f2a49adbd9abcf990e GIT binary patch literal 106496 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

CB2tGv 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[src]'s error light flickers; there's something in the way!") @@ -413,7 +423,7 @@ GLOBAL_LIST_INIT(transit_tube_recipes, list( if(DISPOSALS_CATEGORY) //Making disposals pipes if(!can_make_pipe) - return ..() + return A = T if(isclosedturf(A)) to_chat(user, "[src]'s error light flickers; there's something in the way!") @@ -438,7 +448,7 @@ GLOBAL_LIST_INIT(transit_tube_recipes, list( if(TRANSIT_CATEGORY) //Making transit tubes if(!can_make_pipe) - return ..() + return A = T if(isclosedturf(A)) to_chat(user, "[src]'s error light flickers; there's something in the way!") @@ -471,7 +481,8 @@ GLOBAL_LIST_INIT(transit_tube_recipes, list( return else - return ..() + return +// End skyrat edit /obj/item/pipe_dispenser/proc/activate() playsound(get_turf(src), 'sound/items/deconstruct.ogg', 50, 1) diff --git a/code/game/objects/structures/crates_lockers/closets/secure/engineering.dm b/code/game/objects/structures/crates_lockers/closets/secure/engineering.dm index 05798df953e5..4d11bb0ac1f4 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/engineering.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/engineering.dm @@ -5,6 +5,9 @@ /obj/structure/closet/secure_closet/engineering_chief/PopulateContents() ..() + //SKYRAT EDIT - ATMS + new /obj/item/pipe_dispenser/bluespace(src) // SKYRAT: CE gets BPRPD instead of RPD, since they start with all other power tools too + //SKYRAT EDIT END new /obj/item/clothing/neck/cloak/ce(src) new /obj/item/clothing/head/beret/ce(src) new /obj/item/clothing/under/rank/engineering/chief_engineer(src) @@ -21,7 +24,6 @@ new /obj/item/assembly/flash/handheld(src) new /obj/item/clothing/glasses/meson/engine(src) new /obj/item/door_remote/chief_engineer(src) - new /obj/item/pipe_dispenser(src) new /obj/item/inducer(src) new /obj/item/circuitboard/machine/techfab/department/engineering(src) new /obj/item/extinguisher/advanced(src) diff --git a/sandcode/code/game/machinery/pipe/construction.dm b/sandcode/code/game/machinery/pipe/construction.dm new file mode 100644 index 000000000000..fc16dcc2ba47 --- /dev/null +++ b/sandcode/code/game/machinery/pipe/construction.dm @@ -0,0 +1,24 @@ +/obj/item/pipe/bluespace + pipe_type = /obj/machinery/atmospherics/pipe/bluespace + var/bluespace_network_name = "default" + icon_state = "bluespace" + desc = "Transmits gas across large distances of space. Developed using bluespace technology. Use a multitool on it to set its network." + +/obj/item/pipe/bluespace/attackby(obj/item/W, mob/user, params) + if(istype(W, /obj/item/multitool)) + var/new_name = input(user, "Enter identifier for bluespace pipe network", "bluespace pipe", bluespace_network_name) as text|null + if(!isnull(new_name)) + bluespace_network_name = new_name + else + return + +/obj/item/pipe/bluespace/make_from_existing(obj/machinery/atmospherics/pipe/bluespace/make_from) + bluespace_network_name = make_from.bluespace_network_name + return ..() + +/obj/item/pipe/bluespace/build_pipe(obj/machinery/atmospherics/pipe/bluespace/A) + A.bluespace_network_name = bluespace_network_name + return ..() + +/obj/item/pipe/bluespace/directional + RPD_type = PIPE_UNARY diff --git a/sandcode/code/game/objects/items/BSRPD.dm b/sandcode/code/game/objects/items/BSRPD.dm new file mode 100644 index 000000000000..0f8426d0fe0f --- /dev/null +++ b/sandcode/code/game/objects/items/BSRPD.dm @@ -0,0 +1,76 @@ +/* +CONTAINS: +BSRPD +*/ + +#define ATMOS_CATEGORY 0 +#define DISPOSALS_CATEGORY 1 +#define TRANSIT_CATEGORY 2 + +#define BUILD_MODE (1<<0) +#define WRENCH_MODE (1<<1) +#define DESTROY_MODE (1<<2) +#define PAINT_MODE (1<<3) + + +GLOBAL_LIST_INIT(bsatmos_pipe_recipes, list( + "Pipes" = list( + new /datum/pipe_info/pipe("Pipe", /obj/machinery/atmospherics/pipe/simple), + new /datum/pipe_info/pipe("Manifold", /obj/machinery/atmospherics/pipe/manifold), + new /datum/pipe_info/pipe("4-Way Manifold", /obj/machinery/atmospherics/pipe/manifold4w), + new /datum/pipe_info/pipe("Layer Manifold", /obj/machinery/atmospherics/pipe/layer_manifold), + new /datum/pipe_info/pipe("Bluespace Pipe", /obj/machinery/atmospherics/pipe/bluespace), + ), + "Devices" = list( + new /datum/pipe_info/pipe("Connector", /obj/machinery/atmospherics/components/unary/portables_connector), + new /datum/pipe_info/pipe("Gas Pump", /obj/machinery/atmospherics/components/binary/pump), + new /datum/pipe_info/pipe("Volume Pump", /obj/machinery/atmospherics/components/binary/volume_pump), + new /datum/pipe_info/pipe("Gas Filter", /obj/machinery/atmospherics/components/trinary/filter), + new /datum/pipe_info/pipe("Gas Mixer", /obj/machinery/atmospherics/components/trinary/mixer), + new /datum/pipe_info/pipe("Passive Gate", /obj/machinery/atmospherics/components/binary/passive_gate), + new /datum/pipe_info/pipe("Injector", /obj/machinery/atmospherics/components/unary/outlet_injector), + new /datum/pipe_info/pipe("Scrubber", /obj/machinery/atmospherics/components/unary/vent_scrubber), + new /datum/pipe_info/pipe("Unary Vent", /obj/machinery/atmospherics/components/unary/vent_pump), + new /datum/pipe_info/pipe("Passive Vent", /obj/machinery/atmospherics/components/unary/passive_vent), + new /datum/pipe_info/pipe("Manual Valve", /obj/machinery/atmospherics/components/binary/valve), + new /datum/pipe_info/pipe("Digital Valve", /obj/machinery/atmospherics/components/binary/valve/digital), + new /datum/pipe_info/pipe("Relief Valve (Binary)", /obj/machinery/atmospherics/components/binary/relief_valve), + new /datum/pipe_info/pipe("Relief Valve (Unary)", /obj/machinery/atmospherics/components/unary/relief_valve), + new /datum/pipe_info/meter("Meter"), + ), + "Heat Exchange" = list( + new /datum/pipe_info/pipe("Pipe", /obj/machinery/atmospherics/pipe/heat_exchanging/simple), + new /datum/pipe_info/pipe("Manifold", /obj/machinery/atmospherics/pipe/heat_exchanging/manifold), + new /datum/pipe_info/pipe("4-Way Manifold", /obj/machinery/atmospherics/pipe/heat_exchanging/manifold4w), + new /datum/pipe_info/pipe("Junction", /obj/machinery/atmospherics/pipe/heat_exchanging/junction), + new /datum/pipe_info/pipe("Heat Exchanger", /obj/machinery/atmospherics/components/unary/heat_exchanger), + ) +)) + +// SKYRAT CHANGE: Made BSRPD into a subtype of RPD, additionally made it work at range. +/obj/item/pipe_dispenser/bluespace + name = "Bluespace Rapid Piping Device (BSRPD)" + desc = "A device used to rapidly pipe things at a distance." + icon = 'sandcode/icons/obj/tools.dmi' + icon_state = "bsrpd" + lefthand_file = 'sandcode/icons/mob/inhands/equipment/tools_lefthand.dmi' + righthand_file = 'sandcode/icons/mob/inhands/equipment/tools_righthand.dmi' + custom_materials = list(/datum/material/iron=75000, /datum/material/glass=37500, /datum/material/bluespace=1000) + has_bluespace_pipe = TRUE + +/obj/item/pipe_dispenser/bluespace/afterattack(atom/target, mob/user, proximity_flag, click_parameters) + if(proximity_flag) + return // this will be handled in pre_attack in RPD.dm + user.Beam(target, icon_state = "rped_upgrade", time = 5) + playsound(src, 'sound/items/pshoom.ogg', 30, TRUE) + dispense(target, user) + +// End skyrat edit +#undef ATMOS_CATEGORY +#undef DISPOSALS_CATEGORY +#undef TRANSIT_CATEGORY + +#undef BUILD_MODE +#undef DESTROY_MODE +#undef PAINT_MODE +#undef WRENCH_MODE diff --git a/sandcode/code/game/objects/items/robot/robot_upgrades.dm b/sandcode/code/game/objects/items/robot/robot_upgrades.dm new file mode 100644 index 000000000000..1664200e6045 --- /dev/null +++ b/sandcode/code/game/objects/items/robot/robot_upgrades.dm @@ -0,0 +1,34 @@ +/obj/item/borg/upgrade/bsrpd + name = "engineering cyborg bluespace RPD" + desc = "A bluespace RPD replacement for the engineering module's standard RPD." + icon_state = "cyborg_upgrade3" + require_module = 1 + module_type = list(/obj/item/robot_module/engineering) + +/obj/item/borg/upgrade/bsrpd/action(mob/living/silicon/robot/R, user = usr) + . = ..() + if(.) + var/obj/item/pipe_dispenser/PD = locate() in R + var/obj/item/pipe_dispenser/bluespace/BD = locate() in R // Skyrat edit + if(!PD) + PD = locate() in R.module + if(!BD) + BD = locate() in R.module //There's gotta be a smarter way to do this. + if(BD) + to_chat(user, "This unit is already equipped with a BSRPD module.") + return FALSE + + BD = new(R.module) + qdel(PD) + R.module.basic_modules += BD + R.module.add_module(BD, FALSE, TRUE) + +/obj/item/borg/upgrade/bsrpd/deactivate(mob/living/silicon/robot/R, user = usr) + . = ..() + if (.) + for(var/obj/item/pipe_dispenser/bluespace/BD in R.module) // Skyrat edit + R.module.remove_module(BD, TRUE) + + var/obj/item/pipe_dispenser/PD = new (R.module) + R.module.basic_modules += PD + R.module.add_module(PD, FALSE, TRUE) diff --git a/sandcode/code/modules/atmospherics/machinery/pipes/bluespace.dm b/sandcode/code/modules/atmospherics/machinery/pipes/bluespace.dm new file mode 100644 index 000000000000..0be835803181 --- /dev/null +++ b/sandcode/code/modules/atmospherics/machinery/pipes/bluespace.dm @@ -0,0 +1,103 @@ +GLOBAL_LIST_EMPTY(bluespace_pipe_networks) +/obj/machinery/atmospherics/pipe/bluespace + name = "bluespace pipe" + desc = "Transmits gas across large distances of space. Developed using bluespace technology. Use a multitool on it to set its network." + icon = 'sandcode/icons/obj/atmospherics/pipes/bluespace.dmi' + icon_state = "blue_map-2" + pipe_state = "bluespace" + dir = SOUTH + initialize_directions = SOUTH + device_type = UNARY + can_buckle = FALSE + construction_type = /obj/item/pipe/bluespace/directional + var/bluespace_network_name + +/obj/machinery/atmospherics/pipe/bluespace/New() + icon_state = "map" + if(bluespace_network_name) // in case someone maps one in for some reason + if(!GLOB.bluespace_pipe_networks[bluespace_network_name]) + GLOB.bluespace_pipe_networks[bluespace_network_name] = list() + GLOB.bluespace_pipe_networks[bluespace_network_name] |= src + ..() + +/obj/machinery/atmospherics/pipe/bluespace/on_construction() + . = ..() + if(bluespace_network_name) + if(!GLOB.bluespace_pipe_networks[bluespace_network_name]) + GLOB.bluespace_pipe_networks[bluespace_network_name] = list() + GLOB.bluespace_pipe_networks[bluespace_network_name] |= src + +/obj/machinery/atmospherics/pipe/bluespace/Destroy() + if(GLOB.bluespace_pipe_networks[bluespace_network_name]) + GLOB.bluespace_pipe_networks[bluespace_network_name] -= src + for(var/p in GLOB.bluespace_pipe_networks[bluespace_network_name]) + var/obj/machinery/atmospherics/pipe/bluespace/P = p + QDEL_NULL(P.parent) + P.build_network() + return ..() + +/obj/machinery/atmospherics/pipe/bluespace/examine(user) + . = ..() + to_chat(user, "This one is connected to the \"[html_encode(bluespace_network_name)]\" network") + +/obj/machinery/atmospherics/pipe/bluespace/SetInitDirections() + initialize_directions = dir + +/obj/machinery/atmospherics/pipe/bluespace/pipeline_expansion() + return ..() + GLOB.bluespace_pipe_networks[bluespace_network_name] - src + +/obj/machinery/atmospherics/pipe/bluespace/hide() + update_icon() + +/obj/machinery/atmospherics/pipe/bluespace/update_icon(showpipe) + underlays.Cut() + + var/turf/T = loc + if(level == 2 || !T.intact) + icon_state = "blue_map-2" + showpipe = TRUE + plane = GAME_PLANE + else + showpipe = FALSE + plane = FLOOR_PLANE + + if(!showpipe) + return //no need to update the pipes if they aren't showing +/* This shit aint in here + var/connected = 0 //Direction bitset + + for(var/i in 1 to device_type) //adds intact pieces + if(nodes[i]) + connected |= icon_addintact(nodes[i]) + + icon_addbroken(connected) //adds broken pieces//adds broken pieces +*/ + if(piping_layer == 1) + icon_state = "blue_map-1" + else if(piping_layer == 2) + icon_state = "blue_map-2" + else if(piping_layer == 3) + icon_state = "blue_map-3" + +/obj/machinery/atmospherics/pipe/bluespace/paint() + return FALSE + +/obj/machinery/atmospherics/pipe/bluespace/attackby(obj/item/W, mob/user, params) + if(istype(W, /obj/item/multitool)) + var/new_name = input(user, "Enter identifier for bluespace pipe network", "bluespace pipe", bluespace_network_name) as text|null + if(!isnull(new_name)) + bluespace_network_name = new_name + else + return + +/obj/machinery/atmospherics/pipe/bluespace/layer1 + piping_layer = 1 + icon_state = "blue_map-1" + +/obj/machinery/atmospherics/pipe/bluespace/layer2 + piping_layer = 2 + icon_state = "blue_map-2" + +/obj/machinery/atmospherics/pipe/bluespace/layer3 + piping_layer = 3 + icon_state = "blue_map-3" diff --git a/sandcode/code/modules/research/designs/mechfabricator_designs.dm b/sandcode/code/modules/research/designs/mechfabricator_designs.dm new file mode 100644 index 000000000000..a41bef3e5d5a --- /dev/null +++ b/sandcode/code/modules/research/designs/mechfabricator_designs.dm @@ -0,0 +1,8 @@ +/datum/design/borg_upgrade_bsrpd + name = "Cyborg Upgrade (Bluespace RPD)" + id = "borg_upgrade_bsrpd" + build_type = MECHFAB + build_path = /obj/item/borg/upgrade/bsrpd + materials = list(/datum/material/iron = 1000, /datum/material/glass = 1000, /datum/material/bluespace = 500) + construction_time = 100 + category = list("Cyborg Upgrade Modules") diff --git a/sandcode/code/modules/research/designs/tool_designs.dm b/sandcode/code/modules/research/designs/tool_designs.dm new file mode 100644 index 000000000000..a4b644d6d78a --- /dev/null +++ b/sandcode/code/modules/research/designs/tool_designs.dm @@ -0,0 +1,9 @@ +/datum/design/bsrpd + name = "Bluespace Rapid Pipe Dispenser" + desc = "A tool that can construct and deconstruct pipes on the fly." + id = "bsrpd" + build_type = PROTOLATHE + materials = list(/datum/material/iron = 75000, /datum/material/glass = 37500, /datum/material/bluespace = 1000) + build_path = /obj/item/pipe_dispenser/bluespace // Skyrat edit + category = list("Tool Designs") + departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING diff --git a/sandcode/code/modules/research/techweb/all_nodes.dm b/sandcode/code/modules/research/techweb/all_nodes.dm index 78fc61c28579..29908610da46 100644 --- a/sandcode/code/modules/research/techweb/all_nodes.dm +++ b/sandcode/code/modules/research/techweb/all_nodes.dm @@ -46,3 +46,8 @@ prereq_ids = list("alien_bio") design_ids = list("ci-toolset-adv","ci-surgery-adv") research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 5000) + +/datum/techweb_node/bluespace_portal/New() + design_ids += "borg_upgrade_bsrpd" + design_ids += "bsrpd" + . = ..() diff --git a/sandcode/code/modules/research/techweb/bluespace_nodes.dm b/sandcode/code/modules/research/techweb/bluespace_nodes.dm new file mode 100644 index 000000000000..a5878292a3bb --- /dev/null +++ b/sandcode/code/modules/research/techweb/bluespace_nodes.dm @@ -0,0 +1,4 @@ +/datum/techweb_node/bluespace_portal/New() + design_ids += "borg_upgrade_bsrpd" + design_ids += "bsrpd" + . = ..() diff --git a/sandcode/icons/mob/inhands/equipment/tools_lefthand.dmi b/sandcode/icons/mob/inhands/equipment/tools_lefthand.dmi new file mode 100644 index 0000000000000000000000000000000000000000..70a0ff4700f29a02dc69ecd68ced10d420209429 GIT binary patch literal 794 zcmV+#1LgdQP)IH%m4tH0L=dYX8!;)|1-@0GXVckRb((VMlp9u&hGDz$iHBzk{3i5UuJ&*ng27H z|E$2kI74TF>FWt-hk1vY0RR6WBQ1S21Z^z?;{^c4To3#R0yF>r)@2bhGylNA!0M|* zO8@`>0d!JMQvg8b*k%9#0DO8>Sad{Xb7OL8aCB*JZU6vyoKseCa&`CgQ*iP1C^0t`#5P2z$}P<)$t=mw&xubeN-QqMrCwRV)z1a&3;^R&DJ^i;rt$y)0oO@H zK~!jg?U(CvgCG!v1yqEz4PaYKOhSDBm+WHFi`J1PnM^yK{eEQP4toyZWjIAa5ClOG zzXszswTt8kURF!xy2csECN)B7wqz^orSeZi(g4J!ONdivn}j zdfKA&MQV>gzA}@Fv0Sq4W{Wa#jWg>bOvO1j?dNrCo;kOs-M+jc^o?tp=WpE$XkM0O zYr4y2XId#G*X9Kw58aJ(?yGxo2&-6Cb|1HackuYsOk<`WyM+_Zb*s05ajo8}@-14_ z($-RG8`fMNd_lK!N zf7l}(?D%6-2FLx(V1Gm!j0*@hv5r&!V~hF|N`F*_9I$GzJ1xz2xjJVEq7ca(FrWTf zb%wEEfz1K=Kn@rNbPmV|azF@Sz~+E_L~pOpi$&_3$l z@xTf>AcXuJkb{CV{ap>{Ku-_^LHrr;G2lvlbPTxG038Fac0k5}8^FbYTR_DCf*}4E Y@6~h_;Itlz=Kufz07*qoM6N<$f*llOMgRZ+ literal 0 HcmV?d00001 diff --git a/sandcode/icons/mob/inhands/equipment/tools_righthand.dmi b/sandcode/icons/mob/inhands/equipment/tools_righthand.dmi new file mode 100644 index 0000000000000000000000000000000000000000..99f0d2d58ff0dea025d2ff8cf10d7dda949ba147 GIT binary patch literal 769 zcmV+c1OEJpP)v@NnAR{epEdzZt1jSqr;{^cx2m;n+5x~H}4P;6o00001bW%=J z06^y0W&i*He0o$^bVOxyV{&P5bZKvH004NLQ&wpCl`?Wp02OPX z)LaP|KXFFQw27-Pm9n$|`Sdm8K4%bCAUYLByY3O$-&ZFFJH+~5&SjH%z zkQH5~b{KgGWw|M(vqen`73P89Y3dy!P)f-DP&Rd8?XGSJ0T2U0h_-H&QmCU0ggDgN zI_H|Y4F$~eJQT21kUYFa1z7U-m9YTXi@D5i7x*O|9Z_nSn(V-*e>Cxdz@NY0c#`xL<1c3HTPFTGArK8!T-R;xRtcztn&OJ;N{z^KR&5 zzhZqd*{^9pCi@j3ll^)O=NF$qLJz<&%qQ^+Pec+H`*(Hj00000NkvXXu0mjf*``%F literal 0 HcmV?d00001 diff --git a/sandcode/icons/obj/atmospherics/pipes/bluespace.dmi b/sandcode/icons/obj/atmospherics/pipes/bluespace.dmi new file mode 100644 index 0000000000000000000000000000000000000000..56d9a3ceada32ba88d12dab9e9e284d0e493061f GIT binary patch literal 1355 zcmV-R1+@B!P)004jp0{{R3ySV!Y0R8_h|IB8qtE+5mZ2y&EeSLi$9UWO& zS+umYgM)(~A0HeX9I~>qiHV7|wY7$Zh8h|gx3{;sxw#Du4KFV*B_$;j6BAxuUL+(W zxVX4tVqzH?85V=- z0C=2JR&a84_w-Y6@%7{?OD!tS%+FJ>RWQ*r;NmRLOex6#a*U0*I5Sc+(=$pSoZ^zi zl2jm5sUWi;Rf&r;C9|j)$Tj5ROe;#vO$D*dfTF26iIpH>9XLejOv))ujn7Ri&^1En zH$l>mO{pRAN{w+TRaS8Ia{>Dm0J{l8F7!jgt^fc7Ovy0 z&|8I(9Qkv>o zg!ZAq?VZvs(m_~%mfYO^NwO?Y{@mSYI|%H{21&*k&l9wRB;$-3ea7z1J};*B4-L|i zK?7EmNC)6U18(yFTCOk5J`7)AJ~XH*2mlQ#qyz8^=)&L^kdPaE4&xU_pQFCKgIYcz zR@c}a)`h$QgD(Tz8+;~Z^5F?{#NXFIUYKhvx728Eslgn60<+IiU(KRCH_x(we(?94 z{XIziOA`KDYw@F^qN1Xr!mF7t+K12~Oj^z#SHuH8QGbGqHR*ued_(&u?&i<51B&M5 zRfG;7uw(F04&Rm0vAL2DO+85%ZYr4;-X_m`n*9|p@ zUvK4e!z`;Tvvj17&SLEPk?%ox4H(~Jm-BzYmxTPc*rxES8N0%+_r?fT%x{$Q%|7}a z?QLb(6W{kX?;F|yyM9M|WB%E1Xa^)uuP6tkoNcd&{#+H&pQ|GJbJXuff0s^j`R&5! zeEN|*Y`A;{)Q_aLq-slyZ&`8QYd{?&RGWH*25~5$po4zX?=PSh67I3c0Sy|^9>=lC zzLkfWhCo92^AQaq0qeuTw-gQNWu_sJ5dM5bgGfN|_cx&R4~;y`Gz1dLCpe%%Bw(p- zpfo(eeSMczJsFY@0Z$>Jt;P<1f#c)ZP~TNmPln{jkxn3?ZI&MVEVK6wKTbXslFzhoeaqhBYAtrX3PPSn@4h9 z@2UDOt+N=1oNDEO4 zFZu9FcR$+XB_Lku?nj$E1;i@d{b-Y)fM}(=A8qm#5UF(cqfNd7B9-obw8>jQeWla* zk{BwT#<$p1=_FP&*Qs;|U8m9=bj3B(G+lAkIZ@YJw?{=qMMeE5`Ulq)Ag)%R{V@Ol N002ovPDHLkV1f=be}Vu2 literal 0 HcmV?d00001 diff --git a/sandcode/icons/obj/tools.dmi b/sandcode/icons/obj/tools.dmi index bbc7e1ce8194166916afaf9d24bd68df76999ba8..2a181409c6adb8c60e311ceebae34c0facbd2d6c 100644 GIT binary patch literal 1827 zcmV+;2i*9HP)HAXl?X8<$*>%AmURb;Hd zz+Yy6d54*~lMmVF;?SiKMviMScS#pS7rK-WD03PfUK28iBF^sbkI27$003qY5)wy8M_O81aBy&miHSu81sxzD47$gG>FWt-hYLMk@61&$ zE-oY_BwbuwR8&+%L_|hLMpac+C@3g6I5;#kG)YKNN=Z^YJ3~uKQ)XsnH#av-Rc%a5 zR7gfoRa0A3QCJ-s6@Phn3IzZV3j4hEQ*_{d=R$Y7ZGm|$06ct=K0L_$k0Ei)Am2o4DWVEFjR`1tsknD|H-go1)T zJw-u5N%&xx_+Vg?jEgZaH!w0eIz2=sFgGtfL@qc#E;&IjJw+@wJ}o#vE;m0dIY1~h zIxsy(B`-BBH$N>mKQ1{yEjd3eI6o{kJuNptG(t%*J3=oyLPbYUEI2V=-0C=30k;@K(Fc3x8^eYB1e=eirhv*9Qf#Ntr|Tl_u&%kxy9ABj*r&$<)gD4pc5aUCB{IiSymJ9YaZn*Fz=rrt6n17B`aBfw3n)K3$NGE0hc5a6P=O-} zf#x`F8g>{?{m|WZbp#Z9logL9lVUQNghMx-%mtXlL-PqtWH^v9gM>n%fq-Wp7LyC9 z#nb{Ex)IP!Vt#39K7q$6gC#H_x)}_qZVMK~q$sA6qCpEJDV@eYcpnjP!V*M?$73@b z2xzFx>}(kO4z%DXyS$uQTv=H$C{adA54KDua~$W9NBagLaRfRc8jXjc!)XpGk2j7E zALs*~Js~cqR##V(qa`}tyZJQUM~fsR5`rMaVj+CrTmVKC-U85o!6?E4@x;QS2!X?h zyO}Hqk3EjJFw_JW20ns=;VXO;&mQ|HEFW<>&z|URPnuo;e=9nZIQUfOHF)^n2r!q2 z;$j{dN9gqF97NN` z<8LS`I+Y(1JlEytHlKgt#g__Og_jFs7^DvWpx~8PUwi$HH`jA#-qPNFXREMPd^cyy zdGGxX&KmO59X=R_KK!uzrk&9~`uLOLr^U~Twt{o#&wl=eAzw;gF#WC4mz$fKhI_$| z4=woWYl9Y8^KrCq#_3==Yr$VHm&l%0U!F{y8ct`=h`m>{OpE3AC)iPY~1{{*(8_-cH^g;N>%@Dr+W2w z0)gy=k1DsCI}QDIop>VK3byO|AKSO<#5370Ua?^_sDRnEg(+eww+ z0b=B{e0y)dh4xJaY9=GgZQwikhBQjP-3GR)K+5Oyckbjfq_z|p002ovPDHLkV1m>5Fqi-U literal 472 zcmV;}0Vn>6P)^xswmjr4YK54=8gQ9$phNh$4o5CfUdbjkbh#mu~<7 zW)Tt+MFj;NARzC|RewZNRR9100d!JMQvg8b*k%9#0CRd&Sad{Xb7OL8aCB*JZU6vy zoKseCa&`CgQ*iP14pY&RX3%P$d({j=)F zNMxNr6yuQ*B88U_=s>{L0rz<#BGATCr0+!nRX8Coud7IzuT zJkNTv1w-!rAcmFM31%?558&+2(`LO6F+J9Mst?>|xq}b>nD9m2|974!PY0lG!U-Dy O0000