From 9b72accc5447c64acda48b383d2078c1f290e2f4 Mon Sep 17 00:00:00 2001 From: HaultyAnonie Date: Mon, 15 Apr 2024 19:54:43 +0100 Subject: [PATCH 01/50] REdoes some GUN DESCRIPTIONS --- code/modules/1713/weapons/guns/semiauto.dm | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/code/modules/1713/weapons/guns/semiauto.dm b/code/modules/1713/weapons/guns/semiauto.dm index b0794f5fc7..9f5d75ef84 100644 --- a/code/modules/1713/weapons/guns/semiauto.dm +++ b/code/modules/1713/weapons/guns/semiauto.dm @@ -306,7 +306,7 @@ /obj/item/weapon/gun/projectile/semiautomatic/g43 name = "Gewehr 43" - desc = "A German semi-automatic rifle using 7.92x57mm Mauser ammunition in a 10 round detachable magazine." + desc = "A German semi-automatic rifle, the Gewehr 43, utilizes 7.92x57mm Mauser ammunition and features a 10-round detachable magazine." icon_state = "g43" item_state = "g43" base_icon = "g43" @@ -376,7 +376,7 @@ /obj/item/weapon/gun/projectile/semiautomatic/m1garand name = "M1 Garand" - desc = "An American semi-automatic rifle using .30-06 ammunition in a 8 round internal magazine." + desc = "An American semi-automatic rifle, the M1 Garand, utilizes .30-06 ammunition and features an 8-round internal magazine." icon_state = "m1garand" item_state = "m1garand" base_icon = "m1garand" @@ -460,7 +460,7 @@ /obj/item/weapon/gun/projectile/semiautomatic/vintorez name = "VSS Vintorez" - desc = "A Marksman rifle featuring an integral supressor originating from the Soviet Union. Feeding from detachable 10-round magazines. Chambered in 9x39mm." + desc = "A marksman rifle featuring an integral supressor originating from the Soviet Union. Feeding from detachable 10-round magazines. Chambered in 9x39mm." icon_state = "vintorez" item_state = "vintorez" base_icon = "vintorez" From 6116ef75dad9a36eeb0ea42d79ab475ef647f335 Mon Sep 17 00:00:00 2001 From: HaultyAnonie Date: Mon, 15 Apr 2024 19:54:52 +0100 Subject: [PATCH 02/50] removes TREES from BASES in KURSK --- maps/1943/kursk.dmm | 54 ++++++++++++++++++++------------------------- 1 file changed, 24 insertions(+), 30 deletions(-) diff --git a/maps/1943/kursk.dmm b/maps/1943/kursk.dmm index 3cfa3ead8a..4ac8c17ac2 100644 --- a/maps/1943/kursk.dmm +++ b/maps/1943/kursk.dmm @@ -16,7 +16,6 @@ "ap" = (/turf/floor/trench,/area/caribbean/forest) "aq" = (/obj/structure/wild/tallgrass,/obj/structure/wild/tallgrass,/turf/floor/grass,/area/caribbean/forest) "ar" = (/obj/structure/wild/jungle/medpine/dead,/turf/floor/grass,/area/caribbean/forest) -"as" = (/obj/structure/wild/tree/live_tree,/obj/structure/wild/tallgrass,/obj/structure/wild/tallgrass,/turf/floor/grass,/area/caribbean/forest) "at" = (/obj/structure/wild/tallgrass,/turf/floor/dirt/underground,/area/caribbean/forest) "au" = (/obj/structure/wild/tallgrass,/turf/floor/dirt/dust,/area/caribbean/forest) "av" = (/obj/structure/vehicleparts/movement/tracks/reversed{icon_state = "tracks_end"; dir = 1},/obj/structure/engine/internal/gasoline{enginesize = 25000},/obj/structure/vehicleparts/frame/panzervi/rb,/turf/floor/dirt,/area/caribbean/forest) @@ -47,9 +46,8 @@ "aU" = (/obj/structure/wild/tallgrass,/obj/structure/closet/crate/ww2/ammo_mg34,/turf/floor/grass,/area/caribbean/german) "aV" = (/obj/item/weapon/storage/toolbox/emergency,/obj/structure/vehicleparts/frame/panzeriv/left/door,/turf/floor/dirt,/area/caribbean/forest) "aW" = (/obj/structure/vehicleparts/frame/panzervi/right,/obj/structure/shellrack/full88,/turf/floor/dirt,/area/caribbean/forest) -"aX" = (/obj/structure/wild/tree/live_tree,/turf/floor/grass,/area/caribbean/german) "aY" = (/obj/structure/closet/crate/ww2/atmines,/turf/floor/grass,/area/caribbean/german) -"aZ" = (/obj/structure/wild/burnedbush,/obj/structure/closet/crate/ww2/stg1924,/turf/floor/dirt,/area/caribbean/german) +"aZ" = (/obj/structure/closet/crate/ww2/stg1924,/turf/floor/dirt,/area/caribbean/german) "ba" = (/obj/structure/closet/crate/ww2/atmines,/turf/floor/dirt,/area/caribbean/german) "bb" = (/obj/structure/vehicleparts/frame/panzervi,/obj/structure/turret/pzvi,/turf/floor/dirt,/area/caribbean/forest) "bc" = (/obj/structure/vehicleparts/frame/panzervi/left,/obj/structure/shellrack/full88,/turf/floor/dirt,/area/caribbean/forest) @@ -119,13 +117,12 @@ "co" = (/obj/structure/wild/junglebush,/turf/floor/grass,/area/caribbean/german) "cp" = (/obj/structure/wild/tallgrass,/obj/effect/landmark{name = "JoinLateGE"},/turf/floor/grass,/area/caribbean/german) "cq" = (/obj/structure/barricade/horizontal,/turf/floor/dirt/burned,/area/caribbean/german) -"cr" = (/obj/structure/wild/tree/live_tree,/turf/floor/dirt/dust,/area/caribbean/german) +"cr" = (/obj/structure/wild/burnedbush,/turf/floor/grass,/area/caribbean/german) "cs" = (/obj/structure/barricade/antitank,/turf/floor/grass,/area/caribbean/forest) "ct" = (/obj/structure/barricade/antitank,/turf/floor/dirt,/area/caribbean/forest) "cu" = (/obj/structure/barricade/antitank,/turf/floor/dirt/dust,/area/caribbean/forest) "cv" = (/obj/effect/landmark{name = "JoinLateGE"},/turf/floor/grass,/area/caribbean/german) "cw" = (/obj/item/weapon/storage/toolbox/emergency,/turf/floor/dirt,/area/caribbean/german) -"cx" = (/obj/structure/wild/jungle/medpine,/turf/floor/grass,/area/caribbean/german) "cy" = (/obj/effect/landmark{name = "JoinLateGECap"},/turf/floor/grass,/area/caribbean/german) "cz" = (/obj/structure/closet/crate/ww2/mp40,/turf/floor/dirt,/area/caribbean/german) "cA" = (/obj/structure/closet/crate/ww2/g43,/turf/floor/dirt,/area/caribbean/german) @@ -213,7 +210,6 @@ "ee" = (/turf/floor/grass,/area/caribbean/russian{name = "Russian Base"}) "ef" = (/obj/structure/cannon/mortar{icon_state = "mortar"; dir = 1},/obj/item/weapon/wrench,/turf/floor/dirt,/area/caribbean/german) "eg" = (/turf/floor/dirt/dust,/area/caribbean/russian{name = "Russian Base"}) -"eh" = (/obj/structure/wild/jungle/medpine,/turf/floor/grass,/area/caribbean/russian{name = "Russian Base"}) "ei" = (/obj/structure/window/barrier/sandbag,/turf/floor/grass,/area/caribbean/russian{name = "Russian Base"}) "ej" = (/obj/structure/window/barrier/sandbag,/turf/floor/dirt/dust,/area/caribbean/russian{name = "Russian Base"}) "ek" = (/obj/effect/autoassembler,/turf/floor/dirt,/area/caribbean/forest) @@ -222,9 +218,7 @@ "en" = (/obj/structure/vehicleparts/frame/t34/left,/obj/structure/shellrack/full76,/turf/floor/dirt,/area/caribbean/forest) "eo" = (/obj/structure/window/barrier/sandbag{icon_state = "sandbag"; dir = 1},/turf/floor/dirt/dust,/area/caribbean/russian{name = "Russian Base"}) "ep" = (/obj/structure/wild/smallbush,/turf/floor/grass,/area/caribbean/russian{name = "Russian Base"}) -"eq" = (/obj/structure/wild/jungle/medpine/dead,/turf/floor/grass,/area/caribbean/russian{name = "Russian Base"}) "er" = (/obj/structure/wild/smallbush,/turf/floor/dirt,/area/caribbean/russian{name = "Russian Base"}) -"es" = (/obj/structure/wild/tree/live_tree,/turf/floor/grass,/area/caribbean/russian{name = "Russian Base"}) "et" = (/obj/structure/closet/crate/ww2/ppsh,/turf/floor/dirt,/area/caribbean/russian{name = "Russian Base"}) "eu" = (/obj/structure/closet/crate/ww2/pps,/turf/floor/grass,/area/caribbean/russian{name = "Russian Base"}) "ev" = (/obj/structure/closet/crate/ww2/svt,/turf/floor/grass,/area/caribbean/russian{name = "Russian Base"}) @@ -401,27 +395,27 @@ (1,1,1) = {" aaaaaaaaaaabababacababadababadababababaaaaabaHapayazayayayayaDaGaybWaJaLaMaSaSaSaSaSaSaLaLaJapbJcsababaaaaabaaagagagabadafabababaaabaaabababaeaeaeabaaababababababababababaaaaaaabaaaaahaaababaaaaaaafaa -aaaaaaaaaaababababababababababaaabaaabababcsaHapazazaUaXayaYaZbaaGbWbdbgbhbmbnbpbubzbLbMbObPapbJabajabaaaaabaaababagagababababacabababaaabaeaeabaiabaaacabafabaaabababababababababababahabababababababab +aaaaaaaaaaababababababababababaaabaaabababcsaHapazazaUaycraYaZbaaGbWbdbgbhbmbnbpbubzbLbMbObPapbJabaaabaaaaabaaababagagababababacabababaaabaeaeabaiabaaacabafabaaabababababababababababahabababababababab aaaaaaaaaaabababababababaaaaaaaaaaaaabababafaHapazazbQayayaGaGaGaGbWbWbWbYbYbYbYbYbYbYbYbWbWapbJcsaaaafOdQdRgCdQdQfPagagagagababababababaeaeabababababababababagabababahababagabababacabaiabababadababac -aaaaaaaaaaababababaaaaaaaaaaaaabaaaaaaaaaactaHapazazaGaXaGbZcabZaGbWcjbWckbWckbWckbWckbWckbPapbJaaaaaadQdSfxdUdVdWdQababacabababababaeaeaeaeaaaaaeababacadabagagagagabababacabababababababababababababab +aaaaaaaaaaababababaaaaaaaaaaaaabaaaaaaaaaactaHapazazaGayaGbZcabZaGbWcjbWckbWckbWckbWckbWckbPapbJaaaaaadQdSfxdUdVdWdQababacabababababaeaeaeaeaaaaaeababacadabagagagagabababacabababababababababababababab aaaaaaaaaaabababababaaaaaaaaaaababababaaaaaaaHapazazclayaycmcmcmaGbWcjcnckbWckcnckbWckcnckcjapbJfQcScRdRdXdYdZdUaIdQabaaaaaaacababaaabaeaeaeaaaaaeajababababababagagabababababadafababafabababababababab abababafababababababababababababababaiaaaactaHapcoazayayaycpcmcmaGbWaJaLaSaSaScqaMaMaMaSaLaJapapapapapdRfgfRfkdTfhdRabaaaaadababababaaaaaaaeaeaeaeaaaaababafafabababababaiabababacabababababababababadab -abababababababababababacababababafabacaaaaaaaHapaGazcrayaycvcmcmaGaGaGaGaGaGaGaGaGaGcwcwaGaGapbJfSapcUdRhrflfmfnhsdQabaaaaabababacababaaaaaaaeaeamaaaaabababfLfMfLfNababababfLfMfLfNfLfNafababababababab -abababaiababababababababababababgahfabaaaactaHapapapazcxaycyaGcyayaGczczcAcAcBcBaGcCaGcCaGaGapbJaaaaaadRfogZfyfzfpdRadababacabababadabababaaaeaeanabababacabfLfLfLfLababaiabfLfLfLfLfLfLafababafabafabaa +abababababababababababacababababafabacaaaaaaaHapaGazazayaycvcmcmaGaGaGaGaGaGaGaGaGaGcwcwaGaGapbJfSapcUdRhrflfmfnhsdQabaaaaabababacababaaaaaaaeaeamaaaaabababfLfMfLfNababababfLfMfLfNfLfNafababababababab +abababaiababababababababababababgahfabaaaactaHapapapazayaycyaGcyayaGczczcAcAcBcBaGcCaGcCaGaGapbJaaaaaadRfogZfyfzfpdRabababacabababadabababaaaeaeanabababacabfLfLfLfLababaiabfLfLfLfLfLfLafababafabafabaa adababababababaiababababababababfZheaaababaacNcOapapazazcDaGaGaGaGayaycDayaGayayaGaGclclaGaGapbJctaaaadRfqgZgZfyfrdRbeababababaaaeaaabaaababaeaeaeaoababadabfLfLfNfLababababfLfLfNfLfMfLabababaaabababaa abababacabababababababababaaaaekhphqabababcsabcsaHapayazazayaDayayaGayefeSaGefeSaGaGayaGaGaGapbJabaaaafsftfngZgZfufvbDabadaaabaeaeaeaaamaaaaaeaeadaaababababfLfNfLfLababababfLfLfMfLfNfLacababababababab -abababababacababababababababaaaagbhbabafababaiabaHapcEazcFayaycGaycGhHhIayaGaGaGayaDaGayaGaGapbJctaaaacsababaaabaactaaababababaaaeaeaeaeaaaaaeajaaaaabababacfLfLfLfMabadababfMfLfLfLfLfLabababababababab +abababababacababababababababaaaagbhbabafababababaHapcEazcFayaycGaycGhHhIayaGaGaGayaDaGayaGaGapbJctaaaacsababaaabaactaaababababaaaeaeaeaeaaaaaeajaaaaabababacfLfLfLfMabadababfMfLfLfLfLfLabababababababab abacabababababababarabahababaaaahchdaaabaaababctaHapapbTbJaeaeaHapapapapapapapapapapapapapapapbJaaaaaaabacabaaaaaaabaaacababababaaaaaaaeaeaeaeaaababababababababababagababababacabababababababababababab adababababaiababababababababaaaaaaaaaaaaaaaaababgDcOcOcOcQaeaecPcOcOcOcOcOcOcOcOcOcOcOcOcOcOcOgEcsaaabababacabaaaaacaaabababacababaaaaaaaeaeamaaababadabababacabagababafabababababababadabababababababaf abababafabababababababababababababaaabaaaaabababcsabctaactabaecsabcsabcsaacsabctaactabcsaactaactabaaababababababaaaaaaababagabadabababaaaeaeanababababababababagabababadacababaiabababacabababadacabafab -abababababababababababacababaaaaabaaaahgaaabaaaaababaaabababaeabababaaabaaabaaaaaaabababababaaababaaasababaaaaabaaaaaaaaabagababababababaeaeaeaoaaamababagagagagababagababaaababababababafababababababab +abababababababababababacababaaaaabaaaahgaaabaaaaababaaabababaeabababaaabaaabaaaaaaabababababaaababaaaqababaaaaabaaaaaaaaabagababababababaeaeaeaoaaamababagagagagababagababaaababababababafababababababab abababaiabababababababababaaaaaaaaababhhhtafavawaxbyaaabhzcScThAaaacababaAaKaNaaabbCabbEbAaaaaaAaKaNabababbChtabaAaKaNaaaaaaagagababadacabaeaeaeaeaaabababagabababatagabababababababababababaaababababab -abababafababababababaiabababafababaaaahihtaaaOaPaQbyaactcUcVcWcXaeaaababaRaTaVaaaabCabbEbBaaaaaRaTaVabaiabbBaaabaRaTaVaaaaaaabagagababababaaaeaeaeaaaaababababadabababababacababafababababababababababab +abababafababababababaiabababafababaaaahihtaaaOaPaQbyaactcUcVcWcXaeaaababaRaTaVaaaabCabbEbBaaaaaRaTaVabababbBaaabaRaTaVaaaaaaabagagababababaaaeaeaeaaaaababababadabababababacababafababababababababababab abababababababababababacabababaaaaababaaaaaaaWbbbcbyabaaafafabaeaeababafbfbkceaaafafhtabababaabfbkceabababbCabaabfbkceaaaaababababacabababababaeaaaaaaabababagababacabababababaaakabacababababababacabab -abababaiababababababababababaaabaaabaiabababchdhdibyabaaaaababaeaeabafabfjfXfYaaaaafaahuababaafjfXfYababababababfjfXfYabaaaaabababababababadabaeaeaaajababababababadabadafaaaaaaaaababababababababababab +abababaiababababababababababaaabaaabababababchdhdibyabaaaaababaeaeabafabfjfXfYaaaaafaahuababaafjfXfYababababababfjfXfYabaaaaabababababababadabaeaeaaajababababababadabadafaaaaaaaaababababababababababab adababababababaiababababababaaaaababaaababababaaabababaaaaaaaeaeaeabafacababababababababababababababababababaaaaababababababaiafababaiababababaeaeaaababababababakabababaaaaapapaaabaaaiababadababacabab -abababacabababababababababababababababababababababadababadabaeaeabababababadaiababababacabababacabababacabababababababababababafabababacabaaaeaeagacababababababababacababaaapapaaaaabababababababababab -abababababacabababababababababadababababadababaaamaaafababaeaeaaababababababababaiabababababababaiabababababababafababababababababababababaaaeaeabababababababababababababaaaaaaaaabacababababababababab +abababacababababababababababababababababababababababababadabaeaeabababababababababababacabababacabababacabababababababababababafabababacabaaaeaeagacababababababababacababaaapapaaaaabababababababababab +abababababacabababababababababadababababadababaaamaaafababaeaeaaababababababababaiabababababababababababababababafababababababababababababaaaeaeabababababababababababababaaaaaaaaabacababababababababab abacabababababababarabafaiababababababababaiababababaaabaeaeaeababacababaeababacababadabababababababababaiabababababacabaaababababababadababaeabaaabababababababacabababagabaaaaababababaaababacaiababab ababababadabadababababababafcHcHcHcHcHcHcHcHcHcHcHcHaaafaeaeaeaeaeaeaeaeaeaeaeaeaaaaaeaaaaaaaaaaafaaabaaabaaaaabaaababaaaaabaaabaaababagabaeauabababababadabadabababababababababafababababababadabacabab abacababababababababababababcHcHcHcHcHcHcHcHcHcHcHcHacabaeaeaeaaabababaaaeaeaeaeaeaeaeaeaeabababaaababcJabababababafababababaaaaaaababababaealabadacababababababababagababababababadababababababaaabarab @@ -527,27 +521,27 @@ abadabababababababaaababababaaabababababababababababababaeaeaeabaiababababababad aiababacababacafabababaiababababaaabafacadababababababababaeaeacababababaiabababababacabababababababababaaaaaaaaabacabababababababaBababaeaeaeababababababaiababababaaabafacadababacabababababababababab abababababafababababababababababacacadafababababaiabadababaeaeaeababababababababababababacabababababababaaapapaaabakabababababakabababaeaeaeaaabababababababababababacacadafababababababababaaababababab acabababababababababadabababababababababababababababababababaeaeababarabacabababacabababababababarabafabaaapapaaabababababababababababaeaeaeabaiababababadababababababababababababacababababacababababab -abababababababababaiababacabadababababababababababababababaeaeababababababababadababababaiabababababababaaaaaaaaabababaiababababaEabababaeaeacababababaiababacabadababababababababababababababafabadabab -ababababababababadababababababababababababadacakababadababaeaeaeabababababaiabababababababababababababababababababababababababacababababauaeabababababababababababababababababadababababadababababababab -abababababaiabababababababababababaiabababadababababababababaeaeababadababababababababababacabababababababababababababababababababababababaeabababarabafababacababababababababaiabababababababababababab +abababababababababaiababacabadababababababababababababababaeaeabababababababababababababaiabababababababaaaaaaaaabababaiababababaEabababaeaeacababababaiababacabadababababababababababababababafabadabab +ababababababababadababababababababababababadacakababadababaeaeaeabababababababababababababababababababababababababababababababacababababauaeabababababababababababababababababadababababadababababababab +abababababaiabababababababababababaiabababadababababababababaeaeabababababababababababababacabababababababababababababababababababababababaeabababarabafababacababababababababaiabababababababababababab afacadababababababababababacadababababababcbcccdafababababaeaeabababababaabKbNbRaaabababababacabababababababaiaiababababababababababadababaeaeabababababacabababababafacadababababababababababacabababab -adafababafabababababababababababababafadababfwciabababababaaaeababaiabafabbSbUbVaaabababaiabababababafacadababababaaabababababacabababababaeaeaeababababababababababadafababcHcHcHcHcHcHcHcHabababababab +adafababafabababababababababababababafadababfwciabababababaaaeababababafabbSbUbVaaabababaiabababababafacadababababaaabababababacabababababaeaeaeababababababababababadafababcHcHcHcHcHcHcHcHabababababab abababababacababababababababaiababababababaccfcgabhjabababaeaehjabababababbXecenaaaaafafaaaaabaaaaaaaaafababafabaaababababababababababababaeaeacababadababaeababababababababcHcHcHcHcHcHcHcHaiabababafab abababababababababafacadababababababababfJaaaaabababababaCaeabaaabaaabaaabfafifWaaabhvhvababaabKbNbRababababacababaaaaaaababaiabababadababaaaeababaiaeaeaeaeababaiabababababcHcHcHcHcHcHcHcHabababababad abababadabababababadafababafababababababababcsabcsabcsaeaecuhkcsabcsabcsabaaabaaaaafbIbIbIafaabSbUbVaaafhvababacaabKbNbRafababababababababaeaeaeaeaeaeaeaeaeaeaeaeaeabababadcHcHcHcHcHcHcHcHabababababab -ababababababababababababababacabababababaactdcddddddddaeaedddddddddddeabadaaaaaaaaabaaaaabacaabXecenabbGaaababacaabSbUbVabadababababababaCaeabagabagabaeabababadabaeaeaeababcHcHcHcHcHcHcHcHabababababab +ababababababababababababababacababadababaactdcddddddddaeaedddddddddddeababaaaaaaaaabaaaaabacaabXecenabbGaaababacaabSbUbVabadababababababaCaeabagabagabaeabababadabaeaeaeababcHcHcHcHcHcHcHcHabababababab ababacafabababaiabababababababababababafababaHapapapapaeaeapapapapapbJcsabctaactabaabFbFbHaaaafafifWabbIbIbIabaaaabXecenabababababadabaeaeaeabacabababababadaiababacabaeaeaeaeaeaeaeaeaeaeaeaaabafacadab -abafababababababababababadabababababababadcsaHapedeeegegegeeeeeeedapapdddddddddfctababbFbFaaahaaaaaaaaabacafaaaaaafafifWababaaabafababaeaeaeababababababaiababababababafabaecHcHcHcHcHcHcHcHacacadafabab +abafababababababababababadababababababababcsaHapedeeegegegeeeeeeedapapdddddddddfctababbFbFaaahaaaaaaaaabacafaaaaaafafifWababaaabafababaeaeaeababababababaiababababababafabaecHcHcHcHcHcHcHcHacacadafabab ababababababadabababababababababababababababaHapeeeehBejhCeihDhJelapapapapapapbJaactabcsaactaactabctaactaactaaaaaaabaaaaaaabacacadabaeaeaeaaabababababadababacababababababaecHcHcHcHcHcHcHcHabababababab abababababaiababacababacafabababaiababababctaHdgemeehEeoeohEhEeeedeeedepedelapapdddddddddddddddddddddddddddfcsabaaaaaaaaababababacabaeaeaeabaiababababababababababababababaecHcHcHcHcHcHcHcHabababababab -ababababadabababababafababababababababababacaHapeeeeeeeeegeeeeeeeqeeepeeeeerapapapapapapapapapapapapapapapbJabaaabaaamaaadababababababaeaeacababababababababababababababaeaecHcHcHcHcHcHcHcHabababababad -abababababacabababababababababadabababababcsaHapeseeegegegeteueveeewexeweweleleyezeAeBeCeCeCgVeCeCeAeAezapbJctaaaactaaaaaaaaaactacabababaeabaeabababacababaaabababababababaecHcHcHcHcHcHcHcHaiabababafab +ababababadabababababafababababababababababacaHapeeeeeeeeegeeeeeeeeeeepeeeeerapapapapapapapapapapapapapapapbJabaaabaaamaaadababababababaeaeacababababababababababababababaeaecHcHcHcHcHcHcHcHabababababad +abababababacabababababababababadabababababcsaHapeeeeegegegeteueveeewexeweweleleyezeAeBeCeCeCgVeCeCeAeAezapbJctaaaactaaaaaaaaaactacabababaeabaeabababacababaaabababababababaecHcHcHcHcHcHcHcHaiabababafab ababababababababababababababaiababacabaaaaabaHapelhlegegegeDeueveleEeEeEeweleleyeFeGeHeIeJeKeLeMeNeOePeQapbJaaacabfsfyhahahafAfvbeabacaeaeaeababarabababababababaiababababaeaeaeaeaeaeaeaeaeabababababad -abababadabababababababababadabababababadaacsaHapelhmegegegeeeeeeeeeEeEeEeleleleyeyeyeReReReReReReReReyeyapbJfTababdRfBfyhafyfCdQbeabaaaeaeaeajababababababababababababababaecHcHcHcHcHcHcHcHabababababab -abababababababababababababababababababaaadaaaHapelhmegegelhFhGgWeleleEeEeleleleleTeyeUeyeUeyeUeyeUeyeUeQapapapabacdRfgdUfnebfhdRhwaaababaeaeabababababababababadababababababcHcHcHcHcHcHcHcHabababababab +abababadabababababababababadababababababaacsaHapelhmegegegeeeeeeeeeEeEeEeleleleyeyeyeReReReReReReReReyeyapbJfTababdRfBfyhafyfCdQbeabaaaeaeaeajababababababababababababababaecHcHcHcHcHcHcHcHabababababab +abababababababababababababababababababaaabaaaHapelhmegegelhFhGgWeleleEeEeleleleleTeyeUeyeUeyeUeyeUeyeUeQapapapabacdRfgdUfnebfhdRhwaaababaeaeabababababababababadababababababcHcHcHcHcHcHcHcHabababababab ababacafabababaiababababacafabababaiabaaaactaHapelhnegegeghFhGeeeVeleleleleWeWeleTfUeUeyeUeXeUeyeUeXeUeTapbJfVababdRfEhxdTdYfFdQabaaaaaeaeaeaeabababababaiabaiababacababacafcHcHcHcHcHcHcHcHaaabafacadab abafabababababababababafabababababababaaaaaaaHapeehoegegegelegeYeZeZelelepdPdPelezeAeCeCeCfbeBeBeBeCeAezapbJabababdRfudZflfGfHdRadababacaeaeabababababababababababababafababcHcHcHcHcHcHcHcHacacadafabab ababababababadabababababababababadababababctaHapeeemfdegegegegegeeeeelelfceeeeeeeleeeleeeeeeeeeeeeeeeeeeapbJcsababdRfqfIfGfnfrdRababababaeababababababadababacabababababababcHcHcHcHcHcHcHcHabababababab -abababababaiababacababababababaiababacabadabaHapeefdfdeeegegegeYfefeelelffeeeheeeeemeeeseeeeeeeeeeeeeeeeapbJababacdRhyfmdUdVfKdRaaabadaaaealaaafababaiababacabababababababababaiababacabadababababababab -aFabababadabababababababababadababababababcsaHapeeeleeeseeegegeeeeeeeeeeeleseeeeeeeeeeeeeeeeeeeeeeeeeseeapbJcsabaadQdQdRdRdQdQdRababacaaaeaeaeaeabadababababababababababababadababababababababababababad +abababababaiababacababababababaiababacabababaHapeefdfdeeegegegeYfefeelelffeeeeeeeeemeeeeeeeeeeeeeeeeeeeeapbJababacdRhyfmdUdVfKdRaaabadaaaealaaafababaiababacabababababababababaiababacabadababababababab +aFabababadabababababababababadababababababcsaHapeeeleeeeeeegegeeeeeeeeeeeleeeeeeeeeeeeeeeeeeeeeeeeeeeeeeapbJcsabaadQdQdRdRdQdQdRababacaaaeaeaeaeabadababababababababababababadababababababababababababad "} From dc03333ee80cadcf3964e87755cb2a2808934d9b Mon Sep 17 00:00:00 2001 From: HaultyAnonie Date: Tue, 16 Apr 2024 13:47:20 +0100 Subject: [PATCH 03/50] Pass through IV drips. --- code/game/objects/structures/iv_drip.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/game/objects/structures/iv_drip.dm b/code/game/objects/structures/iv_drip.dm index 38073ff0a4..dec97fcae2 100644 --- a/code/game/objects/structures/iv_drip.dm +++ b/code/game/objects/structures/iv_drip.dm @@ -3,7 +3,7 @@ icon = 'icons/obj/surgery.dmi' icon_state = "iv_drip_unhooked" anchored = FALSE - density = TRUE + density = FALSE // You can pass through IV drips. var/mob/living/human/attached = null var/mode = TRUE // TRUE is injecting, FALSE is taking blood. var/obj/item/weapon/reagent_containers/beaker = null @@ -46,7 +46,7 @@ ..() if (attached) - visible_message("[attached] is detached from \the [src]") + visible_message("[attached] is detached from \the [src].") attached = null update_icon() return From 48b20226d3d32e14335990f2ce5748ec0b23fc93 Mon Sep 17 00:00:00 2001 From: HaultyAnonie Date: Tue, 16 Apr 2024 17:54:30 +0100 Subject: [PATCH 04/50] \the - and =- description updates --- code/_helpers/mobs.dm | 1 - code/game/objects/structures/appliances.dm | 2 +- code/modules/1713/punishment.dm | 10 +++++----- .../reagents/reagent_containers/glass/bottle.dm | 6 +++--- 4 files changed, 9 insertions(+), 10 deletions(-) diff --git a/code/_helpers/mobs.dm b/code/_helpers/mobs.dm index 2f0ba4783e..e9c9687cb8 100644 --- a/code/_helpers/mobs.dm +++ b/code/_helpers/mobs.dm @@ -1017,7 +1017,6 @@ Proc for attack log creation, because really why not return newmobs - //Orders mobs by type then by name /proc/sortmobs() var/list/moblist = list() diff --git a/code/game/objects/structures/appliances.dm b/code/game/objects/structures/appliances.dm index cab0ba3518..8a0d89d8d5 100644 --- a/code/game/objects/structures/appliances.dm +++ b/code/game/objects/structures/appliances.dm @@ -91,7 +91,7 @@ /obj/structure/TV/bullet_act(var/obj/item/projectile/proj) health -= proj.damage * 0.01 - visible_message("\The [src] is hit by the [proj.name]!") + visible_message("\The [src] is hit by \the [proj.name]!") try_destroy() /obj/structure/TV/fire_act(temperature) diff --git a/code/modules/1713/punishment.dm b/code/modules/1713/punishment.dm index f74663eb4b..6e63026170 100644 --- a/code/modules/1713/punishment.dm +++ b/code/modules/1713/punishment.dm @@ -20,7 +20,7 @@ /obj/structure/noose/bullet_act(var/obj/item/projectile/P) if (hanging) hanging.bullet_act(P) - visible_message("[hanging] is hit by the [P.name]!") + visible_message("[hanging] is hit by \the [P.name]!") else ..() @@ -126,7 +126,7 @@ /obj/structure/gallows/bullet_act(var/obj/item/projectile/P) if (hanging) hanging.bullet_act(P) - visible_message("[hanging] is hit by the [P.name]!") + visible_message("[hanging] is hit by \the [P.name]!") else ..() @@ -297,7 +297,7 @@ /obj/structure/cross/bullet_act(var/obj/item/projectile/P) if (hanging) hanging.bullet_act(P) - visible_message("[hanging] is hit by the [P.name]!") + visible_message("[hanging] is hit by \the [P.name]!") else ..() @@ -394,7 +394,7 @@ /obj/structure/pillory/bullet_act(var/obj/item/projectile/P) if (hanging && prob(30)) hanging.bullet_act(P) - visible_message("[hanging] is hit by the [P.name]!") + visible_message("[hanging] is hit by \the [P.name]!") else ..() @@ -510,7 +510,7 @@ /obj/structure/post_execution/bullet_act(var/obj/item/projectile/P) if (hanging && prob(30)) hanging.bullet_act(P) - visible_message("[hanging] is hit by the [P.name]!") + visible_message("[hanging] is hit by \the [P.name]!") else ..() diff --git a/code/modules/reagents/reagent_containers/glass/bottle.dm b/code/modules/reagents/reagent_containers/glass/bottle.dm index 40aa39589a..5600acb0d9 100644 --- a/code/modules/reagents/reagent_containers/glass/bottle.dm +++ b/code/modules/reagents/reagent_containers/glass/bottle.dm @@ -127,7 +127,7 @@ /obj/item/weapon/reagent_containers/glass/bottle/antitoxin name = "dylovene bottle" - desc = "A small bottle of dylovene. Counters poisons, and repairs damage. A wonder drug." + desc = "A small bottle. Contains dylovene - counters poisons." icon = 'icons/obj/chemical.dmi' icon_state = "bottle-4" @@ -138,7 +138,7 @@ /obj/item/weapon/reagent_containers/glass/bottle/mutagen name = "unstable mutagen bottle" - desc = "A small bottle of unstable mutagen. Randomly changes the DNA structure of whoever comes in contact." + desc = "A small bottle. Contains unstable mutagen - randomly changes the DNA structure of whoever comes in contact." icon = 'icons/obj/chemical.dmi' icon_state = "bottle-1" @@ -204,7 +204,7 @@ /obj/item/weapon/reagent_containers/glass/bottle/pacid name = "Polytrinic Acid Bottle" - desc = "A small bottle. Contains a small amount of Polytrinic Acid" + desc = "A small bottle. Contains polytrinic acid" icon = 'icons/obj/chemical.dmi' icon_state = "bottle-4" New() From 31ee1949e6e7078a7cbd4ba0e9d57f0e62ff7f2f Mon Sep 17 00:00:00 2001 From: HaultyAnonie Date: Tue, 16 Apr 2024 18:30:10 +0100 Subject: [PATCH 05/50] Multiple \the - DESCRIPTION changes - PLURALITY --- code/game/objects/map_metadata/operation_falcon.dm | 2 +- code/game/objects/map_metadata/pepelsibirsk.dm | 2 +- code/game/objects/structures.dm | 12 ++++++------ code/game/objects/structures/appliances.dm | 6 +++--- code/game/objects/structures/barricades.dm | 6 +++--- code/game/objects/structures/door.dm | 2 +- code/game/objects/structures/plant_pots.dm | 2 +- code/game/objects/structures/window.dm | 2 +- code/modules/projectiles/projectile.dm | 2 +- 9 files changed, 18 insertions(+), 18 deletions(-) diff --git a/code/game/objects/map_metadata/operation_falcon.dm b/code/game/objects/map_metadata/operation_falcon.dm index 2f343adc17..ef6f1dfcf6 100644 --- a/code/game/objects/map_metadata/operation_falcon.dm +++ b/code/game/objects/map_metadata/operation_falcon.dm @@ -529,7 +529,7 @@ var/global/list/fob_names_russian = list("Anna", "Boris", "Dmitri", "Yelena", "I /obj/structure/supply_crate/bullet_act(var/obj/item/projectile/proj) health -= proj.damage * 0.01 - visible_message(SPAN_NOTICE("\The [src] is hit by the [proj.name]!")) + visible_message(SPAN_NOTICE("\The [src] is hit by \the [proj.name]!")) try_destroy() diff --git a/code/game/objects/map_metadata/pepelsibirsk.dm b/code/game/objects/map_metadata/pepelsibirsk.dm index 853e1dd50d..e2029d1a76 100644 --- a/code/game/objects/map_metadata/pepelsibirsk.dm +++ b/code/game/objects/map_metadata/pepelsibirsk.dm @@ -1043,7 +1043,7 @@ var/global/datum/external_relations/external_relations = new() /obj/structure/anti_air_crate/bullet_act(var/obj/item/projectile/proj) health -= proj.damage * 0.01 - visible_message(SPAN_NOTICE("\The [src] is hit by the [proj.name]!")) + visible_message(SPAN_NOTICE("\The [src] is hit by \the [proj.name]!")) try_destroy() /obj/structure/anti_air_crate/attack_hand(mob/living/human/H as mob) diff --git a/code/game/objects/structures.dm b/code/game/objects/structures.dm index 219778854c..4bd4ce4dfc 100644 --- a/code/game/objects/structures.dm +++ b/code/game/objects/structures.dm @@ -109,26 +109,26 @@ return TRUE /obj/structure/proc/turf_is_crowded(var/mob/living/user) - var/turf/T = get_step(get_turf(user), user.dir) - var/turf/TT = get_turf(src) + var/turf/T = get_step(get_turf(user), src.dir) // Target-Turf + var/turf/TT = get_turf(src) // Start-Turf // Check for climbable objects in the current turf for (var/obj/O in T.contents) if (istype(O, /obj/structure)) var/obj/structure/S = O if (!S) continue // Skip if S is not valid - if (S.climbable) continue // Skip if the object is climbable + if (S.climbable) continue // Skip if the object is climbable if (O && O.density && !(O.flags & ON_BORDER)) //ON_BORDER structures are handled by the Adjacent() check. - return O + return O // Return the dense object that blocks our way. - // Check for climbable objects in the adjacent turf + // Check for climbable objects in the target turf for (var/obj/O in TT.contents) if (istype(O, /obj/structure)) var/obj/structure/S = O if (!S) continue // Skip if S is not valid if (S.climbable) continue // Skip if the object is climbable if (O && O.density && !(O.flags & ON_BORDER)) //ON_BORDER structures are handled by the Adjacent() check. - return O + return O // Return the dense object that blocks our way. // If no crowded object is found, return FALSE return FALSE diff --git a/code/game/objects/structures/appliances.dm b/code/game/objects/structures/appliances.dm index 8a0d89d8d5..6d13c7409a 100644 --- a/code/game/objects/structures/appliances.dm +++ b/code/game/objects/structures/appliances.dm @@ -96,7 +96,7 @@ /obj/structure/TV/fire_act(temperature) if (prob(35 * (temperature/500))) - visible_message("[src] is damaged by the fire and breaks apart!.") + visible_message("\The [src] is destroyed by the fire!") qdel(src) /obj/structure/TV/attackby(obj/item/W as obj, mob/user as mob) @@ -119,7 +119,7 @@ /obj/structure/TV/bullet_act(var/obj/item/projectile/proj) health -= proj.damage * 0.01 - visible_message("\The [src] is hit by the [proj.name]!") + visible_message("\The [src] is hit by \the [proj.name]!") try_destroy() /obj/structure/TV/proc/try_destroy() @@ -150,7 +150,7 @@ /obj/structure/TV/television/attackby(obj/O as obj, mob/living/human/user as mob) if (istype(O,/obj/item/weapon/wrench)) playsound(loc, 'sound/items/Ratchet.ogg', 100, TRUE) - user << (anchored ? "You unfasten \the [src] from the floor." : "You secure \the [src] to the floor.") + user << (anchored ? "You unfasten \the [src] from the floor." : "You secure \the [src] to the floor.") anchored = !anchored else if (istype(O,/obj/item/weapon/hammer)) playsound(loc, 'sound/items/Screwdriver.ogg', 75, TRUE) diff --git a/code/game/objects/structures/barricades.dm b/code/game/objects/structures/barricades.dm index c6c776d891..10caf2520c 100644 --- a/code/game/objects/structures/barricades.dm +++ b/code/game/objects/structures/barricades.dm @@ -184,12 +184,12 @@ /obj/structure/barricade/bullet_act(var/obj/item/projectile/proj) health -= proj.damage * 0.01 - visible_message(SPAN_NOTICE("\The [src] is hit by the [proj.name]!")) + visible_message(SPAN_NOTICE("\The [src] is hit by \the [proj.name]!")) try_destroy() /obj/structure/barricade/horizontal name = "wood barrier" - desc = "A wood wall made of vines and logs roped together." + desc = "A wood wall constructed from interwoven logs." icon_state = "woodbarricade_horizontal" flammable = TRUE protection_chance = 85 @@ -197,7 +197,7 @@ /obj/structure/barricade/vertical name = "wood barrier" - desc = "A wood wall made of vines and logs roped together." + desc = "A wood wall constructed from interwoven logs." icon_state = "woodbarricade_vertical" flammable = TRUE protection_chance = 85 diff --git a/code/game/objects/structures/door.dm b/code/game/objects/structures/door.dm index 34e17d8ae1..675746c22d 100644 --- a/code/game/objects/structures/door.dm +++ b/code/game/objects/structures/door.dm @@ -49,7 +49,7 @@ /obj/structure/simple_door/bullet_act(var/obj/item/projectile/P) var/damage = max(P.damage/2, 2) health -= damage - visible_message("[src] is hit by the [P.name]!") + visible_message("[src] is hit by \the [P.name]!") if (istype(src, /obj/structure/simple_door/key_door)) src:damage_display() if (health <= 0) diff --git a/code/game/objects/structures/plant_pots.dm b/code/game/objects/structures/plant_pots.dm index 66a5f163f3..8d9cb6ef3a 100644 --- a/code/game/objects/structures/plant_pots.dm +++ b/code/game/objects/structures/plant_pots.dm @@ -497,7 +497,7 @@ /obj/structure/plant_pot/bullet_act(var/obj/item/projectile/proj) health -= proj.damage/3 - visible_message("\The [src] is hit by the [proj.name]!") + visible_message("\The [src] is hit by \the [proj.name]!") try_destroy() /obj/structure/plant_pot/proc/try_destroy() diff --git a/code/game/objects/structures/window.dm b/code/game/objects/structures/window.dm index 6560adc667..73bceb17b7 100644 --- a/code/game/objects/structures/window.dm +++ b/code/game/objects/structures/window.dm @@ -438,7 +438,7 @@ shatter() /obj/structure/window_frame - desc = "A good old window frame." + desc = "A window frame." icon_state = "windownew_frame" layer = MOB_LAYER + 0.01 anchored = TRUE diff --git a/code/modules/projectiles/projectile.dm b/code/modules/projectiles/projectile.dm index db9ba0c454..56c2c2c57e 100644 --- a/code/modules/projectiles/projectile.dm +++ b/code/modules/projectiles/projectile.dm @@ -337,7 +337,7 @@ do_bullet_act(target_mob, hit_zone) if (blockedhit == FALSE) if (silenced) - to_chat(target_mob, SPAN_DANGER("You've been hit in the [parse_zone(hit_zone)] by the shrapnel!")) + to_chat(target_mob, SPAN_DANGER("You've been hit in \the [parse_zone(hit_zone)] by the shrapnel!")) else visible_message(SPAN_DANGER("\The [target_mob] is hit by the shrapnel in the [parse_zone(hit_zone)]!")) return FALSE From 774d7d89d2cbedeed7257010efbd3f562c78d4e7 Mon Sep 17 00:00:00 2001 From: HaultyAnonie Date: Tue, 16 Apr 2024 19:50:57 +0100 Subject: [PATCH 06/50] Blackout out actually blacks out. --- code/game/mob/living/damage_procs.dm | 2 +- code/modules/organs/brain.dm | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/code/game/mob/living/damage_procs.dm b/code/game/mob/living/damage_procs.dm index c20a2c0027..9bd3d330e8 100644 --- a/code/game/mob/living/damage_procs.dm +++ b/code/game/mob/living/damage_procs.dm @@ -40,7 +40,7 @@ -/mob/living/proc/apply_effect(var/effect = FALSE,var/effecttype = STUN, var/blocked = FALSE, var/check_protection = TRUE) +/mob/living/proc/apply_effect(var/effect = FALSE, var/effecttype = STUN, var/blocked = FALSE, var/check_protection = TRUE) if (!effect || (blocked >= 2)) return FALSE switch(effecttype) if (STUN) diff --git a/code/modules/organs/brain.dm b/code/modules/organs/brain.dm index 64bbea8a15..5fa0fad927 100644 --- a/code/modules/organs/brain.dm +++ b/code/modules/organs/brain.dm @@ -118,7 +118,7 @@ if((damage >= (max_damage * 0.75))) if(!owner.lying && prob(2)) to_chat(owner, "You black out!") - owner.Paralyse(10) + owner.SetSleeping(rand(10,15)) // Sets the user to sleep (blackout). // Brain damage from low oxygenation or lack of blood. // No heart? You are going to have a very bad time. Not 100% lethal because heart transplants should be a thing. From af3ef6b6bc63265eb826bde8376c3cab9a91e024 Mon Sep 17 00:00:00 2001 From: HaultyAnonie Date: Tue, 16 Apr 2024 20:19:33 +0100 Subject: [PATCH 07/50] Russian translations and proper spans for bullet_acts() --- code/game/mob/living/carbon/human/human_helpers.dm | 2 +- code/game/objects/map_metadata/operation_falcon.dm | 2 +- code/game/objects/map_metadata/pepelsibirsk.dm | 2 +- code/game/objects/structures/appliances.dm | 4 ++-- code/game/objects/structures/barricades.dm | 2 +- code/modules/1713/apparel_worldwars.dm | 4 ++-- code/modules/1713/machinery/vehicles.dm | 2 +- code/modules/1713/weapons/attachment.dm | 8 ++++---- code/modules/1713/weapons/guns/flintlock.dm | 4 ++-- code/modules/1713/weapons/guns/revolvers.dm | 4 ++-- code/modules/projectiles/projectile.dm | 2 +- code/modules/reagents/reagent_containers/glass.dm | 2 +- 12 files changed, 19 insertions(+), 19 deletions(-) diff --git a/code/game/mob/living/carbon/human/human_helpers.dm b/code/game/mob/living/carbon/human/human_helpers.dm index 99a6f65681..5738f7ddc0 100644 --- a/code/game/mob/living/carbon/human/human_helpers.dm +++ b/code/game/mob/living/carbon/human/human_helpers.dm @@ -309,7 +309,7 @@ /mob/living/human/proc/process_vehicle_roofs() if (!client) return - var/view_dist = client.view + 4 // + запас чтобы при передвижении не было видно прогрузку + var/view_dist = client.view + 4 // + reserve so that when moving the load is not visible [translated] var/view_x_offset = 0 var/view_y_offset = 0 diff --git a/code/game/objects/map_metadata/operation_falcon.dm b/code/game/objects/map_metadata/operation_falcon.dm index ef6f1dfcf6..dcc27ef10d 100644 --- a/code/game/objects/map_metadata/operation_falcon.dm +++ b/code/game/objects/map_metadata/operation_falcon.dm @@ -529,7 +529,7 @@ var/global/list/fob_names_russian = list("Anna", "Boris", "Dmitri", "Yelena", "I /obj/structure/supply_crate/bullet_act(var/obj/item/projectile/proj) health -= proj.damage * 0.01 - visible_message(SPAN_NOTICE("\The [src] is hit by \the [proj.name]!")) + visible_message(SPAN_DANGER("\The [src] is hit by \the [proj.name]!")) try_destroy() diff --git a/code/game/objects/map_metadata/pepelsibirsk.dm b/code/game/objects/map_metadata/pepelsibirsk.dm index e2029d1a76..b2b90faa4b 100644 --- a/code/game/objects/map_metadata/pepelsibirsk.dm +++ b/code/game/objects/map_metadata/pepelsibirsk.dm @@ -1043,7 +1043,7 @@ var/global/datum/external_relations/external_relations = new() /obj/structure/anti_air_crate/bullet_act(var/obj/item/projectile/proj) health -= proj.damage * 0.01 - visible_message(SPAN_NOTICE("\The [src] is hit by \the [proj.name]!")) + visible_message(SPAN_DANGER("\The [src] is hit by \the [proj.name]!")) try_destroy() /obj/structure/anti_air_crate/attack_hand(mob/living/human/H as mob) diff --git a/code/game/objects/structures/appliances.dm b/code/game/objects/structures/appliances.dm index 6d13c7409a..d4b9279888 100644 --- a/code/game/objects/structures/appliances.dm +++ b/code/game/objects/structures/appliances.dm @@ -91,7 +91,7 @@ /obj/structure/TV/bullet_act(var/obj/item/projectile/proj) health -= proj.damage * 0.01 - visible_message("\The [src] is hit by \the [proj.name]!") + visible_message("\The [src] is hit by \the [proj.name]!") try_destroy() /obj/structure/TV/fire_act(temperature) @@ -119,7 +119,7 @@ /obj/structure/TV/bullet_act(var/obj/item/projectile/proj) health -= proj.damage * 0.01 - visible_message("\The [src] is hit by \the [proj.name]!") + visible_message("\The [src] is hit by \the [proj.name]!") try_destroy() /obj/structure/TV/proc/try_destroy() diff --git a/code/game/objects/structures/barricades.dm b/code/game/objects/structures/barricades.dm index 10caf2520c..4e7c7933d4 100644 --- a/code/game/objects/structures/barricades.dm +++ b/code/game/objects/structures/barricades.dm @@ -184,7 +184,7 @@ /obj/structure/barricade/bullet_act(var/obj/item/projectile/proj) health -= proj.damage * 0.01 - visible_message(SPAN_NOTICE("\The [src] is hit by \the [proj.name]!")) + visible_message(SPAN_DANGER("\The [src] is hit by \the [proj.name]!")) try_destroy() /obj/structure/barricade/horizontal diff --git a/code/modules/1713/apparel_worldwars.dm b/code/modules/1713/apparel_worldwars.dm index 61ac415df7..f696666d73 100644 --- a/code/modules/1713/apparel_worldwars.dm +++ b/code/modules/1713/apparel_worldwars.dm @@ -2840,7 +2840,7 @@ obj/item/clothing/accessory/storage/webbing/ww1/ww2/stormgroup/Scout /obj/item/clothing/head/helmet/ww2/roa_helmet1 name = "stalhelm ROA" - desc = "Обычный немецкий штальхельм, только он принадлежит Русской Освободительной Армии." + desc = "An ordinary German Stahlhelm, it most likely belongs to the Russian Liberation Army." icon_state = "roa_helmet" item_state = "roa_helmet" worn_state = "roa_helmet" @@ -2850,7 +2850,7 @@ obj/item/clothing/accessory/storage/webbing/ww1/ww2/stormgroup/Scout /obj/item/clothing/head/helmet/ww2/roa_helmet2 name = "german stalhelm ROA" - desc = "Обычный немецкий штальхельм, имеет опознавательные знаки Русской Освободительной Армии." + desc = "An ordinary German Stahlhelm, it has identification marks indicating it belongs to the Russian Liberation Army." icon_state = "roa_helmet2" item_state = "roa_helmet2" worn_state = "roa_helmet2" diff --git a/code/modules/1713/machinery/vehicles.dm b/code/modules/1713/machinery/vehicles.dm index 40811042a0..3c450acc66 100644 --- a/code/modules/1713/machinery/vehicles.dm +++ b/code/modules/1713/machinery/vehicles.dm @@ -829,7 +829,7 @@ weight = 60 step = 1 maxstep = 3 - //targettype = /obj/structure/vehicle/boat/rhib // хуй знает че это потом надо будет исправить + //targettype = /obj/structure/vehicle/boat/rhib // who knows what this will have to be fixed later [translated] /obj/item/vehicleparts/frame/proc/do_color() colorv = image("icon" = icon, "icon_state" = "[icon_state]_mask") diff --git a/code/modules/1713/weapons/attachment.dm b/code/modules/1713/weapons/attachment.dm index 6921b7c81b..918bb935d4 100644 --- a/code/modules/1713/weapons/attachment.dm +++ b/code/modules/1713/weapons/attachment.dm @@ -648,7 +648,7 @@ Current Defines (_defines/attachment.dm) var/obj/item/weapon/gun/projectile/P = G if (caliber != "multicaliber") if (P.caliber != caliber) - user << "[src.name] can't be attached!" + to_chat(user, SPAN_WARNING("\The [src.name] can't be attached!")) return if (quick) A_attached = TRUE @@ -671,7 +671,7 @@ Current Defines (_defines/attachment.dm) G.attachments += src G.update_attachment_actions(user) G.ergonomics *= src.ergonomics - user << "You attach [src] to the [G]." + to_chat(user, SPAN_NOTICE("You attach \the [src] to the [G].")) G.silencer = src G.update_icon() else @@ -687,7 +687,7 @@ Current Defines (_defines/attachment.dm) A_attached = FALSE loc = get_turf(src) G.ergonomics /= src.ergonomics - user << "You remove [src] from the [G]." + to_chat(user, SPAN_NOTICE("You remove \the [src] from the [G].")) G.silencer = null G.update_icon() else @@ -697,7 +697,7 @@ Current Defines (_defines/attachment.dm) /obj/item/weapon/attachment/silencer/plastic_bottle name = "plastic bottle suppressor" icon_state = "plastic_bottle_suppressor" - desc = "Не то чтобы этот глушитель хоть как-то работал. Надев его вы будете выглядеть как клоун" + desc = "This suppressor might not even work, but it's worth a try." reduction = 5 fits = list("smg", "rifle") ergonomics = 1 diff --git a/code/modules/1713/weapons/guns/flintlock.dm b/code/modules/1713/weapons/guns/flintlock.dm index fe356f1c88..4c26716739 100644 --- a/code/modules/1713/weapons/guns/flintlock.dm +++ b/code/modules/1713/weapons/guns/flintlock.dm @@ -320,8 +320,8 @@ accuracy = 4 /obj/item/weapon/gun/projectile/flintlock/duellingpistol - name = "Duelling Flintlock " - desc = "A typical Duelling Pistol. Used by gentlemen who take part in duels." + name = "Duelling Flintlock" + desc = "A typical flintlock. Used by gentlemen who take part in duels." icon_state = "flintlock_duelingpistol" item_state = "pistol" shake_strength = 2.5 diff --git a/code/modules/1713/weapons/guns/revolvers.dm b/code/modules/1713/weapons/guns/revolvers.dm index 1632448913..8c6c9432c1 100644 --- a/code/modules/1713/weapons/guns/revolvers.dm +++ b/code/modules/1713/weapons/guns/revolvers.dm @@ -126,13 +126,13 @@ count++ loaded.Cut() if (count) - visible_message("[user] unloads [src].", "You unload [count] round\s from [src].") + user.visible_message("[user] unloads \the [src].", "You unload [count] round\s from \the [src].") if (bulletinsert_sound) playsound(loc, bulletinsert_sound, 75, TRUE) else if (load_method & SINGLE_CASING) var/obj/item/ammo_casing/C = loaded[loaded.len] loaded.len-- user.put_in_hands(C) - visible_message("[user] removes \a [C] from [src].", "You remove \a [C] from [src].") + user.visible_message("[user] removes \a [C] from \the [src].", "You remove \a [C] from \the [src].") if (istype(src, /obj/item/weapon/gun/projectile/boltaction)) var/obj/item/weapon/gun/projectile/boltaction/B = src if (B.bolt_safety && !B.loaded.len) diff --git a/code/modules/projectiles/projectile.dm b/code/modules/projectiles/projectile.dm index 56c2c2c57e..6317af6011 100644 --- a/code/modules/projectiles/projectile.dm +++ b/code/modules/projectiles/projectile.dm @@ -517,7 +517,7 @@ else passed_trenches = 0 - if (!is_trench && launch_from_trench && firer.prone && !overcoming_trench) // стрельба лежа из окопа в окоп невозможна + if (!is_trench && launch_from_trench && firer.prone && !overcoming_trench) // shooting while lying down from trench to trench is impossible [translated] T.visible_message(SPAN_WARNING("\The [name] hits the wall of the trench!")) qdel(src) return diff --git a/code/modules/reagents/reagent_containers/glass.dm b/code/modules/reagents/reagent_containers/glass.dm index 6c3fb536c8..0b33b580fc 100644 --- a/code/modules/reagents/reagent_containers/glass.dm +++ b/code/modules/reagents/reagent_containers/glass.dm @@ -1034,7 +1034,7 @@ var/list/not_resolved_in_attackby_objects = list(/obj/structure/chemical_dispens /obj/item/weapon/reagent_containers/glass/barrel/gunpowder/bullet_act(var/obj/item/projectile/proj) if (proj && !proj.nodamage) if (prob(30)) - visible_message("\The [src] is hit by \the [proj] and explodes!") + visible_message("\The [src] is hit by \the [proj] and explodes!") explode() return TRUE return FALSE From 2e4fa5032c6790b630a0cd867f8a500f5e4e6ca0 Mon Sep 17 00:00:00 2001 From: HaultyAnonie Date: Tue, 16 Apr 2024 20:29:27 +0100 Subject: [PATCH 08/50] Forgot a SPAN --- code/game/objects/structures/plant_pots.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/objects/structures/plant_pots.dm b/code/game/objects/structures/plant_pots.dm index 8d9cb6ef3a..3deb23a30e 100644 --- a/code/game/objects/structures/plant_pots.dm +++ b/code/game/objects/structures/plant_pots.dm @@ -497,7 +497,7 @@ /obj/structure/plant_pot/bullet_act(var/obj/item/projectile/proj) health -= proj.damage/3 - visible_message("\The [src] is hit by \the [proj.name]!") + visible_message("\The [src] is hit by \the [proj.name]!") try_destroy() /obj/structure/plant_pot/proc/try_destroy() From 449849d3a005996fe871c86cc105dc87ccdfca91 Mon Sep 17 00:00:00 2001 From: HaultyAnonie Date: Tue, 16 Apr 2024 21:36:44 +0100 Subject: [PATCH 09/50] Incur a dead check for shit-piss --- code/game/mob/living/carbon/human/shit_piss.dm | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/code/game/mob/living/carbon/human/shit_piss.dm b/code/game/mob/living/carbon/human/shit_piss.dm index 8c216db324..6c53b9e2dc 100644 --- a/code/game/mob/living/carbon/human/shit_piss.dm +++ b/code/game/mob/living/carbon/human/shit_piss.dm @@ -316,7 +316,8 @@ playsound(src.loc, 'sound/effects/poo2.ogg', 60, 1) bowels -= rand(120,150) else - to_chat(src, "You don't have to.") + if(stat != DEAD) + to_chat(src, "You don't have to.") return visible_message("[message]") @@ -324,7 +325,8 @@ /mob/living/human/proc/handle_piss() var/message = null if (bladder < 30) - to_chat(src, "You don't have to.") + if(stat != DEAD) + to_chat(src, "You don't have to.") return var/mob/living/M = locate() in src.loc var/obj/structure/toilet/T = locate() in src.loc From 29f6a04bf435f1fdf47433bacbb0b50dbd3255ac Mon Sep 17 00:00:00 2001 From: HaultyAnonie Date: Tue, 16 Apr 2024 21:37:21 +0100 Subject: [PATCH 10/50] Check for climbable barricades [siegeladder hotfix] sandbags and dirt barriers are under window subtype, thank god for this shitcode, allowing me to properly code in the siege ladder fix for only barricades that need it. --- code/game/objects/structures.dm | 37 +++++++++++++++++---------------- 1 file changed, 19 insertions(+), 18 deletions(-) diff --git a/code/game/objects/structures.dm b/code/game/objects/structures.dm index 4bd4ce4dfc..6c408895e2 100644 --- a/code/game/objects/structures.dm +++ b/code/game/objects/structures.dm @@ -164,26 +164,27 @@ return FALSE // Check if the target turf is a table or a crate - if (istype(src, /obj/structure/table) || istype(src, /obj/structure/closet/crate)) - if (!T || T.density) - return - user.visible_message(SPAN_WARNING("[user] starts climbing onto \the [src]!"), SPAN_WARNING("You start climbing onto \the [src]!")) - user.face_atom(T) - climbers |= user - if (!do_after(user,(issmall(user) ? 20 : 34))) - climbers -= user - return - if (!can_climb(user, post_climb_check=1)) + if (istype(src, /obj/structure/table) || istype(src, /obj/structure/closet/crate) || istype(src, /obj/structure/barricade)) // we check for barricades because [sand]stone walls are under this. + if(climbable) // necessary to check if the siege-ladder has changed the climbable value for [sand]stone walls (barricades), good check regardless. + if (!T || T.density) + return + user.visible_message(SPAN_WARNING("[user] starts climbing onto \the [src]!"), SPAN_WARNING("You start climbing onto \the [src]!")) + user.face_atom(T) + climbers |= user + if (!do_after(user,(issmall(user) ? 20 : 34))) + climbers -= user + return + if (!can_climb(user, post_climb_check=1)) + climbers -= user + return + user.forceMove(T) + if (get_turf(user) == T) + user.visible_message(SPAN_WARNING("[user] climbs onto \the [src]!"), SPAN_WARNING("You climb onto \the [src]!")) + if (istype(src, /obj/structure/table/glass)) + var/obj/structure/table/glass/G = src + G.shatter() climbers -= user return - user.forceMove(T) - if (get_turf(user) == T) - user.visible_message(SPAN_WARNING("[user] climbs onto \the [src]!"), SPAN_WARNING("You climb onto \the [src]!")) - if (istype(src, /obj/structure/table/glass)) - var/obj/structure/table/glass/G = src - G.shatter() - climbers -= user - return var/climb_dir = src.dir // Direction of the barrier that the user is trying to climb var/opposite_dir = reverse_direction(climb_dir) // Reverse the direction to simulate a barrier in the opposite direction facing towards us. From a82e39081c6070135bff53979f390e08529a847d Mon Sep 17 00:00:00 2001 From: HaultyAnonie Date: Tue, 16 Apr 2024 21:46:14 +0100 Subject: [PATCH 11/50] Let's punctuate marksman for fluency. --- code/modules/1713/weapons/guns/semiauto.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/1713/weapons/guns/semiauto.dm b/code/modules/1713/weapons/guns/semiauto.dm index 9f5d75ef84..b1c7827ad4 100644 --- a/code/modules/1713/weapons/guns/semiauto.dm +++ b/code/modules/1713/weapons/guns/semiauto.dm @@ -460,7 +460,7 @@ /obj/item/weapon/gun/projectile/semiautomatic/vintorez name = "VSS Vintorez" - desc = "A marksman rifle featuring an integral supressor originating from the Soviet Union. Feeding from detachable 10-round magazines. Chambered in 9x39mm." + desc = "A marksman's rifle featuring an integral supressor originating from the Soviet Union. Feeding from detachable 10-round magazines. Chambered in 9x39mm." icon_state = "vintorez" item_state = "vintorez" base_icon = "vintorez" From e45a50e0d55fb9b1c5ef5d85206a23bdf61ec68e Mon Sep 17 00:00:00 2001 From: HaultyAnonie Date: Tue, 16 Apr 2024 22:01:33 +0100 Subject: [PATCH 12/50] Proper vsbl-msgs --- code/modules/1713/weapons/guns/lever_action.dm | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/code/modules/1713/weapons/guns/lever_action.dm b/code/modules/1713/weapons/guns/lever_action.dm index 0d2fe8ef0c..85ff7ab78d 100644 --- a/code/modules/1713/weapons/guns/lever_action.dm +++ b/code/modules/1713/weapons/guns/lever_action.dm @@ -92,11 +92,11 @@ /obj/item/weapon/gun/projectile/leveraction/proc/pump(mob/M as mob) playsound(M, cocked_sound, 60, TRUE) if (!chambered) - visible_message("[M] cycles the [src]!","You cycle the [src]!") + M.visible_message("[M] cycles the [src]!","You cycle the [src]!") else if (chambered && chambered.BB == null) - visible_message("[M] cycles the [src], ejecting a spent casing!","You cycle the [src], ejecting a spent casing!") + M.visible_message("[M] cycles the [src], ejecting a spent casing!","You cycle the [src], ejecting a spent casing!") else - visible_message("[M] cycles the [src], ejecting an unused casing!","You cycle the [src], ejecting an unused casing!") + M.visible_message("[M] cycles the [src], ejecting an unused casing!","You cycle the [src], ejecting an unused casing!") if (chambered)//We have a shell in the chamber chambered.loc = get_turf(src)//Eject casing From 1227ef2f7d5fbe59a6290f2051a87e8f279eb9b2 Mon Sep 17 00:00:00 2001 From: HaultyAnonie Date: Tue, 16 Apr 2024 22:03:31 +0100 Subject: [PATCH 13/50] \The door --- code/game/objects/structures/door.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/objects/structures/door.dm b/code/game/objects/structures/door.dm index 675746c22d..a7572f55f2 100644 --- a/code/game/objects/structures/door.dm +++ b/code/game/objects/structures/door.dm @@ -49,7 +49,7 @@ /obj/structure/simple_door/bullet_act(var/obj/item/projectile/P) var/damage = max(P.damage/2, 2) health -= damage - visible_message("[src] is hit by \the [P.name]!") + visible_message("\The [src] is hit by \the [P.name]!") if (istype(src, /obj/structure/simple_door/key_door)) src:damage_display() if (health <= 0) From 313977a75ad761896ac726e100ac3b999c54f256 Mon Sep 17 00:00:00 2001 From: HaultyAnonie Date: Wed, 17 Apr 2024 00:23:21 +0100 Subject: [PATCH 14/50] No more bullet casing for stone projectiles. --- code/modules/projectiles/_ammo_casing.dm | 1 + 1 file changed, 1 insertion(+) diff --git a/code/modules/projectiles/_ammo_casing.dm b/code/modules/projectiles/_ammo_casing.dm index 535f8ab030..3d861e8fc9 100644 --- a/code/modules/projectiles/_ammo_casing.dm +++ b/code/modules/projectiles/_ammo_casing.dm @@ -10,6 +10,7 @@ /obj/item/ammo_casing/stoneball name = "stone ball projectile" + desc = "A round stone ball." icon_state = "stoneball" spent_icon = null projectile_type = /obj/item/projectile/bullet/rifle/stoneball From 3283391e24fa8dc83c9df05c9f4fd4cc641c3588 Mon Sep 17 00:00:00 2001 From: HaultyAnonie Date: Wed, 17 Apr 2024 00:23:30 +0100 Subject: [PATCH 15/50] Let's update some comments for doctors book --- code/modules/1713/doctor_handbook.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/modules/1713/doctor_handbook.dm b/code/modules/1713/doctor_handbook.dm index b8899cbdce..812e58ae7f 100644 --- a/code/modules/1713/doctor_handbook.dm +++ b/code/modules/1713/doctor_handbook.dm @@ -73,8 +73,8 @@ if (!is_bad) user.show_message("* No general health issues.") - var/ecount = 0 - var/icount = 0 + var/ecount = 0 // external organs count + var/icount = 0 // internal organs count var/list/unsplinted_limbs = list() user.show_message("[victim] has:") From 196642a17b8b811cf0fbad7ab71563a7c6283958 Mon Sep 17 00:00:00 2001 From: HaultyAnonie Date: Wed, 17 Apr 2024 00:23:41 +0100 Subject: [PATCH 16/50] why is a 'bit' 1.25 slowdown as notice? --- code/game/mob/mob_movement.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/mob/mob_movement.dm b/code/game/mob/mob_movement.dm index 0427997072..cf77b86c60 100644 --- a/code/game/mob/mob_movement.dm +++ b/code/game/mob/mob_movement.dm @@ -479,7 +479,7 @@ for (var/obj/covers/CV in get_turf(F)) F.muddy = FALSE var/snow_message = "" - var/snow_span = "notice" + var/snow_span = "warning" if (F.icon == 'icons/turf/snow.dmi' && snow && !H.lizard) standing_on_snow = 1 From dc7fd6939dec51e8e97ad8137e2f24bbf0273b4b Mon Sep 17 00:00:00 2001 From: HaultyAnonie Date: Wed, 17 Apr 2024 13:19:01 +0100 Subject: [PATCH 17/50] Fixes a bug where it doesn't properly set the icon. --- code/game/mob/mob_movement.dm | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/code/game/mob/mob_movement.dm b/code/game/mob/mob_movement.dm index cf77b86c60..b6bd47db18 100644 --- a/code/game/mob/mob_movement.dm +++ b/code/game/mob/mob_movement.dm @@ -344,7 +344,7 @@ if (ref && map && map.check_caribbean_block(mob, ref)) mob.dir = direct if (world.time >= mob.next_gracewall_message) - mob << "You cannot pass the invisible wall until the Grace Period has ended." + to_chat(mob, SPAN_WARNING("You cannot pass the invisible wall until the Grace Period has ended.")) mob.next_gracewall_message = world.time + 10 return FALSE @@ -407,14 +407,14 @@ if (mob_is_living) for (var/obj/structure/window_frame/W in mob.loc) - mob.visible_message("[mob] starts climbing through the window frame.") + mob.visible_message(SPAN_WARNING("[mob] starts climbing through the window frame."), SPAN_WARNING("You start climbing through the window frame.")) mob.canmove = FALSE var/oloc = mob.loc sleep(rand(8,12)) mob.canmove = TRUE if (mob.lying || mob.stat == DEAD || mob.stat == UNCONSCIOUS || mob.loc != oloc) return - mob.visible_message("[mob] climbs through the window frame.") + mob.visible_message(SPAN_WARNING("[mob] climbs through the window frame."), SPAN_WARNING("You climb through the window frame.")) break // we can probably move now, so update our eye for ladders @@ -432,7 +432,7 @@ if (M.pulling == mob) if (!M.restrained() && M.stat == 0 && M.canmove && mob.Adjacent(M)) if (world.time >= mob.next_cannotmove_message) - src << "You're restrained! You can't move!" + to_chat(src, SPAN_NOTICE("You're restrained! You can't move!")) mob.next_cannotmove_message = world.time + 10 return FALSE else @@ -440,7 +440,7 @@ if (mob.pinned.len) if (world.time >= mob.next_cannotmove_message) - src << "You're pinned to a wall by [mob.pinned[1]]!" + to_chat(src, SPAN_NOTICE("You're pinned to a wall by [mob.pinned[1]]!")) mob.next_cannotmove_message = world.time + 10 return FALSE @@ -546,7 +546,7 @@ else standing_on_snow = rand(2,3) if (world.time >= mob.next_mud_message) - mob << "The mud slows you down." + to_chat(mob, SPAN_WARNING("The mud slows you down.")) mob.next_mud_message = world.time+100 if (ishuman(mob)) var/mob/living/human/perp = mob @@ -641,16 +641,16 @@ if (mob_is_human) if (H.getStat("stamina") == (H.getMaxStat("stamina")/2) && H.m_intent == "run" && world.time >= H.next_stamina_message) - H << "You're starting to tire from running so much." + to_chat(H, SPAN_DANGER("You're starting to tire from running so much.")) H.next_stamina_message = world.time + 20 if (H.getStat("stamina") <= 0 && H.m_intent == "run") - H << "You're too tired to keep running." + to_chat(H, SPAN_DANGER("You're too tired to keep running.")) if (H.m_intent != "walk") - H.m_intent = "walk" // in case we don't have a m_intent HUD, somehow - if (mob.HUDneed.Find("mov_intent")) - var/obj/screen/intent/I = mob.HUDneed["mov_intent"] - I.update_icon() + H.m_intent = "walk" // Incase we don't set the intent to walk somehow, force-set it here... + if (mob.HUDneed.Find("m_intent")) // Find the movement intent in the HUDneed list() on mob_defines. + var/obj/screen/intent/I = mob.HUDneed["m_intent"] // Set a variable to access that movement intent. + I.update_icon() // Updates the HUD icon to 'walk'. var/tickcomp = FALSE //moved this out here so we can use it for vehicles if (config.Tickcomp) From c32442f27e06355956c676ee737411eba664d125 Mon Sep 17 00:00:00 2001 From: HaultyAnonie Date: Wed, 17 Apr 2024 20:49:10 +0100 Subject: [PATCH 18/50] Karak is now mapped with the correct walls. --- maps/1013/karak.dmm | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/maps/1013/karak.dmm b/maps/1013/karak.dmm index 82222e47db..0ed9f9fca6 100644 --- a/maps/1013/karak.dmm +++ b/maps/1013/karak.dmm @@ -25,7 +25,7 @@ "ay" = (/obj/structure/window/barrier/railing{icon_state = "sandstone"; dir = 1; climbable = 0},/turf/floor/dirt/dust,/area/caribbean/forest/dirt{name = "Inner Fortress"}) "az" = (/obj/structure/window/barrier/railing{icon_state = "sandstone"; dir = 1; climbable = 0},/obj/structure/window/barrier/railing{icon_state = "sandstone"; dir = 8; climbable = 0},/turf/floor/dirt/dust,/area/caribbean/crusader/sand) "aA" = (/obj/structure/window/barrier/railing{icon_state = "sandstone"; dir = 1; climbable = 0},/turf/floor/dirt/dust,/area/caribbean/crusader/sand) -"aB" = (/obj/structure/barricade/sandstone_h{opacity = 1},/turf/floor/wood,/area/caribbean/crusader/sand{location = 0; name = "Crusader Camp Buildings"}) +"aB" = (/obj/covers/sandstone_wall/brick,/turf/floor/wood,/area/caribbean/crusader/sand{location = 0; name = "Crusader Camp Buildings"}) "aC" = (/obj/structure/window/barrier/railing{icon_state = "sandstone"; dir = 4; climbable = 0},/obj/structure/window/barrier/railing{icon_state = "sandstone"; dir = 1; climbable = 0},/turf/floor/dirt/dust,/area/caribbean/crusader/sand) "aD" = (/obj/structure/window/barrier/railing{icon_state = "sandstone"; dir = 8; climbable = 0},/turf/floor/dirt/dust,/area/caribbean/crusader/sand) "aE" = (/obj/structure/window/barrier/railing{icon_state = "sandstone"; dir = 4; climbable = 0},/obj/structure/window/barrier/railing{icon_state = "sandstone"; dir = 1; climbable = 0},/turf/floor/dirt/dust,/area/caribbean/forest/dirt{name = "Inner Fortress"}) @@ -59,7 +59,7 @@ "bg" = (/obj/structure/sign/wide/carpet,/turf/floor/wood,/area/caribbean/crusader/sand{location = 0; name = "Crusader Camp Buildings"}) "bh" = (/obj/structure/bed{material = "wood"},/obj/item/weapon/bedsheet/rd,/turf/floor/wood,/area/caribbean/crusader/sand{location = 0; name = "Crusader Camp Buildings"}) "bi" = (/obj/effect/landmark{icon_state = "x3"; name = "JoinLateFR"},/turf/floor/wood,/area/caribbean/crusader/sand{location = 0; name = "Crusader Camp Buildings"}) -"bj" = (/obj/structure/barricade/sandstone_h{opacity = 1},/obj/structure/sign/flag/templar1,/turf/floor/wood,/area/caribbean/crusader/sand{location = 0; name = "Crusader Camp Buildings"}) +"bj" = (/obj/covers/sandstone_wall/brick,/obj/structure/sign/flag/templar1,/turf/floor/wood,/area/caribbean/crusader/sand{location = 0; name = "Crusader Camp Buildings"}) "bk" = (/obj/structure/simple_door/wood{name = "room"},/turf/floor/wood,/area/caribbean/crusader/sand{location = 0; name = "Crusader Camp Buildings"}) "bl" = (/obj/structure/multiz/stairs_wood{icon_state = "wood2_stairs"; dir = 8},/turf/floor/dirt/dust,/area/caribbean/forest/dirt{name = "Inner Fortress"}) "bm" = (/obj/covers/sandstone,/obj/structure/table/rack,/obj/item/ammo_casing/bolt/iron,/obj/item/ammo_casing/bolt/iron,/obj/item/ammo_casing/bolt/iron,/obj/item/ammo_casing/bolt/iron,/obj/item/ammo_casing/bolt/iron,/obj/item/ammo_casing/bolt/iron,/turf/floor/dirt/dust,/area/caribbean/forest/dirt{name = "Walls"}) @@ -111,7 +111,6 @@ "cg" = (/obj/structure/potted_plant{icon_state = "potted_plant"; dir = 4},/obj/structure/torch_stand/full{dir = 8},/turf/floor/wood,/area/caribbean/crusader/sand{location = 0; name = "Crusader Camp Buildings"}) "ch" = (/obj/item/weapon/material/spear,/turf/floor/beach/water,/area/caribbean/forest/dirt) "ci" = (/obj/structure/barricade/horizontal,/obj/structure/sign/custom{name = "Armory"},/obj/structure/window/barrier/railing{climbable = 0},/turf/floor/dirt/dust,/area/caribbean/crusader/sand{location = 0; name = "Crusader Camp Buildings"}) -"cj" = (/obj/structure/barricade/sandstone_h,/turf/floor/wood,/area/caribbean/crusader/sand{location = 0; name = "Crusader Camp Buildings"}) "ck" = (/turf/floor/beach/sand,/area/caribbean/no_mans_land/invisible_wall) "cl" = (/obj/structure/multiz/stairs_wood,/turf/floor/dirt/dust,/area/caribbean/forest/dirt{name = "Inner Fortress"}) "cm" = (/turf/floor/beach/sand,/area/caribbean/forest/dirt) @@ -151,7 +150,6 @@ "cU" = (/obj/structure/wild/tallgrass2,/turf/floor/dirt/dust,/area/caribbean/forest/dirt) "cV" = (/obj/structure/wild/burnedbush,/obj/item/weapon/material/shard{material = "wood"},/turf/floor/beach/sand,/area/caribbean/forest/dirt) "cW" = (/obj/structure/table/rack,/obj/item/weapon/gun/projectile/bow/crossbow,/obj/item/weapon/gun/projectile/bow/crossbow,/obj/item/weapon/gun/projectile/bow/crossbow,/obj/item/weapon/gun/projectile/bow/crossbow,/turf/floor/beach/sand,/area/caribbean/crusader/sand{location = 0; name = "Crusader Camp Buildings"}) -"cX" = (/obj/structure/barricade/sandstone_h,/obj/structure/sign/flag/templar1,/turf/floor/wood,/area/caribbean/crusader/sand{location = 0; name = "Crusader Camp Buildings"}) "cY" = (/turf/floor/dirt/dust,/turf/floor/beach/water/coastwater/layer,/turf/floor/beach/water/coastwater/layer{dir = 8},/area/caribbean/forest/dirt) "cZ" = (/obj/item/weapon/material/shard{material = "wood"},/turf/floor/beach/water,/area/caribbean/forest/dirt) "da" = (/obj/structure/wild/tallgrass2,/turf/floor/dirt/dust,/area/caribbean/no_mans_land/invisible_wall) @@ -426,9 +424,9 @@ cscucsgDgDgEaqaqasasasasasasasasasasasaqaqdAamamamanamamakatatatdbcHehehehbjaBaB cscucsbucugGgEaqaqaqaqasasasasasasasasaqaqdMbmatatatatatbsatatcxbXbBdKbUehaBbhbiaBbibObVbRbiaBbibhaBfYehdKaUeqdUbababaaHaKatatavcuguaqaqasasasasasasasasaqaqasas cscscscucucugGgDgDgIaqaqasasasasasasasaqaqdMatatatatatatakcvcvcvbzeqaDfoehbqbtbibkbibOcabRbibkbibtbqfZehdKaUeqdUbabaaHcPaKatatavcudcgJaqasasasasasasasasaqaqaqas cmcmcmdgcmcmadcucugGgEaqasasasasasasasasaqdMataxayayayaybabaaHbacbeqaDdKehaBcccdaBbEbOcebRVraBcgbDaBcQehcSaUeqdUbabababdbeatatavcucuguaqaqasasasasasaqaqaqaqasas -cEcmcmcEcmcmcmcucucugKaqaqaqasasasasasasaqdMataGaLaLaLbababaaHbacbeqaDdKehbjcjcjcjbibOcabRbiaBaBaBbjehehbTcAeqgaaXaXaXblblatatavcucuguaqaqasasasasaqaqaqaqaqaqaq -cmcmcEagcmcmcmcmdgcUgGgEaqaqasasasasasasaqdMatbHbdbababababababacbeqcDbTehdKdKdKcjbibibibibiaBgbgcgdehehcFcFeqdUaXbabaayaEatatavcUcuguaqaqasasasaqaqaqaqgLgDddgD -cmcmcmcEcmcmcmcmcEcmcugGgEaqasasasasasasaqdMatbJbJaXaXaXaXaXaXaXgeeqdbdbehdKdJdKcXbqbjdLbjbqbjdKdKgdehehaAaCeqdUaXbabaaLaKatataFcucuguaqaqasasasaqgLgDgDgMcscscs +cEcmcmcEcmcmcmcucucugKaqaqaqasasasasasasaqdMataGaLaLaLbababaaHbacbeqaDdKehbjaBaBaBbibOcabRbiaBaBaBbjehehbTcAeqgaaXaXaXblblatatavcucuguaqaqasasasasaqaqaqaqaqaqaq +cmcmcEagcmcmcmcmdgcUgGgEaqaqasasasasasasaqdMatbHbdbababababababacbeqcDbTehdKdKdKaBbibibibibiaBgbgcgdehehcFcFeqdUaXbabaayaEatatavcUcuguaqaqasasasaqaqaqaqgLgDddgD +cmcmcmcEcmcmcmcmcEcmcugGgEaqasasasasasasaqdMatbJbJaXaXaXaXaXaXaXgeeqdbdbehdKdJdKbjbqbjdLbjbqbjdKdKgdehehaAaCeqdUaXbabaaLaKatataFcucuguaqaqasasasaqgLgDgDgMcscscs cmcmdgcEcEcmdgdgaccmcucsgKaqasasasasasasaqdOataxaybabababababaaXcbeqazaAehdJehehehehehehehehehehehehehehgfggeqdUaXbaaHaLaKatatavcubxgwaqaqasasasaqgOcucucmcmcucm cmcmcmcmafcmcmcmcmcmcmcsgKbYaqasasasasasaqdMataGbaaHbagPaHbabaaXcbeqcDghdJdJdJehehehfuehfudqegezeheKegglgmggeqdUaXbabacPaKatbmavcuguaqaqaqasasaqaqgOcmcmcmaccEcm cmadcmcmcmcmcmcmcmcmcmcmgGgEaqaqasasasaqaqdMatbHbdbdbdbdbdbdbaaXcbeqeqgodJbTbTbTbTbTgpgqgpgrgrbTgsgrgrbTgrcAeqdUaXbabdbdbeatatavcufHaqaqaqaqasasaqgOcucEcucmdgcm From e9cefbfaaff2081d3748c1cc8e39f062f5587593 Mon Sep 17 00:00:00 2001 From: HaultyAnonie Date: Wed, 17 Apr 2024 20:49:32 +0100 Subject: [PATCH 19/50] Playing sounds are no longer shown to the world. This is for immersion sake, only shown to admin_log now. --- code/modules/admin/verbs/playsound.dm | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/code/modules/admin/verbs/playsound.dm b/code/modules/admin/verbs/playsound.dm index c1bc4b098c..9a16a2d65a 100644 --- a/code/modules/admin/verbs/playsound.dm +++ b/code/modules/admin/verbs/playsound.dm @@ -13,9 +13,8 @@ var/list/sounds_cache = list() if (WWinput(src, "Are you ready?\nSong: [S]\nNow you can also play this sound using \"Play Server Sound\".", "Confirmation request", "Play", list("Play", "Cancel")) == "Cancel") return - log_admin("[key_name(src)] played sound [S]") - message_admins("[key_name_admin(src)] played sound [S]", key_name_admin(src)) - world << "[key] played a global sound." + log_admin("[key_name(src)] played a global sound [S]") + message_admins("[key_name_admin(src)] played a global sound; [S]", key_name_admin(src)) for (var/mob/M in player_list) if (!new_player_mob_list.Find(M) || !M.is_preference_enabled(/datum/client_preference/play_lobby_music)) From 1f6dbd341accf99fc0b8b43f62ecef64df5de88c Mon Sep 17 00:00:00 2001 From: HaultyAnonie Date: Wed, 17 Apr 2024 20:49:48 +0100 Subject: [PATCH 20/50] Bows properly update the arrow_overlay. No more invisible arrows. --- code/modules/1713/weapons/guns/bow.dm | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/code/modules/1713/weapons/guns/bow.dm b/code/modules/1713/weapons/guns/bow.dm index c7bb8d464f..70bd2ee81d 100644 --- a/code/modules/1713/weapons/guns/bow.dm +++ b/code/modules/1713/weapons/guns/bow.dm @@ -134,9 +134,8 @@ //add arrow overlay src.overlays += icon(A.icon,A.icon_state) -obj/item/weapon/gun/projectile/bow/Fire() - ..() - remove_arrow_overlay() +/obj/item/weapon/gun/projectile/bow/Fire() + ..() // Call the parent proc first /obj/item/weapon/gun/projectile/bow/sling name = "sling" @@ -263,8 +262,10 @@ obj/item/weapon/gun/projectile/bow/Fire() /obj/item/weapon/gun/projectile/bow/special_check(mob/user) if (!istype(src, /obj/item/weapon/gun/projectile/bow/sling)) if (!(user.has_empty_hand(both = FALSE))) - user << "You need both hands to fire the [src]!" + user << "You need both hands to fire \the [src]!" return FALSE + else + remove_arrow_overlay() // Remove the overlay only after we check if the other hand is empty. return ..() /obj/item/weapon/gun/projectile/bow/attackby(obj/W as obj, mob/user as mob) From 985cfa12cc72842bdd184e98d061ec02e0f25fab Mon Sep 17 00:00:00 2001 From: HaultyAnonie Date: Wed, 17 Apr 2024 20:50:06 +0100 Subject: [PATCH 21/50] Unpluralize ballistic plate(s), because there's 1. --- code/modules/1713/apparel_modern.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/1713/apparel_modern.dm b/code/modules/1713/apparel_modern.dm index 467230f1b8..3e97565b11 100644 --- a/code/modules/1713/apparel_modern.dm +++ b/code/modules/1713/apparel_modern.dm @@ -79,7 +79,7 @@ /* Armor Plates*/ /obj/item/weapon/armorplates - name = "ballistic plates" + name = "ballistic plate" desc = "Used to increase the protection of some body armors." icon = 'icons/obj/clothing/ties.dmi' icon_state = "plates" From 1782682b6a021716b66f002cf9f0f2acbe54d2b6 Mon Sep 17 00:00:00 2001 From: HaultyAnonie Date: Wed, 17 Apr 2024 20:50:40 +0100 Subject: [PATCH 22/50] Own table do_climb() proc --- code/game/objects/structures/table.dm | 82 +++++++++++++++++++++++++-- 1 file changed, 77 insertions(+), 5 deletions(-) diff --git a/code/game/objects/structures/table.dm b/code/game/objects/structures/table.dm index 2e8134cc6c..64379836ce 100644 --- a/code/game/objects/structures/table.dm +++ b/code/game/objects/structures/table.dm @@ -29,7 +29,7 @@ var/buildstackamount = TRUE var/framestackamount = 2 var/deconstructable = TRUE - var/flipped = FALSE // WIP? + var/flipped = FALSE // WIP? - 4.17.2024 - yes heavy WIP. TODO proper vaulting. var/health = 100 throwpass = TRUE not_movable = FALSE @@ -62,23 +62,95 @@ if (!istype(usr, /mob/living)) return + if (src.type == /obj/structure/table/rack) // Check for direct type with src.type + to_chat(usr, SPAN_WARNING("You can't flip this.")) + return if (istype(src, /obj/structure/table/modern/billiard)) - usr << "You can't flip the table, it's too heavy." + to_chat(usr, SPAN_WARNING("You can't flip the table, it's too heavy.")) return else - usr << "You start flipping the table..." + to_chat(usr, SPAN_NOTICE("You start flipping the table...")) if (do_after(usr, 12, src)) flipped = !flipped if (flipped) visible_message("[usr] flips the table!") if (istype(usr, /mob/living)) var/mob/living/L = usr - dir = L.dir + dir = L.dir // TODO actually make flipped tables a type of vaultable barrier. else - visible_message("[usr] puts the table back up.") + visible_message("[usr] puts the table back up.") layer = 2.8 update_icon() +/obj/structure/table/do_climb(var/mob/living/user) + if (!can_climb(user)) + return + if (map.check_caribbean_block(user, get_turf(src))) + return + + var/turf/T = get_step(get_turf(src), dir) // Target-Turf + + var/climb_dir = src.dir // Direction of the table that the user is trying to climb + var/opposite_dir = reverse_direction(climb_dir) // Reverse the direction to simulate a table in the opposite direction facing towards us. + + // Check if the user is not directly in front of or behind the barrier + var/turf/next_turf = get_step(src, climb_dir) + if (flipped) // If the table is flipped + if (user.loc != next_turf) // If the user's location is not in front of the barrier + next_turf = get_turf(src) + if (user.loc != next_turf) + to_chat(user, SPAN_WARNING("You can't vault this barrier. You must be directly next to it.")) + return + + // Check if there's a barrier with opposite direction facing the climbing direction + for (var/obj/I in T) + if(istype(I, /obj/structure/table)) + var/obj/structure/table/table = I + if (table.flipped && table.dir == opposite_dir) + to_chat(user, SPAN_WARNING("You can't vault over this table. Another table is blocking the way.")) + return + + if (!neighbor_turf_passable()) + to_chat(user, SPAN_DANGER("You can't climb there, the way is blocked.")) + climbers -= user + return + + // Descriptive text for the visible_msgs. + var/climb_desc = null + if (flipped) // If the table is flipped, we climb over it. + climb_desc = "over" + else // Else, we climb "onto" it. + climb_desc = "onto" + + // Display a message and mark the user as climbing + user.visible_message(SPAN_WARNING("[user] starts climbing [climb_desc] \the [src]!"), SPAN_WARNING("You start climbing [climb_desc] \the [src]!")) + user.face_atom(T) + climbers |= user + + if (!do_after(user,(issmall(user) ? 20 : 34))) + climbers -= user + return + + if (!can_climb(user, post_climb_check=1)) + climbers -= user + return + + // Move the user to the appropriate turf based on whether the table is flipped + if(flipped) + if (get_turf(user) == get_turf(src)) + user.forceMove(get_step(src, dir)) // move user to dir turf of table. + else + user.forceMove(get_turf(src)) // move user to turf of flipped table. + else + user.forceMove(get_turf(src)) // Climb onto it normally if it is not flipped. + + if (get_turf(user) == T) + user.visible_message(SPAN_WARNING("[user] climbs [climb_desc] \the [src]!"), SPAN_WARNING("You climb [climb_desc] \the [src]!")) + if (istype(src, /obj/structure/table/glass)) + var/obj/structure/table/glass/G = src + G.shatter() + climbers -= user + /obj/structure/table/verb/rotate_left() set name = "Rotate Left" set category = null From 3667d3bc30d77bbc5cf5fe38caacc1da7590d28f Mon Sep 17 00:00:00 2001 From: HaultyAnonie Date: Wed, 17 Apr 2024 20:51:16 +0100 Subject: [PATCH 23/50] Railing vsbl message updates. --- code/game/objects/structures/railing.dm | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/code/game/objects/structures/railing.dm b/code/game/objects/structures/railing.dm index c329cb2f07..6b50577fd7 100644 --- a/code/game/objects/structures/railing.dm +++ b/code/game/objects/structures/railing.dm @@ -248,7 +248,7 @@ if (map.check_caribbean_block(user, get_turf(src))) return - usr.visible_message("[user] starts climbing onto \the [src]!") + user.visible_message(SPAN_WARNING("[user] starts climbing onto \the [src]!"), SPAN_WARNING("You start climbing onto \the [src]!")) climbers |= user if (!do_after(user,(issmall(user) ? 20 : 34), src)) @@ -260,7 +260,7 @@ return if (!neighbor_turf_passable()) - user << "You can't climb there, the way is blocked." + to_chat(user, SPAN_DANGER("You can't climb there, the way is blocked.")) climbers -= user return @@ -269,6 +269,6 @@ else usr.forceMove(get_turf(src)) - usr.visible_message("[user] climbed over \the [src]!") + user.visible_message(SPAN_WARNING("[user] climbs over \the [src]!"), SPAN_WARNING("You climb over \the [src]!")) if (!anchored) take_damage(maxhealth) // Fatboy climbers -= user \ No newline at end of file From 80f42139e2aa3ae3715dffba0894a8549589bf29 Mon Sep 17 00:00:00 2001 From: HaultyAnonie Date: Wed, 17 Apr 2024 20:51:26 +0100 Subject: [PATCH 24/50] Structure updates :D :D :+1: --- code/game/objects/structures.dm | 49 +++++++++++++++++++-------------- 1 file changed, 29 insertions(+), 20 deletions(-) diff --git a/code/game/objects/structures.dm b/code/game/objects/structures.dm index 6c408895e2..dc3f54bcb4 100644 --- a/code/game/objects/structures.dm +++ b/code/game/objects/structures.dm @@ -107,12 +107,12 @@ to_chat(user, SPAN_DANGER("There's \a [occupied] in the way.")) return FALSE return TRUE - + /obj/structure/proc/turf_is_crowded(var/mob/living/user) var/turf/T = get_step(get_turf(user), src.dir) // Target-Turf var/turf/TT = get_turf(src) // Start-Turf - // Check for climbable objects in the current turf + // Check for climbable objects in the target turf for (var/obj/O in T.contents) if (istype(O, /obj/structure)) var/obj/structure/S = O @@ -120,8 +120,8 @@ if (S.climbable) continue // Skip if the object is climbable if (O && O.density && !(O.flags & ON_BORDER)) //ON_BORDER structures are handled by the Adjacent() check. return O // Return the dense object that blocks our way. - - // Check for climbable objects in the target turf + + // Check for climbable objects in the start turf for (var/obj/O in TT.contents) if (istype(O, /obj/structure)) var/obj/structure/S = O @@ -134,18 +134,21 @@ return FALSE /obj/structure/proc/neighbor_turf_passable() - var/turf/T = get_step(src, dir) - if (!T || !istype(T)) - return FALSE - if (T.density == TRUE) - return FALSE - for (var/obj/O in T.contents) - if (istype(O,/obj/structure)) - if (istype(O,/obj/structure/railing)) - return TRUE - else if (O.density == TRUE) - return FALSE - return TRUE + var/turf/T = get_step(src, dir) + if (!T || !istype(T)) + return FALSE + if (T.density == TRUE) + return FALSE + for (var/obj/O in T.contents) // Iterate over all objects in the turf + // Check if the object has density + if (istype(O, /obj/structure/closet/crate)) + continue // Allow us to climb onto crates + if (istype(O, /obj/structure/table)) + continue // Allow us to climb onto other tables + if (O.density == TRUE) + return FALSE + return TRUE + /obj/structure/proc/do_climb(var/mob/living/user) if (!can_climb(user)) @@ -164,11 +167,14 @@ return FALSE // Check if the target turf is a table or a crate - if (istype(src, /obj/structure/table) || istype(src, /obj/structure/closet/crate) || istype(src, /obj/structure/barricade)) // we check for barricades because [sand]stone walls are under this. + if (istype(src, /obj/structure/closet/crate) || istype(src, /obj/structure/barricade)) // we check for barricades because [sand]stone walls are under this. + if (user.loc == src.loc) + to_chat(user, SPAN_WARNING("You're already on this!")) + return if(climbable) // necessary to check if the siege-ladder has changed the climbable value for [sand]stone walls (barricades), good check regardless. if (!T || T.density) return - user.visible_message(SPAN_WARNING("[user] starts climbing onto \the [src]!"), SPAN_WARNING("You start climbing onto \the [src]!")) + user.visible_message(SPAN_WARNING("[user] starts climbing onto \the [src]!"), SPAN_WARNING("You start climbing onto \the [src]!")) user.face_atom(T) climbers |= user if (!do_after(user,(issmall(user) ? 20 : 34))) @@ -185,6 +191,7 @@ G.shatter() climbers -= user return + //else if (istype(src, /obj/structure/table)) var/climb_dir = src.dir // Direction of the barrier that the user is trying to climb var/opposite_dir = reverse_direction(climb_dir) // Reverse the direction to simulate a barrier in the opposite direction facing towards us. @@ -203,10 +210,12 @@ to_chat(user, SPAN_WARNING("You can't vault this barrier. \A [I.name] is blocking the way.")) return - if (!T || T.density) + if (!neighbor_turf_passable()) + to_chat(user, SPAN_DANGER("You can't climb there, the way is blocked.")) + climbers -= user return - user.visible_message(SPAN_WARNING("[user] starts climbing onto \the [src]!"), SPAN_WARNING("You start climbing onto \the [src]!")) + user.visible_message(SPAN_WARNING("[user] starts climbing onto \the [src]!"), SPAN_WARNING("You start climbing onto \the [src]!")) user.face_atom(T) climbers |= user From 50bb0738b2c6a42db0be4384a86a2bc185be21d9 Mon Sep 17 00:00:00 2001 From: HaultyAnonie Date: Wed, 17 Apr 2024 20:51:35 +0100 Subject: [PATCH 25/50] Extra space :100: --- code/game/mob/living/carbon/human/human_defense.dm | 1 + 1 file changed, 1 insertion(+) diff --git a/code/game/mob/living/carbon/human/human_defense.dm b/code/game/mob/living/carbon/human/human_defense.dm index 906793fbb8..2e3bd2fe04 100644 --- a/code/game/mob/living/carbon/human/human_defense.dm +++ b/code/game/mob/living/carbon/human/human_defense.dm @@ -553,6 +553,7 @@ bullet_act AC.health -= dmg AC.check_health() return TRUE + /mob/living/human/proc/check_head_coverage() var/list/body_parts = list(head, wear_mask, wear_suit, w_uniform) for (var/bp in body_parts) From f3b21ca3ad1e4c465a2feeaf058bf0dc9bd813ee Mon Sep 17 00:00:00 2001 From: HaultyAnonie Date: Wed, 17 Apr 2024 20:53:21 +0100 Subject: [PATCH 26/50] Don't need this comment anymore. :alien: --- code/game/objects/structures.dm | 1 - 1 file changed, 1 deletion(-) diff --git a/code/game/objects/structures.dm b/code/game/objects/structures.dm index dc3f54bcb4..f584167f49 100644 --- a/code/game/objects/structures.dm +++ b/code/game/objects/structures.dm @@ -191,7 +191,6 @@ G.shatter() climbers -= user return - //else if (istype(src, /obj/structure/table)) var/climb_dir = src.dir // Direction of the barrier that the user is trying to climb var/opposite_dir = reverse_direction(climb_dir) // Reverse the direction to simulate a barrier in the opposite direction facing towards us. From 1a56a5f0c0b93cad6cb260a25deb48217bf042e1 Mon Sep 17 00:00:00 2001 From: HaultyAnonie Date: Wed, 17 Apr 2024 20:54:27 +0100 Subject: [PATCH 27/50] Commento fixing :angry: --- code/game/objects/structures/table.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/game/objects/structures/table.dm b/code/game/objects/structures/table.dm index 64379836ce..efc7ca90a1 100644 --- a/code/game/objects/structures/table.dm +++ b/code/game/objects/structures/table.dm @@ -29,7 +29,7 @@ var/buildstackamount = TRUE var/framestackamount = 2 var/deconstructable = TRUE - var/flipped = FALSE // WIP? - 4.17.2024 - yes heavy WIP. TODO proper vaulting. + var/flipped = FALSE // WIP? - 4.17.2024 - yes heavy WIP. var/health = 100 throwpass = TRUE not_movable = FALSE @@ -76,7 +76,7 @@ visible_message("[usr] flips the table!") if (istype(usr, /mob/living)) var/mob/living/L = usr - dir = L.dir // TODO actually make flipped tables a type of vaultable barrier. + dir = L.dir // Could be better than just setting dir, for vaulting sake. else visible_message("[usr] puts the table back up.") layer = 2.8 From 63a48548ef90812d0b5159b825e995375befc482 Mon Sep 17 00:00:00 2001 From: HaultyAnonie Date: Wed, 17 Apr 2024 21:14:59 +0100 Subject: [PATCH 28/50] I can't seem to fix this, so off to another PR it goes. --- code/game/mob/living/carbon/human/shit_piss.dm | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/code/game/mob/living/carbon/human/shit_piss.dm b/code/game/mob/living/carbon/human/shit_piss.dm index 6c53b9e2dc..94db4d4327 100644 --- a/code/game/mob/living/carbon/human/shit_piss.dm +++ b/code/game/mob/living/carbon/human/shit_piss.dm @@ -316,8 +316,7 @@ playsound(src.loc, 'sound/effects/poo2.ogg', 60, 1) bowels -= rand(120,150) else - if(stat != DEAD) - to_chat(src, "You don't have to.") + to_chat(src, "You don't have to shit.") return visible_message("[message]") @@ -325,8 +324,7 @@ /mob/living/human/proc/handle_piss() var/message = null if (bladder < 30) - if(stat != DEAD) - to_chat(src, "You don't have to.") + to_chat(src, "You don't have to piss.") return var/mob/living/M = locate() in src.loc var/obj/structure/toilet/T = locate() in src.loc From db2202c908b148a3b0c2ea5539d8627ce9b24c55 Mon Sep 17 00:00:00 2001 From: HaultyAnonie Date: Thu, 18 Apr 2024 00:20:29 +0100 Subject: [PATCH 29/50] Handle shit_piss proc calls properly under parent calls --- code/game/mob/death.dm | 2 +- code/game/mob/living/carbon/human/death.dm | 5 ++--- code/game/mob/living/carbon/human/human.dm | 1 - code/game/mob/living/carbon/human/shit_piss.dm | 4 ++++ 4 files changed, 7 insertions(+), 5 deletions(-) diff --git a/code/game/mob/death.dm b/code/game/mob/death.dm index eb7201f684..cba2e2f7ea 100644 --- a/code/game/mob/death.dm +++ b/code/game/mob/death.dm @@ -100,7 +100,7 @@ /mob/proc/maim() crush() -/mob/proc/death(gibbed,deathmessage="seizes up and falls limp...") +/mob/proc/death(gibbed, deathmessage="seizes up and falls limp...") if (stat == DEAD) return FALSE diff --git a/code/game/mob/living/carbon/human/death.dm b/code/game/mob/living/carbon/human/death.dm index a22d1b6863..75a4c3762b 100644 --- a/code/game/mob/living/carbon/human/death.dm +++ b/code/game/mob/living/carbon/human/death.dm @@ -360,8 +360,6 @@ if (i[1]=="UPA") i[2]-= 10*/ - handle_piss() - handle_shit() if (squad > 0 && original_job && original_job.uses_squads) if (map && faction_text == map.faction1) map.faction1_squads[squad] -= src @@ -411,7 +409,6 @@ //Handle species-specific deaths. species.handle_death(src) - callHook("death", list(src, gibbed)) if (l_hand) unEquip(l_hand) @@ -444,6 +441,8 @@ . = ..(gibbed)//,species.death_message) if (!gibbed) handle_organs() + handle_piss() + handle_shit() if (species.death_sound) playsound(loc, species.death_sound, 80, TRUE, TRUE) handle_hud_list() diff --git a/code/game/mob/living/carbon/human/human.dm b/code/game/mob/living/carbon/human/human.dm index adba5a4618..1080b8e8bb 100644 --- a/code/game/mob/living/carbon/human/human.dm +++ b/code/game/mob/living/carbon/human/human.dm @@ -1068,7 +1068,6 @@ var/list/coefflist = list() else return H.pulse - /mob/living/human/proc/make_adrenaline(amount) if(stat == CONSCIOUS) reagents.add_reagent("adrenaline", amount) diff --git a/code/game/mob/living/carbon/human/shit_piss.dm b/code/game/mob/living/carbon/human/shit_piss.dm index 94db4d4327..eff12f57c2 100644 --- a/code/game/mob/living/carbon/human/shit_piss.dm +++ b/code/game/mob/living/carbon/human/shit_piss.dm @@ -316,6 +316,8 @@ playsound(src.loc, 'sound/effects/poo2.ogg', 60, 1) bowels -= rand(120,150) else + if(stat == DEAD) + return to_chat(src, "You don't have to shit.") return visible_message("[message]") @@ -324,6 +326,8 @@ /mob/living/human/proc/handle_piss() var/message = null if (bladder < 30) + if(stat == DEAD) + return to_chat(src, "You don't have to piss.") return var/mob/living/M = locate() in src.loc From bed61e601191888928f0a996ad9618bb43c1e7ee Mon Sep 17 00:00:00 2001 From: HaultyAnonie Date: Thu, 18 Apr 2024 00:51:57 +0100 Subject: [PATCH 30/50] Update nomadstuff.dm look at commit to underttand --- code/game/objects/items/weapons/nomadstuff.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/objects/items/weapons/nomadstuff.dm b/code/game/objects/items/weapons/nomadstuff.dm index e04f0bcef9..7f15acbf45 100644 --- a/code/game/objects/items/weapons/nomadstuff.dm +++ b/code/game/objects/items/weapons/nomadstuff.dm @@ -18,7 +18,7 @@ icon = 'icons/obj/items.dmi' icon_state = "bedroll_o" anchored = TRUE - layer = MOB_LAYER - 0.01 + layer = MOB_LAYER - 0.06 // Why 0.06? To prevent beds from clipping above east-facing barriers (3.95). var/used = FALSE var/running = FALSE //to prevent exploits of unbuckling/bucking etc can_buckle = TRUE From 5b27f60665ea4b7d9f578a40b4a911e05c8c35b8 Mon Sep 17 00:00:00 2001 From: HaultyAnonie Date: Thu, 18 Apr 2024 12:41:24 +0100 Subject: [PATCH 31/50] More informative things. --- code/game/mob/living/carbon/human/human_organs.dm | 1 - code/game/objects/structures.dm | 4 ++-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/code/game/mob/living/carbon/human/human_organs.dm b/code/game/mob/living/carbon/human/human_organs.dm index 559af95830..dc7f98ed1a 100644 --- a/code/game/mob/living/carbon/human/human_organs.dm +++ b/code/game/mob/living/carbon/human/human_organs.dm @@ -173,7 +173,6 @@ var/emote_scream = pick("screams in pain and ", "lets out a sharp cry and ", "cries out and ") emote("me", TRUE, "[(species.flags & NO_PAIN) ? "" : emote_scream ]drops what they were holding in their [E.name]!") - //Handles chem traces /mob/living/human/proc/handle_trace_chems() //New are added for reagents to random organs. diff --git a/code/game/objects/structures.dm b/code/game/objects/structures.dm index f584167f49..bcf84cd417 100644 --- a/code/game/objects/structures.dm +++ b/code/game/objects/structures.dm @@ -140,12 +140,12 @@ if (T.density == TRUE) return FALSE for (var/obj/O in T.contents) // Iterate over all objects in the turf - // Check if the object has density + if (O.climbable) continue // We don't include this in the is-type checks because open crates aren't climbable if open, so that could lead to some technicalities if (istype(O, /obj/structure/closet/crate)) continue // Allow us to climb onto crates if (istype(O, /obj/structure/table)) continue // Allow us to climb onto other tables - if (O.density == TRUE) + if (O.density == TRUE) return FALSE return TRUE From 382164481a00613e0a88a1085b4425ff835f4f71 Mon Sep 17 00:00:00 2001 From: HaultyAnonie Date: Thu, 18 Apr 2024 12:47:12 +0100 Subject: [PATCH 32/50] buggy VSC saying it's indentated wrong.. --- code/game/objects/structures.dm | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/code/game/objects/structures.dm b/code/game/objects/structures.dm index bcf84cd417..1055ca98a3 100644 --- a/code/game/objects/structures.dm +++ b/code/game/objects/structures.dm @@ -109,7 +109,7 @@ return TRUE /obj/structure/proc/turf_is_crowded(var/mob/living/user) - var/turf/T = get_step(get_turf(user), src.dir) // Target-Turf + var/turf/T = get_step(get_turf(user), src.dir) // Target-Turf (movingto) var/turf/TT = get_turf(src) // Start-Turf // Check for climbable objects in the target turf @@ -140,11 +140,11 @@ if (T.density == TRUE) return FALSE for (var/obj/O in T.contents) // Iterate over all objects in the turf - if (O.climbable) continue // We don't include this in the is-type checks because open crates aren't climbable if open, so that could lead to some technicalities + if (O.climbable) continue // We don't include this in the is-type checks because open crates aren't climbable if open, so that could lead to some technicalities if (istype(O, /obj/structure/closet/crate)) continue // Allow us to climb onto crates if (istype(O, /obj/structure/table)) - continue // Allow us to climb onto other tables + continue // Allow us to climb onto other tables (UNLESS they face our way (handled in obj/str/table/do_climb())) if (O.density == TRUE) return FALSE return TRUE From 55bd73bf8cb5440ad4e38042ba421cbc2b6dee7b Mon Sep 17 00:00:00 2001 From: HaultyAnonie Date: Thu, 18 Apr 2024 14:29:18 +0100 Subject: [PATCH 33/50] More upgrades. --- code/game/objects/structures.dm | 43 ++++++++++++------- .../structures/crates_lockers/closets.dm | 4 +- .../structures/crates_lockers/crates.dm | 15 ++++--- code/game/objects/structures/table.dm | 8 +++- 4 files changed, 44 insertions(+), 26 deletions(-) diff --git a/code/game/objects/structures.dm b/code/game/objects/structures.dm index 1055ca98a3..55c069d8d3 100644 --- a/code/game/objects/structures.dm +++ b/code/game/objects/structures.dm @@ -104,6 +104,7 @@ var/obj/occupied = turf_is_crowded(user) if (occupied) + user.face_atom(occupied) to_chat(user, SPAN_DANGER("There's \a [occupied] in the way.")) return FALSE return TRUE @@ -134,20 +135,21 @@ return FALSE /obj/structure/proc/neighbor_turf_passable() - var/turf/T = get_step(src, dir) - if (!T || !istype(T)) - return FALSE - if (T.density == TRUE) - return FALSE - for (var/obj/O in T.contents) // Iterate over all objects in the turf - if (O.climbable) continue // We don't include this in the is-type checks because open crates aren't climbable if open, so that could lead to some technicalities - if (istype(O, /obj/structure/closet/crate)) - continue // Allow us to climb onto crates - if (istype(O, /obj/structure/table)) - continue // Allow us to climb onto other tables (UNLESS they face our way (handled in obj/str/table/do_climb())) - if (O.density == TRUE) - return FALSE - return TRUE + var/turf/T = get_step(src, dir) + if (!T || !istype(T)) + return FALSE + if (T.density == TRUE) + return FALSE + for (var/obj/O in T.contents) // Iterate over all objects in the turf + var/obj/structure/S = O + if (S.climbable) continue // We don't include this in the is-type checks because open crates aren't climbable if open, so that could lead to some technicalities + if (istype(O, /obj/structure/closet/crate)) + continue // Allow us to climb onto crates + if (istype(O, /obj/structure/table)) + continue // Allow us to climb onto other tables (UNLESS they face our way (handled in obj/str/table/do_climb())) + if (O.density == TRUE) + return FALSE + return TRUE /obj/structure/proc/do_climb(var/mob/living/user) @@ -171,7 +173,12 @@ if (user.loc == src.loc) to_chat(user, SPAN_WARNING("You're already on this!")) return - if(climbable) // necessary to check if the siege-ladder has changed the climbable value for [sand]stone walls (barricades), good check regardless. + if (istype(src, /obj/structure/closet/crate)) + var/obj/structure/closet/crate/box = src + if(box.opened) + to_chat(user, SPAN_WARNING("You can't climb onto an opened crate.")) + return + if(src.climbable) // necessary to check if the siege-ladder has changed the climbable value for [sand]stone walls (barricades), good check regardless. if (!T || T.density) return user.visible_message(SPAN_WARNING("[user] starts climbing onto \the [src]!"), SPAN_WARNING("You start climbing onto \the [src]!")) @@ -191,6 +198,10 @@ G.shatter() climbers -= user return + else // If barricade is not climbable (and if this is somehow called on non-climbable structures, let them know.) + to_chat(user, SPAN_WARNING("This is not climbable.")) + return + var/climb_dir = src.dir // Direction of the barrier that the user is trying to climb var/opposite_dir = reverse_direction(climb_dir) // Reverse the direction to simulate a barrier in the opposite direction facing towards us. @@ -206,10 +217,12 @@ // Check if there's a barrier with opposite direction facing the climbing direction for (var/obj/I in T) if (I.dir == opposite_dir && istype(I, /obj/structure/window/barrier)) + user.face_atom(T) to_chat(user, SPAN_WARNING("You can't vault this barrier. \A [I.name] is blocking the way.")) return if (!neighbor_turf_passable()) + user.face_atom(T) to_chat(user, SPAN_DANGER("You can't climb there, the way is blocked.")) climbers -= user return diff --git a/code/game/objects/structures/crates_lockers/closets.dm b/code/game/objects/structures/crates_lockers/closets.dm index 0a7d50bfd4..4b8b0b6a44 100644 --- a/code/game/objects/structures/crates_lockers/closets.dm +++ b/code/game/objects/structures/crates_lockers/closets.dm @@ -310,9 +310,9 @@ var/area/A = get_area(src) if (istype(A, /area/caribbean/no_mans_land/invisible_wall) && map && (!map.faction1_can_cross_blocks() || map.faction2_can_cross_blocks())) return - step_towards(O, loc) + //step_towards(O, loc) - We can just bump into the crate, this is a convoluted way of pushing it and fucks up with do_climbs() if (user != O) - user.show_viewers("[user] stuffs [O] into [src]!") + user.show_viewers("[user] stuffs [O] into [src]!") // This code does nothing. add_fingerprint(user) return diff --git a/code/game/objects/structures/crates_lockers/crates.dm b/code/game/objects/structures/crates_lockers/crates.dm index 8b6f2aee2c..2da8c47008 100644 --- a/code/game/objects/structures/crates_lockers/crates.dm +++ b/code/game/objects/structures/crates_lockers/crates.dm @@ -14,15 +14,16 @@ // climbing crates - Kachnov /obj/structure/closet/crate/MouseDrop_T(mob/target, mob/user) - if (!opened) - var/mob/living/H = user - if (istype(H) && can_climb(H) && target == user) - do_climb(target) - else - return ..(target, user) + //if (!opened) + var/mob/living/H = user + if (istype(H) && target == user) + do_climb(target) else return ..(target, user) - +/* + else + return ..(target, user) +*/ /obj/structure/closet/crate/can_open() return TRUE diff --git a/code/game/objects/structures/table.dm b/code/game/objects/structures/table.dm index efc7ca90a1..a1db20684a 100644 --- a/code/game/objects/structures/table.dm +++ b/code/game/objects/structures/table.dm @@ -104,7 +104,10 @@ // Check if there's a barrier with opposite direction facing the climbing direction for (var/obj/I in T) - if(istype(I, /obj/structure/table)) + if (I.dir == opposite_dir && istype(I, /obj/structure/window/barrier)) + to_chat(user, SPAN_WARNING("You can't vault this table. \A [I.name] is blocking the way.")) + return + else if(istype(I, /obj/structure/table)) // You should be able to flip tables against sandbags, just not noclip thru the balance of opposite barriers. var/obj/structure/table/table = I if (table.flipped && table.dir == opposite_dir) to_chat(user, SPAN_WARNING("You can't vault over this table. Another table is blocking the way.")) @@ -119,12 +122,13 @@ var/climb_desc = null if (flipped) // If the table is flipped, we climb over it. climb_desc = "over" + user.face_atom(T) // Face target-turf (movingto) else // Else, we climb "onto" it. climb_desc = "onto" + user.face_atom(src) //Face directly onto the table if not flipped on side. // Display a message and mark the user as climbing user.visible_message(SPAN_WARNING("[user] starts climbing [climb_desc] \the [src]!"), SPAN_WARNING("You start climbing [climb_desc] \the [src]!")) - user.face_atom(T) climbers |= user if (!do_after(user,(issmall(user) ? 20 : 34))) From 05c160c2b75f03580d1031c93bf5416bede3ccfd Mon Sep 17 00:00:00 2001 From: HaultyAnonie Date: Thu, 18 Apr 2024 15:10:11 +0100 Subject: [PATCH 34/50] Micdrop :boom: we got proper things! yeah!!! --- code/game/objects/structures.dm | 40 ++++++++++++++++----------------- 1 file changed, 20 insertions(+), 20 deletions(-) diff --git a/code/game/objects/structures.dm b/code/game/objects/structures.dm index 55c069d8d3..ad8027d5a0 100644 --- a/code/game/objects/structures.dm +++ b/code/game/objects/structures.dm @@ -89,29 +89,29 @@ /obj/structure/proc/can_climb(var/mob/living/user, post_climb_check=0) - var/movingto = get_step(get_turf(src), dir) - if (map && movingto && map.check_caribbean_block(user, movingto)) - to_chat(user, SPAN_WARNING("You cannot pass the invisible wall until the Grace Period has ended.")) - return FALSE + var/movingto = get_step(get_turf(src), dir) + if (map && movingto && map.check_caribbean_block(user, movingto)) + to_chat(user, SPAN_WARNING("You cannot pass the invisible wall until the Grace Period has ended.")) + return FALSE - if (!climbable || !can_touch(user) || (!post_climb_check && (user in climbers))) - return FALSE + if (!climbable || !can_touch(user) || (!post_climb_check && (user in climbers))) + return FALSE - if (!user.Adjacent(src) && !istype(src, /obj/structure/window/barrier)) - to_chat(user, SPAN_DANGER("You can't climb there, the way is blocked.")) - return FALSE + if (!user.Adjacent(src) && !istype(src, /obj/structure/window/barrier)) + to_chat(user, SPAN_DANGER("You can't climb there, the way is blocked.")) + return FALSE - var/obj/occupied = turf_is_crowded(user) + var/list/objects_blocked = turf_is_crowded(user) + if (objects_blocked.len>0) + var/blocked_list = english_list(objects_blocked, " nothing ", " and ") + to_chat(user, SPAN_DANGER("\The [blocked_list] blocks you from climbing over.")) + return FALSE + return TRUE - if (occupied) - user.face_atom(occupied) - to_chat(user, SPAN_DANGER("There's \a [occupied] in the way.")) - return FALSE - return TRUE - /obj/structure/proc/turf_is_crowded(var/mob/living/user) var/turf/T = get_step(get_turf(user), src.dir) // Target-Turf (movingto) var/turf/TT = get_turf(src) // Start-Turf + var/list/objects_blocked = list() // List to store all objects that block the way // Check for climbable objects in the target turf for (var/obj/O in T.contents) @@ -120,7 +120,7 @@ if (!S) continue // Skip if S is not valid if (S.climbable) continue // Skip if the object is climbable if (O && O.density && !(O.flags & ON_BORDER)) //ON_BORDER structures are handled by the Adjacent() check. - return O // Return the dense object that blocks our way. + objects_blocked += O // Add the dense object to the list of objects that block the way. // Check for climbable objects in the start turf for (var/obj/O in TT.contents) @@ -129,10 +129,10 @@ if (!S) continue // Skip if S is not valid if (S.climbable) continue // Skip if the object is climbable if (O && O.density && !(O.flags & ON_BORDER)) //ON_BORDER structures are handled by the Adjacent() check. - return O // Return the dense object that blocks our way. + objects_blocked += O // Add the dense object to the list of objects that block the way. - // If no crowded object is found, return FALSE - return FALSE + // If no crowded object is found, return an empty list + return objects_blocked /obj/structure/proc/neighbor_turf_passable() var/turf/T = get_step(src, dir) From e941d6746d55f4e1bee2d3ed7d6697641ec151b8 Mon Sep 17 00:00:00 2001 From: HaultyAnonie Date: Thu, 18 Apr 2024 15:50:25 +0100 Subject: [PATCH 35/50] comments informative --- code/game/mob/living/carbon/human/death.dm | 2 +- code/game/objects/structures.dm | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/code/game/mob/living/carbon/human/death.dm b/code/game/mob/living/carbon/human/death.dm index 75a4c3762b..938fbb3c24 100644 --- a/code/game/mob/living/carbon/human/death.dm +++ b/code/game/mob/living/carbon/human/death.dm @@ -440,7 +440,7 @@ . = ..(gibbed)//,species.death_message) if (!gibbed) - handle_organs() + handle_organs() // Handle the following only after we call the parent to get all the proper stat values and etcetra. handle_piss() handle_shit() if (species.death_sound) diff --git a/code/game/objects/structures.dm b/code/game/objects/structures.dm index ad8027d5a0..9b6be24d60 100644 --- a/code/game/objects/structures.dm +++ b/code/game/objects/structures.dm @@ -104,7 +104,7 @@ var/list/objects_blocked = turf_is_crowded(user) if (objects_blocked.len>0) var/blocked_list = english_list(objects_blocked, " nothing ", " and ") - to_chat(user, SPAN_DANGER("\The [blocked_list] blocks you from climbing over.")) + to_chat(user, SPAN_DANGER("\The [blocked_list] blocks you from climbing over.")) // e.g; The wood barricade and the steel barricade blocks you from climbing over. return FALSE return TRUE From c78c168bc36775f024a45d3b2e1bf45019725d3d Mon Sep 17 00:00:00 2001 From: HaultyAnonie Date: Thu, 18 Apr 2024 16:57:45 +0100 Subject: [PATCH 36/50] Final fixes. --- code/game/objects/structures.dm | 41 +++++++++++++++++++++------------ 1 file changed, 26 insertions(+), 15 deletions(-) diff --git a/code/game/objects/structures.dm b/code/game/objects/structures.dm index 9b6be24d60..9a242f955e 100644 --- a/code/game/objects/structures.dm +++ b/code/game/objects/structures.dm @@ -86,9 +86,7 @@ do_climb(target) else return ..() - /obj/structure/proc/can_climb(var/mob/living/user, post_climb_check=0) - var/movingto = get_step(get_turf(src), dir) if (map && movingto && map.check_caribbean_block(user, movingto)) to_chat(user, SPAN_WARNING("You cannot pass the invisible wall until the Grace Period has ended.")) @@ -102,38 +100,51 @@ return FALSE var/list/objects_blocked = turf_is_crowded(user) - if (objects_blocked.len>0) - var/blocked_list = english_list(objects_blocked, " nothing ", " and ") + if (objects_blocked.len > 0) + var/blocked_list = english_list(objects_blocked, " nothing ", " and \the ") to_chat(user, SPAN_DANGER("\The [blocked_list] blocks you from climbing over.")) // e.g; The wood barricade and the steel barricade blocks you from climbing over. return FALSE + + var/list/objects_blocked_2 = turf_is_crowded(user, 1) + if (objects_blocked_2.len > 0) + var/blocked_list_2 = english_list(objects_blocked_2, " nothing ", " and \the ") + to_chat(user, SPAN_DANGER("\The [blocked_list_2] blocks you from climbing over.")) // e.g; The wood barricade and the steel barricade blocks you from climbing over. + return FALSE + return TRUE -/obj/structure/proc/turf_is_crowded(var/mob/living/user) - var/turf/T = get_step(get_turf(user), src.dir) // Target-Turf (movingto) +/obj/structure/proc/turf_is_crowded(var/mob/living/user, second_turf=0) + var/turf/T = get_step(get_turf(src), src.dir) // Target-Turf (movingto) var/turf/TT = get_turf(src) // Start-Turf var/list/objects_blocked = list() // List to store all objects that block the way + var/list/objects_blocked_2 = list() // Check for climbable objects in the target turf for (var/obj/O in T.contents) if (istype(O, /obj/structure)) var/obj/structure/S = O if (!S) continue // Skip if S is not valid - if (S.climbable) continue // Skip if the object is climbable + if (S.climbable) continue // Skip if the object is climbable if (O && O.density && !(O.flags & ON_BORDER)) //ON_BORDER structures are handled by the Adjacent() check. - objects_blocked += O // Add the dense object to the list of objects that block the way. + objects_blocked += O.name // Add the dense object's name to the list of objects that block the way. // Check for climbable objects in the start turf - for (var/obj/O in TT.contents) - if (istype(O, /obj/structure)) - var/obj/structure/S = O - if (!S) continue // Skip if S is not valid - if (S.climbable) continue // Skip if the object is climbable - if (O && O.density && !(O.flags & ON_BORDER)) //ON_BORDER structures are handled by the Adjacent() check. - objects_blocked += O // Add the dense object to the list of objects that block the way. + if (second_turf) + for (var/obj/O in TT.contents) + if (istype(O, /obj/structure)) + var/obj/structure/S = O + if (!S) continue // Skip if S is not valid + if (S.climbable) continue // Skip if the object is climbable + if (O && O.density && !(O.flags & ON_BORDER)) //ON_BORDER structures are handled by the Adjacent() check. + objects_blocked_2 += O.name // Add the dense object's name to the list of objects that block the way. // If no crowded object is found, return an empty list + if (second_turf) + return objects_blocked_2 return objects_blocked + + /obj/structure/proc/neighbor_turf_passable() var/turf/T = get_step(src, dir) if (!T || !istype(T)) From 699593d085679432800c0348fc0166388c400981 Mon Sep 17 00:00:00 2001 From: HaultyAnonie Date: Thu, 18 Apr 2024 23:42:23 +0100 Subject: [PATCH 37/50] Boombadaboom(im too tired to explain) --- code/_onclick/item_attack.dm | 1 + code/game/mob/inventory.dm | 2 +- code/game/objects/structures.dm | 75 ++++++++++++------- code/game/objects/structures/appliances.dm | 2 +- .../structures/blacksmithing/blacksmithing.dm | 2 +- code/game/objects/structures/bookcase.dm | 2 +- code/game/objects/structures/plant_pots.dm | 2 +- code/modules/1713/machinery/cables_types.dm | 2 +- code/modules/1713/production.dm | 4 +- code/modules/reagents/Chemistry-Machinery.dm | 2 +- 10 files changed, 56 insertions(+), 38 deletions(-) diff --git a/code/_onclick/item_attack.dm b/code/_onclick/item_attack.dm index d76ed7a56a..8e7f02ebeb 100644 --- a/code/_onclick/item_attack.dm +++ b/code/_onclick/item_attack.dm @@ -74,6 +74,7 @@ avoid code duplication. This includes items that may sometimes act as a standard // Proximity_flag is TRUE if this afterattack was called on something adjacent, in your square, or on your person. // Click parameters is the params string from byond Click() code, see that documentation. /obj/item/proc/afterattack(atom/target, mob/user, proximity_flag, params) + if(!proximity_flag) return // afterattack needs to check proximity_flag, because afterattack runs if you click at range. This is to fix invisible wrenches/hammers, and a general check. Unlikely to break anything. if (istype(target, /obj/structure/table)) var/list/click_params = params2list(params) //Center the icon where the user clicked. diff --git a/code/game/mob/inventory.dm b/code/game/mob/inventory.dm index 5aa97d8aef..35c9bf464f 100644 --- a/code/game/mob/inventory.dm +++ b/code/game/mob/inventory.dm @@ -117,7 +117,7 @@ var/list/slot_equipment_priority = list( \ return FALSE -//These procs handle putting s tuff in your hand. It's probably best to use these rather than setting l_hand = ...etc +//These procs handle putting stuff in your hand. It's probably best to use these rather than setting l_hand = ...etc //as they handle all relevant stuff like adding it to the player's screen and updating their overlays. //Returns the thing in our active hand diff --git a/code/game/objects/structures.dm b/code/game/objects/structures.dm index 9a242f955e..57b09e38e8 100644 --- a/code/game/objects/structures.dm +++ b/code/game/objects/structures.dm @@ -24,32 +24,36 @@ return ..() -/obj/structure/attackby(obj/item/O as obj, mob/user as mob, icon_x, icon_y) - if (istype(O,/obj/item/weapon/wrench) && !not_movable) - if (powersource) - to_chat(user, SPAN_NOTICE("Remove the cables first.")) - return - if (istype(src, /obj/structure/engine)) - var/obj/structure/engine/EN = src - if (!isemptylist(EN.connections)) - to_chat(user, SPAN_NOTICE("Remove the cables first.")) - return - if (do_after(user,15,src)) - playsound(loc, 'sound/items/Ratchet.ogg', 100, TRUE) - to_chat(user, (anchored ? SPAN_NOTICE("You unfasten \the [src] from the floor.") : SPAN_NOTICE("You secure \the [src] to the floor."))) - anchored = !anchored - return - else if (istype(O,/obj/item/weapon/hammer) && !not_disassemblable) - playsound(loc, 'sound/items/Screwdriver.ogg', 75, TRUE) - to_chat(user, SPAN_NOTICE("You begin dismantling \the [src].")) - if (do_after(user,25,src)) - to_chat(user, SPAN_NOTICE("You dismantle \the [src].")) - new /obj/item/stack/material/wood(get_turf(src)) - for (var/obj/item/weapon/book/b in contents) - b.loc = (get_turf(src)) - qdel(src) - return - +/obj/structure/attackby(var/obj/item/O as obj, mob/user as mob, icon_x, icon_y) + if (istype(O, /obj/item/weapon/wrench) && !not_movable) + if (powersource) + to_chat(user, SPAN_NOTICE("Remove the cables first.")) + return + if (istype(src, /obj/structure/engine)) + var/obj/structure/engine/EN = src + if (!isemptylist(EN.connections)) + to_chat(user, SPAN_NOTICE("Remove the cables first.")) + return + if (istype(src, /obj/structure/table)) // Convoluted way of not allowing to pull flipped tables onto other flipped tables to bypass barrier stacking checks during same turf flipping. + for (var/obj/structure/table/T in get_turf(src)) + if (T != src && T.anchored) + to_chat(user, SPAN_WARNING("You can't anchor \the [src] here, there's already \a [T] anchored here.")) + return + if (do_after(user, 15, src)) + playsound(loc, 'sound/items/Ratchet.ogg', 100, TRUE) + to_chat(user, (src.anchored ? SPAN_NOTICE("You unfasten \the [src] from the floor.") : SPAN_NOTICE("You secure \the [src] to the floor."))) + src.anchored = !src.anchored + return + else if (istype(O, /obj/item/weapon/hammer) && !not_disassemblable) + playsound(loc, 'sound/items/Screwdriver.ogg', 75, TRUE) + to_chat(user, SPAN_NOTICE("You begin dismantling \the [src].")) + if (do_after(user, 25, src)) + to_chat(user, SPAN_NOTICE("You dismantle \the [src].")) + new /obj/item/stack/material/wood(get_turf(src)) + for (var/obj/item/weapon/book/b in contents) + b.loc = (get_turf(src)) + qdel(src) + return /obj/structure/CanPass(atom/movable/mover, turf/target, height=0, air_group=0) if (istype(mover, /obj/effect/effect/smoke)) @@ -86,6 +90,7 @@ do_climb(target) else return ..() + /obj/structure/proc/can_climb(var/mob/living/user, post_climb_check=0) var/movingto = get_step(get_turf(src), dir) if (map && movingto && map.check_caribbean_block(user, movingto)) @@ -146,7 +151,7 @@ /obj/structure/proc/neighbor_turf_passable() - var/turf/T = get_step(src, dir) + var/turf/T = get_step(get_turf(src), src.dir) if (!T || !istype(T)) return FALSE if (T.density == TRUE) @@ -213,7 +218,6 @@ to_chat(user, SPAN_WARNING("This is not climbable.")) return - var/climb_dir = src.dir // Direction of the barrier that the user is trying to climb var/opposite_dir = reverse_direction(climb_dir) // Reverse the direction to simulate a barrier in the opposite direction facing towards us. @@ -224,13 +228,26 @@ if (user.loc != next_turf) to_chat(user, SPAN_WARNING("You can't vault this barrier. You must be directly next to it.")) return - +/* // Check if there's a barrier with opposite direction facing the climbing direction for (var/obj/I in T) if (I.dir == opposite_dir && istype(I, /obj/structure/window/barrier)) user.face_atom(T) to_chat(user, SPAN_WARNING("You can't vault this barrier. \A [I.name] is blocking the way.")) return +*/ + // Check the next turf in the climbing direction for a barrier or table + var/turf/next_turf_climb = get_step(next_turf, climb_dir) + for (var/obj/I in next_turf_climb) + if (I.dir == opposite_dir && istype(I, /obj/structure/window/barrier)) + user.face_atom(next_turf_climb) + to_chat(user, SPAN_WARNING("You can't vault this barrier. \A [I.name] is blocking the way.")) + return + else if (istype(I, /obj/structure/table)) + var/obj/structure/table/table = I + if (table.dir == climb_dir) + to_chat(user, SPAN_WARNING("You can't vault over this barrier. Another table is blocking the way.")) + return if (!neighbor_turf_passable()) user.face_atom(T) diff --git a/code/game/objects/structures/appliances.dm b/code/game/objects/structures/appliances.dm index d4b9279888..28a953039b 100644 --- a/code/game/objects/structures/appliances.dm +++ b/code/game/objects/structures/appliances.dm @@ -178,7 +178,7 @@ /obj/structure/TV/grandfather/attackby(obj/O as obj, mob/living/human/user as mob) if (istype(O,/obj/item/weapon/wrench)) playsound(loc, 'sound/items/Ratchet.ogg', 100, TRUE) - user << (anchored ? "You unfasten \the [src] from the floor." : "You secure \the [src] to the floor.") + user << (anchored ? "You unfasten \the [src] from the floor." : "You secure \the [src] to the floor.") anchored = !anchored else if (istype(O,/obj/item/weapon/hammer)) playsound(loc, 'sound/items/Screwdriver.ogg', 75, TRUE) diff --git a/code/game/objects/structures/blacksmithing/blacksmithing.dm b/code/game/objects/structures/blacksmithing/blacksmithing.dm index 168d5658e9..fd6c572504 100644 --- a/code/game/objects/structures/blacksmithing/blacksmithing.dm +++ b/code/game/objects/structures/blacksmithing/blacksmithing.dm @@ -23,7 +23,7 @@ var/mob/living/human/H = user if (istype(P,/obj/item/weapon/wrench)) playsound(loc, 'sound/items/Ratchet.ogg', 100, TRUE) - user << (anchored ? "You unfasten \the [src] from the floor." : "You secure \the [src] to the floor.") + user << (anchored ? "You unfasten \the [src] from the floor." : "You secure \the [src] to the floor.") anchored = !anchored if (H.getStatCoeff("crafting") < 1.7) user << "You don't have the skills to use this." diff --git a/code/game/objects/structures/bookcase.dm b/code/game/objects/structures/bookcase.dm index 1330f7e3c6..e26b44d02a 100644 --- a/code/game/objects/structures/bookcase.dm +++ b/code/game/objects/structures/bookcase.dm @@ -144,7 +144,7 @@ name = ("bookcase ([newname])") else if (istype(O,/obj/item/weapon/wrench)) playsound(loc, 'sound/items/Ratchet.ogg', 100, TRUE) - user << (anchored ? "You unfasten \the [src] from the floor." : "You secure \the [src] to the floor.") + user << (anchored ? "You unfasten \the [src] from the floor." : "You secure \the [src] to the floor.") anchored = !anchored else if (istype(O,/obj/item/weapon/hammer)) playsound(loc, 'sound/items/Screwdriver.ogg', 75, TRUE) diff --git a/code/game/objects/structures/plant_pots.dm b/code/game/objects/structures/plant_pots.dm index 3deb23a30e..fbc308cb76 100644 --- a/code/game/objects/structures/plant_pots.dm +++ b/code/game/objects/structures/plant_pots.dm @@ -460,7 +460,7 @@ /obj/structure/plant_pot/attackby(obj/O as obj, mob/living/human/user as mob) if (istype(O,/obj/item/weapon/wrench)) playsound(loc, 'sound/items/Ratchet.ogg', 100, TRUE) - user << (anchored ? "You unfasten \the [src] from the floor." : "You secure \the [src] to the floor.") + user << (anchored ? "You unfasten \the [src] from the floor." : "You secure \the [src] to the floor.") anchored = !anchored else if (istype(O,/obj/item/weapon/hammer) || istype(O,/obj/item/weapon/hammer/modern)) playsound(loc, 'sound/weapons/smash.ogg', 75, 1) diff --git a/code/modules/1713/machinery/cables_types.dm b/code/modules/1713/machinery/cables_types.dm index f831337e99..dc3158452f 100644 --- a/code/modules/1713/machinery/cables_types.dm +++ b/code/modules/1713/machinery/cables_types.dm @@ -80,7 +80,7 @@ /obj/item/connector/attackby(obj/item/weapon/W as obj, mob/user as mob) if (istype(W, /obj/item/weapon/wrench)) playsound(loc, 'sound/items/Ratchet.ogg', 100, TRUE) - user << (anchored ? "You unfasten \the [src] from the floor." : "You secure \the [src] to the floor.") + user << (anchored ? "You unfasten \the [src] from the floor." : "You secure \the [src] to the floor.") anchored = !anchored return diff --git a/code/modules/1713/production.dm b/code/modules/1713/production.dm index a0f9fba4f4..451358074f 100644 --- a/code/modules/1713/production.dm +++ b/code/modules/1713/production.dm @@ -1665,7 +1665,7 @@ if (istype(W,/obj/item/weapon/wrench)) playsound(loc, 'sound/items/Ratchet.ogg', 100, TRUE) - user << (anchored ? "You unfasten \the [src] from the floor." : "You secure \the [src] to the floor.") + user << (anchored ? "You unfasten \the [src] from the floor." : "You secure \the [src] to the floor.") anchored = !anchored else if (istype(W,/obj/item/weapon/hammer) || istype(W,/obj/item/weapon/hammer/modern)) playsound(loc, 'sound/items/Screwdriver.ogg', 75, TRUE) @@ -1824,7 +1824,7 @@ return if (istype(W, /obj/item/weapon/wrench)) playsound(loc, 'sound/items/Ratchet.ogg', 100, TRUE) - H << (anchored ? "You unfasten \the [src] from the floor." : "You secure \the [src] to the floor.") + H << (anchored ? "You unfasten \the [src] from the floor." : "You secure \the [src] to the floor.") anchored = !anchored return if (istype(W, /obj/item/weapon/hammer)) diff --git a/code/modules/reagents/Chemistry-Machinery.dm b/code/modules/reagents/Chemistry-Machinery.dm index 1ce675fde3..6d6d7daa67 100644 --- a/code/modules/reagents/Chemistry-Machinery.dm +++ b/code/modules/reagents/Chemistry-Machinery.dm @@ -685,7 +685,7 @@ return if (istype(B,/obj/item/weapon/wrench)) playsound(loc, 'sound/items/Ratchet.ogg', 100, TRUE) - user << (anchored ? "You unfasten \the [src] from the floor." : "You secure \the [src] to the floor.") + user << (anchored ? "You unfasten \the [src] from the floor." : "You secure \the [src] to the floor.") anchored = !anchored if (istype(B, /obj/item/weapon/reagent_containers/glass)) From a795e36cc8b2cf4dbe88be8480ff1307d3236993 Mon Sep 17 00:00:00 2001 From: HaultyAnonie Date: Thu, 18 Apr 2024 23:42:37 +0100 Subject: [PATCH 38/50] table related shit --- code/game/objects/structures/table.dm | 64 ++++++++++++++++++--------- 1 file changed, 42 insertions(+), 22 deletions(-) diff --git a/code/game/objects/structures/table.dm b/code/game/objects/structures/table.dm index a1db20684a..406e220102 100644 --- a/code/game/objects/structures/table.dm +++ b/code/game/objects/structures/table.dm @@ -62,24 +62,39 @@ if (!istype(usr, /mob/living)) return - if (src.type == /obj/structure/table/rack) // Check for direct type with src.type + if (istype(src, /obj/structure/table/rack)) to_chat(usr, SPAN_WARNING("You can't flip this.")) return if (istype(src, /obj/structure/table/modern/billiard)) to_chat(usr, SPAN_WARNING("You can't flip the table, it's too heavy.")) return else + for (var/obj/I in get_turf(src)) + if (istype(I, /obj/structure/table)) + var/obj/structure/table/table = I + if (table != src) // Check to make sure we aren't trying to flip a table onto the same table in the same flip dir. + if (table.dir == usr.dir && table.flipped) + to_chat(usr, SPAN_WARNING("You can't flip the table towards this direction. \A [table] is already flipped that way.")) + return + to_chat(usr, SPAN_NOTICE("You start flipping the table...")) if (do_after(usr, 12, src)) + for (var/obj/O in get_turf(src)) + if (istype(O, /obj/structure/table)) + var/obj/structure/table/table = O + if(table != src) // Re-check to make sure we aren't trying to flip a table onto the same table in the same flip dir. + if (table.dir == usr.dir && table.flipped) + to_chat(usr, SPAN_WARNING("You can't flip the table towards this direction. \A [table] is already flipped that way.")) + return flipped = !flipped if (flipped) visible_message("[usr] flips the table!") if (istype(usr, /mob/living)) var/mob/living/L = usr - dir = L.dir // Could be better than just setting dir, for vaulting sake. + dir = L.dir else - visible_message("[usr] puts the table back up.") layer = 2.8 + visible_message("[usr] puts the table back up.") update_icon() /obj/structure/table/do_climb(var/mob/living/user) @@ -388,7 +403,6 @@ return TRUE return TRUE - /obj/structure/table/MouseDrop_T(atom/movable/O, mob/user) ..() if ((!( istype(O, /obj/item/weapon) ) || user.get_active_hand() != O)) @@ -435,25 +449,31 @@ return TRUE qdel(I) -/obj/structure/table/attackby(var/obj/item/I, mob/user, params) - if (istype(I, /obj/item/weapon/grab)) - tablepush(I, user) - return - - if (istype(I, /obj/item/weapon/hammer) || istype(I, /obj/item/weapon/wrench)) - ..() - return - else - user.drop_item(loc) - playsound(loc, I.dropsound, 100, TRUE) +/obj/structure/table/attackby(obj/item/I as obj, mob/user as mob, params) + if (istype(I, /obj/item/weapon/grab)) + tablepush(I, user) + return + + if (istype(I, /obj/item/weapon/hammer) || istype(I, /obj/item/weapon/wrench)) + if (user.a_intent == I_HARM) + ..() + return TRUE // Resolves the attack so we don't get invisible wrenches/hammers. + else + user.drop_item(loc) + playsound(loc, I.dropsound, 100, TRUE) + return + + user.drop_item(loc) + playsound(loc, I.dropsound, 100, TRUE) + + // Center the icon where the user clicked if we can. + var/list/click_params = params2list(params) + if (!click_params || !click_params["icon-x"] || !click_params["icon-y"]) + return + // Clamp it so that the icon never moves more than 16 pixels in either direction (thus leaving the table turf) + I.pixel_x = Clamp(text2num(click_params["icon-x"]) - 16, -(world.icon_size/2), world.icon_size/2) + I.pixel_y = Clamp(text2num(click_params["icon-y"]) - 16, -(world.icon_size/2), world.icon_size/2) - //Center the icon where the user clicked if we can. - var/list/click_params = params2list(params) - if (!click_params || !click_params["icon-x"] || !click_params["icon-y"]) - return - //Clamp it so that the icon never moves more than 16 pixels in either direction (thus leaving the table turf) - I.pixel_x = Clamp(text2num(click_params["icon-x"]) - 16, -(world.icon_size/2), world.icon_size/2) - I.pixel_y = Clamp(text2num(click_params["icon-y"]) - 16, -(world.icon_size/2), world.icon_size/2) /* * TABLE DESTRUCTION/DECONSTRUCTION From 29792748f7c01b84335b92622fd09588a762c28f Mon Sep 17 00:00:00 2001 From: HaultyAnonie Date: Fri, 19 Apr 2024 03:39:54 +0100 Subject: [PATCH 39/50] inf-reach fix --- code/_onclick/click.dm | 13 +++++-------- code/game/mob/living/carbon/human/emotes/emote.dm | 4 ++-- code/game/mob/living/carbon/human/emotes/verbs.dm | 1 - code/modules/1713/barriers/sandbag.dm | 1 - 4 files changed, 7 insertions(+), 12 deletions(-) diff --git a/code/_onclick/click.dm b/code/_onclick/click.dm index 18fff4efe6..342dcfe6ac 100644 --- a/code/_onclick/click.dm +++ b/code/_onclick/click.dm @@ -13,7 +13,7 @@ usr.DblClickOn(src, params) /* Standard mob ClickOn() - Handles exceptions: Buildmode, middle click, modified clicks, mech actions + Handles exceptions: Buildmode (unused), middle click, modified clicks, mech actions After that, mostly just check your state, check whether you're holding an item, check whether you're adjacent to the target, then pass off the click to whoever is recieving it. @@ -238,16 +238,13 @@ // A is a turf or is on a turf, or in something on a turf (pen in a box); but not something in something on a turf (pen in a box in a backpack) sdepth = A.storage_depth_turf() if (isturf(A) || isturf(A.loc) || (sdepth != -1 && sdepth <= 1)) - if (A.Adjacent(src) || (W && W == get_active_hand() && (istype(W, /obj/item/weapon/barrier))) && A.rangedAdjacent(src)) // see adjacent.dm + if (A.Adjacent(src)) // see adjacent.dm dir = get_dir(src, A) - if (W && istype(W, /obj/item/weapon/barrier) && A.rangedAdjacent(src) && (isturf(A) || istype(A, /obj/structure/window/barrier/incomplete))) + if (W && A.rangedAdjacent(src)) if (get_active_hand() != W) return - if (!istype(A, /obj/structure/window/barrier/incomplete)) - A = get_turf(A) - else - if (!A.Adjacent(src)) // if we're adding to a sandbag wall, let us stand anywhere in range(1) - return + if (!A.Adjacent(src)) // if we're not adjacent. + return var/needs_to_be_in_front = istype(A, /turf) if (needs_to_be_in_front) // but if we're making a new sandbag wall, we have to click right in front of us. if (A != get_step(src, dir)) diff --git a/code/game/mob/living/carbon/human/emotes/emote.dm b/code/game/mob/living/carbon/human/emotes/emote.dm index 0161d7fbf5..23047765d0 100644 --- a/code/game/mob/living/carbon/human/emotes/emote.dm +++ b/code/game/mob/living/carbon/human/emotes/emote.dm @@ -533,7 +533,7 @@ var/list/vocal_emotes = list( else message = "moans!" m_type = 2 - +/* if ("johnny") var/M if (param) @@ -547,7 +547,7 @@ var/list/vocal_emotes = list( else message = "says, \"[M], please. He had a family.\" [name] takes a drag from a cigarette and blows his name out in smoke." m_type = 2 - +*/ if ("point") if (!restrained()) var/mob/M = null diff --git a/code/game/mob/living/carbon/human/emotes/verbs.dm b/code/game/mob/living/carbon/human/emotes/verbs.dm index b66b0e452b..cc01f5ddf3 100644 --- a/code/game/mob/living/carbon/human/emotes/verbs.dm +++ b/code/game/mob/living/carbon/human/emotes/verbs.dm @@ -159,7 +159,6 @@ set category = "Emote" emote("yawn") - /mob/living/human/verb/charge() set category = "Emote" emote("charge") diff --git a/code/modules/1713/barriers/sandbag.dm b/code/modules/1713/barriers/sandbag.dm index e0eacffdfc..b73ddb565f 100644 --- a/code/modules/1713/barriers/sandbag.dm +++ b/code/modules/1713/barriers/sandbag.dm @@ -239,7 +239,6 @@ var/set_dir = null // Set the variable outside of any scopes flammable = FALSE flags = FALSE - /obj/item/weapon/barrier/attackby(obj/item/weapon/W as obj, mob/user as mob) if (istype(W, /obj/item/weapon/reagent_containers)) if (W.reagents.has_reagent("water", 10)) From 7c0e16c57047936c3881b638256c71f2c1747fbf Mon Sep 17 00:00:00 2001 From: savethetreez <76013553+savethetreez@users.noreply.github.com> Date: Fri, 19 Apr 2024 13:20:56 +0200 Subject: [PATCH 40/50] Proper refactoring. --- .../game/mob/living/carbon/human/shit_piss.dm | 77 +++++++++---------- 1 file changed, 37 insertions(+), 40 deletions(-) diff --git a/code/game/mob/living/carbon/human/shit_piss.dm b/code/game/mob/living/carbon/human/shit_piss.dm index eff12f57c2..201f8e9c0f 100644 --- a/code/game/mob/living/carbon/human/shit_piss.dm +++ b/code/game/mob/living/carbon/human/shit_piss.dm @@ -280,54 +280,51 @@ //Shitting /mob/living/human/proc/handle_shit() var/message = null - if (src.bowels >= 30) - //Poo in the loo. - var/obj/structure/toilet/T = locate() in src.loc - var/mob/living/M = locate() in src.loc - if ((T && T.open) || (M.crap_inside)) - if (M.crap_inside) - message = "[src] defecates into the hole." - else - message = "[src] defecates into \the [T]." - var/obj/item/weapon/reagent_containers/food/snacks/poo/V = new/obj/item/weapon/reagent_containers/food/snacks/poo(src.loc) - if(reagents) - reagents.trans_to(V, rand(1,5)) - V.forceMove(T) - else if(w_uniform) - message = "[src] shits \his pants." - reagents.add_reagent("poo", 10) - adjust_hygiene(-25) - mood -= 25 - w_uniform.shit_overlay = image(icon = 'icons/mob/human_races/masks/sickness.dmi', icon_state="shit") - w_uniform.overlays += w_uniform.shit_overlay - w_uniform.update_icon() - update_icons() - //Poo on the face. - else if(M != src && M.lying) //Can only shit on them if they're lying down. - message = "[src] shits right on [M]'s face!" - if (M && M.reagents) - M.reagents.add_reagent("poo", 10) - //Poo on the floor. + if (src.bowels < 30) + if(stat != DEAD) + to_chat(src, "You don't have to shit.") + return + //Poo in the loo. + var/obj/structure/toilet/T = locate() in src.loc + var/mob/living/M = locate() in src.loc + if ((T && T.open) || (M.crap_inside)) + if (M.crap_inside) + message = "[src] defecates into the hole." else - message = "[src] [pick("shits", "craps", "poops")]." - var/obj/item/weapon/reagent_containers/food/snacks/poo/V = new/obj/item/weapon/reagent_containers/food/snacks/poo(src.loc) - if(reagents) - reagents.trans_to(V, rand(1,5)) - playsound(src.loc, 'sound/effects/poo2.ogg', 60, 1) - bowels -= rand(120,150) + message = "[src] defecates into \the [T]." + var/obj/item/weapon/reagent_containers/food/snacks/poo/V = new/obj/item/weapon/reagent_containers/food/snacks/poo(src.loc) + if(reagents) + reagents.trans_to(V, rand(1,5)) + V.forceMove(T) + else if(w_uniform) + message = "[src] shits \his pants." + reagents.add_reagent("poo", 10) + adjust_hygiene(-25) + mood -= 25 + w_uniform.shit_overlay = image(icon = 'icons/mob/human_races/masks/sickness.dmi', icon_state="shit") + w_uniform.overlays += w_uniform.shit_overlay + w_uniform.update_icon() + update_icons() + //Poo on the face. + else if(M != src && M.lying) //Can only shit on them if they're lying down. + message = "[src] shits right on [M]'s face!" + if (M && M.reagents) + M.reagents.add_reagent("poo", 10) + //Poo on the floor. else - if(stat == DEAD) - return - to_chat(src, "You don't have to shit.") - return + message = "[src] [pick("shits", "craps", "poops")]." + var/obj/item/weapon/reagent_containers/food/snacks/poo/V = new/obj/item/weapon/reagent_containers/food/snacks/poo(src.loc) + if(reagents) + reagents.trans_to(V, rand(1,5)) + playsound(src.loc, 'sound/effects/poo2.ogg', 60, 1) + bowels -= rand(120,150) visible_message("[message]") //Peeing /mob/living/human/proc/handle_piss() var/message = null if (bladder < 30) - if(stat == DEAD) - return + if(stat != DEAD) to_chat(src, "You don't have to piss.") return var/mob/living/M = locate() in src.loc From 5120fe39f5829a6747e6e9bc9f449a60ee50d244 Mon Sep 17 00:00:00 2001 From: savethetreez <76013553+savethetreez@users.noreply.github.com> Date: Fri, 19 Apr 2024 13:25:47 +0200 Subject: [PATCH 41/50] Quickfix --- code/game/mob/living/carbon/human/shit_piss.dm | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/code/game/mob/living/carbon/human/shit_piss.dm b/code/game/mob/living/carbon/human/shit_piss.dm index 201f8e9c0f..e3fb737c06 100644 --- a/code/game/mob/living/carbon/human/shit_piss.dm +++ b/code/game/mob/living/carbon/human/shit_piss.dm @@ -280,9 +280,8 @@ //Shitting /mob/living/human/proc/handle_shit() var/message = null - if (src.bowels < 30) - if(stat != DEAD) - to_chat(src, "You don't have to shit.") + if (src.bowels < 30 && stat != DEAD) + to_chat(src, "You don't have to shit.") return //Poo in the loo. var/obj/structure/toilet/T = locate() in src.loc @@ -323,8 +322,7 @@ //Peeing /mob/living/human/proc/handle_piss() var/message = null - if (bladder < 30) - if(stat != DEAD) + if (bladder < 30 && stat != DEAD) to_chat(src, "You don't have to piss.") return var/mob/living/M = locate() in src.loc From b14b6597ce942d41ae08eb0428a6b0235aa64dca Mon Sep 17 00:00:00 2001 From: savethetreez <76013553+savethetreez@users.noreply.github.com> Date: Fri, 19 Apr 2024 17:58:47 +0200 Subject: [PATCH 42/50] Update structures.dm Indentation fix + converts spans --- code/game/objects/structures.dm | 77 +++++++++++++++++---------------- 1 file changed, 39 insertions(+), 38 deletions(-) diff --git a/code/game/objects/structures.dm b/code/game/objects/structures.dm index 57b09e38e8..62853b27ae 100644 --- a/code/game/objects/structures.dm +++ b/code/game/objects/structures.dm @@ -11,6 +11,7 @@ var/not_movable = TRUE var/not_disassemblable = TRUE + /obj/structure/Destroy() if (parts) new parts(loc) @@ -18,42 +19,42 @@ /obj/structure/attack_hand(mob/M, icon_x, icon_y) if (climbers.len && !(M in climbers)) - M.visible_message("[M] shakes \the [src].", \ - "You shake \the [src].") + M.visible_message(SPAN_WARNING("[M] shakes \the [src]."), \ + SPAN_NOTICE("You shake \the [src].")) structure_shaken() return ..() /obj/structure/attackby(var/obj/item/O as obj, mob/user as mob, icon_x, icon_y) - if (istype(O, /obj/item/weapon/wrench) && !not_movable) - if (powersource) - to_chat(user, SPAN_NOTICE("Remove the cables first.")) - return - if (istype(src, /obj/structure/engine)) - var/obj/structure/engine/EN = src - if (!isemptylist(EN.connections)) - to_chat(user, SPAN_NOTICE("Remove the cables first.")) - return - if (istype(src, /obj/structure/table)) // Convoluted way of not allowing to pull flipped tables onto other flipped tables to bypass barrier stacking checks during same turf flipping. - for (var/obj/structure/table/T in get_turf(src)) - if (T != src && T.anchored) - to_chat(user, SPAN_WARNING("You can't anchor \the [src] here, there's already \a [T] anchored here.")) - return - if (do_after(user, 15, src)) - playsound(loc, 'sound/items/Ratchet.ogg', 100, TRUE) - to_chat(user, (src.anchored ? SPAN_NOTICE("You unfasten \the [src] from the floor.") : SPAN_NOTICE("You secure \the [src] to the floor."))) - src.anchored = !src.anchored - return - else if (istype(O, /obj/item/weapon/hammer) && !not_disassemblable) - playsound(loc, 'sound/items/Screwdriver.ogg', 75, TRUE) - to_chat(user, SPAN_NOTICE("You begin dismantling \the [src].")) - if (do_after(user, 25, src)) - to_chat(user, SPAN_NOTICE("You dismantle \the [src].")) - new /obj/item/stack/material/wood(get_turf(src)) - for (var/obj/item/weapon/book/b in contents) - b.loc = (get_turf(src)) - qdel(src) - return + if (istype(O, /obj/item/weapon/wrench) && !not_movable) + if (powersource) + to_chat(user, SPAN_NOTICE("Remove the cables first.")) + return + if (istype(src, /obj/structure/engine)) + var/obj/structure/engine/EN = src + if (!isemptylist(EN.connections)) + to_chat(user, SPAN_NOTICE("Remove the cables first.")) + return + if (istype(src, /obj/structure/table)) // Convoluted way of not allowing to pull flipped tables onto other flipped tables to bypass barrier stacking checks during same turf flipping. + for (var/obj/structure/table/T in get_turf(src)) + if (T != src && T.anchored) + to_chat(user, SPAN_WARNING("You can't anchor \the [src] here, there's already \a [T] anchored here.")) + return + if (do_after(user, 15, src)) + playsound(loc, 'sound/items/Ratchet.ogg', 100, TRUE) + to_chat(user, (src.anchored ? SPAN_NOTICE("You unfasten \the [src] from the floor.") : SPAN_NOTICE("You secure \the [src] to the floor."))) + src.anchored = !src.anchored + return + else if (istype(O, /obj/item/weapon/hammer) && !not_disassemblable) + playsound(loc, 'sound/items/Screwdriver.ogg', 75, TRUE) + to_chat(user, SPAN_NOTICE("You begin dismantling \the [src].")) + if (do_after(user, 25, src)) + to_chat(user, SPAN_NOTICE("You dismantle \the [src].")) + new /obj/item/stack/material/wood(get_turf(src)) + for (var/obj/item/weapon/book/b in contents) + b.loc = (get_turf(src)) + qdel(src) + return /obj/structure/CanPass(atom/movable/mover, turf/target, height=0, air_group=0) if (istype(mover, /obj/effect/effect/smoke)) @@ -62,7 +63,7 @@ if (prob(66) && density) return TRUE else - visible_message("The [mover.name] riochetes off \the [src]!") + visible_message(SPAN_WARNING("The [mover.name] ricochetes off \the [src]!")) return FALSE else return ..() @@ -285,21 +286,21 @@ /obj/structure/proc/structure_shaken() for (var/mob/living/M in climbers) M.Weaken(1) - M << "You topple as you are shaken off \the [src]!" + to_chat(M, SPAN_DANGER("You topple as you are shaken off \the [src]!")) climbers.Cut(1,2) for (var/mob/living/M in get_turf(src)) if (M.lying) return //No spamming this on people. M.Weaken(3) - M << "You topple as \the [src] moves under you!" + to_chat(M, SPAN_DANGER("You topple as \the [src] moves under you!")) if (prob(25)) var/damage = rand(15,30) var/mob/living/human/H = M if (!istype(H)) - H << "You land heavily!" + to_chat(H, SPAN_DANGER("You land heavily!") M.adjustBruteLoss(damage) return @@ -318,10 +319,10 @@ affecting = H.get_organ("head") if (affecting) - M << "You land heavily on your [affecting.name]!" + to_chat(M, SPAN_DANGER("You land heavily on your [affecting.name]!")) affecting.take_damage(damage, FALSE) else - H << "You land heavily!" + to_chat(H, SPAN_DANGER("You land heavily!")) H.adjustBruteLoss(damage) H.UpdateDamageIcon() @@ -343,7 +344,7 @@ /obj/structure/attack_generic(var/mob/user, var/damage, var/attack_verb, var/wallbreaker) if (!breakable || !damage || !wallbreaker) return FALSE - visible_message("[user] [attack_verb] the [src] apart!") + visible_message(SPAN_DANGER("[user] [attack_verb] the [src] apart!")) attack_animation(user) spawn(1) qdel(src) return TRUE From 78061d581addbf8ea6dd244247de2b1033e0b422 Mon Sep 17 00:00:00 2001 From: savethetreez <76013553+savethetreez@users.noreply.github.com> Date: Fri, 19 Apr 2024 18:16:45 +0200 Subject: [PATCH 43/50] Update structures.dm More indentation fixes + adds an empty list check in the weird proc --- code/game/objects/structures.dm | 105 ++++++++++++++++---------------- 1 file changed, 51 insertions(+), 54 deletions(-) diff --git a/code/game/objects/structures.dm b/code/game/objects/structures.dm index 62853b27ae..79b9246655 100644 --- a/code/game/objects/structures.dm +++ b/code/game/objects/structures.dm @@ -93,62 +93,59 @@ return ..() /obj/structure/proc/can_climb(var/mob/living/user, post_climb_check=0) - var/movingto = get_step(get_turf(src), dir) - if (map && movingto && map.check_caribbean_block(user, movingto)) - to_chat(user, SPAN_WARNING("You cannot pass the invisible wall until the Grace Period has ended.")) - return FALSE - - if (!climbable || !can_touch(user) || (!post_climb_check && (user in climbers))) - return FALSE - - if (!user.Adjacent(src) && !istype(src, /obj/structure/window/barrier)) - to_chat(user, SPAN_DANGER("You can't climb there, the way is blocked.")) - return FALSE - - var/list/objects_blocked = turf_is_crowded(user) - if (objects_blocked.len > 0) - var/blocked_list = english_list(objects_blocked, " nothing ", " and \the ") - to_chat(user, SPAN_DANGER("\The [blocked_list] blocks you from climbing over.")) // e.g; The wood barricade and the steel barricade blocks you from climbing over. - return FALSE - - var/list/objects_blocked_2 = turf_is_crowded(user, 1) - if (objects_blocked_2.len > 0) - var/blocked_list_2 = english_list(objects_blocked_2, " nothing ", " and \the ") - to_chat(user, SPAN_DANGER("\The [blocked_list_2] blocks you from climbing over.")) // e.g; The wood barricade and the steel barricade blocks you from climbing over. - return FALSE - - return TRUE + var/movingto = get_step(get_turf(src), dir) + if (map && movingto && map.check_caribbean_block(user, movingto)) + to_chat(user, SPAN_WARNING("You cannot pass the invisible wall until the Grace Period has ended.")) + return FALSE + + if (!climbable || !can_touch(user) || (!post_climb_check && (user in climbers))) + return FALSE + + if (!user.Adjacent(src) && !istype(src, /obj/structure/window/barrier)) + to_chat(user, SPAN_DANGER("You can't climb there, the way is blocked.")) + return FALSE + + var/list/objects_blocked = turf_is_crowded(user) + if (objects_blocked.len > 0) + var/blocked_list = english_list(objects_blocked, " nothing ", " and \the ") + to_chat(user, SPAN_DANGER("\The [blocked_list] blocks you from climbing over.")) // e.g; The wood barricade and the steel barricade blocks you from climbing over. + return FALSE + + var/list/objects_blocked_2 = turf_is_crowded(user, 1) + if (objects_blocked_2.len > 0) + var/blocked_list_2 = english_list(objects_blocked_2, " nothing ", " and \the ") + to_chat(user, SPAN_DANGER("\The [blocked_list_2] blocks you from climbing over.")) // e.g; The wood barricade and the steel barricade blocks you from climbing over. + return FALSE + + return TRUE /obj/structure/proc/turf_is_crowded(var/mob/living/user, second_turf=0) - var/turf/T = get_step(get_turf(src), src.dir) // Target-Turf (movingto) - var/turf/TT = get_turf(src) // Start-Turf - var/list/objects_blocked = list() // List to store all objects that block the way - var/list/objects_blocked_2 = list() - - // Check for climbable objects in the target turf - for (var/obj/O in T.contents) - if (istype(O, /obj/structure)) - var/obj/structure/S = O - if (!S) continue // Skip if S is not valid - if (S.climbable) continue // Skip if the object is climbable - if (O && O.density && !(O.flags & ON_BORDER)) //ON_BORDER structures are handled by the Adjacent() check. - objects_blocked += O.name // Add the dense object's name to the list of objects that block the way. - - // Check for climbable objects in the start turf - if (second_turf) - for (var/obj/O in TT.contents) - if (istype(O, /obj/structure)) - var/obj/structure/S = O - if (!S) continue // Skip if S is not valid - if (S.climbable) continue // Skip if the object is climbable - if (O && O.density && !(O.flags & ON_BORDER)) //ON_BORDER structures are handled by the Adjacent() check. - objects_blocked_2 += O.name // Add the dense object's name to the list of objects that block the way. - - // If no crowded object is found, return an empty list - if (second_turf) - return objects_blocked_2 - return objects_blocked - + var/turf/T = get_step(get_turf(src), src.dir) // Target-Turf (movingto) + var/turf/TT = get_turf(src) // Start-Turf + var/list/objects_blocked = list() // List to store all objects that block the way + var/list/objects_blocked_2 = list() + + // Check for climbable objects in the target turf + for (var/obj/O in T.contents) + if (istype(O, /obj/structure)) + var/obj/structure/S = O + if (!S) continue // Skip if S is not valid + if (S.climbable) continue // Skip if the object is climbable + if (O && O.density && !(O.flags & ON_BORDER)) //ON_BORDER structures are handled by the Adjacent() check. + objects_blocked += O.name // Add the dense object's name to the list of objects that block the way. + + // Check for climbable objects in the start turf + if (second_turf) + for (var/obj/O in TT.contents) + if (istype(O, /obj/structure)) + var/obj/structure/S = O + if (!S) continue // Skip if S is not valid + if (S.climbable) continue // Skip if the object is climbable + if (O && O.density && !(O.flags & ON_BORDER)) //ON_BORDER structures are handled by the Adjacent() check. + objects_blocked_2 += O.name // Add the dense object's name to the list of objects that block the way. + if(!isemptylist(objects_blocked_2)) + return objects_blocked_2 + return objects_blocked /obj/structure/proc/neighbor_turf_passable() From 676057ec5dbc2daa904658679bb15cff8f5545b8 Mon Sep 17 00:00:00 2001 From: savethetreez <76013553+savethetreez@users.noreply.github.com> Date: Fri, 19 Apr 2024 18:22:46 +0200 Subject: [PATCH 44/50] Update structures.dm --- code/game/objects/structures.dm | 40 ++++++++++++++++----------------- 1 file changed, 20 insertions(+), 20 deletions(-) diff --git a/code/game/objects/structures.dm b/code/game/objects/structures.dm index 79b9246655..7074c832ec 100644 --- a/code/game/objects/structures.dm +++ b/code/game/objects/structures.dm @@ -28,33 +28,33 @@ /obj/structure/attackby(var/obj/item/O as obj, mob/user as mob, icon_x, icon_y) if (istype(O, /obj/item/weapon/wrench) && !not_movable) if (powersource) - to_chat(user, SPAN_NOTICE("Remove the cables first.")) - return - if (istype(src, /obj/structure/engine)) - var/obj/structure/engine/EN = src - if (!isemptylist(EN.connections)) to_chat(user, SPAN_NOTICE("Remove the cables first.")) return + if (istype(src, /obj/structure/engine)) + var/obj/structure/engine/EN = src + if (!isemptylist(EN.connections)) + to_chat(user, SPAN_NOTICE("Remove the cables first.")) + return if (istype(src, /obj/structure/table)) // Convoluted way of not allowing to pull flipped tables onto other flipped tables to bypass barrier stacking checks during same turf flipping. - for (var/obj/structure/table/T in get_turf(src)) + for (var/obj/structure/table/T in get_turf(src)) if (T != src && T.anchored) - to_chat(user, SPAN_WARNING("You can't anchor \the [src] here, there's already \a [T] anchored here.")) - return - if (do_after(user, 15, src)) - playsound(loc, 'sound/items/Ratchet.ogg', 100, TRUE) - to_chat(user, (src.anchored ? SPAN_NOTICE("You unfasten \the [src] from the floor.") : SPAN_NOTICE("You secure \the [src] to the floor."))) - src.anchored = !src.anchored - return + to_chat(user, SPAN_WARNING("You can't anchor \the [src] here, there's already \a [T] anchored here.")) + return + if (do_after(user, 15, src)) + playsound(loc, 'sound/items/Ratchet.ogg', 100, TRUE) + to_chat(user, (src.anchored ? SPAN_NOTICE("You unfasten \the [src] from the floor.") : SPAN_NOTICE("You secure \the [src] to the floor."))) + src.anchored = !src.anchored + return else if (istype(O, /obj/item/weapon/hammer) && !not_disassemblable) playsound(loc, 'sound/items/Screwdriver.ogg', 75, TRUE) to_chat(user, SPAN_NOTICE("You begin dismantling \the [src].")) if (do_after(user, 25, src)) - to_chat(user, SPAN_NOTICE("You dismantle \the [src].")) - new /obj/item/stack/material/wood(get_turf(src)) - for (var/obj/item/weapon/book/b in contents) + to_chat(user, SPAN_NOTICE("You dismantle \the [src].")) + new /obj/item/stack/material/wood(get_turf(src)) + for (var/obj/item/weapon/book/b in contents) b.loc = (get_turf(src)) - qdel(src) - return + qdel(src) + return /obj/structure/CanPass(atom/movable/mover, turf/target, height=0, air_group=0) if (istype(mover, /obj/effect/effect/smoke)) @@ -142,7 +142,7 @@ if (!S) continue // Skip if S is not valid if (S.climbable) continue // Skip if the object is climbable if (O && O.density && !(O.flags & ON_BORDER)) //ON_BORDER structures are handled by the Adjacent() check. - objects_blocked_2 += O.name // Add the dense object's name to the list of objects that block the way. + objects_blocked_2 += O.name // Add the dense object's name to the list of objects that block the way. if(!isemptylist(objects_blocked_2)) return objects_blocked_2 return objects_blocked @@ -297,7 +297,7 @@ var/damage = rand(15,30) var/mob/living/human/H = M if (!istype(H)) - to_chat(H, SPAN_DANGER("You land heavily!") + to_chat(H, SPAN_DANGER("You land heavily!")) M.adjustBruteLoss(damage) return From 4ad1bd66c1ee85f4795566c995edef53f9270f2e Mon Sep 17 00:00:00 2001 From: savethetreez <76013553+savethetreez@users.noreply.github.com> Date: Fri, 19 Apr 2024 18:27:05 +0200 Subject: [PATCH 45/50] Update structures.dm --- code/game/objects/structures.dm | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/code/game/objects/structures.dm b/code/game/objects/structures.dm index 7074c832ec..0de1ec07ca 100644 --- a/code/game/objects/structures.dm +++ b/code/game/objects/structures.dm @@ -37,14 +37,14 @@ return if (istype(src, /obj/structure/table)) // Convoluted way of not allowing to pull flipped tables onto other flipped tables to bypass barrier stacking checks during same turf flipping. for (var/obj/structure/table/T in get_turf(src)) - if (T != src && T.anchored) - to_chat(user, SPAN_WARNING("You can't anchor \the [src] here, there's already \a [T] anchored here.")) - return - if (do_after(user, 15, src)) - playsound(loc, 'sound/items/Ratchet.ogg', 100, TRUE) - to_chat(user, (src.anchored ? SPAN_NOTICE("You unfasten \the [src] from the floor.") : SPAN_NOTICE("You secure \the [src] to the floor."))) - src.anchored = !src.anchored - return + if (T != src && T.anchored) + to_chat(user, SPAN_WARNING("You can't anchor \the [src] here, there's already \a [T] anchored here.")) + return + if (do_after(user, 15, src)) + playsound(loc, 'sound/items/Ratchet.ogg', 100, TRUE) + to_chat(user, (src.anchored ? SPAN_NOTICE("You unfasten \the [src] from the floor.") : SPAN_NOTICE("You secure \the [src] to the floor."))) + src.anchored = !src.anchored + return else if (istype(O, /obj/item/weapon/hammer) && !not_disassemblable) playsound(loc, 'sound/items/Screwdriver.ogg', 75, TRUE) to_chat(user, SPAN_NOTICE("You begin dismantling \the [src].")) @@ -52,7 +52,7 @@ to_chat(user, SPAN_NOTICE("You dismantle \the [src].")) new /obj/item/stack/material/wood(get_turf(src)) for (var/obj/item/weapon/book/b in contents) - b.loc = (get_turf(src)) + b.loc = (get_turf(src)) qdel(src) return @@ -127,12 +127,12 @@ // Check for climbable objects in the target turf for (var/obj/O in T.contents) - if (istype(O, /obj/structure)) - var/obj/structure/S = O - if (!S) continue // Skip if S is not valid - if (S.climbable) continue // Skip if the object is climbable - if (O && O.density && !(O.flags & ON_BORDER)) //ON_BORDER structures are handled by the Adjacent() check. - objects_blocked += O.name // Add the dense object's name to the list of objects that block the way. + if (istype(O, /obj/structure)) + var/obj/structure/S = O + if (!S) continue // Skip if S is not valid + if (S.climbable) continue // Skip if the object is climbable + if (O && O.density && !(O.flags & ON_BORDER)) //ON_BORDER structures are handled by the Adjacent() check. + objects_blocked += O.name // Add the dense object's name to the list of objects that block the way. // Check for climbable objects in the start turf if (second_turf) From 18a28f4c8aea59d0e7068b3d081e1b2fe95027b6 Mon Sep 17 00:00:00 2001 From: savethetreez <76013553+savethetreez@users.noreply.github.com> Date: Fri, 19 Apr 2024 18:48:44 +0200 Subject: [PATCH 46/50] Reverts bow.dm --- code/modules/1713/weapons/guns/bow.dm | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/code/modules/1713/weapons/guns/bow.dm b/code/modules/1713/weapons/guns/bow.dm index 70bd2ee81d..17c9c49ac9 100644 --- a/code/modules/1713/weapons/guns/bow.dm +++ b/code/modules/1713/weapons/guns/bow.dm @@ -135,7 +135,8 @@ src.overlays += icon(A.icon,A.icon_state) /obj/item/weapon/gun/projectile/bow/Fire() - ..() // Call the parent proc first + ..() + remove_arrow_overlay() //Placement is fine, the empty arrow bug has to be dealt elsewhere but the special_check proc. /obj/item/weapon/gun/projectile/bow/sling name = "sling" @@ -262,10 +263,8 @@ /obj/item/weapon/gun/projectile/bow/special_check(mob/user) if (!istype(src, /obj/item/weapon/gun/projectile/bow/sling)) if (!(user.has_empty_hand(both = FALSE))) - user << "You need both hands to fire \the [src]!" + to_chat(user, SPAN_WARNING("You need both hands to fire \the [src]!")) return FALSE - else - remove_arrow_overlay() // Remove the overlay only after we check if the other hand is empty. return ..() /obj/item/weapon/gun/projectile/bow/attackby(obj/W as obj, mob/user as mob) @@ -273,4 +272,4 @@ user << "That won't fit on there." return FALSE else - return ..() \ No newline at end of file + return ..() From 0104d3515699c5c49bbbed5471e46c1a8655a67e Mon Sep 17 00:00:00 2001 From: savethetreez <76013553+savethetreez@users.noreply.github.com> Date: Fri, 19 Apr 2024 18:53:21 +0200 Subject: [PATCH 47/50] Update bow.dm --- code/modules/1713/weapons/guns/bow.dm | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/code/modules/1713/weapons/guns/bow.dm b/code/modules/1713/weapons/guns/bow.dm index 17c9c49ac9..d6c51072ff 100644 --- a/code/modules/1713/weapons/guns/bow.dm +++ b/code/modules/1713/weapons/guns/bow.dm @@ -196,6 +196,7 @@ ..() loaded = list() chambered = null + update_icon() /obj/item/weapon/gun/projectile/bow/load_ammo(var/obj/item/A, mob/user) if (world.time < user.next_load) @@ -238,19 +239,17 @@ remove_arrow_overlay() if (bulletinsert_sound) playsound(loc, bulletinsert_sound, 75, TRUE) else - user << "[src] is empty." + to_chat(SPAN_WARNING("[src] is empty.")) update_icon() /obj/item/weapon/gun/projectile/bow/update_icon() - if (chambered) icon_state = "[icotype]1" item_state = "[icotype]1" - return else icon_state = "[icotype]0" item_state = "[icotype]0" - return + return /obj/item/weapon/gun/projectile/bow/handle_click_empty(mob/user) if (user) @@ -269,7 +268,7 @@ /obj/item/weapon/gun/projectile/bow/attackby(obj/W as obj, mob/user as mob) if (istype(W, /obj/item/weapon/attachment/bayonet)) - user << "That won't fit on there." + to_chat(user, SPAN_WARNING("That won't fit on there.") return FALSE else return ..() From 0188ed8ce148777f2a609b10622fe494fbf7fb71 Mon Sep 17 00:00:00 2001 From: savethetreez <76013553+savethetreez@users.noreply.github.com> Date: Fri, 19 Apr 2024 18:57:31 +0200 Subject: [PATCH 48/50] Update table.dm Indentation fix --- code/game/objects/structures/table.dm | 49 +++++++++++++-------------- 1 file changed, 24 insertions(+), 25 deletions(-) diff --git a/code/game/objects/structures/table.dm b/code/game/objects/structures/table.dm index 406e220102..1ab1342a48 100644 --- a/code/game/objects/structures/table.dm +++ b/code/game/objects/structures/table.dm @@ -450,30 +450,29 @@ qdel(I) /obj/structure/table/attackby(obj/item/I as obj, mob/user as mob, params) - if (istype(I, /obj/item/weapon/grab)) - tablepush(I, user) - return - - if (istype(I, /obj/item/weapon/hammer) || istype(I, /obj/item/weapon/wrench)) - if (user.a_intent == I_HARM) - ..() - return TRUE // Resolves the attack so we don't get invisible wrenches/hammers. - else - user.drop_item(loc) - playsound(loc, I.dropsound, 100, TRUE) - return - - user.drop_item(loc) - playsound(loc, I.dropsound, 100, TRUE) - - // Center the icon where the user clicked if we can. - var/list/click_params = params2list(params) - if (!click_params || !click_params["icon-x"] || !click_params["icon-y"]) - return - // Clamp it so that the icon never moves more than 16 pixels in either direction (thus leaving the table turf) - I.pixel_x = Clamp(text2num(click_params["icon-x"]) - 16, -(world.icon_size/2), world.icon_size/2) - I.pixel_y = Clamp(text2num(click_params["icon-y"]) - 16, -(world.icon_size/2), world.icon_size/2) - + if (istype(I, /obj/item/weapon/grab)) + tablepush(I, user) + return + + if (istype(I, /obj/item/weapon/hammer) || istype(I, /obj/item/weapon/wrench)) + if (user.a_intent == I_HARM) + ..() + return TRUE // Resolves the attack so we don't get invisible wrenches/hammers. + else + user.drop_item(loc) + playsound(loc, I.dropsound, 100, TRUE) + return + + user.drop_item(loc) + playsound(loc, I.dropsound, 100, TRUE) + + // Center the icon where the user clicked if we can. + var/list/click_params = params2list(params) + if (!click_params || !click_params["icon-x"] || !click_params["icon-y"]) + return + // Clamp it so that the icon never moves more than 16 pixels in either direction (thus leaving the table turf) + I.pixel_x = Clamp(text2num(click_params["icon-x"]) - 16, -(world.icon_size/2), world.icon_size/2) + I.pixel_y = Clamp(text2num(click_params["icon-y"]) - 16, -(world.icon_size/2), world.icon_size/2) /* * TABLE DESTRUCTION/DECONSTRUCTION @@ -646,4 +645,4 @@ buildstack = /obj/item/stack/material/cloth flammable = TRUE flipped = FALSE - fixedsprite = TRUE \ No newline at end of file + fixedsprite = TRUE From 764d9a3be4b5d9bb2766f890c07e35d42a29746d Mon Sep 17 00:00:00 2001 From: savethetreez <76013553+savethetreez@users.noreply.github.com> Date: Fri, 19 Apr 2024 19:05:03 +0200 Subject: [PATCH 49/50] Reverts item_attack.dm --- code/_onclick/item_attack.dm | 1 - 1 file changed, 1 deletion(-) diff --git a/code/_onclick/item_attack.dm b/code/_onclick/item_attack.dm index 8e7f02ebeb..d76ed7a56a 100644 --- a/code/_onclick/item_attack.dm +++ b/code/_onclick/item_attack.dm @@ -74,7 +74,6 @@ avoid code duplication. This includes items that may sometimes act as a standard // Proximity_flag is TRUE if this afterattack was called on something adjacent, in your square, or on your person. // Click parameters is the params string from byond Click() code, see that documentation. /obj/item/proc/afterattack(atom/target, mob/user, proximity_flag, params) - if(!proximity_flag) return // afterattack needs to check proximity_flag, because afterattack runs if you click at range. This is to fix invisible wrenches/hammers, and a general check. Unlikely to break anything. if (istype(target, /obj/structure/table)) var/list/click_params = params2list(params) //Center the icon where the user clicked. From d02c341966a2cc9dead36f3d51357f994d6402f4 Mon Sep 17 00:00:00 2001 From: savethetreez <76013553+savethetreez@users.noreply.github.com> Date: Fri, 19 Apr 2024 19:12:55 +0200 Subject: [PATCH 50/50] Update bow.dm --- code/modules/1713/weapons/guns/bow.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/modules/1713/weapons/guns/bow.dm b/code/modules/1713/weapons/guns/bow.dm index d6c51072ff..4d81c97873 100644 --- a/code/modules/1713/weapons/guns/bow.dm +++ b/code/modules/1713/weapons/guns/bow.dm @@ -239,7 +239,7 @@ remove_arrow_overlay() if (bulletinsert_sound) playsound(loc, bulletinsert_sound, 75, TRUE) else - to_chat(SPAN_WARNING("[src] is empty.")) + to_chat(user, SPAN_WARNING("[src] is empty.")) update_icon() /obj/item/weapon/gun/projectile/bow/update_icon() @@ -268,7 +268,7 @@ /obj/item/weapon/gun/projectile/bow/attackby(obj/W as obj, mob/user as mob) if (istype(W, /obj/item/weapon/attachment/bayonet)) - to_chat(user, SPAN_WARNING("That won't fit on there.") + to_chat(user, SPAN_WARNING("That won't fit on there.")) return FALSE else return ..()