From e961199fdb1c0ffb50e310263a23b807c336573c Mon Sep 17 00:00:00 2001 From: Food Date: Sun, 21 May 2017 21:49:32 -0400 Subject: [PATCH 01/74] Initial beach-language commit --- code/__DEFINES/DNA.dm | 1 + code/datums/mutations.dm | 17 ++++++++++++++ code/modules/awaymissions/corpse.dm | 4 ++++ code/modules/language/beachbum.dm | 21 ++++++++++++++++++ .../mob/living/carbon/human/status_procs.dm | 13 +++++++++++ code/modules/surgery/organs/tongue.dm | 1 + icons/misc/language.dmi | Bin 1675 -> 2383 bytes tgstation.dme | 1 + 8 files changed, 58 insertions(+) create mode 100644 code/modules/language/beachbum.dm diff --git a/code/__DEFINES/DNA.dm b/code/__DEFINES/DNA.dm index 53a1f09fa50..6d0f3e6ed23 100644 --- a/code/__DEFINES/DNA.dm +++ b/code/__DEFINES/DNA.dm @@ -23,6 +23,7 @@ #define WACKY "Wacky" #define MUT_MUTE "Mute" #define SMILE "Smile" +#define STONER "Stoner" #define UNINTELLIGABLE "Unintelligable" #define SWEDISH "Swedish" #define CHAV "Chav" diff --git a/code/datums/mutations.dm b/code/datums/mutations.dm index caab422e8b1..05e4f4d4582 100644 --- a/code/datums/mutations.dm +++ b/code/datums/mutations.dm @@ -608,6 +608,23 @@ GLOBAL_LIST_EMPTY(mutations_list) message = replacetext(message," muh valids "," getting my kicks ") return trim(message) +/datum/mutation/human/stoner + name = "Stoner" + quality = NEGATIVE + dna_block = NON_SCANNABLE + text_gain_indication = "You feel...totally chill, man!" + text_lose_indication = "You feel like you have a better sense of time." + +/datum/mutation/human/stoner/on_acquiring(mob/living/carbon/human/owner) + ..() + owner.grant_language(/datum/language/beachbum) + owner.remove_language(/datum/language/common) + +/datum/mutation/human/stoner/on_losing(mob/living/carbon/human/owner) + ..() + owner.grant_language(/datum/language/common) + owner.remove_language(/datum/language/beachbum) + /datum/mutation/human/laser_eyes name = "Laser Eyes" quality = POSITIVE diff --git a/code/modules/awaymissions/corpse.dm b/code/modules/awaymissions/corpse.dm index 6100b296ed4..0bda03c6675 100644 --- a/code/modules/awaymissions/corpse.dm +++ b/code/modules/awaymissions/corpse.dm @@ -377,6 +377,10 @@ icon_state = "sleeper" flavour_text = "You are a beach bum!" +/obj/effect/mob_spawn/human/beach/equip(mob/living/carbon/human/H) + ..() + H.dna.add_mutation(STONER) + /////////////////Officers+Nanotrasen Security////////////////////// /obj/effect/mob_spawn/human/bridgeofficer diff --git a/code/modules/language/beachbum.dm b/code/modules/language/beachbum.dm new file mode 100644 index 00000000000..e9e48e20c54 --- /dev/null +++ b/code/modules/language/beachbum.dm @@ -0,0 +1,21 @@ +/datum/language/beachbum + name = "Beach Bumbian" + desc = "For when you're too toasted to speak normally." + speech_verb = "mumbles" + ask_verb = "grills" + exclaim_verb = "hollers" + key = "u" + space_chance = 80 + default_priority = 1000 //Haha! + syllables = list("cowabunga", "rad", "radical", "dude", "bogus", + "dee", "dah", "woah", "surf", "blazed", "high", + "brah", "bro", "blown", "catch", "body", "beach", + "shiz", "phiz", "wizz", "pop", "chill", "awesome", + "wax", "soup", "glassy", "ding", "cruncher", "toke", + "cool", "hoo", "wah", "wee", "man", "maaaaaan", "mate", + "oh", "ocean", "up", "out", "rip", "slide", "big", + "weed", "pot", "smoke", "four-twenty", "shove", "wacky", + "sick", "slash", "spit", "stoked", "shallow", "gun", + "tail", "trim", "tube", "wobble", "roll", "gnarly") + + icon_state = "beach" diff --git a/code/modules/mob/living/carbon/human/status_procs.dm b/code/modules/mob/living/carbon/human/status_procs.dm index 4e80477e6bc..f1ff497a2a9 100644 --- a/code/modules/mob/living/carbon/human/status_procs.dm +++ b/code/modules/mob/living/carbon/human/status_procs.dm @@ -20,3 +20,16 @@ . = ..() if(.) update_hair() + +/mob/living/carbon/human/set_drugginess(amount) + ..() + if(!amount) + remove_language(/datum/language/beachbum) + +/mob/living/carbon/human/adjust_drugginess(amount) + ..() + if(!dna.check_mutation(STONER)) + if(druggy) + grant_language(/datum/language/beachbum) + else + remove_language(/datum/language/beachbum) diff --git a/code/modules/surgery/organs/tongue.dm b/code/modules/surgery/organs/tongue.dm index f2764ca386a..b69c1f4c5c0 100644 --- a/code/modules/surgery/organs/tongue.dm +++ b/code/modules/surgery/organs/tongue.dm @@ -17,6 +17,7 @@ /datum/language/codespeak, /datum/language/monkey, /datum/language/narsie, + /datum/language/beachbum, /datum/language/ratvar )) diff --git a/icons/misc/language.dmi b/icons/misc/language.dmi index 081bbf1aa3c0ef6f7e6b3989e29cd5314bddbcb3..f4894c2b90c0d864e1a2a80f2457ed507ebaba17 100644 GIT binary patch delta 2020 zcmV+bpa^!@ws`0uRu=2`dQH`$oN#xjz^C5r3o?d|RE@bK^V_U!lHHu&5L z_}&Kif7}M;;N{%H)y6oK!5@g@;N$PxZT8m=_SXva)(iC14)V|t-PYaJ%h$@j&cR-u zy+wY`#@6Z1R`AUg^3M|T&=T&+7}Lnq!nVe}r@FT?aKpOH=fEE6!yW6z8|}v$?Z_DI z#~J6sD9F3Zys^Nzth%=}aK*N(-nJ#-xFh7ee<9|+ALhLv+q+r8wZy)%z`L)#x2m|m zPJ&cP5X_k^(W5KYsVds8DB`#z;J7QxxxvS{#l*G2!L-4@vcJ)#Kh&l$*{v+zvn%Af zCfvMZ&cMvi!OPIV%gw#X$hgJexJlu;IODl6=e;WCz9-nkt<}iU)W*=!!_LdQ$ic6? zf9S(W=)ySb!z|~;SJ}+I6lJ@Mf_U>H8?u9YhuFro*pHExO?-N%18)*< z3HkAdkksnbp1WQ(mrhPd*`=tCYQNb^e=$2#?9%KGQdo3@Eo+kt6kN&*!B$M$p0<@7BJBVG1v*JYK~z|Uos|cC6IC3?e_uj! zX;UuOn55TX)kd2{ujjhBHCNX;4p3VnNbzFgChpyjBNS9r)VlZHilR6`MXk8^HV(us z4#bIqisS#@yYa3Rr1yXK)-}KH`;T{@BIM0{K6~khK7yH7Lkv$K;3Esr`LS+RPZMLqHtkK{x<mnd2M+$zjL=ghE3BYHDhR1|U0x5I7$Wf6)+J2_!`r z$&X|Ki1C243mFcZMRX_7PcMwiThA7CuUL-3Q zCV*5D4FXsf$-2s6_A0vpb{x(%a*UK9D#k)X{j;9=OMx( zg!)ED4=yBP5I`$<0D43TQE_e3+=-0X8E9lpAc31Xph*zpg18Pee<3cSL5QIMi5OD_ z;(;i}qhf;?jf)~;a&IM5aOv9w6eFpl1EGj5A}%DESpc$JVB~G23Oo#?(<*=q6d<~E z&H`?68!_uT^X3WGj6`O1?g3j&K^Vrz5OHiZ6)Pn$?~*8)8Hd@_~X z)KVyt;+zOO44`j7l;Py;W}9baEdYf&x%VDz|P@&lXg)Sw9p5F;l84NI; z#E0#7*m0+wHBH-P*WGqE^@=X(rVOV;O+!R@#6FCYM`y>#e|vPuW3r>=QTP{o?xks6 z(6n4P@gSX6Q~;<-n)nPlT>-VC0|Wfec8-+bH}XF?9k zRbAK9&~#nJ2pA<@QlP_M5bBwjN0~hSSC!A8{KOsrS!UU6aa(m2H8fy8wfLh!RZ8 z9e%`-M@>5Vm}ARjN8$Pw;A4;^*VlzlckH<1PdM?Ua+%Q&20$&{dc?W6s22=*x8B~9 zPdW9p-ik+gWpdw?sZ&lrh__dPT3y>Hh24-B7BdGMjxa~_^K zXZ9nH&YJt!;~oG{3_LmSsi&Wr_v~|XpMT*+4}h0me&yBI1_oY#E~a5UGm%SOTFk( zb=k5%{`_nC@+FIwdi@%z)xZDwcR|Ig99yO0RsJ8Im@5z)@!4kp0000 CB>?3B delta 1307 zcmV+$1?2kA5{nIx7Y;B80{{R3mX(Yx0004Nu_bQ-f9e-iVgLXD0d!JMQvg8b*k%9# z0J3^iSad{Xb7OL8aCB*JZU6vyoQ=}K3c@f92HH8?wXp4q=U3v28|L zHu3454!lXcCFJ9Wkd)?9Uz^TUZKG%8Pt# zmLx6RkYb=|i&cw4&@^7bTS>j*k=<2cao6n{e+2Kv`~LHN=bOxtE~~r!CUa5VXTD?d zql{h5YBja2qhB)S`w-)4G-|YfuFiFr)GW-h_#@4>ZR(}osR;mIh?7aE0T6Flcnm$6 z)HfV-8i;TgfUCD*mO)^);X$(jJqV2^>4ooV24I`?9AN}*L;*t6ahgJ3O`rhmY;W&a ze-@uC9fKT^f3C09h)}C0kV4?c?^pt487U|MHS)ejxoGfIn(-@uIN74vwl#rr=xBiB zYyxa;ZEXfH6@mljn~n&fl0YiLW%sfPV1@^_DrB=+7O|SZy0}DAzhfj(1Grw4QCtJV z{d!#%4G^tY1(5nCqM*UNNHP~CfGWw(e*xr0l2^HDUgau4#i6f}HY$OmUnZTvx{l%h z%y^wIV67G&-Y=}bo8ZA7L@(3|;CZ{S|3tJa09FM+{?INV)R%nUuc+Idwqj`KOMq9( zC85jpT~6qh`c8W<*y9YH0>hMke}A6{2VMWrKS1vuNPRDOIOtUfEfXN+FaU7&f6<}u z`iDpGLlAn81ZX{#hn9)(cK5X&E_8haa0CyaXM)fU9;H@IWJ_gW-!zW`FLNN05OloY zF*L6euycq_fUa*;fjkI;PCM8O+MOU^M($-Yy^8+WV?L!$3`7Zf0WT!YCV)v74EZrt z!NovbQ~@psKv2=?1#a;%nY_+!e|dtOSzwI%9+<`Sya#w0TH5YYaZiHrS)cX$?mZP7 z?C~eeU4P)Z19xa3LNvp|vP&Crz({Qe!zYIW7nH$M@}mgN(DO~C2q(-Q#qr3-Lg=3! zKJ%>moZBDvpO=axO7w}?ae(*)qLCesUwCmG+aubtmtKD5)z@BsW5P{3e~_XnKq8h= zBF;aBG=>3lNhIL30ty)tyUP8?4+o8fAH1UWff2Y_^fXd zg&>woK0sTrLT)G76l!?z&9~oeyayZ*D&F^utr)3Sv{4>R@2r1VD?yZ30Ox>A5K5c; z_|wn7-1+sl-`8ucsJsh!8KS82cJb4-{qg5tfB&;y8~XDA)Uv8)>K~4O0fjE41Fm8L R6#xJL07*qoM6N<$0fMd^ZcYFI diff --git a/tgstation.dme b/tgstation.dme index 8459c6bcc9f..bc8a3203879 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -1390,6 +1390,7 @@ #include "code\modules\jobs\job_types\security.dm" #include "code\modules\jobs\job_types\silicon.dm" #include "code\modules\jobs\map_changes\map_changes.dm" +#include "code\modules\language\beachbum.dm" #include "code\modules\language\codespeak.dm" #include "code\modules\language\common.dm" #include "code\modules\language\draconic.dm" From 326ea1d7bbbed7b7f7f0c8d6eaf3a54e5080cd90 Mon Sep 17 00:00:00 2001 From: Steelpoint Date: Mon, 22 May 2017 12:08:32 +0800 Subject: [PATCH 02/74] InitialCommit --- code/modules/projectiles/projectile/bullets.dm | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/code/modules/projectiles/projectile/bullets.dm b/code/modules/projectiles/projectile/bullets.dm index b6e9a143b53..f5acf003038 100644 --- a/code/modules/projectiles/projectile/bullets.dm +++ b/code/modules/projectiles/projectile/bullets.dm @@ -28,8 +28,8 @@ damage = 10 /obj/item/projectile/bullet/armourpiercing - damage = 17 - armour_penetration = 10 + damage = 15 + armour_penetration = 40 /obj/item/projectile/bullet/pellet name = "pellet" @@ -244,7 +244,7 @@ name = "\improper DNA injector" icon_state = "syringeproj" var/obj/item/weapon/dnainjector/injector - + /obj/item/projectile/bullet/dnainjector/on_hit(atom/target, blocked = 0) if(iscarbon(target)) var/mob/living/carbon/M = target From 6e60d8d6edc1caa22ea992bec8ada0a2c73d2267 Mon Sep 17 00:00:00 2001 From: Steelpoint Date: Mon, 22 May 2017 14:50:04 +0800 Subject: [PATCH 03/74] InitialCommit --- .../projectiles/guns/ballistic/automatic.dm | 2 ++ .../projectiles/guns/ballistic/shotgun.dm | 1 + sound/weapons/autoguninsert.ogg | Bin 0 -> 16218 bytes sound/weapons/shotguninsert.ogg | Bin 0 -> 11662 bytes 4 files changed, 3 insertions(+) create mode 100644 sound/weapons/autoguninsert.ogg create mode 100644 sound/weapons/shotguninsert.ogg diff --git a/code/modules/projectiles/guns/ballistic/automatic.dm b/code/modules/projectiles/guns/ballistic/automatic.dm index 6bf47605754..72e2bd33e95 100644 --- a/code/modules/projectiles/guns/ballistic/automatic.dm +++ b/code/modules/projectiles/guns/ballistic/automatic.dm @@ -44,6 +44,8 @@ oldmag.update_icon() else to_chat(user, "You insert the magazine into \the [src].") + + playsound(user, 'sound/weapons/autoguninsert.ogg', 60, 1) chamber_round() A.update_icon() update_icon() diff --git a/code/modules/projectiles/guns/ballistic/shotgun.dm b/code/modules/projectiles/guns/ballistic/shotgun.dm index 5f376370d4b..918acd27a12 100644 --- a/code/modules/projectiles/guns/ballistic/shotgun.dm +++ b/code/modules/projectiles/guns/ballistic/shotgun.dm @@ -20,6 +20,7 @@ var/num_loaded = magazine.attackby(A, user, params, 1) if(num_loaded) to_chat(user, "You load [num_loaded] shell\s into \the [src]!") + playsound(user, 'sound/weapons/shotguninsert.ogg', 60, 1) A.update_icon() update_icon() diff --git a/sound/weapons/autoguninsert.ogg b/sound/weapons/autoguninsert.ogg new file mode 100644 index 0000000000000000000000000000000000000000..f68139968e0a64ca1ea0921aa46dcdc2f62447e8 GIT binary patch literal 16218 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 UHhy$C3gGe;!$<;H27LkkFI8?Q;{X5v literal 0 HcmV?d00001 diff --git a/sound/weapons/shotguninsert.ogg b/sound/weapons/shotguninsert.ogg new file mode 100644 index 0000000000000000000000000000000000000000..189324493cf7829aa1bb727fab56d055c38c692c GIT binary patch literal 11662 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 W=WQRwG6$qVD7>eiiP|5y{J#JP);9kD literal 0 HcmV?d00001 From 3e581638354ed24d1925800c73fb9a4fcdb50854 Mon Sep 17 00:00:00 2001 From: Food Date: Mon, 22 May 2017 14:51:07 -0400 Subject: [PATCH 04/74] Lowered the default priority and changed the syllables a little bit. --- code/modules/language/beachbum.dm | 25 +++++++++++++------------ 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/code/modules/language/beachbum.dm b/code/modules/language/beachbum.dm index e9e48e20c54..84c75c9ca41 100644 --- a/code/modules/language/beachbum.dm +++ b/code/modules/language/beachbum.dm @@ -5,17 +5,18 @@ ask_verb = "grills" exclaim_verb = "hollers" key = "u" - space_chance = 80 - default_priority = 1000 //Haha! - syllables = list("cowabunga", "rad", "radical", "dude", "bogus", - "dee", "dah", "woah", "surf", "blazed", "high", - "brah", "bro", "blown", "catch", "body", "beach", - "shiz", "phiz", "wizz", "pop", "chill", "awesome", - "wax", "soup", "glassy", "ding", "cruncher", "toke", - "cool", "hoo", "wah", "wee", "man", "maaaaaan", "mate", - "oh", "ocean", "up", "out", "rip", "slide", "big", - "weed", "pot", "smoke", "four-twenty", "shove", "wacky", - "sick", "slash", "spit", "stoked", "shallow", "gun", - "tail", "trim", "tube", "wobble", "roll", "gnarly") + space_chance = 85 + default_priority = 90 + syllables = list("cowabunga", "rad", "radical", "dudes", "bogus", "weeed", "every", + "dee", "dah", "woah", "surf", "blazed", "high", "heinous", "day", + "brah", "bro", "blown", "catch", "body", "beach", "oooo", "twenty", + "shiz", "phiz", "wizz", "pop", "chill", "awesome", "dude", "it", + "wax", "stoked", "yes", "ding", "way", "no", "wicked", "aaaa", + "cool", "hoo", "wah", "wee", "man", "maaaaaan", "mate", "wick", + "oh", "ocean", "up", "out", "rip", "slide", "big", "stomp", + "weed", "pot", "smoke", "four-twenty", "shove", "wacky", "hah", + "sick", "slash", "spit", "stoked", "shallow", "gun", "party", + "heavy", "stellar", "excellent", "triumphant", "babe", "four", + "tail", "trim", "tube", "wobble", "roll", "gnarly", "epic") icon_state = "beach" From 5132ae36671bd7cab37be192f90e1ec0947ef5aa Mon Sep 17 00:00:00 2001 From: kevinz000 Date: Tue, 23 May 2017 02:39:34 -0700 Subject: [PATCH 05/74] Update mapGeneratorModule.dm --- code/modules/procedural_mapping/mapGeneratorModule.dm | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/code/modules/procedural_mapping/mapGeneratorModule.dm b/code/modules/procedural_mapping/mapGeneratorModule.dm index 0ad35adddba..3a78d8385ed 100644 --- a/code/modules/procedural_mapping/mapGeneratorModule.dm +++ b/code/modules/procedural_mapping/mapGeneratorModule.dm @@ -9,14 +9,14 @@ var/allowAtomsOnSpace = FALSE -//Syncs the module up with it's mother +//Syncs the module up with its mother /datum/mapGeneratorModule/proc/sync(datum/mapGenerator/mum) mother = null if(mum) mother = mum -//Generates it's spawnable atoms and turfs +//Generates its spawnable atoms and turfs /datum/mapGeneratorModule/proc/generate() if(!mother) return @@ -143,4 +143,4 @@ /datum/mapGeneratorModule/denseLayer clusterCheckFlags = CLUSTER_CHECK_NONE spawnableAtoms = list(/atom = 75) - spawnableTurfs = list(/turf = 75) \ No newline at end of file + spawnableTurfs = list(/turf = 75) From b7fc79605833e6f34e3af3939d619882474a29a4 Mon Sep 17 00:00:00 2001 From: Steelpoint Date: Tue, 23 May 2017 18:45:15 +0800 Subject: [PATCH 06/74] InitialCommit --- _maps/map_files/TgStation/tgstation.2.1.3.dmm | 58 +++++++++++++------ 1 file changed, 40 insertions(+), 18 deletions(-) diff --git a/_maps/map_files/TgStation/tgstation.2.1.3.dmm b/_maps/map_files/TgStation/tgstation.2.1.3.dmm index 15442e66849..c9591ae0665 100644 --- a/_maps/map_files/TgStation/tgstation.2.1.3.dmm +++ b/_maps/map_files/TgStation/tgstation.2.1.3.dmm @@ -1147,6 +1147,10 @@ /obj/effect/turf_decal/bot{ dir = 2 }, +/obj/structure/window/reinforced{ + dir = 1; + layer = 2.9 + }, /turf/open/floor/plasteel{ dir = 2 }, @@ -1343,6 +1347,13 @@ /obj/effect/turf_decal/bot{ dir = 2 }, +/obj/structure/window/reinforced{ + dir = 1; + layer = 2.9 + }, +/obj/structure/window/reinforced{ + dir = 4 + }, /turf/open/floor/plasteel{ dir = 2 }, @@ -1361,6 +1372,13 @@ /obj/effect/turf_decal/bot{ dir = 2 }, +/obj/structure/window/reinforced{ + dir = 1; + layer = 2.9 + }, +/obj/structure/window/reinforced{ + dir = 8 + }, /turf/open/floor/plasteel{ dir = 2 }, @@ -54403,6 +54421,10 @@ /obj/effect/turf_decal/bot{ dir = 2 }, +/obj/structure/window/reinforced{ + dir = 1; + layer = 2.9 + }, /turf/open/floor/plasteel{ dir = 2 }, @@ -114113,11 +114135,11 @@ btp cbv ccq bns -cjD -cjD -cjD -cjD -cnj +aof +aof +aof +aof +amw aaa aaa aaa @@ -114370,13 +114392,13 @@ ckS bky ccq cds -cjD +aof ckt cly cmw -cnj -cnj -cnj +amw +amw +amw aaa aaa aaf @@ -114884,13 +114906,13 @@ cbg bTr cct cdu -cjG +aqx cku clz cmx -cnj -cnj -cnj +amw +amw +amw aaa aaa aaf @@ -115141,11 +115163,11 @@ bky bky bky bky -cjD -cjD -cjD -cjD -cnj +aof +aof +aof +aof +amw aaa aaa aaa From 0dc0598a263ea11353d86829d66b15bb2f9cad62 Mon Sep 17 00:00:00 2001 From: Steelpoint Date: Tue, 23 May 2017 19:23:45 +0800 Subject: [PATCH 07/74] InitialCommit --- _maps/shuttles/emergency_raven.dmm | 198 ++++++++++++++++++++++++++--- 1 file changed, 179 insertions(+), 19 deletions(-) diff --git a/_maps/shuttles/emergency_raven.dmm b/_maps/shuttles/emergency_raven.dmm index 7bf4708da7a..eeb1a3756b6 100644 --- a/_maps/shuttles/emergency_raven.dmm +++ b/_maps/shuttles/emergency_raven.dmm @@ -123,6 +123,7 @@ }, /area/shuttle/escape) "aw" = ( +/obj/machinery/light, /turf/open/floor/plasteel/darkblue/side, /area/shuttle/escape) "ax" = ( @@ -168,6 +169,10 @@ "aE" = ( /obj/structure/table/reinforced, /obj/item/weapon/defibrillator/loaded, +/obj/machinery/light{ + dir = 4; + icon_state = "tube1" + }, /turf/open/floor/plasteel/darkpurple/side{ dir = 4 }, @@ -216,6 +221,9 @@ id = "shuttleflash"; pixel_y = -23 }, +/obj/machinery/light{ + dir = 1 + }, /turf/open/floor/plasteel/darkblue/side{ tag = "icon-darkblue (NORTH)"; dir = 1 @@ -232,6 +240,9 @@ }, /area/shuttle/escape) "aM" = ( +/obj/machinery/light{ + dir = 1 + }, /turf/open/floor/plasteel/darkblue/side{ tag = "icon-darkblue (NORTH)"; dir = 1 @@ -412,6 +423,9 @@ pixel_y = 9 }, /obj/structure/closet/crate/internals, +/obj/machinery/light{ + dir = 1 + }, /turf/open/floor/plasteel/darkyellow/side{ tag = "icon-darkyellow (NORTHEAST)"; icon_state = "darkyellow"; @@ -516,6 +530,9 @@ pixel_y = 8 }, /obj/structure/table/reinforced, +/obj/machinery/light{ + dir = 8 + }, /turf/open/floor/plasteel/darkpurple/side{ dir = 8 }, @@ -918,6 +935,9 @@ /area/shuttle/escape) "ch" = ( /obj/structure/reagent_dispensers/fueltank, +/obj/machinery/light{ + dir = 8 + }, /turf/open/floor/plasteel/darkgreen/side{ dir = 9; icon_state = "darkgreen"; @@ -926,6 +946,10 @@ /area/shuttle/escape) "ci" = ( /obj/structure/reagent_dispensers/watertank, +/obj/machinery/light{ + dir = 4; + icon_state = "tube1" + }, /turf/open/floor/plasteel/darkgreen/side{ dir = 5 }, @@ -1040,9 +1064,9 @@ name = "Bridge Blast Shutters"; pixel_x = 0; pixel_y = -26; - req_access_txt = "150"; - pixel_x = 0 + req_access_txt = "19" }, +/obj/machinery/light, /turf/open/floor/plasteel/darkblue/side, /area/shuttle/escape) "cA" = ( @@ -1482,10 +1506,146 @@ pixel_x = 24; pixel_y = 0 }, +/obj/machinery/light{ + dir = 4; + icon_state = "tube1" + }, /turf/open/floor/plasteel/darkgreen/side{ dir = 4 }, /area/shuttle/escape) +"eC" = ( +/obj/machinery/light{ + dir = 4; + icon_state = "tube1" + }, +/turf/open/floor/plasteel/darkpurple/side{ + dir = 4 + }, +/area/shuttle/escape) +"eD" = ( +/obj/machinery/light{ + dir = 8 + }, +/turf/open/floor/mineral/plastitanium/brig{ + dir = 8; + floor_tile = /obj/item/stack/tile/plasteel; + icon_state = "darkred" + }, +/area/shuttle/escape) +"eE" = ( +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/plasteel/darkgreen/side{ + tag = "icon-darkgreen (NORTH)"; + icon_state = "darkgreen"; + dir = 1 + }, +/area/shuttle/escape) +"eF" = ( +/obj/machinery/light{ + dir = 8 + }, +/turf/open/floor/plasteel/darkgreen/side{ + dir = 8 + }, +/area/shuttle/escape) +"eG" = ( +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/plasteel/darkgreen/side{ + tag = "icon-darkgreen (NORTH)"; + icon_state = "darkgreen"; + dir = 1 + }, +/area/shuttle/escape) +"eH" = ( +/obj/machinery/light, +/turf/open/floor/plasteel/darkgreen/side, +/area/shuttle/escape) +"eI" = ( +/obj/machinery/light, +/turf/open/floor/plasteel/darkgreen/side, +/area/shuttle/escape) +"eJ" = ( +/obj/machinery/button/flasher{ + id = "cockpit_flasher"; + pixel_x = 6; + pixel_y = -24 + }, +/obj/machinery/light, +/turf/open/floor/mineral/titanium/blue, +/area/space) +"eK" = ( +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/plasteel/darkgreen/side{ + tag = "icon-darkgreen (NORTH)"; + icon_state = "darkgreen"; + dir = 1 + }, +/area/shuttle/escape) +"eL" = ( +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/plasteel/darkgreen/side{ + tag = "icon-darkgreen (NORTH)"; + icon_state = "darkgreen"; + dir = 1 + }, +/area/shuttle/escape) +"eM" = ( +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/plasteel/darkgreen/side{ + tag = "icon-darkgreen (NORTH)"; + icon_state = "darkgreen"; + dir = 1 + }, +/area/shuttle/escape) +"eN" = ( +/obj/machinery/light{ + dir = 4; + icon_state = "tube1" + }, +/turf/open/floor/plasteel/darkgreen/side{ + dir = 4 + }, +/area/shuttle/escape) +"eO" = ( +/obj/machinery/light{ + dir = 8 + }, +/turf/open/floor/plasteel/darkgreen/side{ + dir = 8 + }, +/area/shuttle/escape) +"eP" = ( +/obj/machinery/light, +/turf/open/floor/plasteel/darkgreen/side, +/area/shuttle/escape) +"eQ" = ( +/obj/machinery/light{ + dir = 4; + icon_state = "tube1" + }, +/turf/open/floor/plasteel/darkgreen/side{ + dir = 4 + }, +/area/shuttle/escape) +"eR" = ( +/obj/machinery/light, +/turf/open/floor/plasteel/darkgreen/side, +/area/shuttle/escape) +"eS" = ( +/obj/machinery/light, +/turf/open/floor/plasteel/darkgreen/side, +/area/shuttle/escape) (1,1,1) = {" aa @@ -1531,7 +1691,7 @@ cs ar aW bc -bc +eD bc bc bc @@ -1545,7 +1705,7 @@ cu bF be be -be +eO be be cd @@ -1604,19 +1764,19 @@ cu cu cs ar -br +eG aC -bz +eH ar bT bo -br +eK bZ ca aC bZ ca -bz +eR ab ch ar @@ -1636,7 +1796,7 @@ be be be be -be +eF be bG aC @@ -1712,13 +1872,13 @@ bP ar bU bo -br +eL bZ ca aC bZ ca -bz +eS ab ci ar @@ -1742,7 +1902,7 @@ bz cs bH bG -bz +eI cs cs cs @@ -1771,7 +1931,7 @@ bb bf bk cs -br +eE bz cs bI @@ -1884,9 +2044,9 @@ aa cs cs cs -br +eM aC -bz +eP cs cs cs @@ -1946,7 +2106,7 @@ bB cu ad ad -ad +eJ ad cu br @@ -2004,7 +2164,7 @@ ar aE aI aO -aV +eC aV bi bm @@ -2020,9 +2180,9 @@ cs bW aZ aZ +eN aZ -aZ -aZ +eQ aZ aZ ce From 7590e0aa7371cd314ad4e49a34e8a4c8c5c3458c Mon Sep 17 00:00:00 2001 From: Cyberboss Date: Tue, 23 May 2017 09:33:24 -0400 Subject: [PATCH 08/74] Fixes full controller recovery not restoring appropriate runlevel --- code/controllers/master.dm | 3 ++- code/controllers/subsystem/ticker.dm | 8 ++++++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/code/controllers/master.dm b/code/controllers/master.dm index 0f4ae021ad2..74847ed88ce 100644 --- a/code/controllers/master.dm +++ b/code/controllers/master.dm @@ -177,7 +177,8 @@ GLOBAL_REAL(Master, /datum/controller/master) = new to_chat(world, "[msg]") log_world(msg) - SetRunLevel(1) + if (!current_runlevel) + SetRunLevel(1) // Sort subsystems by display setting for easy access. sortTim(subsystems, /proc/cmp_subsystem_display) diff --git a/code/controllers/subsystem/ticker.dm b/code/controllers/subsystem/ticker.dm index dab36e8e33e..1ade9be2471 100644 --- a/code/controllers/subsystem/ticker.dm +++ b/code/controllers/subsystem/ticker.dm @@ -719,6 +719,14 @@ SUBSYSTEM_DEF(ticker) cinematic = SSticker.cinematic maprotatechecked = SSticker.maprotatechecked + switch (current_state) + if(GAME_STATE_SETTING_UP) + Master.SetRunLevel(RUNLEVEL_SETUP) + if(GAME_STATE_PLAYING) + Master.SetRunLevel(RUNLEVEL_GAME) + if(GAME_STATE_FINISHED) + Master.SetRunLevel(RUNLEVEL_POSTGAME) + /datum/controller/subsystem/ticker/proc/send_news_report() var/news_message var/news_source = "Nanotrasen News Network" From 58110af21b4c5d0df60f0cf83da63a0f2db9217b Mon Sep 17 00:00:00 2001 From: Cyberboss Date: Tue, 23 May 2017 09:41:10 -0400 Subject: [PATCH 09/74] Fixes cryo radios --- .../atmospherics/machinery/components/unary_devices/cryo.dm | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/code/modules/atmospherics/machinery/components/unary_devices/cryo.dm b/code/modules/atmospherics/machinery/components/unary_devices/cryo.dm index 40f9781fdbd..e94455e178a 100644 --- a/code/modules/atmospherics/machinery/components/unary_devices/cryo.dm +++ b/code/modules/atmospherics/machinery/components/unary_devices/cryo.dm @@ -26,10 +26,10 @@ var/radio_key = /obj/item/device/encryptionkey/headset_med var/radio_channel = "Medical" -/obj/machinery/atmospherics/components/unary/cryo_cell/New() - ..() +/obj/machinery/atmospherics/components/unary/cryo_cell/Initialize() + . = ..() initialize_directions = dir - var/obj/item/weapon/circuitboard/machine/B = new /obj/item/weapon/circuitboard/machine/cryo_tube(null) + var/obj/item/weapon/circuitboard/machine/cryo_tube/B = new B.apply_default_parts(src) radio = new(src) From 181eb89a19a294871b6ab2b19cf102531a0f0e28 Mon Sep 17 00:00:00 2001 From: Joan Lung Date: Tue, 23 May 2017 09:50:41 -0400 Subject: [PATCH 10/74] Splits equipment.dm into several component files --- code/game/objects/structures/signs.dm | 6 + code/modules/mining/equipment.dm | 557 ------------------ .../modules/mining/equipment/explorer_gear.dm | 48 ++ .../mining/equipment/kinetic_crusher.dm | 86 +++ .../mining/equipment/lazarus_injector.dm | 61 ++ .../mining/equipment/mineral_scanner.dm | 79 +++ code/modules/mining/equipment/resonator.dm | 120 ++++ code/modules/mining/equipment/vendor_items.dm | 33 ++ .../mining/equipment/wormhole_jaunter.dm | 109 ++++ tgstation.dme | 8 +- 10 files changed, 549 insertions(+), 558 deletions(-) delete mode 100644 code/modules/mining/equipment.dm create mode 100644 code/modules/mining/equipment/explorer_gear.dm create mode 100644 code/modules/mining/equipment/kinetic_crusher.dm create mode 100644 code/modules/mining/equipment/lazarus_injector.dm create mode 100644 code/modules/mining/equipment/mineral_scanner.dm create mode 100644 code/modules/mining/equipment/resonator.dm create mode 100644 code/modules/mining/equipment/vendor_items.dm create mode 100644 code/modules/mining/equipment/wormhole_jaunter.dm diff --git a/code/game/objects/structures/signs.dm b/code/game/objects/structures/signs.dm index 228093b5d9e..6de25ff92f5 100644 --- a/code/game/objects/structures/signs.dm +++ b/code/game/objects/structures/signs.dm @@ -246,6 +246,12 @@ desc = "A sign labelling an area as a place where xenobiological entities are researched." icon_state = "xenobio" +/obj/structure/sign/xeno_warning_mining + name = "DANGEROUS ALIEN LIFE" + desc = "A sign that warns would-be travellers of hostile alien life in the vicinity." + icon = 'icons/obj/mining.dmi' + icon_state = "xeno_warning" + /obj/structure/sign/enginesafety name = "\improper ENGINEERING SAFETY" desc = "A sign detailing the various safety protocols when working on-site to ensure a safe shift." diff --git a/code/modules/mining/equipment.dm b/code/modules/mining/equipment.dm deleted file mode 100644 index a9315b7bea4..00000000000 --- a/code/modules/mining/equipment.dm +++ /dev/null @@ -1,557 +0,0 @@ -/****************Explorer's Suit**************************/ - -/obj/item/clothing/suit/hooded/explorer - name = "explorer suit" - desc = "An armoured suit for exploring harsh environments." - icon_state = "explorer" - item_state = "explorer" - body_parts_covered = CHEST|GROIN|LEGS|ARMS - min_cold_protection_temperature = FIRE_SUIT_MIN_TEMP_PROTECT - cold_protection = CHEST|GROIN|LEGS|ARMS - max_heat_protection_temperature = FIRE_SUIT_MAX_TEMP_PROTECT - heat_protection = CHEST|GROIN|LEGS|ARMS - hoodtype = /obj/item/clothing/head/hooded/explorer - armor = list(melee = 30, bullet = 20, laser = 20, energy = 20, bomb = 50, bio = 100, rad = 50, fire = 50, acid = 50) - allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank/internals, /obj/item/weapon/resonator, /obj/item/device/mining_scanner, /obj/item/device/t_scanner/adv_mining_scanner, /obj/item/weapon/gun/energy/kinetic_accelerator, /obj/item/weapon/pickaxe) - resistance_flags = FIRE_PROOF - -/obj/item/clothing/head/hooded/explorer - name = "explorer hood" - desc = "An armoured hood for exploring harsh environments." - icon_state = "explorer" - body_parts_covered = HEAD - flags_inv = HIDEHAIR|HIDEFACE|HIDEEARS - min_cold_protection_temperature = FIRE_HELM_MIN_TEMP_PROTECT - max_heat_protection_temperature = FIRE_HELM_MAX_TEMP_PROTECT - armor = list(melee = 30, bullet = 20, laser = 20, energy = 20, bomb = 50, bio = 100, rad = 50, fire = 50, acid = 50) - resistance_flags = FIRE_PROOF - -/obj/item/clothing/mask/gas/explorer - name = "explorer gas mask" - desc = "A military-grade gas mask that can be connected to an air supply." - icon_state = "gas_mining" - visor_flags = BLOCK_GAS_SMOKE_EFFECT | MASKINTERNALS - visor_flags_inv = HIDEFACIALHAIR - visor_flags_cover = MASKCOVERSMOUTH - actions_types = list(/datum/action/item_action/adjust) - armor = list(melee = 10, bullet = 5, laser = 5, energy = 5, bomb = 0, bio = 50, rad = 0, fire = 20, acid = 40) - resistance_flags = FIRE_PROOF - -/obj/item/clothing/mask/gas/explorer/attack_self(mob/user) - adjustmask(user) - -/obj/item/clothing/mask/gas/explorer/adjustmask(user) - ..() - w_class = mask_adjusted ? WEIGHT_CLASS_NORMAL : WEIGHT_CLASS_SMALL - -/obj/item/clothing/mask/gas/explorer/folded/New() - ..() - adjustmask() - - -/**********************Mining Equipment Vendor Items**************************/ - -/**********************Jaunter**********************/ - -/obj/item/device/wormhole_jaunter - name = "wormhole jaunter" - desc = "A single use device harnessing outdated wormhole technology, Nanotrasen has since turned its eyes to blue space for more accurate teleportation. The wormholes it creates are unpleasant to travel through, to say the least.\nThanks to modifications provided by the Free Golems, this jaunter can be worn on the belt to provide protection from chasms." - icon = 'icons/obj/mining.dmi' - icon_state = "Jaunter" - item_state = "electronic" - throwforce = 0 - w_class = WEIGHT_CLASS_SMALL - throw_speed = 3 - throw_range = 5 - origin_tech = "bluespace=2" - slot_flags = SLOT_BELT - -/obj/item/device/wormhole_jaunter/attack_self(mob/user) - user.visible_message("[user.name] activates the [src.name]!") - SSblackbox.add_details("jaunter", "User") // user activated - activate(user) - -/obj/item/device/wormhole_jaunter/proc/turf_check(mob/user) - var/turf/device_turf = get_turf(user) - if(!device_turf||device_turf.z==2||device_turf.z>=7) - to_chat(user, "You're having difficulties getting the [src.name] to work.") - return FALSE - return TRUE - -/obj/item/device/wormhole_jaunter/proc/get_destinations(mob/user) - var/list/destinations = list() - - if(isgolem(user)) - for(var/obj/item/device/radio/beacon/B in GLOB.teleportbeacons) - var/turf/T = get_turf(B) - if(istype(T.loc, /area/ruin/powered/golem_ship)) - destinations += B - - // In the event golem beacon is destroyed, send to station instead - if(destinations.len) - return destinations - - for(var/obj/item/device/radio/beacon/B in GLOB.teleportbeacons) - var/turf/T = get_turf(B) - if(T.z == ZLEVEL_STATION) - destinations += B - - return destinations - -/obj/item/device/wormhole_jaunter/proc/activate(mob/user) - if(!turf_check(user)) - return - - var/list/L = get_destinations(user) - if(!L.len) - to_chat(user, "The [src.name] found no beacons in the world to anchor a wormhole to.") - return - var/chosen_beacon = pick(L) - var/obj/effect/portal/wormhole/jaunt_tunnel/J = new /obj/effect/portal/wormhole/jaunt_tunnel(get_turf(src), chosen_beacon, lifespan=100) - J.target = chosen_beacon - try_move_adjacent(J) - playsound(src,'sound/effects/sparks4.ogg',50,1) - qdel(src) - -/obj/item/device/wormhole_jaunter/emp_act(power) - var/triggered = FALSE - - if(usr.get_item_by_slot(slot_belt) == src) - if(power == 1) - triggered = TRUE - else if(power == 2 && prob(50)) - triggered = TRUE - - if(triggered) - usr.visible_message("The [src] overloads and activates!") - SSblackbox.add_details("jaunter","EMP") // EMP accidental activation - activate(usr) - -/obj/item/device/wormhole_jaunter/proc/chasm_react(mob/user) - if(user.get_item_by_slot(slot_belt) == src) - to_chat(user, "Your [src] activates, saving you from the chasm!") - SSblackbox.add_details("jaunter","Chasm") // chasm automatic activation - activate(user) - else - to_chat(user, "The [src] is not attached to your belt, preventing it from saving you from the chasm. RIP.") - - -/obj/effect/portal/wormhole/jaunt_tunnel - name = "jaunt tunnel" - icon = 'icons/effects/effects.dmi' - icon_state = "bhole3" - desc = "A stable hole in the universe made by a wormhole jaunter. Turbulent doesn't even begin to describe how rough passage through one of these is, but at least it will always get you somewhere near a beacon." - mech_sized = TRUE //save your ripley - -/obj/effect/portal/wormhole/jaunt_tunnel/teleport(atom/movable/M) - if(istype(M, /obj/effect)) - return - - if(M.anchored) - if(!(istype(M, /obj/mecha) && mech_sized)) - return - - if(istype(M, /atom/movable)) - if(do_teleport(M, target, 6)) - // KERPLUNK - playsound(M,'sound/weapons/resonator_blast.ogg',50,1) - if(iscarbon(M)) - var/mob/living/carbon/L = M - L.Weaken(3) - if(ishuman(L)) - shake_camera(L, 20, 1) - addtimer(CALLBACK(L, /mob/living/carbon.proc/vomit), 20) - -/**********************Resonator**********************/ - -/obj/item/weapon/resonator - name = "resonator" - icon = 'icons/obj/mining.dmi' - icon_state = "resonator" - item_state = "resonator" - desc = "A handheld device that creates small fields of energy that resonate until they detonate, crushing rock. It's more effective in a vacuum." - w_class = WEIGHT_CLASS_NORMAL - force = 15 - throwforce = 10 - var/burst_time = 30 - var/fieldlimit = 4 - var/list/fields = list() - var/quick_burst_mod = 0.8 - origin_tech = "magnets=3;engineering=3" - -/obj/item/weapon/resonator/upgraded - name = "upgraded resonator" - desc = "An upgraded version of the resonator that can produce more fields at once, as well as having no damage penalty for bursting a resonance field early." - icon_state = "resonator_u" - item_state = "resonator_u" - origin_tech = "materials=4;powerstorage=3;engineering=3;magnets=3" - fieldlimit = 6 - quick_burst_mod = 1 - -/obj/item/weapon/resonator/attack_self(mob/user) - if(burst_time == 50) - burst_time = 30 - to_chat(user, "You set the resonator's fields to detonate after 3 seconds.") - else - burst_time = 50 - to_chat(user, "You set the resonator's fields to detonate after 5 seconds.") - -/obj/item/weapon/resonator/proc/CreateResonance(target, mob/user) - var/turf/T = get_turf(target) - var/obj/effect/temp_visual/resonance/R = locate(/obj/effect/temp_visual/resonance) in T - if(R) - R.damage_multiplier = quick_burst_mod - R.burst() - return - if(LAZYLEN(fields) < fieldlimit) - new /obj/effect/temp_visual/resonance(T, user, src, burst_time) - user.changeNext_move(CLICK_CD_MELEE) - -/obj/item/weapon/resonator/pre_attackby(atom/target, mob/user, params) - if(check_allowed_items(target, 1)) - CreateResonance(target, user) - return TRUE - -/obj/effect/temp_visual/resonance - name = "resonance field" - desc = "A resonating field that significantly damages anything inside of it when the field eventually ruptures. More damaging in low pressure environments." - icon_state = "shield1" - layer = ABOVE_ALL_MOB_LAYER - duration = 50 - var/resonance_damage = 20 - var/damage_multiplier = 1 - var/creator - var/obj/item/weapon/resonator/res - -/obj/effect/temp_visual/resonance/Initialize(mapload, set_creator, set_resonator, set_duration) - duration = set_duration - . = ..() - creator = set_creator - res = set_resonator - if(res) - res.fields += src - playsound(src,'sound/weapons/resonator_fire.ogg',50,1) - transform = matrix()*0.75 - animate(src, transform = matrix()*1.5, time = duration) - deltimer(timerid) - timerid = addtimer(CALLBACK(src, .proc/burst), duration, TIMER_STOPPABLE) - -/obj/effect/temp_visual/resonance/Destroy() - if(res) - res.fields -= src - res = null - creator = null - . = ..() - -/obj/effect/temp_visual/resonance/proc/check_pressure(turf/proj_turf) - if(!proj_turf) - proj_turf = get_turf(src) - if(!istype(proj_turf)) - return - var/datum/gas_mixture/environment = proj_turf.return_air() - var/pressure = environment.return_pressure() - resonance_damage = initial(resonance_damage) - if(pressure < 50) - name = "strong [initial(name)]" - resonance_damage *= 3 - else - name = initial(name) - resonance_damage *= damage_multiplier - -/obj/effect/temp_visual/resonance/proc/burst() - var/turf/T = get_turf(src) - new /obj/effect/temp_visual/resonance_crush(T) - if(ismineralturf(T)) - var/turf/closed/mineral/M = T - M.gets_drilled(creator) - check_pressure(T) - playsound(T,'sound/weapons/resonator_blast.ogg',50,1) - for(var/mob/living/L in T) - if(creator) - add_logs(creator, L, "used a resonator field on", "resonator") - to_chat(L, "[src] ruptured with you in it!") - L.apply_damage(resonance_damage, BRUTE) - qdel(src) - -/obj/effect/temp_visual/resonance_crush - icon_state = "shield1" - layer = ABOVE_ALL_MOB_LAYER - duration = 4 - -/obj/effect/temp_visual/resonance_crush/Initialize() - . = ..() - transform = matrix()*1.5 - animate(src, transform = matrix()*0.1, alpha = 50, time = 4) - -/**********************Facehugger toy**********************/ - -/obj/item/clothing/mask/facehugger/toy - item_state = "facehugger_inactive" - desc = "A toy often used to play pranks on other miners by putting it in their beds. It takes a bit to recharge after latching onto something." - throwforce = 0 - real = 0 - sterile = 1 - tint = 3 //Makes it feel more authentic when it latches on - -/obj/item/clothing/mask/facehugger/toy/Die() - return - -/**********************Lazarus Injector**********************/ - -/obj/item/weapon/lazarus_injector - name = "lazarus injector" - desc = "An injector with a cocktail of nanomachines and chemicals, this device can seemingly raise animals from the dead, making them become friendly to the user. Unfortunately, the process is useless on higher forms of life and incredibly costly, so these were hidden in storage until an executive thought they'd be great motivation for some of their employees." - icon = 'icons/obj/syringe.dmi' - icon_state = "lazarus_hypo" - item_state = "hypo" - throwforce = 0 - w_class = WEIGHT_CLASS_SMALL - throw_speed = 3 - throw_range = 5 - var/loaded = 1 - var/malfunctioning = 0 - var/revive_type = SENTIENCE_ORGANIC //So you can't revive boss monsters or robots with it - origin_tech = "biotech=4;magnets=6" - -/obj/item/weapon/lazarus_injector/afterattack(atom/target, mob/user, proximity_flag) - if(!loaded) - return - if(isliving(target) && proximity_flag) - if(istype(target, /mob/living/simple_animal)) - var/mob/living/simple_animal/M = target - if(M.sentience_type != revive_type) - to_chat(user, "[src] does not work on this sort of creature.") - return - if(M.stat == DEAD) - M.faction = list("neutral") - M.revive(full_heal = 1, admin_revive = 1) - if(ishostile(target)) - var/mob/living/simple_animal/hostile/H = M - if(malfunctioning) - H.faction |= list("lazarus", "\ref[user]") - H.robust_searching = 1 - H.friends += user - H.attack_same = 1 - log_game("[user] has revived hostile mob [target] with a malfunctioning lazarus injector") - else - H.attack_same = 0 - loaded = 0 - user.visible_message("[user] injects [M] with [src], reviving it.") - SSblackbox.add_details("lazarus_injector", "[M.type]") - playsound(src,'sound/effects/refill.ogg',50,1) - icon_state = "lazarus_empty" - return - else - to_chat(user, "[src] is only effective on the dead.") - return - else - to_chat(user, "[src] is only effective on lesser beings.") - return - -/obj/item/weapon/lazarus_injector/emp_act() - if(!malfunctioning) - malfunctioning = 1 - -/obj/item/weapon/lazarus_injector/examine(mob/user) - ..() - if(!loaded) - to_chat(user, "[src] is empty.") - if(malfunctioning) - to_chat(user, "The display on [src] seems to be flickering.") - -/**********************Mining Scanners**********************/ - -/obj/item/device/mining_scanner - desc = "A scanner that checks surrounding rock for useful minerals; it can also be used to stop gibtonite detonations." - name = "manual mining scanner" - icon_state = "mining1" - item_state = "analyzer" - w_class = WEIGHT_CLASS_SMALL - flags = CONDUCT - slot_flags = SLOT_BELT - var/cooldown = 35 - var/current_cooldown = 0 - origin_tech = "engineering=1;magnets=1" - -/obj/item/device/mining_scanner/attack_self(mob/user) - if(!user.client) - return - if(current_cooldown <= world.time) - current_cooldown = world.time + cooldown - mineral_scan_pulse(get_turf(user)) - - -//Debug item to identify all ore spread quickly -/obj/item/device/mining_scanner/admin - -/obj/item/device/mining_scanner/admin/attack_self(mob/user) - for(var/turf/closed/mineral/M in world) - if(M.scan_state) - M.icon_state = M.scan_state - qdel(src) - -/obj/item/device/t_scanner/adv_mining_scanner - desc = "A scanner that automatically checks surrounding rock for useful minerals; it can also be used to stop gibtonite detonations. This one has an extended range." - name = "advanced automatic mining scanner" - icon_state = "mining0" - item_state = "analyzer" - w_class = WEIGHT_CLASS_SMALL - flags = CONDUCT - slot_flags = SLOT_BELT - var/cooldown = 35 - var/current_cooldown = 0 - var/range = 7 - origin_tech = "engineering=3;magnets=3" - -/obj/item/device/t_scanner/adv_mining_scanner/lesser - name = "automatic mining scanner" - desc = "A scanner that automatically checks surrounding rock for useful minerals; it can also be used to stop gibtonite detonations." - range = 4 - cooldown = 50 - -/obj/item/device/t_scanner/adv_mining_scanner/scan() - if(current_cooldown <= world.time) - current_cooldown = world.time + cooldown - var/turf/t = get_turf(src) - mineral_scan_pulse(t, range) - -/proc/mineral_scan_pulse(turf/T, range = world.view) - var/list/minerals = list() - for(var/turf/closed/mineral/M in range(range, T)) - if(M.scan_state) - minerals += M - if(LAZYLEN(minerals)) - for(var/turf/closed/mineral/M in minerals) - var/obj/effect/temp_visual/mining_overlay/oldC = locate(/obj/effect/temp_visual/mining_overlay) in M - if(oldC) - qdel(oldC) - var/obj/effect/temp_visual/mining_overlay/C = new /obj/effect/temp_visual/mining_overlay(M) - C.icon_state = M.scan_state - -/obj/effect/temp_visual/mining_overlay - plane = FULLSCREEN_PLANE - layer = FLASH_LAYER - icon = 'icons/effects/ore_visuals.dmi' - appearance_flags = 0 //to avoid having TILE_BOUND in the flags, so that the 480x480 icon states let you see it no matter where you are - duration = 35 - pixel_x = -224 - pixel_y = -224 - -/obj/effect/temp_visual/mining_overlay/Initialize() - . = ..() - animate(src, alpha = 0, time = duration, easing = EASE_IN) - - -/**********************Xeno Warning Sign**********************/ -/obj/structure/sign/xeno_warning_mining - name = "DANGEROUS ALIEN LIFE" - desc = "A sign that warns would be travellers of hostile alien life in the vicinity." - icon = 'icons/obj/mining.dmi' - icon_state = "xeno_warning" - -/*********************Hivelord stabilizer****************/ - -/obj/item/weapon/hivelordstabilizer - name = "stabilizing serum" - icon = 'icons/obj/chemical.dmi' - icon_state = "bottle19" - desc = "Inject certain types of monster organs with this stabilizer to preserve their healing powers indefinitely." - w_class = WEIGHT_CLASS_TINY - origin_tech = "biotech=3" - -/obj/item/weapon/hivelordstabilizer/afterattack(obj/item/organ/M, mob/user) - var/obj/item/organ/hivelord_core/C = M - if(!istype(C, /obj/item/organ/hivelord_core)) - to_chat(user, "The stabilizer only works on certain types of monster organs, generally regenerative in nature.") - return ..() - - C.preserved() - to_chat(user, "You inject the [M] with the stabilizer. It will no longer go inert.") - qdel(src) - -/*********************Mining Hammer****************/ -/obj/item/weapon/twohanded/required/mining_hammer - icon = 'icons/obj/mining.dmi' - icon_state = "mining_hammer1" - item_state = "mining_hammer1" - name = "proto-kinetic crusher" - desc = "An early design of the proto-kinetic accelerator, it is little more than an combination of various mining tools cobbled together, forming a high-tech club. \ - While it is an effective mining tool, it did little to aid any but the most skilled and/or suicidal miners against local fauna.\ - \nMark a mob with the destabilizing force, then hit them in melee to activate it for extra damage. Extra damage if backstabbed in this fashion. \ - This weapon is only particularly effective against large creatures." - force = 20 //As much as a bone spear, but this is significantly more annoying to carry around due to requiring the use of both hands at all times - w_class = WEIGHT_CLASS_BULKY - slot_flags = SLOT_BACK - force_unwielded = 20 //It's never not wielded so these are the same - force_wielded = 20 - throwforce = 5 - throw_speed = 4 - luminosity = 4 - armour_penetration = 10 - materials = list(MAT_METAL=1150, MAT_GLASS=2075) - hitsound = 'sound/weapons/bladeslice.ogg' - attack_verb = list("smashed", "crushed", "cleaved", "chopped", "pulped") - sharpness = IS_SHARP - var/charged = TRUE - var/charge_time = 14 - -/obj/item/projectile/destabilizer - name = "destabilizing force" - icon_state = "pulse1" - nodamage = TRUE - damage = 0 //We're just here to mark people. This is still a melee weapon. - damage_type = BRUTE - flag = "bomb" - range = 6 - log_override = TRUE - var/obj/item/weapon/twohanded/required/mining_hammer/hammer_synced - -/obj/item/projectile/destabilizer/Destroy() - hammer_synced = null - return ..() - -/obj/item/projectile/destabilizer/on_hit(atom/target, blocked = 0) - if(isliving(target)) - var/mob/living/L = target - var/datum/status_effect/crusher_mark/CM = L.apply_status_effect(STATUS_EFFECT_CRUSHERMARK) - CM.hammer_synced = hammer_synced - var/target_turf = get_turf(target) - if(ismineralturf(target_turf)) - var/turf/closed/mineral/M = target_turf - new /obj/effect/temp_visual/kinetic_blast(M) - M.gets_drilled(firer) - ..() - -/obj/item/weapon/twohanded/required/mining_hammer/afterattack(atom/target, mob/user, proximity_flag) - if(!proximity_flag && charged)//Mark a target, or mine a tile. - var/turf/proj_turf = user.loc - if(!isturf(proj_turf)) - return - var/obj/item/projectile/destabilizer/D = new /obj/item/projectile/destabilizer(proj_turf) - D.preparePixelProjectile(target, get_turf(target), user) - D.hammer_synced = src - playsound(user, 'sound/weapons/plasma_cutter.ogg', 100, 1) - D.fire() - charged = FALSE - icon_state = "mining_hammer1_uncharged" - addtimer(CALLBACK(src, .proc/Recharge), charge_time) - return - if(proximity_flag && isliving(target)) - var/mob/living/L = target - var/datum/status_effect/crusher_mark/CM = L.has_status_effect(STATUS_EFFECT_CRUSHERMARK) - if(!CM || CM.hammer_synced != src || !L.remove_status_effect(STATUS_EFFECT_CRUSHERMARK)) - return - new /obj/effect/temp_visual/kinetic_blast(get_turf(L)) - var/backstab_dir = get_dir(user, L) - var/def_check = L.getarmor(type = "bomb") - if((user.dir & backstab_dir) && (L.dir & backstab_dir)) - L.apply_damage(80, BRUTE, blocked = def_check) - playsound(user, 'sound/weapons/Kenetic_accel.ogg', 100, 1) //Seriously who spelled it wrong - else - L.apply_damage(50, BRUTE, blocked = def_check) - -/obj/item/weapon/twohanded/required/mining_hammer/proc/Recharge() - if(!charged) - charged = TRUE - icon_state = "mining_hammer1" - playsound(src.loc, 'sound/weapons/kenetic_reload.ogg', 60, 1) diff --git a/code/modules/mining/equipment/explorer_gear.dm b/code/modules/mining/equipment/explorer_gear.dm new file mode 100644 index 00000000000..e4acea1cf0e --- /dev/null +++ b/code/modules/mining/equipment/explorer_gear.dm @@ -0,0 +1,48 @@ +/****************Explorer's Suit and Mask****************/ +/obj/item/clothing/suit/hooded/explorer + name = "explorer suit" + desc = "An armoured suit for exploring harsh environments." + icon_state = "explorer" + item_state = "explorer" + body_parts_covered = CHEST|GROIN|LEGS|ARMS + min_cold_protection_temperature = FIRE_SUIT_MIN_TEMP_PROTECT + cold_protection = CHEST|GROIN|LEGS|ARMS + max_heat_protection_temperature = FIRE_SUIT_MAX_TEMP_PROTECT + heat_protection = CHEST|GROIN|LEGS|ARMS + hoodtype = /obj/item/clothing/head/hooded/explorer + armor = list(melee = 30, bullet = 20, laser = 20, energy = 20, bomb = 50, bio = 100, rad = 50, fire = 50, acid = 50) + allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank/internals, /obj/item/weapon/resonator, /obj/item/device/mining_scanner, /obj/item/device/t_scanner/adv_mining_scanner, /obj/item/weapon/gun/energy/kinetic_accelerator, /obj/item/weapon/pickaxe) + resistance_flags = FIRE_PROOF + +/obj/item/clothing/head/hooded/explorer + name = "explorer hood" + desc = "An armoured hood for exploring harsh environments." + icon_state = "explorer" + body_parts_covered = HEAD + flags_inv = HIDEHAIR|HIDEFACE|HIDEEARS + min_cold_protection_temperature = FIRE_HELM_MIN_TEMP_PROTECT + max_heat_protection_temperature = FIRE_HELM_MAX_TEMP_PROTECT + armor = list(melee = 30, bullet = 20, laser = 20, energy = 20, bomb = 50, bio = 100, rad = 50, fire = 50, acid = 50) + resistance_flags = FIRE_PROOF + +/obj/item/clothing/mask/gas/explorer + name = "explorer gas mask" + desc = "A military-grade gas mask that can be connected to an air supply." + icon_state = "gas_mining" + visor_flags = BLOCK_GAS_SMOKE_EFFECT | MASKINTERNALS + visor_flags_inv = HIDEFACIALHAIR + visor_flags_cover = MASKCOVERSMOUTH + actions_types = list(/datum/action/item_action/adjust) + armor = list(melee = 10, bullet = 5, laser = 5, energy = 5, bomb = 0, bio = 50, rad = 0, fire = 20, acid = 40) + resistance_flags = FIRE_PROOF + +/obj/item/clothing/mask/gas/explorer/attack_self(mob/user) + adjustmask(user) + +/obj/item/clothing/mask/gas/explorer/adjustmask(user) + ..() + w_class = mask_adjusted ? WEIGHT_CLASS_NORMAL : WEIGHT_CLASS_SMALL + +/obj/item/clothing/mask/gas/explorer/folded/New() + ..() + adjustmask() diff --git a/code/modules/mining/equipment/kinetic_crusher.dm b/code/modules/mining/equipment/kinetic_crusher.dm new file mode 100644 index 00000000000..15d6c6afc5f --- /dev/null +++ b/code/modules/mining/equipment/kinetic_crusher.dm @@ -0,0 +1,86 @@ +/*********************Mining Hammer****************/ +/obj/item/weapon/twohanded/required/mining_hammer + icon = 'icons/obj/mining.dmi' + icon_state = "mining_hammer1" + item_state = "mining_hammer1" + name = "proto-kinetic crusher" + desc = "An early design of the proto-kinetic accelerator, it is little more than an combination of various mining tools cobbled together, forming a high-tech club. \ + While it is an effective mining tool, it did little to aid any but the most skilled and/or suicidal miners against local fauna.\ + \nMark a mob with the destabilizing force, then hit them in melee to activate it for extra damage. Extra damage if backstabbed in this fashion. \ + This weapon is only particularly effective against large creatures." + force = 20 //As much as a bone spear, but this is significantly more annoying to carry around due to requiring the use of both hands at all times + w_class = WEIGHT_CLASS_BULKY + slot_flags = SLOT_BACK + force_unwielded = 20 //It's never not wielded so these are the same + force_wielded = 20 + throwforce = 5 + throw_speed = 4 + luminosity = 4 + armour_penetration = 10 + materials = list(MAT_METAL=1150, MAT_GLASS=2075) + hitsound = 'sound/weapons/bladeslice.ogg' + attack_verb = list("smashed", "crushed", "cleaved", "chopped", "pulped") + sharpness = IS_SHARP + var/charged = TRUE + var/charge_time = 14 + +/obj/item/projectile/destabilizer + name = "destabilizing force" + icon_state = "pulse1" + nodamage = TRUE + damage = 0 //We're just here to mark people. This is still a melee weapon. + damage_type = BRUTE + flag = "bomb" + range = 6 + log_override = TRUE + var/obj/item/weapon/twohanded/required/mining_hammer/hammer_synced + +/obj/item/projectile/destabilizer/Destroy() + hammer_synced = null + return ..() + +/obj/item/projectile/destabilizer/on_hit(atom/target, blocked = 0) + if(isliving(target)) + var/mob/living/L = target + var/datum/status_effect/crusher_mark/CM = L.apply_status_effect(STATUS_EFFECT_CRUSHERMARK) + CM.hammer_synced = hammer_synced + var/target_turf = get_turf(target) + if(ismineralturf(target_turf)) + var/turf/closed/mineral/M = target_turf + new /obj/effect/temp_visual/kinetic_blast(M) + M.gets_drilled(firer) + ..() + +/obj/item/weapon/twohanded/required/mining_hammer/afterattack(atom/target, mob/user, proximity_flag) + if(!proximity_flag && charged)//Mark a target, or mine a tile. + var/turf/proj_turf = user.loc + if(!isturf(proj_turf)) + return + var/obj/item/projectile/destabilizer/D = new /obj/item/projectile/destabilizer(proj_turf) + D.preparePixelProjectile(target, get_turf(target), user) + D.hammer_synced = src + playsound(user, 'sound/weapons/plasma_cutter.ogg', 100, 1) + D.fire() + charged = FALSE + icon_state = "mining_hammer1_uncharged" + addtimer(CALLBACK(src, .proc/Recharge), charge_time) + return + if(proximity_flag && isliving(target)) + var/mob/living/L = target + var/datum/status_effect/crusher_mark/CM = L.has_status_effect(STATUS_EFFECT_CRUSHERMARK) + if(!CM || CM.hammer_synced != src || !L.remove_status_effect(STATUS_EFFECT_CRUSHERMARK)) + return + new /obj/effect/temp_visual/kinetic_blast(get_turf(L)) + var/backstab_dir = get_dir(user, L) + var/def_check = L.getarmor(type = "bomb") + if((user.dir & backstab_dir) && (L.dir & backstab_dir)) + L.apply_damage(80, BRUTE, blocked = def_check) + playsound(user, 'sound/weapons/Kenetic_accel.ogg', 100, 1) //Seriously who spelled it wrong + else + L.apply_damage(50, BRUTE, blocked = def_check) + +/obj/item/weapon/twohanded/required/mining_hammer/proc/Recharge() + if(!charged) + charged = TRUE + icon_state = "mining_hammer1" + playsound(src.loc, 'sound/weapons/kenetic_reload.ogg', 60, 1) diff --git a/code/modules/mining/equipment/lazarus_injector.dm b/code/modules/mining/equipment/lazarus_injector.dm new file mode 100644 index 00000000000..7199e29bf4c --- /dev/null +++ b/code/modules/mining/equipment/lazarus_injector.dm @@ -0,0 +1,61 @@ +/**********************Lazarus Injector**********************/ +/obj/item/weapon/lazarus_injector + name = "lazarus injector" + desc = "An injector with a cocktail of nanomachines and chemicals, this device can seemingly raise animals from the dead, making them become friendly to the user. Unfortunately, the process is useless on higher forms of life and incredibly costly, so these were hidden in storage until an executive thought they'd be great motivation for some of their employees." + icon = 'icons/obj/syringe.dmi' + icon_state = "lazarus_hypo" + item_state = "hypo" + throwforce = 0 + w_class = WEIGHT_CLASS_SMALL + throw_speed = 3 + throw_range = 5 + var/loaded = 1 + var/malfunctioning = 0 + var/revive_type = SENTIENCE_ORGANIC //So you can't revive boss monsters or robots with it + origin_tech = "biotech=4;magnets=6" + +/obj/item/weapon/lazarus_injector/afterattack(atom/target, mob/user, proximity_flag) + if(!loaded) + return + if(isliving(target) && proximity_flag) + if(istype(target, /mob/living/simple_animal)) + var/mob/living/simple_animal/M = target + if(M.sentience_type != revive_type) + to_chat(user, "[src] does not work on this sort of creature.") + return + if(M.stat == DEAD) + M.faction = list("neutral") + M.revive(full_heal = 1, admin_revive = 1) + if(ishostile(target)) + var/mob/living/simple_animal/hostile/H = M + if(malfunctioning) + H.faction |= list("lazarus", "\ref[user]") + H.robust_searching = 1 + H.friends += user + H.attack_same = 1 + log_game("[user] has revived hostile mob [target] with a malfunctioning lazarus injector") + else + H.attack_same = 0 + loaded = 0 + user.visible_message("[user] injects [M] with [src], reviving it.") + SSblackbox.add_details("lazarus_injector", "[M.type]") + playsound(src,'sound/effects/refill.ogg',50,1) + icon_state = "lazarus_empty" + return + else + to_chat(user, "[src] is only effective on the dead.") + return + else + to_chat(user, "[src] is only effective on lesser beings.") + return + +/obj/item/weapon/lazarus_injector/emp_act() + if(!malfunctioning) + malfunctioning = 1 + +/obj/item/weapon/lazarus_injector/examine(mob/user) + ..() + if(!loaded) + to_chat(user, "[src] is empty.") + if(malfunctioning) + to_chat(user, "The display on [src] seems to be flickering.") diff --git a/code/modules/mining/equipment/mineral_scanner.dm b/code/modules/mining/equipment/mineral_scanner.dm new file mode 100644 index 00000000000..4f76c98a28b --- /dev/null +++ b/code/modules/mining/equipment/mineral_scanner.dm @@ -0,0 +1,79 @@ +/**********************Mining Scanners**********************/ +/obj/item/device/mining_scanner + desc = "A scanner that checks surrounding rock for useful minerals; it can also be used to stop gibtonite detonations." + name = "manual mining scanner" + icon_state = "mining1" + item_state = "analyzer" + w_class = WEIGHT_CLASS_SMALL + flags = CONDUCT + slot_flags = SLOT_BELT + var/cooldown = 35 + var/current_cooldown = 0 + origin_tech = "engineering=1;magnets=1" + +/obj/item/device/mining_scanner/attack_self(mob/user) + if(!user.client) + return + if(current_cooldown <= world.time) + current_cooldown = world.time + cooldown + mineral_scan_pulse(get_turf(user)) + +//Debug item to identify all ore spread quickly +/obj/item/device/mining_scanner/admin + +/obj/item/device/mining_scanner/admin/attack_self(mob/user) + for(var/turf/closed/mineral/M in world) + if(M.scan_state) + M.icon_state = M.scan_state + qdel(src) + +/obj/item/device/t_scanner/adv_mining_scanner + desc = "A scanner that automatically checks surrounding rock for useful minerals; it can also be used to stop gibtonite detonations. This one has an extended range." + name = "advanced automatic mining scanner" + icon_state = "mining0" + item_state = "analyzer" + w_class = WEIGHT_CLASS_SMALL + flags = CONDUCT + slot_flags = SLOT_BELT + var/cooldown = 35 + var/current_cooldown = 0 + var/range = 7 + origin_tech = "engineering=3;magnets=3" + +/obj/item/device/t_scanner/adv_mining_scanner/lesser + name = "automatic mining scanner" + desc = "A scanner that automatically checks surrounding rock for useful minerals; it can also be used to stop gibtonite detonations." + range = 4 + cooldown = 50 + +/obj/item/device/t_scanner/adv_mining_scanner/scan() + if(current_cooldown <= world.time) + current_cooldown = world.time + cooldown + var/turf/t = get_turf(src) + mineral_scan_pulse(t, range) + +/proc/mineral_scan_pulse(turf/T, range = world.view) + var/list/minerals = list() + for(var/turf/closed/mineral/M in range(range, T)) + if(M.scan_state) + minerals += M + if(LAZYLEN(minerals)) + for(var/turf/closed/mineral/M in minerals) + var/obj/effect/temp_visual/mining_overlay/oldC = locate(/obj/effect/temp_visual/mining_overlay) in M + if(oldC) + qdel(oldC) + var/obj/effect/temp_visual/mining_overlay/C = new /obj/effect/temp_visual/mining_overlay(M) + C.icon_state = M.scan_state + +/obj/effect/temp_visual/mining_overlay + plane = FULLSCREEN_PLANE + layer = FLASH_LAYER + icon = 'icons/effects/ore_visuals.dmi' + appearance_flags = 0 //to avoid having TILE_BOUND in the flags, so that the 480x480 icon states let you see it no matter where you are + duration = 35 + pixel_x = -224 + pixel_y = -224 + +/obj/effect/temp_visual/mining_overlay/Initialize() + . = ..() + animate(src, alpha = 0, time = duration, easing = EASE_IN) diff --git a/code/modules/mining/equipment/resonator.dm b/code/modules/mining/equipment/resonator.dm new file mode 100644 index 00000000000..c54def1b2b7 --- /dev/null +++ b/code/modules/mining/equipment/resonator.dm @@ -0,0 +1,120 @@ +/**********************Resonator**********************/ +/obj/item/weapon/resonator + name = "resonator" + icon = 'icons/obj/mining.dmi' + icon_state = "resonator" + item_state = "resonator" + desc = "A handheld device that creates small fields of energy that resonate until they detonate, crushing rock. It's more effective in a vacuum." + w_class = WEIGHT_CLASS_NORMAL + force = 15 + throwforce = 10 + var/burst_time = 30 + var/fieldlimit = 4 + var/list/fields = list() + var/quick_burst_mod = 0.8 + origin_tech = "magnets=3;engineering=3" + +/obj/item/weapon/resonator/upgraded + name = "upgraded resonator" + desc = "An upgraded version of the resonator that can produce more fields at once, as well as having no damage penalty for bursting a resonance field early." + icon_state = "resonator_u" + item_state = "resonator_u" + origin_tech = "materials=4;powerstorage=3;engineering=3;magnets=3" + fieldlimit = 6 + quick_burst_mod = 1 + +/obj/item/weapon/resonator/attack_self(mob/user) + if(burst_time == 50) + burst_time = 30 + to_chat(user, "You set the resonator's fields to detonate after 3 seconds.") + else + burst_time = 50 + to_chat(user, "You set the resonator's fields to detonate after 5 seconds.") + +/obj/item/weapon/resonator/proc/CreateResonance(target, mob/user) + var/turf/T = get_turf(target) + var/obj/effect/temp_visual/resonance/R = locate(/obj/effect/temp_visual/resonance) in T + if(R) + R.damage_multiplier = quick_burst_mod + R.burst() + return + if(LAZYLEN(fields) < fieldlimit) + new /obj/effect/temp_visual/resonance(T, user, src, burst_time) + user.changeNext_move(CLICK_CD_MELEE) + +/obj/item/weapon/resonator/pre_attackby(atom/target, mob/user, params) + if(check_allowed_items(target, 1)) + CreateResonance(target, user) + return TRUE + +//resonance field, crushes rock, damages mobs +/obj/effect/temp_visual/resonance + name = "resonance field" + desc = "A resonating field that significantly damages anything inside of it when the field eventually ruptures. More damaging in low pressure environments." + icon_state = "shield1" + layer = ABOVE_ALL_MOB_LAYER + duration = 50 + var/resonance_damage = 20 + var/damage_multiplier = 1 + var/creator + var/obj/item/weapon/resonator/res + +/obj/effect/temp_visual/resonance/Initialize(mapload, set_creator, set_resonator, set_duration) + duration = set_duration + . = ..() + creator = set_creator + res = set_resonator + if(res) + res.fields += src + playsound(src,'sound/weapons/resonator_fire.ogg',50,1) + transform = matrix()*0.75 + animate(src, transform = matrix()*1.5, time = duration) + deltimer(timerid) + timerid = addtimer(CALLBACK(src, .proc/burst), duration, TIMER_STOPPABLE) + +/obj/effect/temp_visual/resonance/Destroy() + if(res) + res.fields -= src + res = null + creator = null + . = ..() + +/obj/effect/temp_visual/resonance/proc/check_pressure(turf/proj_turf) + if(!proj_turf) + proj_turf = get_turf(src) + if(!istype(proj_turf)) + return + var/datum/gas_mixture/environment = proj_turf.return_air() + var/pressure = environment.return_pressure() + resonance_damage = initial(resonance_damage) + if(pressure < 50) + name = "strong [initial(name)]" + resonance_damage *= 3 + else + name = initial(name) + resonance_damage *= damage_multiplier + +/obj/effect/temp_visual/resonance/proc/burst() + var/turf/T = get_turf(src) + new /obj/effect/temp_visual/resonance_crush(T) + if(ismineralturf(T)) + var/turf/closed/mineral/M = T + M.gets_drilled(creator) + check_pressure(T) + playsound(T,'sound/weapons/resonator_blast.ogg',50,1) + for(var/mob/living/L in T) + if(creator) + add_logs(creator, L, "used a resonator field on", "resonator") + to_chat(L, "[src] ruptured with you in it!") + L.apply_damage(resonance_damage, BRUTE) + qdel(src) + +/obj/effect/temp_visual/resonance_crush + icon_state = "shield1" + layer = ABOVE_ALL_MOB_LAYER + duration = 4 + +/obj/effect/temp_visual/resonance_crush/Initialize() + . = ..() + transform = matrix()*1.5 + animate(src, transform = matrix()*0.1, alpha = 50, time = 4) diff --git a/code/modules/mining/equipment/vendor_items.dm b/code/modules/mining/equipment/vendor_items.dm new file mode 100644 index 00000000000..4ff83ea21f7 --- /dev/null +++ b/code/modules/mining/equipment/vendor_items.dm @@ -0,0 +1,33 @@ +/**********************Mining Equipment Vendor Items**************************/ +//misc stuff you can buy from the vendor that has special code but doesn't really need its own file + +/**********************Facehugger toy**********************/ +/obj/item/clothing/mask/facehugger/toy + item_state = "facehugger_inactive" + desc = "A toy often used to play pranks on other miners by putting it in their beds. It takes a bit to recharge after latching onto something." + throwforce = 0 + real = 0 + sterile = 1 + tint = 3 //Makes it feel more authentic when it latches on + +/obj/item/clothing/mask/facehugger/toy/Die() + return + +/*********************Hivelord stabilizer****************/ +/obj/item/weapon/hivelordstabilizer + name = "stabilizing serum" + icon = 'icons/obj/chemical.dmi' + icon_state = "bottle19" + desc = "Inject certain types of monster organs with this stabilizer to preserve their healing powers indefinitely." + w_class = WEIGHT_CLASS_TINY + origin_tech = "biotech=3" + +/obj/item/weapon/hivelordstabilizer/afterattack(obj/item/organ/M, mob/user) + var/obj/item/organ/hivelord_core/C = M + if(!istype(C, /obj/item/organ/hivelord_core)) + to_chat(user, "The stabilizer only works on certain types of monster organs, generally regenerative in nature.") + return ..() + + C.preserved() + to_chat(user, "You inject the [M] with the stabilizer. It will no longer go inert.") + qdel(src) diff --git a/code/modules/mining/equipment/wormhole_jaunter.dm b/code/modules/mining/equipment/wormhole_jaunter.dm new file mode 100644 index 00000000000..135f4482fc0 --- /dev/null +++ b/code/modules/mining/equipment/wormhole_jaunter.dm @@ -0,0 +1,109 @@ +/**********************Jaunter**********************/ +/obj/item/device/wormhole_jaunter + name = "wormhole jaunter" + desc = "A single use device harnessing outdated wormhole technology, Nanotrasen has since turned its eyes to blue space for more accurate teleportation. The wormholes it creates are unpleasant to travel through, to say the least.\nThanks to modifications provided by the Free Golems, this jaunter can be worn on the belt to provide protection from chasms." + icon = 'icons/obj/mining.dmi' + icon_state = "Jaunter" + item_state = "electronic" + throwforce = 0 + w_class = WEIGHT_CLASS_SMALL + throw_speed = 3 + throw_range = 5 + origin_tech = "bluespace=2" + slot_flags = SLOT_BELT + +/obj/item/device/wormhole_jaunter/attack_self(mob/user) + user.visible_message("[user.name] activates the [src.name]!") + SSblackbox.add_details("jaunter", "User") // user activated + activate(user) + +/obj/item/device/wormhole_jaunter/proc/turf_check(mob/user) + var/turf/device_turf = get_turf(user) + if(!device_turf||device_turf.z==2||device_turf.z>=7) + to_chat(user, "You're having difficulties getting the [src.name] to work.") + return FALSE + return TRUE + +/obj/item/device/wormhole_jaunter/proc/get_destinations(mob/user) + var/list/destinations = list() + + if(isgolem(user)) + for(var/obj/item/device/radio/beacon/B in GLOB.teleportbeacons) + var/turf/T = get_turf(B) + if(istype(T.loc, /area/ruin/powered/golem_ship)) + destinations += B + + // In the event golem beacon is destroyed, send to station instead + if(destinations.len) + return destinations + + for(var/obj/item/device/radio/beacon/B in GLOB.teleportbeacons) + var/turf/T = get_turf(B) + if(T.z == ZLEVEL_STATION) + destinations += B + + return destinations + +/obj/item/device/wormhole_jaunter/proc/activate(mob/user) + if(!turf_check(user)) + return + + var/list/L = get_destinations(user) + if(!L.len) + to_chat(user, "The [src.name] found no beacons in the world to anchor a wormhole to.") + return + var/chosen_beacon = pick(L) + var/obj/effect/portal/wormhole/jaunt_tunnel/J = new /obj/effect/portal/wormhole/jaunt_tunnel(get_turf(src), chosen_beacon, lifespan=100) + J.target = chosen_beacon + try_move_adjacent(J) + playsound(src,'sound/effects/sparks4.ogg',50,1) + qdel(src) + +/obj/item/device/wormhole_jaunter/emp_act(power) + var/triggered = FALSE + + if(usr.get_item_by_slot(slot_belt) == src) + if(power == 1) + triggered = TRUE + else if(power == 2 && prob(50)) + triggered = TRUE + + if(triggered) + usr.visible_message("The [src] overloads and activates!") + SSblackbox.add_details("jaunter","EMP") // EMP accidental activation + activate(usr) + +/obj/item/device/wormhole_jaunter/proc/chasm_react(mob/user) + if(user.get_item_by_slot(slot_belt) == src) + to_chat(user, "Your [src] activates, saving you from the chasm!") + SSblackbox.add_details("jaunter","Chasm") // chasm automatic activation + activate(user) + else + to_chat(user, "The [src] is not attached to your belt, preventing it from saving you from the chasm. RIP.") + +//jaunter tunnel +/obj/effect/portal/wormhole/jaunt_tunnel + name = "jaunt tunnel" + icon = 'icons/effects/effects.dmi' + icon_state = "bhole3" + desc = "A stable hole in the universe made by a wormhole jaunter. Turbulent doesn't even begin to describe how rough passage through one of these is, but at least it will always get you somewhere near a beacon." + mech_sized = TRUE //save your ripley + +/obj/effect/portal/wormhole/jaunt_tunnel/teleport(atom/movable/M) + if(istype(M, /obj/effect)) + return + + if(M.anchored) + if(!(istype(M, /obj/mecha) && mech_sized)) + return + + if(istype(M, /atom/movable)) + if(do_teleport(M, target, 6)) + // KERPLUNK + playsound(M,'sound/weapons/resonator_blast.ogg',50,1) + if(iscarbon(M)) + var/mob/living/carbon/L = M + L.Weaken(3) + if(ishuman(L)) + shake_camera(L, 20, 1) + addtimer(CALLBACK(L, /mob/living/carbon.proc/vomit), 20) diff --git a/tgstation.dme b/tgstation.dme index 3910ee796e1..96c041d0a12 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -1429,7 +1429,6 @@ #include "code\modules\mining\abandoned_crates.dm" #include "code\modules\mining\aux_base.dm" #include "code\modules\mining\aux_base_camera.dm" -#include "code\modules\mining\equipment.dm" #include "code\modules\mining\fulton.dm" #include "code\modules\mining\machine_input_output_plates.dm" #include "code\modules\mining\machine_processing.dm" @@ -1444,6 +1443,13 @@ #include "code\modules\mining\ores_coins.dm" #include "code\modules\mining\satchel_ore_boxdm.dm" #include "code\modules\mining\shelters.dm" +#include "code\modules\mining\equipment\explorer_gear.dm" +#include "code\modules\mining\equipment\kinetic_crusher.dm" +#include "code\modules\mining\equipment\lazarus_injector.dm" +#include "code\modules\mining\equipment\mineral_scanner.dm" +#include "code\modules\mining\equipment\resonator.dm" +#include "code\modules\mining\equipment\vendor_items.dm" +#include "code\modules\mining\equipment\wormhole_jaunter.dm" #include "code\modules\mining\laborcamp\laborshuttle.dm" #include "code\modules\mining\laborcamp\laborstacker.dm" #include "code\modules\mining\lavaland\ash_flora.dm" From babe7325625c336b9e6cfc4ea98be4b9dd91ed15 Mon Sep 17 00:00:00 2001 From: Cyberboss Date: Tue, 23 May 2017 09:55:43 -0400 Subject: [PATCH 11/74] Fixes hiding the nuke disk on the arrivals shuttle --- code/modules/shuttle/arrivals.dm | 24 ++++++++++++++++++------ 1 file changed, 18 insertions(+), 6 deletions(-) diff --git a/code/modules/shuttle/arrivals.dm b/code/modules/shuttle/arrivals.dm index cd501432237..e48157b3eda 100644 --- a/code/modules/shuttle/arrivals.dm +++ b/code/modules/shuttle/arrivals.dm @@ -94,7 +94,7 @@ SendToStation() return - var/found_awake = PersonCheck() + var/found_awake = PersonCheck() || NukeDiskCheck() if(mode == SHUTTLE_CALL) if(found_awake) SendToStation() @@ -123,6 +123,12 @@ return TRUE return FALSE +/obj/docking_port/mobile/arrivals/proc/NukeDiskCheck() + for (var/obj/item/weapon/disk/nuclear/N in GLOB.poi_list) + if (get_area(N) in areas) + return TRUE + return FALSE + /obj/docking_port/mobile/arrivals/proc/SendToStation() var/dockTime = config.arrivals_shuttle_dock_window if(mode == SHUTTLE_CALL && timeLeft(1) > dockTime) @@ -135,11 +141,17 @@ var/docked = S1 == assigned_transit sound_played = FALSE if(docked) //about to launch - if(!force_depart && PersonCheck()) - mode = SHUTTLE_IDLE - if(console) - console.say("Launch cancelled, lifeform dectected on board.") - return + if(!force_depart) + var/cancel_reason + if(PersonCheck()) + cancel_reason = "lifeform dectected on board" + else if(NukeDiskCheck()) + cancel_reason = "critical station device detected on board" + if(cancel_reason) + mode = SHUTTLE_IDLE + if(console) + console.say("Launch cancelled, [cancel_reason].") + return force_depart = FALSE . = ..() if(!. && !docked && !damaged) From 916e52dde0594c114992941a7dbbba1f5e2504bd Mon Sep 17 00:00:00 2001 From: Steelpoint Date: Tue, 23 May 2017 22:32:16 +0800 Subject: [PATCH 12/74] MoreSounds! --- code/modules/projectiles/box_magazine.dm | 2 ++ .../projectiles/guns/ballistic/automatic.dm | 6 ++++++ .../projectiles/guns/ballistic/revolver.dm | 2 ++ sound/weapons/bulletinsert.ogg | Bin 0 -> 8527 bytes sound/weapons/bulletremove.ogg | Bin 0 -> 43594 bytes sound/weapons/magin.ogg | Bin 0 -> 7120 bytes sound/weapons/magout.ogg | Bin 0 -> 8125 bytes sound/weapons/sawclose.ogg | Bin 0 -> 17067 bytes sound/weapons/sawopen.ogg | Bin 0 -> 20339 bytes 9 files changed, 10 insertions(+) create mode 100644 sound/weapons/bulletinsert.ogg create mode 100644 sound/weapons/bulletremove.ogg create mode 100644 sound/weapons/magin.ogg create mode 100644 sound/weapons/magout.ogg create mode 100644 sound/weapons/sawclose.ogg create mode 100644 sound/weapons/sawopen.ogg diff --git a/code/modules/projectiles/box_magazine.dm b/code/modules/projectiles/box_magazine.dm index 982bbdf587f..028aebe66a8 100644 --- a/code/modules/projectiles/box_magazine.dm +++ b/code/modules/projectiles/box_magazine.dm @@ -86,6 +86,7 @@ if(num_loaded) if(!silent) to_chat(user, "You load [num_loaded] shell\s into \the [src]!") + playsound(user, 'sound/weapons/bulletinsert.ogg', 60, 1) A.update_icon() update_icon() @@ -96,6 +97,7 @@ if(A) user.put_in_hands(A) to_chat(user, "You remove a round from \the [src]!") + playsound(user, 'sound/weapons/bulletremove.ogg', 60, 1) update_icon() /obj/item/ammo_box/update_icon() diff --git a/code/modules/projectiles/guns/ballistic/automatic.dm b/code/modules/projectiles/guns/ballistic/automatic.dm index 72e2bd33e95..d80fc4b814e 100644 --- a/code/modules/projectiles/guns/ballistic/automatic.dm +++ b/code/modules/projectiles/guns/ballistic/automatic.dm @@ -302,6 +302,10 @@ /obj/item/weapon/gun/ballistic/automatic/l6_saw/attack_self(mob/user) cover_open = !cover_open to_chat(user, "You [cover_open ? "open" : "close"] [src]'s cover.") + if(cover_open) + playsound(user, 'sound/weapons/sawopen.ogg', 60, 1) + else + playsound(user, 'sound/weapons/sawclose.ogg', 60, 1) update_icon() @@ -332,11 +336,13 @@ magazine = null update_icon() to_chat(user, "You remove the magazine from [src].") + playsound(user, 'sound/weapons/magout.ogg', 60, 1) /obj/item/weapon/gun/ballistic/automatic/l6_saw/attackby(obj/item/A, mob/user, params) if(!cover_open && istype(A, mag_type)) to_chat(user, "[src]'s cover is closed! You can't insert a new mag.") + playsound(user, 'sound/weapons/magin.ogg', 60, 1) return ..() diff --git a/code/modules/projectiles/guns/ballistic/revolver.dm b/code/modules/projectiles/guns/ballistic/revolver.dm index 66a3f1fafaf..54fb90bffc8 100644 --- a/code/modules/projectiles/guns/ballistic/revolver.dm +++ b/code/modules/projectiles/guns/ballistic/revolver.dm @@ -28,6 +28,7 @@ var/num_loaded = magazine.attackby(A, user, params, 1) if(num_loaded) to_chat(user, "You load [num_loaded] shell\s into \the [src].") + playsound(user, 'sound/weapons/bulletinsert.ogg', 60, 1) A.update_icon() update_icon() chamber_round(0) @@ -45,6 +46,7 @@ num_unloaded++ if (num_unloaded) to_chat(user, "You unload [num_unloaded] shell\s from [src].") + playsound(user, 'sound/weapons/bulletremove.ogg', 60, 1) else to_chat(user, "[src] is empty!") diff --git a/sound/weapons/bulletinsert.ogg b/sound/weapons/bulletinsert.ogg new file mode 100644 index 0000000000000000000000000000000000000000..789ee15b0837be455c05efcc0609557fb644c40d GIT binary patch literal 8527 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 literal 0 HcmV?d00001 diff --git a/sound/weapons/magin.ogg b/sound/weapons/magin.ogg new file mode 100644 index 0000000000000000000000000000000000000000..8908bb2f4ff06c14ca8593974eb1eb0bf197468c GIT binary patch literal 7120 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 bIErNf7RW&utTF&Z5o@y$0N@KIm&*hIRVekL literal 0 HcmV?d00001 From f1b05d8913c8a668057606a23022af537b76ec42 Mon Sep 17 00:00:00 2001 From: Steelpoint Date: Tue, 23 May 2017 22:36:15 +0800 Subject: [PATCH 13/74] ForgotToRemoveThis --- code/modules/projectiles/guns/ballistic/automatic.dm | 1 - 1 file changed, 1 deletion(-) diff --git a/code/modules/projectiles/guns/ballistic/automatic.dm b/code/modules/projectiles/guns/ballistic/automatic.dm index d80fc4b814e..6f8927958cc 100644 --- a/code/modules/projectiles/guns/ballistic/automatic.dm +++ b/code/modules/projectiles/guns/ballistic/automatic.dm @@ -342,7 +342,6 @@ /obj/item/weapon/gun/ballistic/automatic/l6_saw/attackby(obj/item/A, mob/user, params) if(!cover_open && istype(A, mag_type)) to_chat(user, "[src]'s cover is closed! You can't insert a new mag.") - playsound(user, 'sound/weapons/magin.ogg', 60, 1) return ..() From 025cd13bf3cae234747ca0102ec4edb32c7281c7 Mon Sep 17 00:00:00 2001 From: Leo Date: Tue, 23 May 2017 11:50:44 -0300 Subject: [PATCH 14/74] Closes bold tag in bombing list secret --- code/modules/admin/secrets.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/admin/secrets.dm b/code/modules/admin/secrets.dm index eabc7d3fd05..e569eacd2bc 100644 --- a/code/modules/admin/secrets.dm +++ b/code/modules/admin/secrets.dm @@ -174,7 +174,7 @@ if("list_bombers") if(!check_rights(R_ADMIN)) return - var/dat = "Bombing List


