From 908678e8404fa0f6a3494f1f6aceba2dcb26884e Mon Sep 17 00:00:00 2001 From: Joachim Stolberg Date: Sat, 16 Sep 2023 21:03:46 +0200 Subject: [PATCH] Add new assembly tool --- basic_machines/autocrafter.lua | 2 +- basis/command.lua | 12 ++ doc/manual_ta3_DE.lua | 14 ++- doc/manual_ta3_EN.lua | 12 ++ init.lua | 3 +- locale/techage.de.tr | 57 +++------ locale/template.txt | 35 +++--- manuals/manual_ta3_DE.md | 13 +- manuals/manual_ta3_EN.md | 12 ++ power/powerswitch.lua | 2 +- sounds/techage_tool1.ogg | Bin 0 -> 7190 bytes sounds/techage_tool2.ogg | Bin 0 -> 7678 bytes tools/assembly_tool.lua | 161 ++++++++++++++++++++++++ tools/{repairkit.lua => end_wrench.lua} | 39 +----- 14 files changed, 265 insertions(+), 97 deletions(-) create mode 100644 sounds/techage_tool1.ogg create mode 100644 sounds/techage_tool2.ogg create mode 100644 tools/assembly_tool.lua rename tools/{repairkit.lua => end_wrench.lua} (89%) diff --git a/basic_machines/autocrafter.lua b/basic_machines/autocrafter.lua index 8618b38..ac804ea 100644 --- a/basic_machines/autocrafter.lua +++ b/basic_machines/autocrafter.lua @@ -3,7 +3,7 @@ TechAge ======= - Copyright (C) 2019-2020 Joachim Stolberg + Copyright (C) 2019-2023 Joachim Stolberg AGPL v3 See LICENSE.txt for more information diff --git a/basis/command.lua b/basis/command.lua index 584adbe..85ee760 100644 --- a/basis/command.lua +++ b/basis/command.lua @@ -283,6 +283,18 @@ function techage.pack_node(pos, oldnode, number) end end +------------------------------------------------------------------- +-- Used by the assembly tool +------------------------------------------------------------------- +function techage.pre_add_node(pos, number) + local key = minetest.hash_node_position(pos) + NumbersToBeRecycled[key] = number +end + +function techage.post_remove_node(pos) + local key = minetest.hash_node_position(pos) + NumbersToBeRecycled[key] = nil +end ------------------------------------------------------------------- -- Node register function diff --git a/doc/manual_ta3_DE.lua b/doc/manual_ta3_DE.lua index f2f7b8b..2fbda2d 100644 --- a/doc/manual_ta3_DE.lua +++ b/doc/manual_ta3_DE.lua @@ -84,7 +84,8 @@ return { "3,TechAge Programmer", "3,TechAge Kelle / Trowel", "3,TA3 Bohrgestängezange / TA3 Drill Pipe Wrench", - "3,Techage Schraubendreher", + "3,Techage Schraubendreher / Screwdriver", + "3,TechAge Montagewerkzeug / Assembly Tool", }, texts = { "Bei TA3 gilt es\\, die Dampf-betriebenen Maschinen durch leistungsfähigere und mit elektrischem Strom betriebene Maschinen abzulösen.\n".. @@ -741,6 +742,15 @@ return { "\n".. "\n".. "\n", + "Das TechAge Montagewerkzeug dient zum Entfernen und wieder Setzen von Techage Blöcken\\, ohne dass diese Blöcke ihre Blocknummer verlieren\\, bzw. beim Setzen eine neue Nummer zugeteilt bekommen. Dies ist bspw. bei Steinbrechern hilfreich\\, da diese oft umgesetzt werden müssen.\n".. + "\n".. + " - Linke Taste: Entfernen eines Blocks\n".. + " - Rechte Taste: Setzen eines Blocks\n".. + "\n".. + "Der Block\\, der zuvor mit dem Montagewerkzeug entfernt wurde und wieder gesetzt werden soll\\, muss sich im Spieler-Inventar ganz links befinden.\n".. + "\n".. + "\n".. + "\n", }, images = { "techage_ta3", @@ -828,6 +838,7 @@ return { "ta3_trowel", "ta3_drill_pipe_wrench", "ta3_screwdriver", + "techage:assembly_tool", }, plans = { "", @@ -915,5 +926,6 @@ return { "", "", "", + "", } } \ No newline at end of file diff --git a/doc/manual_ta3_EN.lua b/doc/manual_ta3_EN.lua index fcd2c3e..2ea25d7 100644 --- a/doc/manual_ta3_EN.lua +++ b/doc/manual_ta3_EN.lua @@ -85,6 +85,7 @@ return { "3,TechAge Trowel / Trowel", "3,TA3 drill pipe wrench", "3,Techage Screwdriver", + "3,TechAge Assembly Tool", }, texts = { "At TA3 it is important to replace the steam-powered machines with more powerful and electric-powered machines.\n".. @@ -738,6 +739,15 @@ return { "\n".. " \n".. "\n", + "The TechAge Assembly Tool is used to remove and reposition Techage blocks without these blocks losing their block number or being assigned a new number when setting. This is helpful\\, for example\\, for quarries\\, as they often have to be moved.\n".. + "\n".. + " - Left button: Remove a block\n".. + " - Right button: Set a block\n".. + "\n".. + "The block that was previously removed with the assembly tool and is to be placed again must be on the far left of the player inventory.\n".. + "\n".. + "\n".. + "\n", }, images = { "techage_ta3", @@ -825,6 +835,7 @@ return { "ta3_trowel", "ta3_drill_pipe_wrench", "ta3_screwdriver", + "techage:assembly_tool", }, plans = { "", @@ -912,5 +923,6 @@ return { "", "", "", + "", } } \ No newline at end of file diff --git a/init.lua b/init.lua index fc1c391..eb3491e 100644 --- a/init.lua +++ b/init.lua @@ -226,7 +226,8 @@ dofile(MP.."/furnace/recipes.lua") -- Tools dofile(MP.."/tools/trowel.lua") -dofile(MP.."/tools/repairkit.lua") +dofile(MP.."/tools/end_wrench.lua") +dofile(MP.."/tools/assembly_tool.lua") dofile(MP.."/tools/pipe_wrench.lua") dofile(MP.."/basic_machines/blackhole.lua") dofile(MP.."/basic_machines/forceload.lua") diff --git a/locale/techage.de.tr b/locale/techage.de.tr index b1f05be..6a40183 100644 --- a/locale/techage.de.tr +++ b/locale/techage.de.tr @@ -21,6 +21,10 @@ Red Mud Canister=Rotschlamm Kanister [TA] Area is protected!=[TA] Bereich ist geschützt [TA] Not enough space!=[TA] Nicht ausreichend Platz! +### assembly_tool.lua ### + +TechAge Assembly Tool=TechAge Montagewerkzeug + ### autocrafter.lua ### Autocrafter=Autocrafter @@ -482,6 +486,21 @@ TA2 Ele Fab=TA2 E-Fabrik TA3 Ele Fab=TA3 E-Fabrik TA4 Ele Fab=TA4 E-Fabrik +### end_wrench.lua ### + +Biome=Biom +Node owner=Blockbesitzer +Position=Position +Position temperature=Positionstemperatur +Pump connected to no/empty tank(s).=Pumpe an keine/leere Tank(s) angeschlossen. +Pump connected to tank(s) with: @1=Pumpe an Tank(s) angeschlossen mit: @1 +TechAge Info Tool (use @= read status info)=TechAge Info Werkzeug + +### end_wrench.lua ### +### meltingpot.lua ### + +Time=Zeit + ### epoxy.lua ### Epoxide Resin=Epoxidharz @@ -912,11 +931,6 @@ TA1 Burning=TA1 Brennen TA1 Melting=TA1 Schmelzen TA1 Melting Pot=TA1 Schmelztiegel -### meltingpot.lua ### -### repairkit.lua ### - -Time=Zeit - ### meridium.lua ### Meridium Axe=Meridium Axt @@ -1173,17 +1187,6 @@ Red Stone=Rotstein Red Stone Block=Rotsteinblock Red Stone Brick=Rotsteinziegel -### repairkit.lua ### - -Biome=Biom -Node owner=Blockbesitzer -Position=Position -Position temperature=Positionstemperatur -Pump connected to no/empty tank(s).=Pumpe an keine/leere Tank(s) angeschlossen. -Pump connected to tank(s) with: @1=Pumpe an Tank(s) angeschlossen mit: @1 -TechAge Info Tool (use @= read status info)=TechAge Info Werkzeug -TechAge Repair Kit=TechAge Reparaturset - ### repeater.lua ### TA3 Repeater=TA3 Wiederholer @@ -1572,25 +1575,3 @@ Remove detector=Entferne Detektor TA4 Collider Detector Worker=TA4 Collider Detektor Worker [TA4] Detector is being built!=[TA4] Detektor wird gebaut! [TA4] Detector is being removed!=[TA4] Detektor wird entfernt! - - -##### not used anymore ##### - -No plan available=Kein Plan verfügar -Plan=Plan -Sectional view=Schnittbild -Side view=Seitenansicht -Top view=Draufsicht -Blocks are back=Blöcke sind wieder da -Blocks are disappeared=Blöcke sind verschwunden -Remove=Entfernen -Set=Setzen -Commands@nhelp . . . print this text@ncls . . . . . clear screen@ngen . . . . print all generators@nsto . . . . . print all storage systems@ncon . . . . . print main consumers@n=Kommandos@nhelp . . . diesen Text ausgeben@ncls . . . . . Bildschirm löschen@ngen . . . . Alle Generatoren ausgeben@nsto . . . . . Alle Speichersysteme ausgeben@ncon . . . . . Hauptverbraucher ausgeben@n -Handover to A=Übergabe an A -Handover to B=Übergabe an B -Number of the next movecontroller=Nummer des nächsten Move Controllers -Number of the previous movecontroller=Nummer des vorhergehenden Move Controllers -TechAge Signal Lamp=TechAge Signallampe -TechAge Signal Lamp 2 =TechAge Signallampe 2 -TA4 Collider Terminal=TA4 Collider Terminal -Error: Max. length of the flight route exceeded !!=Fehler: Max. Flugstreckenlänge überschritten !! diff --git a/locale/template.txt b/locale/template.txt index 0ad7e28..466b0d7 100644 --- a/locale/template.txt +++ b/locale/template.txt @@ -21,6 +21,10 @@ Red Mud Canister= [TA] Area is protected!= [TA] Not enough space!= +### assembly_tool.lua ### + +TechAge Assembly Tool= + ### autocrafter.lua ### Autocrafter= @@ -482,6 +486,21 @@ TA2 Ele Fab= TA3 Ele Fab= TA4 Ele Fab= +### end_wrench.lua ### + +Biome= +Node owner= +Position= +Position temperature= +Pump connected to no/empty tank(s).= +Pump connected to tank(s) with: @1= +TechAge Info Tool (use @= read status info)= + +### end_wrench.lua ### +### meltingpot.lua ### + +Time= + ### epoxy.lua ### Epoxide Resin= @@ -912,11 +931,6 @@ TA1 Burning= TA1 Melting= TA1 Melting Pot= -### meltingpot.lua ### -### repairkit.lua ### - -Time= - ### meridium.lua ### Meridium Axe= @@ -1173,17 +1187,6 @@ Red Stone= Red Stone Block= Red Stone Brick= -### repairkit.lua ### - -Biome= -Node owner= -Position= -Position temperature= -Pump connected to no/empty tank(s).= -Pump connected to tank(s) with: @1= -TechAge Info Tool (use @= read status info)= -TechAge Repair Kit= - ### repeater.lua ### TA3 Repeater= diff --git a/manuals/manual_ta3_DE.md b/manuals/manual_ta3_DE.md index fb7fafd..add85b4 100644 --- a/manuals/manual_ta3_DE.md +++ b/manuals/manual_ta3_DE.md @@ -886,7 +886,7 @@ Mit diesem Werkzeug lassen sich die Bohrgestängezange Blöcke wieder entfernen, [ta3_drill_pipe_wrench|image] -### Techage Schraubendreher +### Techage Schraubendreher / Screwdriver Der Techage Schraubendreher dient als Ersatz für den normalen Schraubendreher. Es besitzt folgende Funktionen: @@ -896,3 +896,14 @@ Der Techage Schraubendreher dient als Ersatz für den normalen Schraubendreher. - Shift+Rechtsklick: Die gespeicherte Ausrichtung auf den angeklickten Block anwenden [ta3_screwdriver|image] + +### TechAge Montagewerkzeug / Assembly Tool + +Das TechAge Montagewerkzeug dient zum Entfernen und wieder Setzen von Techage Blöcken, ohne dass diese Blöcke ihre Blocknummer verlieren, bzw. beim Setzen eine neue Nummer zugeteilt bekommen. Dies ist bspw. bei Steinbrechern hilfreich, da diese oft umgesetzt werden müssen. + +- Linke Taste: Entfernen eines Blocks +- Rechte Taste: Setzen eines Blocks + +Der Block, der zuvor mit dem Montagewerkzeug entfernt wurde und wieder gesetzt werden soll, muss sich im Spieler-Inventar ganz links befinden. + +[techage:assembly_tool|image] \ No newline at end of file diff --git a/manuals/manual_ta3_EN.md b/manuals/manual_ta3_EN.md index 82b5fcd..631083c 100644 --- a/manuals/manual_ta3_EN.md +++ b/manuals/manual_ta3_EN.md @@ -887,3 +887,15 @@ The Techage Screwdriver serves as a replacement for the normal screwdriver. It h - Shift + right click: apply the saved alignment to the clicked block [ta3_screwdriver|image] + +### TechAge Assembly Tool + +The TechAge Assembly Tool is used to remove and reposition Techage blocks without these blocks losing their block number or being assigned a new number when setting. This is helpful, for example, for quarries, as they often have to be moved. + +- Left button: Remove a block +- Right button: Set a block + +The block that was previously removed with the assembly tool and is to be placed again must be on the far left of the player inventory. + +[techage:assembly_tool|image] + diff --git a/power/powerswitch.lua b/power/powerswitch.lua index 95378ab..9881524 100644 --- a/power/powerswitch.lua +++ b/power/powerswitch.lua @@ -275,7 +275,7 @@ techage.register_node({"techage:powerswitch", "techage:powerswitch_on", end, on_beduino_request_data = function(pos, src, topic, payload) local node = techage.get_node_lvm(pos) - if topic == 142 then + if topic == 131 or topic == 142 then if node.name == "techage:powerswitch_on" or node.name == "techage:powerswitchsmall_on" then return 0, {1} diff --git a/sounds/techage_tool1.ogg b/sounds/techage_tool1.ogg new file mode 100644 index 0000000000000000000000000000000000000000..705c42d4bf37b09ca3326357618fec13c6baf1e8 GIT binary patch literal 7190 zcmd5=}nqJ0z?c& ziXfsCsUjspsB$4d5LCRNVtFTczxTekUR!Uyf8Jg@JF{oc{+*fGGyBZ3^6{|+*nq!V z#9qQB7TL7;41h>LLNA7R_~BU$h+!4$4*;TCe*ZT@tXMn$wXt?Wz}a+bT*(2$U;o@x z_x#3D1D75Bf_;^&LVRF>ejfI_=rB{5s94;GKGL887P~+C^&J#T&-OFW!&Gj-8UUb4#llH!vGG-GfGPm&Es{%pCzpB* zk>+VCv?~Ih0u%t+g9S|Q3cPwOb^eXw`4K}KROFZj3bjSV&{!R&<|W8NJ!4Xy^WZS7 zgV#%#b3d9LfPpSDlIwu(`G?4FOx@B|d}@q0!dJd?i4c5rY{@i8erYKmKZuac z!*^*h^6^O_-YUMJTt1#Z#vA^dDtx)5A3$dDx)9|tmyCo#x!k%XeSeK{kSA0}Lij6n zg4EH)B~zTz7)T8wK#|>ne5f2BY{^0{*;;Z6GB^ZMr$ovl@CGd2zsdb}4`{Exutxl) za+t~e(i_6(68w6~IHpTqNcr-Ha90?Ymfl6K!qV-!OyLE;E$0LP$yfoTiDca0LxNLx2PX;^sH`T%S=QcsND8?&uq_kP{?H`60dVhed3=?gSTE38MQ7Z)i;Tx89A{HBL7) z1$&)&->A8jAZjcF<2;U?-om*b3Z332&TbPIXmRf7OzgkwzfA`%iGmt%{x;-+uxGyt zqv)Qs!9UD|fe&oA5$n7pWgH^)DoxS!p4$0Z-GLEZi_eBO0v027=Nt&B^ngGDENotu%QkhBWf>xRoq*$^N07O{PB$rgG zmAYV(CS{sgW?Hz2F7fs!`CK7CWZM-v!xCXNx!iYf(mQy`J4DGbvl6UR3CW)#mq%qb zQ~sx}v>V`e0O0jqu~&D+zyLP|3CON@!CYVif_b~|fI$yN{NFZOeFhzh8D{_I0{{SJ zsTW8^W4xMay50GDJBxa|^MWWV)c@4fEk@KVK*vghSqHRxqQNlHsE&Oke$_X<^H zBa?P8!}_C0F99Vo%RP{2wL6+>xSZc5XKev_z{eUg!IDNG;$i~O3EQ#S$5sV@NQl61durzxq3{K1Q@knji47{b8Y%v%g00;QvDSmxN5OO9T zh|*8fwfdxHldfhZaL$&1u~Ea&KIx8qHn&CT4cnn?QMd^^6gpFPNKJ3V4mG5P8Uv@` z-H~|?HHI4@66plgbS93zjd2zVwL#&g?J#sr6m1JLu@#9PCwhL;Mg3(yLev`}V8@6! zXCel(ZEl-sLCe675OMSjEG7&)v8_Hrz>J`<69mjeDAwT#2E7$ILX4Zuz`8nM(ZZpa z?Ko#z#v%bT?SOUAvs%8ME4wBD-?)~8B)VI5HYR}7}~h{NIDC7!VZHD1(7ih z7Id`cf_I**XA8Fr?)e(Ae19+Lf9TH6z}?_U~wyQ;W7~; z5;V=|Z{FbT-YDDY9T~%U=0r}TykjEeLR1DzU^1T_T6hluIHlH<$P}Q_B2E6@G<& zPPsn0BtJ40o=Z{m%k^_A^v=yK&msBdQUY>GRY@dxAIZO$>X%DhYo_8_D1r16zujqI zE=jS4T1ls@tu~jTNfqIRe*T3Z)UGh4GQ80LN}(^gP>xLYCzGqmWJPCiHFvp!B%1_s zNY%My`92bPlIllp2qcqnE#$RtR2;Jz)C5N+9nT~CvyiEZ^yU+wRxIRPMh*#7BQTe& z;9OXq%R*jCB!S?Hc_eagCL@OoBCjSE2J9mHPm=v|S;)upNb-FY+)f*_ml{MS2ZG2< zmXd*eZ5zGh^<4vZ)u0}yQ#bmkRXe)|veY0e^-*!6wSha$zPW#EB~Paw-)RQ5+UTWR ztRz=4S=04zlwfAF@>6Qy4!P=EvjV;OB2$&V6=?{DpshNN4(16Mf?HUSHLQknMxmTF zEXEqJU1>Wv$8#^6$tC`J8-#b)zjUm7s7awqjU85>B z7^x=Y=-Xok!1e%9%KIc^pa%OSWA7l%Bp;;ngV*&O_*!){5Rp^!ItM^yL5G}$m$BZt zyD#4VIGFrb3;*ekivJGkKi%=ag8zRYobg|~>i=RNH*hB@7`SugACYMS23fL=8N4e$ z2CA|o?D^VM4(`#9=n?}%aZxN5iu61Fq!*0QvQZ>12aj~R1qz*Hl$8lM4q@_;3>3`Hg*7~n&X#<8ZHl6I^q0c!A27|+U+*gLzcVBv)4)7~w%ImE$=8_XD1 zD#b$0|Sm8P}zbiRL6^#@)J_cqRNE)6~8#>SR0G7r>Ue zzle9~fBbSayL&?YLSt)fs=+nY5__2I^gT{mm}Io^s`?{eC@vMWi*5SW=jWmlGlm(5}e#Dum!2ckV^3MQH$ z0K1Gny5h&zg$w!z!Vz5BY~LI9-n#XRy=v`Qndnn-sK+gpcJv?DIT|#Ze5T$+{TV%c z$2LO9MVq}=&rT!c;^rV~v&G3>C-Oou)ZvUxf0s>QtL}Y+9N9&cTTZCQ3Kd1}A1yeJ ze_XzAF8u!H=iWl0wqEJ_N6xloS^KJnQUUx%S{?xFLG%7){ zS*IS#_X}I;AW7YNihKPv_N|(UEbkH8Wb{UtMX>|5tD^^R>qts4#P)PMm$j=0&B#AsM@%GT(^)RNMEy*2KSPe)I5MTTEk zJ(~Za8_~Sy=Oi{-2rjDrEM2@kTi2Pb-#tPKFv(Oljyv~Cltz6u8HU?F+3D@9Sw~td zE_XQb@?Ac`t@=>6$G|8a%ZL$z%hgL99KeoKdt~0G6>`bOnO3_EWlX-cuMBj-2tKoeLrt&8Jw&g zmV6ph&^(>D)I4jHAYr?zDxH?FQ{9r_s(dqR1hp_)5a3oVw59UKpvY{oTy^E)r1_>} zD(^vgh{N=PVD?EsW-h%&{MXA4&TBjx{N)F-zA8H%=(@aeH0t<>w?uCh_xmUH4$szh zY#DafTbst6ofs|hX&I&9*Xwv&a>GT@g$Y9jAu;86xoZD3DL-?@*vM}=QtsxZl+Z%y;I<9lNp{T-nF@h9~{k}qGM{UmjuiKxu` zWKb_&DQIe|!1Sh0h)wjM;850KQ&Ac1`+|KQu7w@7BH1Z*cJUYZaGFb`7%w_+YTjsL z=e*a~;MMHX-~<(@`ifpG9f+R`_k(uGT$^0vI_P!M-s{7cY#z=Z&(W!eq3k2p||--yP%hO{`vUfZhqM zu3|%;Gz~=@hg>70R4h}AkLvSn3v)CC92EnKNc-IRV@zCR8iQ_Qej)Bx*T1s9u5y&0lJ-Yj_MczqzeF~Ns4lu9yx064Gd9a=(CUjO#6act_0SmZW64W7_9L-gLZsr` zM>vvOx#Ol{xnMtKBV2{AcWZr@^qKr3Bxu`OaVGW8_xp?vp2;!n`>Oopty+*!%=VsZ zlLL^0glNd+Yt2CfRSpwizlE@h8M<;txR6P|^6v97N|?ioGD%+xnV&ihewKlkOy1b@ z{aL!wDz($76b46~>&mm^m1$@UtRe4<&ToyVIrt;`_Q-OigtcaMl->%S`y!sdlgMdF zG-Ob2Yd<#|U<-1G%e~0#XwZ0h$~j+^?G%rFeP!kw!=a-1dn&r}Os8nSRRO>{>uxNS z^Jjj^#i=( zxRN$R{0~3QF;mkjwzt0#cHP>zb7(egBzqtfGBV*ZH1*I9qQPmOM}s8}mSv$dmNhHh zOSC!Lm%Z}MFgp00Z|%*H>`gC2T;U@rQ-#ipPV_@512+c*gD%!yaOLS**!pgFz&4-e zY9@O2vzK~+LG--D2XQM>tm!0shsSMqHw}dykBIk8`-#)>V|%YR8Q1kS2|SYKou#|n z1+t`db>{SGlCdeC-?QqU8m|Wp#jd4j;4i+b6X#z~IAp$mWlEb}slj1QZ)dXN8YJ{E zUzuapnW(6b&wkPw&(iV7yU(`K*9T(7rV}HvaWcapPMHIr>diUp*m$GPvEN>JzFjJXE1Vx-jvuV{!S?lE^j zrAzQuwM5akWk8voz$6m!$eCysTUi{Ly zU!}T3$d;TTJ=(4EmvgZ3r+Y}`hSVY^x;An#+3@AN`+p$XH2Lh%23#9YoTJ~%;8K4? z4@S~^2zsr4q;7?c2=OrBb8q<5_v}@F%njw+4OA?>vOhKQk(hqCtzvoW9?w%rV5&cS z{M++oPUY@k9aEjGFEN+(9TUSJDw1 zxy;Dsz^?4aFLMVC$-|Yax4Ndv@1X@dvLK2UK0P&7BuL-O6JaaYiC@BL#iPCr^5for z4M(s`xgv&RwhxN(4;%Xq6&bky9HFjQ3WT20)DxEuwA4AE>xyuh|DhBj*>&Zrl~%>^ zR!9EfI=g}};^pzqq<{a@~+fos;^dfHG~eRJy!x&(*tJA4;or zp9DW9532|P5|j13Gu>WgRu)vr@(343)Qs*hdP4>9^sjo|pEV$rNxOjk3}1o<6iQIiA2g4*O&>FU;h+x%qSo<;=Z) zPU)Mn09R##@8wIUcN%pgRyCfYp8Z@;IpP@e2Nt>S$H)Xkc=SmOAb9kawT*r5@WLOq zUjo{Uus+72`&?tT_Y#VhKYJ*qzCL`y+fnAD(Y|^%i_o^5#ivuBMlbtnX^;EJJ`V9@ zM49urJ?cavLgK1#N;EY1E$21-w8Jsio-0^G_+;xd(gs_f@$m@-bn0r}dYd11cvhe0 zY%8Uzf|+|`5!|uof=2Gq?HxOb(|SWjbxv>Nx|s@#dk-Xe#3yhW_1@6;PvVKF0-iXr z>z{?7S}SsGlKHd8Y328l^PZor&BN64O-_nB8*c)qUZEb)PwKoo``qTnc}!B&6x6d# zQ7{MFGn@a5l$hUef=~0=k*jw__tkV(2F?-`Qr}kgx7>hUxy+B|SpB>*e0@Z4?t{@$ z!P%$dxOHWp-jd5-1^*Z;U)WC}e#&eNg;&lW-_#qqI5Iz`ru+VCYCC`DeYqcjDF-A@ zK$t{!09nbxwQm zYis}Mp@NYbk3a*)&Fp&+xs@?36Y=FZgO&+26?Z(ok1%k?M7OY-OLJ{PfWdi*)>=S> z$fxq;bC?dEPtt>(cOF?=e3~-M-M&bNAu#T>MXUR{Whnm8qWI$VQs7z-J1OYU*U|`h z;fx@x<-U@B(2&{*z}nASy(&7A2hEsV_*hTplHop+no9LnDc!FUnKEbXvMzc5g{cD5 zN)GPm{2=`L${2kpr6p{7&Qyon$8FT1=r+^cPgnP0m`ask?LCw-?;xAB{w0B=`?7;5 z&bG|#BYFKr+T6Zg>T*C^&jb25o#iNIS((zuK2jf%bqTlYf zT&F{4*ZrkuTDdxNzl+yh_ORPBJB4jTFv!t_ng~797BZEqW=Fo;Ce?h?>!jb@u+NF~ zl>NnD*uKW8e5!BXuz3ye+-QE^d~I*uYWRR}p09G5yMo)T+HT{%M z^-hwKs7#@R!RIcceR}*rW=TAjeRSa2*jEncpr5S{8vK0<4+D;=p3qcwj{2w(8a6K0 zfLUuT6cqJ!%wLpwo;K+8@${AD3DVk3tgW*{a#`62&c1KWZQOi;^_iy{QwE0F87*-% Qjst^k)=?8T*ykYs0`r6Z9smFU literal 0 HcmV?d00001 diff --git a/sounds/techage_tool2.ogg b/sounds/techage_tool2.ogg new file mode 100644 index 0000000000000000000000000000000000000000..8b4dc5dbf79d3c96a91f1ec77f34ec373430382d GIT binary patch literal 7678 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 ST94~jsg57BTT_4y0QfgoaI