" + var/dat = "Bombing List
" for(var/l in GLOB.bombers) dat += text("[l]
") usr << browse(dat, "window=bombers") From b8f74b8820bc873a1f2e14cbac5b3c7b17a52c9d Mon Sep 17 00:00:00 2001 From: Cyberboss Date: Tue, 23 May 2017 10:53:28 -0400 Subject: [PATCH 15/74] Adds a missing null check --- code/modules/shuttle/arrivals.dm | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/code/modules/shuttle/arrivals.dm b/code/modules/shuttle/arrivals.dm index cd501432237..8aa6f0f38b3 100644 --- a/code/modules/shuttle/arrivals.dm +++ b/code/modules/shuttle/arrivals.dm @@ -143,7 +143,8 @@ force_depart = FALSE . = ..() if(!. && !docked && !damaged) - console.say("Welcome to your new life, employees!") + if(console) + console.say("Welcome to your new life, employees!") for(var/L in queued_announces) var/datum/callback/C = L C.Invoke() From 1c3b0321ad714c4dec227637f2e47109094e9bc6 Mon Sep 17 00:00:00 2001 From: Cyberboss Date: Tue, 23 May 2017 13:30:39 -0400 Subject: [PATCH 16/74] Fixes DBCore Recovery --- code/controllers/subsystem/dbcore.dm | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/code/controllers/subsystem/dbcore.dm b/code/controllers/subsystem/dbcore.dm index ad4691564c9..cf3efc3bc3b 100644 --- a/code/controllers/subsystem/dbcore.dm +++ b/code/controllers/subsystem/dbcore.dm @@ -23,7 +23,8 @@ SUBSYSTEM_DEF(dbcore) var/failed_connections = 0 /datum/controller/subsystem/dbcore/PreInit() - _db_con = _dm_db_new_con() + if(!_db_con) + _db_con = _dm_db_new_con() /datum/controller/subsystem/dbcore/Recover() _db_con = SSdbcore._db_con From b1534b1ee8e85d1b8e0bff5b3e8fbc0902372451 Mon Sep 17 00:00:00 2001 From: Pigeons Date: Tue, 23 May 2017 14:28:17 -0400 Subject: [PATCH 17/74] Nerfs plasma cost --- code/modules/cargo/exports/materials.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/modules/cargo/exports/materials.dm b/code/modules/cargo/exports/materials.dm index 30db039bb61..453cad214a4 100644 --- a/code/modules/cargo/exports/materials.dm +++ b/code/modules/cargo/exports/materials.dm @@ -43,7 +43,7 @@ // Plasma. The oil of 26 century. The reason why you are here. /datum/export/material/plasma - cost = 500 + cost = 300 k_elasticity = 0 material_id = MAT_PLASMA message = "cm3 of plasma" @@ -74,7 +74,7 @@ // Plastitanium. /datum/export/material/plastitanium - cost = 750 + cost = 550 material_id = MAT_TITANIUM // code can only check for one material_id; plastitanium is half plasma, half titanium, so ((250 x 250) + (250 x 500)) / 250 message = "cm3 of plastitanium" From d0a05792c513c480f4bf167ff34c21ba32f27f1a Mon Sep 17 00:00:00 2001 From: QualityVan Date: Tue, 23 May 2017 15:34:26 -0400 Subject: [PATCH 18/74] Brains extracted from infectious zombies keep their old species --- code/modules/mob/living/brain/brain_item.dm | 3 +++ code/modules/zombie/organs.dm | 4 +++- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/code/modules/mob/living/brain/brain_item.dm b/code/modules/mob/living/brain/brain_item.dm index f137299581c..aa9e1331654 100644 --- a/code/modules/mob/living/brain/brain_item.dm +++ b/code/modules/mob/living/brain/brain_item.dm @@ -72,6 +72,9 @@ if(!brainmob.stored_dna) brainmob.stored_dna = new /datum/dna/stored(brainmob) C.dna.copy_dna(brainmob.stored_dna) + var/obj/item/organ/zombie_infection/ZI = L.getorganslot("zombie_infection") + if(ZI) + brainmob.set_species(ZI.old_species) //For if the brain is cloned if(L.mind && L.mind.current) L.mind.transfer_to(brainmob) to_chat(brainmob, "You feel slightly disoriented. That's normal when you're just a brain.") diff --git a/code/modules/zombie/organs.dm b/code/modules/zombie/organs.dm index 3515da0dc66..c93699a2acd 100644 --- a/code/modules/zombie/organs.dm +++ b/code/modules/zombie/organs.dm @@ -70,8 +70,10 @@ var/stand_up = (owner.stat == DEAD) || (owner.stat == UNCONSCIOUS) + if(!owner.revive(full_heal = TRUE)) + return + owner.grab_ghost() - owner.revive(full_heal = TRUE) owner.visible_message("[owner] suddenly convulses, as [owner.p_they()][stand_up ? " stagger to [owner.p_their()] feet and" : ""] gain a ravenous hunger in [owner.p_their()] eyes!", "You HUNGER!") playsound(owner.loc, 'sound/hallucinations/far_noise.ogg', 50, 1) owner.do_jitter_animation(living_transformation_time * 10) From 84a90acbeb464d931c4b9976fc7448b0e8c57085 Mon Sep 17 00:00:00 2001 From: Joan Lung Date: Tue, 23 May 2017 16:12:49 -0400 Subject: [PATCH 19/74] merely a misassigned var --- code/datums/antagonists/datum_clockcult.dm | 5 ++--- code/game/gamemodes/clock_cult/clock_cult.dm | 8 -------- 2 files changed, 2 insertions(+), 11 deletions(-) diff --git a/code/datums/antagonists/datum_clockcult.dm b/code/datums/antagonists/datum_clockcult.dm index b8dfa00f23e..6c8b83daa4c 100644 --- a/code/datums/antagonists/datum_clockcult.dm +++ b/code/datums/antagonists/datum_clockcult.dm @@ -55,9 +55,8 @@ else if(isbrain(current) || isclockmob(current)) to_chat(current, "You can communicate with other servants by using the Hierophant Network action button in the upper left.") ..() - if(istype(SSticker.mode, /datum/game_mode/clockwork_cult)) - var/datum/game_mode/clockwork_cult/C = SSticker.mode - C.present_tasks(owner) //Memorize the objectives + to_chat(current, "This is Ratvar's will: [CLOCKCULT_OBJECTIVE]") + owner.memory += "Ratvar's will: [CLOCKCULT_OBJECTIVE]
" //Memorize the objectives /datum/antagonist/clockcult/apply_innate_effects(mob/living/mob_override) . = ..() diff --git a/code/game/gamemodes/clock_cult/clock_cult.dm b/code/game/gamemodes/clock_cult/clock_cult.dm index 531cc873f08..132c834f108 100644 --- a/code/game/gamemodes/clock_cult/clock_cult.dm +++ b/code/game/gamemodes/clock_cult/clock_cult.dm @@ -171,14 +171,6 @@ Credit where due: return TRUE return FALSE -/datum/game_mode/clockwork_cult/proc/present_tasks(mob/living/L) //Memorizes and displays the clockwork cult's objective - if(!L || !istype(L) || !L.mind) - return 0 - var/datum/mind/M = L.mind - to_chat(M.current, "This is Ratvar's will: [CLOCKCULT_OBJECTIVE]") - M.memory += "Ratvar's will: [CLOCKCULT_OBJECTIVE]
" - return 1 - /datum/game_mode/clockwork_cult/proc/check_clockwork_victory() if(GLOB.clockwork_gateway_activated) SSticker.news_report = CLOCK_PROSELYTIZATION //failure, technically, but we have the station From 1755cd64f39b75626637459ea59850b83deec108 Mon Sep 17 00:00:00 2001 From: Joan Lung Date: Tue, 23 May 2017 16:28:09 -0400 Subject: [PATCH 20/74] Gibtonite now uses defines (#27545) --- code/__DEFINES/misc.dm | 6 ++++++ code/game/turfs/simulated/minerals.dm | 24 ++++++++++++------------ 2 files changed, 18 insertions(+), 12 deletions(-) diff --git a/code/__DEFINES/misc.dm b/code/__DEFINES/misc.dm index 463c7cfee5e..23fc681b7a3 100644 --- a/code/__DEFINES/misc.dm +++ b/code/__DEFINES/misc.dm @@ -406,3 +406,9 @@ GLOBAL_LIST_INIT(ghost_others_options, list(GHOST_OTHERS_SIMPLE, GHOST_OTHERS_DE #define NO_FIELD 0 #define FIELD_TURF 1 #define FIELD_EDGE 2 + +//gibtonite state defines +#define GIBTONITE_UNSTRUCK 0 +#define GIBTONITE_ACTIVE 1 +#define GIBTONITE_STABLE 2 +#define GIBTONITE_DETONATE 3 \ No newline at end of file diff --git a/code/game/turfs/simulated/minerals.dm b/code/game/turfs/simulated/minerals.dm index 708427a11ac..0a8230e186d 100644 --- a/code/game/turfs/simulated/minerals.dm +++ b/code/game/turfs/simulated/minerals.dm @@ -379,7 +379,7 @@ spread = 0 scan_state = "rock_Gibtonite" var/det_time = 8 //Countdown till explosion, but also rewards the player for how close you were to detonation when you defuse it - var/stage = 0 //How far into the lifecycle of gibtonite we are, 0 is untouched, 1 is active and attempting to detonate, 2 is benign and ready for extraction + var/stage = GIBTONITE_UNSTRUCK //How far into the lifecycle of gibtonite we are var/activated_ckey = null //These are to track who triggered the gibtonite deposit for logging purposes var/activated_name = null var/mutable_appearance/activated_overlay @@ -395,12 +395,12 @@ ..() /turf/closed/mineral/gibtonite/proc/explosive_reaction(mob/user = null, triggered_by_explosion = 0) - if(stage == 0) + if(stage == GIBTONITE_UNSTRUCK) activated_overlay = mutable_appearance('icons/turf/smoothrocks.dmi', "rock_Gibtonite_active", ON_EDGED_TURF_LAYER) add_overlay(activated_overlay) name = "gibtonite deposit" desc = "An active gibtonite reserve. Run!" - stage = 1 + stage = GIBTONITE_ACTIVE visible_message("There was gibtonite inside! It's going to explode!") var/turf/bombturf = get_turf(src) var/area/A = get_area(bombturf) @@ -422,38 +422,38 @@ /turf/closed/mineral/gibtonite/proc/countdown(notify_admins = 0) set waitfor = 0 - while(istype(src, /turf/closed/mineral/gibtonite) && stage == 1 && det_time > 0 && mineralAmt >= 1) + while(istype(src, /turf/closed/mineral/gibtonite) && stage == GIBTONITE_ACTIVE && det_time > 0 && mineralAmt >= 1) det_time-- sleep(5) if(istype(src, /turf/closed/mineral/gibtonite)) - if(stage == 1 && det_time <= 0 && mineralAmt >= 1) + if(stage == GIBTONITE_ACTIVE && det_time <= 0 && mineralAmt >= 1) var/turf/bombturf = get_turf(src) mineralAmt = 0 - stage = 3 + stage = GIBTONITE_DETONATE explosion(bombturf,1,3,5, adminlog = notify_admins) /turf/closed/mineral/gibtonite/proc/defuse() - if(stage == 1) + if(stage == GIBTONITE_ACTIVE) cut_overlay(activated_overlay) activated_overlay.icon_state = "rock_Gibtonite_inactive" add_overlay(activated_overlay) desc = "An inactive gibtonite reserve. The ore can be extracted." - stage = 2 + stage = GIBTONITE_STABLE if(det_time < 0) det_time = 0 visible_message("The chain reaction was stopped! The gibtonite had [src.det_time] reactions left till the explosion!") /turf/closed/mineral/gibtonite/gets_drilled(mob/user, triggered_by_explosion = 0) - if(stage == 0 && mineralAmt >= 1) //Gibtonite deposit is activated + if(stage == GIBTONITE_UNSTRUCK && mineralAmt >= 1) //Gibtonite deposit is activated playsound(src,'sound/effects/hit_on_shattered_glass.ogg',50,1) explosive_reaction(user, triggered_by_explosion) return - if(stage == 1 && mineralAmt >= 1) //Gibtonite deposit goes kaboom + if(stage == GIBTONITE_ACTIVE && mineralAmt >= 1) //Gibtonite deposit goes kaboom var/turf/bombturf = get_turf(src) mineralAmt = 0 - stage = 3 + stage = GIBTONITE_DETONATE explosion(bombturf,1,2,5, adminlog = 0) - if(stage == 2) //Gibtonite deposit is now benign and extractable. Depending on how close you were to it blowing up before defusing, you get better quality ore. + if(stage == GIBTONITE_STABLE) //Gibtonite deposit is now benign and extractable. Depending on how close you were to it blowing up before defusing, you get better quality ore. var/obj/item/weapon/twohanded/required/gibtonite/G = new /obj/item/weapon/twohanded/required/gibtonite/(src) if(det_time <= 0) G.quality = 3 From 30f5cbcf4fcce4396cdeb1131dfbbd56b5dd189c Mon Sep 17 00:00:00 2001 From: bagil Date: Tue, 23 May 2017 21:58:50 +0000 Subject: [PATCH 21/74] Automatic changelog compile, [ci skip] --- html/changelog.html | 1 + html/changelogs/.all_changelog.yml | 1 + html/changelogs/AutoChangeLog-pr-27531.yml | 4 ---- 3 files changed, 2 insertions(+), 4 deletions(-) delete mode 100644 html/changelogs/AutoChangeLog-pr-27531.yml diff --git a/html/changelog.html b/html/changelog.html index a2c20860b20..8c613c59d76 100644 --- a/html/changelog.html +++ b/html/changelog.html @@ -89,6 +89,7 @@

That Really Good Soda Flavor updated:

  • Martial arts are no longer lost when mind-swapping, cloning, moving your brain, et cetera.
  • +
  • Fixed a bug where paper bins could swallow up pens into the void.

coiax updated: