From 3968213bde6ba9b4079774b18f4c97b54d57fc02 Mon Sep 17 00:00:00 2001 From: BurgerLua Date: Mon, 22 Apr 2019 12:04:21 -0700 Subject: [PATCH 01/83] Increased the spawn area size of the City of Cogs --- _maps/map_files/generic/City_of_Cogs.dmm | 1375 +++++++++++----------- 1 file changed, 710 insertions(+), 665 deletions(-) diff --git a/_maps/map_files/generic/City_of_Cogs.dmm b/_maps/map_files/generic/City_of_Cogs.dmm index e67a829221..889abe66c3 100644 --- a/_maps/map_files/generic/City_of_Cogs.dmm +++ b/_maps/map_files/generic/City_of_Cogs.dmm @@ -212,11 +212,8 @@ /turf/open/indestructible/reebe_void, /area/reebe) "aR" = ( -/obj/effect/clockwork/servant_blocker{ - dir = 1 - }, -/obj/structure/lattice/clockwork, -/turf/open/indestructible/reebe_void, +/obj/effect/landmark/city_of_cogs, +/turf/open/indestructible/clock_spawn_room, /area/reebe/city_of_cogs) "aS" = ( /obj/effect/clockwork/servant_blocker{ @@ -242,17 +239,20 @@ /turf/open/indestructible/reebe_void/spawning/lattices, /area/reebe) "aX" = ( -/obj/effect/landmark/city_of_cogs, +/obj/structure/table/reinforced/brass, +/obj/item/clockwork/component/belligerent_eye, /turf/open/indestructible/clock_spawn_room, /area/reebe/city_of_cogs) "aY" = ( -/obj/structure/table/reinforced/brass, -/obj/item/clockwork/component/belligerent_eye/blind_eye, -/turf/open/indestructible/clock_spawn_room, -/area/reebe/city_of_cogs) +/obj/effect/clockwork/servant_blocker{ + dir = 1 + }, +/obj/structure/lattice/clockwork, +/turf/open/indestructible/reebe_void, +/area/reebe) "aZ" = ( /obj/structure/table/reinforced/brass, -/obj/item/clockwork/component/belligerent_eye, +/obj/item/clockwork/component/belligerent_eye/blind_eye, /turf/open/indestructible/clock_spawn_room, /area/reebe/city_of_cogs) "ba" = ( @@ -262,32 +262,32 @@ /area/reebe/city_of_cogs) "bb" = ( /obj/structure/table/reinforced/brass, -/obj/item/clockwork/component/replicant_alloy, +/obj/item/clockwork/component/geis_capacitor, /turf/open/indestructible/clock_spawn_room, /area/reebe/city_of_cogs) "bc" = ( /obj/structure/table/reinforced/brass, -/obj/item/clockwork/component/replicant_alloy/smashed_anima_fragment, +/obj/item/clockwork/component/geis_capacitor/antennae, /turf/open/indestructible/clock_spawn_room, /area/reebe/city_of_cogs) "bd" = ( /obj/structure/table/reinforced/brass, -/obj/item/clockwork/component/replicant_alloy/replication_plate, +/obj/item/clockwork/component/geis_capacitor/fallen_armor, /turf/open/indestructible/clock_spawn_room, /area/reebe/city_of_cogs) "be" = ( /obj/structure/table/reinforced/brass, -/obj/item/clockwork/component/geis_capacitor/antennae, +/obj/item/clockwork/component/hierophant_ansible, /turf/open/indestructible/clock_spawn_room, /area/reebe/city_of_cogs) "bf" = ( /obj/structure/table/reinforced/brass, -/obj/item/clockwork/component/geis_capacitor/fallen_armor, +/obj/item/clockwork/component/hierophant_ansible/obelisk, /turf/open/indestructible/clock_spawn_room, /area/reebe/city_of_cogs) "bg" = ( /obj/structure/table/reinforced/brass, -/obj/item/clockwork/component/geis_capacitor, +/obj/item/clockwork/component/replicant_alloy, /turf/open/indestructible/clock_spawn_room, /area/reebe/city_of_cogs) "bh" = ( @@ -304,6 +304,51 @@ /obj/structure/destructible/clockwork/eminence_spire, /turf/open/floor/clockwork/reebe, /area/reebe/city_of_cogs) +"bk" = ( +/obj/structure/table/reinforced/brass, +/obj/item/clockwork/component/replicant_alloy/replication_plate, +/turf/open/indestructible/clock_spawn_room, +/area/reebe/city_of_cogs) +"bl" = ( +/obj/structure/table/reinforced/brass, +/obj/item/clockwork/component/replicant_alloy/smashed_anima_fragment, +/turf/open/indestructible/clock_spawn_room, +/area/reebe/city_of_cogs) +"bm" = ( +/obj/structure/table/reinforced/brass, +/obj/item/clockwork/component/vanguard_cogwheel, +/turf/open/indestructible/clock_spawn_room, +/area/reebe/city_of_cogs) +"bn" = ( +/obj/structure/table/reinforced/brass, +/obj/item/clockwork/component/vanguard_cogwheel/onyx_prism, +/turf/open/indestructible/clock_spawn_room, +/area/reebe/city_of_cogs) +"bo" = ( +/obj/structure/window/reinforced/clockwork/fulltile, +/obj/structure/grille/ratvar, +/turf/open/indestructible/clock_spawn_room, +/area/reebe/city_of_cogs) +"bp" = ( +/obj/structure/window/reinforced/clockwork/fulltile, +/turf/open/indestructible/clock_spawn_room, +/area/reebe/city_of_cogs) +"bu" = ( +/obj/structure/table/reinforced/brass, +/turf/open/indestructible/clock_spawn_room, +/area/reebe/city_of_cogs) +"bw" = ( +/obj/structure/chair/brass{ + dir = 8 + }, +/turf/open/indestructible/clock_spawn_room, +/area/reebe/city_of_cogs) +"bx" = ( +/obj/structure/chair/brass{ + dir = 4 + }, +/turf/open/indestructible/clock_spawn_room, +/area/reebe/city_of_cogs) (1,1,1) = {" aa @@ -26909,7 +26954,7 @@ ab ab ab ab -aa +ab aa aa aa @@ -27166,8 +27211,8 @@ ab ab ab ab -aa -aa +ab +ab aa aa aa @@ -27423,9 +27468,9 @@ ab ab ab ab -aa -aa -aa +ab +ab +ab aa aa aa @@ -27680,10 +27725,10 @@ ab ab ab ab -aa -aa -aa -aa +ab +ab +ab +ab aa aa aa @@ -27923,25 +27968,25 @@ ab ab ab ab +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae ab ab ab ab ab ab -ab -ab -ab -ab -ab -ab -ab -ab -aa -aa -aa -aa -aa aa aa aa @@ -28166,40 +28211,40 @@ ab ab ab ab -ab -ab aF +aF +aY +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ah +ah +bo +bo +bo +bo +bo +bo +bo +ah +ah +ae +ae +ae ab ab ab ab ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -aa -aa -aa -aa -aa -aa aa aa aa @@ -28424,39 +28469,39 @@ aF aF aF aF -aF -aF -ae -ae -ae +aG +aS +ah +ah +ah +ah +ah +ah +ah +ah +ah +ah +ah +ah +ah +aT +aT +aT +aT +aT +aT +aT +aT +aT +ah +ah +ah ae ae ab ab ab ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -aa -aa -aa -aa -aa -aa aa aa aa @@ -28682,38 +28727,38 @@ aG aG aG aG -aR -ah -ah -ah -ah -ah -ae -ae -ae -ae -ae -ae -ae +aS +bu +bu +bu +bu +bu +bu +bu +bu +bu +bu +bu +bu +aU +aT +aT +aT +aT +aT +aT +aT +aT +aT +bo +aX +bo +ag ae ab ab ab ab -ab -ab -ab -ab -ab -ab -ab -ab -aa -aa -aa -aa -aa -aa aa aa aa @@ -28940,37 +28985,37 @@ aj aj aj aS +bw +bw +bw +bw +bw +bw +bw +bw +bw +bw +bw +bw +aU aT aT +aR +aT +aR +aT +aR aT aT -ah -ah -ai -ai -ai -ai -ai -ah -ah +bo +aZ +bo +ag ae ab ab ab ab -ab -ab -ab -ab -ab -ab -ab -aa -aa -aa -aa -aa -aa aa aa aa @@ -29201,7 +29246,6 @@ aT aT aT aT -ah aT aT aT @@ -29209,15 +29253,22 @@ aT aT aT aT -ah +aT +bo +aT +aT +aT +aT +aT +aT +aT +aT +aT +bo +ba +bo ag ae -ab -ab -ab -ab -ab -ae bi ab ab @@ -29339,12 +29390,6 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa "} (114,1,1) = {" aa @@ -29458,7 +29503,6 @@ aT aT aT aT -aU aT aT aT @@ -29466,15 +29510,22 @@ aT aT aT aT -ah -ah -ah -ab -ab -ab -ab -ab -ab +aT +aV +aT +aT +aR +aT +aR +aT +aR +aT +aT +bo +bb +bo +ag +ae ab ae ac @@ -29596,12 +29647,6 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa "} (115,1,1) = {" aa @@ -29715,33 +29760,33 @@ aT aT aT aT -aU aT aT -aX -aX -aX aT aT -ai -aY -ai +aT +aT +aT +aT +bo +aT +aT +aT +aT +aT +aT +aT +aT +aT +bo +bc +bo +ag +ae ab ab ab ab -ab -ab -ab -ab -ab -ab -aa -aa -aa -aa -aa -aa aa aa aa @@ -29972,33 +30017,33 @@ aT aT aT aT -aV aT aT -aX -aX -aX aT aT -ai -aZ -ai +aT +aT +aT +aT +aU +aT +aT +aR +aT +aR +aT +aR +aT +aT +bo +bd +bo +ag +ae ab ab ab ab -ab -ab -ab -ab -ab -ab -aa -aa -aa -aa -aa -aa aa aa aa @@ -30229,33 +30274,33 @@ aT aT aT aT +aT +aT +aT +aT +aT +aT +aT +aT aU aT aT -aX -aX -aX aT aT -ai -ba -ai +aT +aT +aT +aT +aT +bo +be +bo +ag +ae ab ab ab ab -ab -ab -ab -ab -ab -ab -aa -aa -aa -aa -aa -aa aa aa aa @@ -30486,7 +30531,17 @@ aT aT aT aT -aU +aT +aT +aT +aT +aT +aT +bp +bp +ah +aT +aT aT aT aT @@ -30497,22 +30552,12 @@ aT ah ah ah +ae +ae ab ab ab ab -ab -ab -ab -ab -ab -ab -aa -aa -aa -aa -aa -aa aa aa aa @@ -30743,33 +30788,33 @@ aT aT aT aT +aT +aT +aT +aT +aT +aT +bp +bg ah -aT -aT -aT -aT -aT -aT -aT ah -ag +bo +bo +bo +bo +bo +bo +bo +ah +ah +ae +ae ae ab ab ab ab ab -ab -ab -ab -ab -ab -aa -aa -aa -aa -aa -aa aa aa aa @@ -31000,33 +31045,33 @@ aT aT aT aT +aT +aT +aT +aT +aT +aT +bp +bp +ah +aT +aT +aT +aT +aT +aT +aT +aT +aT ah ah -aU -aU -aV -aU -aU ah -ah -ag +ae ae ab ab ab ab -ab -ab -ab -ab -ab -ab -aa -aa -aa -aa -aa -aa aa aa aa @@ -31257,7 +31302,6 @@ aT aT aT aT -ah aT aT aT @@ -31265,25 +31309,26 @@ aT aT aT aT -ah +aT +aU +aT +aT +aT +aT +aT +aT +aT +aT +aT +bo +bf +bo ag ae ab ab ab ab -ab -ab -ab -ab -ab -ab -aa -aa -aa -aa -aa -aa aa aa aa @@ -31514,33 +31559,33 @@ aT aT aT aT +aT +aT +aT +aT +aT +aT +aT +aT aU aT aT +aR +aT +aR +aT +aR aT aT -aT -aT -aT -ah -ah -ah +bo +bg +bo +ag +ae ab ab ab ab -ab -ab -ab -ab -ab -ab -aa -aa -aa -aa -aa -aa aa aa aa @@ -31771,33 +31816,33 @@ aT aT aT aT -aU aT aT -aX -aX -aX +aT +aT +aT +aT aT aT ai -bb -ai +aT +aT +aT +aT +aT +aT +aT +aT +aT +bo +bk +bo +ag +ae ab ab ab ab -ab -ab -ab -ab -ab -ab -aa -aa -aa -aa -aa -aa aa aa aa @@ -32028,33 +32073,33 @@ aT aT aT aT +aT +aT +aT +aT +aT +aT +aT +aT aV aT aT -aX -aX -aX +aR +aT +aR +aT +aR aT aT -ai -bc -ai +bo +bl +bo +ag +ae ab ab ab ab -ab -ab -ab -ab -ab -ab -aa -aa -aa -aa -aa -aa aa aa aa @@ -32285,33 +32330,33 @@ aT aT aT aT -aU aT aT -aX -aX -aX +aT +aT +aT +aT aT aT ai -bd -ai +aT +aT +aT +aT +aT +aT +aT +aT +aT +bo +bm +bo +ag +ae ab ab ab ab -ab -ab -ab -ab -ab -ab -aa -aa -aa -aa -aa -aa aa aa aa @@ -32542,33 +32587,33 @@ aT aT aT aT +aT +aT +aT +aT +aT +aT +aT +aT aU aT aT +aR +aT +aR +aT +aR aT aT -aT -aT -aT -ah -ah -ah +bo +bn +bo +ag +ae ab ab ab ab -ab -ab -ab -ab -ab -ab -aa -aa -aa -aa -aa -aa aa aa aa @@ -32799,7 +32844,6 @@ aT aT aT aT -ah aT aT aT @@ -32807,25 +32851,26 @@ aT aT aT aT -ah +aT +aU +aT +aT +aT +aT +aT +aT +aT +aT +aT +bo +aX +bo ag ae ab ab ab ab -ab -ab -ab -ab -ab -ab -aa -aa -aa -aa -aa -aa aa aa aa @@ -33056,33 +33101,33 @@ aT aT aT aT +aT +aT +aT +aT +aT +aT +bp +bp +ah +aT +aT +aT +aT +aT +aT +aT +aT +aT ah ah -aU -aU -aV -aU -aU ah -ah -ag +ae ae ab ab ab ab -ab -ab -ab -ab -ab -ab -aa -aa -aa -aa -aa -aa aa aa aa @@ -33313,16 +33358,25 @@ aT aT aT aT +aT +aT +aT +aT +aT +aT +bp +bk +ah +ah +bo +bo +bo +bo +bo +bo +bo ah -aT -aT -aT -aT -aT -aT -aT ah -ag ae ab ab @@ -33331,15 +33385,6 @@ ab ab ab ab -ab -ab -ab -aa -aa -aa -aa -aa -aa aa aa aa @@ -33570,7 +33615,17 @@ aT aT aT aT -aU +aT +aT +aT +aT +aT +aT +bp +bp +ah +aT +aT aT aT aT @@ -33581,22 +33636,12 @@ aT ah ah ah +ae +ae ab ab ab ab -ab -ab -ab -ab -ab -ab -aa -aa -aa -aa -aa -aa aa aa aa @@ -33827,33 +33872,33 @@ aT aT aT aT +aT +aT +aT +aT +aT +aT +aT +aT aU aT aT -aX -aX -aX aT aT -ai -be -ai +aT +aT +aT +aT +aT +bo +aZ +bo +ag +ae ab ab ab ab -ab -ab -ab -ab -ab -ab -aa -aa -aa -aa -aa -aa aa aa aa @@ -34084,33 +34129,33 @@ aT aT aT aT -aV aT aT -aX -aX -aX aT aT -ai -bf -ai +aT +aT +aT +aT +aU +aT +aT +aR +aT +aR +aT +aR +aT +aT +bo +ba +bo +ag +ae ab ab ab ab -ab -ab -ab -ab -ab -ab -aa -aa -aa -aa -aa -aa aa aa aa @@ -34341,33 +34386,33 @@ aT aT aT aT -aU aT aT -aX -aX -aX aT aT -ai -bg -ai +aT +aT +aT +aT +bo +aT +aT +aT +aT +aT +aT +aT +aT +aT +bo +bb +bo +ag +ae ab ab ab ab -ab -ab -ab -ab -ab -ab -aa -aa -aa -aa -aa -aa aa aa aa @@ -34598,7 +34643,6 @@ aT aT aT aT -aU aT aT aT @@ -34606,25 +34650,26 @@ aT aT aT aT -ah -ah -ah +aT +aV +aT +aT +aR +aT +aR +aT +aR +aT +aT +bo +bc +bo +ag +ae ab ab ab ab -ab -ab -ab -ab -ab -ab -aa -aa -aa -aa -aa -aa aa aa aa @@ -34855,7 +34900,6 @@ aT aT aT aT -ah aT aT aT @@ -34863,25 +34907,26 @@ aT aT aT aT -ah +aT +bo +aT +aT +aT +aT +aT +aT +aT +aT +aT +bo +bd +bo ag ae ab ab ab ab -ab -ab -ab -ab -ab -ab -aa -aa -aa -aa -aa -aa aa aa aa @@ -35108,37 +35153,37 @@ aj aj aj aS +bx +bx +bx +bx +bx +bx +bx +bx +bx +bx +bx +bx +aU aT aT +aR +aT +aR +aT +aR aT aT -ah -ah -ai -ai -ai -ai -ai -ah -ah +bo +be +bo +ag ae ab ab ab ab -ab -ab -ab -ab -ab -ab -ab -aa -aa -aa -aa -aa -aa aa aa aa @@ -35364,38 +35409,38 @@ aG aG aG aG -aR -ah -ah -ah -ah -ah -ae -ae -ae -ae -ae -ae -ae +aS +bu +bu +bu +bu +bu +bu +bu +bu +bu +bu +bu +bu +aU +aT +aT +aT +aT +aT +aT +aT +aT +aT +bo +bf +bo +ag ae ab ab ab ab -ab -ab -ab -ab -ab -ab -ab -ab -aa -aa -aa -aa -aa -aa aa aa aa @@ -35620,39 +35665,39 @@ aF aF aF aF -aF -aF -ae -ae -ae +aG +aS +ah +ah +ah +ah +ah +ah +ah +ah +ah +ah +ah +ah +ah +aT +aT +aT +aT +aT +aT +aT +aT +aT +ah +ah +ah ae ae ab ab ab ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -aa -aa -aa -aa -aa -aa aa aa aa @@ -35878,7 +35923,31 @@ ab ab ab ab -aF +aY +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ah +ah +bo +bo +bo +bo +bo +bo +bo +ah +ah +ae ab ab ab @@ -35886,30 +35955,6 @@ ab ab ab ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -aa -aa -aa -aa -aa -aa aa aa aa @@ -36147,12 +36192,18 @@ ab ab ab ab -ab -ab -ab -ab -ab -ab +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae ae ab ab @@ -36160,12 +36211,6 @@ ab ab ab ab -ab -aa -aa -aa -aa -aa aa aa aa @@ -36410,18 +36455,18 @@ ab ab ab ab -ac -ac ab ab ab ab ab ab -aa -aa -aa -aa +ab +ab +ab +ab +ab +ab aa aa aa @@ -36667,17 +36712,17 @@ ab ab ab ab -ac -bh -ae ab ab ab ab ab -aa -aa -aa +ab +ab +ab +ab +ab +ab aa aa aa @@ -36932,8 +36977,8 @@ ab ab ab ab -aa -aa +ab +ab aa aa aa @@ -37189,7 +37234,7 @@ ab ab ab ab -aa +ab aa aa aa @@ -37438,9 +37483,9 @@ ab ab ab ab -ab -ab -ab +ac +bh +ae ab ab ab From 1f78520b68c605d7f45a9fca581303059191ff69 Mon Sep 17 00:00:00 2001 From: BurgerLua Date: Wed, 24 Apr 2019 20:13:21 -0700 Subject: [PATCH 02/83] Adds a new trait that makes you immune from the "positive" effects of hexacrocin and crocin. --- code/__DEFINES/traits.dm | 1 + code/datums/traits/neutral.dm | 9 +++++++++ .../code/modules/reagents/reagents/cit_reagents.dm | 6 +++--- 3 files changed, 13 insertions(+), 3 deletions(-) diff --git a/code/__DEFINES/traits.dm b/code/__DEFINES/traits.dm index a5617e6148..99f1813f3c 100644 --- a/code/__DEFINES/traits.dm +++ b/code/__DEFINES/traits.dm @@ -69,6 +69,7 @@ #define TRAIT_TAGGER "tagger" #define TRAIT_PHOTOGRAPHER "photographer" #define TRAIT_MUSICIAN "musician" +#define TRAIT_CROCRIN_IMMUNE "crocin_immune" // common trait sources #define TRAIT_GENERIC "generic" diff --git a/code/datums/traits/neutral.dm b/code/datums/traits/neutral.dm index 4fc30de473..f299e9904a 100644 --- a/code/datums/traits/neutral.dm +++ b/code/datums/traits/neutral.dm @@ -84,3 +84,12 @@ /datum/quirk/monochromatic/remove() if(quirk_holder) quirk_holder.remove_client_colour(/datum/client_colour/monochrome) + +/datum/quirk/crocrin_immunity + name = "Crocin Immunity" + desc = "You're one of the few people in the galaxy who are genetically immune to Crocin and Hexacrocin products and their addictive properties! However, you can still get brain damage from Hexacrocin addiction." + mob_trait = TRAIT_CROCRIN_IMMUNE + value = 0 + gain_text = "You feel more prudish." + lose_text = "You don't feel as prudish as before." + medical_record_text = "Patient exhibits a special gene that makes them immune to Crocin and Hexacrocin." diff --git a/modular_citadel/code/modules/reagents/reagents/cit_reagents.dm b/modular_citadel/code/modules/reagents/reagents/cit_reagents.dm index e46174b5a9..061f941043 100644 --- a/modular_citadel/code/modules/reagents/reagents/cit_reagents.dm +++ b/modular_citadel/code/modules/reagents/reagents/cit_reagents.dm @@ -97,7 +97,7 @@ color = "#FFADFF"//PINK, rgb(255, 173, 255) /datum/reagent/drug/aphrodisiac/on_mob_life(mob/living/M) - if(M && M.canbearoused) + if(M && M.canbearoused && !M.has_trait(TRAIT_CROCRIN_IMMUNE)) if(prob(33)) M.adjustArousalLoss(2) if(prob(5)) @@ -119,7 +119,7 @@ overdose_threshold = 20 /datum/reagent/drug/aphrodisiacplus/on_mob_life(mob/living/M) - if(M && M.canbearoused) + if(M && M.canbearoused && !M.has_trait(TRAIT_CROCRIN_IMMUNE)) if(prob(33)) M.adjustArousalLoss(6)//not quite six times as powerful, but still considerably more powerful. if(prob(5)) @@ -151,7 +151,7 @@ ..() /datum/reagent/drug/aphrodisiacplus/overdose_process(mob/living/M) - if(M && M.canbearoused && prob(33)) + if(M && M.canbearoused && !M.has_trait(TRAIT_CROCRIN_IMMUNE) && prob(33)) if(M.getArousalLoss() >= 100 && ishuman(M) && M.has_dna()) var/mob/living/carbon/human/H = M if(prob(50)) //Less spam From fd19d67cc282f10fcc098631e6186c148fe0206f Mon Sep 17 00:00:00 2001 From: BurgerLua Date: Thu, 25 Apr 2019 11:57:02 -0700 Subject: [PATCH 03/83] "Improves" how slurring works, and adjusts how fast you recover from slurring. --- code/modules/mob/living/carbon/human/say.dm | 13 +++++++++---- code/modules/mob/living/carbon/life.dm | 2 +- code/modules/mob/living/say.dm | 2 +- code/modules/mob/mob_helpers.dm | 14 +++++++------- .../chemistry/reagents/alcohol_reagents.dm | 12 ++++-------- .../reagents/chemistry/reagents/food_reagents.dm | 3 +-- 6 files changed, 23 insertions(+), 23 deletions(-) diff --git a/code/modules/mob/living/carbon/human/say.dm b/code/modules/mob/living/carbon/human/say.dm index 3cdaf71e68..dc35e65c47 100644 --- a/code/modules/mob/living/carbon/human/say.dm +++ b/code/modules/mob/living/carbon/human/say.dm @@ -1,9 +1,14 @@ /mob/living/carbon/human/say_mod(input, message_mode) verb_say = dna.species.say_mod - if(slurring) - return "slurs" - else - . = ..() + switch(slurring) + if(25 to 50) + return "jumbles" + if(50 to 75) + return "slurs" + if(75 to INFINITY) + return "garbles" + else + . = ..() /mob/living/carbon/human/treat_message(message) message = dna.species.handle_speech(message,src) diff --git a/code/modules/mob/living/carbon/life.dm b/code/modules/mob/living/carbon/life.dm index 48a401802b..2492ece97f 100644 --- a/code/modules/mob/living/carbon/life.dm +++ b/code/modules/mob/living/carbon/life.dm @@ -532,7 +532,7 @@ GLOBAL_LIST_INIT(ballmer_windows_me_msg, list("Yo man, what if, we like, uh, put stuttering = max(stuttering-1, 0) if(slurring) - slurring = max(slurring-1,0) + slurring = max(slurring-0.15,0) if(cultslurring) cultslurring = max(cultslurring-1, 0) diff --git a/code/modules/mob/living/say.dm b/code/modules/mob/living/say.dm index a0f619a7d6..871e33349a 100644 --- a/code/modules/mob/living/say.dm +++ b/code/modules/mob/living/say.dm @@ -334,7 +334,7 @@ GLOBAL_LIST_INIT(department_radio_keys, list( message = stutter(message) if(slurring) - message = slur(message) + message = slur(message,slurring) if(cultslurring) message = cultslur(message) diff --git a/code/modules/mob/mob_helpers.dm b/code/modules/mob/mob_helpers.dm index 35b48afa28..3d4e356464 100644 --- a/code/modules/mob/mob_helpers.dm +++ b/code/modules/mob/mob_helpers.dm @@ -64,7 +64,7 @@ p++ return sanitize(t) -/proc/slur(n) +/proc/slur(n,var/strength=50) var/phrase = html_decode(n) var/leng = lentext(phrase) var/counter=lentext(phrase) @@ -72,7 +72,7 @@ var/newletter="" while(counter>=1) newletter=copytext(phrase,(leng-counter)+1,(leng-counter)+2) - if(rand(1,3)==3) + if(rand(1,100)<=strength) if(lowertext(newletter)=="o") newletter="u" if(lowertext(newletter)=="s") @@ -83,17 +83,17 @@ newletter="oo" if(lowertext(newletter)=="c") newletter="k" - if(rand(1,20)==20) + if(rand(1,100) <= strength*0.5) if(newletter==" ") newletter="...huuuhhh..." if(newletter==".") newletter=" *BURP*." - switch(rand(1,20)) - if(1) + if(rand(1,100) <= strength) + if(rand(1,5) == 1) newletter+="'" - if(10) + if(rand(1,5) == 1) newletter+="[newletter]" - if(20) + if(rand(1,5) == 1) newletter+="[newletter][newletter]" newphrase+="[newletter]";counter-=1 return newphrase diff --git a/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm b/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm index 6e4d5e5a7d..92d9da401b 100644 --- a/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm @@ -1277,8 +1277,7 @@ All effects don't start immediately, but rather get worse over time; the rate is if(!M.has_trait(TRAIT_ALCOHOL_TOLERANCE)) M.confused = max(M.confused+2,0) M.Dizzy(10) - if (!M.slurring) - M.slurring = 1 + M.slurring = max(M.slurring,50) M.slurring += 3 switch(current_cycle) if(51 to 200) @@ -1306,8 +1305,7 @@ All effects don't start immediately, but rather get worse over time; the rate is M.dizziness +=1.5 switch(current_cycle) if(15 to 45) - if(!M.slurring) - M.slurring = 1 + M.slurring = max(M.slurring,50) M.slurring += 3 if(45 to 55) if(prob(50)) @@ -1336,8 +1334,7 @@ All effects don't start immediately, but rather get worse over time; the rate is M.dizziness +=2 switch(current_cycle) if(15 to 45) - if(!M.slurring) - M.slurring = 1 + M.slurring = max(M.slurring,50) M.slurring += 3 if(45 to 55) if(prob(50)) @@ -1364,8 +1361,7 @@ All effects don't start immediately, but rather get worse over time; the rate is glass_desc = "A drink enjoyed by people during the 1960's." /datum/reagent/consumable/ethanol/hippies_delight/on_mob_life(mob/living/carbon/M) - if (!M.slurring) - M.slurring = 1 + M.slurring = max(M.slurring,50) switch(current_cycle) if(1 to 5) M.Dizzy(10) diff --git a/code/modules/reagents/chemistry/reagents/food_reagents.dm b/code/modules/reagents/chemistry/reagents/food_reagents.dm index 52b212f8c5..5071150e24 100644 --- a/code/modules/reagents/chemistry/reagents/food_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/food_reagents.dm @@ -402,8 +402,7 @@ taste_description = "mushroom" /datum/reagent/mushroomhallucinogen/on_mob_life(mob/living/carbon/M) - if(!M.slurring) - M.slurring = 1 + M.slurring = max(M.slurring,50) switch(current_cycle) if(1 to 5) M.Dizzy(5) From 75816477a54f6c98093ce506ab1e97dff0719f98 Mon Sep 17 00:00:00 2001 From: BurgerLua Date: Thu, 25 Apr 2019 12:09:10 -0700 Subject: [PATCH 04/83] Slurring now related to your drunkenness level. --- code/modules/mob/living/carbon/life.dm | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/code/modules/mob/living/carbon/life.dm b/code/modules/mob/living/carbon/life.dm index 2492ece97f..3fbb167736 100644 --- a/code/modules/mob/living/carbon/life.dm +++ b/code/modules/mob/living/carbon/life.dm @@ -532,7 +532,7 @@ GLOBAL_LIST_INIT(ballmer_windows_me_msg, list("Yo man, what if, we like, uh, put stuttering = max(stuttering-1, 0) if(slurring) - slurring = max(slurring-0.15,0) + slurring = max(slurring-0.15,0,drunkenness) if(cultslurring) cultslurring = max(cultslurring-1, 0) @@ -550,16 +550,11 @@ GLOBAL_LIST_INIT(ballmer_windows_me_msg, list("Yo man, what if, we like, uh, put drunkenness = max(drunkenness - (drunkenness * 0.04), 0) if(drunkenness >= 6) SEND_SIGNAL(src, COMSIG_ADD_MOOD_EVENT, "drunk", /datum/mood_event/drunk) - if(prob(25)) - slurring += 2 jitteriness = max(jitteriness - 3, 0) if(has_trait(TRAIT_DRUNK_HEALING)) adjustBruteLoss(-0.12, FALSE) adjustFireLoss(-0.06, FALSE) - if(drunkenness >= 11 && slurring < 5) - slurring += 1.2 - if(mind && (mind.assigned_role == "Scientist" || mind.assigned_role == "Research Director")) if(SSresearch.science_tech) if(drunkenness >= 12.9 && drunkenness <= 13.8) From 569a92485f137220cee4979860053288354cd1e6 Mon Sep 17 00:00:00 2001 From: BurgerLua Date: Thu, 25 Apr 2019 12:09:45 -0700 Subject: [PATCH 05/83] Removed slurring being 0.15 as it was a little extreme. --- code/modules/mob/living/carbon/life.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/mob/living/carbon/life.dm b/code/modules/mob/living/carbon/life.dm index 3fbb167736..6111a92e99 100644 --- a/code/modules/mob/living/carbon/life.dm +++ b/code/modules/mob/living/carbon/life.dm @@ -532,7 +532,7 @@ GLOBAL_LIST_INIT(ballmer_windows_me_msg, list("Yo man, what if, we like, uh, put stuttering = max(stuttering-1, 0) if(slurring) - slurring = max(slurring-0.15,0,drunkenness) + slurring = max(slurring-1,0,drunkenness) if(cultslurring) cultslurring = max(cultslurring-1, 0) From fcda4c0fbb15d908b481ebdc155ba89d90e0d5b2 Mon Sep 17 00:00:00 2001 From: Trilbyspaceclone <30435998+Trilbyspaceclone@users.noreply.github.com> Date: Thu, 25 Apr 2019 20:40:48 -0400 Subject: [PATCH 06/83] Update _neck.dm --- code/modules/clothing/neck/_neck.dm | 44 +++++++++++++++++++++++++++-- 1 file changed, 42 insertions(+), 2 deletions(-) diff --git a/code/modules/clothing/neck/_neck.dm b/code/modules/clothing/neck/_neck.dm index 8245148096..d4cfbd1a84 100644 --- a/code/modules/clothing/neck/_neck.dm +++ b/code/modules/clothing/neck/_neck.dm @@ -171,17 +171,57 @@ icon_state = "stripedbluescarf" item_color = "stripedbluescarf" -/obj/item/clothing/neck/petcollar //don't really wear this though please c'mon seriously guys +/////////// +//COLLARS// +/////////// + +/obj/item/clothing/neck/petcollar name = "pet collar" desc = "It's for pets. Though you probably could wear it yourself, you'd doubtless be the subject of ridicule." icon_state = "petcollar" item_color = "petcollar" + pocket_storage_component_path = /datum/component/storage/concrete/pockets/small/collar var/tagname = null /obj/item/clothing/neck/petcollar/attack_self(mob/user) tagname = copytext(sanitize(input(user, "Would you like to change the name on the tag?", "Name your new pet", "Spot") as null|text),1,MAX_NAME_LEN) name = "[initial(name)] - [tagname]" +/obj/item/clothing/neck/petcollar/locked + name = "locked collar" + desc = "A collar that has a small lock on it to keep it from being removed." + pocket_storage_component_path = /datum/component/storage/concrete/pockets/small/collar/locked + var/lock = FALSE + +/obj/item/clothing/neck/petcollar/locked/attackby(obj/item/key/collar, mob/user, params) + if(lock != FALSE) + to_chat(user, "With a click the collar unlocks!") + lock = FALSE + item_flags = NONE + else + to_chat(user, "With a click the collar locks!") + lock = TRUE + item_flags = NODROP + return + +/obj/item/clothing/neck/petcollar/locked/attack_hand(mob/user) + if(loc == user && user.get_item_by_slot(SLOT_NECK) && lock != FALSE) + to_chat(user, "The collar is locked! You'll need unlock the collar before you can take it off!") + return + ..() + +/obj/item/key/collar + name = "Collar Key" + desc = "A key for a tiny lock on a collar or bag." + +/obj/item/clothing/neck/petcollar/Initialize() + . = ..() + new /obj/item/reagent_containers/food/snacks/cookie(src) + +/obj/item/clothing/neck/petcollar/locked/Initialize() + . = ..() + new /obj/item/key/collar(src) + ////////////// //DOPE BLING// ////////////// @@ -191,4 +231,4 @@ desc = "Damn, it feels good to be a gangster." icon = 'icons/obj/clothing/neck.dmi' icon_state = "bling" - item_color = "bling" \ No newline at end of file + item_color = "bling" From a69b845509b8f0fc8ab294823f4d7ce1c1e23d6b Mon Sep 17 00:00:00 2001 From: Trilbyspaceclone <30435998+Trilbyspaceclone@users.noreply.github.com> Date: Thu, 25 Apr 2019 20:41:34 -0400 Subject: [PATCH 07/83] Update pockets.dm --- .../components/storage/concrete/pockets.dm | 117 +++++++----------- 1 file changed, 48 insertions(+), 69 deletions(-) diff --git a/code/datums/components/storage/concrete/pockets.dm b/code/datums/components/storage/concrete/pockets.dm index 3d03c2adbd..f049a12ffb 100644 --- a/code/datums/components/storage/concrete/pockets.dm +++ b/code/datums/components/storage/concrete/pockets.dm @@ -1,73 +1,52 @@ -/datum/component/storage/concrete/pockets - max_items = 2 - max_w_class = WEIGHT_CLASS_SMALL - max_combined_w_class = 50 - rustle_sound = FALSE -/datum/component/storage/concrete/pockets/handle_item_insertion(obj/item/I, prevent_warning, mob/user) +/////////// +//COLLARS// +/////////// + +/obj/item/clothing/neck/petcollar + name = "pet collar" + desc = "It's for pets. Though you probably could wear it yourself, you'd doubtless be the subject of ridicule." + icon_state = "petcollar" + item_color = "petcollar" + pocket_storage_component_path = /datum/component/storage/concrete/pockets/small/collar + var/tagname = null + +/obj/item/clothing/neck/petcollar/attack_self(mob/user) + tagname = copytext(sanitize(input(user, "Would you like to change the name on the tag?", "Name your new pet", "Spot") as null|text),1,MAX_NAME_LEN) + name = "[initial(name)] - [tagname]" + + +/obj/item/clothing/neck/petcollar/locked + name = "locked collar" + desc = "A collar that has a small lock on it to keep it from being removed." + pocket_storage_component_path = /datum/component/storage/concrete/pockets/small/collar/locked + var/lock = FALSE + +/obj/item/clothing/neck/petcollar/locked/attackby(obj/item/key/collar, mob/user, params) + if(lock != FALSE) + to_chat(user, "With a click the collar unlocks!") + lock = FALSE + item_flags = NONE + else + to_chat(user, "With a click the collar locks!") + lock = TRUE + item_flags = NODROP + return + +/obj/item/clothing/neck/petcollar/locked/attack_hand(mob/user) + if(loc == user && user.get_item_by_slot(SLOT_NECK) && lock != FALSE) + to_chat(user, "The collar is locked! You'll need unlock the collar before you can take it off!") + return + ..() + +/obj/item/key/collar + name = "Collar Key" + desc = "A key for a tiny lock on a collar or bag." + +/obj/item/clothing/neck/petcollar/Initialize() . = ..() - if(. && silent && !prevent_warning) - if(quickdraw) - to_chat(user, "You discreetly slip [I] into [parent]. Alt-click [parent] to remove it.") - else - to_chat(user, "You discreetly slip [I] into [parent].") + new /obj/item/reagent_containers/food/snacks/cookie(src) -/datum/component/storage/concrete/pockets - max_w_class = WEIGHT_CLASS_NORMAL - -/datum/component/storage/concrete/pockets/small - max_items = 1 - attack_hand_interact = FALSE - -/datum/component/storage/concrete/pockets/tiny - max_items = 1 - max_w_class = WEIGHT_CLASS_TINY - attack_hand_interact = FALSE - -/datum/component/storage/concrete/pockets/small/detective - attack_hand_interact = TRUE // so the detectives would discover pockets in their hats - -/datum/component/storage/concrete/pockets/shoes - attack_hand_interact = FALSE - quickdraw = TRUE - silent = TRUE - -/datum/component/storage/concrete/pockets/shoes/Initialize() +/obj/item/clothing/neck/petcollar/locked/Initialize() . = ..() - cant_hold = typecacheof(list(/obj/item/screwdriver/power)) - can_hold = typecacheof(list( - /obj/item/kitchen/knife, /obj/item/switchblade, /obj/item/pen, - /obj/item/scalpel, /obj/item/reagent_containers/syringe, /obj/item/dnainjector, - /obj/item/reagent_containers/hypospray/medipen, /obj/item/reagent_containers/dropper, - /obj/item/implanter, /obj/item/screwdriver, /obj/item/weldingtool/mini, - /obj/item/firing_pin - )) - -/datum/component/storage/concrete/pockets/shoes/clown/Initialize() - . = ..() - cant_hold = typecacheof(list(/obj/item/screwdriver/power)) - can_hold = typecacheof(list( - /obj/item/kitchen/knife, /obj/item/switchblade, /obj/item/pen, - /obj/item/scalpel, /obj/item/reagent_containers/syringe, /obj/item/dnainjector, - /obj/item/reagent_containers/hypospray/medipen, /obj/item/reagent_containers/dropper, - /obj/item/implanter, /obj/item/screwdriver, /obj/item/weldingtool/mini, - /obj/item/firing_pin, /obj/item/bikehorn)) - -/datum/component/storage/concrete/pockets/pocketprotector - max_items = 3 - max_w_class = WEIGHT_CLASS_TINY - var/atom/original_parent - -/datum/component/storage/concrete/pockets/pocketprotector/Initialize() - original_parent = parent - . = ..() - can_hold = typecacheof(list( //Same items as a PDA - /obj/item/pen, - /obj/item/toy/crayon, - /obj/item/lipstick, - /obj/item/flashlight/pen, - /obj/item/clothing/mask/cigarette)) - -/datum/component/storage/concrete/pockets/pocketprotector/real_location() - // if the component is reparented to a jumpsuit, the items still go in the protector - return original_parent + new /obj/item/key/collar(src) From 59cc2b5a9c7f26eabd40d08653b597e7c422f4d8 Mon Sep 17 00:00:00 2001 From: Trilbyspaceclone <30435998+Trilbyspaceclone@users.noreply.github.com> Date: Thu, 25 Apr 2019 20:42:38 -0400 Subject: [PATCH 08/83] Update vending.dm --- modular_citadel/code/game/machinery/vending.dm | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/modular_citadel/code/game/machinery/vending.dm b/modular_citadel/code/game/machinery/vending.dm index 213dd8a17a..bdca91b0e6 100755 --- a/modular_citadel/code/game/machinery/vending.dm +++ b/modular_citadel/code/game/machinery/vending.dm @@ -54,8 +54,11 @@ /obj/item/clothing/neck/petcollar = 5, /obj/item/clothing/under/mankini = 1, /obj/item/dildo/flared/huge = 1 - ) - premium = list(/obj/item/electropack/shockcollar = 3) + ) + premium = list( + /obj/item/electropack/shockcollar = 3, + /obj/item/clothing/neck/petcollar/locked = 1 + ) refill_canister = /obj/item/vending_refill/kink /* /obj/machinery/vending/nazivend From 33e3df815717df367edde60f6cce230f4dc5c464 Mon Sep 17 00:00:00 2001 From: Trilbyspaceclone <30435998+Trilbyspaceclone@users.noreply.github.com> Date: Thu, 25 Apr 2019 20:46:39 -0400 Subject: [PATCH 09/83] What in the hell? --- .../components/storage/concrete/pockets.dm | 133 +++++++++++------- 1 file changed, 85 insertions(+), 48 deletions(-) diff --git a/code/datums/components/storage/concrete/pockets.dm b/code/datums/components/storage/concrete/pockets.dm index f049a12ffb..e0a23b0209 100644 --- a/code/datums/components/storage/concrete/pockets.dm +++ b/code/datums/components/storage/concrete/pockets.dm @@ -1,52 +1,89 @@ +/datum/component/storage/concrete/pockets + max_items = 2 + max_w_class = WEIGHT_CLASS_SMALL + max_combined_w_class = 50 + rustle_sound = FALSE -/////////// -//COLLARS// -/////////// - -/obj/item/clothing/neck/petcollar - name = "pet collar" - desc = "It's for pets. Though you probably could wear it yourself, you'd doubtless be the subject of ridicule." - icon_state = "petcollar" - item_color = "petcollar" - pocket_storage_component_path = /datum/component/storage/concrete/pockets/small/collar - var/tagname = null - -/obj/item/clothing/neck/petcollar/attack_self(mob/user) - tagname = copytext(sanitize(input(user, "Would you like to change the name on the tag?", "Name your new pet", "Spot") as null|text),1,MAX_NAME_LEN) - name = "[initial(name)] - [tagname]" - - -/obj/item/clothing/neck/petcollar/locked - name = "locked collar" - desc = "A collar that has a small lock on it to keep it from being removed." - pocket_storage_component_path = /datum/component/storage/concrete/pockets/small/collar/locked - var/lock = FALSE - -/obj/item/clothing/neck/petcollar/locked/attackby(obj/item/key/collar, mob/user, params) - if(lock != FALSE) - to_chat(user, "With a click the collar unlocks!") - lock = FALSE - item_flags = NONE - else - to_chat(user, "With a click the collar locks!") - lock = TRUE - item_flags = NODROP - return - -/obj/item/clothing/neck/petcollar/locked/attack_hand(mob/user) - if(loc == user && user.get_item_by_slot(SLOT_NECK) && lock != FALSE) - to_chat(user, "The collar is locked! You'll need unlock the collar before you can take it off!") - return - ..() - -/obj/item/key/collar - name = "Collar Key" - desc = "A key for a tiny lock on a collar or bag." - -/obj/item/clothing/neck/petcollar/Initialize() +/datum/component/storage/concrete/pockets/handle_item_insertion(obj/item/I, prevent_warning, mob/user) . = ..() - new /obj/item/reagent_containers/food/snacks/cookie(src) + if(. && silent && !prevent_warning) + if(quickdraw) + to_chat(user, "You discreetly slip [I] into [parent]. Alt-click [parent] to remove it.") + else + to_chat(user, "You discreetly slip [I] into [parent].") -/obj/item/clothing/neck/petcollar/locked/Initialize() +/datum/component/storage/concrete/pockets + max_w_class = WEIGHT_CLASS_NORMAL + +/datum/component/storage/concrete/pockets/small + max_items = 1 + attack_hand_interact = FALSE + +/datum/component/storage/concrete/pockets/small/collar + max_items = 1 + +/datum/component/storage/concrete/pockets/small/collar/Initialize() . = ..() - new /obj/item/key/collar(src) + can_hold = typecacheof(list( + /obj/item/reagent_containers/food/snacks/cookie, + /obj/item/reagent_containers/food/snacks/sugarcookie)) + +/datum/component/storage/concrete/pockets/small/collar/locked/Initialize() + . = ..() + can_hold = typecacheof(list( + /obj/item/reagent_containers/food/snacks/cookie, + /obj/item/reagent_containers/food/snacks/sugarcookie, + /obj/item/key/collar)) + +/datum/component/storage/concrete/pockets/tiny + max_items = 1 + max_w_class = WEIGHT_CLASS_TINY + attack_hand_interact = FALSE + +/datum/component/storage/concrete/pockets/small/detective + attack_hand_interact = TRUE // so the detectives would discover pockets in their hats + +/datum/component/storage/concrete/pockets/shoes + attack_hand_interact = FALSE + quickdraw = TRUE + silent = TRUE + +/datum/component/storage/concrete/pockets/shoes/Initialize() + . = ..() + cant_hold = typecacheof(list(/obj/item/screwdriver/power)) + can_hold = typecacheof(list( + /obj/item/kitchen/knife, /obj/item/switchblade, /obj/item/pen, + /obj/item/scalpel, /obj/item/reagent_containers/syringe, /obj/item/dnainjector, + /obj/item/reagent_containers/hypospray/medipen, /obj/item/reagent_containers/dropper, + /obj/item/implanter, /obj/item/screwdriver, /obj/item/weldingtool/mini, + /obj/item/firing_pin + )) + +/datum/component/storage/concrete/pockets/shoes/clown/Initialize() + . = ..() + cant_hold = typecacheof(list(/obj/item/screwdriver/power)) + can_hold = typecacheof(list( + /obj/item/kitchen/knife, /obj/item/switchblade, /obj/item/pen, + /obj/item/scalpel, /obj/item/reagent_containers/syringe, /obj/item/dnainjector, + /obj/item/reagent_containers/hypospray/medipen, /obj/item/reagent_containers/dropper, + /obj/item/implanter, /obj/item/screwdriver, /obj/item/weldingtool/mini, + /obj/item/firing_pin, /obj/item/bikehorn)) + +/datum/component/storage/concrete/pockets/pocketprotector + max_items = 3 + max_w_class = WEIGHT_CLASS_TINY + var/atom/original_parent + +/datum/component/storage/concrete/pockets/pocketprotector/Initialize() + original_parent = parent + . = ..() + can_hold = typecacheof(list( //Same items as a PDA + /obj/item/pen, + /obj/item/toy/crayon, + /obj/item/lipstick, + /obj/item/flashlight/pen, + /obj/item/clothing/mask/cigarette)) + +/datum/component/storage/concrete/pockets/pocketprotector/real_location() + // if the component is reparented to a jumpsuit, the items still go in the protector + return original_parent From b44ac0dd7493e3b3ef4efba68a95938e022cd0a0 Mon Sep 17 00:00:00 2001 From: BurgerLua Date: Thu, 25 Apr 2019 18:11:12 -0700 Subject: [PATCH 10/83] Reorganizes accessory files, seperates underwear tops from bottoms, and removes gendered clothing. --- .../mob/dead/new_player/sprite_accessories.dm | 1524 ----------------- .../sprite_accessories/_sprite_accessories.dm | 62 + .../sprite_accessories/body_markings.dm | 25 + .../new_player/sprite_accessories/caps.dm | 7 + .../new_player/sprite_accessories/ears.dm | 12 + .../new_player/sprite_accessories/frills.dm | 18 + .../sprite_accessories/hair_face.dm | 89 + .../sprite_accessories/hair_head.dm | 460 +++++ .../new_player/sprite_accessories/horns.dm | 26 + .../new_player/sprite_accessories/legs.dm | 8 + .../sprite_accessories/moth_wings.dm | 68 + .../new_player/sprite_accessories/pines.dm | 53 + .../new_player/sprite_accessories/snouts.dm | 18 + .../new_player/sprite_accessories/socks.dm | 96 ++ .../new_player/sprite_accessories/tails.dm | 55 + .../sprite_accessories/undershirt.dm | 308 ++++ .../sprite_accessories/underwear.dm | 171 ++ .../new_player/sprite_accessories/wings.dm | 26 + icons/mob/underwear.dmi | Bin 52322 -> 54625 bytes icons/mob/underwear_old.dmi | Bin 0 -> 52536 bytes tgstation.dme | 18 +- 21 files changed, 1519 insertions(+), 1525 deletions(-) delete mode 100644 code/modules/mob/dead/new_player/sprite_accessories.dm create mode 100644 code/modules/mob/dead/new_player/sprite_accessories/_sprite_accessories.dm create mode 100644 code/modules/mob/dead/new_player/sprite_accessories/body_markings.dm create mode 100644 code/modules/mob/dead/new_player/sprite_accessories/caps.dm create mode 100644 code/modules/mob/dead/new_player/sprite_accessories/ears.dm create mode 100644 code/modules/mob/dead/new_player/sprite_accessories/frills.dm create mode 100644 code/modules/mob/dead/new_player/sprite_accessories/hair_face.dm create mode 100644 code/modules/mob/dead/new_player/sprite_accessories/hair_head.dm create mode 100644 code/modules/mob/dead/new_player/sprite_accessories/horns.dm create mode 100644 code/modules/mob/dead/new_player/sprite_accessories/legs.dm create mode 100644 code/modules/mob/dead/new_player/sprite_accessories/moth_wings.dm create mode 100644 code/modules/mob/dead/new_player/sprite_accessories/pines.dm create mode 100644 code/modules/mob/dead/new_player/sprite_accessories/snouts.dm create mode 100644 code/modules/mob/dead/new_player/sprite_accessories/socks.dm create mode 100644 code/modules/mob/dead/new_player/sprite_accessories/tails.dm create mode 100644 code/modules/mob/dead/new_player/sprite_accessories/undershirt.dm create mode 100644 code/modules/mob/dead/new_player/sprite_accessories/underwear.dm create mode 100644 code/modules/mob/dead/new_player/sprite_accessories/wings.dm create mode 100644 icons/mob/underwear_old.dmi diff --git a/code/modules/mob/dead/new_player/sprite_accessories.dm b/code/modules/mob/dead/new_player/sprite_accessories.dm deleted file mode 100644 index 44c1f7601d..0000000000 --- a/code/modules/mob/dead/new_player/sprite_accessories.dm +++ /dev/null @@ -1,1524 +0,0 @@ -/* - - Hello and welcome to sprite_accessories: For sprite accessories, such as hair, - facial hair, and possibly tattoos and stuff somewhere along the line. This file is - intended to be friendly for people with little to no actual coding experience. - The process of adding in new hairstyles has been made pain-free and easy to do. - Enjoy! - Doohl - - - Notice: This all gets automatically compiled in a list in dna.dm, so you do not - have to define any UI values for sprite accessories manually for hair and facial - hair. Just add in new hair types and the game will naturally adapt. - - !!WARNING!!: changing existing hair information can be VERY hazardous to savefiles, - to the point where you may completely corrupt a server's savefiles. Please refrain - from doing this unless you absolutely know what you are doing, and have defined a - conversion in savefile.dm -*/ -/proc/init_sprite_accessory_subtypes(prototype, list/L, list/male, list/female,var/roundstart = FALSE)//Roundstart argument builds a specific list for roundstart parts where some parts may be locked - if(!istype(L)) - L = list() - if(!istype(male)) - male = list() - if(!istype(female)) - female = list() - - for(var/path in typesof(prototype)) - if(path == prototype) - continue - if(roundstart) - var/datum/sprite_accessory/P = path - if(initial(P.locked)) - continue - var/datum/sprite_accessory/D = new path() - - if(D.icon_state) - L[D.name] = D - else - L += D.name - - switch(D.gender) - if(MALE) - male += D.name - if(FEMALE) - female += D.name - else - male += D.name - female += D.name - return L - -/datum/sprite_accessory - var/icon //the icon file the accessory is located in - var/icon_state //the icon_state of the accessory - var/name //the preview name of the accessory - var/gender = NEUTER //Determines if the accessory will be skipped or included in random hair generations - var/gender_specific //Something that can be worn by either gender, but looks different on each - var/color_src = MUTCOLORS //Currently only used by mutantparts so don't worry about hair and stuff. This is the source that this accessory will get its color from. Default is MUTCOLOR, but can also be HAIR, FACEHAIR, EYECOLOR and 0 if none. - var/hasinner //Decides if this sprite has an "inner" part, such as the fleshy parts on ears. - var/locked = FALSE //Is this part locked from roundstart selection? Used for parts that apply effects - var/dimension_x = 32 - var/dimension_y = 32 - var/center = FALSE //Should we center the sprite? - -////////////////////// -// Hair Definitions // -////////////////////// -/datum/sprite_accessory/hair - icon = 'icons/mob/human_face.dmi' // default icon for all hairs - - // please make sure they're sorted alphabetically and, where needed, categorized - // try to capitalize the names please~ - // try to spell - // you do not need to define _s or _l sub-states, game automatically does this for you - -/datum/sprite_accessory/hair/afro - name = "Afro" - icon_state = "hair_afro" - -/datum/sprite_accessory/hair/afro2 - name = "Afro 2" - icon_state = "hair_afro2" - -/datum/sprite_accessory/hair/afro_large - name = "Afro (Large)" - icon_state = "hair_bigafro" - -/datum/sprite_accessory/hair/antenna - name = "Ahoge" - icon_state = "hair_antenna" - -/datum/sprite_accessory/hair/bald - name = "Bald" - icon_state = null - -/datum/sprite_accessory/hair/balding - name = "Balding Hair" - icon_state = "hair_e" - -/datum/sprite_accessory/hair/bedhead - name = "Bedhead" - icon_state = "hair_bedhead" - -/datum/sprite_accessory/hair/bedhead2 - name = "Bedhead 2" - icon_state = "hair_bedheadv2" - -/datum/sprite_accessory/hair/bedhead3 - name = "Bedhead 3" - icon_state = "hair_bedheadv3" - -/datum/sprite_accessory/hair/beehive - name = "Beehive" - icon_state = "hair_beehive" - -/datum/sprite_accessory/hair/beehive2 - name = "Beehive 2" - icon_state = "hair_beehivev2" - -/datum/sprite_accessory/hair/bob - name = "Bob Hair" - icon_state = "hair_bob" - -/datum/sprite_accessory/hair/bob2 - name = "Bob Hair 2" - icon_state = "hair_bob2" - -/datum/sprite_accessory/hair/bob3 - name = "Bob Hair 3" - icon_state = "hair_bobcut" - -/datum/sprite_accessory/hair/bobcurl - name = "Bobcurl" - icon_state = "hair_bobcurl" - -/datum/sprite_accessory/hair/boddicker - name = "Boddicker" - icon_state = "hair_boddicker" - -/datum/sprite_accessory/hair/bowl - name = "Bowl" - icon_state = "hair_bowlcut" - -/datum/sprite_accessory/hair/braid - name = "Braid (Floorlength)" - icon_state = "hair_braid" - -/datum/sprite_accessory/hair/braided - name = "Braided" - icon_state = "hair_braided" - -/datum/sprite_accessory/hair/front_braid - name = "Braided Front" - icon_state = "hair_braidfront" - -/datum/sprite_accessory/hair/not_floorlength_braid - name = "Braid (High)" - icon_state = "hair_braid2" - -/datum/sprite_accessory/hair/lowbraid - name = "Braid (Low)" - icon_state = "hair_hbraid" - -/datum/sprite_accessory/hair/shortbraid - name = "Braid (Short)" - icon_state = "hair_shortbraid" - -/datum/sprite_accessory/hair/braidtail - name = "Braided Tail" - icon_state = "hair_braidtail" - -/datum/sprite_accessory/hair/bun - name = "Bun Head" - icon_state = "hair_bun" - -/datum/sprite_accessory/hair/bun2 - name = "Bun Head 2" - icon_state = "hair_bunhead2" - -/datum/sprite_accessory/hair/largebun - name = "Bun (Large)" - icon_state = "hair_largebun" - -/datum/sprite_accessory/hair/business - name = "Business Hair" - icon_state = "hair_business" - -/datum/sprite_accessory/hair/business2 - name = "Business Hair 2" - icon_state = "hair_business2" - -/datum/sprite_accessory/hair/business3 - name = "Business Hair 3" - icon_state = "hair_business3" - -/datum/sprite_accessory/hair/business4 - name = "Business Hair 4" - icon_state = "hair_business4" - -/datum/sprite_accessory/hair/buzz - name = "Buzzcut" - icon_state = "hair_buzzcut" - -/datum/sprite_accessory/hair/combover - name = "Combover" - icon_state = "hair_combover" - -/datum/sprite_accessory/hair/crew - name = "Crewcut" - icon_state = "hair_crewcut" - -/datum/sprite_accessory/hair/curls - name = "Curls" - icon_state = "hair_curls" - -/datum/sprite_accessory/hair/cut - name = "Cut Hair" - icon_state = "hair_c" - -/datum/sprite_accessory/hair/devillock - name = "Devil Lock" - icon_state = "hair_devilock" - -/datum/sprite_accessory/hair/dreadlocks - name = "Dreadlocks" - icon_state = "hair_dreads" - -/datum/sprite_accessory/hair/drillhair - name = "Drill Hair" - icon_state = "hair_drillhair" - -/datum/sprite_accessory/hair/drillhairextended - name = "Drill Hair (Extended)" - icon_state = "hair_drillhairextended" - -/datum/sprite_accessory/hair/emo - name = "Emo" - icon_state = "hair_emo" - -/datum/sprite_accessory/hair/feather - name = "Feather" - icon_state = "hair_feather" - -/datum/sprite_accessory/hair/sargeant - name = "Flat Top" - icon_state = "hair_sargeant" - -/datum/sprite_accessory/hair/bigflattop - name = "Flat Top (Big)" - icon_state = "hair_bigflattop" - -/datum/sprite_accessory/hair/fag - name = "Flow Hair" - icon_state = "hair_f" - -/datum/sprite_accessory/hair/gelled - name = "Gelled Back" - icon_state = "hair_gelled" - -/datum/sprite_accessory/hair/gentle - name = "Gentle" - icon_state = "hair_gentle" - -/datum/sprite_accessory/hair/halfbang - name = "Half-banged Hair" - icon_state = "hair_halfbang" - -/datum/sprite_accessory/hair/halfbang2 - name = "Half-banged Hair 2" - icon_state = "hair_halfbang2" - -/datum/sprite_accessory/hair/hedgehog - name = "Hedgehog Hair" - icon_state = "hair_hedgehog" - -/datum/sprite_accessory/hair/himecut - name = "Hime Cut" - icon_state = "hair_himecut" - -/datum/sprite_accessory/hair/himecut2 - name = "Hime Cut 2" - icon_state = "hair_himecut2" - -/datum/sprite_accessory/hair/himeup - name = "Hime Updo" - icon_state = "hair_himeup" - -/datum/sprite_accessory/hair/hitop - name = "Hitop" - icon_state = "hair_hitop" - -/datum/sprite_accessory/hair/jensen - name = "Jensen Hair" - icon_state = "hair_jensen" - -/datum/sprite_accessory/hair/keanu - name = "Keanu Hair" - icon_state = "hair_keanu" - -/datum/sprite_accessory/hair/kusangi - name = "Kusanagi Hair" - icon_state = "hair_kusanagi" - -/datum/sprite_accessory/hair/long - name = "Long Hair 1" - icon_state = "hair_long" - -/datum/sprite_accessory/hair/long2 - name = "Long Hair 2" - icon_state = "hair_long2" - -/datum/sprite_accessory/hair/long3 - name = "Long Hair 3" - icon_state = "hair_long3" - -/datum/sprite_accessory/hair/long_over_eye - name = "Long Over Eye" - icon_state = "hair_longovereye" - -/datum/sprite_accessory/hair/longbangs - name = "Long Bangs" - icon_state = "hair_lbangs" - -/datum/sprite_accessory/hair/longemo - name = "Long Emo" - icon_state = "hair_longemo" - -/datum/sprite_accessory/hair/longfringe - name = "Long Fringe" - icon_state = "hair_longfringe" - -/datum/sprite_accessory/hair/sidepartlongalt - name = "Long Side Part" - icon_state = "hair_longsidepart" - -/datum/sprite_accessory/hair/megaeyebrows - name = "Mega Eyebrows" - icon_state = "hair_megaeyebrows" - -/datum/sprite_accessory/hair/messy - name = "Messy" - icon_state = "hair_messy" - -/datum/sprite_accessory/hair/mohawk - name = "Mohawk" - icon_state = "hair_d" - -/datum/sprite_accessory/hair/reversemohawk - name = "Mohawk (Reverse)" - icon_state = "hair_reversemohawk" - -/datum/sprite_accessory/hair/odango - name = "Odango" - icon_state = "hair_odango" - -/datum/sprite_accessory/hair/ombre - name = "Ombre" - icon_state = "hair_ombre" - -/datum/sprite_accessory/hair/oneshoulder - name = "One Shoulder" - icon_state = "hair_oneshoulder" - -/datum/sprite_accessory/hair/over_eye - name = "Over Eye" - icon_state = "hair_shortovereye" - -//Donator item - fractious -/datum/sprite_accessory/hair/over_eye_fr - name = "Over Eye (fract)" - icon_state = "hair_shortovereye_1f" - ckeys_allowed = list("fractious") - -/datum/sprite_accessory/hair/parted - name = "Parted" - icon_state = "hair_parted" - -/datum/sprite_accessory/hair/partedside - name = "Parted (Side)" - icon_state = "hair_part" - -/datum/sprite_accessory/hair/kagami - name = "Pigtails" - icon_state = "hair_kagami" - -/datum/sprite_accessory/hair/pigtail - name = "Pigtails 2" - icon_state = "hair_pigtails" - -/datum/sprite_accessory/hair/pigtail2 - name = "Pigtails 3" - icon_state = "hair_pigtails2" - -/datum/sprite_accessory/hair/pixie - name = "Pixie Cut" - icon_state = "hair_pixie" - -/datum/sprite_accessory/hair/pompadour - name = "Pompadour" - icon_state = "hair_pompadour" - -/datum/sprite_accessory/hair/bigpompadour - name = "Pompadour (Big)" - icon_state = "hair_bigpompadour" - -/datum/sprite_accessory/hair/ponytail1 - name = "Ponytail" - icon_state = "hair_ponytail" - -/datum/sprite_accessory/hair/ponytail2 - name = "Ponytail 2" - icon_state = "hair_ponytail2" - -/datum/sprite_accessory/hair/ponytail3 - name = "Ponytail 3" - icon_state = "hair_ponytail3" - -/datum/sprite_accessory/hair/ponytail4 - name = "Ponytail 4" - icon_state = "hair_ponytail4" - -/datum/sprite_accessory/hair/ponytail5 - name = "Ponytail 5" - icon_state = "hair_ponytail5" - -/datum/sprite_accessory/hair/highponytail - name = "Ponytail (High)" - icon_state = "hair_highponytail" - -/datum/sprite_accessory/hair/longponytail - name = "Ponytail (Long)" - icon_state = "hair_longstraightponytail" - -/datum/sprite_accessory/hair/sidetail - name = "Ponytail (Side)" - icon_state = "hair_sidetail" - -/datum/sprite_accessory/hair/sidetail2 - name = "Ponytail (Side) 2" - icon_state = "hair_sidetail2" - -/datum/sprite_accessory/hair/sidetail3 - name = "Ponytail (Side) 3" - icon_state = "hair_sidetail3" - -/datum/sprite_accessory/hair/sidetail4 - name = "Ponytail (Side) 4" - icon_state = "hair_sidetail4" - -/datum/sprite_accessory/hair/quiff - name = "Quiff" - icon_state = "hair_quiff" - -/datum/sprite_accessory/hair/short - name = "Short Hair" - icon_state = "hair_a" - -/datum/sprite_accessory/hair/shorthair2 - name = "Short Hair 2" - icon_state = "hair_shorthair2" - -/datum/sprite_accessory/hair/shorthair3 - name = "Short Hair 3" - icon_state = "hair_shorthair3" - -/datum/sprite_accessory/hair/shoulderlength - name = "Shoulder-length Hair" - icon_state = "hair_b" - -/datum/sprite_accessory/hair/sidecut - name = "Sidecut" - icon_state = "hair_sidecut" - -/datum/sprite_accessory/hair/skinhead - name = "Skinhead" - icon_state = "hair_skinhead" - -/datum/sprite_accessory/hair/protagonist - name = "Slightly Long Hair" - icon_state = "hair_protagonist" - -/datum/sprite_accessory/hair/spiky - name = "Spiky" - icon_state = "hair_spikey" - -/datum/sprite_accessory/hair/spiky2 - name = "Spiky 2" - icon_state = "hair_spiky" - -/datum/sprite_accessory/hair/spiky3 - name = "Spiky 3" - icon_state = "hair_spiky2" - -/datum/sprite_accessory/hair/swept - name = "Swept Back Hair" - icon_state = "hair_swept" - -/datum/sprite_accessory/hair/swept2 - name = "Swept Back Hair 2" - icon_state = "hair_swept2" - -/datum/sprite_accessory/hair/tressshoulder - name = "Tress Shoulder" - icon_state = "hair_tressshoulder" - -/datum/sprite_accessory/hair/updo - name = "Updo" - icon_state = "hair_updo" - -/datum/sprite_accessory/hair/longer - name = "Very Long Hair" - icon_state = "hair_vlong" - -/datum/sprite_accessory/hair/longest - name = "Very Long Hair 2" - icon_state = "hair_longest" - -/datum/sprite_accessory/hair/longest2 - name = "Very Long Over Eye" - icon_state = "hair_longest2" - -/datum/sprite_accessory/hair/longestalt - name = "Very Long with Fringe" - icon_state = "hair_vlongfringe" - -///////////////////////////// -// Facial Hair Definitions // -///////////////////////////// - -/datum/sprite_accessory/facial_hair - icon = 'icons/mob/human_face.dmi' - gender = MALE // barf (unless you're a dorf, dorfs dig chix w/ beards :P) - -// please make sure they're sorted alphabetically and categorized - -/datum/sprite_accessory/facial_hair/abe - name = "Beard (Abraham Lincoln)" - icon_state = "facial_abe" - -/datum/sprite_accessory/facial_hair/brokenman - name = "Beard (Broken Man)" - icon_state = "facial_brokenman" - -/datum/sprite_accessory/facial_hair/chinstrap - name = "Beard (Chinstrap)" - icon_state = "facial_chin" - -/datum/sprite_accessory/facial_hair/dwarf - name = "Beard (Dwarf)" - icon_state = "facial_dwarf" - -/datum/sprite_accessory/facial_hair/fiveoclock - name = "Beard (Five o Clock Shadow)" - icon_state = "facial_fiveoclock" - -/datum/sprite_accessory/facial_hair/fullbeard - name = "Beard (Full)" - icon_state = "facial_fullbeard" - -/datum/sprite_accessory/facial_hair/gt - name = "Beard (Goatee)" - icon_state = "facial_gt" - -/datum/sprite_accessory/facial_hair/hip - name = "Beard (Hipster)" - icon_state = "facial_hip" - -/datum/sprite_accessory/facial_hair/jensen - name = "Beard (Jensen)" - icon_state = "facial_jensen" - -/datum/sprite_accessory/facial_hair/neckbeard - name = "Beard (Neckbeard)" - icon_state = "facial_neckbeard" - -/datum/sprite_accessory/facial_hair/vlongbeard - name = "Beard (Very Long)" - icon_state = "facial_wise" - -/datum/sprite_accessory/facial_hair/longbeard - name = "Beard (Long)" - icon_state = "facial_longbeard" - -/datum/sprite_accessory/facial_hair/fu - name = "Moustache (Fu Manchu)" - icon_state = "facial_fumanchu" - -/datum/sprite_accessory/facial_hair/hogan - name = "Moustache (Hulk Hogan)" - icon_state = "facial_hogan" //-Neek - -/datum/sprite_accessory/facial_hair/selleck - name = "Moustache (Selleck)" - icon_state = "facial_selleck" - -/datum/sprite_accessory/facial_hair/chaplin - name = "Moustache (Square)" - icon_state = "facial_chaplin" - -/datum/sprite_accessory/facial_hair/vandyke - name = "Moustache (Van Dyke)" - icon_state = "facial_vandyke" - -/datum/sprite_accessory/facial_hair/watson - name = "Moustache (Watson)" - icon_state = "facial_watson" - -/datum/sprite_accessory/facial_hair/shaved - name = "Shaved" - icon_state = null - gender = NEUTER - -/datum/sprite_accessory/facial_hair/elvis - name = "Sideburns (Elvis)" - icon_state = "facial_elvis" - - -/////////////////////////// -// Underwear Definitions // -/////////////////////////// -/datum/sprite_accessory/underwear - icon = 'icons/mob/underwear.dmi' - -/datum/sprite_accessory/underwear/nude - name = "Nude" - icon_state = null - gender = NEUTER - -/datum/sprite_accessory/underwear/male_mankini - name = "Mankini" - icon_state = "male_mankini" - gender = MALE - -/datum/sprite_accessory/underwear/male_black - name = "Men's Black" - icon_state = "male_black" - gender = MALE - -/datum/sprite_accessory/underwear/male_blackalt - name = "Men's Black Boxer" - icon_state = "male_blackalt" - gender = MALE - -/datum/sprite_accessory/underwear/male_blue - name = "Men's Blue" - icon_state = "male_blue" - gender = MALE - -/datum/sprite_accessory/underwear/male_green - name = "Men's Green" - icon_state = "male_green" - gender = MALE - -/datum/sprite_accessory/underwear/male_grey - name = "Men's Grey" - icon_state = "male_grey" - gender = MALE - -/datum/sprite_accessory/underwear/male_greyalt - name = "Men's Grey Boxer" - icon_state = "male_greyalt" - gender = MALE - -/datum/sprite_accessory/underwear/male_hearts - name = "Men's Hearts Boxer" - icon_state = "male_hearts" - gender = MALE - -/datum/sprite_accessory/underwear/male_kinky - name = "Men's Kinky" - icon_state = "male_kinky" - gender = MALE - -/datum/sprite_accessory/underwear/male_red - name = "Men's Red" - icon_state = "male_red" - gender = MALE - -/datum/sprite_accessory/underwear/male_stripe - name = "Men's Striped Boxer" - icon_state = "male_stripe" - gender = MALE - -/datum/sprite_accessory/underwear/male_commie - name = "Men's Striped Commie Boxer" - icon_state = "male_commie" - gender = MALE - -/datum/sprite_accessory/underwear/male_usastripe - name = "Men's Striped Freedom Boxer" - icon_state = "male_assblastusa" - gender = MALE - -/datum/sprite_accessory/underwear/male_uk - name = "Men's Striped UK Boxer" - icon_state = "male_uk" - gender = MALE - -/datum/sprite_accessory/underwear/male_white - name = "Men's White" - icon_state = "male_white" - gender = MALE - -/datum/sprite_accessory/underwear/female_babydoll - name = "Babydoll" - icon_state = "female_babydoll" - gender = FEMALE - -/datum/sprite_accessory/underwear/female_babyblue - name = "Ladies' Baby-Blue" - icon_state = "female_babyblue" - gender = FEMALE - -/datum/sprite_accessory/underwear/female_black - name = "Ladies' Black" - icon_state = "female_black" - gender = FEMALE - -/datum/sprite_accessory/underwear/female_black_neko - name = "Ladies' Black Neko" - icon_state = "female_neko_black" - gender = FEMALE - -/datum/sprite_accessory/underwear/female_blackalt - name = "Ladies' Black Sport" - icon_state = "female_blackalt" - gender = FEMALE - -/datum/sprite_accessory/underwear/female_blue - name = "Ladies' Blue" - icon_state = "female_blue" - gender = FEMALE - -/datum/sprite_accessory/underwear/female_commie - name = "Ladies' Commie" - icon_state = "female_commie" - gender = FEMALE - -/datum/sprite_accessory/underwear/female_usastripe - name = "Ladies' Freedom" - icon_state = "female_assblastusa" - gender = FEMALE - -/datum/sprite_accessory/underwear/female_green - name = "Ladies' Green" - icon_state = "female_green" - gender = FEMALE - -/datum/sprite_accessory/underwear/female_kinky - name = "Ladies' Kinky" - icon_state = "female_kinky" - gender = FEMALE - -/datum/sprite_accessory/underwear/female_pink - name = "Ladies' Pink" - icon_state = "female_pink" - gender = FEMALE - -/datum/sprite_accessory/underwear/female_red - name = "Ladies' Red" - icon_state = "female_red" - gender = FEMALE - -/datum/sprite_accessory/underwear/swimsuit - name = "Ladies' Swimsuit (Black)" - icon_state = "swim_black" - gender = FEMALE - -/datum/sprite_accessory/underwear/swimsuit_blue - name = "Ladies' Swimsuit (Blue)" - icon_state = "swim_blue" - gender = FEMALE - -/datum/sprite_accessory/underwear/swimsuit_green - name = "Ladies' Swimsuit (Green)" - icon_state = "swim_green" - gender = FEMALE - -/datum/sprite_accessory/underwear/swimsuit_purple - name = "Ladies' Swimsuit (Purple)" - icon_state = "swim_purple" - gender = FEMALE - -/datum/sprite_accessory/underwear/swimsuit_red - name = "Ladies' Swimsuit (Red)" - icon_state = "swim_red" - gender = FEMALE - -/datum/sprite_accessory/underwear/female_thong - name = "Ladies' Thong" - icon_state = "female_thong" - gender = FEMALE - -/datum/sprite_accessory/underwear/female_uk - name = "Ladies' UK" - icon_state = "female_uk" - gender = FEMALE - -/datum/sprite_accessory/underwear/female_white - name = "Ladies' White" - icon_state = "female_white" - gender = FEMALE - -/datum/sprite_accessory/underwear/female_white_neko - name = "Ladies' White Neko" - icon_state = "female_neko_white" - gender = FEMALE - -/datum/sprite_accessory/underwear/female_whitealt - name = "Ladies' White Sport" - icon_state = "female_whitealt" - gender = FEMALE - -/datum/sprite_accessory/underwear/female_yellow - name = "Ladies' Yellow" - icon_state = "female_yellow" - gender = FEMALE - -//////////////////////////// -// Undershirt Definitions // -//////////////////////////// - -/datum/sprite_accessory/undershirt - icon = 'icons/mob/underwear.dmi' - -/datum/sprite_accessory/undershirt/nude - name = "Nude" - icon_state = null - gender = NEUTER - -// please make sure they're sorted alphabetically and categorized - -/datum/sprite_accessory/undershirt/bluejersey - name = "Jersey (Blue)" - icon_state = "shirt_bluejersey" - gender = NEUTER - -/datum/sprite_accessory/undershirt/redjersey - name = "Jersey (Red)" - icon_state = "shirt_redjersey" - gender = NEUTER - -/datum/sprite_accessory/undershirt/bluepolo - name = "Polo Shirt (Blue)" - icon_state = "bluepolo" - gender = NEUTER - -/datum/sprite_accessory/undershirt/grayyellowpolo - name = "Polo Shirt (Gray-Yellow)" - icon_state = "grayyellowpolo" - gender = NEUTER - -/datum/sprite_accessory/undershirt/redpolo - name = "Polo Shirt (Red)" - icon_state = "redpolo" - gender = NEUTER - -/datum/sprite_accessory/undershirt/whitepolo - name = "Polo Shirt (White)" - icon_state = "whitepolo" - gender = NEUTER - -/datum/sprite_accessory/undershirt/alienshirt - name = "Shirt (Alien)" - icon_state = "shirt_alien" - gender = NEUTER - -/datum/sprite_accessory/undershirt/mondmondjaja - name = "Shirt (Band)" - icon_state = "band" - gender = NEUTER - -/datum/sprite_accessory/undershirt/shirt_black - name = "Shirt (Black)" - icon_state = "shirt_black" - gender = NEUTER - -/datum/sprite_accessory/undershirt/blueshirt - name = "Shirt (Blue)" - icon_state = "shirt_blue" - gender = NEUTER - -/datum/sprite_accessory/undershirt/clownshirt - name = "Shirt (Clown)" - icon_state = "shirt_clown" - gender = NEUTER - -/datum/sprite_accessory/undershirt/commie - name = "Shirt (Commie)" - icon_state = "shirt_commie" - gender = NEUTER - -/datum/sprite_accessory/undershirt/greenshirt - name = "Shirt (Green)" - icon_state = "shirt_green" - gender = NEUTER - -/datum/sprite_accessory/undershirt/shirt_grey - name = "Shirt (Grey)" - icon_state = "shirt_grey" - gender = NEUTER - -/datum/sprite_accessory/undershirt/ian - name = "Shirt (Ian)" - icon_state = "ian" - gender = NEUTER - -/datum/sprite_accessory/undershirt/ilovent - name = "Shirt (I Love NT)" - icon_state = "ilovent" - gender = NEUTER - -/datum/sprite_accessory/undershirt/lover - name = "Shirt (Lover)" - icon_state = "lover" - gender = NEUTER - -/datum/sprite_accessory/undershirt/matroska - name = "Shirt (Matroska)" - icon_state = "matroska" - gender = NEUTER - -/datum/sprite_accessory/undershirt/meat - name = "Shirt (Meat)" - icon_state = "shirt_meat" - gender = NEUTER - -/datum/sprite_accessory/undershirt/nano - name = "Shirt (Nanotrasen)" - icon_state = "shirt_nano" - gender = NEUTER - -/datum/sprite_accessory/undershirt/peace - name = "Shirt (Peace)" - icon_state = "peace" - gender = NEUTER - -/datum/sprite_accessory/undershirt/pacman - name = "Shirt (Pogoman)" - icon_state = "pogoman" - gender = NEUTER - -/datum/sprite_accessory/undershirt/question - name = "Shirt (Question)" - icon_state = "shirt_question" - gender = NEUTER - -/datum/sprite_accessory/undershirt/redshirt - name = "Shirt (Red)" - icon_state = "shirt_red" - gender = NEUTER - -/datum/sprite_accessory/undershirt/skull - name = "Shirt (Skull)" - icon_state = "shirt_skull" - gender = NEUTER - -/datum/sprite_accessory/undershirt/ss13 - name = "Shirt (SS13)" - icon_state = "shirt_ss13" - gender = NEUTER - -/datum/sprite_accessory/undershirt/stripe - name = "Shirt (Striped)" - icon_state = "shirt_stripes" - gender = NEUTER - -/datum/sprite_accessory/undershirt/tiedye - name = "Shirt (Tie-dye)" - icon_state = "shirt_tiedye" - gender = NEUTER - -/datum/sprite_accessory/undershirt/uk - name = "Shirt (UK)" - icon_state = "uk" - gender = NEUTER - -/datum/sprite_accessory/undershirt/usa - name = "Shirt (USA)" - icon_state = "shirt_assblastusa" - gender = NEUTER - -/datum/sprite_accessory/undershirt/shirt_white - name = "Shirt (White)" - icon_state = "shirt_white" - gender = NEUTER - -/datum/sprite_accessory/undershirt/blackshortsleeve - name = "Short-sleeved Shirt (Black)" - icon_state = "blackshortsleeve" - gender = NEUTER - -/datum/sprite_accessory/undershirt/blueshortsleeve - name = "Short-sleeved Shirt (Blue)" - icon_state = "blueshortsleeve" - gender = NEUTER - -/datum/sprite_accessory/undershirt/greenshortsleeve - name = "Short-sleeved Shirt (Green)" - icon_state = "greenshortsleeve" - gender = NEUTER - -/datum/sprite_accessory/undershirt/purpleshortsleeve - name = "Short-sleeved Shirt (Purple)" - icon_state = "purpleshortsleeve" - gender = NEUTER - -/datum/sprite_accessory/undershirt/whiteshortsleeve - name = "Short-sleeved Shirt (White)" - icon_state = "whiteshortsleeve" - gender = NEUTER - -/datum/sprite_accessory/undershirt/sports_bra - name = "Sports Bra" - icon_state = "sports_bra" - gender = NEUTER - -/datum/sprite_accessory/undershirt/sports_bra2 - name = "Sports Bra (Alt)" - icon_state = "sports_bra_alt" - gender = NEUTER - -/datum/sprite_accessory/undershirt/blueshirtsport - name = "Sports Shirt (Blue)" - icon_state = "blueshirtsport" - gender = NEUTER - -/datum/sprite_accessory/undershirt/greenshirtsport - name = "Sports Shirt (Green)" - icon_state = "greenshirtsport" - gender = NEUTER - -/datum/sprite_accessory/undershirt/redshirtsport - name = "Sports Shirt (Red)" - icon_state = "redshirtsport" - gender = NEUTER - -/datum/sprite_accessory/undershirt/tank_black - name = "Tank Top (Black)" - icon_state = "tank_black" - gender = NEUTER - -/datum/sprite_accessory/undershirt/tankfire - name = "Tank Top (Fire)" - icon_state = "tank_fire" - gender = NEUTER - -/datum/sprite_accessory/undershirt/tank_grey - name = "Tank Top (Grey)" - icon_state = "tank_grey" - gender = NEUTER - -/datum/sprite_accessory/undershirt/female_midriff - name = "Tank Top (Midriff)" - icon_state = "tank_midriff" - gender = FEMALE - -/datum/sprite_accessory/undershirt/tank_red - name = "Tank Top (Red)" - icon_state = "tank_red" - gender = NEUTER - -/datum/sprite_accessory/undershirt/tankstripe - name = "Tank Top (Striped)" - icon_state = "tank_stripes" - gender = NEUTER - -/datum/sprite_accessory/undershirt/tank_white - name = "Tank Top (White)" - icon_state = "tank_white" - gender = NEUTER - -/datum/sprite_accessory/undershirt/redtop - name = "Top (Red)" - icon_state = "redtop" - gender = FEMALE - -/datum/sprite_accessory/undershirt/whitetop - name = "Top (White)" - icon_state = "whitetop" - gender = FEMALE - -/datum/sprite_accessory/undershirt/tshirt_blue - name = "T-Shirt (Blue)" - icon_state = "blueshirt" - gender = NEUTER - -/datum/sprite_accessory/undershirt/tshirt_green - name = "T-Shirt (Green)" - icon_state = "greenshirt" - gender = NEUTER - -/datum/sprite_accessory/undershirt/tshirt_red - name = "T-Shirt (Red)" - icon_state = "redshirt" - gender = NEUTER - -/datum/sprite_accessory/undershirt/yellowshirt - name = "T-Shirt (Yellow)" - icon_state = "yellowshirt" - gender = NEUTER - -/////////////////////// -// Socks Definitions // -/////////////////////// - -/datum/sprite_accessory/socks - icon = 'icons/mob/underwear.dmi' - -/datum/sprite_accessory/socks/nude - name = "Nude" - icon_state = null - -// please make sure they're sorted alphabetically and categorized - -/datum/sprite_accessory/socks/black_knee - name = "Knee-high (Black)" - icon_state = "black_knee" - -/datum/sprite_accessory/socks/commie_knee - name = "Knee-High (Commie)" - icon_state = "commie_knee" - -/datum/sprite_accessory/socks/usa_knee - name = "Knee-High (Freedom)" - icon_state = "assblastusa_knee" - -/datum/sprite_accessory/socks/rainbow_knee - name = "Knee-high (Rainbow)" - icon_state = "rainbow_knee" - -/datum/sprite_accessory/socks/striped_knee - name = "Knee-high (Striped)" - icon_state = "striped_knee" - -/datum/sprite_accessory/socks/thin_knee - name = "Knee-high (Thin)" - icon_state = "thin_knee" - -/datum/sprite_accessory/socks/uk_knee - name = "Knee-High (UK)" - icon_state = "uk_knee" - -/datum/sprite_accessory/socks/white_knee - name = "Knee-high (White)" - icon_state = "white_knee" - -/datum/sprite_accessory/socks/black_norm - name = "Normal (Black)" - icon_state = "black_norm" - -/datum/sprite_accessory/socks/white_norm - name = "Normal (White)" - icon_state = "white_norm" - -/datum/sprite_accessory/socks/pantyhose - name = "Pantyhose" - icon_state = "pantyhose" - -/datum/sprite_accessory/socks/black_short - name = "Short (Black)" - icon_state = "black_short" - -/datum/sprite_accessory/socks/white_short - name = "Short (White)" - icon_state = "white_short" - -/datum/sprite_accessory/socks/black_thigh - name = "Thigh-high (Black)" - icon_state = "black_thigh" - -/datum/sprite_accessory/socks/commie_thigh - name = "Thigh-high (Commie)" - icon_state = "commie_thigh" - -/datum/sprite_accessory/socks/usa_thigh - name = "Thigh-high (Freedom)" - icon_state = "assblastusa_thigh" - -/datum/sprite_accessory/socks/rainbow_thigh - name = "Thigh-high (Rainbow)" - icon_state = "rainbow_thigh" - -/datum/sprite_accessory/socks/striped_thigh - name = "Thigh-high (Striped)" - icon_state = "striped_thigh" - -/datum/sprite_accessory/socks/thin_thigh - name = "Thigh-high (Thin)" - icon_state = "thin_thigh" - -/datum/sprite_accessory/socks/uk_thigh - name = "Thigh-high (UK)" - icon_state = "uk_thigh" - -/datum/sprite_accessory/socks/white_thigh - name = "Thigh-high (White)" - icon_state = "white_thigh" - -//////////.////////////////// -// MutantParts Definitions // -///////////////////////////// - -/datum/sprite_accessory/body_markings - icon = 'icons/mob/mutant_bodyparts.dmi' - -/datum/sprite_accessory/body_markings/none - name = "None" - icon_state = "none" - -/datum/sprite_accessory/body_markings/dtiger - name = "Dark Tiger Body" - icon_state = "dtiger" - gender_specific = 1 - -/datum/sprite_accessory/body_markings/ltiger - name = "Light Tiger Body" - icon_state = "ltiger" - gender_specific = 1 - -/datum/sprite_accessory/body_markings/lbelly - name = "Light Belly" - icon_state = "lbelly" - gender_specific = 1 - -/datum/sprite_accessory/tails - icon = 'icons/mob/mutant_bodyparts.dmi' - -/datum/sprite_accessory/tails_animated - icon = 'icons/mob/mutant_bodyparts.dmi' - -/datum/sprite_accessory/tails/lizard/smooth - name = "Smooth" - icon_state = "smooth" - -/datum/sprite_accessory/tails_animated/lizard/smooth - name = "Smooth" - icon_state = "smooth" - -/datum/sprite_accessory/tails/lizard/dtiger - name = "Dark Tiger" - icon_state = "dtiger" - -/datum/sprite_accessory/tails_animated/lizard/dtiger - name = "Dark Tiger" - icon_state = "dtiger" - -/datum/sprite_accessory/tails/lizard/ltiger - name = "Light Tiger" - icon_state = "ltiger" - -/datum/sprite_accessory/tails_animated/lizard/ltiger - name = "Light Tiger" - icon_state = "ltiger" - -/datum/sprite_accessory/tails/lizard/spikes - name = "Spikes" - icon_state = "spikes" - -/datum/sprite_accessory/tails_animated/lizard/spikes - name = "Spikes" - icon_state = "spikes" - -/datum/sprite_accessory/tails/human/none - name = "None" - icon_state = "none" - -/datum/sprite_accessory/tails_animated/human/none - name = "None" - icon_state = "none" -/* -/datum/sprite_accessory/tails/human/cat - name = "Cat" - icon_state = "cat" - color_src = HAIR - -/datum/sprite_accessory/tails_animated/human/cat - name = "Cat" - icon_state = "cat" - color_src = HAIR*/ - -/datum/sprite_accessory/snouts - icon = 'icons/mob/mutant_bodyparts.dmi' - -/datum/sprite_accessory/snouts/sharp - name = "Sharp" - icon_state = "sharp" - -/datum/sprite_accessory/snouts/round - name = "Round" - icon_state = "round" - -/datum/sprite_accessory/snouts/sharplight - name = "Sharp + Light" - icon_state = "sharplight" - -/datum/sprite_accessory/snouts/roundlight - name = "Round + Light" - icon_state = "roundlight" - -/datum/sprite_accessory/horns - icon = 'icons/mob/mutant_bodyparts.dmi' - -/datum/sprite_accessory/horns/none - name = "None" - icon_state = "none" - -/datum/sprite_accessory/horns/simple - name = "Simple" - icon_state = "simple" - -/datum/sprite_accessory/horns/short - name = "Short" - icon_state = "short" - -/datum/sprite_accessory/horns/curled - name = "Curled" - icon_state = "curled" - -/datum/sprite_accessory/horns/ram - name = "Ram" - icon_state = "ram" - -/datum/sprite_accessory/horns/angler - name = "Angeler" - icon_state = "angler" - -/datum/sprite_accessory/ears - icon = 'icons/mob/mutant_bodyparts.dmi' - -/datum/sprite_accessory/ears/none - name = "None" - icon_state = "none" - -/datum/sprite_accessory/ears/cat - name = "Cat" - icon_state = "cat" - hasinner = 1 - color_src = HAIR - -/datum/sprite_accessory/wings/none - name = "None" - icon_state = "none" - -/datum/sprite_accessory/wings_open - icon = 'icons/mob/wings.dmi' - -/datum/sprite_accessory/wings_open/angel - name = "Angel" - icon_state = "angel" - color_src = 0 - dimension_x = 46 - center = TRUE - dimension_y = 34 - -/datum/sprite_accessory/wings - icon = 'icons/mob/wings.dmi' - -/datum/sprite_accessory/wings/angel - name = "Angel" - icon_state = "angel" - color_src = 0 - dimension_x = 46 - center = TRUE - dimension_y = 34 - locked = TRUE - -/datum/sprite_accessory/frills - icon = 'icons/mob/mutant_bodyparts.dmi' - -/datum/sprite_accessory/frills/none - name = "None" - icon_state = "none" - -/datum/sprite_accessory/frills/simple - name = "Simple" - icon_state = "simple" - -/datum/sprite_accessory/frills/short - name = "Short" - icon_state = "short" - -/datum/sprite_accessory/frills/aquatic - name = "Aquatic" - icon_state = "aqua" - -/datum/sprite_accessory/spines - icon = 'icons/mob/mutant_bodyparts.dmi' - -/datum/sprite_accessory/spines_animated - icon = 'icons/mob/mutant_bodyparts.dmi' - -/datum/sprite_accessory/spines/none - name = "None" - icon_state = "none" - -/datum/sprite_accessory/spines_animated/none - name = "None" - icon_state = "none" - -/datum/sprite_accessory/spines/short - name = "Short" - icon_state = "short" - -/datum/sprite_accessory/spines_animated/short - name = "Short" - icon_state = "short" - -/datum/sprite_accessory/spines/shortmeme - name = "Short + Membrane" - icon_state = "shortmeme" - -/datum/sprite_accessory/spines_animated/shortmeme - name = "Short + Membrane" - icon_state = "shortmeme" - -/datum/sprite_accessory/spines/long - name = "Long" - icon_state = "long" - -/datum/sprite_accessory/spines_animated/long - name = "Long" - icon_state = "long" - -/datum/sprite_accessory/spines/longmeme - name = "Long + Membrane" - icon_state = "longmeme" - -/datum/sprite_accessory/spines_animated/longmeme - name = "Long + Membrane" - icon_state = "longmeme" - -/datum/sprite_accessory/spines/aqautic - name = "Aquatic" - icon_state = "aqua" - -/datum/sprite_accessory/spines_animated/aqautic - name = "Aquatic" - icon_state = "aqua" - -/datum/sprite_accessory/legs //legs are a special case, they aren't actually sprite_accessories but are updated with them. - icon = null //These datums exist for selecting legs on preference, and little else - -/datum/sprite_accessory/legs/none - name = "Normal Legs" - -/datum/sprite_accessory/legs/digitigrade_lizard - name = "Digitigrade Legs" - -/datum/sprite_accessory/caps - icon = 'icons/mob/mutant_bodyparts.dmi' - color_src = HAIR - -/datum/sprite_accessory/caps/round - name = "Round" - icon_state = "round" - -/datum/sprite_accessory/moth_wings - icon = 'icons/mob/wings.dmi' - color_src = null - -/datum/sprite_accessory/moth_wings/plain - name = "Plain" - icon_state = "plain" - -/datum/sprite_accessory/moth_wings/monarch - name = "Monarch" - icon_state = "monarch" - -/datum/sprite_accessory/moth_wings/luna - name = "Luna" - icon_state = "luna" - -/datum/sprite_accessory/moth_wings/atlas - name = "Atlas" - icon_state = "atlas" - -/datum/sprite_accessory/moth_wings/reddish - name = "Reddish" - icon_state = "redish" - -/datum/sprite_accessory/moth_wings/royal - name = "Royal" - icon_state = "royal" - -/datum/sprite_accessory/moth_wings/gothic - name = "Gothic" - icon_state = "gothic" - -/datum/sprite_accessory/moth_wings/lovers - name = "Lovers" - icon_state = "lovers" - -/datum/sprite_accessory/moth_wings/whitefly - name = "White Fly" - icon_state = "whitefly" - -/datum/sprite_accessory/moth_wings/punished - name = "Burnt Off" - icon_state = "punished" - locked = TRUE - -/datum/sprite_accessory/moth_wings/firewatch - name = "Firewatch" - icon_state = "firewatch" - -/datum/sprite_accessory/moth_wings/deathhead - name = "Deathshead" - icon_state = "deathhead" - -/datum/sprite_accessory/moth_wings/poison - name = "Poison" - icon_state = "poison" - -/datum/sprite_accessory/moth_wings/ragged - name = "Ragged" - icon_state = "ragged" - -/datum/sprite_accessory/moth_wings/moonfly - name = "Moon Fly" - icon_state = "moonfly" - -/datum/sprite_accessory/moth_wings/snow - name = "Snow" - icon_state = "snow" diff --git a/code/modules/mob/dead/new_player/sprite_accessories/_sprite_accessories.dm b/code/modules/mob/dead/new_player/sprite_accessories/_sprite_accessories.dm new file mode 100644 index 0000000000..699c3c97e4 --- /dev/null +++ b/code/modules/mob/dead/new_player/sprite_accessories/_sprite_accessories.dm @@ -0,0 +1,62 @@ +/* + + Hello and welcome to sprite_accessories: For sprite accessories, such as hair, + facial hair, and possibly tattoos and stuff somewhere along the line. This file is + intended to be friendly for people with little to no actual coding experience. + The process of adding in new hairstyles has been made pain-free and easy to do. + Enjoy! - Doohl + + + Notice: This all gets automatically compiled in a list in dna.dm, so you do not + have to define any UI values for sprite accessories manually for hair and facial + hair. Just add in new hair types and the game will naturally adapt. + + !!WARNING!!: changing existing hair information can be VERY hazardous to savefiles, + to the point where you may completely corrupt a server's savefiles. Please refrain + from doing this unless you absolutely know what you are doing, and have defined a + conversion in savefile.dm +*/ +/proc/init_sprite_accessory_subtypes(prototype, list/L, list/male, list/female,var/roundstart = FALSE)//Roundstart argument builds a specific list for roundstart parts where some parts may be locked + if(!istype(L)) + L = list() + if(!istype(male)) + male = list() + if(!istype(female)) + female = list() + + for(var/path in typesof(prototype)) + if(path == prototype) + continue + if(roundstart) + var/datum/sprite_accessory/P = path + if(initial(P.locked)) + continue + var/datum/sprite_accessory/D = new path() + + if(D.icon_state) + L[D.name] = D + else + L += D.name + + switch(D.gender) + if(MALE) + male += D.name + if(FEMALE) + female += D.name + else + male += D.name + female += D.name + return L + +/datum/sprite_accessory + var/icon //the icon file the accessory is located in + var/icon_state //the icon_state of the accessory + var/name //the preview name of the accessory + var/gender = NEUTER //Determines if the accessory will be skipped or included in random hair generations + var/gender_specific //Something that can be worn by either gender, but looks different on each + var/color_src = MUTCOLORS //Currently only used by mutantparts so don't worry about hair and stuff. This is the source that this accessory will get its color from. Default is MUTCOLOR, but can also be HAIR, FACEHAIR, EYECOLOR and 0 if none. + var/hasinner //Decides if this sprite has an "inner" part, such as the fleshy parts on ears. + var/locked = FALSE //Is this part locked from roundstart selection? Used for parts that apply effects + var/dimension_x = 32 + var/dimension_y = 32 + var/center = FALSE //Should we center the sprite? \ No newline at end of file diff --git a/code/modules/mob/dead/new_player/sprite_accessories/body_markings.dm b/code/modules/mob/dead/new_player/sprite_accessories/body_markings.dm new file mode 100644 index 0000000000..6bce18d7ce --- /dev/null +++ b/code/modules/mob/dead/new_player/sprite_accessories/body_markings.dm @@ -0,0 +1,25 @@ +//////////.////////////////// +// MutantParts Definitions // +///////////////////////////// + +/datum/sprite_accessory/body_markings + icon = 'icons/mob/mutant_bodyparts.dmi' + +/datum/sprite_accessory/body_markings/none + name = "None" + icon_state = "none" + +/datum/sprite_accessory/body_markings/dtiger + name = "Dark Tiger Body" + icon_state = "dtiger" + gender_specific = 1 + +/datum/sprite_accessory/body_markings/ltiger + name = "Light Tiger Body" + icon_state = "ltiger" + gender_specific = 1 + +/datum/sprite_accessory/body_markings/lbelly + name = "Light Belly" + icon_state = "lbelly" + gender_specific = 1 \ No newline at end of file diff --git a/code/modules/mob/dead/new_player/sprite_accessories/caps.dm b/code/modules/mob/dead/new_player/sprite_accessories/caps.dm new file mode 100644 index 0000000000..debb4865ba --- /dev/null +++ b/code/modules/mob/dead/new_player/sprite_accessories/caps.dm @@ -0,0 +1,7 @@ +datum/sprite_accessory/caps + icon = 'icons/mob/mutant_bodyparts.dmi' + color_src = HAIR + +/datum/sprite_accessory/caps/round + name = "Round" + icon_state = "round" \ No newline at end of file diff --git a/code/modules/mob/dead/new_player/sprite_accessories/ears.dm b/code/modules/mob/dead/new_player/sprite_accessories/ears.dm new file mode 100644 index 0000000000..163f8370a2 --- /dev/null +++ b/code/modules/mob/dead/new_player/sprite_accessories/ears.dm @@ -0,0 +1,12 @@ +/datum/sprite_accessory/ears + icon = 'icons/mob/mutant_bodyparts.dmi' + +/datum/sprite_accessory/ears/none + name = "None" + icon_state = "none" + +/datum/sprite_accessory/ears/cat + name = "Cat" + icon_state = "cat" + hasinner = 1 + color_src = HAIR \ No newline at end of file diff --git a/code/modules/mob/dead/new_player/sprite_accessories/frills.dm b/code/modules/mob/dead/new_player/sprite_accessories/frills.dm new file mode 100644 index 0000000000..93c4af6df0 --- /dev/null +++ b/code/modules/mob/dead/new_player/sprite_accessories/frills.dm @@ -0,0 +1,18 @@ +/datum/sprite_accessory/frills + icon = 'icons/mob/mutant_bodyparts.dmi' + +/datum/sprite_accessory/frills/none + name = "None" + icon_state = "none" + +/datum/sprite_accessory/frills/simple + name = "Simple" + icon_state = "simple" + +/datum/sprite_accessory/frills/short + name = "Short" + icon_state = "short" + +/datum/sprite_accessory/frills/aquatic + name = "Aquatic" + icon_state = "aqua" \ No newline at end of file diff --git a/code/modules/mob/dead/new_player/sprite_accessories/hair_face.dm b/code/modules/mob/dead/new_player/sprite_accessories/hair_face.dm new file mode 100644 index 0000000000..3566f3dea5 --- /dev/null +++ b/code/modules/mob/dead/new_player/sprite_accessories/hair_face.dm @@ -0,0 +1,89 @@ +///////////////////////////// +// Facial Hair Definitions // +///////////////////////////// +/datum/sprite_accessory/facial_hair + icon = 'icons/mob/human_face.dmi' + gender = MALE // barf (unless you're a dorf, dorfs dig chix w/ beards :P) + +// please make sure they're sorted alphabetically and categorized + +/datum/sprite_accessory/facial_hair/abe + name = "Beard (Abraham Lincoln)" + icon_state = "facial_abe" + +/datum/sprite_accessory/facial_hair/brokenman + name = "Beard (Broken Man)" + icon_state = "facial_brokenman" + +/datum/sprite_accessory/facial_hair/chinstrap + name = "Beard (Chinstrap)" + icon_state = "facial_chin" + +/datum/sprite_accessory/facial_hair/dwarf + name = "Beard (Dwarf)" + icon_state = "facial_dwarf" + +/datum/sprite_accessory/facial_hair/fiveoclock + name = "Beard (Five o Clock Shadow)" + icon_state = "facial_fiveoclock" + +/datum/sprite_accessory/facial_hair/fullbeard + name = "Beard (Full)" + icon_state = "facial_fullbeard" + +/datum/sprite_accessory/facial_hair/gt + name = "Beard (Goatee)" + icon_state = "facial_gt" + +/datum/sprite_accessory/facial_hair/hip + name = "Beard (Hipster)" + icon_state = "facial_hip" + +/datum/sprite_accessory/facial_hair/jensen + name = "Beard (Jensen)" + icon_state = "facial_jensen" + +/datum/sprite_accessory/facial_hair/neckbeard + name = "Beard (Neckbeard)" + icon_state = "facial_neckbeard" + +/datum/sprite_accessory/facial_hair/vlongbeard + name = "Beard (Very Long)" + icon_state = "facial_wise" + +/datum/sprite_accessory/facial_hair/longbeard + name = "Beard (Long)" + icon_state = "facial_longbeard" + +/datum/sprite_accessory/facial_hair/fu + name = "Moustache (Fu Manchu)" + icon_state = "facial_fumanchu" + +/datum/sprite_accessory/facial_hair/hogan + name = "Moustache (Hulk Hogan)" + icon_state = "facial_hogan" //-Neek + +/datum/sprite_accessory/facial_hair/selleck + name = "Moustache (Selleck)" + icon_state = "facial_selleck" + +/datum/sprite_accessory/facial_hair/chaplin + name = "Moustache (Square)" + icon_state = "facial_chaplin" + +/datum/sprite_accessory/facial_hair/vandyke + name = "Moustache (Van Dyke)" + icon_state = "facial_vandyke" + +/datum/sprite_accessory/facial_hair/watson + name = "Moustache (Watson)" + icon_state = "facial_watson" + +/datum/sprite_accessory/facial_hair/shaved + name = "Shaved" + icon_state = null + gender = NEUTER + +/datum/sprite_accessory/facial_hair/elvis + name = "Sideburns (Elvis)" + icon_state = "facial_elvis" \ No newline at end of file diff --git a/code/modules/mob/dead/new_player/sprite_accessories/hair_head.dm b/code/modules/mob/dead/new_player/sprite_accessories/hair_head.dm new file mode 100644 index 0000000000..66c79ea0f0 --- /dev/null +++ b/code/modules/mob/dead/new_player/sprite_accessories/hair_head.dm @@ -0,0 +1,460 @@ +////////////////////// +// Hair Definitions // +////////////////////// +/datum/sprite_accessory/hair + icon = 'icons/mob/human_face.dmi' // default icon for all hairs + + // please make sure they're sorted alphabetically and, where needed, categorized + // try to capitalize the names please~ + // try to spell + // you do not need to define _s or _l sub-states, game automatically does this for you + +/datum/sprite_accessory/hair/afro + name = "Afro" + icon_state = "hair_afro" + +/datum/sprite_accessory/hair/afro2 + name = "Afro 2" + icon_state = "hair_afro2" + +/datum/sprite_accessory/hair/afro_large + name = "Afro (Large)" + icon_state = "hair_bigafro" + +/datum/sprite_accessory/hair/antenna + name = "Ahoge" + icon_state = "hair_antenna" + +/datum/sprite_accessory/hair/bald + name = "Bald" + icon_state = null + +/datum/sprite_accessory/hair/balding + name = "Balding Hair" + icon_state = "hair_e" + +/datum/sprite_accessory/hair/bedhead + name = "Bedhead" + icon_state = "hair_bedhead" + +/datum/sprite_accessory/hair/bedhead2 + name = "Bedhead 2" + icon_state = "hair_bedheadv2" + +/datum/sprite_accessory/hair/bedhead3 + name = "Bedhead 3" + icon_state = "hair_bedheadv3" + +/datum/sprite_accessory/hair/beehive + name = "Beehive" + icon_state = "hair_beehive" + +/datum/sprite_accessory/hair/beehive2 + name = "Beehive 2" + icon_state = "hair_beehivev2" + +/datum/sprite_accessory/hair/bob + name = "Bob Hair" + icon_state = "hair_bob" + +/datum/sprite_accessory/hair/bob2 + name = "Bob Hair 2" + icon_state = "hair_bob2" + +/datum/sprite_accessory/hair/bob3 + name = "Bob Hair 3" + icon_state = "hair_bobcut" + +/datum/sprite_accessory/hair/bobcurl + name = "Bobcurl" + icon_state = "hair_bobcurl" + +/datum/sprite_accessory/hair/boddicker + name = "Boddicker" + icon_state = "hair_boddicker" + +/datum/sprite_accessory/hair/bowl + name = "Bowl" + icon_state = "hair_bowlcut" + +/datum/sprite_accessory/hair/braid + name = "Braid (Floorlength)" + icon_state = "hair_braid" + +/datum/sprite_accessory/hair/braided + name = "Braided" + icon_state = "hair_braided" + +/datum/sprite_accessory/hair/front_braid + name = "Braided Front" + icon_state = "hair_braidfront" + +/datum/sprite_accessory/hair/not_floorlength_braid + name = "Braid (High)" + icon_state = "hair_braid2" + +/datum/sprite_accessory/hair/lowbraid + name = "Braid (Low)" + icon_state = "hair_hbraid" + +/datum/sprite_accessory/hair/shortbraid + name = "Braid (Short)" + icon_state = "hair_shortbraid" + +/datum/sprite_accessory/hair/braidtail + name = "Braided Tail" + icon_state = "hair_braidtail" + +/datum/sprite_accessory/hair/bun + name = "Bun Head" + icon_state = "hair_bun" + +/datum/sprite_accessory/hair/bun2 + name = "Bun Head 2" + icon_state = "hair_bunhead2" + +/datum/sprite_accessory/hair/largebun + name = "Bun (Large)" + icon_state = "hair_largebun" + +/datum/sprite_accessory/hair/business + name = "Business Hair" + icon_state = "hair_business" + +/datum/sprite_accessory/hair/business2 + name = "Business Hair 2" + icon_state = "hair_business2" + +/datum/sprite_accessory/hair/business3 + name = "Business Hair 3" + icon_state = "hair_business3" + +/datum/sprite_accessory/hair/business4 + name = "Business Hair 4" + icon_state = "hair_business4" + +/datum/sprite_accessory/hair/buzz + name = "Buzzcut" + icon_state = "hair_buzzcut" + +/datum/sprite_accessory/hair/combover + name = "Combover" + icon_state = "hair_combover" + +/datum/sprite_accessory/hair/crew + name = "Crewcut" + icon_state = "hair_crewcut" + +/datum/sprite_accessory/hair/curls + name = "Curls" + icon_state = "hair_curls" + +/datum/sprite_accessory/hair/cut + name = "Cut Hair" + icon_state = "hair_c" + +/datum/sprite_accessory/hair/devillock + name = "Devil Lock" + icon_state = "hair_devilock" + +/datum/sprite_accessory/hair/dreadlocks + name = "Dreadlocks" + icon_state = "hair_dreads" + +/datum/sprite_accessory/hair/drillhair + name = "Drill Hair" + icon_state = "hair_drillhair" + +/datum/sprite_accessory/hair/drillhairextended + name = "Drill Hair (Extended)" + icon_state = "hair_drillhairextended" + +/datum/sprite_accessory/hair/emo + name = "Emo" + icon_state = "hair_emo" + +/datum/sprite_accessory/hair/feather + name = "Feather" + icon_state = "hair_feather" + +/datum/sprite_accessory/hair/sargeant + name = "Flat Top" + icon_state = "hair_sargeant" + +/datum/sprite_accessory/hair/bigflattop + name = "Flat Top (Big)" + icon_state = "hair_bigflattop" + +/datum/sprite_accessory/hair/fag + name = "Flow Hair" + icon_state = "hair_f" + +/datum/sprite_accessory/hair/gelled + name = "Gelled Back" + icon_state = "hair_gelled" + +/datum/sprite_accessory/hair/gentle + name = "Gentle" + icon_state = "hair_gentle" + +/datum/sprite_accessory/hair/halfbang + name = "Half-banged Hair" + icon_state = "hair_halfbang" + +/datum/sprite_accessory/hair/halfbang2 + name = "Half-banged Hair 2" + icon_state = "hair_halfbang2" + +/datum/sprite_accessory/hair/hedgehog + name = "Hedgehog Hair" + icon_state = "hair_hedgehog" + +/datum/sprite_accessory/hair/himecut + name = "Hime Cut" + icon_state = "hair_himecut" + +/datum/sprite_accessory/hair/himecut2 + name = "Hime Cut 2" + icon_state = "hair_himecut2" + +/datum/sprite_accessory/hair/himeup + name = "Hime Updo" + icon_state = "hair_himeup" + +/datum/sprite_accessory/hair/hitop + name = "Hitop" + icon_state = "hair_hitop" + +/datum/sprite_accessory/hair/jensen + name = "Jensen Hair" + icon_state = "hair_jensen" + +/datum/sprite_accessory/hair/keanu + name = "Keanu Hair" + icon_state = "hair_keanu" + +/datum/sprite_accessory/hair/kusangi + name = "Kusanagi Hair" + icon_state = "hair_kusanagi" + +/datum/sprite_accessory/hair/long + name = "Long Hair 1" + icon_state = "hair_long" + +/datum/sprite_accessory/hair/long2 + name = "Long Hair 2" + icon_state = "hair_long2" + +/datum/sprite_accessory/hair/long3 + name = "Long Hair 3" + icon_state = "hair_long3" + +/datum/sprite_accessory/hair/long_over_eye + name = "Long Over Eye" + icon_state = "hair_longovereye" + +/datum/sprite_accessory/hair/longbangs + name = "Long Bangs" + icon_state = "hair_lbangs" + +/datum/sprite_accessory/hair/longemo + name = "Long Emo" + icon_state = "hair_longemo" + +/datum/sprite_accessory/hair/longfringe + name = "Long Fringe" + icon_state = "hair_longfringe" + +/datum/sprite_accessory/hair/sidepartlongalt + name = "Long Side Part" + icon_state = "hair_longsidepart" + +/datum/sprite_accessory/hair/megaeyebrows + name = "Mega Eyebrows" + icon_state = "hair_megaeyebrows" + +/datum/sprite_accessory/hair/messy + name = "Messy" + icon_state = "hair_messy" + +/datum/sprite_accessory/hair/mohawk + name = "Mohawk" + icon_state = "hair_d" + +/datum/sprite_accessory/hair/reversemohawk + name = "Mohawk (Reverse)" + icon_state = "hair_reversemohawk" + +/datum/sprite_accessory/hair/odango + name = "Odango" + icon_state = "hair_odango" + +/datum/sprite_accessory/hair/ombre + name = "Ombre" + icon_state = "hair_ombre" + +/datum/sprite_accessory/hair/oneshoulder + name = "One Shoulder" + icon_state = "hair_oneshoulder" + +/datum/sprite_accessory/hair/over_eye + name = "Over Eye" + icon_state = "hair_shortovereye" + +//Donator item - fractious +/datum/sprite_accessory/hair/over_eye_fr + name = "Over Eye (fract)" + icon_state = "hair_shortovereye_1f" + ckeys_allowed = list("fractious") + +/datum/sprite_accessory/hair/parted + name = "Parted" + icon_state = "hair_parted" + +/datum/sprite_accessory/hair/partedside + name = "Parted (Side)" + icon_state = "hair_part" + +/datum/sprite_accessory/hair/kagami + name = "Pigtails" + icon_state = "hair_kagami" + +/datum/sprite_accessory/hair/pigtail + name = "Pigtails 2" + icon_state = "hair_pigtails" + +/datum/sprite_accessory/hair/pigtail2 + name = "Pigtails 3" + icon_state = "hair_pigtails2" + +/datum/sprite_accessory/hair/pixie + name = "Pixie Cut" + icon_state = "hair_pixie" + +/datum/sprite_accessory/hair/pompadour + name = "Pompadour" + icon_state = "hair_pompadour" + +/datum/sprite_accessory/hair/bigpompadour + name = "Pompadour (Big)" + icon_state = "hair_bigpompadour" + +/datum/sprite_accessory/hair/ponytail1 + name = "Ponytail" + icon_state = "hair_ponytail" + +/datum/sprite_accessory/hair/ponytail2 + name = "Ponytail 2" + icon_state = "hair_ponytail2" + +/datum/sprite_accessory/hair/ponytail3 + name = "Ponytail 3" + icon_state = "hair_ponytail3" + +/datum/sprite_accessory/hair/ponytail4 + name = "Ponytail 4" + icon_state = "hair_ponytail4" + +/datum/sprite_accessory/hair/ponytail5 + name = "Ponytail 5" + icon_state = "hair_ponytail5" + +/datum/sprite_accessory/hair/highponytail + name = "Ponytail (High)" + icon_state = "hair_highponytail" + +/datum/sprite_accessory/hair/longponytail + name = "Ponytail (Long)" + icon_state = "hair_longstraightponytail" + +/datum/sprite_accessory/hair/sidetail + name = "Ponytail (Side)" + icon_state = "hair_sidetail" + +/datum/sprite_accessory/hair/sidetail2 + name = "Ponytail (Side) 2" + icon_state = "hair_sidetail2" + +/datum/sprite_accessory/hair/sidetail3 + name = "Ponytail (Side) 3" + icon_state = "hair_sidetail3" + +/datum/sprite_accessory/hair/sidetail4 + name = "Ponytail (Side) 4" + icon_state = "hair_sidetail4" + +/datum/sprite_accessory/hair/quiff + name = "Quiff" + icon_state = "hair_quiff" + +/datum/sprite_accessory/hair/short + name = "Short Hair" + icon_state = "hair_a" + +/datum/sprite_accessory/hair/shorthair2 + name = "Short Hair 2" + icon_state = "hair_shorthair2" + +/datum/sprite_accessory/hair/shorthair3 + name = "Short Hair 3" + icon_state = "hair_shorthair3" + +/datum/sprite_accessory/hair/shoulderlength + name = "Shoulder-length Hair" + icon_state = "hair_b" + +/datum/sprite_accessory/hair/sidecut + name = "Sidecut" + icon_state = "hair_sidecut" + +/datum/sprite_accessory/hair/skinhead + name = "Skinhead" + icon_state = "hair_skinhead" + +/datum/sprite_accessory/hair/protagonist + name = "Slightly Long Hair" + icon_state = "hair_protagonist" + +/datum/sprite_accessory/hair/spiky + name = "Spiky" + icon_state = "hair_spikey" + +/datum/sprite_accessory/hair/spiky2 + name = "Spiky 2" + icon_state = "hair_spiky" + +/datum/sprite_accessory/hair/spiky3 + name = "Spiky 3" + icon_state = "hair_spiky2" + +/datum/sprite_accessory/hair/swept + name = "Swept Back Hair" + icon_state = "hair_swept" + +/datum/sprite_accessory/hair/swept2 + name = "Swept Back Hair 2" + icon_state = "hair_swept2" + +/datum/sprite_accessory/hair/tressshoulder + name = "Tress Shoulder" + icon_state = "hair_tressshoulder" + +/datum/sprite_accessory/hair/updo + name = "Updo" + icon_state = "hair_updo" + +/datum/sprite_accessory/hair/longer + name = "Very Long Hair" + icon_state = "hair_vlong" + +/datum/sprite_accessory/hair/longest + name = "Very Long Hair 2" + icon_state = "hair_longest" + +/datum/sprite_accessory/hair/longest2 + name = "Very Long Over Eye" + icon_state = "hair_longest2" + +/datum/sprite_accessory/hair/longestalt + name = "Very Long with Fringe" + icon_state = "hair_vlongfringe" \ No newline at end of file diff --git a/code/modules/mob/dead/new_player/sprite_accessories/horns.dm b/code/modules/mob/dead/new_player/sprite_accessories/horns.dm new file mode 100644 index 0000000000..607ad650e3 --- /dev/null +++ b/code/modules/mob/dead/new_player/sprite_accessories/horns.dm @@ -0,0 +1,26 @@ +/datum/sprite_accessory/horns + icon = 'icons/mob/mutant_bodyparts.dmi' + +/datum/sprite_accessory/horns/none + name = "None" + icon_state = "none" + +/datum/sprite_accessory/horns/simple + name = "Simple" + icon_state = "simple" + +/datum/sprite_accessory/horns/short + name = "Short" + icon_state = "short" + +/datum/sprite_accessory/horns/curled + name = "Curled" + icon_state = "curled" + +/datum/sprite_accessory/horns/ram + name = "Ram" + icon_state = "ram" + +/datum/sprite_accessory/horns/angler + name = "Angeler" + icon_state = "angler" \ No newline at end of file diff --git a/code/modules/mob/dead/new_player/sprite_accessories/legs.dm b/code/modules/mob/dead/new_player/sprite_accessories/legs.dm new file mode 100644 index 0000000000..7663100822 --- /dev/null +++ b/code/modules/mob/dead/new_player/sprite_accessories/legs.dm @@ -0,0 +1,8 @@ +/datum/sprite_accessory/legs //legs are a special case, they aren't actually sprite_accessories but are updated with them. + icon = null //These datums exist for selecting legs on preference, and little else + +/datum/sprite_accessory/legs/none + name = "Normal Legs" + +/datum/sprite_accessory/legs/digitigrade_lizard + name = "Digitigrade Legs" \ No newline at end of file diff --git a/code/modules/mob/dead/new_player/sprite_accessories/moth_wings.dm b/code/modules/mob/dead/new_player/sprite_accessories/moth_wings.dm new file mode 100644 index 0000000000..6b8036bd69 --- /dev/null +++ b/code/modules/mob/dead/new_player/sprite_accessories/moth_wings.dm @@ -0,0 +1,68 @@ +/datum/sprite_accessory/moth_wings + icon = 'icons/mob/wings.dmi' + color_src = null + +/datum/sprite_accessory/moth_wings/plain + name = "Plain" + icon_state = "plain" + +/datum/sprite_accessory/moth_wings/monarch + name = "Monarch" + icon_state = "monarch" + +/datum/sprite_accessory/moth_wings/luna + name = "Luna" + icon_state = "luna" + +/datum/sprite_accessory/moth_wings/atlas + name = "Atlas" + icon_state = "atlas" + +/datum/sprite_accessory/moth_wings/reddish + name = "Reddish" + icon_state = "redish" + +/datum/sprite_accessory/moth_wings/royal + name = "Royal" + icon_state = "royal" + +/datum/sprite_accessory/moth_wings/gothic + name = "Gothic" + icon_state = "gothic" + +/datum/sprite_accessory/moth_wings/lovers + name = "Lovers" + icon_state = "lovers" + +/datum/sprite_accessory/moth_wings/whitefly + name = "White Fly" + icon_state = "whitefly" + +/datum/sprite_accessory/moth_wings/punished + name = "Burnt Off" + icon_state = "punished" + locked = TRUE + +/datum/sprite_accessory/moth_wings/firewatch + name = "Firewatch" + icon_state = "firewatch" + +/datum/sprite_accessory/moth_wings/deathhead + name = "Deathshead" + icon_state = "deathhead" + +/datum/sprite_accessory/moth_wings/poison + name = "Poison" + icon_state = "poison" + +/datum/sprite_accessory/moth_wings/ragged + name = "Ragged" + icon_state = "ragged" + +/datum/sprite_accessory/moth_wings/moonfly + name = "Moon Fly" + icon_state = "moonfly" + +/datum/sprite_accessory/moth_wings/snow + name = "Snow" + icon_state = "snow" diff --git a/code/modules/mob/dead/new_player/sprite_accessories/pines.dm b/code/modules/mob/dead/new_player/sprite_accessories/pines.dm new file mode 100644 index 0000000000..4ccbc3d9ea --- /dev/null +++ b/code/modules/mob/dead/new_player/sprite_accessories/pines.dm @@ -0,0 +1,53 @@ +/datum/sprite_accessory/spines + icon = 'icons/mob/mutant_bodyparts.dmi' + +/datum/sprite_accessory/spines_animated + icon = 'icons/mob/mutant_bodyparts.dmi' + +/datum/sprite_accessory/spines/none + name = "None" + icon_state = "none" + +/datum/sprite_accessory/spines_animated/none + name = "None" + icon_state = "none" + +/datum/sprite_accessory/spines/short + name = "Short" + icon_state = "short" + +/datum/sprite_accessory/spines_animated/short + name = "Short" + icon_state = "short" + +/datum/sprite_accessory/spines/shortmeme + name = "Short + Membrane" + icon_state = "shortmeme" + +/datum/sprite_accessory/spines_animated/shortmeme + name = "Short + Membrane" + icon_state = "shortmeme" + +/datum/sprite_accessory/spines/long + name = "Long" + icon_state = "long" + +/datum/sprite_accessory/spines_animated/long + name = "Long" + icon_state = "long" + +/datum/sprite_accessory/spines/longmeme + name = "Long + Membrane" + icon_state = "longmeme" + +/datum/sprite_accessory/spines_animated/longmeme + name = "Long + Membrane" + icon_state = "longmeme" + +/datum/sprite_accessory/spines/aqautic + name = "Aquatic" + icon_state = "aqua" + +/datum/sprite_accessory/spines_animated/aqautic + name = "Aquatic" + icon_state = "aqua" \ No newline at end of file diff --git a/code/modules/mob/dead/new_player/sprite_accessories/snouts.dm b/code/modules/mob/dead/new_player/sprite_accessories/snouts.dm new file mode 100644 index 0000000000..c663c08d69 --- /dev/null +++ b/code/modules/mob/dead/new_player/sprite_accessories/snouts.dm @@ -0,0 +1,18 @@ +/datum/sprite_accessory/snouts + icon = 'icons/mob/mutant_bodyparts.dmi' + +/datum/sprite_accessory/snouts/sharp + name = "Sharp" + icon_state = "sharp" + +/datum/sprite_accessory/snouts/round + name = "Round" + icon_state = "round" + +/datum/sprite_accessory/snouts/sharplight + name = "Sharp + Light" + icon_state = "sharplight" + +/datum/sprite_accessory/snouts/roundlight + name = "Round + Light" + icon_state = "roundlight" \ No newline at end of file diff --git a/code/modules/mob/dead/new_player/sprite_accessories/socks.dm b/code/modules/mob/dead/new_player/sprite_accessories/socks.dm new file mode 100644 index 0000000000..5a5d37d4e7 --- /dev/null +++ b/code/modules/mob/dead/new_player/sprite_accessories/socks.dm @@ -0,0 +1,96 @@ +/////////////////////// +// Socks Definitions // +/////////////////////// + +/datum/sprite_accessory/socks + icon = 'icons/mob/underwear.dmi' + +/datum/sprite_accessory/socks/nude + name = "Nude" + icon_state = null + +// please make sure they're sorted alphabetically and categorized + +/datum/sprite_accessory/socks/black_knee + name = "Knee-high (Black)" + icon_state = "black_knee" + +/datum/sprite_accessory/socks/commie_knee + name = "Knee-High (Commie)" + icon_state = "commie_knee" + +/datum/sprite_accessory/socks/usa_knee + name = "Knee-High (Freedom)" + icon_state = "assblastusa_knee" + +/datum/sprite_accessory/socks/rainbow_knee + name = "Knee-high (Rainbow)" + icon_state = "rainbow_knee" + +/datum/sprite_accessory/socks/striped_knee + name = "Knee-high (Striped)" + icon_state = "striped_knee" + +/datum/sprite_accessory/socks/thin_knee + name = "Knee-high (Thin)" + icon_state = "thin_knee" + +/datum/sprite_accessory/socks/uk_knee + name = "Knee-High (UK)" + icon_state = "uk_knee" + +/datum/sprite_accessory/socks/white_knee + name = "Knee-high (White)" + icon_state = "white_knee" + +/datum/sprite_accessory/socks/black_norm + name = "Normal (Black)" + icon_state = "black_norm" + +/datum/sprite_accessory/socks/white_norm + name = "Normal (White)" + icon_state = "white_norm" + +/datum/sprite_accessory/socks/pantyhose + name = "Pantyhose" + icon_state = "pantyhose" + +/datum/sprite_accessory/socks/black_short + name = "Short (Black)" + icon_state = "black_short" + +/datum/sprite_accessory/socks/white_short + name = "Short (White)" + icon_state = "white_short" + +/datum/sprite_accessory/socks/black_thigh + name = "Thigh-high (Black)" + icon_state = "black_thigh" + +/datum/sprite_accessory/socks/commie_thigh + name = "Thigh-high (Commie)" + icon_state = "commie_thigh" + +/datum/sprite_accessory/socks/usa_thigh + name = "Thigh-high (Freedom)" + icon_state = "assblastusa_thigh" + +/datum/sprite_accessory/socks/rainbow_thigh + name = "Thigh-high (Rainbow)" + icon_state = "rainbow_thigh" + +/datum/sprite_accessory/socks/striped_thigh + name = "Thigh-high (Striped)" + icon_state = "striped_thigh" + +/datum/sprite_accessory/socks/thin_thigh + name = "Thigh-high (Thin)" + icon_state = "thin_thigh" + +/datum/sprite_accessory/socks/uk_thigh + name = "Thigh-high (UK)" + icon_state = "uk_thigh" + +/datum/sprite_accessory/socks/white_thigh + name = "Thigh-high (White)" + icon_state = "white_thigh" \ No newline at end of file diff --git a/code/modules/mob/dead/new_player/sprite_accessories/tails.dm b/code/modules/mob/dead/new_player/sprite_accessories/tails.dm new file mode 100644 index 0000000000..31faabf663 --- /dev/null +++ b/code/modules/mob/dead/new_player/sprite_accessories/tails.dm @@ -0,0 +1,55 @@ +/datum/sprite_accessory/tails + icon = 'icons/mob/mutant_bodyparts.dmi' + +/datum/sprite_accessory/tails_animated + icon = 'icons/mob/mutant_bodyparts.dmi' + +/datum/sprite_accessory/tails/lizard/smooth + name = "Smooth" + icon_state = "smooth" + +/datum/sprite_accessory/tails_animated/lizard/smooth + name = "Smooth" + icon_state = "smooth" + +/datum/sprite_accessory/tails/lizard/dtiger + name = "Dark Tiger" + icon_state = "dtiger" + +/datum/sprite_accessory/tails_animated/lizard/dtiger + name = "Dark Tiger" + icon_state = "dtiger" + +/datum/sprite_accessory/tails/lizard/ltiger + name = "Light Tiger" + icon_state = "ltiger" + +/datum/sprite_accessory/tails_animated/lizard/ltiger + name = "Light Tiger" + icon_state = "ltiger" + +/datum/sprite_accessory/tails/lizard/spikes + name = "Spikes" + icon_state = "spikes" + +/datum/sprite_accessory/tails_animated/lizard/spikes + name = "Spikes" + icon_state = "spikes" + +/datum/sprite_accessory/tails/human/none + name = "None" + icon_state = "none" + +/datum/sprite_accessory/tails_animated/human/none + name = "None" + icon_state = "none" +/* +/datum/sprite_accessory/tails/human/cat + name = "Cat" + icon_state = "cat" + color_src = HAIR + +/datum/sprite_accessory/tails_animated/human/cat + name = "Cat" + icon_state = "cat" + color_src = HAIR*/ \ No newline at end of file diff --git a/code/modules/mob/dead/new_player/sprite_accessories/undershirt.dm b/code/modules/mob/dead/new_player/sprite_accessories/undershirt.dm new file mode 100644 index 0000000000..7c66ef51e3 --- /dev/null +++ b/code/modules/mob/dead/new_player/sprite_accessories/undershirt.dm @@ -0,0 +1,308 @@ +//////////////////////////// +// Undershirt Definitions // +//////////////////////////// + +/datum/sprite_accessory/undershirt + icon = 'icons/mob/underwear.dmi' + gender = NEUTER + +/datum/sprite_accessory/undershirt/nude + name = "Nude" + icon_state = null + +// please make sure they're sorted alphabetically and categorized + +/datum/sprite_accessory/undershirt/bluejersey + name = "Shirt, Jersey - Blue" + icon_state = "shirt_bluejersey" + +/datum/sprite_accessory/undershirt/redjersey + name = "Shirt, Jersey - Red" + icon_state = "shirt_redjersey" + +/datum/sprite_accessory/undershirt/bluepolo + name = "Shirt, Polo - Blue" + icon_state = "bluepolo" + +/datum/sprite_accessory/undershirt/grayyellowpolo + name = "Shirt, Polo - Gray, Yellow" + icon_state = "grayyellowpolo" + +/datum/sprite_accessory/undershirt/redpolo + name = "Shirt, Polo - Red" + icon_state = "redpolo" + +/datum/sprite_accessory/undershirt/whitepolo + name = "Shirt, Polo - White" + icon_state = "whitepolo" + +/datum/sprite_accessory/undershirt/alienshirt + name = "Shirt - Alien" + icon_state = "shirt_alien" + +/datum/sprite_accessory/undershirt/mondmondjaja + name = "Shirt - Band" + icon_state = "band" + +/datum/sprite_accessory/undershirt/shirt_black + name = "Shirt - Black" + icon_state = "shirt_black" + +/datum/sprite_accessory/undershirt/blueshirt + name = "Shirt - Blue" + icon_state = "shirt_blue" + +/datum/sprite_accessory/undershirt/clownshirt + name = "Shirt - Clown" + icon_state = "shirt_clown" + +/datum/sprite_accessory/undershirt/commie + name = "Shirt - Commie" + icon_state = "shirt_commie" + +/datum/sprite_accessory/undershirt/greenshirt + name = "Shirt - Green" + icon_state = "shirt_green" + +/datum/sprite_accessory/undershirt/shirt_grey + name = "Shirt - Grey" + icon_state = "shirt_grey" + +/datum/sprite_accessory/undershirt/ian + name = "Shirt - Ian" + icon_state = "ian" + +/datum/sprite_accessory/undershirt/ilovent + name = "Shirt - I Love NT" + icon_state = "ilovent" + +/datum/sprite_accessory/undershirt/lover + name = "Shirt - Lover" + icon_state = "lover" + +/datum/sprite_accessory/undershirt/matroska + name = "Shirt - Matroska" + icon_state = "matroska" + +/datum/sprite_accessory/undershirt/meat + name = "Shirt - Meat" + icon_state = "shirt_meat" + +/datum/sprite_accessory/undershirt/nano + name = "Shirt - Nanotrasen" + icon_state = "shirt_nano" + +/datum/sprite_accessory/undershirt/peace + name = "Shirt - Peace" + icon_state = "peace" + +/datum/sprite_accessory/undershirt/pacman + name = "Shirt - Pogoman" + icon_state = "pogoman" + +/datum/sprite_accessory/undershirt/question + name = "Shirt - Question" + icon_state = "shirt_question" + +/datum/sprite_accessory/undershirt/redshirt + name = "Shirt - Red" + icon_state = "shirt_red" + +/datum/sprite_accessory/undershirt/skull + name = "Shirt - Skull" + icon_state = "shirt_skull" + +/datum/sprite_accessory/undershirt/ss13 + name = "Shirt - SS13" + icon_state = "shirt_ss13" + +/datum/sprite_accessory/undershirt/stripe + name = "Shirt - Striped" + icon_state = "shirt_stripes" + +/datum/sprite_accessory/undershirt/tiedye + name = "Shirt - Tie-dye" + icon_state = "shirt_tiedye" + +/datum/sprite_accessory/undershirt/uk + name = "Shirt - UK" + icon_state = "uk" + +/datum/sprite_accessory/undershirt/usa + name = "Shirt - USA" + icon_state = "shirt_assblastusa" + +/datum/sprite_accessory/undershirt/shirt_white + name = "Shirt - White" + icon_state = "shirt_white" + +/datum/sprite_accessory/undershirt/blackshortsleeve + name = "Shirt, Short Sleeved - Black" + icon_state = "blackshortsleeve" + +/datum/sprite_accessory/undershirt/blueshortsleeve + name = "Shirt, Short Sleeved - Blue" + icon_state = "blueshortsleeve" + +/datum/sprite_accessory/undershirt/greenshortsleeve + name = "Shirt, Short Sleeved - Green" + icon_state = "greenshortsleeve" + +/datum/sprite_accessory/undershirt/purpleshortsleeve + name = "Shirt, Short Sleeved - Purple" + icon_state = "purpleshortsleeve" + +/datum/sprite_accessory/undershirt/whiteshortsleeve + name = "Shirt, Short Sleeved - White" + icon_state = "whiteshortsleeve" + +/datum/sprite_accessory/undershirt/blueshirtsport + name = "Shirt, Sports - Blue" + icon_state = "blueshirtsport" + gender = NEUTER + +/datum/sprite_accessory/undershirt/greenshirtsport + name = "Shirt, Sports - Green" + icon_state = "greenshirtsport" + gender = NEUTER + +/datum/sprite_accessory/undershirt/redshirtsport + name = "Shirt, Sports - Red" + icon_state = "redshirtsport" + gender = NEUTER + +/datum/sprite_accessory/undershirt/redtop + name = "Shirt, Short - Red" + icon_state = "redtop" + +/datum/sprite_accessory/undershirt/whitetop + name = "Shirt, Short - White" + icon_state = "whitetop" + +/datum/sprite_accessory/undershirt/tshirt_blue + name = "T-Shirt - Blue" + icon_state = "blueshirt" + +/datum/sprite_accessory/undershirt/tshirt_green + name = "T-Shirt - Green" + icon_state = "greenshirt" + +/datum/sprite_accessory/undershirt/tshirt_red + name = "T-Shirt - Red" + icon_state = "redshirt" + +/datum/sprite_accessory/undershirt/yellowshirt + name = "T-Shirt - Yellow" + icon_state = "yellowshirt" + +/datum/sprite_accessory/undershirt/tank_black + name = "Tank Top - Black" + icon_state = "tank_black" + +/datum/sprite_accessory/undershirt/tankfire + name = "Tank Top - Fire" + icon_state = "tank_fire" + +/datum/sprite_accessory/undershirt/tank_grey + name = "Tank Top - Grey" + icon_state = "tank_grey" + +/datum/sprite_accessory/undershirt/female_midriff + name = "Tank Top - Midriff" + icon_state = "tank_midriff" + +/datum/sprite_accessory/undershirt/tank_red + name = "Tank Top - Red" + icon_state = "tank_red" + +/datum/sprite_accessory/undershirt/tankstripe + name = "Tank Top - Striped" + icon_state = "tank_stripes" + +/datum/sprite_accessory/undershirt/tank_white + name = "Tank Top - White" + icon_state = "tank_white" + +/datum/sprite_accessory/undershirt/female_red + name = "Bra - Red" + icon_state = "bra_red" + +/datum/sprite_accessory/undershirt/female_pink + name = "Bra - Pink" + icon_state = "bra_pink" + +/datum/sprite_accessory/undershirt/female_kinky + name = "Bra - Kinky Black" + icon_state = "bra_kinky" + +/datum/sprite_accessory/undershirt/female_green + name = "Bra - Green" + icon_state = "bra_green" + +/datum/sprite_accessory/undershirt/female_commie + name = "Bra - Freedom" + icon_state = "bra_assblastusa" + +/datum/sprite_accessory/undershirt/female_commie + name = "Bra - Commie" + icon_state = "bra_commie" + +/datum/sprite_accessory/undershirt/female_babyblue + name = "Bra, Baby Blue" + icon_state = "bra_babyblue" + +/datum/sprite_accessory/undershirt/female_black + name = "Bra - Black" + icon_state = "bra_black" + +/datum/sprite_accessory/undershirt/female_uk + name = "Bra - UK" + icon_state = "bra_uk" + +/datum/sprite_accessory/undershirt/female_white + name = "Bra - White" + icon_state = "bra_white" + +/datum/sprite_accessory/undershirt/female_white_neko + name = "Bra, Neko - white" + icon_state = "bra_neko_white" + +/datum/sprite_accessory/undershirt/female_black_neko + name = "Bra, Neko - Black" + icon_state = "bra_neko_black" + +/datum/sprite_accessory/undershirt/female_blackalt + name = "Bra, Sports - Black" + icon_state = "bra_sports_black" + +/datum/sprite_accessory/undershirt/sports_bra + name = "Bra, Sports 1 - White" + icon_state = "sports_bra" + +/datum/sprite_accessory/undershirt/female_whitealt + name = "Bra, Sports 2 - White" + icon_state = "bra_sports_white" + +/datum/sprite_accessory/undershirt/sports_bra2 + name = "Bra, Sports 3 - White" + icon_state = "sports_bra_alt" + +/datum/sprite_accessory/undershirt/female_yellow + name = "Bra - Yellow" + icon_state = "bra_yellow" + +/datum/sprite_accessory/undershirt/female_thong + name = "Bra, Strapless - Pink" + icon_state = "bra_strapless_pink" + +/datum/sprite_accessory/undershirt/female_blue + name = "Bra, Strapless - Blue" + icon_state = "bra_blue" + +/datum/sprite_accessory/undershirt/swimsuit_green + name = "Swimsuit, Top - Green" + icon_state = "bra_swimming_green" + +/datum/sprite_accessory/undershirt/swimsuit_purple + name = "Swimsuit, Top - Purple" + icon_state = "bra_swimming_purple" \ No newline at end of file diff --git a/code/modules/mob/dead/new_player/sprite_accessories/underwear.dm b/code/modules/mob/dead/new_player/sprite_accessories/underwear.dm new file mode 100644 index 0000000000..6beed231aa --- /dev/null +++ b/code/modules/mob/dead/new_player/sprite_accessories/underwear.dm @@ -0,0 +1,171 @@ +/////////////////////////// +// Underwear Definitions // +/////////////////////////// +/datum/sprite_accessory/underwear + icon = 'icons/mob/underwear.dmi' + gender = NEUTER + +/datum/sprite_accessory/underwear/nude + name = "Nude" + icon_state = null + +/datum/sprite_accessory/underwear/mankini + name = "Mankini - Green" + icon_state = "mankini_green" + +/datum/sprite_accessory/underwear/male_kinky + name = "Jockstrap - White" + icon_state = "jockstrap_white" + +/datum/sprite_accessory/underwear/male_white + name = "Briefs - White" + icon_state = "briefs_white" + +/datum/sprite_accessory/underwear/male_black + name = "Briefs - Black" + icon_state = "briefs_black" + +/datum/sprite_accessory/underwear/male_grey + name = "Briefs - Grey" + icon_state = "briefs_grey" + +/datum/sprite_accessory/underwear/male_red + name = "Briefs - Red" + icon_state = "briefs_red" + +/datum/sprite_accessory/underwear/male_green + name = "Briefs - Green" + icon_state = "briefs_green" + +/datum/sprite_accessory/underwear/male_blue + name = "Briefs - Blue" + icon_state = "briefs_blue" + +/datum/sprite_accessory/underwear/male_blackalt + name = "Boxers - Black" + icon_state = "boxers_black" + +/datum/sprite_accessory/underwear/male_greyalt + name = "Boxers - Grey" + icon_state = "boxers_grey" + +/datum/sprite_accessory/underwear/male_hearts + name = "Boxers - Heart" + icon_state = "boxers_heart" + +/datum/sprite_accessory/underwear/male_stripe + name = "Boxers - Striped" + icon_state = "boxers_striped" + +/datum/sprite_accessory/underwear/male_commie + name = "Boxers - Striped Communist" + icon_state = "boxers_commie" + +/datum/sprite_accessory/underwear/male_usastripe + name = "Boxers - Striped Freedom" + icon_state = "boxers_assblastusa" + +/datum/sprite_accessory/underwear/male_uk + name = "Boxers - Striped UK" + icon_state = "boxers_uk" + + +/datum/sprite_accessory/underwear/female_whitealt + name = "Boxer Briefs - White" + icon_state = "boxer_briefs_white" + +/datum/sprite_accessory/underwear/female_blackalt + name = "Boxer Briefs - Black" + icon_state = "boxer_briefs_black" + +/datum/sprite_accessory/underwear/female_pink + name = "Boxer Briefs - Pink" + icon_state = "boxer_briefs_pink" + +/datum/sprite_accessory/underwear/female_babyblue + name = "Boxer Briefs - Baby Blue" + icon_state = "boxer_briefs_babyblue" + +/datum/sprite_accessory/underwear/female_yellow + name = "Boxer Briefs - Yellow" + icon_state = "boxer_briefs_yellow" + + +/datum/sprite_accessory/underwear/female_black + name = "Panties - Black" + icon_state = "panties_black" + +/datum/sprite_accessory/underwear/female_blue + name = "Panties - Blue" + icon_state = "panties_blue" + +/datum/sprite_accessory/underwear/female_commie + name = "Panties - Commie" + icon_state = "panties_commie" + +/datum/sprite_accessory/underwear/female_usastripe + name = "Panties - Freedom" + icon_state = "panties_assblastusa" + +/datum/sprite_accessory/underwear/female_green + name = "Panties - Green" + icon_state = "panties_green" + +/datum/sprite_accessory/underwear/female_kinky + name = "Panties - Kinky Black" + icon_state = "panties_kinky" + +/datum/sprite_accessory/underwear/female_red + name = "Panties - Red" + icon_state = "panties_red" + +/datum/sprite_accessory/underwear/female_uk + name = "Panties - UK" + icon_state = "panties_uk" + +/datum/sprite_accessory/underwear/female_white + name = "Panties - White" + icon_state = "panties_white" + +/datum/sprite_accessory/underwear/female_white_neko + name = "Panties, Neko - White" + icon_state = "panties_neko_white" + +/datum/sprite_accessory/underwear/female_black_neko + name = "Panties, Neko - Black" + icon_state = "panties_neko_black" + + +/datum/sprite_accessory/underwear/swimsuit_red + name = "Swimsuit, One Piece - Red" + icon_state = "swimming_red" + +/datum/sprite_accessory/underwear/swimsuit + name = "Swimsuit, One Piece - Black" + icon_state = "swimming_black" + +/datum/sprite_accessory/underwear/swimsuit_blue + name = "Swimsuit, One Piece - Striped Blue" + icon_state = "swimming_blue" + +/datum/sprite_accessory/underwear/swimsuit_green + name = "Swimsuit, Bottom - Green" + icon_state = "panties_swimming_green" + +/datum/sprite_accessory/underwear/swimsuit_purple + name = "Swimsuit, Bottom - Purple" + icon_state = "panties_swimming_purple" + +/datum/sprite_accessory/underwear/female_thong_black + name = "Thong - Black" + icon_state = "thong_black" + +/datum/sprite_accessory/underwear/female_thong + name = "Thong - Pink" + icon_state = "thong_pink" + +/datum/sprite_accessory/underwear/female_babydoll + name = "Babydoll - Black" + icon_state = "babydoll" + + diff --git a/code/modules/mob/dead/new_player/sprite_accessories/wings.dm b/code/modules/mob/dead/new_player/sprite_accessories/wings.dm new file mode 100644 index 0000000000..d051b2f07a --- /dev/null +++ b/code/modules/mob/dead/new_player/sprite_accessories/wings.dm @@ -0,0 +1,26 @@ +/datum/sprite_accessory/wings/none + name = "None" + icon_state = "none" + +/datum/sprite_accessory/wings_open + icon = 'icons/mob/wings.dmi' + +/datum/sprite_accessory/wings_open/angel + name = "Angel" + icon_state = "angel" + color_src = 0 + dimension_x = 46 + center = TRUE + dimension_y = 34 + +/datum/sprite_accessory/wings + icon = 'icons/mob/wings.dmi' + +/datum/sprite_accessory/wings/angel + name = "Angel" + icon_state = "angel" + color_src = 0 + dimension_x = 46 + center = TRUE + dimension_y = 34 + locked = TRUE \ No newline at end of file diff --git a/icons/mob/underwear.dmi b/icons/mob/underwear.dmi index 385cd21516620f9951aa3b0142d8246b266e9a16..0b63685668097377754c298ecd5905b0be20059f 100644 GIT binary patch literal 54625 zcmd432UL^Mwl4Zp6a=Iw(mN~2uPJ82-3ThfQobw5s)SbNEJep4xxh} z9SObn9y%l>ci}#JpFQ4t+RN}+w|2# z8oSU-kV%)pP5UmH7k|1Ql|H|;>7kLFNp}$@aq&3%v;`5$nwX04L)423I>3`SZR4nu z?DjC5=q3BOx~iAsQfDI*;&D^@C(#k%Np>#NxjXC?rB~?@(}EY_x@HCR`PgcXOY@)&p284i=kT1dL~JXTCUBG zptANY((A5T{9FC4>F@a~TW^+-#*RsK-B#JSxn4W4(e-dX)4ZWs%hqG|8x5kb!>rCJ zV#vTf{o*r(=KkFkHt*PGydfykBeZ_arf>W=&zo?v)sE^%mkN-K8kj2s(etNCZWd#B z-4Cferp4uI(b?OT$ih1`tqXm z#kh9Pwy%Q0X+~c>pRlt(V7GTS`_gW_s%;-gQY2!w%sF#c#p}tngr=3p7fd}9bi`$4 zUX-q}k!)P%w%JS#DSi0dVYT$4Y#>xJlb_ZQJ@@8QFT)ed1u{W$iy#TjcQiSg`y*LK zhon1|JR1$~gut2 zN%vg1%U#!8ej%$o?aNrx0~^xN+`HUVdp2quE3TQ=-0{2BTGvC25``|1hKGp3rkV@| zZ?9BSziEXPGSXaiwe=54Y*_o!H^4K`?DFPi<4y{KcJ<9fq4ncggz9b|<_+wX@szPB z4DW{+D`mBd-xLI~K@Sz~YkMYdOu}557JX$;kMv5o;KRj5Tnn*9(Gk}fN$5T@nz3zs z?2{wM%Vt-rYHGW5;mF&tUUeYRc+ESB?o?XFhxB3M#QQ-821>f=3Aurtb;C*%f{bCk z_j;{#HvGTzn##+rJpXmm`}%s&;xe}QO>yA7m6Geor4zb|u;u;i9R9XmoTH~Xl5Tv$Azvkh6-_YB%cJJQh zd=aInYi{o7?R+q}I>^)gtFe$JiqT+;!Svv_$c9Z0zj9uNcU*JwD37zyNhT zAGLRE#g=gg>bKU0KDPQjMJ*e`!}zhT;y%YaIh&F`$3-ivt5o1<=5shlkhKWkn>TNs zwrM3af0g!blfpXJ2~l8?-U(%uQ2Qm-}#Il=EqUZuI#n3Pwgoot}Iyw+rk- zkjDC-c}|&IVFPcBLibr{=mxFS>NNPiILCAt zWG0amnG|h|Byyc23})n~Wh8Bb2A{W#f$(a}{OVMG8Y_|u7MKVcKfbDNNp4X7nhMe| zGz=Q}dP<6n`}--Q$v z6_t#PnDGPrjR@mnW7#Q*t?7N^QCj_XPq+Dt2m<_%*K`q~fAV$ByA$v7@bG9bvs}1v zL9g`XZ}yGa)D@8{h|&h^LX3KgZvE~xL+{O> zm0Q*8lw=omf|PI5wYVXTf^6Y+G$tpVx;wwPQ%6p6?B)1fk^(%UxJevF34icEl0x1- zwQpBf96Z0%J;`b6N)*Y=uJcUZWB=Y))+#czDlOHuOqHlm1#(_zt;VsJ3}RUO^qn|W zx&F=;m&+O3?ig*62&^RO>pd6?C6B>n>Ss`EJihozUNg5DwMk;Iez`=neCULBrQNdH zd`xtc$vwR9;^JV!4hWwL%x9Hps!EQ0#1-j4H01j%88zvJ$nw^E&a!jC+MLhFlp;Ci-O}?a#KEg zs&=Rp#d7}Rcz*r28Ol*MUF-}IB=lDyv*Isx_9wfGoh~1>oRZs3mWPt0y${1Bu+?*t zVXyUff*!Cda8TKaZ;X~IcYJ{;quMv!DyH7#pK_?EwTe@#ia?3kQ(uPf1;BN_CgJbf zWRxF2JpUhg(f}3FA2*S!zh)aqAG8rd$s46eebLw2FwCNM^2#>_f;6wSh^p=@Ihe63 zUbzUkO<1b7Mb}$d+=H~EJ9<$QKe&TfH)w=!K&C}VV=L+EXI|vad}`w}Y>!-=%hc<< z?9SdeS>Co*$CIFpvJKnjFR^Syu-zn;Zf@4g=M9Pe9Z)+YER&D6!u|CM&<|I7kvD1E(*Gqx!4DQ}H0c5RbPU5%pvHc{1K)R_}TJL26>fr0Abgt@01GDfE#toyoPwpd&IYmyOra`9R;Mo zKFycH^_Q*LC@E2%K0~{vw}b2JWxluSfq6qpE6@^p?ItBLVILA{1#_^rmh=po~yzO}uNnv0QQ-x3;$SehuHJCs|xcOG_(n5o%DE|D!-NZA>!@ z3%~ZY)g4`QbQ|k^tdD~InabE-#vy`IudyDoJfr6*n3ymW^4KzjFK)xY8`%d)wnd8a$ta#jnU-34#1~k69D5Dw|3^8OzdpZGw=Mai z9S=A37vHf3$jSXqxI-lTQi?@AG@h?L*SS~vh?q@iBqlZ0L2!F>Gmwe;&Ecq3tR2qC zWAZwF00iDk-APu0vc9Jxr>Cc&&p{?+CbFg?m7u3@yVX8s<)O{b``mhCa%us-jnpWNP$4pp7iYWtrz{ zOmNwN=d_TNl$4FP)}olsZ^>yI){S}sRwJW8;jRaL zB2*RpWr;TgU*XV&ub#4UxT@dfVQ1uNBS>y;{!$L#D!Ki*#^ixy}++8xC zuJ_F_W0msM*grZ7!(#oMc4qD`UhX)V``)P;>kx!XxE%j(ZO%kDy!ibC_Mrmf6i=zA z7+m>}-vXUF)rdm!ZyLmiTQ?tvnpC{G``{bpS64E%9LG)X?H7OYbPjtlc{=$m*W(S} zvZjayXz;wBoqh2gg=gyNNe8Zzm2kq3H+24$<5TFnExjn-GVkQ->N;YQ+e4iHF(!rp zdf1BCt1^Ut;y+%Tmt*s9YHHFH&lPc)lA@-e;h-cA?^L#&n42?$eAB{)#N79BKlWv{nkC8?m%=Jfg+b@9S&)C&u_Wq+Q zt1zn4e@5m1Y)~P=@&(w|W`6U$MReO|e5(Cc7Vn3`!lsF%bxq@gvbbYN!}vgCsoo^& zTYi3@S)#j4&qP~S5x?z&hYA^*#TLJ=FiF4BMwcaphLZFHiD!BjK8C>%!2KC`3N--7 z%W>2)p0|5`rt#g}2SyMum;L;S2kq|emO0c^of4%>A*gTF*%cj1&!J!GF0HW=8=>!8 z@n_4iv2}KKQidov{<UMb+f#K91Gh_iWy02M+>jPt z%qB}SJ_39FRO1Qn?i9v!GChByr5#yZPbF8CUK#}^?eE4DjC1>Z<=n{AzUXGThyu6g;<=@54u|fhh8^Y$m zepy>v7tKq$4783N1vk#&m{QP<>%PWd-pQOS#AMD%$_VqppZhGles`x{iu0SiiAk!H zyTxbep|Mco?p9d{Ot1N|qbd1q6@mdIl4xT*`&Q7@l(F{$A|rzU7*>fUwXowJ{PD0k zlO;A%Si(C=(b&VS$uO%_Uz#8a*0%FL*LfeU5lh~h1OAs_C^&^5lX5wFjj7(~Sl+N= zg`Vs=O=2`pWfC6vQE0GFcD_G$RyvA;i)15z8cyU`c$|v%t1F*lRS{uuF%maC^E-Q= zm>MpK@4mbHc3j+Li4J(KUt8RxDrsqH870(YALTM!7VN?IGz$LY7p+2Qd$>se`Rp_j zDcz={2HPVQ6k^`byf9km!`Y#ZWEefHyWaQE4XPeNiP(AYaUX3q|B9CCvFVrv`q7#> z!TkaRhEg~$KVOlbMxLK0=>Rpk@RP`Rb#1K#F5UO7riKx>ua2{jh0O#Ig{R^$%X2_k zHG4B;ef46VwgZDN<};GCUhJ(f}ahx5N#vP|8#ek%E&;q zFt=-kELBT0?_auFf?{4?F)-8(f`Z5NJ{Of{BN|O#mSH|Jygfco$XmBE$Qh%fISFsYI2BU<; zGqx9Z^3c;idHGZ#9v12@*s>1}vAAYlI!-)n5Xt`=pQodW!g_)&&lGc)yq0@Bx$%6| ztakQYY3KMcuO89GS$d@qoO>lMz>$dD&3?W_w8bl1oi*oqE&e6zzvB8Z|8qP3Z=t`1 zE0tr|t57gE+w%xqJef zdWZaqW3(K1*vh2}6y#S#rq%~4*5DY&5GQ0bb;ovPuswQe8DHjV?EWpirF)jB?aCv1 z)UF^RW&bqmrz&+F=B~o_Xhgb|LtB`val!sEY!7~PiT>uB_WX=;QJqLFODS5Pykw#+ zH;i_L;gB>d+6U!npz`#4disOUadBBj)5F6bva)ViB5=v5@v*Uu#U4w(`Cg@~k_5LW z0=|x1@*zy)cE_jN`ZD$-%LzkD^P6_p3CJ@x-Uz^1lq7*=i{Qh5gYucNyZG}bgFWpD zNqhlb4Fe+6ZaWg#k{5SYkJm#IzuqCTvgiAKIgSAOfR+r9*WCB0CtwO4>s@@aNV0on zT9@X#apA{TcBMxs<|7$SjgLVa4T>2qny)N1IbPm3<_My$;@#yltng)8uI6=eUbs2v zrp4P@H??Uutm#=}#=s4R61#+Pm4?DnYI4W1|0AukZ_#K4N~#>U|Zie_nz1q{|t3cFSdMMKn^G7Ckx*m zN=|OBnkZY5yevY%BVKTGZa)~t)g|oT--__&i+mKKm*JwakTunp+ZG*-BlQP}z*pO0 z!Ry1I|YwH7}8rF-*{R;g6M2b>yjZmP}E@BgeLU(X9FV}^mxa7n*7o@0XV6>}CF zshbn7Ee@qWbRRLZ`elCGA%a?Nt;f!&OlW7EIbHV3F^Nmr8KuZ?}VoN_-{5$Jfy%Pz1OIte#IG3wS)_SV#!U$l1wAMv$W z%BKw`)X$HZ-v~M2cHZ$XOrKU&j#gJ#Ai^;H2MRfBC-;9*LI2(8wzH-u+_*h0=#gmqCP*ICT1JS3>3^kFZjGVk{A3w(0E= z{=HoZ+QhoQSFws6VRcz}Z%a&z5rPjc~?2*FCK5Ah>xC?uF0_VIfG;pnI@RfpL z5YSs0d3k)fmvX?TE;EvzlaB13u8vNu=-s<0T3KG&uvW^jR;9amvyOTlZg~-Z{COz0 z*rr{;=KJOs#WsKV>`=M|&#zk;S_x#T4_d`h)pt_Q=KmhYWAlmi@;>G}P`#h`MK!f} zhdceZ<Pmpb6nP~HkK z8XFtyo1DB10r<^7@`fph7t+(xAn1Hw3c_W4>=UWRLz?tFE%E7f@BQUv%Oh;x3$CTE z>iH}E8__AhWFr+gpeu?FzP`SD9Y-|!n6867&;)iS@-T2`O->fjj}?14@Eb@!&vIe< z7kzJ(DywJM}qJtGF6^_`b1KW23I{z)N=$gHfE8*?8x6j!7JxT*u!9x zxPzUUNvo6M=2m`;F}=+*F?eesNbr_Xwe~vG&eBqgYWCB`W?ps$kw1I_ zPkiyphlaBbC5SzI+7(B}Kv--tb*kg`+JnWp#`cK2{YmV+_UO->JooIXf806L*L7+P z3`}vZ@~JmhuFENWc2u!^KpVQ58#O7P9W#6@S&{;BT(4I9j+%sT|9(TeXTGCklqLfxdkEDipg``g`ufD&D|B> zDrcISdPb~_T5C+!<&HES7kAE?oGy6`h_VUF_!jB8`B(*Gnt|=Ch{78s678-Ib)rlkm@8}_d+Eam19W~wsXwX6igOJd$Bw!gP(EAE1O>7cYLLywQJUDLU+@7}#j z55u&>e)taQtKnXO*$rTY7BDNMFRT2dki}@+!vhnzr^#SxM(QeC{Ca0VFy?z1wTBo> z#_FB**nt5T53Wc2TC|9@#D(LZ=mOnj4~6sX^PqjpF0LvkB02dTT1{iubEOkcuB~-R zTTFCplD#_Uc_?j9%ChyNp?uIYIO2A%Q1^{UqzMlV%Cn$+o%Kp_sPf|N==sK)e?%82 z!EL>&Tz@$*c=7*_!i+Sh@oKmHFTa7g0M_RoKsA=o>ptsNZ+rm4$2GoAXuZ_Y-JLS@ z*PPf08;{rfqLH78n1TunD(XpQ?m;85+aWmmzULT&MdA`Q$Mje)BdR1c2!+U zs9?$p1S$X=^t|Zb*1ay`pU9nCa~t5v(g6Lor=}I-v*m0WcgWqcJ8wS6UfSu zC@yRR0ac+_i+zBy+O@S9wTcw%g|UBnz8Y%C+`8?$+sumX=RSBR$)=nhhOlx%8h7dtIfKW zKq`jRxu)entW5 zRqakYt@K5lBQSiB|Epmew52Clf=auue#TE$7izuov5L`o{`?|TxqEu{yj+|n>^@Ch z&#GVvWkjo)#K4zl$*OV>ABMzziS+DbBI&HYvZjLKxv+vbeoTU)qL4W?BqD@MWGl{lW5QHYM*|ft_3Ol=k<0TJ)^>APJtiP&o!^GF3 zHU#}pq~B`rLR!s$)$KD5mYhE+UgdDuKRg`U!=zj|YG{B!r~1an^F{omSlTD5T%wbb zl7{>jmX^lEJ%L^wSM|5y$A(zvfsoU3pLK!Q^{DTawr+cbQO#Sk*$FRbD9TS=w8xHU z-wv_I?=M9zF^9jbG)_W7vNO5uhdf?Yhw)jU;O69~=ddfm8kgvy#891U9@DG;zyJccl5&uoQQm^_0Eh-Zk_qK->$vsj3 zI2gfe6b-LFR==h$b6B#1teezgP69_F9#^jma{WQR5Sy12^m7-Ozoi*6@9UmPQ#L(g74;9uRX`p{Z-AAm0$<` zI3XjYnQVe8S=Y^=-0)UFvbkz;IpU~7y--c!U`5_@>|Z~Z`jXo0*sL=Oee-r zc5t3xIWc@~?76&rrBf1!5L6T1*8VC;#qYV%UcL7170Nj2iP~RyXnD~M4}@QAnx?wQ zVTQ|tE3f6{#rQ3Zjh7#kj&!DjYgSRwJVgchEW$-4)eY)1d_Qsu?!KKZBL2`^K_GXVsa`tg8?VYWmkXq@0WPEH z^@>%|XH&i*HyWxYO)6DxrhCCVZU($bamb6FNv>g7Qi2 zrL}wwgMzInO^$l=`_eOhg~EQF$qY=e{ktt5+waD%otBGU31OoqNdN-7Z(_pw#@o9a zgYf}e6XZ`HqVTzGdwreYqhBGy5Z(!hPj?yY@%(y9uQJPXIWwFT4zs78`+Ih)X1iXH zn&emZ4XDz^Stj+-0hD(|af=x>Hm19<8~t{F@eOoSo6x<5b^So6U44GhRLm!6E6q7| zJ@T=PI}eG^EC*nLUnGogAS3}aG($>zeb{8t@+}M9DC=%9xfVUp1ra7X(i*8bGR--( zIq*l%vl446$&o>dPw{@7z+s;8wk>cLxu0`s2Zc;)%@3>w?>x0g0=O}cfPj*fRd()8 zcXjosGtbOb$ED98FJhEhoQBs9y8U!t((ER=MfN{h(L_8E0_~ldoG%Ik)R{E-9;teWHs{n!oEH8ziwDMi zXhuUsXj4UN*1@GM$zl*J?6v}T#R=l=29;DTuc}Co!6p3o07bL=J1Fw_ z@A*Ld-r3;=T5fg)vz3EAT{;cS2a$8S2TZOfrzq<6XL2z1jkVTq=6pS&W6v|Dg#H9y zhE~mt4nDrvf@#laQ1f)Wi}gr-K@%<&bQ)%M%O&Z>^YQm5f!RvxqHm7GlC7?nIf=+f z2#}QTZr#b+wSNq_OHSS}wLckCgUN?&$}Uo?U%StoLy{S==k>uWWog891 zJ~M`Q(j@#Os!5$DQOU`QeoPG{4G>2Ez5S!)v!d@dPqcHKTM7o~;ya8M*6OdSjd4s5 zB`Cht^}tK)tORKZ^Vs&;i^$JmWJvWm7i{UBNNI}kcj7Y&e$j;x(G^8cFsuWbfM3a; zt7Tya$qj&S*JXeK7e#Nk~UshYEA<0?K32l}yl+J_*xh}D zMNsLpZ0QSB?#uHkTxPlT7kHq*OHZ6J!u5nQcd4HExyS31?{~8H2xgL75nECgQp;BA zBJZ1?2Vp%Im6(@r_%!JGZmV9Y$Koz(Qa$G`*@=I|Rc_0arI#OG zJIQTvPUw`pV&^=4rs8t0No&kI4XK0FlHUC`4{T$ycJEjb0PchF7%-c@tHZ_64Gs>5 zf7uz~Z~p<9TfaQ_CBW;yKYQ*!h=$-Sga!{680zS)s>oxjqJ~D;hy6+j9dqO6p)S`I zA=egnXM03XrB(_7Bg9Z~J&YCv6HfqTl^DJ{V*LbJYwi9EysWDtMeZpq0`)*fyaXM za_KXETUE-U;mrC^D#@@ONkKF#pX*#qc3}L)6vcsKb)D6r^XH2Gn zW5?!o^=rqkCT2&7#==`_*JnXlUZRjIo+M1uFdPU$fxUAv|KRn_ZD4)fcfE3#t*Z>$^2 zELqBH;A<*8tajxPEiDZ}gC%7x6;HH41_}*71Z|G1Vy|acb$H==PH+-R4eg09GdSxd zX|03`_ZXlP&k|K4MkxJ~v-;V|(J|~tO1D#pbs0!3yaYXGU=y4JS(RHaRdfkH`LG`@ z{HHc(`U@!ZmzBS0zF6#QaT+u3KB$d7AzL+5=f1^X! zD|va&&4)vlR5Y_5G7w%{=BXoZVxD%QDlb3YLdMfJPXG z((i=Qy4ks~WzaUK6!Q~f=rXMdCTDGx5a2_jvkQ;<_Udva+bw*z-jQ* zd_8tSkmcHLaa^UYw8a-R>$Q^pqCK(cgpl0w5+1ka#<^4xR32pVw)JrSa~CxYqFaH(@sAHfU1p+4c30X zE#lY{H5UZ>w`Z-Y+C2@_+bsK^;>pWO_wP4mD2IlzO1y1Z7W$HRl@0|DqvaG86^(B0 z(|FnlufCK%8c2(GwZAg68vU_H@`@L;tPxA~oLU7_N9sgs>+NA~1@)gFUxliKMjyI% z=>W5ZZqZVgUVJ#XY56*l`S`x6f`~va$&(btY$U2KT%6g34L0VxLC0Y(r3)g{ZAFy2 z$RO(6PJ#2b%*K0Lk8Fb|(8Bk+$&>$)<-Nf94?g*Sz&?#Y8g2LN#<<$v6mt4K^vOT_ zE-3?u=>8`!_2L%Y$VKG8WbyI?9&8~U)*i_WxZy~qwo=1b?Q!_HE6`=lwfTyA2tIYR z%dlBuy5X$%jt?AGj|sM(>p8;iou0uZu&-P0KqBmt?i;s_Po1J2NPB^v1v(F4o6Jh! z4-fB9UPl$2Z+-avPUSAusMyk}R4b|%ecC)3dIu0OOGdZO^|z8k#3 zo#-nd+xzCvHVm*S{-|8uF;y+P)WpH1x_b%9B|2ORrSY#4(@RPQG+nDx^L6y~6M%_X z7`-_7q;{3>rsyT3?!GM5Bn30ry7c;e?92Byre}Flo2QG=9Lap@_Cc%Fv@*bLn#drp z4~>;O-1z#WF+E}{Vg&v6iDuFB($n^db72Jq!3J?uQTY>S1#_)4Y$`dbwKcA|13!*D z$qc?;M<=36rHeTlVa}KoX?1hJZz>57apeL7O&=XtZmF+iY5D!H4YDk*do_4t7VBJy zEGQ|taxN&>7Ex8LjgjK!zR4X*Jh|%VZNOOlkfasm)XumSchGeA;)j|SQ-9JAJbFNC z4#4l@2mn1X#|FJBel2z|UAZd4QP>>K-=!D15BO8d<}5v#PhAQoAn#E1i%B+4W%qS( zrn$%zeFhLvX;zSrbtR)x&c&r_+>_G;TTxX_9UYyid@+odiAghc8kasPI|t+DtNYbW zoxHN(&u zDlu@(V35jBz60(H{X{ORJZHg!HNpqM6v9zvnYj}y80$qBXk828^DS@1EPC>!lk3Ti&Xt9KHW(-ewsIPQG z9MQx*JlGRibA2TPgQSjos!nw(wHGV|IQMWr>v3QnRLnEdV!4EFsT3b~$gIevuS#5C zGjY@4fEME{MPN3eFQLa#soq~Nq@8%0u~e@ew`FHpPZ9GM;Fa9NZ|0m%vK?wyU%u@> zHQ&H-8AThhu}ADrnmu#i$*2J=*gbjR35_vOPDapzMfaa1&U++e!8VB*)ZoeVeWX~4YQ6TSi%<2h=q9X z6uus_irt}Bxih&r@6dxs+KV@&V*@L7Ev|kn>x<>=*A`M8tRK|O>owJoKHcDVXLM)w z2Y>y+i0EmdZlhibMn7h2ykRYF?OxFqXh0`NmoRV&BmB4oaBaj%OXg+HS1LR*@ia)T>qkqzcl!0&go?_&hE)UO}PpEF`}D9@+AFAh@c zpbs1C3@yonbm1&+<(xY9z{Kq+HuOYW35Kc(&Sy&u&bBjkAd)$Ijj2H`yH<@0!|Hf@g>fx{NwfBPf`;Zi6k_B+VNiEGCx(jrbYyNh zpJz5(y_kI~l$w87fFQ5Jwp}P|i}yR552j1$`rR2|1z9iA@j7$Y`jG&OA!-qACrZFM z(W|3EJD31wf4??*VN%LzuT5@XIw48)Vz~NL_ueEArUENru~E3X_qxUdxvyG{2l_C7 zgM)EUtyBo)s04Q?P4arRy_sboXr6p{;biL2;bzo&I8crpS%V40iDy%xQ@rF0em7S= z8UiL9LMqZdP75JNiI3<4O|<2Wc6R4+qe1RO#_CytLs>6TbrDh5<}S05o1zY6bTzi8 zE!^8nmzY&QhL_f4IcRgBbm8{s?Sv z6a_S~LgcH^bsFgmsRg&NulKIY-18+`tMmf&f8HEap>xTu zY^?=M5J`YmXVm0dJu0jNYL33D^5-9We6TJ)w&Gd~3Odb^^cS0E9XnZ19mV+9$hrw; znQeYWS}-J`>`sh7L(!>g>^cky;fRj6^B z+%nG?a8@u}+*#?=L|?>dUH8ND`~h-VG`ixwOOl%iUJo5O>FfTz(sR}Ar(@q?=HY;B zKG)M0DBLUkgk4e%qFY@bRsFqm!#adi&xh3lC2Ot!ToSSZECf1W!Q507Pl4fe{pPi1 zKr)mZPy3ADd<4VRMW#mnUVW^H&}6}ZPa#(k0|k570fmWhvZ_B<7!Gk7B*+WG2LL+> zXXk$TEkR_e~|)Z3})nh`?&uV@LhJ)Vp|bLD%jK1q^N%=4DW@gy0!n| zv6+9OWswYXc&OHOy0nPUdiFk>51WG05yexlb+2(mV8d8_jXHc>pWqQ(@tDKEGQKf2 zeU9I71Ck!3*zq&oQ@q`M1mci4R3DJ25X^6okAw60>dxbRTX(|gIvBfFL zLX#(DJ7?-75pGoFg~wYpw-gNyT0N%RUP(*@ysBQ5ztfeO1^rCQ(lByWuQ<1Pl(gLK zuWzdsmt1rd)JH1(q+VpH$GNqudsO5mN2ePgjdBKByM$DWm54z; z+pY)1yU2gfONF2AOFWPkN$6Z z+~O}k(9L9vEW9RIxBm%%JT`!kp@z=MML>;0a;mBk<;Q-pDJi!W=0Q9~w`>4Vb_u@u z$Dj%p9|{c%%WmyWo)DBMmzIN9E?vhm3!wxRwH>qbjCpRG<465B-$Zz#~JpMT$=y<&I;(DN| zyL&m0prA6>6+Gy7sw}IxxHugXQ%kN^HUt5z_|~mkk4XD_deod+ujxWidVfw_8}~J< zJD|ps5IP2wa$saui_u0@wouX|Pz(vNCHF4M`P+aFq*qpsboBJlR40Bd77K$V7~H@C zssUi3hR!Z7%GYK|lg@pnO3kxG%pkgYvB_32-DSCN{Lu_

9w^? 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 AcmMzZ literal 52322 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 diff --git a/icons/mob/underwear_old.dmi b/icons/mob/underwear_old.dmi new file mode 100644 index 0000000000000000000000000000000000000000..5e16a473ba8589b90a8d14a107c5e5eadbccc47d GIT binary patch literal 52536 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 t6M|eie^KJt8O_4~WFYOBjFuH< Date: Thu, 25 Apr 2019 23:48:12 -0400 Subject: [PATCH 11/83] Update jobs.dm --- code/modules/clothing/head/jobs.dm | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/code/modules/clothing/head/jobs.dm b/code/modules/clothing/head/jobs.dm index b1503f26fb..5d1648eda4 100644 --- a/code/modules/clothing/head/jobs.dm +++ b/code/modules/clothing/head/jobs.dm @@ -26,7 +26,7 @@ icon_state = "captain" item_state = "that" flags_inv = 0 - armor = list("melee" = 25, "bullet" = 15, "laser" = 25, "energy" = 10, "bomb" = 25, "bio" = 0, "rad" = 0, "fire" = 50, "acid" = 50) + armor = list("melee" = 40, "bullet" = 30, "laser" = 30, "energy" = 10, "bomb" = 25, "bio" = 0, "rad" = 0, "fire" = 50, "acid" = 50) strip_delay = 60 dog_fashion = /datum/dog_fashion/head/captain @@ -50,7 +50,7 @@ name = "head of personnel's cap" icon_state = "hopcap" desc = "The symbol of true bureaucratic micromanagement." - armor = list("melee" = 25, "bullet" = 15, "laser" = 25, "energy" = 10, "bomb" = 25, "bio" = 0, "rad" = 0, "fire" = 50, "acid" = 50) + armor = list("melee" = 30, "bullet" = 25, "laser" = 20, "energy" = 10, "bomb" = 25, "bio" = 0, "rad" = 0, "fire" = 50, "acid" = 50) dog_fashion = /datum/dog_fashion/head/hop /obj/item/clothing/head/hopcap/beret @@ -200,4 +200,4 @@ /obj/item/clothing/head/beret/qm name = "quartermaster's beret" desc = "This headwear shows off your Cargonian leadership" - icon_state = "qmberet" \ No newline at end of file + icon_state = "qmberet" From 70c5c474901031c50985a92e1d40061487450bbd Mon Sep 17 00:00:00 2001 From: Trilbyspaceclone <30435998+Trilbyspaceclone@users.noreply.github.com> Date: Thu, 25 Apr 2019 23:51:09 -0400 Subject: [PATCH 12/83] Lets not mistakenly nerf hop please? --- code/modules/clothing/head/jobs.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/clothing/head/jobs.dm b/code/modules/clothing/head/jobs.dm index 5d1648eda4..b6c5a5417a 100644 --- a/code/modules/clothing/head/jobs.dm +++ b/code/modules/clothing/head/jobs.dm @@ -50,7 +50,7 @@ name = "head of personnel's cap" icon_state = "hopcap" desc = "The symbol of true bureaucratic micromanagement." - armor = list("melee" = 30, "bullet" = 25, "laser" = 20, "energy" = 10, "bomb" = 25, "bio" = 0, "rad" = 0, "fire" = 50, "acid" = 50) + armor = list("melee" = 30, "bullet" = 25, "laser" = 25, "energy" = 10, "bomb" = 25, "bio" = 0, "rad" = 0, "fire" = 50, "acid" = 50) dog_fashion = /datum/dog_fashion/head/hop /obj/item/clothing/head/hopcap/beret From 2de9e2673ca1c90752b8825c29c7e4a87ccc8152 Mon Sep 17 00:00:00 2001 From: Trilbyspaceclone <30435998+Trilbyspaceclone@users.noreply.github.com> Date: Fri, 26 Apr 2019 00:42:25 -0400 Subject: [PATCH 13/83] Delete energy.dmi --- icons/obj/guns/energy.dmi | Bin 36151 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 icons/obj/guns/energy.dmi diff --git a/icons/obj/guns/energy.dmi b/icons/obj/guns/energy.dmi deleted file mode 100644 index e3ec4171adcf2a6978473506e6e815f6847dad03..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 36151 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 bp2SOwT Date: Fri, 26 Apr 2019 00:42:49 -0400 Subject: [PATCH 14/83] Add files via upload --- icons/obj/guns/energy.dmi | Bin 0 -> 37146 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 icons/obj/guns/energy.dmi diff --git a/icons/obj/guns/energy.dmi b/icons/obj/guns/energy.dmi new file mode 100644 index 0000000000000000000000000000000000000000..4dec4510085793611273b072d561193227868787 GIT binary patch literal 37146 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 Date: Fri, 26 Apr 2019 00:43:37 -0400 Subject: [PATCH 15/83] Update all_nodes.dm --- code/modules/research/techweb/all_nodes.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/research/techweb/all_nodes.dm b/code/modules/research/techweb/all_nodes.dm index 4d631691d0..317753543e 100644 --- a/code/modules/research/techweb/all_nodes.dm +++ b/code/modules/research/techweb/all_nodes.dm @@ -564,7 +564,7 @@ display_name = "Weapon Development Technology" description = "Our researchers have found new to weaponize just about everything now." prereq_ids = list("engineering") - design_ids = list("pin_testing", "tele_shield") + design_ids = list("pin_testing", "tele_shield", "lasercarbine") research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 7500) export_price = 5000 From fdbaafa5a95ed301319dae9d9ef495ebf04c5a7f Mon Sep 17 00:00:00 2001 From: Trilbyspaceclone <30435998+Trilbyspaceclone@users.noreply.github.com> Date: Fri, 26 Apr 2019 00:45:17 -0400 Subject: [PATCH 16/83] Update weapon_designs.dm --- .../research/designs/weapon_designs.dm | 278 ++++++++++-------- 1 file changed, 157 insertions(+), 121 deletions(-) diff --git a/code/modules/research/designs/weapon_designs.dm b/code/modules/research/designs/weapon_designs.dm index 9b42709fe2..4e31fe50a9 100644 --- a/code/modules/research/designs/weapon_designs.dm +++ b/code/modules/research/designs/weapon_designs.dm @@ -1,6 +1,10 @@ -///////////////////////////////////////// -/////////////////Weapons///////////////// -///////////////////////////////////////// +/////////////////////////////// +///////Weapons & Ammo////////// +/////////////////////////////// + +////////////// +//Ammo Boxes// +////////////// /datum/design/c38/sec id = "sec_38" @@ -13,6 +17,40 @@ id = "sec_38lethal" build_path = /obj/item/ammo_box/c38/lethal +////////////// +//WT550 Mags// +////////////// + +/datum/design/mag_oldsmg + name = "WT-550 Semi-Auto SMG Magazine (4.6x30mm)" + desc = "A 20 round magazine for the out of date security WT-550 Semi-Auto SMG." + id = "mag_oldsmg" + build_type = PROTOLATHE + materials = list(MAT_METAL = 4000) + build_path = /obj/item/ammo_box/magazine/wt550m9 + category = list("Ammo") + departmental_flags = DEPARTMENTAL_FLAG_SECURITY + +/datum/design/mag_oldsmg/ap_mag + name = "WT-550 Semi-Auto SMG Armour Piercing Magazine (4.6x30mm AP)" + desc = "A 20 round armour piercing magazine for the out of date security WT-550 Semi-Auto SMG." + id = "mag_oldsmg_ap" + materials = list(MAT_METAL = 6000, MAT_SILVER = 600) + build_path = /obj/item/ammo_box/magazine/wt550m9/wtap + departmental_flags = DEPARTMENTAL_FLAG_SECURITY + +/datum/design/mag_oldsmg/ic_mag + name = "WT-550 Semi-Auto SMG Incendiary Magazine (4.6x30mm IC)" + desc = "A 20 round armour piercing magazine for the out of date security WT-550 Semi-Auto SMG." + id = "mag_oldsmg_ic" + materials = list(MAT_METAL = 6000, MAT_SILVER = 600, MAT_GLASS = 1000) + build_path = /obj/item/ammo_box/magazine/wt550m9/wtic + departmental_flags = DEPARTMENTAL_FLAG_SECURITY + +////////////// +//Ammo Shells/ +////////////// + /datum/design/rubbershot/sec id = "sec_rshot" build_type = PROTOLATHE @@ -43,6 +81,40 @@ category = list("Ammo") departmental_flags = DEPARTMENTAL_FLAG_SECURITY +/datum/design/stunshell + name = "Stun Shell" + desc = "A stunning shell for a shotgun." + id = "stunshell" + build_type = PROTOLATHE + materials = list(MAT_METAL = 200) + build_path = /obj/item/ammo_casing/shotgun/stunslug + category = list("Ammo") + departmental_flags = DEPARTMENTAL_FLAG_SECURITY + +/datum/design/techshell + name = "Unloaded Technological Shotshell" + desc = "A high-tech shotgun shell which can be loaded with materials to produce unique effects." + id = "techshotshell" + build_type = PROTOLATHE + materials = list(MAT_METAL = 1000, MAT_GLASS = 200) + build_path = /obj/item/ammo_casing/shotgun/techshell + category = list("Ammo") + departmental_flags = DEPARTMENTAL_FLAG_SECURITY | DEPARTMENTAL_FLAG_SCIENCE + +/datum/design/cryostatis_shotgun_dart + name = "Cryostasis Shotgun Dart" + desc = "A shotgun dart designed with similar internals to that of a cryostatis beaker, allowing reagents to not react when inside." + id = "shotgundartcryostatis" + build_type = PROTOLATHE + materials = list(MAT_METAL = 3500) + build_path = /obj/item/ammo_casing/shotgun/dart/noreact + category = list("Ammo") + departmental_flags = DEPARTMENTAL_FLAG_MEDICAL + +////////////// +//Firing Pins/ +////////////// + /datum/design/pin_testing name = "Test-Range Firing Pin" desc = "This safety firing pin allows firearms to be operated within proximity to a firing range." @@ -63,6 +135,20 @@ category = list("Firing Pins") departmental_flags = DEPARTMENTAL_FLAG_SECURITY +////////////// +//Guns//////// +////////////// + +/datum/design/lasercarbine + name = "Laser Carbine" + desc = "Beefed up version of a standard laser gun." + id = "lasercarbine" + build_type = PROTOLATHE + materials = list(MAT_METAL = 15000, MAT_GLASS = 10000, MAT_GOLD = 2500, MAT_SILVER = 2500) + build_path = /obj/item/gun/energy/laser/carbine + category = list("Weapons") + departmental_flags = DEPARTMENTAL_FLAG_SECURITY + /datum/design/stunrevolver name = "Tesla Revolver" desc = "A high-tech revolver that fires internal, reusable shock cartridges in a revolving cylinder. The cartridges can be recharged using conventional rechargers." @@ -83,16 +169,6 @@ category = list("Weapons") departmental_flags = DEPARTMENTAL_FLAG_SECURITY -/datum/design/tele_shield - name = "Telescopic Riot Shield" - desc = "An advanced riot shield made of lightweight materials that collapses for easy storage." - id = "tele_shield" - build_type = PROTOLATHE - materials = list(MAT_METAL = 4000, MAT_GLASS = 4000, MAT_SILVER = 300, MAT_TITANIUM = 200) - build_path = /obj/item/shield/riot/tele - category = list("Weapons") - departmental_flags = DEPARTMENTAL_FLAG_SECURITY - /datum/design/beamrifle name = "Beam Marksman Rifle" desc = "A powerful long ranged anti-material rifle that fires charged particle beams to obliterate targets." @@ -122,11 +198,11 @@ materials = list(MAT_METAL = 5000, MAT_GLASS = 1000) build_path = /obj/item/gun/syringe/rapidsyringe category = list("Weapons") - departmental_flags = DEPARTMENTAL_FLAG_MEDICAL //uwu + departmental_flags = DEPARTMENTAL_FLAG_MEDICAL /datum/design/temp_gun name = "Temperature Gun" - desc = "A gun that shoots temperature bullet energythings to change temperature."//Change it if you want + desc = "A gun that shoots temperature beam like projectiles to change temperature." id = "temp_gun" build_type = PROTOLATHE materials = list(MAT_METAL = 5000, MAT_GLASS = 500, MAT_SILVER = 3000) @@ -145,46 +221,6 @@ category = list("Weapons") departmental_flags = DEPARTMENTAL_FLAG_SERVICE -/datum/design/large_grenade - name = "Large Grenade" - desc = "A grenade that affects a larger area and use larger containers." - id = "large_Grenade" - build_type = PROTOLATHE - materials = list(MAT_METAL = 3000) - build_path = /obj/item/grenade/chem_grenade/large - category = list("Weapons") - departmental_flags = DEPARTMENTAL_FLAG_SECURITY | DEPARTMENTAL_FLAG_MEDICAL | DEPARTMENTAL_FLAG_SCIENCE //Citadel edit added to science - -/datum/design/pyro_grenade - name = "Pyro Grenade" - desc = "An advanced grenade that is able to self ignite its mixture." - id = "pyro_Grenade" - build_type = PROTOLATHE - materials = list(MAT_METAL = 2000, MAT_PLASMA = 500) - build_path = /obj/item/grenade/chem_grenade/pyro - category = list("Weapons") - departmental_flags = DEPARTMENTAL_FLAG_SECURITY | DEPARTMENTAL_FLAG_MEDICAL - -/datum/design/cryo_grenade - name = "Cryo Grenade" - desc = "An advanced grenade that rapidly cools its contents upon detonation." - id = "cryo_Grenade" - build_type = PROTOLATHE - materials = list(MAT_METAL = 2000, MAT_SILVER = 500) - build_path = /obj/item/grenade/chem_grenade/cryo - category = list("Weapons") - departmental_flags = DEPARTMENTAL_FLAG_SECURITY | DEPARTMENTAL_FLAG_MEDICAL - -/datum/design/adv_grenade - name = "Advanced Release Grenade" - desc = "An advanced grenade that can be detonated several times, best used with a repeating igniter." - id = "adv_Grenade" - build_type = PROTOLATHE - materials = list(MAT_METAL = 3000, MAT_GLASS = 500) - build_path = /obj/item/grenade/chem_grenade/adv_release - category = list("Weapons") - departmental_flags = DEPARTMENTAL_FLAG_SECURITY | DEPARTMENTAL_FLAG_MEDICAL - /datum/design/xray name = "X-ray Laser Gun" desc = "Not quite as menacing as it sounds" @@ -215,64 +251,6 @@ category = list("Weapons") departmental_flags = DEPARTMENTAL_FLAG_SCIENCE -//WT550 Mags - -/datum/design/mag_oldsmg - name = "WT-550 Semi-Auto SMG Magazine (4.6x30mm)" - desc = "A 20 round magazine for the out of date security WT-550 Semi-Auto SMG." - id = "mag_oldsmg" - build_type = PROTOLATHE - materials = list(MAT_METAL = 4000) - build_path = /obj/item/ammo_box/magazine/wt550m9 - category = list("Ammo") - departmental_flags = DEPARTMENTAL_FLAG_SECURITY - -/datum/design/mag_oldsmg/ap_mag - name = "WT-550 Semi-Auto SMG Armour Piercing Magazine (4.6x30mm AP)" - desc = "A 20 round armour piercing magazine for the out of date security WT-550 Semi-Auto SMG." - id = "mag_oldsmg_ap" - materials = list(MAT_METAL = 6000, MAT_SILVER = 600) - build_path = /obj/item/ammo_box/magazine/wt550m9/wtap - departmental_flags = DEPARTMENTAL_FLAG_SECURITY - -/datum/design/mag_oldsmg/ic_mag - name = "WT-550 Semi-Auto SMG Incendiary Magazine (4.6x30mm IC)" - desc = "A 20 round armour piercing magazine for the out of date security WT-550 Semi-Auto SMG." - id = "mag_oldsmg_ic" - materials = list(MAT_METAL = 6000, MAT_SILVER = 600, MAT_GLASS = 1000) - build_path = /obj/item/ammo_box/magazine/wt550m9/wtic - departmental_flags = DEPARTMENTAL_FLAG_SECURITY - -/datum/design/stunshell - name = "Stun Shell" - desc = "A stunning shell for a shotgun." - id = "stunshell" - build_type = PROTOLATHE - materials = list(MAT_METAL = 200) - build_path = /obj/item/ammo_casing/shotgun/stunslug - category = list("Ammo") - departmental_flags = DEPARTMENTAL_FLAG_SECURITY - -/datum/design/techshell - name = "Unloaded Technological Shotshell" - desc = "A high-tech shotgun shell which can be loaded with materials to produce unique effects." - id = "techshotshell" - build_type = PROTOLATHE - materials = list(MAT_METAL = 1000, MAT_GLASS = 200) - build_path = /obj/item/ammo_casing/shotgun/techshell - category = list("Ammo") - departmental_flags = DEPARTMENTAL_FLAG_SECURITY | DEPARTMENTAL_FLAG_SCIENCE - -/datum/design/suppressor - name = "Universal Suppressor" - desc = "A reverse-engineered universal suppressor that fits on most small arms with threaded barrels." - id = "suppressor" - build_type = PROTOLATHE - materials = list(MAT_METAL = 2000, MAT_SILVER = 500) - build_path = /obj/item/suppressor - category = list("Weapons") - departmental_flags = DEPARTMENTAL_FLAG_SECURITY - /datum/design/gravitygun name = "One-point Bluespace-gravitational Manipulator" desc = "A multi-mode device that blasts one-point bluespace-gravitational bolts that locally distort gravity." @@ -293,12 +271,70 @@ category = list("Weapons") departmental_flags = DEPARTMENTAL_FLAG_SECURITY -/datum/design/cryostatis_shotgun_dart - name = "Cryostasis Shotgun Dart" - desc = "A shotgun dart designed with similar internals to that of a cryostatis beaker, allowing reagents to not react when inside." - id = "shotgundartcryostatis" +/////////// +//Grenades/ +/////////// + +/datum/design/large_grenade + name = "Large Grenade" + desc = "A grenade that affects a larger area and use larger containers." + id = "large_Grenade" build_type = PROTOLATHE - materials = list(MAT_METAL = 3500) - build_path = /obj/item/ammo_casing/shotgun/dart/noreact - category = list("Ammo") - departmental_flags = DEPARTMENTAL_FLAG_MEDICAL + materials = list(MAT_METAL = 3000) + build_path = /obj/item/grenade/chem_grenade/large + category = list("Weapons") + departmental_flags = DEPARTMENTAL_FLAG_SECURITY | DEPARTMENTAL_FLAG_MEDICAL | DEPARTMENTAL_FLAG_SCIENCE + +/datum/design/pyro_grenade + name = "Pyro Grenade" + desc = "An advanced grenade that is able to self ignite its mixture." + id = "pyro_Grenade" + build_type = PROTOLATHE + materials = list(MAT_METAL = 2000, MAT_PLASMA = 500) + build_path = /obj/item/grenade/chem_grenade/pyro + category = list("Weapons") + departmental_flags = DEPARTMENTAL_FLAG_SECURITY | DEPARTMENTAL_FLAG_MEDICAL + +/datum/design/cryo_grenade + name = "Cryo Grenade" + desc = "An advanced grenade that rapidly cools its contents upon detonation." + id = "cryo_Grenade" + build_type = PROTOLATHE + materials = list(MAT_METAL = 2000, MAT_SILVER = 500) + build_path = /obj/item/grenade/chem_grenade/cryo + category = list("Weapons") + departmental_flags = DEPARTMENTAL_FLAG_SECURITY | DEPARTMENTAL_FLAG_MEDICAL + +/datum/design/adv_grenade + name = "Advanced Release Grenade" + desc = "An advanced grenade that can be detonated several times, best used with a repeating igniter." + id = "adv_Grenade" + build_type = PROTOLATHE + materials = list(MAT_METAL = 3000, MAT_GLASS = 500) + build_path = /obj/item/grenade/chem_grenade/adv_release + category = list("Weapons") + departmental_flags = DEPARTMENTAL_FLAG_SECURITY | DEPARTMENTAL_FLAG_MEDICAL + +////////// +//MISC//// +////////// + +/datum/design/tele_shield + name = "Telescopic Riot Shield" + desc = "An advanced riot shield made of lightweight materials that collapses for easy storage." + id = "tele_shield" + build_type = PROTOLATHE + materials = list(MAT_METAL = 4000, MAT_GLASS = 4000, MAT_SILVER = 300, MAT_TITANIUM = 200) + build_path = /obj/item/shield/riot/tele + category = list("Weapons") + departmental_flags = DEPARTMENTAL_FLAG_SECURITY + +/datum/design/suppressor + name = "Universal Suppressor" + desc = "A reverse-engineered universal suppressor that fits on most small arms with threaded barrels." + id = "suppressor" + build_type = PROTOLATHE + materials = list(MAT_METAL = 2000, MAT_SILVER = 500) + build_path = /obj/item/suppressor + category = list("Weapons") + departmental_flags = DEPARTMENTAL_FLAG_SECURITY From 997df627243a5582542527b6cab54904c222c9b0 Mon Sep 17 00:00:00 2001 From: Trilbyspaceclone <30435998+Trilbyspaceclone@users.noreply.github.com> Date: Fri, 26 Apr 2019 00:46:09 -0400 Subject: [PATCH 17/83] Update cell.dm --- code/modules/power/cell.dm | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/code/modules/power/cell.dm b/code/modules/power/cell.dm index e43db529b8..9fcdf091a1 100644 --- a/code/modules/power/cell.dm +++ b/code/modules/power/cell.dm @@ -200,6 +200,10 @@ charge = 0 update_icon() +/obj/item/stock_parts/cell/lascarbine + name = "laser carbine power supply" + maxcharge = 2500 + /obj/item/stock_parts/cell/pulse //200 pulse shots name = "pulse rifle power cell" maxcharge = 40000 From b4bdc9bc1d23f38ad36c28d8a2a7f27bb1d9d619 Mon Sep 17 00:00:00 2001 From: Trilbyspaceclone <30435998+Trilbyspaceclone@users.noreply.github.com> Date: Fri, 26 Apr 2019 00:47:21 -0400 Subject: [PATCH 18/83] Update laser.dm --- code/modules/projectiles/guns/energy/laser.dm | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/code/modules/projectiles/guns/energy/laser.dm b/code/modules/projectiles/guns/energy/laser.dm index 066b652984..4e97d0a9b3 100644 --- a/code/modules/projectiles/guns/energy/laser.dm +++ b/code/modules/projectiles/guns/energy/laser.dm @@ -39,6 +39,17 @@ selfcharge = EGUN_SELFCHARGE resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | ACID_PROOF +/obj/item/gun/energy/laser/carbine + name = "laser carbine" + desc = "A ruggedized laser carbine featuring much higher capacity and improved handling when compared to a normal laser gun." + icon_state = "lasernew" + item_state = "laser" + force = 10 + throwforce = 10 + ammo_type = list(/obj/item/ammo_casing/energy/lasergun) + cell_type = /obj/item/stock_parts/cell/lascarbine + resistance_flags = FIRE_PROOF | ACID_PROOF + /obj/item/gun/energy/laser/captain/scattershot name = "scatter shot laser rifle" icon_state = "lasercannon" From 41a0b802e8fdc94f8880fb06de2fa2e4bf909513 Mon Sep 17 00:00:00 2001 From: Useroth Date: Fri, 26 Apr 2019 17:01:30 +0200 Subject: [PATCH 19/83] Added myself to the admin list. Duh. --- config/admins.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/admins.txt b/config/admins.txt index 27a2178e2c..4a2b4ac8da 100644 --- a/config/admins.txt +++ b/config/admins.txt @@ -8,4 +8,4 @@ # NOTE: syntax was changed to allow hyphenation of ranknames, since spaces are stripped. # ############################################################################################### -yourckeygoeshere = Host +Useroth = Host From 5c88d7d8df890d016bbe420436b864504b7c0bb4 Mon Sep 17 00:00:00 2001 From: Trilbyspaceclone <30435998+Trilbyspaceclone@users.noreply.github.com> Date: Fri, 26 Apr 2019 20:32:55 -0400 Subject: [PATCH 20/83] Delete projectile.dmi --- icons/obj/guns/projectile.dmi | Bin 35103 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 icons/obj/guns/projectile.dmi diff --git a/icons/obj/guns/projectile.dmi b/icons/obj/guns/projectile.dmi deleted file mode 100644 index 0ee0e3d2d1f3f5ba589bb498fd320dc5872738ef..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 35103 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 Date: Fri, 26 Apr 2019 20:33:49 -0400 Subject: [PATCH 21/83] Add files via upload --- icons/obj/guns/projectile.dmi | Bin 0 -> 35700 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 icons/obj/guns/projectile.dmi diff --git a/icons/obj/guns/projectile.dmi b/icons/obj/guns/projectile.dmi new file mode 100644 index 0000000000000000000000000000000000000000..e4a39903b338e2d77286bd06b9e3be7cec729306 GIT binary patch literal 35700 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 z z1=HOu9NlMqsd@_npM{uC;dH8j=uxdg7cX}|E^d$r_&7S0$xx;j53Tz)+>C(ek2CH> z&A^J9tluJ91?GTK&;{7KPyiZ6N)K=+X$FpThz@;}e^ro+K0iMXP$qwBDHCbu9&{RH zx5MObgNC$T?y&yl^T z!cIlSDh{DjlBPRM0{jTJ?>xm`C$qL<&?aKYj}B4V{G@M3_q(w}K^6anyg`if=Nhe* z8#0C^GLIZ%;P)XmF1|7~n(CCeP{QRa;u+c+!kXUGh&5Hy;b{!KJ;4i+vbs%5RxK?B!S)FtFMZd#4A6Nm7Wc; z670bFw$!ptRVlc|-hOavvm{>g#7z98w&RW5qsS=ADL1BU07f|BhifBk0kWHOgK@>0 z;vfe+Mq@vzjatdqMzsi@@TzZ+6yVZb9=`kB=p1IAK~KSVyNV4#tpBK5K|puOvuG8eEQ+D zJs)j!u`n|W`m_7I54z}v2&@%ts2#_iH|mKbVIP6^*aIiswL$Bx@H&K7G+0riD>@v! z>=k^Wv}X47>~b7!>FMMjo3g#ytf*w-jx%z$YDI9rqS*$@KU1!P)5iw=^nHh=nhDfHdRQ z<#uGQPI?jUm*}smgTqA{D%A0M*yoe5zY4e##<^3+|8O{o>Te#;u^uTOgYo|b*TeWX zP0aQr+;P-uT=z06pW}}?YkE7O0EH3^euN=sVN?0yFF0!P(zB4@|HW?9KKB)k_C33- zRX3fWLqEiIz_d4Xd`?Y%GrHj3*BhBL`TMNN1$QjzWGD*S1k+?--^Kgl`mGq#+0ydK zB)d}^of#8T&<4zfLC}@qH!=17)Yz+kU)*idLzI)cdHF9MY_5g4YLuyO4bgHCNa zmXwx)-lS%-7=s@v1Nps&=IsB0S!5URHnU?+K7wk+U#%Vc20Mn*SfeH^wo|oI2JXU7 zhKTP9qMvIljI6BW?yin(X4JE}4fGXqadNHioNk(G&Gc@5vrG8mY<>W`i;6!aUXQ40Ez{?1z>Ok9J zhs{vk2(9hl=x869ia>h0=FEox+$TO^5rBk=nwGxHJ5{iH$5tgp;iG(ar#tRtc=C>! zS!%m9Np=$V3~76dORvqH1VRgfa2oA zhFcafF|p`h1d$)|1r2&lX*e@dF&g08e6u+bGHYvHjv5ZE=glV6^dQSHmjgB?@r8Q~ zfLR*L_C8(kRUd$`7OvCGa(8zwI@tU6-Mi>rX<{OxNT01$q~rDIa{iZ3on2ghO>A#( z8@apl{4opc@JqTQ-Xd{D(Z=8PID!BWRjk6Y#-1V z5)^>esA#dcxQL{g^U3|>^M{Q##wic!j0IMR=BDz3i~ztxbIej2RA!62NOEv6bHbEciSpbj-AAg;D_kuT97>rUU!ABZ9@`{ z+ZZWvo|NHC%;x(}1!99w$#u*8K*$WC-Q5~a!GP%C?b7M#g__KK7s`mc0Vz9Tq?=s1 zUK=@W42Ju?OUvnW#lVkq3M7FB8&cc?1ds~+67mutpGQV}t6GBZ$4unv;yN5x|8mH( z*3jLZ$hKY!%k{Cgv9P!(KEm|c=WsWeQv}Yhv_girmk6Q@Q;i=!86;qYsZqTY z7Q8Pyxx*Y~r>tz=x!9ewZ}g53=kPv3IB?~6Jz9Dz)M>xojnQ(w9(w&72ZDYbzKR@3 zngMsmS;KVqvt#?RczBgZ;fm4gox@|=HM@AWsBU9ZcHnN+7ut$g4;Szw z(R}NVAqh-})$99gc<=tUj)*V3D=aHRIZE;xmeSJFnk%nYo>~p9Kk5HLH(yle+H&Vu zV~z-Hee}C9nkiTX3whWz=ZpMFQ+Hrh37iD*Z|KQa=5M_{a$}}7A$TU&*ZS|@qgZok zbr0U%c{c><1aMIDqNO6jLphGi4HCv?W>8C}-=VhE)p5;7R|I21i%Q$vMzs(DX}QNa zs1v9p%caQh?I+M@&|wYvauHKe(Zgn?)0UHi#0GfX}8DC9A z$Yp5yA!iwY6IW?9`xq|``hJiBe%l!kaCaO@$vCPX!|pEof@^3 z?hieE)Wonu>S^zh(kAL|C^cYNnqrz$Xt?#h{RswY>IrN>VtP73{d-StO)%$Fv$1a^ zKa={`rl>82Ke|%FApRKQPmpETnBjb+#e?$kBRPXFf2`+#C>5ujTgDV5QP+EF(Bz*4 zYzP9?8#1WZ0dR0J#)+hbJ+ooFugjEb40-9fWJ z0!~~OaO>L3+HVW1jhe90wiAJkQ3U7%Y=50$EREmo`*OUoZ}%a3ID(|#!dA||UzRUK zv8n|+m#+J76wv#;FH7|BhZS~{1Opn#G70q2xop)(ZC6?_fMR6ve?L1J#-Bddac!;8 zy!_O!NibxQ^xwr}MZ!1#x25I(z>WVoQhD7C?33Q z%&g0rEA*Bxl+T11(@lOtZw^*b`*SUiF8!M(c&~gcbYYXuXF{(KwtkF|{Qcv>xD*Ax zTg%@SuXRrk4_-cgex#W$B^@2c+ohEiayIm6=+#B7rtJiHkD8v|4B|^tQoLCgJ~A%r zIRMx>I_d?ZA<|5a$@$hW&nM?ED1%twAcZZOt$ zB{>w11chC{6_<`OFd+4pt6LGD_5&|uAW)ab+=tIQKMz*dP=Lgbw2#)!7D9)Bg8Y2r z5J7TOFgw zI*G8f@K4`!?v$^OjBim+PiB_$;Ca}Mq(fs)hLHzqf1;i7uQ&Azup;GS8NEeV zz1Gri^l$w+U2yi?0MtMPFykzdGvSTzIZ5mB!yfGMKGfM(Uw++-hSamj)m5aB@zk#XS$p3Sil#Q_~BbT|O+Oh(myx1vwR$k$L@X;jHKg z0_S27nH_=i;n;HD37ndZ>4*j3o;^qMgxbeu-wMCB%?)(mMLA(wq*znQvNb8#!p!VD zOUUt~jWNDM|MYEeF^OUC-T(KUoB#Fp`lspB-Odd?B^RjS|Cf!+nPum$*B_(#qH48VWceE?=$hc#J((rX6dH2zw<-6Q<>X( zczz)p4A#lnkU~s+UhU%{KTG|(f;iFSyTsT&Fz{g*2_`1e6=R7ut!zSC8l!AXS{hl*O<~#S@3?nMj!;T) zuYMN(MBs@jy$?f7TzZj;H1bVebyacn9X&k)z}#}rrR%wl;jkJ^;rm9GbeETUSPBdv zRu&c=T3U6P8|)cMA3vWy+yZ`dI25Qv$h$YiB3 zwKev%L>58~TtF%@MIU2=?5Vd|Zy(YK$Q7Ra*7WoFA(Slu0IYMWx42iiFLif+IS?4% z0Zpjf+p`2i%*JUSMeraeVuFmld~Juc+2L#8Yb0zW!3gBK4mnx?d{8r)CCv|-wz z7qvyBGO@lbh4YA1_tzJbfWEc$$ED24-AaQlR6xYdjhoAEz4=oBHQh0ZVS{2gi% zlae}yhOmGPgykj|Obrc<{{DV+o|!{eG;3K|StML@#g1Wsm1_rnyrXuOH3{ zlxJ2tyA&=ve(%uuVDHj3Jn~T$}N+>DbxvVq#+YhlY^X*z>?nq7k^Xx)t2kf6X{x+Fcpy z7kO@r1flP>+uTnPhfG(^f^!J5vBRtR?SX0=rrB?EFf~m_vfb-&()4c^%eFXDwmb{WQee}OM`#hzT5$2*kI}CK!EIMb>}H*oAj=>C#ugVtmzK1v z1}8R7zmTDEBz*+DQR!{wiNhruw3+_=`SXT+|I)L^N4G+4iM;5BMoW0XZCCK5or^V+ zDBOd`Ucaq@IezxJ%<-Cd6d00<>5e2upmhZ}9s^MFm>j8y4*jvv#U)#u>~S0}R9RTnZUF+6Nwl3C<15+{BaSs1 zU|m=y`5zGRFOHUBF7eXV7mE06nAzO+#mQ)}m1|G|Sb?#cqxrd6&k8xbx^m@7lb_Fd z8YSfV?5WT%3DcKbCpdHGGfB?Gvir=j&<=eO2t@dMXy~JfL|CXV@bPxQikcrLdy7ZsmfUyrtmUK{dC^Aiy=_rX zy!T}%t#tIZuP(F0h;3I0U?D_E6l5+NJL5(l3UJ!nYE!!m$4-<+hn1~S|>IcxK zDUo14lvPw!RRJ65X2w-SIzM4qx)G}C>fh>S>I%=+D7=BSwGJe)&yz@DXjzKv+b@6U zX8n$mIgAp+?O+-x6(#k7)?g(=wyPZk_L!OS`AvTwD!<% z9=*N`lebtD>)dqwMLsZ_>|0#3!5m@KRTopdJBlhcp%wy$x7QaoOyCP5!5ugd$C=$& zp{;=woTCmNp76u%LB) zPq=(Ofs(cd3pqfT|+rN0bf)z>)X$U9E*ru;K?YXqKl|(P=j^x*O(?)+I*s`dY!G^ z&U=GdouiF5-F#|>4%9{wFgXxs4sudGeEdpMSf=n;b=O|!YX1*X{#x{(Yvf2n!<=h> zer*)DQfk@wfCDr%cwUcCyo~r+D+APAsV6F8g23AlVSH??f4y-xqQ1kPf4A@6NxB6k zKOWCWN)<#Pz?D99ZQ z1HekBC@;yx#AMH9`AGS<^Z1Wt9+Q7dR8mMt9WEMHBiz~g&v=76P~_@`&(+Ze0xn{*m#8TF8n$IuC7$l(xM$7L2-W`K?U=Dt~&FN z<|JhC+9UTd7oWeLUIuG6bvBE%OdIe1M)&f~+d~#3YTr*E~d$7uOCbhsfQS7^yn=|%bZvFA>_YEHBwD|=E4s~}7q4{)v7t_=A>I^%FhwuNDNI+c* z3&}a+#O4-BH^CSv>j==hx3p`24zRIRcW?fnBNqp`5E~m?WP19KmKK3ZEvN0fmA?<7 zlQ0fw&Hc6>v(7qSgerWLKqbAJTtHT&Z;p;V|C6`&9>uWbDR!&a;q}`OU%|H61 zi^r(bY01eVw&kFC*$8L(?i@%l5yB5VD<0cq^QWkRwjmt%^5_m=?04)*%x8plP5^@b{%> zVE*n5)C|bWU&9__Mh!92v96YY;DSpML zGHM-l_#@q(wj(Vf#s}j-IQVH%^G$pZhRn#Pr>D*B?1DSi2D^(@O2(F#sne}@C)iSj zA>?!l^n?s`X8hd73-P@HbsGI;c{8p&OlQCOh~v1zAVD@G}Y6tv8atFDgc6^E_0v5k!lSj>43fk4L2UwAZkyZAz3 zR36Fk2&yuf zr<`G(=`fieZr>=0ihlMcrP4Xt_ar`;N<)Y`sVPkdn&f| z*L<-$&|QHLR;c;~J3AZDZHxG8>cg%#x;}{Yy@g~ycrUy{q@s&<$nwNf_j$HPbdIte zJlNqLIkUN=4x)QnT3VJZGQ7J8uQ^oj{nv^KosoWsv8#8V2pQbX{lNh^(=wt&JODW6O6WDt8>jk!BO#0^{GFCM&1k`F`Dm- z0TJ(b`4W&+8s{5S4J}7$x44Tsn}GaaNgD)6IDBNf056z*%p~sS!|XxwGrw(q(MYhy z-YT&p)ipJx+_la#Klk?XD*Ub~w0qKcevDY05U0V3nHu9^d0=O~0 zd%Ne7$T$xV+70&dEGdi(j6PN7Sl~|bY$Znx)U{4LNx5+wI%d&l>JJtlgjwX|fN-x; z*m?`ZxaybPX*=_?L0f9x%ZlJFCW}@M4~Ggsf5tevBh&b0-ac4ad!9w{6dsQbe3X+n zbhLZ|&V7&=P!s1h#>;cem~}Iy)?8W?iBlA{X>1lOH)@uGn({UUE4Sk^1zZ22440Ax z_piscCQWWdI`m?mBX6xjLR>s&&T{?q6wI=S8Q2vUVLB{7%QH}~VY=eA->;FQ{|k%K ze`HbT;gfH%InExLN4MJSi4!a-vltddWfL+~fRGyiT`*Chr;RR*pnl3s(SLb~4&`Z%5W{NPPFi*|r|dw8onP@?KprWS?1G_6@O-?Rin$ zzzuHSE;36IF=}A_b7~pVw*u&Wj@B83*D5D6A-NfyuqYx?adB#PwLvXm=!PMrEkFKp z@*3khlM14-112gS_Y*(EAZOcEzl}r#Tge}~$NQnv`z81ZSwm7b_nCSl>y7@?_8W@l za%`8=O!QLI-Yn=kVrp}g{mmbno0>Xv!+zK^#z~Ng!-@(h7*vyn3ARQqMJoP&k&}f* zy%Iuw#Yy42o}Z64*Aa+@45Bq~$t!KOuoXr#hx{%~zV0kQnD(SFa|_ETp42qPnn;uP z%Da}lNrG7>a892^ecy3(9)h6e$6wTjT?ocktxUy0U-oc!ocR9=ZJ_)Sr=mg}eU(#V zxj%S5K_{&@m3knO`VmAd$(A?L@29vZz<$J#c6&rybJT@T?oB&Y3@UG#EA3Gh=GF-OS`Vj(Wik*5h zbIz-+2-_d?38MJMnnl1bdAV#YjcpS!cZrF|Hg^C(_WMV`uhk2JcXH-MbAA@)i2!VD zY^>Mq?#hIP|Da~1CMz==#rQQt^$GJ4*M9n597jL*7y6ftmX7XGN>b5BeRMlN3JDq& zxX=I5COXsAhdX_-GTA)ZYKjG(OXFMSQ9QBsk6}{1`bvs z(uL}#MhZeV$Y4+e03)M~6VJZxpNw?!l!DYqNl8il0|SUa?4tGhL+Z;kbNR<2-Oy0y zDC7a+ox#rD<7_rsMUjK| zKYdm*G<5uQGd}r zk3WAY47}hrb_2-VwdZ&xzCK-=Tc=^a8@C^x-{0T6!?&9qWcBU61g|?YypgD>nXs_1 zPz9ldg}6Xuf*CTfbBX%r&(28~1ojGO2h+G|{^-utv2bo;+s#l{^}r@ra|D2v`_TH& z`A~CWaPW~Q%f~(mHbuWgvx?U*KV*6s6W?|MW=VC(X0RaK)c+qNJ3 zmi|>*0<;Tk!@c$0+6T1?U=5ZP&=)#Cf4qDIuYluI94v*P>3KgphA*$usASZb$}y%S zrgmRkaKx)EtnER+yU5BqbZv^6YVwV^th9%%pdTj^&d)zM@0vNL9Jaa$ zVDVKLnLD89`dlu8LSwHq`Cw3=>fQP_Sn&MLZTxzyh84vho0JOx2pBcLybmP+sTNpk z7ActYXAOEKnmBtmMUCWs`X0;Y1mQ?ol;Xq%r(EOn;6NFHyMR$YlsCMi!ywf~F1z>* zQvH_{5KST>+3&8KoVL`ul*~`$ZSpu>VJ&EGq*x?9@%VF%<&IS#@ft;?+FIM;})Ron2d_J+MAiqFG z4t3fd`8}y1jKabllsmc0A}Gj6nvh&^m&)(#y+7 zM7rg=%MAZfa3vd1Dt9E7MXlw#3Z0wNzC3T^@UE%gv(req0Pa4qUzw=L+T7fjaG`_gXNj6`d4=lD?X3T0#pjAUZN2cb+YPYG z0B&3_lMN$8Aay@2$mxQB+~bNS2?NXBHb}_h$)5s$QS*)$@{-p&QYCFWHKX7Af?z^y z1(KB$rtcHHu#$*FqwF{g&5e;m=M1eEruwfQ7MZia_+m1+Y`s`lR$5i%Uz^I8G8V7) z?vKCpQ&BBHFyXFhDY4&n;4#d%yqZJVKd>xUAYR!M_!n(= zVG8hYijvR1<&d4xskd+^aiRMJ%&E7+vyckvn@t?4%A_C1Y00=NT{R7!cRHxR$ha0J zlkkJ&n`MH~2ROCB;8{c~rdwZuyQ>wS?#=Y;hs7@c(YbJE9nqq3z)18NOoy6?gjiHm zmt0bCC09^9;fV)jv{XOAT3hiF;++% zyXyyhq&(uf>9#y#soSf7Rv9z1>W`GAXVuRqd3`dM6k2WQ#}AgDxKVgbya*+q5Er>hF=YDWt}(~+E&G0r0mGZl--F96CM+-h zY-SbQ@{RDKMjHwgMWRtPjy>uipRpsRJkNzxrS~0@;rA`?G2FcAAMC0ejO#CD`UVdE zE2tt7%|+&nM|8D{5}?#MAeXlsq<>sioW~>so{0PZCTjQ}N=@B1a*qN9yF#@?skWcx z3b;id!2@@c-z3&44(RFW9WM7&Kw%{nV2SX&9{aIp3hEy2j*VqY8tgPSt3B*cZuZU0 z%&b0SP!f<_gr0QU_!sr(s>gsbgx=oX$c&7L!2~AETm{^>@?XQVx|n9BHxcJzr%5kXrn9n<6s5=X$!T31(>x>9Wb3cJ7Ztlq4Qe2f<)^wtO%^R?$KPAPBqZA7TUr|Y3vT>&o~d7egQ z`>MKd+MlohnRTwzXO4bt_rnI-MTI8{O-KN_x-J?+1!l_jxROFU7n=yxCJ_-4`kd=M z>@suLg-@rS!^p@8@caGSV5#|1cLo%8ZP{_5wO)T#f=_NxY=A$(Q;^GPHN0$vTqc6h zB%fVbI5A3_+Lv2BU%&giaBc)(B^xx8EO7!olY7Z!f}J_;vw0J|{_)Y8c#E3X_{3$`64R;kT& zu_8OT@#I7XTl9=eR4WX(N7K~q4dvs!8I)rKgtno#N0?0t3)P;mhbMpV;|H$V;6-@H zt$)+68?&=UXhW`9m zH}~QPGGTT{61N?wfYj*#eMP40vX%YQHZ%wn1_3e&L@0FOosdpgKKIEuMvUPK-NK?$ ziWX46_||rx^aS-@mzK7-$0eo+3s`f$0?>t>MPu}B6^Q&$jCz0fwuwb$WZ<;VHetk> zg1RhlN$sEVAVCSs_VM=4RzAP4hQo7&iE#rCH|zs%LrPvK5Z?mVVMjT?8SYjGX&t=h z+~%}w#9zTzS3Rb>p=V+QPmT_hK5}2k5Yso5NI|1S3(Jch+h{Dw9{_;KtgS&XHa+$V z^YHs@XSGSKJ)h50J+;pvPz2_nU^G^NCBifBPv@b|hFF5A4qn-oksE@*c%{RJB!lKp z>APn5!z}{vc$$@gAT+VOq(*iPw10M=RX_l%elfg!gvr1ZMq9VyMUgvLYc*p8ejtYp zb%6{X6nP;3QP_tG)m1mP{ps45W4JWS$~Lw?7F6k8@hbk->aFlIdnlE_2GEaGR^h+3%fAjp0oVrDsa$bvDm73o)CJCqN?+G_{fu% zP#^bN&&7okyqsin@98IMk9~nz?(e(md;O7dLOAcv*~JxOw!F6E(6#f>HT$wtC6-{5 zQn*cVsp6t9BBJ*WAVGS)1D4fAG+?3)BE{HaB~L z{R{M_i}6tDv3TE|)5IG|kJ>+7GfiJ#)ga_cTtlHp!g4Kl`YOqrrI;U3hNYYLD;2 z83$PUJ0c4Vw1>>x0bmSx|5z$aPEPI~J*+Xp%FA;y(j*8)dGpt0;e2g%W`-6OvQj+` zo*E=`5wECF)dp(>j{J!ffPKxm9&E$T9YAbiW+Y&DGDLsaBCI$?5MqyU)jEq$np)FF zy3hU*iX%k(tbQ?MmCPyVBVO65gE>~DBAF3XsfvIE3$ZkMhGZOG9$Y{`ed(Ho{ zRY?zBbCzyubJObyF|N6{rsM*mb90(u3GTP$gIJL25Fme`%^Dnu@<|_Et8no#d~mO> z^8@=XFKNy<7X76$r7uaVW%$1$nUa+pV1D z&lvwsk7I!+|MiIYe`UA-ho{T`k8XWNy5@+0h0oQ~ws}$01diamb5Dg{CA^}(23qZ+ zGDpOBu&yx9OxXUg9nYu^UtB#>;`_Dhb-a99AB?l{B=BH+A3T?UbPk`q0&m8|CSMv& zYbzw8P^-}V6{Kwoh=4sj@Vs8N{r>olg^utTKyQ8Ukk5D>5g2UH>VgSGj!&c5`rY0| z+Xat;0&tXOK@t0|pkcu8bHR^D3{WT~{dhP3v3i7pd}@$~YtXx2|Iq@-JafF@1KJzU z6EbJF!GaeFiX>74hOtR*&Cj1dcR>>CjE)F0b~BJx6EJK3G=DZ%mdSVLF7H3?=d{iI zL~~Z*^M_Ow9qg9^SU_Rf^0yW+jQ861d0u0UX0UH;0Di^AwFtM8Qi7uFC_oQQ4~Er> zZkz9N{rc>4?DsZ0Hk}uX3k!-`TA^T<_uFM?{EMDEVHOtL2G;Lq6@{8nk!N~PZ(iE_ zP5OAcpI#dSar8>NvLSg)y`Q!Np2_Nj<&B_FPc#wPrD00`bYY$0BMejDHxzIwZ#T!C z4VGL=OiX?x#Ek$@#5+Vq6y`x}JBtob@>5fj0a(2P4LZ~;AX2mRK+(NDO>sYn3O+en zS^YLxA$Tt3e%NQXZZ&%M>tUJjpx#jDBt{*iY_kPEx z2Y_a`<6any&m%deO!T~JbA{1?bnJIm@F{qT7y(%E`Ku#PYf{v3OxJe!^ya_y_Lfmq zMSr{KqCr491vZEXN(v|;rBc!;(kUI%DYa=(DQOY5G)Q-MOM`TGNq3)#{@?e$XWVf= z+z;nC){t6j?YZWf@r&nqe$?Dk1Nd+18~7;ST%fqRHk4s}7(V@xBDev6ko);SZPmMR zbHQ!2Qg^qCch-T8eBgJh^M)pevzCle0yAKT9(=uz6I?MsN8yMJ#rN>|My7P#HEHy1 zs!7EpdK=O4s{@sm2je8rYTV=O6HBe~5$Fn{t*y)+RzNkz8O!*Mj0*Q@Bh-CQC1)IJ zQQfIT%2^D;`t!ehIH7yR#ZP#jcs1p)*tl4fEvvnKOD{dEU;5tMi6<B^b%`NaMRAJAhzt=9+B!p;px z2$hsr#Ih=h0kCX*e{q%?xL;NFSim|ISjnrthXg&0=qyiq!3WEbFY{-)(MlttJ2XT?pnT+r3mMayeG@l{i|)RrJ|yCXt@RB*pWr2 zPBZ!%4978rBH~O;;U`_fy01ZRj#TPioZh^z+te&@uVL$TO2B@1ZSWiX@^7z3l)+PX z=jwBkkw^LYz0=>me{V*(%BCrLHSyGh&yG}9V;f8LYh5Uu^hfE`uV~h6zoBtFC^I`t zbQVt5-0VYO4CfLMa7q&AygoUMK^Rrfj!}nMYFOUYV8g6vBEO6othTv}C+9gg`c5A( zKisb!08W?o(YmmQeA*67QJLz8UG6IX44>`0vfQ#VQoLbGT@AD75BZvP_vcQvZuZMq zXwjH&&i(n76$^=}si${!5-m+}d3W?fg;61}f}H>A@%ajKz1iX^f-mLY{H~Rzn8Rj+ zR*-SvJ_yGJ#(-*)zKbnJ6|__gI7!!%AZmWSt0ZYyj&zDc&rDBryiKDt_RElx`dBV9lDIirK^RFFtX^>x>kE~qO9ZT&%)Q7_y))e8 zGRauBZ@&`kRi!rvAb&oR&QLTXulA!bbKURueqC$$6>zR8;+3%*CiGeUU2JU zyF!We)J1k{d_+smAnED;DnZr5gOS}2BjffA1O|g=i^xI-yDWP(7sBuMvdAC%2avKQ z4o=e`(xS- zfNTJ;b^xDwYk>%`ZQ2zf=@9^uzGC;cNx@Mq6OL1LIWSms%Q4#C1LTLJm+h08|K9(l zthdzTlT8W^M8A{6Rg+H7S@cl+4|$O+gd8C16-N6w|Gf5Z&c=tFi4?UY!28A7V-i&PT zc5JV)>uh3HaN(uFNQJNPV%Zxcca~gqDZi8BeT-paFm+&4CVaO_mpORoV4yvaHA2Fq#RnJ`9lPu)Dl!QpWR0E>-FD?z<|xW_EMcGe1If7Z7W zh{EzBJfKhLYoU`{EjuASN9BE+i#P(iuP4*PQD5C~7q{;OjFwxKNt;{WKO}#3|7g}L zKYPPQXD86v$#Tc>ffx*uOL4H&K~WWJeRIh7@{8+3)f>h&^!iu%&o&2~^d)g54{~pi zCR*LEoz?~m6JoKxvJVK*=h|WYUd?@O=}Q3K*anKnqFeayO4LoegD(}m3<^3ERi8_G zWo2Yvp65({`bqMo+yma=Jh{3?q}nMvGVA#&mMJcbbqiC-g_*o?Ep*vM&C!vxSH~ov z@rMM+526QXV#^7yJ=aWS6`6^88>!=mZa@iVLo+I@k z0mvSa@3+WE7QHkhZ1_^FPR_Xtx*#)~8ghmmW*4)?+SX3<*={JyNAN{^- ze+!85j+HpSu)?HRR>N}VYjImMHZpwg+~H?PvRtuEB|7|R*~F^8V(u^n1PE^7ERbr9 zx~iom8wmIT)e;o%opO?|%Va_Qc>LJJ%L?_?5x2(N>xU0BIE3a!%h)iu-bTbG#x>?@ zG|slieL6pUB@XT)D#P;VvBBq|!TwPvttkIDHU9wLz7Lahd~bm--2cDKw*OsE=)W#~ z(+hnVerA+iCU)svrn{a35Ep=%kl`=%;z2~@N3zV^iMB7};uURLPY}&BmSm}`h2@j< z9x6aKf`*-`euP_K6qSw&wFrr6XYnG^~vwiU`uMKs%AQe z^j^zB4b77@(I13umoP_ib=sl1p&`U$?ZAOG40^S5rR%jW_S&Aw-(!I(?V)`Py7(*A zmqEYlsk>l>m@gj0MskSgZX>_+oU5ak2obdp`Sy(x$oHU6_n|zIpbUGp9xo-O1lrQB za}5B%P{T$QKR{BnZsnTbW+MXk+f(xW_KCs)(1#p=cWR%^^2YX%l5Xw+@_{IN#m8YO z$L-5jm+H6JBb=(`9@N+)!^xr*&qs9mQ#~&>%gfG@Kgcc8QanhZ_ zkMB$bA6>Kht718Nfp-Ox#2e;*0PehEeb_`6i$Vc&47^C)9K2#EqZ~lp-{0@Is;9L) z&@oz#2mS{-RFWvbVxp$Q#L8;uG*d`}_|A(9Y@ekycYSEJSI1i$@wqe0l$acM?qO_H zc<T-)(cwajuC0r#eh?QDi@jpY5 zk^dVUp4D&Py`!HoAf8l4f@)Gg9NyysP2l=;5fA|p!EFLH0Q7rmgvdYIpGd$9T%AYq zFfc%^`ePweg%M`TbVoI$$5A*G?>PijR-%h$&pyxA$^YtczYC$P`@O57Kkyzf%OI#$ zhzz2A+OCG`^Mt)wFh1+gmoN4Z2l>IAV{k)QOu)}&lE0>Hp#)7+wW}vRTm5l2Y`zp$ zA9QQ=j$K@Ph<;|%VRS6^jaPjF3%e!md^|5_2G|Z>mwnz(S7k9{X4Xqfe4WuWkz;1N z-*O+$Q89e|0MdfwR1Wl`23V>g&-0S|HG{HO-Sl^{D-I3!It=>k97er7LP3|i!A4(XicRZecBSG8bkczd-nFQ)G2X^#UgK^c#*z8x++fsQ z8!RXd0LAjUBAbmfY`(hB|K$|jHVvfs0p$NPLhDr>FaN_hrU!mb(>CbTDkMXOtMN}b zIg=}7z_`+CCLQ^>U+}}hT@72|Q;(4$RPfIZ!)Hk#1RclgG=Cp_;)|}hVv`A5`36qP zOZGa0SLcA>(&DC9sA|2Jd{1RE#9#Kg5Dpmgyi|4(lBv^y;KK`DLl2uHo-Nrn-&)2I z5lGK(rMMg~+O|*0wSk|M^F?N?+Eqa>A{5tt?78BbH#mU8pixQU!$xMYtZZ-Z*raSJ zcCpO7K!_=<=TD2d;FwW9O4e;>hYMWwW{a|ht>eH8T=d%0aozsr`L!rP^xd0srS;TX>D6-%6E_m82OmclJl#?e*=SpGoT8S}v1)`MkS3 zZCQ>Y`XRAYTmhF~nT?4TI^_=$YmU}1R7S^|UyafRUA8$LMKc!xmo%^~iA}}+or|+I zyHvZG1EHOPeWBG8OEVKD!@U^mV5}8n@W~_?B`S!as2p#+Zt7(>ASh zP8=6_z|GBFq`MPyLRF>O+T(>0L+Sw#4;b&zYW_#7w z8NsApgsQ)|NHf_;*NKMXCp`P=*9G+sHpioK-FvrFl~H@vETIYGrV-Tmw5c1lDmAPH910SYsIx}M*^xiP!+zRE znLfHHhVo};^Q6;cyok_o<9Fa(ZIoT3=;@lu+PI%NTZ_g{ZCb~~C#lU0eyRGKpb;yO z%L_UF%fRnj6Vov@m*udX)uh6}q>b}M{FG$7em#?T{ zNhMI^{`@MVsBX5k;L*k{G}a@MBT+u0?y)i&9oVu1?XWl->;i-0f+9!$wl`{oF;JDB ziKjX67UmG?bN@E;ai8Iz>ff7x(t!Ube*9X1tB}EL$ggFpZRbi=Og0Wa zz92C^K3;QbF=da!zT@uhFRCVxLiPbcUftQ9^6PJMeup<4`8R@whfdw~H`OE`Z`Kb~ zjt??6GdAUyH$x4t7|G4e#zCZ^f5roIIQyHx9ek{ahzL4r=b${wge?p-h=UT$)PDz2 zKKoipnoMqQK#!5w(a(o6-)YdGfk(CTN%Y23Q(F-a6_~mnFfeC zn;9q~rlyaCuE#!Y(?t7-LtaFZk zfK;4}EGw}lWyrbRtgg$?;j`pPX)Tzlwa0&7p}K~xi_NvTOi2qpQCe2beOn~Mtx$LA z0+uv3Ezc*~!lw^!zoMUGfGxWA%EU?-^?zQQm|HkcqP#H{u3aMx){_-?jE3p&|LNz~ z!ldVV_kIxX1ac@_LAUGEUn8gHD1}o*8XOl$4Y?JTI2#t_xKmYqAmFXq>0rd%C&w?%zM79{A}iI=b)nYQTLaC|qoX4r=eRYC z2c1s01!H5`hkbYmpL7Gd07bate+>FwBM!XR%X>C?m{aTPyL0PptY6$pA^4$*@fPtA zImA=bl@mn}1*+ckx?I7SQ(>(~c9B)rv1=06S2GXJ&-H)8+Kw>pD~`f~ZWks)Ap0TW zdO@d@Z-!i;3x$K#hk_GXJvp0{9+vW?^r&_KTX*tX{U?k`4?GnyH050N0B_B?X=6ky zR_#pw%5vA{)%MQDdHn2}f|SkcC(P{Z?Q3gHK<02@W+tSl=&!73P7V%G{)6CvX}d=i z-{TJ`h=>~07m$7(E3R27rHhLTNW}n1lgMbh*88|yQa9o-YLLu+;!V2pYO_&s^2c{X z59LCUq2BK9Qv*~Hi>k%b&jv4#Y)FWSbw}n!j4xii$dLZvzN0^bjtPQCjmfqWISGM;&b?oRiVu6E|3#?RA8Op2Ds5!BPv4&(JhwgkvRO zH)rID&Ft=)eZ!&Sg|}M3AXNt^oM^3!9gh0IN}3ZK9waUMZO+7&==Qd-Q3{ccuTiwzZ>}W zt(MNG>||ud)xp)$PYOC3!Se&Asw|5Is{SYm=(KJJC~&}d1Z2}a2X%GIqT*tkm2Qf{ zGdg;Dl=by(PQC;=z(BJRp0j*!&7V*(xdoKM?p8VQCy-N9kaT6`4|4r$9>XD8LRqBy z3Rmgr>0$~dhAD%Ny85TAN7*I-MiiV=dliP?0i~|lXXWmMe)@H1fHv*n*wBHVNW^FR z-x(#iG*It%KA*ipoBA^)il4FKDM)jc-UZ_p{br@kJG-vP1ssD#zZ6>Ge$V-?mr>@p z2tWT_Ds>*Ylgv>dt=p&3Xk7QNOSN*tCwWt&gxgJW43#&5h1L$s%G<%^;q=iXfqopA z@RYPxa*!*##Okx$wqFh*#QMBeJ(slJ?QQ_d4z-88YOy0O%GA~wWL>nH3S>}{l(WI1 zS3dc~f`;@mcxb&xg4Y-F`*6LV@5jGae=7FhX274~cEg z$fGd}<)zI}hA z${pqTbF(X{K3^x$;jq24r^in`#cS9MH$nB~4|e8)-Q~C0!*q;E|8^7RB*eCraY6cX zQwEp?hXgk;2b1Fx6YuipjLlA~6tKer`s(KsM*eN5ovAyc(DM6dcvw@Y3lvwW$sV3M z^>8WRJ6rA_it|5y9PQj!N%yyFZk zk2;rfyx1ydHhL)q=>6fE;94xN_`Yy@i2~c@U%v5SgXgF(9>7Y7DZ@EJsQA2RX0+W7 z2PD=ux1>+MrT@K#_nXGI*7&Jq{ST+Dle=dwuSkS8VrD{8-^ z^1U~v-`}$cV3eazi`pE5iTsaq568HC7G%`w)^ed+1+J4=1|Gr&^FYRNBI^( z{VQadc>Oy94HH%Bq1cJBarh_lGBP6B!^kWej!4FTNM&SXI^^Wfe{BRLztQPTMW;_N zm>C%%bpp2+RqacwX9A zOq9HyLIzR~jDmwI@7|sD7`InZvqU~=eFG3m*y1UQQzyImG|>)QBu|gLf{pn4J(G!a zE(giRcXv5}qt-NC=Nq#`+#KO@px<3=;!S({=Ya2B;7uPO_@J!d_E$HRj$35r=VL%_ zA8tILhMi}Y#Gy|1_CE@KU`iYtC0iEL8_+R6WYp!13;WPv#ONw_Uc=mYIJt5ZPcn$- zcx4+jdekl@Oyx{Of2iwT>yFHWn7v%#shIP|PVVG?bm%l~q03`&=Bo5`hT!h=!54@ z+cG9`6?A~uz6eypL7;bk>|Fm=Mgd4Y{3&J+S1&g1O9otONZ<f(PE8F}N=gdo0SUmN2ddH>K%)Wd z%RtZt2?DYdtr0+tI6XbxjSJga<%e>1cuWiipsEA%mA(5EL!DhKph2Y8Q8~9PPuD*T zu7O%u&!r-TcaV%) z=I7?J8WbD+Nbg%&S&21A^S(ECYnc7$Rjnv2?=kwAs-;~=zEg7$a{4hS54|{~-%CW? z=wX|<@Qa&0xidrJhEyZ6#~TN{@9-B!QNP7C#x@fSUOFFQpaw!fX6^wM*tN?csdBvZwB{NwGW^`` zVX2T`drW!wvG$Kqd#_wyCM^$RyYXx<^>aVb==J{R0jN3HQzr(c>Q~#IS4X4n2jMBp zp$@v@DFp4IFfu2Xdqt7Ab7#izZaaS3%E`xX4|I4%iO3_@KmHdMAV>A*T{DjfhH=1w zyH%j*bF}!yP|jqz($l9OGpGoooxDsv<9V3!1y9!O`NH3=9lFxS0SW&iddH8(YZa4CUaTSiSE?&6KGPRv8#y(~w66~t#k~ZQ zKiiAQmiU@_G@jo;B7mtVgO3W#8DcUrAcjW{%*hOS1SyfBfdQ@Hw4ip|x_#5S{ih2g zC(#9aez56>1IZTqO?&<){G5+TMRml^rT(p86=%*8+EZ@u)7<>55}}<@?3T8pE&&{T zxQTaVU+CgRbHo#7GMG}+o~7+lPjJIaPfY=gmIr?yNByv2w+4%f2F}y@odE*=bd1%dL9NrFN5Qfwy$}R=YTkyWX zIMrJ`H{2c7skoVY^aQ!)0V9g=5NV4A%`g~=XqFsc;xcKwZaodfu(FJ#9Q5z|5ExfC zXvm2ODk@MUl)t)OOzowARY1CK&YJhO4|3G1{cD|01@&GJ5VrN*I(50qDAsrrm?OW% z!ESUx-w!A9Tpf&VLHy7!U?Oq-4&WiYs zd&qS?GITw$73k_m63Xc!p|iq;-8b~}UaNi3r)$F8z9*FCadH_xJ+uUo;W=*de;3NHoLtbNrR(vUMTr9f4grqD3S zp8Puvn>{@oaWW=mW-q1fKHof4fI515NaBAt>A6{G-rCmj8>#Ki%h}4=t*c(N?uJJw zbXSeLS?D!=xPkd+ox}3JXGq)W3PSZ(?I?mYeJw4BFA6`A~8dR=O*KV@bH$bNi3dz1wG;xhD#1Gq7NAl$rDcab+nR$l+1 zey)~Mx&|{H!E|t7G}?pS791+Pnj&F`fJr#CHIW}XOL#RjnaBt=4HmSxx7X!xybWjK zAT?CiKrM6hI8S&pfcSbYGPfqbedgxUU}s~PYSJUW?XoW7j6&bkXjI%OB>_ep#!E9H zu+M_!QL+2-a-%OFooL6_nf|E&LUI==5Jl%F*C59q`=E#9>@^vrhhJXJ`8U(EDH#`u ze$!?7b!bX+NO&jfENB_4`4Vn7bP8{YgEbKZq0)FUp{+~g^<7Lux*&f9b3Y8{CFD|E zA(PVSgjJMK{JuxC?$Fm8bn#yBzS7-{hg2R2=AbD~Y8oF7fvu3LQ~GeGT&rT%FC*OX z0Zq^9?ZSb@8ZCK%g3RJijVbgKA5uUi{YeobK|2^UIv{c$G;mU0!EGh?8dYku{mu+A z2B zvYwdm%0c`aIaXUXUO%j+Gh9MVaPb%3OkjzO6rO;hlrTxMP-TwxL+2^6=%*DD&P@hQ zo7B|M#Qk3?j;Q3Fw4Y3vJqG1->dMa^P^KN}cb)_=`XNlQV+mKo$+Z}%E5G1jb zKl3`0M;FpooICrLzgzTSvh2rOYHt8w49w00gBT%HE{f}{_~zCLnHx!O2q88R>@&eM z$H&=Q_dUtq8y)0x%=!T&lx^|xBCyfL;J%olE#eXqByqZVx0Zeu8U^jV*Pv|ZU-yGQ z3@M#9SGW4?KoGy|u^K6en5X>^YJf0*iWOPm#%{`Vr$jlgmwRtrllI?%(2#dkdrxP(TF=5pbZ;`YP>L@N3jaOm~{Ay$<<_%dEpABH%oI zt2jd1FP(-?aBc$XXT3jpx8U00O6VxCzRy;EhoYK!ilpl%uxq<3FR;gvSG~=zgW~+r zkU8&)Np~n&m@tX`sql`6a9Y0b8+E@)CzJ*nN1h{nz^8a-!zJ?n_(}_Jo`uKGUEZ13 zqnDVi-j7i}Z@hmGJltzp2pWrcr%@(CzXne7E}K8}KDSvw)nq&I zOjE*c+NLRUWDa9}PWY+ZgX2IN+}owoFJ6bW1cHVRLkAvD)ww!tljP2bcch5k75fad zI2ztx=vt!gw4X^g=4m21Zt`=exfmK0I3jr*d|D!qtk290%;MDA|Fv|4?<@AFlM!Ly zT@d)BZ7c!ef^g(>Eu!KvMy(A0#HntUbCzAaYg1*`uO`Z!{WWHJ4GN;%rHs8Pl~Fcpp=D>7(P&IO_{=Ip}>#vm46pHEQ>K3dTYo zB=Z#`h(jD+G9ui*QVV;0pT=Q{6(L_O=REEvvP}6j=38^L919Z`ezT=}p3m8~w1(kY z0&aadzeCRRG}^Vled^T4GVJzqdn)2&!e~5TctWSNuDgvGDL=6VXhc+9S~Z2cZKsce zsT?PHY>BI{V>i24RJy;3G+!~!D&!>S{|vHdJkn&?6-}_dN~Hf2q`J(?FhTI8+d;fS z`$$W9vkpB8`k2C|#%{wdaT68bLWa`K}68P?beX z#%JL_7bvgdmRw{w(F*#smbC|L#ri+elAd34U#=`?X!hMGwd(R?LlsLIKgTq0MX21^_pwEH7O zj#}V^Ux$SZpFF(J^CC~U#+B!~u#}{J7O2r$Oi$eLuQ+i*8@!nw$z2N)LB!9BW%?kY zLk-%0%s-G=Vifd;w)a?d1(PidNX#^CPcf^P%iZYV343y>_xsRTh+`kWhh2Z7H)%n0 z&4h*R`s2l7iv#J-im3G2ax2&uae8o6RaFU;0TGMlo=GbsXt&`C54aJ@!zU{%TRdED zXfL`LmN$901AfCc-3Xvv@qjM+E9}tHdBTW0Vn;fSs;i%ACdp{bn>Y4fqC-1)GN?7z zCP%euTG|~2!;~eOA~^R&_*U96eu#1++xHP1i<&3EO=LJIudLVf@FO{2Ko#E$1!s}f zcczOmCUP~JM?#}j*IeUap>r#;ISxXys>>6f-9h`eD?_ok>r0_{Rc+j0ai3$SNi--^ zTf3)9-kx#kKtUaWrQ4MqH5Ah|H}|7`^Hz4Bkia=SSOzjlYiO*kJ~f*Lv~0;u55F9?eZzvp0x*R3=mZ(?7v?O~0|YUHNyp z%NXSxh=K2nY6kZ1T)Qzb&mFmLUT^_5rm*V|v%afGJc$W?Jl2(#7c0yx{3zYsy5S-H zI034$y2%Q^P}5QbZ^|6Z%{_h3!wJpZEjGL)kcS}`^xu$$rps$5X|RymAb_U~4j@e?o&xGC;jvZ!;iTfV7MVhZ zgK9;s@AsbI461}sKX+BM17UK%Q4}~q--$_+YHO**7ta<1_(FcDx4ew=nv&$`7pONmS|-H168y8BJ7^?l z=}oHIB2+tRdrz=i{tk~2RM4gt?8VX$h#EKW<@ePr$gM*?=eYt#A zcPN9=G44|BjvXe!BbP*;(wP>Z0u5E9RO&8&3aI;v%9#$Z_zSDk zHCIN;x6+&W^)yib#0E`$sc|0-cwPvMK8^m%s1ZB^8Lv72);+<+1%uTEJXHp z9XYf+wPm$1OVioVcjNl-(NQx`LpRQd5YK0wQRwZsx4BOOgZ+ySmfptLgI}xoB11#m z7J>p=I~N|mV?&`80#Ug$9ZIxsOElP53aIf0u;99rC5Lr5X}!QD1$5Ap8(QOcVVB>0 zyq=-!g(mTYiu>HW;)mCVi4v?^r5a$Q-Ktuf4n3seTi{bK$;<1d59W~wq1u}i7#R~B3O*L90cD=~&aBoC-bga}ara^WMEG5Ml+nyq0g?1Q=ZEt~q zOL#be+KL_9hVYQkeQP3h@WeB)So|-z3}5cyjmGGE0LR)G{?$mnlNfC%k-qzc4CzN& z8Uve;d<9nT3OY}t^Lm$<88Vs59mqJ!|a4_RdC!7N(XOWy2baD4KANzKa-KFA% zuInTZK4n~IkR-^(gh_rmq#wfLyQ9=AP(N}e*&ps-IxS&Sfi6M(%CZ4eRaQdhZ$5I6!a4jrch{LNBh%ro`ta2%TOAoxM&G?=<+R>C3O??&B5q&HJ}N zZBL7Z`$WVA0wzHJ!qR#&!`1p`XcP&`LwNMl2Ro@lghbTGuNg6BlscH5 zJfqwMn6H&ag~#cS&v@&Bi!i-JM*(^(Kva~ zRkUS|t?X%c42*R# zBGfs3+sO~s5(CiH9r-eSye{+;c9ESHSS%~ z%ro4R>%N9L^I4H^d0oTHvf8}(RYF;L<#Lzn!`frvL0uKty@PSk zr8TX@Q||bT$BoFs($r|T9!FdCyoXh1#+)|e8QPh=!K}AxgDN8eM(ncjhh{V#kLdh0!0!QH;wJD4?=GF9}s;Bqpu`( z6QLZxNz_r_$1*ub5mAyEBB=U!zUJB}iPMm#pp`+<(U}YU`Nn6%%B3}gIg{2|MwQTu zmOG&?@PCf6oF;IL&qc#8OpY*Ieh#u|*F>T}(sZ>|#o04=*(1RWBMr zUMojvL#zIkNEP3B-qSNXIL+oOT&S8di##4_g=pW zq3JRn?Kb+{2XEWMv|C$+r6FE9g>m5Tl>r?$cpS)Ri@<6_t^~P1{GbO(=$I^Dj%A{kI~PJ4RNb#!AVQt9a&N(6iH70% zHECH8`>D`|BC9+A;70es6a>OI%0gS{nfCQ6spm=P10BnB@3x13??~W_79|J%O;-92 zrtlL2^6)J>KAh$MGhuoA*Z-N$eDJ7zswisO{iMFlEqUu+#>J*vbr$3 zdvC3)nQM!_FfNV`?$wD{Ca}8_@l|8H-^eZaM@_HpYPvuuJLXwT&AP4~Q%@fR;iwr8 z?4O>t7BcI;uUK}S9M|o`%EZPltN_(16||Mnp^B^Ho2`SyQ?C4=*UXTv*{{dj#giEv zoTpf%BrA&`=SV`BD~3n#90?1nr>bQ6t}h zn&)~~OtI@uEle(h2qfl>x3F&vt|o6h?&@6btAxeG1T;0hw7F@<+iG;l?vrpV+o{(B z1vc+9J|_bqeYNp%AmGzdf8CWZc5yo7O_kdv>;cL8JJ|*$b}F9)2;ME_-(956i!O}(jpn`cMS7TU%#;iXgl^nZ@Vqay z^mOqHg~Uy7gV{|s;{xIykuIL2rtYqT564*P!CiFdx#JAOm(b83*_%wgi4G71>Z$a8 zk3)i3cqnaV1)W}Lse%j@^3w8h&_&<(xW+gxF4Yny3GR$rEf@oX`EA4%AhSDn65?s` zsmH@AqnDRS=F)1&QU;OX#l~coqGYU}`e33&zM7~UbHF}u+;oycg2=QK{mtw5LSlc^ z*xo^LccIgn1<}v%YlVyc8ZnE7I^P>?UzMGnPgvFX7~c)0RTxSs_n@`=xbK%d7Q;Lv zo9D}N`0isHdGpj16{wfoNd8La+9^y+8{=Y)caV9siLW24=1MCmxybwI~Rcf?>Bi+HmW^l!HPpaN{Gnw+8SNwqh{NxR+=&IICJ{qiqk0hg&^c+inW`u=eOiU zjHQ!{R3zu@UeElPxh1_xWO;eYantcQ?%k@Mb0(gr$s`7(T9n$tm>~Q%oReQ@d+(#0 z8!BYo#d?E+hDMn=YzB&SEH*H+zi;oY_Vvf^)h`@T*ULGI_t;sKAF>MGeV}%~fk@EN zqUH~88~<}8mbR;EIsF?iO7IJA==u_fvD|nuj5&|nsP{HgKb&qIh|Sz57YErsue^#7?t(az9?dsZRnLAi~C&t{v zxc$KK7hTIPanGj*olm+ z?7T|-N6crF#Bzu-R2D!4qJ-e;TXh88ooc>d;7mE~c+N$|T>B0dakBjCM4k)bM*4B3 z)t9cP?XOksL3qG9b#Sw-2XwU{xJKFROCw395MIm`FnspfCy#32;3V=bzp4`_^Fqp`o59Cj;+_zfaUZ;CCxae{3PecsPVfB zP1RB}>g}nUKWfnFTR7&fv{;kME3H|c$B&D=DL~|5v}j<@2F#?nPb;JXN8JaRSy_#z zr@Ww+g3bQY>)-B1e8)HIB$^&)s}R&BHKnMrehDYBw1ljUR#=RB$M!ncFx%SOcYk%| z`(MsHctzozq?V%xyhg$4a2`VxIEZIM92PXu3G&<%;cKl`I5TGue7S^yZWI=25Cqi* z&$;L4^0c`$6ZR1`UmNObsSnUa7#v@prn!F@q> zP315J59)JS52(r$`HfKNOVxN39{Z-kD80m^W?k!?9>**mg5s+98ua|6B{4WW>Gfd_ zRzt%O+{%4Z1IhOM^Qnb(Y|__y>mIMdU5O>n)1>O>bJk(pjUkGTc z8#sr1```|)-;>H~>k|6fYv*tp{vgjpQy77A3|W zm`M)&5T$VTec&e{eHq*P!w2BaLh*2L<|KsA338N~{r&xSL1|$g436{F!vhS>ZI-%ZlgE7TQB7aA*uq=X~(20p`>> zG6~=}YJ$}6Cgll7gQ@_oA7wZM83M;3zESSTf;>))FSv0z*xSE?;zP$R(7jJm+Kne# zAP7V3wde~a3E7hKHz|870v~!W9iaxOe~$*zEmi(1xj&@`G_zsx{64P29X^qTinA*` zX-5&C$}RD~#|ZU+MH}+I(;Hz$U%cQ}v0_wk;?GqvKWYlaqmlbAXnY=zQqd0LnRO$A zte2xyl7W8mc0T-$scE7bte6-Hb37{GPK-2n&E@6&-=oSXS62```7FJ+8Txej{i5M) zvnchXk+h4WZ6%ofH!XR?G_2fZsMNyRnjBcSjbmf6&Q5}Yg2A3QCkX7@4c=c?cMypo zDy{3Kc8n&W7J9B+mpy;N4pKt({_wgzP?sabjZGOa*^NM4wk#fj(i{NI0@2Qu)z%8; z*tWi@&d%xga}oV+1nDXJ6R2YQ8+-DVJo`LrJ}1!FzZ??2ijbfX0vf=V zv%!@f`KyQ%`K}7HKHEoW36k&611kP`c~4SxOp3>GAl?}Vf$b=(2j@;6LZ65G?gcv` z2go)QW^ob3thRd!-P`{bH6ky?=C1yoC{XR*ge6rQ30`XBz>U|%>AZ%YXU!3898{qF z)zyVmu>=0^vWZya!^G!UeXo!Of5*luq=ZW^t83lOTW~(QNH1fT z;|n+J-zfPazZ}+dVsk)FO&t}5sILs7s-9-co|QK9*c+KqLMf|h;Bg=S#L1GK^XdYj zjSNjq5>*A+EE1M0x~w|AAFOrnG7K9IIO$*EjON%fSV#Fnc3TjZjv*|Y{feq$FQ-Gp z*H|L>^tik}cxU$5-HV4}1T14<0s}#1wCZUZMVKb{`G6UNV7?AB1V30{Bv&#u@vxx& z-kgs_VP^C45}UmSf_UAWlf3qK=bI}`=?ezad|V1C^fSn|x0Q)QlI@gdGH0*rJZ`NC z3Y=_?XO4FgB&w&wX`_=eR$qdr8hiB9E;n)n)s3vz%ci95?yk11njE_#6Q8&l$d>AH0JJ`f~Rhoz;K5w*ZF}vwz22;e}l}~|J3uhgc zC3r5~>?h$DzKZ`{>-mnZ{JcxyEGs}20}2cXzbRx978}*RG2DG7L}RnNYD0AFLpU+h z=H!fn{AnuT?e^NE-I^}dl-tj*#o`_ZYO^fS;bVN0@-eBIs1Sab5a(>(gG>(Yr=Q<3 ze^5}nbQ*M}|8V^!6~<1OYPan?w79hNz{tpGH^E9Ll)8d>Mob|U#|wvX0GN#FqNZn* zAqMp?nX(d07L4FQX2&wh?k_32-^zV|kD~h177vBGEcks&6`{3UgTQjNlnf`(FAV`j zY*GLUjgOCSVeMs|Syx6Wj?_0T&M+ze2#c0hXv^`ratz7BRU=jon_a%@&Gnq9Kd-ey$4g(oc~)(3wW}#K5>2`oYPWd07WMM`j%Se6cncTd z_ix{tK+%%h&jcWNo88y9W$&M4=gJX?m{%TfasP-Ym?7_gz~?9BgW}`y()fqG_rW<>JmS&e4>r;?oER zF0mjV6d&)OZ(21M&Qq{2h>{R2hCuP{>%Kc2^%mp^HnkV{4dgyu%P#>qoLnDhrGiW| zs89%4i^+<6hOM9?P^+8e*$gWVw0+Tc(e#sJG3lnXUA`X9WJJO6>ojsirVX?`IdEOn zd0}dCQ^g};d1;AO-=o9e<46AQy}ReXv^~xY-45bsTQ-Kbg$3Pj+;5n3&$-0YfF!O0 zzMp3}AZ`C*{uS4?jI1wXVYEb`3|ayfv0HHVo2(yivfOYsMl{H-6TEH&6_umgzs5pv zrx};_e5^+xJH?kmFU+AFip-)HvTVP)`wc*~x#WM?u+wwt{~mlO@={<&~v zeRg&R;g4(_uKons_SJ_5a8a3gBm1rsOFdAJ)|!_pN$yN(oe0%tTf`kMIyE;y&Ny&o hb(@SQKnAV6f$^|VcP&c1d Date: Fri, 26 Apr 2019 20:34:47 -0400 Subject: [PATCH 22/83] Update shotgun.dm --- code/modules/projectiles/guns/ballistic/shotgun.dm | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/code/modules/projectiles/guns/ballistic/shotgun.dm b/code/modules/projectiles/guns/ballistic/shotgun.dm index 83ce525ac8..914f9bc016 100644 --- a/code/modules/projectiles/guns/ballistic/shotgun.dm +++ b/code/modules/projectiles/guns/ballistic/shotgun.dm @@ -88,6 +88,9 @@ icon_state = "riotshotgun" mag_type = /obj/item/ammo_box/magazine/internal/shot/riot sawn_desc = "Come with me if you want to live." + unique_reskin = list("Tatical" = "riotshotgun", + "Wood Stock" = "wood_riotshotgun" + ) /obj/item/gun/ballistic/shotgun/riot/attackby(obj/item/A, mob/user, params) ..() @@ -200,6 +203,10 @@ icon_state = "cshotgun" mag_type = /obj/item/ammo_box/magazine/internal/shot/com w_class = WEIGHT_CLASS_HUGE + unique_reskin = list("Tatical" = "cshotgun", + "Slick" = "cshotgun_slick" + ) + /obj/item/gun/ballistic/shotgun/automatic/combat/compact name = "compact combat shotgun" @@ -207,6 +214,10 @@ icon_state = "cshotgunc" mag_type = /obj/item/ammo_box/magazine/internal/shot/com/compact w_class = WEIGHT_CLASS_NORMAL + unique_reskin = list("Tatical" = "cshotgunc", + "Slick" = "cshotgunc_slick" + ) + //Dual Feed Shotgun From 15a1b2baeb631e60f887d3fc261e1ba43ab1cdcb Mon Sep 17 00:00:00 2001 From: Trilbyspaceclone <30435998+Trilbyspaceclone@users.noreply.github.com> Date: Sat, 27 Apr 2019 18:56:40 -0400 Subject: [PATCH 23/83] Poojawa pointed this out --- .../modules/projectiles/guns/energy/laser.dm | 27 ------------------- 1 file changed, 27 deletions(-) diff --git a/modular_citadel/code/modules/projectiles/guns/energy/laser.dm b/modular_citadel/code/modules/projectiles/guns/energy/laser.dm index 61996a777a..c82a3e9ed9 100644 --- a/modular_citadel/code/modules/projectiles/guns/energy/laser.dm +++ b/modular_citadel/code/modules/projectiles/guns/energy/laser.dm @@ -17,30 +17,3 @@ /obj/item/gun/energy/laser/redtag lefthand_file = 'icons/mob/inhands/weapons/guns_lefthand.dmi' righthand_file = 'icons/mob/inhands/weapons/guns_righthand.dmi' - -/obj/item/gun/energy/laser/carbine - name = "VGS blaster carbine" - desc = "A ruggedized laser carbine featuring much higher capacity and improved handling when compared to a normal blaster carbine." - icon = 'modular_citadel/icons/obj/guns/cit_guns.dmi' - icon_state = "lasernew" - item_state = "laser" - force = 10 - throwforce = 10 - ammo_type = list(/obj/item/ammo_casing/energy/lasergun) - cell_type = /obj/item/stock_parts/cell/lascarbine - -/obj/item/gun/energy/laser/carbine/nopin - pin = null - -/obj/item/stock_parts/cell/lascarbine - name = "laser carbine power supply" - maxcharge = 2500 - -/datum/design/lasercarbine - name = "VGS Blaster Carbine" - desc = "Beefed up version of a normal blaster carbine." - id = "lasercarbine" - build_type = PROTOLATHE - materials = list(MAT_GOLD = 2500, MAT_METAL = 5000, MAT_GLASS = 5000) - build_path = /obj/item/gun/energy/laser/carbine/nopin - category = list("Weapons") \ No newline at end of file From 7018372c5c5547004c75bc9102b3c6ee0db54b34 Mon Sep 17 00:00:00 2001 From: Useroth Date: Sun, 28 Apr 2019 15:48:02 +0200 Subject: [PATCH 24/83] Revert "Added myself to the admin list. Duh." This reverts commit 41a0b802e8fdc94f8880fb06de2fa2e4bf909513. --- config/admins.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/admins.txt b/config/admins.txt index 4a2b4ac8da..27a2178e2c 100644 --- a/config/admins.txt +++ b/config/admins.txt @@ -8,4 +8,4 @@ # NOTE: syntax was changed to allow hyphenation of ranknames, since spaces are stripped. # ############################################################################################### -Useroth = Host +yourckeygoeshere = Host From cd5317d1375d6e4efc901b807b9f52f52460699b Mon Sep 17 00:00:00 2001 From: Useroth Date: Sun, 28 Apr 2019 15:49:00 +0200 Subject: [PATCH 25/83] Fixed katana jaunt not working on dark tiles. --- code/datums/dash_weapon.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/datums/dash_weapon.dm b/code/datums/dash_weapon.dm index 03badb2069..a870ecae66 100644 --- a/code/datums/dash_weapon.dm +++ b/code/datums/dash_weapon.dm @@ -32,7 +32,7 @@ if(!IsAvailable()) return var/turf/T = get_turf(target) - if(target in view(user.client.view, get_turf(user))) + if(target in view(user.client.view, user)) var/obj/spot1 = new phaseout(get_turf(user), user.dir) user.forceMove(T) playsound(T, dash_sound, 25, 1) From b7b4bf1a61dba4353b29b9b4e6d7ce32cf463b3e Mon Sep 17 00:00:00 2001 From: Trilbyspaceclone <30435998+Trilbyspaceclone@users.noreply.github.com> Date: Sun, 28 Apr 2019 14:51:53 -0400 Subject: [PATCH 26/83] Update magweapon.dm --- .../projectiles/guns/ballistic/magweapon.dm | 232 ++++++++++++++++-- 1 file changed, 217 insertions(+), 15 deletions(-) diff --git a/modular_citadel/code/modules/projectiles/guns/ballistic/magweapon.dm b/modular_citadel/code/modules/projectiles/guns/ballistic/magweapon.dm index 017a9dd52d..275b003fea 100644 --- a/modular_citadel/code/modules/projectiles/guns/ballistic/magweapon.dm +++ b/modular_citadel/code/modules/projectiles/guns/ballistic/magweapon.dm @@ -1,3 +1,185 @@ +//Stollen vars so this all work for real - Copy pasted addtion + +/obj/item/ammo_casing/mag/ + var/e_cost = 50 + +/obj/item/gun/mag + var/obj/item/stock_parts/cell/cell //What type of power cell this uses + var/cell_type = /obj/item/stock_parts/cell + var/modifystate = 0 + var/list/ammo_type = list(/obj/item/ammo_casing/mag) + var/can_charge = 1 //Can it be charged in a recharger? + var/charge_sections = 4 + ammo_x_offset = 2 + var/old_ratio = 0 // stores the gun's previous ammo "ratio" to see if it needs an updated iconn + var/charge_tick = 0 + var/charge_delay = 4 + var/dead_cell = FALSE //set to true so the gun is given an empty cell + var/spawnwithmagazine = TRUE + var/mag_type = /obj/item/ammo_box/magazine/m10mm //Removes the need for max_ammo and caliber info + var/obj/item/ammo_box/magazine/magazine + var/casing_ejector = TRUE //whether the gun ejects the chambered casing + +/obj/item/gun/mag/Initialize() + . = ..() + if(!spawnwithmagazine) + update_icon() + return + if (!magazine) + magazine = new mag_type(src) + chamber_round() + update_icon() + +/obj/item/gun/mag/process_chamber(empty_chamber = 1) + var/obj/item/ammo_casing/AC = chambered //Find chambered round + if(istype(AC)) //there's a chambered round + if(casing_ejector) + AC.forceMove(drop_location()) //Eject casing onto ground. + AC.bounce_away(TRUE) + chambered = null + else if(empty_chamber) + chambered = null + chamber_round() + +/obj/item/gun/mag/proc/chamber_round() + if (chambered || !magazine) + return + else if (magazine.ammo_count()) + chambered = magazine.get_round() + chambered.forceMove(src) + +/obj/item/gun/mag/can_shoot() + if(!magazine || !magazine.ammo_count(0)) + return 0 + return 1 + +/obj/item/gun/mag/attackby(obj/item/A, mob/user, params) + ..() + if (istype(A, /obj/item/ammo_box/magazine)) + var/obj/item/ammo_box/magazine/AM = A + if (!magazine && istype(AM, mag_type)) + if(user.transferItemToLoc(AM, src)) + magazine = AM + to_chat(user, "You load a new magazine into \the [src].") + if(magazine.ammo_count()) + playsound(src, "gun_insert_full_magazine", 70, 1) + if(!chambered) + chamber_round() + addtimer(CALLBACK(GLOBAL_PROC, .proc/playsound, src, 'sound/weapons/gun_chamber_round.ogg', 100, 1), 3) + else + playsound(src, "gun_insert_empty_magazine", 70, 1) + A.update_icon() + update_icon() + return 1 + else + to_chat(user, "You cannot seem to get \the [src] out of your hands!") + return + else if (magazine) + to_chat(user, "There's already a magazine in \the [src].") + +//ATTACK HAND IGNORING PARENT RETURN VALUE + +/obj/item/gun/mag/attack_self(mob/living/user) + var/obj/item/ammo_casing/AC = chambered //Find chambered round + if(magazine) + magazine.forceMove(drop_location()) + user.put_in_hands(magazine) + magazine.update_icon() + if(magazine.ammo_count()) + playsound(src, 'sound/weapons/gun_magazine_remove_full.ogg', 70, 1) + else + playsound(src, "gun_remove_empty_magazine", 70, 1) + magazine = null + to_chat(user, "You pull the magazine out of \the [src].") + else if(chambered) + AC.forceMove(drop_location()) + AC.bounce_away() + chambered = null + to_chat(user, "You unload the round from \the [src]'s chamber.") + playsound(src, "gun_slide_lock", 70, 1) + else + to_chat(user, "There's no magazine in \the [src].") + update_icon() + return + + +/obj/item/gun/mag/examine(mob/user) + ..() + to_chat(user, "It has [get_ammo()] round\s remaining.") + +/obj/item/gun/mag/proc/get_ammo(countchambered = 1) + var/boolets = 0 //mature var names for mature people + if (chambered && countchambered) + boolets++ + if (magazine) + boolets += magazine.ammo_count() + return boolets + +/obj/item/gun/mag/emp_act(severity) + . = ..() + if(!(. & EMP_PROTECT_CONTENTS)) + cell.use(round(cell.charge / severity)) + recharge_newshot() //and try to charge a new shot + +/obj/item/gun/mag/get_cell() + return cell + +/obj/item/gun/mag/Initialize() + . = ..() + if(cell_type) + cell = new cell_type(src) + else + cell = new(src) + if(!dead_cell) + cell.give(cell.maxcharge) + update_ammo_types() + recharge_newshot(TRUE) + +/obj/item/gun/mag/proc/update_ammo_types() + var/obj/item/ammo_casing/mag/shot + for (var/i = 1, i <= ammo_type.len, i++) + var/shottype = ammo_type[i] + shot = new shottype(src) + ammo_type[i] = shot + fire_sound = shot.fire_sound + fire_delay = shot.delay + +/obj/item/gun/mag/Destroy() + QDEL_NULL(cell) + STOP_PROCESSING(SSobj, src) + return ..() + +/obj/item/gun/mag/can_shoot() + var/obj/item/ammo_casing/mag/ = ammo_type + return !QDELETED(cell) ? (cell.charge >= mag.e_cost) : FALSE + +/obj/item/gun/mag/recharge_newshot(no_cyborg_drain) + if (!ammo_type || !cell) + return + if(!chambered) + var/obj/item/ammo_casing/energy/AC = ammo_type + if(cell.charge >= AC.e_cost) //if there's enough power in the cell cell... + chambered = AC //...prepare a new shot based on the current ammo type selected + if(!chambered.BB) + chambered.newshot() + +/obj/item/gun/mag/process_chamber() + if(chambered && !chambered.BB) //if BB is null, i.e the shot has been fired... + var/obj/item/ammo_casing/mag/ = chambered + cell.use(mag.e_cost)//... drain the cell cell + chambered = null //either way, released the prepared shot + recharge_newshot() //try to charge a new shot + +/obj/item/gun/mag/update_icon(force_update) + if(QDELETED(src)) + return + ..() + var/ratio = CEILING(CLAMP(cell.charge / cell.maxcharge, 0, 1) * charge_sections, 1) + if(ratio == old_ratio && !force_update) + return + old_ratio = ratio + cut_overlays() + ///////XCOM X9 AR/////// /obj/item/gun/ballistic/automatic/x9 //will be adminspawn only so ERT or something can use them @@ -55,7 +237,7 @@ /obj/item/projectile/bullet/nlmags //non-lethal boolets icon = 'modular_citadel/icons/obj/guns/cit_guns.dmi' icon_state = "magjectile-nl" - damage = 0 + damage = 2 knockdown = 0 stamina = 25 armour_penetration = -10 @@ -67,18 +249,20 @@ /////actual ammo///// -/obj/item/ammo_casing/caseless/amags +/obj/item/ammo_casing/mag/amags desc = "A ferromagnetic slug intended to be launched out of a compatible weapon." caliber = "mags" icon = 'modular_citadel/icons/obj/guns/cit_guns.dmi' icon_state = "mag-casing-live" + e_cost = 50 projectile_type = /obj/item/projectile/bullet/mags -/obj/item/ammo_casing/caseless/anlmags +/obj/item/ammo_casing/mag/anlmags desc = "A specialized ferromagnetic slug designed with a less-than-lethal payload." caliber = "mags" icon = 'modular_citadel/icons/obj/guns/cit_guns.dmi' icon_state = "mag-casing-live" + e_cost = 50 projectile_type = /obj/item/projectile/bullet/nlmags //////magazines///// @@ -87,7 +271,7 @@ name = "magpistol magazine (non-lethal disabler)" icon = 'modular_citadel/icons/obj/guns/cit_guns.dmi' icon_state = "nlmagmag" - ammo_type = /obj/item/ammo_casing/caseless/anlmags + ammo_type = /obj/item/ammo_casing/mag/anlmags caliber = "mags" max_ammo = 15 multiple_sprites = 2 @@ -96,11 +280,11 @@ name = "magpistol magazine (lethal)" icon = 'modular_citadel/icons/obj/guns/cit_guns.dmi' icon_state = "smallmagmag" - ammo_type = /obj/item/ammo_casing/caseless/amags + ammo_type = /obj/item/ammo_casing/mag/amags //////the gun itself////// -/obj/item/gun/ballistic/automatic/pistol/mag +/obj/item/gun/ballistic/mag/pistol/mag name = "magpistol" desc = "A handgun utilizing maglev technologies to propel a ferromagnetic slug to extreme velocities." icon = 'modular_citadel/icons/obj/guns/cit_guns.dmi' @@ -108,12 +292,13 @@ force = 10 fire_sound = 'sound/weapons/magpistol.ogg' mag_type = /obj/item/ammo_box/magazine/mmag/small +// cell_type = /obj/item/stock_parts/cell/magpistal can_suppress = 0 casing_ejector = 0 fire_delay = 2 recoil = 0.2 -/obj/item/gun/ballistic/automatic/pistol/mag/update_icon() +/obj/item/gun/mag/automatic/pistol/mag/update_icon() ..() if(magazine) cut_overlays() @@ -122,9 +307,16 @@ cut_overlays() icon_state = "[initial(icon_state)][chambered ? "" : "-e"]" +//////the cell//////////// + +/obj/item/stock_parts/cell/magpistal + name = "magpistal hyper power cell" + desc = "A small hyper cell, used in the mag pistal" + maxcharge = 3500 //70 shots before recharge + ///research memes/// -/obj/item/gun/ballistic/automatic/pistol/mag/nopin +/obj/item/gun/mag/automatic/pistol/mag/nopin pin = null spawnwithmagazine = FALSE @@ -134,7 +326,7 @@ id = "magpisol" build_type = PROTOLATHE materials = list(MAT_METAL = 7500, MAT_GLASS = 1000, MAT_URANIUM = 1000, MAT_TITANIUM = 5000, MAT_SILVER = 2000) - build_path = /obj/item/gun/ballistic/automatic/pistol/mag/nopin + build_path = /obj/item/gun/mag/automatic/pistol/mag/nopin category = list("Weapons") departmental_flags = DEPARTMENTAL_FLAG_SECURITY @@ -210,7 +402,7 @@ /obj/item/projectile/bullet/nlmagrifle //non-lethal boolets icon = 'modular_citadel/icons/obj/guns/cit_guns.dmi' icon_state = "magjectile-large-nl" - damage = 0 + damage = 2 knockdown = 0 stamina = 25 armour_penetration = -10 @@ -221,18 +413,20 @@ ///ammo casings/// -/obj/item/ammo_casing/caseless/amagm +/obj/item/ammo_casing/energy/mag/amagm desc = "A large ferromagnetic slug intended to be launched out of a compatible weapon." caliber = "magm" icon = 'modular_citadel/icons/obj/guns/cit_guns.dmi' icon_state = "mag-casing-live" + e_cost = 50 projectile_type = /obj/item/projectile/bullet/magrifle -/obj/item/ammo_casing/caseless/anlmagm +/obj/item/ammo_casing/energy/mag/anlmagm desc = "A large, specialized ferromagnetic slug designed with a less-than-lethal payload." caliber = "magm" icon = 'modular_citadel/icons/obj/guns/cit_guns.dmi' icon_state = "mag-casing-live" + e_cost = 50 projectile_type = /obj/item/projectile/bullet/nlmagrifle ///magazines/// @@ -241,7 +435,7 @@ name = "magrifle magazine (non-lethal disabler)" icon = 'modular_citadel/icons/obj/guns/cit_guns.dmi' icon_state = "mediummagmag" - ammo_type = /obj/item/ammo_casing/caseless/anlmagm + ammo_type = /obj/item/ammo_casing/energy/mag/anlmagm caliber = "magm" max_ammo = 24 multiple_sprites = 2 @@ -250,18 +444,19 @@ name = "magrifle magazine (lethal)" icon = 'modular_citadel/icons/obj/guns/cit_guns.dmi' icon_state = "mediummagmag" - ammo_type = /obj/item/ammo_casing/caseless/amagm + ammo_type = /obj/item/ammo_casing/energy/mag/amagm max_ammo = 24 ///the gun itself/// -/obj/item/gun/ballistic/automatic/magrifle +/obj/item/gun/mag/automatic/magrifle name = "\improper Magnetic Rifle" desc = "A simple upscalling of the technologies used in the magpistol, the magrifle is capable of firing slightly larger slugs in bursts. Compatible with the magpistol's slugs." icon = 'modular_citadel/icons/obj/guns/cit_guns.dmi' icon_state = "magrifle" item_state = "arg" slot_flags = 0 + cell_type = /obj/item/stock_parts/cell/magrifle mag_type = /obj/item/ammo_box/magazine/mmag fire_sound = 'sound/weapons/magrifle.ogg' can_suppress = 0 @@ -271,6 +466,13 @@ recoil = 0.15 casing_ejector = 0 +//////the cell//////////// + +/obj/item/stock_parts/cell/magrifle + name = "magrifle hyper power cell" + desc = "A small hyper cell, used in the mag rifle" + maxcharge = 2400 //48 shots before recharge + ///research/// /obj/item/gun/ballistic/automatic/magrifle/nopin From 59226233f854df53604967254a02fa089ec4373b Mon Sep 17 00:00:00 2001 From: Trilbyspaceclone <30435998+Trilbyspaceclone@users.noreply.github.com> Date: Sun, 28 Apr 2019 14:52:46 -0400 Subject: [PATCH 27/83] Update recharger.dm --- code/game/machinery/recharger.dm | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/code/game/machinery/recharger.dm b/code/game/machinery/recharger.dm index 94b6eee8aa..d44053f433 100755 --- a/code/game/machinery/recharger.dm +++ b/code/game/machinery/recharger.dm @@ -15,7 +15,9 @@ /obj/item/gun/energy, /obj/item/melee/baton, /obj/item/ammo_box/magazine/recharge, - /obj/item/modular_computer)) + /obj/item/modular_computer, + /obj/item/gun/mag/automatic/pistol/mag, + /obj/item/gun/mag/automatic/magrifle)) /obj/machinery/recharger/RefreshParts() for(var/obj/item/stock_parts/capacitor/C in component_parts) From c59cb823bb522034f343859ed7ea1459b65f71f2 Mon Sep 17 00:00:00 2001 From: Useroth Date: Sun, 28 Apr 2019 21:14:11 +0200 Subject: [PATCH 28/83] Let's try like this. --- .../code/modules/projectiles/guns/ballistic/magweapon.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modular_citadel/code/modules/projectiles/guns/ballistic/magweapon.dm b/modular_citadel/code/modules/projectiles/guns/ballistic/magweapon.dm index 275b003fea..2a8bbb6877 100644 --- a/modular_citadel/code/modules/projectiles/guns/ballistic/magweapon.dm +++ b/modular_citadel/code/modules/projectiles/guns/ballistic/magweapon.dm @@ -150,7 +150,7 @@ return ..() /obj/item/gun/mag/can_shoot() - var/obj/item/ammo_casing/mag/ = ammo_type + var/obj/item/ammo_casing/mag/mag = ammo_type return !QDELETED(cell) ? (cell.charge >= mag.e_cost) : FALSE /obj/item/gun/mag/recharge_newshot(no_cyborg_drain) @@ -165,7 +165,7 @@ /obj/item/gun/mag/process_chamber() if(chambered && !chambered.BB) //if BB is null, i.e the shot has been fired... - var/obj/item/ammo_casing/mag/ = chambered + var/obj/item/ammo_casing/mag/mag = chambered cell.use(mag.e_cost)//... drain the cell cell chambered = null //either way, released the prepared shot recharge_newshot() //try to charge a new shot From 6021e80a8b9c68ca95150c846488ca47ae28890b Mon Sep 17 00:00:00 2001 From: BurgerLua Date: Sun, 28 Apr 2019 13:23:16 -0700 Subject: [PATCH 29/83] Update penis.dm --- modular_citadel/code/modules/arousal/organs/penis.dm | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/modular_citadel/code/modules/arousal/organs/penis.dm b/modular_citadel/code/modules/arousal/organs/penis.dm index 38e8e44f39..011fb4d9f3 100644 --- a/modular_citadel/code/modules/arousal/organs/penis.dm +++ b/modular_citadel/code/modules/arousal/organs/penis.dm @@ -40,7 +40,8 @@ var/string = "penis_[GLOB.cock_shapes_icons[shape]]_[size]" icon_state = sanitize_text(string) var/lowershape = lowertext(shape) - desc = "You see a [lowershape] penis. You estimate it's about [round(length, 0.25)] inch[length > 1 ? "es" : ""] long." + desc = "You see [aroused_state ? "an erect" : "a flacid"] [lowershape] penis. You estimate it's about [round(length, 0.25)] inch[round(length, 0.25) != 1 ? "es" : ""] long and [round(girth, 0.25)] inch[round(girth, 0.25) != 1 ? "es" : ""] in girth." + if(owner) if(owner.dna.species.use_skintones && owner.dna.features["genitals_use_skintone"]) if(ishuman(owner)) // Check before recasting type, although someone fucked up if you're not human AND have use_skintones somehow... From 36fc30f7a7a0bba87dcf9f80ccd0c207f884f1f5 Mon Sep 17 00:00:00 2001 From: BurgerLua Date: Sun, 28 Apr 2019 13:39:24 -0700 Subject: [PATCH 30/83] fugg --- modular_citadel/code/modules/arousal/organs/penis.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modular_citadel/code/modules/arousal/organs/penis.dm b/modular_citadel/code/modules/arousal/organs/penis.dm index 011fb4d9f3..18c4d44f13 100644 --- a/modular_citadel/code/modules/arousal/organs/penis.dm +++ b/modular_citadel/code/modules/arousal/organs/penis.dm @@ -40,7 +40,7 @@ var/string = "penis_[GLOB.cock_shapes_icons[shape]]_[size]" icon_state = sanitize_text(string) var/lowershape = lowertext(shape) - desc = "You see [aroused_state ? "an erect" : "a flacid"] [lowershape] penis. You estimate it's about [round(length, 0.25)] inch[round(length, 0.25) != 1 ? "es" : ""] long and [round(girth, 0.25)] inch[round(girth, 0.25) != 1 ? "es" : ""] in girth." + desc = "You see [aroused_state ? "an erect" : "a flaccid"] [lowershape] penis. You estimate it's about [round(length, 0.25)] inch[round(length, 0.25) != 1 ? "es" : ""] long and [round(girth, 0.25)] inch[round(girth, 0.25) != 1 ? "es" : ""] in girth." if(owner) if(owner.dna.species.use_skintones && owner.dna.features["genitals_use_skintone"]) From 0fa3fb6aca7b138681b33b420dc44cf2db98b14f Mon Sep 17 00:00:00 2001 From: Trilbyspaceclone <30435998+Trilbyspaceclone@users.noreply.github.com> Date: Sun, 28 Apr 2019 16:46:12 -0400 Subject: [PATCH 31/83] Update magweapon.dm --- .../projectiles/guns/ballistic/magweapon.dm | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/modular_citadel/code/modules/projectiles/guns/ballistic/magweapon.dm b/modular_citadel/code/modules/projectiles/guns/ballistic/magweapon.dm index 2a8bbb6877..b13f564f73 100644 --- a/modular_citadel/code/modules/projectiles/guns/ballistic/magweapon.dm +++ b/modular_citadel/code/modules/projectiles/guns/ballistic/magweapon.dm @@ -16,7 +16,7 @@ var/charge_delay = 4 var/dead_cell = FALSE //set to true so the gun is given an empty cell var/spawnwithmagazine = TRUE - var/mag_type = /obj/item/ammo_box/magazine/m10mm //Removes the need for max_ammo and caliber info + var/mag_type = /obj/item/ammo_box/magazine/mmag //Removes the need for max_ammo and caliber info var/obj/item/ammo_box/magazine/magazine var/casing_ejector = TRUE //whether the gun ejects the chambered casing @@ -284,7 +284,7 @@ //////the gun itself////// -/obj/item/gun/ballistic/mag/pistol/mag +/obj/item/gun/mag/pistol/mag name = "magpistol" desc = "A handgun utilizing maglev technologies to propel a ferromagnetic slug to extreme velocities." icon = 'modular_citadel/icons/obj/guns/cit_guns.dmi' @@ -292,13 +292,13 @@ force = 10 fire_sound = 'sound/weapons/magpistol.ogg' mag_type = /obj/item/ammo_box/magazine/mmag/small -// cell_type = /obj/item/stock_parts/cell/magpistal + cell_type = /obj/item/stock_parts/cell/magpistal can_suppress = 0 casing_ejector = 0 fire_delay = 2 recoil = 0.2 -/obj/item/gun/mag/automatic/pistol/mag/update_icon() +/obj/item/gun/mag/pistol/mag/update_icon() ..() if(magazine) cut_overlays() @@ -316,7 +316,7 @@ ///research memes/// -/obj/item/gun/mag/automatic/pistol/mag/nopin +/obj/item/gun/mag/pistol/mag/nopin pin = null spawnwithmagazine = FALSE @@ -326,7 +326,7 @@ id = "magpisol" build_type = PROTOLATHE materials = list(MAT_METAL = 7500, MAT_GLASS = 1000, MAT_URANIUM = 1000, MAT_TITANIUM = 5000, MAT_SILVER = 2000) - build_path = /obj/item/gun/mag/automatic/pistol/mag/nopin + build_path = /obj/item/gun/mag/pistol/mag/nopin category = list("Weapons") departmental_flags = DEPARTMENTAL_FLAG_SECURITY @@ -449,7 +449,7 @@ ///the gun itself/// -/obj/item/gun/mag/automatic/magrifle +/obj/item/gun/mag/magrifle name = "\improper Magnetic Rifle" desc = "A simple upscalling of the technologies used in the magpistol, the magrifle is capable of firing slightly larger slugs in bursts. Compatible with the magpistol's slugs." icon = 'modular_citadel/icons/obj/guns/cit_guns.dmi' @@ -475,7 +475,7 @@ ///research/// -/obj/item/gun/ballistic/automatic/magrifle/nopin +/obj/item/gun/mag/magrifle/nopin pin = null spawnwithmagazine = FALSE @@ -485,7 +485,7 @@ id = "magrifle" build_type = PROTOLATHE materials = list(MAT_METAL = 10000, MAT_GLASS = 2000, MAT_URANIUM = 2000, MAT_TITANIUM = 10000, MAT_SILVER = 4000, MAT_GOLD = 2000) - build_path = /obj/item/gun/ballistic/automatic/magrifle/nopin + build_path = /obj/item/gun/mag/magrifle/nopin category = list("Weapons") departmental_flags = DEPARTMENTAL_FLAG_SECURITY From 8055d21c0cca74d91274a0fff4abb673d722e175 Mon Sep 17 00:00:00 2001 From: Trilbyspaceclone <30435998+Trilbyspaceclone@users.noreply.github.com> Date: Sun, 28 Apr 2019 16:46:33 -0400 Subject: [PATCH 32/83] Update recharger.dm --- code/game/machinery/recharger.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/game/machinery/recharger.dm b/code/game/machinery/recharger.dm index d44053f433..6c703f5763 100755 --- a/code/game/machinery/recharger.dm +++ b/code/game/machinery/recharger.dm @@ -16,8 +16,8 @@ /obj/item/melee/baton, /obj/item/ammo_box/magazine/recharge, /obj/item/modular_computer, - /obj/item/gun/mag/automatic/pistol/mag, - /obj/item/gun/mag/automatic/magrifle)) + /obj/item/gun/mag/pistol/mag, + /obj/item/gun/mag/magrifle)) /obj/machinery/recharger/RefreshParts() for(var/obj/item/stock_parts/capacitor/C in component_parts) From bec3cf89676144ebb481025fe1aa15daf6b2b4c8 Mon Sep 17 00:00:00 2001 From: Trilbyspaceclone <30435998+Trilbyspaceclone@users.noreply.github.com> Date: Sun, 28 Apr 2019 21:24:45 -0400 Subject: [PATCH 33/83] Update magweapon.dm --- .../projectiles/guns/ballistic/magweapon.dm | 491 +++++++----------- 1 file changed, 180 insertions(+), 311 deletions(-) diff --git a/modular_citadel/code/modules/projectiles/guns/ballistic/magweapon.dm b/modular_citadel/code/modules/projectiles/guns/ballistic/magweapon.dm index b13f564f73..76450156d9 100644 --- a/modular_citadel/code/modules/projectiles/guns/ballistic/magweapon.dm +++ b/modular_citadel/code/modules/projectiles/guns/ballistic/magweapon.dm @@ -102,7 +102,6 @@ update_icon() return - /obj/item/gun/mag/examine(mob/user) ..() to_chat(user, "It has [get_ammo()] round\s remaining.") @@ -220,113 +219,127 @@ w_class = WEIGHT_CLASS_BULKY weapon_weight = WEAPON_HEAVY -////////XCOM2 Magpistol///////// +///ammo/// -//////projectiles////// +/obj/item/ammo_casing/caseless/mag_e + var/energy_cost = 0 -/obj/item/projectile/bullet/mags +/obj/item/ammo_casing/caseless/mag_e/amagm_e + desc = "A large ferromagnetic slug intended to be launched out of a compatible weapon." + caliber = "magm" icon = 'modular_citadel/icons/obj/guns/cit_guns.dmi' - icon_state = "magjectile" - damage = 15 - armour_penetration = 10 - light_range = 2 - speed = 0.6 - range = 25 - light_color = LIGHT_COLOR_RED + icon_state = "mag-casing-live" + projectile_type = /obj/item/projectile/bullet/magrifle + energy_cost = 300 -/obj/item/projectile/bullet/nlmags //non-lethal boolets +/obj/item/ammo_casing/caseless/mag_e/anlmagm_e + desc = "A large, specialized ferromagnetic slug designed with a less-than-lethal payload." + caliber = "magm" icon = 'modular_citadel/icons/obj/guns/cit_guns.dmi' - icon_state = "magjectile-nl" - damage = 2 - knockdown = 0 - stamina = 25 - armour_penetration = -10 - light_range = 2 - speed = 0.7 - range = 25 - light_color = LIGHT_COLOR_BLUE + icon_state = "mag-casing-live" + projectile_type = /obj/item/projectile/bullet/nlmagrifle + energy_cost = 300 - -/////actual ammo///// - -/obj/item/ammo_casing/mag/amags +/obj/item/ammo_casing/caseless/mag_e/amags desc = "A ferromagnetic slug intended to be launched out of a compatible weapon." caliber = "mags" icon = 'modular_citadel/icons/obj/guns/cit_guns.dmi' icon_state = "mag-casing-live" - e_cost = 50 projectile_type = /obj/item/projectile/bullet/mags + energy_cost = 200 -/obj/item/ammo_casing/mag/anlmags +/obj/item/ammo_casing/caseless/mag_e/anlmags desc = "A specialized ferromagnetic slug designed with a less-than-lethal payload." caliber = "mags" icon = 'modular_citadel/icons/obj/guns/cit_guns.dmi' icon_state = "mag-casing-live" - e_cost = 50 projectile_type = /obj/item/projectile/bullet/nlmags + energy_cost = 200 -//////magazines///// +///magazines/// -/obj/item/ammo_box/magazine/mmag/small +/obj/item/ammo_box/magazine/mmag_e/ + name = "magrifle magazine (non-lethal disabler)" + desc = "A 24-round magazine for the non-lethal Magrifle." + icon = 'modular_citadel/icons/obj/guns/cit_guns.dmi' + icon_state = "mediummagmag" + ammo_type = /obj/item/ammo_casing/caseless/mag_e/anlmagm_e + caliber = "magm" + max_ammo = 24 + multiple_sprites = 2 + +/obj/item/ammo_box/magazine/mmag_e/lethal + name = "magrifle magazine (lethal)" + desc = "A 24-round magazine for the lethal Magrifle." + icon = 'modular_citadel/icons/obj/guns/cit_guns.dmi' + icon_state = "mediummagmag" + ammo_type = /obj/item/ammo_casing/caseless/mag_e/amagm_e + max_ammo = 24 + +/obj/item/ammo_box/magazine/mmag_e/small name = "magpistol magazine (non-lethal disabler)" + desc = "A 15-round magazine for the non-lethal Magpistol." icon = 'modular_citadel/icons/obj/guns/cit_guns.dmi' icon_state = "nlmagmag" - ammo_type = /obj/item/ammo_casing/mag/anlmags + ammo_type = /obj/item/ammo_casing/caseless/mag_e/anlmags caliber = "mags" max_ammo = 15 multiple_sprites = 2 -/obj/item/ammo_box/magazine/mmag/small/lethal +/obj/item/ammo_box/magazine/mmag_e/small/lethal name = "magpistol magazine (lethal)" + desc = "A 15-round magazine for the lethal Magpistol." icon = 'modular_citadel/icons/obj/guns/cit_guns.dmi' icon_state = "smallmagmag" - ammo_type = /obj/item/ammo_casing/mag/amags + ammo_type = /obj/item/ammo_casing/caseless/mag_e/amags -//////the gun itself////// +///cells/// -/obj/item/gun/mag/pistol/mag - name = "magpistol" - desc = "A handgun utilizing maglev technologies to propel a ferromagnetic slug to extreme velocities." - icon = 'modular_citadel/icons/obj/guns/cit_guns.dmi' - icon_state = "magpistol" - force = 10 - fire_sound = 'sound/weapons/magpistol.ogg' - mag_type = /obj/item/ammo_box/magazine/mmag/small - cell_type = /obj/item/stock_parts/cell/magpistal - can_suppress = 0 - casing_ejector = 0 - fire_delay = 2 - recoil = 0.2 +/obj/item/stock_parts/cell/magrifle_e + name = "magrifle power supply" + maxcharge = 14400 -/obj/item/gun/mag/pistol/mag/update_icon() - ..() - if(magazine) - cut_overlays() - add_overlay("magpistol-magazine") - else - cut_overlays() - icon_state = "[initial(icon_state)][chambered ? "" : "-e"]" +/obj/item/stock_parts/cell/magpistol_e + name = "magpistol power supply" + maxcharge = 6000 -//////the cell//////////// +///sci designs/// -/obj/item/stock_parts/cell/magpistal - name = "magpistal hyper power cell" - desc = "A small hyper cell, used in the mag pistal" - maxcharge = 3500 //70 shots before recharge +/datum/design/magrifle_e + name = "Magrifle" + desc = "An upscaled Magpistol in rifle form." + id = "magrifle_e" + build_type = PROTOLATHE + materials = list(MAT_METAL = 10000, MAT_GLASS = 2000, MAT_URANIUM = 2000, MAT_TITANIUM = 10000, MAT_SILVER = 4000, MAT_GOLD = 2000) + build_path = /obj/item/gun/ballistic/automatic/magrifle_e/nopin + category = list("Weapons") + departmental_flags = DEPARTMENTAL_FLAG_SECURITY -///research memes/// +/datum/design/mag_magrifle_e + name = "Magrifle Magazine (Lethal)" + desc = "A 24-round magazine for the Magrifle." + id = "mag_magrifle_e" + build_type = PROTOLATHE + materials = list(MAT_METAL = 8000, MAT_SILVER = 1000) + build_path = /obj/item/ammo_box/magazine/mmag_e/lethal + category = list("Ammo") + departmental_flags = DEPARTMENTAL_FLAG_SECURITY -/obj/item/gun/mag/pistol/mag/nopin - pin = null - spawnwithmagazine = FALSE +/datum/design/mag_magrifle_e/nl + name = "Magrifle Magazine (Non-Lethal)" + desc = "A 24- round non-lethal magazine for the Magrifle." + id = "mag_magrifle_nl_e" + materials = list(MAT_METAL = 6000, MAT_SILVER = 500, MAT_TITANIUM = 500) + build_path = /obj/item/ammo_box/magazine/mmag_e + departmental_flags = DEPARTMENTAL_FLAG_SECURITY -/datum/design/magpistol +/datum/design/magpistol_e name = "Magpistol" desc = "A weapon which fires ferromagnetic slugs." id = "magpisol" build_type = PROTOLATHE materials = list(MAT_METAL = 7500, MAT_GLASS = 1000, MAT_URANIUM = 1000, MAT_TITANIUM = 5000, MAT_SILVER = 2000) - build_path = /obj/item/gun/mag/pistol/mag/nopin + build_path = /obj/item/gun/ballistic/automatic/pistol/mag_e/nopin category = list("Weapons") departmental_flags = DEPARTMENTAL_FLAG_SECURITY @@ -336,7 +349,7 @@ id = "mag_magpistol" build_type = PROTOLATHE materials = list(MAT_METAL = 4000, MAT_SILVER = 500) - build_path = /obj/item/ammo_box/magazine/mmag/small/lethal + build_path = /obj/item/ammo_box/magazine/mmag_e/small/lethal category = list("Ammo") departmental_flags = DEPARTMENTAL_FLAG_SECURITY @@ -345,119 +358,19 @@ desc = "A 14 round non-lethal magazine for the Magpistol." id = "mag_magpistol_nl" materials = list(MAT_METAL = 3000, MAT_SILVER = 250, MAT_TITANIUM = 250) - build_path = /obj/item/ammo_box/magazine/mmag/small + build_path = /obj/item/ammo_box/magazine/mmag_e/small departmental_flags = DEPARTMENTAL_FLAG_SECURITY -//////toy memes///// +///magrifle/// -/obj/item/projectile/bullet/reusable/foam_dart/mag - name = "magfoam dart" - icon = 'modular_citadel/icons/obj/guns/cit_guns.dmi' - icon_state = "magjectile-toy" - ammo_type = /obj/item/ammo_casing/caseless/foam_dart/mag - light_range = 2 - light_color = LIGHT_COLOR_YELLOW - -/obj/item/ammo_casing/caseless/foam_dart/mag - name = "magfoam dart" - desc = "A foam dart with fun light-up projectiles powered by magnets!" - projectile_type = /obj/item/projectile/bullet/reusable/foam_dart/mag - -/obj/item/ammo_box/magazine/internal/shot/toy/mag - ammo_type = /obj/item/ammo_casing/caseless/foam_dart/mag - max_ammo = 14 - -/obj/item/gun/ballistic/shotgun/toy/mag - name = "foam force magpistol" - desc = "A fancy toy sold alongside light-up foam force darts. Ages 8 and up." - icon = 'modular_citadel/icons/obj/guns/cit_guns.dmi' - icon_state = "toymag" - item_state = "gun" - mag_type = /obj/item/ammo_box/magazine/internal/shot/toy/mag - fire_sound = 'sound/weapons/magpistol.ogg' - slot_flags = SLOT_BELT - w_class = WEIGHT_CLASS_SMALL - -/obj/item/ammo_box/foambox/mag - name = "ammo box (Magnetic Foam Darts)" - icon = 'icons/obj/guns/toy.dmi' - icon_state = "foambox" - ammo_type = /obj/item/ammo_casing/caseless/foam_dart/mag - max_ammo = 42 - -//////Magrifle////// - -///projectiles/// - -/obj/item/projectile/bullet/magrifle - icon = 'modular_citadel/icons/obj/guns/cit_guns.dmi' - icon_state = "magjectile-large" - damage = 20 - armour_penetration = 25 - light_range = 3 - speed = 0.7 - range = 35 - light_color = LIGHT_COLOR_RED - -/obj/item/projectile/bullet/nlmagrifle //non-lethal boolets - icon = 'modular_citadel/icons/obj/guns/cit_guns.dmi' - icon_state = "magjectile-large-nl" - damage = 2 - knockdown = 0 - stamina = 25 - armour_penetration = -10 - light_range = 3 - speed = 0.65 - range = 35 - light_color = LIGHT_COLOR_BLUE - -///ammo casings/// - -/obj/item/ammo_casing/energy/mag/amagm - desc = "A large ferromagnetic slug intended to be launched out of a compatible weapon." - caliber = "magm" - icon = 'modular_citadel/icons/obj/guns/cit_guns.dmi' - icon_state = "mag-casing-live" - e_cost = 50 - projectile_type = /obj/item/projectile/bullet/magrifle - -/obj/item/ammo_casing/energy/mag/anlmagm - desc = "A large, specialized ferromagnetic slug designed with a less-than-lethal payload." - caliber = "magm" - icon = 'modular_citadel/icons/obj/guns/cit_guns.dmi' - icon_state = "mag-casing-live" - e_cost = 50 - projectile_type = /obj/item/projectile/bullet/nlmagrifle - -///magazines/// - -/obj/item/ammo_box/magazine/mmag/ - name = "magrifle magazine (non-lethal disabler)" - icon = 'modular_citadel/icons/obj/guns/cit_guns.dmi' - icon_state = "mediummagmag" - ammo_type = /obj/item/ammo_casing/energy/mag/anlmagm - caliber = "magm" - max_ammo = 24 - multiple_sprites = 2 - -/obj/item/ammo_box/magazine/mmag/lethal - name = "magrifle magazine (lethal)" - icon = 'modular_citadel/icons/obj/guns/cit_guns.dmi' - icon_state = "mediummagmag" - ammo_type = /obj/item/ammo_casing/energy/mag/amagm - max_ammo = 24 - -///the gun itself/// - -/obj/item/gun/mag/magrifle +/obj/item/gun/ballistic/automatic/magrifle_e name = "\improper Magnetic Rifle" desc = "A simple upscalling of the technologies used in the magpistol, the magrifle is capable of firing slightly larger slugs in bursts. Compatible with the magpistol's slugs." icon = 'modular_citadel/icons/obj/guns/cit_guns.dmi' icon_state = "magrifle" item_state = "arg" slot_flags = 0 - cell_type = /obj/item/stock_parts/cell/magrifle - mag_type = /obj/item/ammo_box/magazine/mmag + mag_type = /obj/item/ammo_box/magazine/mmag_e fire_sound = 'sound/weapons/magrifle.ogg' can_suppress = 0 burst_size = 3 @@ -465,69 +378,111 @@ spread = 5 recoil = 0.15 casing_ejector = 0 + var/obj/item/stock_parts/cell/cell + var/cell_type = /obj/item/stock_parts/cell/magrifle_e + var/dead_cell = FALSE -//////the cell//////////// +/obj/item/gun/ballistic/automatic/magrifle_e/can_shoot() + if(QDELETED(cell)) + return 0 -/obj/item/stock_parts/cell/magrifle - name = "magrifle hyper power cell" - desc = "A small hyper cell, used in the mag rifle" - maxcharge = 2400 //48 shots before recharge + var/obj/item/ammo_casing/caseless/mag_e/shot = chambered + if(!shot) + return 0 + if(cell.charge < shot.energy_cost*burst_size) + return 0 + . = ..() -///research/// +/obj/item/gun/ballistic/automatic/magrifle_e/shoot_live_shot() + var/obj/item/ammo_casing/caseless/mag_e/shot = chambered + cell.use(shot.energy_cost) + . = ..() -/obj/item/gun/mag/magrifle/nopin +/obj/item/gun/ballistic/automatic/magrifle_e/emp_act(severity) + . = ..() + if(!(. & EMP_PROTECT_CONTENTS)) + cell.use(round(cell.charge / severity)) + +/obj/item/gun/ballistic/automatic/magrifle_e/get_cell() + return cell + +/obj/item/gun/ballistic/automatic/magrifle_e/Initialize() + . = ..() + if(cell_type) + cell = new cell_type(src) + else + cell = new(src) + + if(!dead_cell) + cell.give(cell.maxcharge) + +/obj/item/gun/ballistic/automatic/magrifle_e/nopin pin = null spawnwithmagazine = FALSE -/datum/design/magrifle - name = "Magrifle" - desc = "An upscaled Magpistol in rifle form." - id = "magrifle" - build_type = PROTOLATHE - materials = list(MAT_METAL = 10000, MAT_GLASS = 2000, MAT_URANIUM = 2000, MAT_TITANIUM = 10000, MAT_SILVER = 4000, MAT_GOLD = 2000) - build_path = /obj/item/gun/mag/magrifle/nopin - category = list("Weapons") - departmental_flags = DEPARTMENTAL_FLAG_SECURITY +///magpistol/// -/datum/design/mag_magrifle - name = "Magrifle Magazine (Lethal)" - desc = "A 24-round magazine for the Magrifle." - id = "mag_magrifle" - build_type = PROTOLATHE - materials = list(MAT_METAL = 8000, MAT_SILVER = 1000) - build_path = /obj/item/ammo_box/magazine/mmag/lethal - category = list("Ammo") - departmental_flags = DEPARTMENTAL_FLAG_SECURITY - -/datum/design/mag_magrifle/nl - name = "Magrifle Magazine (Non-Lethal)" - desc = "A 24- round non-lethal magazine for the Magrifle." - id = "mag_magrifle_nl" - materials = list(MAT_METAL = 6000, MAT_SILVER = 500, MAT_TITANIUM = 500) - build_path = /obj/item/ammo_box/magazine/mmag - departmental_flags = DEPARTMENTAL_FLAG_SECURITY - -///foamagrifle/// - -/obj/item/ammo_box/magazine/toy/foamag - name = "foam force magrifle magazine" +/obj/item/gun/ballistic/automatic/pistol/mag_e + name = "magpistol" + desc = "A handgun utilizing maglev technologies to propel a ferromagnetic slug to extreme velocities." icon = 'modular_citadel/icons/obj/guns/cit_guns.dmi' - icon_state = "foamagmag" - max_ammo = 24 - multiple_sprites = 2 - ammo_type = /obj/item/ammo_casing/caseless/foam_dart/mag - materials = list(MAT_METAL = 200) + icon_state = "magpistol" + force = 10 + fire_sound = 'sound/weapons/magpistol.ogg' + mag_type = /obj/item/ammo_box/magazine/mmag_e/small + can_suppress = 0 + casing_ejector = 0 + fire_delay = 2 + recoil = 0.2 + var/obj/item/stock_parts/cell/cell + var/cell_type = /obj/item/stock_parts/cell/magpistol_e + var/dead_cell = FALSE -/obj/item/gun/ballistic/automatic/magrifle/toy - name = "foamag rifle" - desc = "A foam launching magnetic rifle. Ages 8 and up." - icon_state = "foamagrifle" - obj_flags = 0 - mag_type = /obj/item/ammo_box/magazine/toy/foamag - casing_ejector = FALSE - spread = 60 - w_class = WEIGHT_CLASS_BULKY - weapon_weight = WEAPON_HEAVY +/obj/item/gun/ballistic/automatic/pistol/mag_e/can_shoot() + if(QDELETED(cell)) + return 0 + + var/obj/item/ammo_casing/caseless/mag_e/shot = chambered + if(!shot) + return 0 + if(cell.charge < shot.energy_cost) + return 0 + . = ..() + +/obj/item/gun/ballistic/automatic/pistol/mag_e/shoot_live_shot() + var/obj/item/ammo_casing/caseless/mag_e/shot = chambered + cell.use(shot.energy_cost) + . = ..() + +/obj/item/gun/ballistic/automatic/pistol/mag_e/emp_act(severity) + . = ..() + if(!(. & EMP_PROTECT_CONTENTS)) + cell.use(round(cell.charge / severity)) + +/obj/item/gun/ballistic/automatic/pistol/mag_e/get_cell() + return cell + +/obj/item/gun/ballistic/automatic/pistol/mag_e/Initialize() + . = ..() + if(cell_type) + cell = new cell_type(src) + else + cell = new(src) + if(!dead_cell) + cell.give(cell.maxcharge) + +/obj/item/gun/ballistic/automatic/pistol/mag_e/update_icon() + ..() + if(magazine) + cut_overlays() + add_overlay("magpistol-magazine") + else + cut_overlays() + icon_state = "[initial(icon_state)][chambered ? "" : "-e"]" + +/obj/item/gun/ballistic/automatic/pistol/mag_e/nopin + pin = null + spawnwithmagazine = FALSE /* // TECHWEBS IMPLEMENTATION @@ -542,93 +497,7 @@ research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2500) export_price = 5000 - -//////Hyper-Burst Rifle////// - -///projectiles/// - -/obj/item/projectile/bullet/mags/hyper - icon = 'modular_citadel/icons/obj/guns/cit_guns.dmi' - icon_state = "magjectile" - damage = 10 - armour_penetration = 10 - stamina = 10 - forcedodge = TRUE - range = 6 - light_range = 1 - light_color = LIGHT_COLOR_RED - -/obj/item/projectile/bullet/mags/hyper/inferno - icon_state = "magjectile-large" - stamina = 0 - forcedodge = FALSE - range = 25 - light_range = 4 - -/obj/item/projectile/bullet/mags/hyper/inferno/on_hit(atom/target, blocked = FALSE) - ..() - explosion(target, -1, 1, 2, 4, 5) - return 1 - -///ammo casings/// - -/obj/item/ammo_casing/caseless/ahyper - desc = "A large block of speciallized ferromagnetic material designed to be fired out of the experimental Hyper-Burst Rifle." - caliber = "hypermag" - icon = 'modular_citadel/icons/obj/guns/cit_guns.dmi' - icon_state = "hyper-casing-live" - projectile_type = /obj/item/projectile/bullet/mags/hyper - pellets = 12 - variance = 40 - -/obj/item/ammo_casing/caseless/ahyper/inferno - projectile_type = /obj/item/projectile/bullet/mags/hyper/inferno - pellets = 1 - variance = 0 - -///magazines/// - -/obj/item/ammo_box/magazine/mhyper - name = "hyper-burst rifle magazine" - icon = 'modular_citadel/icons/obj/guns/cit_guns.dmi' - icon_state = "hypermag-4" - ammo_type = /obj/item/ammo_casing/caseless/ahyper - caliber = "hypermag" - desc = "A magazine for the Hyper-Burst Rifle. Loaded with a special slug that fragments into 12 smaller shards which can absolutely puncture anything, but has rather short effective range." - max_ammo = 4 - -/obj/item/ammo_box/magazine/mhyper/update_icon() - ..() - icon_state = "hypermag-[ammo_count() ? "4" : "0"]" - -/obj/item/ammo_box/magazine/mhyper/inferno - name = "hyper-burst rifle magazine (inferno)" - ammo_type = /obj/item/ammo_casing/caseless/ahyper/inferno - desc = "A magazine for the Hyper-Burst Rifle. Loaded with a special slug that violently reacts with whatever surface it strikes, generating a massive amount of heat and light." - -///gun itself/// - -/obj/item/gun/ballistic/automatic/hyperburst - name = "\improper Hyper-Burst Rifle" - desc = "An extremely beefed up version of a stolen Nanotrasen weapon prototype, this 'rifle' is more like a cannon, with an extremely large bore barrel capable of generating several smaller magnetic 'barrels' to simultaneously launch multiple projectiles at once." - icon = 'modular_citadel/icons/obj/guns/cit_guns.dmi' - icon_state = "hyperburst" - item_state = "arg" - slot_flags = 0 - mag_type = /obj/item/ammo_box/magazine/mhyper - fire_sound = 'sound/weapons/magburst.ogg' - can_suppress = 0 - burst_size = 1 - fire_delay = 40 - recoil = 2 - casing_ejector = 0 - weapon_weight = WEAPON_HEAVY - -/obj/item/gun/ballistic/automatic/hyperburst/update_icon() - ..() - icon_state = "hyperburst[magazine ? "-[get_ammo()]" : ""][chambered ? "" : "-e"]" - -///toy memes/// +//Toy Memes /obj/item/projectile/beam/lasertag/mag //the projectile, compatible with regular laser tag armor icon = 'modular_citadel/icons/obj/guns/cit_guns.dmi' From a9aa85530503b34eb776d101f66b5ae7531e0ea6 Mon Sep 17 00:00:00 2001 From: Trilbyspaceclone <30435998+Trilbyspaceclone@users.noreply.github.com> Date: Sun, 28 Apr 2019 21:25:18 -0400 Subject: [PATCH 34/83] Update recharger.dm --- code/game/machinery/recharger.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/game/machinery/recharger.dm b/code/game/machinery/recharger.dm index 6c703f5763..927608d3d5 100755 --- a/code/game/machinery/recharger.dm +++ b/code/game/machinery/recharger.dm @@ -16,8 +16,8 @@ /obj/item/melee/baton, /obj/item/ammo_box/magazine/recharge, /obj/item/modular_computer, - /obj/item/gun/mag/pistol/mag, - /obj/item/gun/mag/magrifle)) + /obj/item/gun/ballistic/automatic/magrifle_e, + /obj/item/gun/ballistic/automatic/pistol/mag_e)) /obj/machinery/recharger/RefreshParts() for(var/obj/item/stock_parts/capacitor/C in component_parts) From fb7a129ca573b477c64d797b2763152050b9f685 Mon Sep 17 00:00:00 2001 From: Trilbyspaceclone <30435998+Trilbyspaceclone@users.noreply.github.com> Date: Sun, 28 Apr 2019 21:56:48 -0400 Subject: [PATCH 35/83] Update magweapon.dm --- .../projectiles/guns/ballistic/magweapon.dm | 86 +++++++++++++++++++ 1 file changed, 86 insertions(+) diff --git a/modular_citadel/code/modules/projectiles/guns/ballistic/magweapon.dm b/modular_citadel/code/modules/projectiles/guns/ballistic/magweapon.dm index adffe54761..e6ef3e36e4 100644 --- a/modular_citadel/code/modules/projectiles/guns/ballistic/magweapon.dm +++ b/modular_citadel/code/modules/projectiles/guns/ballistic/magweapon.dm @@ -532,6 +532,92 @@ research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2500) export_price = 5000 + +//////Hyper-Burst Rifle////// + +///projectiles/// + +/obj/item/projectile/bullet/mags/hyper + icon = 'modular_citadel/icons/obj/guns/cit_guns.dmi' + icon_state = "magjectile" + damage = 10 + armour_penetration = 10 + stamina = 10 + forcedodge = TRUE + range = 6 + light_range = 1 + light_color = LIGHT_COLOR_RED + +/obj/item/projectile/bullet/mags/hyper/inferno + icon_state = "magjectile-large" + stamina = 0 + forcedodge = FALSE + range = 25 + light_range = 4 + +/obj/item/projectile/bullet/mags/hyper/inferno/on_hit(atom/target, blocked = FALSE) + ..() + explosion(target, -1, 1, 2, 4, 5) + return 1 + +///ammo casings/// + +/obj/item/ammo_casing/caseless/ahyper + desc = "A large block of speciallized ferromagnetic material designed to be fired out of the experimental Hyper-Burst Rifle." + caliber = "hypermag" + icon = 'modular_citadel/icons/obj/guns/cit_guns.dmi' + icon_state = "hyper-casing-live" + projectile_type = /obj/item/projectile/bullet/mags/hyper + pellets = 12 + variance = 40 + +/obj/item/ammo_casing/caseless/ahyper/inferno + projectile_type = /obj/item/projectile/bullet/mags/hyper/inferno + pellets = 1 + variance = 0 + +///magazines/// + +/obj/item/ammo_box/magazine/mhyper + name = "hyper-burst rifle magazine" + icon = 'modular_citadel/icons/obj/guns/cit_guns.dmi' + icon_state = "hypermag-4" + ammo_type = /obj/item/ammo_casing/caseless/ahyper + caliber = "hypermag" + desc = "A magazine for the Hyper-Burst Rifle. Loaded with a special slug that fragments into 12 smaller shards which can absolutely puncture anything, but has rather short effective range." + max_ammo = 4 + +/obj/item/ammo_box/magazine/mhyper/update_icon() + ..() + icon_state = "hypermag-[ammo_count() ? "4" : "0"]" + +/obj/item/ammo_box/magazine/mhyper/inferno + name = "hyper-burst rifle magazine (inferno)" + ammo_type = /obj/item/ammo_casing/caseless/ahyper/inferno + desc = "A magazine for the Hyper-Burst Rifle. Loaded with a special slug that violently reacts with whatever surface it strikes, generating a massive amount of heat and light." + +///gun itself/// + +/obj/item/gun/ballistic/automatic/hyperburst + name = "\improper Hyper-Burst Rifle" + desc = "An extremely beefed up version of a stolen Nanotrasen weapon prototype, this 'rifle' is more like a cannon, with an extremely large bore barrel capable of generating several smaller magnetic 'barrels' to simultaneously launch multiple projectiles at once." + icon = 'modular_citadel/icons/obj/guns/cit_guns.dmi' + icon_state = "hyperburst" + item_state = "arg" + slot_flags = 0 + mag_type = /obj/item/ammo_box/magazine/mhyper + fire_sound = 'sound/weapons/magburst.ogg' + can_suppress = 0 + burst_size = 1 + fire_delay = 40 + recoil = 2 + casing_ejector = 0 + weapon_weight = WEAPON_HEAVY + +/obj/item/gun/ballistic/automatic/hyperburst/update_icon() + ..() + icon_state = "hyperburst[magazine ? "-[get_ammo()]" : ""][chambered ? "" : "-e"]" + //Toy Memes /obj/item/projectile/beam/lasertag/mag //the projectile, compatible with regular laser tag armor From ad2cacb59ea4ad9d5308cb2f2cbc73f746e7fc69 Mon Sep 17 00:00:00 2001 From: Trilbyspaceclone <30435998+Trilbyspaceclone@users.noreply.github.com> Date: Sun, 28 Apr 2019 22:05:53 -0400 Subject: [PATCH 36/83] toys --- .../projectiles/guns/ballistic/magweapon.dm | 148 ++++++++++-------- 1 file changed, 85 insertions(+), 63 deletions(-) diff --git a/modular_citadel/code/modules/projectiles/guns/ballistic/magweapon.dm b/modular_citadel/code/modules/projectiles/guns/ballistic/magweapon.dm index e6ef3e36e4..82b9e94ada 100644 --- a/modular_citadel/code/modules/projectiles/guns/ballistic/magweapon.dm +++ b/modular_citadel/code/modules/projectiles/guns/ballistic/magweapon.dm @@ -196,29 +196,6 @@ spread = 30 //should be 40 for XCOM memes, but since its adminspawn only, might as well make it useable recoil = 1 -///toy memes/// - -/obj/item/ammo_box/magazine/toy/x9 - name = "foam force X9 magazine" - icon = 'modular_citadel/icons/obj/guns/cit_guns.dmi' - icon_state = "toy9magazine" - max_ammo = 30 - multiple_sprites = 2 - materials = list(MAT_METAL = 200) - -/obj/item/gun/ballistic/automatic/x9/toy - name = "\improper Foam Force X9" - desc = "An old but reliable assault rifle made for combat against unknown enemies. Appears to be hastily converted. Ages 8 and up." - icon = 'modular_citadel/icons/obj/guns/cit_guns.dmi' - icon_state = "toy9" - can_suppress = 0 - obj_flags = 0 - mag_type = /obj/item/ammo_box/magazine/toy/x9 - casing_ejector = 0 - spread = 90 //MAXIMUM XCOM MEMES (actually that'd be 180 spread) - w_class = WEIGHT_CLASS_BULKY - weapon_weight = WEAPON_HEAVY - ///ammo/// /obj/item/ammo_casing/caseless/mag_e @@ -336,17 +313,17 @@ /datum/design/magpistol_e name = "Magpistol" desc = "A weapon which fires ferromagnetic slugs." - id = "magpisol" + id = "magpisol_e" build_type = PROTOLATHE materials = list(MAT_METAL = 7500, MAT_GLASS = 1000, MAT_URANIUM = 1000, MAT_TITANIUM = 5000, MAT_SILVER = 2000) build_path = /obj/item/gun/ballistic/automatic/pistol/mag_e/nopin category = list("Weapons") departmental_flags = DEPARTMENTAL_FLAG_SECURITY -/datum/design/mag_magpistol +/datum/design/mag_magpistol_e name = "Magpistol Magazine" desc = "A 14 round magazine for the Magpistol." - id = "mag_magpistol" + id = "mag_magpistol_e" build_type = PROTOLATHE materials = list(MAT_METAL = 4000, MAT_SILVER = 500) build_path = /obj/item/ammo_box/magazine/mmag_e/small/lethal @@ -356,46 +333,11 @@ /datum/design/mag_magpistol/nl name = "Magpistol Magazine (Non-Lethal)" desc = "A 14 round non-lethal magazine for the Magpistol." - id = "mag_magpistol_nl" + id = "mag_magpistol_nl_e" materials = list(MAT_METAL = 3000, MAT_SILVER = 250, MAT_TITANIUM = 250) build_path = /obj/item/ammo_box/magazine/mmag_e/small departmental_flags = DEPARTMENTAL_FLAG_SECURITY -/obj/item/projectile/bullet/reusable/foam_dart/mag - name = "magfoam dart" - icon = 'modular_citadel/icons/obj/guns/cit_guns.dmi' - icon_state = "magjectile-toy" - ammo_type = /obj/item/ammo_casing/caseless/foam_dart/mag - light_range = 2 - light_color = LIGHT_COLOR_YELLOW - -/obj/item/ammo_casing/caseless/foam_dart/mag - name = "magfoam dart" - desc = "A foam dart with fun light-up projectiles powered by magnets!" - projectile_type = /obj/item/projectile/bullet/reusable/foam_dart/mag - -/obj/item/ammo_box/magazine/internal/shot/toy/mag - ammo_type = /obj/item/ammo_casing/caseless/foam_dart/mag - max_ammo = 14 - -/obj/item/gun/ballistic/shotgun/toy/mag - name = "foam force magpistol" - desc = "A fancy toy sold alongside light-up foam force darts. Ages 8 and up." - icon = 'modular_citadel/icons/obj/guns/cit_guns.dmi' - icon_state = "toymag" - item_state = "gun" - mag_type = /obj/item/ammo_box/magazine/internal/shot/toy/mag - fire_sound = 'sound/weapons/magpistol.ogg' - slot_flags = SLOT_BELT - w_class = WEIGHT_CLASS_SMALL - -/obj/item/ammo_box/foambox/mag - name = "ammo box (Magnetic Foam Darts)" - icon = 'icons/obj/guns/toy.dmi' - icon_state = "foambox" - ammo_type = /obj/item/ammo_casing/caseless/foam_dart/mag - max_ammo = 42 - ///////////////// Mag rifle///////////////// /obj/item/gun/ballistic/automatic/magrifle_e @@ -528,7 +470,7 @@ display_name = "Magnetic Weapons" description = "Weapons using magnetic technology" prereq_ids = list("weaponry", "adv_weaponry", "emp_adv") - design_ids = list("magrifle", "magpisol", "mag_magrifle", "mag_magrifle_nl", "mag_magpistol", "mag_magpistol_nl") + design_ids = list("magrifle_e", "magpisol_e", "mag_magrifle_e", "mag_magrifle_nl_e", "mag_magpistol_e", "mag_magpistol_nl_e") research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2500) export_price = 5000 @@ -656,3 +598,83 @@ /obj/item/stock_parts/cell/toymagburst name = "toy mag burst rifle power supply" maxcharge = 4000 + +///foamagrifles/// + +/obj/item/gun/ballistic/automatic/magrifle/toy + name = "foamag rifle" + desc = "A foam launching magnetic rifle. Ages 8 and up." + icon_state = "foamagrifle" + obj_flags = 0 + mag_type = /obj/item/ammo_box/magazine/toy/foamag + casing_ejector = FALSE + spread = 60 + w_class = WEIGHT_CLASS_BULKY + weapon_weight = WEAPON_HEAVY + +/obj/item/gun/ballistic/shotgun/toy/mag + name = "foam force magpistol" + desc = "A fancy toy sold alongside light-up foam force darts. Ages 8 and up." + icon = 'modular_citadel/icons/obj/guns/cit_guns.dmi' + icon_state = "toymag" + item_state = "gun" + mag_type = /obj/item/ammo_box/magazine/internal/shot/toy/mag + fire_sound = 'sound/weapons/magpistol.ogg' + slot_flags = SLOT_BELT + w_class = WEIGHT_CLASS_SMALL + +/obj/item/gun/ballistic/automatic/x9/toy + name = "\improper Foam Force X9" + desc = "An old but reliable assault rifle made for combat against unknown enemies. Appears to be hastily converted. Ages 8 and up." + icon = 'modular_citadel/icons/obj/guns/cit_guns.dmi' + icon_state = "toy9" + can_suppress = 0 + obj_flags = 0 + mag_type = /obj/item/ammo_box/magazine/toy/x9 + casing_ejector = 0 + spread = 90 //MAXIMUM XCOM MEMES (actually that'd be 180 spread) + w_class = WEIGHT_CLASS_BULKY + weapon_weight = WEAPON_HEAVY + +//Toy bullet-things + +/obj/item/projectile/bullet/reusable/foam_dart/mag + name = "magfoam dart" + icon = 'modular_citadel/icons/obj/guns/cit_guns.dmi' + icon_state = "magjectile-toy" + ammo_type = /obj/item/ammo_casing/caseless/foam_dart/mag + light_range = 2 + light_color = LIGHT_COLOR_YELLOW + +/obj/item/ammo_casing/caseless/foam_dart/mag + name = "magfoam dart" + desc = "A foam dart with fun light-up projectiles powered by magnets!" + projectile_type = /obj/item/projectile/bullet/reusable/foam_dart/mag + +/obj/item/ammo_box/magazine/internal/shot/toy/mag + ammo_type = /obj/item/ammo_casing/caseless/foam_dart/mag + max_ammo = 14 + +/obj/item/ammo_box/magazine/toy/foamag + name = "foam force magrifle magazine" + icon = 'modular_citadel/icons/obj/guns/cit_guns.dmi' + icon_state = "foamagmag" + max_ammo = 24 + multiple_sprites = 2 + ammo_type = /obj/item/ammo_casing/caseless/foam_dart/mag + materials = list(MAT_METAL = 200) + +/obj/item/ammo_box/foambox/mag + name = "ammo box (Magnetic Foam Darts)" + icon = 'icons/obj/guns/toy.dmi' + icon_state = "foambox" + ammo_type = /obj/item/ammo_casing/caseless/foam_dart/mag + max_ammo = 42 + +/obj/item/ammo_box/magazine/toy/x9 + name = "foam force X9 magazine" + icon = 'modular_citadel/icons/obj/guns/cit_guns.dmi' + icon_state = "toy9magazine" + max_ammo = 30 + multiple_sprites = 2 + materials = list(MAT_METAL = 200) From 9ff3918ffdca6a5456f7b4771a342b6087a69f61 Mon Sep 17 00:00:00 2001 From: Trilbyspaceclone <30435998+Trilbyspaceclone@users.noreply.github.com> Date: Sun, 28 Apr 2019 22:25:19 -0400 Subject: [PATCH 37/83] Update magweapon.dm --- .../projectiles/guns/ballistic/magweapon.dm | 70 +++++++++++++++++++ 1 file changed, 70 insertions(+) diff --git a/modular_citadel/code/modules/projectiles/guns/ballistic/magweapon.dm b/modular_citadel/code/modules/projectiles/guns/ballistic/magweapon.dm index 82b9e94ada..712dd9729d 100644 --- a/modular_citadel/code/modules/projectiles/guns/ballistic/magweapon.dm +++ b/modular_citadel/code/modules/projectiles/guns/ballistic/magweapon.dm @@ -196,6 +196,76 @@ spread = 30 //should be 40 for XCOM memes, but since its adminspawn only, might as well make it useable recoil = 1 +////bullets/// + +/obj/item/projectile/bullet/mags + icon = 'modular_citadel/icons/obj/guns/cit_guns.dmi' + icon_state = "magjectile" + damage = 15 + armour_penetration = 10 + light_range = 2 + speed = 0.6 + range = 25 + light_color = LIGHT_COLOR_RED + +/obj/item/projectile/bullet/nlmags //non-lethal boolets + icon = 'modular_citadel/icons/obj/guns/cit_guns.dmi' + icon_state = "magjectile-nl" + damage = 2 + knockdown = 0 + stamina = 25 + armour_penetration = -10 + light_range = 2 + speed = 0.7 + range = 25 + light_color = LIGHT_COLOR_BLUE + +////bullets/// + +/obj/item/projectile/bullet/mags + icon = 'modular_citadel/icons/obj/guns/cit_guns.dmi' + icon_state = "magjectile" + damage = 15 + armour_penetration = 10 + light_range = 2 + speed = 0.6 + range = 25 + light_color = LIGHT_COLOR_RED + +/obj/item/projectile/bullet/nlmags //non-lethal boolets + icon = 'modular_citadel/icons/obj/guns/cit_guns.dmi' + icon_state = "magjectile-nl" + damage = 2 + knockdown = 0 + stamina = 25 + armour_penetration = -10 + light_range = 2 + speed = 0.7 + range = 25 + light_color = LIGHT_COLOR_BLUE + +/obj/item/projectile/bullet/magrifle + icon = 'modular_citadel/icons/obj/guns/cit_guns.dmi' + icon_state = "magjectile-large" + damage = 20 + armour_penetration = 25 + light_range = 3 + speed = 0.7 + range = 35 + light_color = LIGHT_COLOR_RED + +/obj/item/projectile/bullet/nlmagrifle //non-lethal boolets + icon = 'modular_citadel/icons/obj/guns/cit_guns.dmi' + icon_state = "magjectile-large-nl" + damage = 2 + knockdown = 0 + stamina = 25 + armour_penetration = -10 + light_range = 3 + speed = 0.65 + range = 35 + light_color = LIGHT_COLOR_BLUE + ///ammo/// /obj/item/ammo_casing/caseless/mag_e From f6bb8b6aefcaed749df49668d32a580abdad6c99 Mon Sep 17 00:00:00 2001 From: Trilbyspaceclone <30435998+Trilbyspaceclone@users.noreply.github.com> Date: Sun, 28 Apr 2019 22:33:58 -0400 Subject: [PATCH 38/83] Update magweapon.dm --- .../code/modules/projectiles/guns/ballistic/magweapon.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modular_citadel/code/modules/projectiles/guns/ballistic/magweapon.dm b/modular_citadel/code/modules/projectiles/guns/ballistic/magweapon.dm index 712dd9729d..c5d47de86c 100644 --- a/modular_citadel/code/modules/projectiles/guns/ballistic/magweapon.dm +++ b/modular_citadel/code/modules/projectiles/guns/ballistic/magweapon.dm @@ -16,7 +16,7 @@ var/charge_delay = 4 var/dead_cell = FALSE //set to true so the gun is given an empty cell var/spawnwithmagazine = TRUE - var/mag_type = /obj/item/ammo_box/magazine/mmag //Removes the need for max_ammo and caliber info + var/mag_type = /obj/item/ammo_box/magazine/mmag_e //Removes the need for max_ammo and caliber info var/obj/item/ammo_box/magazine/magazine var/casing_ejector = TRUE //whether the gun ejects the chambered casing From bc251b59aa4a1767a6bfdaa06359cec78fb79d03 Mon Sep 17 00:00:00 2001 From: Trilbyspaceclone <30435998+Trilbyspaceclone@users.noreply.github.com> Date: Sun, 28 Apr 2019 22:43:01 -0400 Subject: [PATCH 39/83] Update magweapon.dm --- .../projectiles/guns/ballistic/magweapon.dm | 716 ++++++------------ 1 file changed, 216 insertions(+), 500 deletions(-) diff --git a/modular_citadel/code/modules/projectiles/guns/ballistic/magweapon.dm b/modular_citadel/code/modules/projectiles/guns/ballistic/magweapon.dm index c5d47de86c..13e1c0007c 100644 --- a/modular_citadel/code/modules/projectiles/guns/ballistic/magweapon.dm +++ b/modular_citadel/code/modules/projectiles/guns/ballistic/magweapon.dm @@ -1,184 +1,3 @@ -//Stollen vars so this all work for real - Copy pasted addtion - -/obj/item/ammo_casing/mag/ - var/e_cost = 50 - -/obj/item/gun/mag - var/obj/item/stock_parts/cell/cell //What type of power cell this uses - var/cell_type = /obj/item/stock_parts/cell - var/modifystate = 0 - var/list/ammo_type = list(/obj/item/ammo_casing/mag) - var/can_charge = 1 //Can it be charged in a recharger? - var/charge_sections = 4 - ammo_x_offset = 2 - var/old_ratio = 0 // stores the gun's previous ammo "ratio" to see if it needs an updated iconn - var/charge_tick = 0 - var/charge_delay = 4 - var/dead_cell = FALSE //set to true so the gun is given an empty cell - var/spawnwithmagazine = TRUE - var/mag_type = /obj/item/ammo_box/magazine/mmag_e //Removes the need for max_ammo and caliber info - var/obj/item/ammo_box/magazine/magazine - var/casing_ejector = TRUE //whether the gun ejects the chambered casing - -/obj/item/gun/mag/Initialize() - . = ..() - if(!spawnwithmagazine) - update_icon() - return - if (!magazine) - magazine = new mag_type(src) - chamber_round() - update_icon() - -/obj/item/gun/mag/process_chamber(empty_chamber = 1) - var/obj/item/ammo_casing/AC = chambered //Find chambered round - if(istype(AC)) //there's a chambered round - if(casing_ejector) - AC.forceMove(drop_location()) //Eject casing onto ground. - AC.bounce_away(TRUE) - chambered = null - else if(empty_chamber) - chambered = null - chamber_round() - -/obj/item/gun/mag/proc/chamber_round() - if (chambered || !magazine) - return - else if (magazine.ammo_count()) - chambered = magazine.get_round() - chambered.forceMove(src) - -/obj/item/gun/mag/can_shoot() - if(!magazine || !magazine.ammo_count(0)) - return 0 - return 1 - -/obj/item/gun/mag/attackby(obj/item/A, mob/user, params) - ..() - if (istype(A, /obj/item/ammo_box/magazine)) - var/obj/item/ammo_box/magazine/AM = A - if (!magazine && istype(AM, mag_type)) - if(user.transferItemToLoc(AM, src)) - magazine = AM - to_chat(user, "You load a new magazine into \the [src].") - if(magazine.ammo_count()) - playsound(src, "gun_insert_full_magazine", 70, 1) - if(!chambered) - chamber_round() - addtimer(CALLBACK(GLOBAL_PROC, .proc/playsound, src, 'sound/weapons/gun_chamber_round.ogg', 100, 1), 3) - else - playsound(src, "gun_insert_empty_magazine", 70, 1) - A.update_icon() - update_icon() - return 1 - else - to_chat(user, "You cannot seem to get \the [src] out of your hands!") - return - else if (magazine) - to_chat(user, "There's already a magazine in \the [src].") - -//ATTACK HAND IGNORING PARENT RETURN VALUE - -/obj/item/gun/mag/attack_self(mob/living/user) - var/obj/item/ammo_casing/AC = chambered //Find chambered round - if(magazine) - magazine.forceMove(drop_location()) - user.put_in_hands(magazine) - magazine.update_icon() - if(magazine.ammo_count()) - playsound(src, 'sound/weapons/gun_magazine_remove_full.ogg', 70, 1) - else - playsound(src, "gun_remove_empty_magazine", 70, 1) - magazine = null - to_chat(user, "You pull the magazine out of \the [src].") - else if(chambered) - AC.forceMove(drop_location()) - AC.bounce_away() - chambered = null - to_chat(user, "You unload the round from \the [src]'s chamber.") - playsound(src, "gun_slide_lock", 70, 1) - else - to_chat(user, "There's no magazine in \the [src].") - update_icon() - return - -/obj/item/gun/mag/examine(mob/user) - ..() - to_chat(user, "It has [get_ammo()] round\s remaining.") - -/obj/item/gun/mag/proc/get_ammo(countchambered = 1) - var/boolets = 0 //mature var names for mature people - if (chambered && countchambered) - boolets++ - if (magazine) - boolets += magazine.ammo_count() - return boolets - -/obj/item/gun/mag/emp_act(severity) - . = ..() - if(!(. & EMP_PROTECT_CONTENTS)) - cell.use(round(cell.charge / severity)) - recharge_newshot() //and try to charge a new shot - -/obj/item/gun/mag/get_cell() - return cell - -/obj/item/gun/mag/Initialize() - . = ..() - if(cell_type) - cell = new cell_type(src) - else - cell = new(src) - if(!dead_cell) - cell.give(cell.maxcharge) - update_ammo_types() - recharge_newshot(TRUE) - -/obj/item/gun/mag/proc/update_ammo_types() - var/obj/item/ammo_casing/mag/shot - for (var/i = 1, i <= ammo_type.len, i++) - var/shottype = ammo_type[i] - shot = new shottype(src) - ammo_type[i] = shot - fire_sound = shot.fire_sound - fire_delay = shot.delay - -/obj/item/gun/mag/Destroy() - QDEL_NULL(cell) - STOP_PROCESSING(SSobj, src) - return ..() - -/obj/item/gun/mag/can_shoot() - var/obj/item/ammo_casing/mag/mag = ammo_type - return !QDELETED(cell) ? (cell.charge >= mag.e_cost) : FALSE - -/obj/item/gun/mag/recharge_newshot(no_cyborg_drain) - if (!ammo_type || !cell) - return - if(!chambered) - var/obj/item/ammo_casing/energy/AC = ammo_type - if(cell.charge >= AC.e_cost) //if there's enough power in the cell cell... - chambered = AC //...prepare a new shot based on the current ammo type selected - if(!chambered.BB) - chambered.newshot() - -/obj/item/gun/mag/process_chamber() - if(chambered && !chambered.BB) //if BB is null, i.e the shot has been fired... - var/obj/item/ammo_casing/mag/mag = chambered - cell.use(mag.e_cost)//... drain the cell cell - chambered = null //either way, released the prepared shot - recharge_newshot() //try to charge a new shot - -/obj/item/gun/mag/update_icon(force_update) - if(QDELETED(src)) - return - ..() - var/ratio = CEILING(CLAMP(cell.charge / cell.maxcharge, 0, 1) * charge_sections, 1) - if(ratio == old_ratio && !force_update) - return - old_ratio = ratio - cut_overlays() - ///////XCOM X9 AR/////// /obj/item/gun/ballistic/automatic/x9 //will be adminspawn only so ERT or something can use them @@ -196,7 +15,32 @@ spread = 30 //should be 40 for XCOM memes, but since its adminspawn only, might as well make it useable recoil = 1 -////bullets/// +///toy memes/// + +/obj/item/ammo_box/magazine/toy/x9 + name = "foam force X9 magazine" + icon = 'modular_citadel/icons/obj/guns/cit_guns.dmi' + icon_state = "toy9magazine" + max_ammo = 30 + multiple_sprites = 2 + materials = list(MAT_METAL = 200) + +/obj/item/gun/ballistic/automatic/x9/toy + name = "\improper Foam Force X9" + desc = "An old but reliable assault rifle made for combat against unknown enemies. Appears to be hastily converted. Ages 8 and up." + icon = 'modular_citadel/icons/obj/guns/cit_guns.dmi' + icon_state = "toy9" + can_suppress = 0 + obj_flags = 0 + mag_type = /obj/item/ammo_box/magazine/toy/x9 + casing_ejector = 0 + spread = 90 //MAXIMUM XCOM MEMES (actually that'd be 180 spread) + w_class = WEIGHT_CLASS_BULKY + weapon_weight = WEAPON_HEAVY + +////////XCOM2 Magpistol///////// + +//////projectiles////// /obj/item/projectile/bullet/mags icon = 'modular_citadel/icons/obj/guns/cit_guns.dmi' @@ -220,29 +64,138 @@ range = 25 light_color = LIGHT_COLOR_BLUE -////bullets/// -/obj/item/projectile/bullet/mags - icon = 'modular_citadel/icons/obj/guns/cit_guns.dmi' - icon_state = "magjectile" - damage = 15 - armour_penetration = 10 - light_range = 2 - speed = 0.6 - range = 25 - light_color = LIGHT_COLOR_RED +/////actual ammo///// -/obj/item/projectile/bullet/nlmags //non-lethal boolets +/obj/item/ammo_casing/caseless/amags + desc = "A ferromagnetic slug intended to be launched out of a compatible weapon." + caliber = "mags" icon = 'modular_citadel/icons/obj/guns/cit_guns.dmi' - icon_state = "magjectile-nl" - damage = 2 - knockdown = 0 - stamina = 25 - armour_penetration = -10 + icon_state = "mag-casing-live" + projectile_type = /obj/item/projectile/bullet/mags + +/obj/item/ammo_casing/caseless/anlmags + desc = "A specialized ferromagnetic slug designed with a less-than-lethal payload." + caliber = "mags" + icon = 'modular_citadel/icons/obj/guns/cit_guns.dmi' + icon_state = "mag-casing-live" + projectile_type = /obj/item/projectile/bullet/nlmags + +//////magazines///// + +/obj/item/ammo_box/magazine/mmag/small + name = "magpistol magazine (non-lethal disabler)" + icon = 'modular_citadel/icons/obj/guns/cit_guns.dmi' + icon_state = "nlmagmag" + ammo_type = /obj/item/ammo_casing/caseless/anlmags + caliber = "mags" + max_ammo = 15 + multiple_sprites = 2 + +/obj/item/ammo_box/magazine/mmag/small/lethal + name = "magpistol magazine (lethal)" + icon = 'modular_citadel/icons/obj/guns/cit_guns.dmi' + icon_state = "smallmagmag" + ammo_type = /obj/item/ammo_casing/caseless/amags + +//////the gun itself////// + +/obj/item/gun/ballistic/automatic/pistol/mag + name = "magpistol" + desc = "A handgun utilizing maglev technologies to propel a ferromagnetic slug to extreme velocities." + icon = 'modular_citadel/icons/obj/guns/cit_guns.dmi' + icon_state = "magpistol" + force = 10 + fire_sound = 'sound/weapons/magpistol.ogg' + mag_type = /obj/item/ammo_box/magazine/mmag/small + can_suppress = 0 + casing_ejector = 0 + fire_delay = 2 + recoil = 0.2 + +/obj/item/gun/ballistic/automatic/pistol/mag/update_icon() + ..() + if(magazine) + cut_overlays() + add_overlay("magpistol-magazine") + else + cut_overlays() + icon_state = "[initial(icon_state)][chambered ? "" : "-e"]" + +///research memes/// + +/obj/item/gun/ballistic/automatic/pistol/mag/nopin + pin = null + spawnwithmagazine = FALSE + +/datum/design/magpistol + name = "Magpistol" + desc = "A weapon which fires ferromagnetic slugs." + id = "magpisol" + build_type = PROTOLATHE + materials = list(MAT_METAL = 7500, MAT_GLASS = 1000, MAT_URANIUM = 1000, MAT_TITANIUM = 5000, MAT_SILVER = 2000) + build_path = /obj/item/gun/ballistic/automatic/pistol/mag/nopin + category = list("Weapons") + departmental_flags = DEPARTMENTAL_FLAG_SECURITY + +/datum/design/mag_magpistol + name = "Magpistol Magazine" + desc = "A 14 round magazine for the Magpistol." + id = "mag_magpistol" + build_type = PROTOLATHE + materials = list(MAT_METAL = 4000, MAT_SILVER = 500) + build_path = /obj/item/ammo_box/magazine/mmag/small/lethal + category = list("Ammo") + departmental_flags = DEPARTMENTAL_FLAG_SECURITY + +/datum/design/mag_magpistol/nl + name = "Magpistol Magazine (Non-Lethal)" + desc = "A 14 round non-lethal magazine for the Magpistol." + id = "mag_magpistol_nl" + materials = list(MAT_METAL = 3000, MAT_SILVER = 250, MAT_TITANIUM = 250) + build_path = /obj/item/ammo_box/magazine/mmag/small + departmental_flags = DEPARTMENTAL_FLAG_SECURITY + +//////toy memes///// + +/obj/item/projectile/bullet/reusable/foam_dart/mag + name = "magfoam dart" + icon = 'modular_citadel/icons/obj/guns/cit_guns.dmi' + icon_state = "magjectile-toy" + ammo_type = /obj/item/ammo_casing/caseless/foam_dart/mag light_range = 2 - speed = 0.7 - range = 25 - light_color = LIGHT_COLOR_BLUE + light_color = LIGHT_COLOR_YELLOW + +/obj/item/ammo_casing/caseless/foam_dart/mag + name = "magfoam dart" + desc = "A foam dart with fun light-up projectiles powered by magnets!" + projectile_type = /obj/item/projectile/bullet/reusable/foam_dart/mag + +/obj/item/ammo_box/magazine/internal/shot/toy/mag + ammo_type = /obj/item/ammo_casing/caseless/foam_dart/mag + max_ammo = 14 + +/obj/item/gun/ballistic/shotgun/toy/mag + name = "foam force magpistol" + desc = "A fancy toy sold alongside light-up foam force darts. Ages 8 and up." + icon = 'modular_citadel/icons/obj/guns/cit_guns.dmi' + icon_state = "toymag" + item_state = "gun" + mag_type = /obj/item/ammo_box/magazine/internal/shot/toy/mag + fire_sound = 'sound/weapons/magpistol.ogg' + slot_flags = SLOT_BELT + w_class = WEIGHT_CLASS_SMALL + +/obj/item/ammo_box/foambox/mag + name = "ammo box (Magnetic Foam Darts)" + icon = 'icons/obj/guns/toy.dmi' + icon_state = "foambox" + ammo_type = /obj/item/ammo_casing/caseless/foam_dart/mag + max_ammo = 42 + +//////Magrifle////// + +///projectiles/// /obj/item/projectile/bullet/magrifle icon = 'modular_citadel/icons/obj/guns/cit_guns.dmi' @@ -266,158 +219,50 @@ range = 35 light_color = LIGHT_COLOR_BLUE -///ammo/// +///ammo casings/// -/obj/item/ammo_casing/caseless/mag_e - var/energy_cost = 0 - -/obj/item/ammo_casing/caseless/mag_e/amagm_e +/obj/item/ammo_casing/caseless/amagm desc = "A large ferromagnetic slug intended to be launched out of a compatible weapon." caliber = "magm" icon = 'modular_citadel/icons/obj/guns/cit_guns.dmi' icon_state = "mag-casing-live" projectile_type = /obj/item/projectile/bullet/magrifle - energy_cost = 300 -/obj/item/ammo_casing/caseless/mag_e/anlmagm_e +/obj/item/ammo_casing/caseless/anlmagm desc = "A large, specialized ferromagnetic slug designed with a less-than-lethal payload." caliber = "magm" icon = 'modular_citadel/icons/obj/guns/cit_guns.dmi' icon_state = "mag-casing-live" projectile_type = /obj/item/projectile/bullet/nlmagrifle - energy_cost = 300 - -/obj/item/ammo_casing/caseless/mag_e/amags - desc = "A ferromagnetic slug intended to be launched out of a compatible weapon." - caliber = "mags" - icon = 'modular_citadel/icons/obj/guns/cit_guns.dmi' - icon_state = "mag-casing-live" - projectile_type = /obj/item/projectile/bullet/mags - energy_cost = 200 - -/obj/item/ammo_casing/caseless/mag_e/anlmags - desc = "A specialized ferromagnetic slug designed with a less-than-lethal payload." - caliber = "mags" - icon = 'modular_citadel/icons/obj/guns/cit_guns.dmi' - icon_state = "mag-casing-live" - projectile_type = /obj/item/projectile/bullet/nlmags - energy_cost = 200 ///magazines/// -/obj/item/ammo_box/magazine/mmag_e/ +/obj/item/ammo_box/magazine/mmag/ name = "magrifle magazine (non-lethal disabler)" - desc = "A 24-round magazine for the non-lethal Magrifle." icon = 'modular_citadel/icons/obj/guns/cit_guns.dmi' icon_state = "mediummagmag" - ammo_type = /obj/item/ammo_casing/caseless/mag_e/anlmagm_e + ammo_type = /obj/item/ammo_casing/caseless/anlmagm caliber = "magm" max_ammo = 24 multiple_sprites = 2 -/obj/item/ammo_box/magazine/mmag_e/lethal +/obj/item/ammo_box/magazine/mmag/lethal name = "magrifle magazine (lethal)" - desc = "A 24-round magazine for the lethal Magrifle." icon = 'modular_citadel/icons/obj/guns/cit_guns.dmi' icon_state = "mediummagmag" - ammo_type = /obj/item/ammo_casing/caseless/mag_e/amagm_e + ammo_type = /obj/item/ammo_casing/caseless/amagm max_ammo = 24 -/obj/item/ammo_box/magazine/mmag_e/small - name = "magpistol magazine (non-lethal disabler)" - desc = "A 15-round magazine for the non-lethal Magpistol." - icon = 'modular_citadel/icons/obj/guns/cit_guns.dmi' - icon_state = "nlmagmag" - ammo_type = /obj/item/ammo_casing/caseless/mag_e/anlmags - caliber = "mags" - max_ammo = 15 - multiple_sprites = 2 +///the gun itself/// -/obj/item/ammo_box/magazine/mmag_e/small/lethal - name = "magpistol magazine (lethal)" - desc = "A 15-round magazine for the lethal Magpistol." - icon = 'modular_citadel/icons/obj/guns/cit_guns.dmi' - icon_state = "smallmagmag" - ammo_type = /obj/item/ammo_casing/caseless/mag_e/amags - -///cells/// - -/obj/item/stock_parts/cell/magrifle_e - name = "magrifle power supply" - maxcharge = 14400 - -/obj/item/stock_parts/cell/magpistol_e - name = "magpistol power supply" - maxcharge = 6000 - -///sci designs/// - -/datum/design/magrifle_e - name = "Magrifle" - desc = "An upscaled Magpistol in rifle form." - id = "magrifle_e" - build_type = PROTOLATHE - materials = list(MAT_METAL = 10000, MAT_GLASS = 2000, MAT_URANIUM = 2000, MAT_TITANIUM = 10000, MAT_SILVER = 4000, MAT_GOLD = 2000) - build_path = /obj/item/gun/ballistic/automatic/magrifle_e/nopin - category = list("Weapons") - departmental_flags = DEPARTMENTAL_FLAG_SECURITY - -/datum/design/mag_magrifle_e - name = "Magrifle Magazine (Lethal)" - desc = "A 24-round magazine for the Magrifle." - id = "mag_magrifle_e" - build_type = PROTOLATHE - materials = list(MAT_METAL = 8000, MAT_SILVER = 1000) - build_path = /obj/item/ammo_box/magazine/mmag_e/lethal - category = list("Ammo") - departmental_flags = DEPARTMENTAL_FLAG_SECURITY - -/datum/design/mag_magrifle_e/nl - name = "Magrifle Magazine (Non-Lethal)" - desc = "A 24- round non-lethal magazine for the Magrifle." - id = "mag_magrifle_nl_e" - materials = list(MAT_METAL = 6000, MAT_SILVER = 500, MAT_TITANIUM = 500) - build_path = /obj/item/ammo_box/magazine/mmag_e - departmental_flags = DEPARTMENTAL_FLAG_SECURITY - -/datum/design/magpistol_e - name = "Magpistol" - desc = "A weapon which fires ferromagnetic slugs." - id = "magpisol_e" - build_type = PROTOLATHE - materials = list(MAT_METAL = 7500, MAT_GLASS = 1000, MAT_URANIUM = 1000, MAT_TITANIUM = 5000, MAT_SILVER = 2000) - build_path = /obj/item/gun/ballistic/automatic/pistol/mag_e/nopin - category = list("Weapons") - departmental_flags = DEPARTMENTAL_FLAG_SECURITY - -/datum/design/mag_magpistol_e - name = "Magpistol Magazine" - desc = "A 14 round magazine for the Magpistol." - id = "mag_magpistol_e" - build_type = PROTOLATHE - materials = list(MAT_METAL = 4000, MAT_SILVER = 500) - build_path = /obj/item/ammo_box/magazine/mmag_e/small/lethal - category = list("Ammo") - departmental_flags = DEPARTMENTAL_FLAG_SECURITY - -/datum/design/mag_magpistol/nl - name = "Magpistol Magazine (Non-Lethal)" - desc = "A 14 round non-lethal magazine for the Magpistol." - id = "mag_magpistol_nl_e" - materials = list(MAT_METAL = 3000, MAT_SILVER = 250, MAT_TITANIUM = 250) - build_path = /obj/item/ammo_box/magazine/mmag_e/small - departmental_flags = DEPARTMENTAL_FLAG_SECURITY - -///////////////// Mag rifle///////////////// - -/obj/item/gun/ballistic/automatic/magrifle_e +/obj/item/gun/ballistic/automatic/magrifle name = "\improper Magnetic Rifle" desc = "A simple upscalling of the technologies used in the magpistol, the magrifle is capable of firing slightly larger slugs in bursts. Compatible with the magpistol's slugs." icon = 'modular_citadel/icons/obj/guns/cit_guns.dmi' icon_state = "magrifle" item_state = "arg" slot_flags = 0 - mag_type = /obj/item/ammo_box/magazine/mmag_e + mag_type = /obj/item/ammo_box/magazine/mmag fire_sound = 'sound/weapons/magrifle.ogg' can_suppress = 0 burst_size = 3 @@ -425,125 +270,76 @@ spread = 5 recoil = 0.15 casing_ejector = 0 - var/obj/item/stock_parts/cell/cell - var/cell_type = /obj/item/stock_parts/cell/magrifle_e - var/dead_cell = FALSE -/obj/item/gun/ballistic/automatic/magrifle_e/can_shoot() - if(QDELETED(cell)) - return 0 +///research/// - var/obj/item/ammo_casing/caseless/mag_e/shot = chambered - if(!shot) - return 0 - if(cell.charge < shot.energy_cost*burst_size) - return 0 - . = ..() - -/obj/item/gun/ballistic/automatic/magrifle_e/shoot_live_shot() - var/obj/item/ammo_casing/caseless/mag_e/shot = chambered - cell.use(shot.energy_cost) - . = ..() - -/obj/item/gun/ballistic/automatic/magrifle_e/emp_act(severity) - . = ..() - if(!(. & EMP_PROTECT_CONTENTS)) - cell.use(round(cell.charge / severity)) - -/obj/item/gun/ballistic/automatic/magrifle_e/get_cell() - return cell - -/obj/item/gun/ballistic/automatic/magrifle_e/Initialize() - . = ..() - if(cell_type) - cell = new cell_type(src) - else - cell = new(src) - - if(!dead_cell) - cell.give(cell.maxcharge) - -/obj/item/gun/ballistic/automatic/magrifle_e/nopin +/obj/item/gun/ballistic/automatic/magrifle/nopin pin = null spawnwithmagazine = FALSE -///magpistol/// +/datum/design/magrifle + name = "Magrifle" + desc = "An upscaled Magpistol in rifle form." + id = "magrifle" + build_type = PROTOLATHE + materials = list(MAT_METAL = 10000, MAT_GLASS = 2000, MAT_URANIUM = 2000, MAT_TITANIUM = 10000, MAT_SILVER = 4000, MAT_GOLD = 2000) + build_path = /obj/item/gun/ballistic/automatic/magrifle/nopin + category = list("Weapons") + departmental_flags = DEPARTMENTAL_FLAG_SECURITY -/obj/item/gun/ballistic/automatic/pistol/mag_e - name = "magpistol" - desc = "A handgun utilizing maglev technologies to propel a ferromagnetic slug to extreme velocities." +/datum/design/mag_magrifle + name = "Magrifle Magazine (Lethal)" + desc = "A 24-round magazine for the Magrifle." + id = "mag_magrifle" + build_type = PROTOLATHE + materials = list(MAT_METAL = 8000, MAT_SILVER = 1000) + build_path = /obj/item/ammo_box/magazine/mmag/lethal + category = list("Ammo") + departmental_flags = DEPARTMENTAL_FLAG_SECURITY + +/datum/design/mag_magrifle/nl + name = "Magrifle Magazine (Non-Lethal)" + desc = "A 24- round non-lethal magazine for the Magrifle." + id = "mag_magrifle_nl" + materials = list(MAT_METAL = 6000, MAT_SILVER = 500, MAT_TITANIUM = 500) + build_path = /obj/item/ammo_box/magazine/mmag + departmental_flags = DEPARTMENTAL_FLAG_SECURITY + +///foamagrifle/// + +/obj/item/ammo_box/magazine/toy/foamag + name = "foam force magrifle magazine" icon = 'modular_citadel/icons/obj/guns/cit_guns.dmi' - icon_state = "magpistol" - force = 10 - fire_sound = 'sound/weapons/magpistol.ogg' - mag_type = /obj/item/ammo_box/magazine/mmag_e/small - can_suppress = 0 - casing_ejector = 0 - fire_delay = 2 - recoil = 0.2 - var/obj/item/stock_parts/cell/cell - var/cell_type = /obj/item/stock_parts/cell/magpistol_e - var/dead_cell = FALSE + icon_state = "foamagmag" + max_ammo = 24 + multiple_sprites = 2 + ammo_type = /obj/item/ammo_casing/caseless/foam_dart/mag + materials = list(MAT_METAL = 200) -/obj/item/gun/ballistic/automatic/pistol/mag_e/can_shoot() - if(QDELETED(cell)) - return 0 - - var/obj/item/ammo_casing/caseless/mag_e/shot = chambered - if(!shot) - return 0 - if(cell.charge < shot.energy_cost) - return 0 - . = ..() - -/obj/item/gun/ballistic/automatic/pistol/mag_e/shoot_live_shot() - var/obj/item/ammo_casing/caseless/mag_e/shot = chambered - cell.use(shot.energy_cost) - . = ..() - -/obj/item/gun/ballistic/automatic/pistol/mag_e/emp_act(severity) - . = ..() - if(!(. & EMP_PROTECT_CONTENTS)) - cell.use(round(cell.charge / severity)) - -/obj/item/gun/ballistic/automatic/pistol/mag_e/get_cell() - return cell - -/obj/item/gun/ballistic/automatic/pistol/mag_e/Initialize() - . = ..() - if(cell_type) - cell = new cell_type(src) - else - cell = new(src) - if(!dead_cell) - cell.give(cell.maxcharge) - -/obj/item/gun/ballistic/automatic/pistol/mag_e/update_icon() - ..() - if(magazine) - cut_overlays() - add_overlay("magpistol-magazine") - else - cut_overlays() - icon_state = "[initial(icon_state)][chambered ? "" : "-e"]" - -/obj/item/gun/ballistic/automatic/pistol/mag_e/nopin - pin = null - spawnwithmagazine = FALSE +/obj/item/gun/ballistic/automatic/magrifle/toy + name = "foamag rifle" + desc = "A foam launching magnetic rifle. Ages 8 and up." + icon_state = "foamagrifle" + obj_flags = 0 + mag_type = /obj/item/ammo_box/magazine/toy/foamag + casing_ejector = FALSE + spread = 60 + w_class = WEIGHT_CLASS_BULKY + weapon_weight = WEAPON_HEAVY /* // TECHWEBS IMPLEMENTATION -*/ +// /datum/techweb_node/magnetic_weapons id = "magnetic_weapons" display_name = "Magnetic Weapons" description = "Weapons using magnetic technology" prereq_ids = list("weaponry", "adv_weaponry", "emp_adv") - design_ids = list("magrifle_e", "magpisol_e", "mag_magrifle_e", "mag_magrifle_nl_e", "mag_magpistol_e", "mag_magpistol_nl_e") + design_ids = list("magrifle", "magpisol", "mag_magrifle", "mag_magrifle_nl", "mag_magpistol", "mag_magpistol_nl") research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2500) export_price = 5000 - +*/ //////Hyper-Burst Rifle////// @@ -630,7 +426,7 @@ ..() icon_state = "hyperburst[magazine ? "-[get_ammo()]" : ""][chambered ? "" : "-e"]" -//Toy Memes +///toy memes/// /obj/item/projectile/beam/lasertag/mag //the projectile, compatible with regular laser tag armor icon = 'modular_citadel/icons/obj/guns/cit_guns.dmi' @@ -668,83 +464,3 @@ /obj/item/stock_parts/cell/toymagburst name = "toy mag burst rifle power supply" maxcharge = 4000 - -///foamagrifles/// - -/obj/item/gun/ballistic/automatic/magrifle/toy - name = "foamag rifle" - desc = "A foam launching magnetic rifle. Ages 8 and up." - icon_state = "foamagrifle" - obj_flags = 0 - mag_type = /obj/item/ammo_box/magazine/toy/foamag - casing_ejector = FALSE - spread = 60 - w_class = WEIGHT_CLASS_BULKY - weapon_weight = WEAPON_HEAVY - -/obj/item/gun/ballistic/shotgun/toy/mag - name = "foam force magpistol" - desc = "A fancy toy sold alongside light-up foam force darts. Ages 8 and up." - icon = 'modular_citadel/icons/obj/guns/cit_guns.dmi' - icon_state = "toymag" - item_state = "gun" - mag_type = /obj/item/ammo_box/magazine/internal/shot/toy/mag - fire_sound = 'sound/weapons/magpistol.ogg' - slot_flags = SLOT_BELT - w_class = WEIGHT_CLASS_SMALL - -/obj/item/gun/ballistic/automatic/x9/toy - name = "\improper Foam Force X9" - desc = "An old but reliable assault rifle made for combat against unknown enemies. Appears to be hastily converted. Ages 8 and up." - icon = 'modular_citadel/icons/obj/guns/cit_guns.dmi' - icon_state = "toy9" - can_suppress = 0 - obj_flags = 0 - mag_type = /obj/item/ammo_box/magazine/toy/x9 - casing_ejector = 0 - spread = 90 //MAXIMUM XCOM MEMES (actually that'd be 180 spread) - w_class = WEIGHT_CLASS_BULKY - weapon_weight = WEAPON_HEAVY - -//Toy bullet-things - -/obj/item/projectile/bullet/reusable/foam_dart/mag - name = "magfoam dart" - icon = 'modular_citadel/icons/obj/guns/cit_guns.dmi' - icon_state = "magjectile-toy" - ammo_type = /obj/item/ammo_casing/caseless/foam_dart/mag - light_range = 2 - light_color = LIGHT_COLOR_YELLOW - -/obj/item/ammo_casing/caseless/foam_dart/mag - name = "magfoam dart" - desc = "A foam dart with fun light-up projectiles powered by magnets!" - projectile_type = /obj/item/projectile/bullet/reusable/foam_dart/mag - -/obj/item/ammo_box/magazine/internal/shot/toy/mag - ammo_type = /obj/item/ammo_casing/caseless/foam_dart/mag - max_ammo = 14 - -/obj/item/ammo_box/magazine/toy/foamag - name = "foam force magrifle magazine" - icon = 'modular_citadel/icons/obj/guns/cit_guns.dmi' - icon_state = "foamagmag" - max_ammo = 24 - multiple_sprites = 2 - ammo_type = /obj/item/ammo_casing/caseless/foam_dart/mag - materials = list(MAT_METAL = 200) - -/obj/item/ammo_box/foambox/mag - name = "ammo box (Magnetic Foam Darts)" - icon = 'icons/obj/guns/toy.dmi' - icon_state = "foambox" - ammo_type = /obj/item/ammo_casing/caseless/foam_dart/mag - max_ammo = 42 - -/obj/item/ammo_box/magazine/toy/x9 - name = "foam force X9 magazine" - icon = 'modular_citadel/icons/obj/guns/cit_guns.dmi' - icon_state = "toy9magazine" - max_ammo = 30 - multiple_sprites = 2 - materials = list(MAT_METAL = 200) From 22912832d75a87e40cf3628a24af7e1b57215600 Mon Sep 17 00:00:00 2001 From: Trilbyspaceclone <30435998+Trilbyspaceclone@users.noreply.github.com> Date: Sun, 28 Apr 2019 22:46:50 -0400 Subject: [PATCH 40/83] Create magweapon_energy.dm --- .../guns/ballistic/magweapon_energy.dm | 279 ++++++++++++++++++ 1 file changed, 279 insertions(+) create mode 100644 modular_citadel/code/modules/projectiles/guns/ballistic/magweapon_energy.dm diff --git a/modular_citadel/code/modules/projectiles/guns/ballistic/magweapon_energy.dm b/modular_citadel/code/modules/projectiles/guns/ballistic/magweapon_energy.dm new file mode 100644 index 0000000000..7324ad1024 --- /dev/null +++ b/modular_citadel/code/modules/projectiles/guns/ballistic/magweapon_energy.dm @@ -0,0 +1,279 @@ +///ammo/// + +/obj/item/ammo_casing/caseless/mag_e + var/energy_cost = 0 + +/obj/item/ammo_casing/caseless/mag_e/amagm_e + desc = "A large ferromagnetic slug intended to be launched out of a compatible weapon." + caliber = "magm" + icon = 'modular_citadel/icons/obj/guns/cit_guns.dmi' + icon_state = "mag-casing-live" + projectile_type = /obj/item/projectile/bullet/magrifle + energy_cost = 300 + +/obj/item/ammo_casing/caseless/mag_e/anlmagm_e + desc = "A large, specialized ferromagnetic slug designed with a less-than-lethal payload." + caliber = "magm" + icon = 'modular_citadel/icons/obj/guns/cit_guns.dmi' + icon_state = "mag-casing-live" + projectile_type = /obj/item/projectile/bullet/nlmagrifle + energy_cost = 300 + +/obj/item/ammo_casing/caseless/mag_e/amags + desc = "A ferromagnetic slug intended to be launched out of a compatible weapon." + caliber = "mags" + icon = 'modular_citadel/icons/obj/guns/cit_guns.dmi' + icon_state = "mag-casing-live" + projectile_type = /obj/item/projectile/bullet/mags + energy_cost = 200 + +/obj/item/ammo_casing/caseless/mag_e/anlmags + desc = "A specialized ferromagnetic slug designed with a less-than-lethal payload." + caliber = "mags" + icon = 'modular_citadel/icons/obj/guns/cit_guns.dmi' + icon_state = "mag-casing-live" + projectile_type = /obj/item/projectile/bullet/nlmags + energy_cost = 200 + +///magazines/// + +/obj/item/ammo_box/magazine/mmag_e/ + name = "magrifle magazine (non-lethal disabler)" + icon = 'modular_citadel/icons/obj/guns/cit_guns.dmi' + icon_state = "mediummagmag" + ammo_type = /obj/item/ammo_casing/caseless/mag_e/anlmagm_e + caliber = "magm" + max_ammo = 24 + multiple_sprites = 2 + +/obj/item/ammo_box/magazine/mmag_e/lethal + name = "magrifle magazine (lethal)" + icon = 'modular_citadel/icons/obj/guns/cit_guns.dmi' + icon_state = "mediummagmag" + ammo_type = /obj/item/ammo_casing/caseless/mag_e/amagm_e + max_ammo = 24 + + +/obj/item/ammo_box/magazine/mmag_e/small + name = "magpistol magazine (non-lethal disabler)" + icon = 'modular_citadel/icons/obj/guns/cit_guns.dmi' + icon_state = "nlmagmag" + ammo_type = /obj/item/ammo_casing/caseless/mag_e/anlmags + caliber = "mags" + max_ammo = 15 + multiple_sprites = 2 + +/obj/item/ammo_box/magazine/mmag_e/small/lethal + name = "magpistol magazine (lethal)" + icon = 'modular_citadel/icons/obj/guns/cit_guns.dmi' + icon_state = "smallmagmag" + ammo_type = /obj/item/ammo_casing/caseless/mag_e/amags + +///cells/// + +/obj/item/stock_parts/cell/magrifle_e + name = "magrifle power supply" + maxcharge = 14400 + +/obj/item/stock_parts/cell/magpistol_e + name = "magpistol power supply" + maxcharge = 6000 + +///sci designs/// + +/datum/design/magrifle_e + name = "Magrifle" + desc = "An upscaled Magpistol in rifle form." + id = "magrifle_e" + build_type = PROTOLATHE + materials = list(MAT_METAL = 10000, MAT_GLASS = 2000, MAT_URANIUM = 2000, MAT_TITANIUM = 10000, MAT_SILVER = 4000, MAT_GOLD = 2000) + build_path = /obj/item/gun/ballistic/automatic/magrifle_e/nopin + category = list("Weapons") + departmental_flags = DEPARTMENTAL_FLAG_SECURITY + +/datum/design/mag_magrifle_e + name = "Magrifle Magazine (Lethal)" + desc = "A 24-round magazine for the Magrifle." + id = "mag_magrifle_e" + build_type = PROTOLATHE + materials = list(MAT_METAL = 8000, MAT_SILVER = 1000) + build_path = /obj/item/ammo_box/magazine/mmag_e/lethal + category = list("Ammo") + departmental_flags = DEPARTMENTAL_FLAG_SECURITY + +/datum/design/mag_magrifle_e/nl + name = "Magrifle Magazine (Non-Lethal)" + desc = "A 24- round non-lethal magazine for the Magrifle." + id = "mag_magrifle_nl" + materials = list(MAT_METAL = 6000, MAT_SILVER = 500, MAT_TITANIUM = 500) + build_path = /obj/item/ammo_box/magazine/mmag_e + departmental_flags = DEPARTMENTAL_FLAG_SECURITY + +/datum/design/magpistol_e + name = "Magpistol" + desc = "A weapon which fires ferromagnetic slugs." + id = "magpistol_e" + build_type = PROTOLATHE + materials = list(MAT_METAL = 7500, MAT_GLASS = 1000, MAT_URANIUM = 1000, MAT_TITANIUM = 5000, MAT_SILVER = 2000) + build_path = /obj/item/gun/ballistic/automatic/pistol/mag_e/nopin + category = list("Weapons") + departmental_flags = DEPARTMENTAL_FLAG_SECURITY + +/datum/design/mag_magpistol_e + name = "Magpistol Magazine" + desc = "A 14 round magazine for the Magpistol." + id = "mag_magpistol_e" + build_type = PROTOLATHE + materials = list(MAT_METAL = 4000, MAT_SILVER = 500) + build_path = /obj/item/ammo_box/magazine/mmag_e/small/lethal + category = list("Ammo") + departmental_flags = DEPARTMENTAL_FLAG_SECURITY + +/datum/design/mag_magpistol_e/nl + name = "Magpistol Magazine (Non-Lethal)" + desc = "A 14 round non-lethal magazine for the Magpistol." + id = "mag_magpistol_e_nl" + materials = list(MAT_METAL = 3000, MAT_SILVER = 250, MAT_TITANIUM = 250) + build_path = /obj/item/ammo_box/magazine/mmag_e/small + departmental_flags = DEPARTMENTAL_FLAG_SECURITY + +/* +// TECHWEBS IMPLEMENTATION +*/ + +/datum/techweb_node/magnetic_weapons + id = "magnetic_weapons" + display_name = "Magnetic Weapons" + description = "Weapons using magnetic technology" + prereq_ids = list("weaponry", "adv_weaponry", "emp_adv") + design_ids = list("magrifle_e", "magpisol_e", "mag_magrifle_e", "mag_magrifle_nl", "mag_magpistol_e", "mag_magpistol_nl") + research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2500) + export_price = 5000 + +///magrifle/// + +/obj/item/gun/ballistic/automatic/magrifle_e + name = "\improper Magnetic Rifle" + desc = "A simple upscalling of the technologies used in the magpistol, the magrifle is capable of firing slightly larger slugs in bursts. Compatible with the magpistol's slugs." + icon = 'modular_citadel/icons/obj/guns/cit_guns.dmi' + icon_state = "magrifle" + item_state = "arg" + slot_flags = 0 + mag_type = /obj/item/ammo_box/magazine/mmag_e + fire_sound = 'sound/weapons/magrifle.ogg' + can_suppress = 0 + burst_size = 3 + fire_delay = 2 + spread = 5 + recoil = 0.15 + casing_ejector = 0 + var/obj/item/stock_parts/cell/cell + var/cell_type = /obj/item/stock_parts/cell/magrifle_e + var/dead_cell = FALSE + + +/obj/item/gun/ballistic/automatic/magrifle_e/can_shoot() + if(QDELETED(cell)) + return 0 + + var/obj/item/ammo_casing/caseless/mag_e/shot = chambered + if(!shot) + return 0 + if(cell.charge < shot.energy_cost*burst_size) + return 0 + . = ..() + +/obj/item/gun/ballistic/automatic/magrifle_e/shoot_live_shot() + var/obj/item/ammo_casing/caseless/mag_e/shot = chambered + cell.use(shot.energy_cost) + . = ..() + +/obj/item/gun/ballistic/automatic/magrifle_e/emp_act(severity) + . = ..() + if(!(. & EMP_PROTECT_CONTENTS)) + cell.use(round(cell.charge / severity)) + +/obj/item/gun/ballistic/automatic/magrifle_e/get_cell() + return cell + +/obj/item/gun/ballistic/automatic/magrifle_e/Initialize() + . = ..() + if(cell_type) + cell = new cell_type(src) + else + cell = new(src) + + if(!dead_cell) + cell.give(cell.maxcharge) + +/obj/item/gun/ballistic/automatic/magrifle_e/nopin + pin = null + spawnwithmagazine = FALSE + + +///magpistol/// + +/obj/item/gun/ballistic/automatic/pistol/mag_e + name = "magpistol" + desc = "A handgun utilizing maglev technologies to propel a ferromagnetic slug to extreme velocities." + icon = 'modular_citadel/icons/obj/guns/cit_guns.dmi' + icon_state = "magpistol" + force = 10 + fire_sound = 'sound/weapons/magpistol.ogg' + mag_type = /obj/item/ammo_box/magazine/mmag_e/small + can_suppress = 0 + casing_ejector = 0 + fire_delay = 2 + recoil = 0.2 + var/obj/item/stock_parts/cell/cell + var/cell_type = /obj/item/stock_parts/cell/magpistol_e + var/dead_cell = FALSE + +/obj/item/gun/ballistic/automatic/pistol/mag_e/can_shoot() + if(QDELETED(cell)) + return 0 + + var/obj/item/ammo_casing/caseless/mag_e/shot = chambered + if(!shot) + return 0 + if(cell.charge < shot.energy_cost) + return 0 + . = ..() + +/obj/item/gun/ballistic/automatic/pistol/mag_e/shoot_live_shot() + var/obj/item/ammo_casing/caseless/mag_e/shot = chambered + cell.use(shot.energy_cost) + . = ..() + +/obj/item/gun/ballistic/automatic/pistol/mag_e/emp_act(severity) + . = ..() + if(!(. & EMP_PROTECT_CONTENTS)) + cell.use(round(cell.charge / severity)) + +/obj/item/gun/ballistic/automatic/pistol/mag_e/get_cell() + return cell + +/obj/item/gun/ballistic/automatic/pistol/mag_e/Initialize() + . = ..() + if(cell_type) + cell = new cell_type(src) + else + cell = new(src) + + if(!dead_cell) + cell.give(cell.maxcharge) + + +/obj/item/gun/ballistic/automatic/pistol/mag_e/update_icon() + ..() + if(magazine) + cut_overlays() + add_overlay("magpistol-magazine") + else + cut_overlays() + icon_state = "[initial(icon_state)][chambered ? "" : "-e"]" + + +/obj/item/gun/ballistic/automatic/pistol/mag_e/nopin + pin = null + spawnwithmagazine = FALSE From a52dab3e0085c872894b9b0cf8076e272fb79ef4 Mon Sep 17 00:00:00 2001 From: Trilbyspaceclone <30435998+Trilbyspaceclone@users.noreply.github.com> Date: Sun, 28 Apr 2019 22:47:55 -0400 Subject: [PATCH 41/83] Update tgstation.dme --- tgstation.dme | 1 + 1 file changed, 1 insertion(+) diff --git a/tgstation.dme b/tgstation.dme index 5b4c4eabe5..1729380f50 100755 --- a/tgstation.dme +++ b/tgstation.dme @@ -2954,6 +2954,7 @@ #include "modular_citadel\code\modules\projectiles\guns\ballistic\flechette.dm" #include "modular_citadel\code\modules\projectiles\guns\ballistic\handguns.dm" #include "modular_citadel\code\modules\projectiles\guns\ballistic\magweapon.dm" +#include "modular_citadel\code\modules\projectiles\guns\ballistic\magweapon_energy.dm" #include "modular_citadel\code\modules\projectiles\guns\ballistic\revolver.dm" #include "modular_citadel\code\modules\projectiles\guns\ballistic\rifles.dm" #include "modular_citadel\code\modules\projectiles\guns\ballistic\spinfusor.dm" From e51cdf98b24d6ef1eadb6bc5b9bfc3a2a9f5e344 Mon Sep 17 00:00:00 2001 From: Useroth Date: Mon, 29 Apr 2019 04:58:26 +0200 Subject: [PATCH 42/83] Fixed the calibers up. --- .../projectiles/guns/ballistic/magweapon_energy.dm | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/modular_citadel/code/modules/projectiles/guns/ballistic/magweapon_energy.dm b/modular_citadel/code/modules/projectiles/guns/ballistic/magweapon_energy.dm index 7324ad1024..37a6fd59e3 100644 --- a/modular_citadel/code/modules/projectiles/guns/ballistic/magweapon_energy.dm +++ b/modular_citadel/code/modules/projectiles/guns/ballistic/magweapon_energy.dm @@ -5,7 +5,7 @@ /obj/item/ammo_casing/caseless/mag_e/amagm_e desc = "A large ferromagnetic slug intended to be launched out of a compatible weapon." - caliber = "magm" + caliber = "mag_e" icon = 'modular_citadel/icons/obj/guns/cit_guns.dmi' icon_state = "mag-casing-live" projectile_type = /obj/item/projectile/bullet/magrifle @@ -13,7 +13,7 @@ /obj/item/ammo_casing/caseless/mag_e/anlmagm_e desc = "A large, specialized ferromagnetic slug designed with a less-than-lethal payload." - caliber = "magm" + caliber = "mag_e" icon = 'modular_citadel/icons/obj/guns/cit_guns.dmi' icon_state = "mag-casing-live" projectile_type = /obj/item/projectile/bullet/nlmagrifle @@ -21,7 +21,7 @@ /obj/item/ammo_casing/caseless/mag_e/amags desc = "A ferromagnetic slug intended to be launched out of a compatible weapon." - caliber = "mags" + caliber = "mag_e" icon = 'modular_citadel/icons/obj/guns/cit_guns.dmi' icon_state = "mag-casing-live" projectile_type = /obj/item/projectile/bullet/mags @@ -29,7 +29,7 @@ /obj/item/ammo_casing/caseless/mag_e/anlmags desc = "A specialized ferromagnetic slug designed with a less-than-lethal payload." - caliber = "mags" + caliber = "mag_e" icon = 'modular_citadel/icons/obj/guns/cit_guns.dmi' icon_state = "mag-casing-live" projectile_type = /obj/item/projectile/bullet/nlmags @@ -42,7 +42,7 @@ icon = 'modular_citadel/icons/obj/guns/cit_guns.dmi' icon_state = "mediummagmag" ammo_type = /obj/item/ammo_casing/caseless/mag_e/anlmagm_e - caliber = "magm" + caliber = "mag_e" max_ammo = 24 multiple_sprites = 2 @@ -59,7 +59,7 @@ icon = 'modular_citadel/icons/obj/guns/cit_guns.dmi' icon_state = "nlmagmag" ammo_type = /obj/item/ammo_casing/caseless/mag_e/anlmags - caliber = "mags" + caliber = "mag_e" max_ammo = 15 multiple_sprites = 2 From 514e15ee6c4758c948f7dbe0455b2ecdcbc0a03b Mon Sep 17 00:00:00 2001 From: Trilbyspaceclone <30435998+Trilbyspaceclone@users.noreply.github.com> Date: Sun, 28 Apr 2019 23:32:38 -0400 Subject: [PATCH 43/83] Update magweapon.dm --- .../code/modules/projectiles/guns/ballistic/magweapon.dm | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/modular_citadel/code/modules/projectiles/guns/ballistic/magweapon.dm b/modular_citadel/code/modules/projectiles/guns/ballistic/magweapon.dm index 13e1c0007c..4ff4f572fc 100644 --- a/modular_citadel/code/modules/projectiles/guns/ballistic/magweapon.dm +++ b/modular_citadel/code/modules/projectiles/guns/ballistic/magweapon.dm @@ -122,7 +122,7 @@ cut_overlays() icon_state = "[initial(icon_state)][chambered ? "" : "-e"]" -///research memes/// +///*research memes/// /obj/item/gun/ballistic/automatic/pistol/mag/nopin pin = null @@ -155,7 +155,7 @@ materials = list(MAT_METAL = 3000, MAT_SILVER = 250, MAT_TITANIUM = 250) build_path = /obj/item/ammo_box/magazine/mmag/small departmental_flags = DEPARTMENTAL_FLAG_SECURITY - +*/ //////toy memes///// /obj/item/projectile/bullet/reusable/foam_dart/mag @@ -271,7 +271,7 @@ recoil = 0.15 casing_ejector = 0 -///research/// +/*//research/// /obj/item/gun/ballistic/automatic/magrifle/nopin pin = null @@ -304,7 +304,7 @@ materials = list(MAT_METAL = 6000, MAT_SILVER = 500, MAT_TITANIUM = 500) build_path = /obj/item/ammo_box/magazine/mmag departmental_flags = DEPARTMENTAL_FLAG_SECURITY - +/* ///foamagrifle/// /obj/item/ammo_box/magazine/toy/foamag From c5f3f678247f9b69f7344c6c921defaa2fcd9d19 Mon Sep 17 00:00:00 2001 From: Trilbyspaceclone <30435998+Trilbyspaceclone@users.noreply.github.com> Date: Sun, 28 Apr 2019 23:33:31 -0400 Subject: [PATCH 44/83] Update magweapon.dm --- .../code/modules/projectiles/guns/ballistic/magweapon.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modular_citadel/code/modules/projectiles/guns/ballistic/magweapon.dm b/modular_citadel/code/modules/projectiles/guns/ballistic/magweapon.dm index 4ff4f572fc..226d982991 100644 --- a/modular_citadel/code/modules/projectiles/guns/ballistic/magweapon.dm +++ b/modular_citadel/code/modules/projectiles/guns/ballistic/magweapon.dm @@ -122,8 +122,8 @@ cut_overlays() icon_state = "[initial(icon_state)][chambered ? "" : "-e"]" -///*research memes/// - +///research memes/// +/* /obj/item/gun/ballistic/automatic/pistol/mag/nopin pin = null spawnwithmagazine = FALSE From b51751dfa8143614f99060fa97ede5f277f0d290 Mon Sep 17 00:00:00 2001 From: Trilbyspaceclone <30435998+Trilbyspaceclone@users.noreply.github.com> Date: Sun, 28 Apr 2019 23:38:34 -0400 Subject: [PATCH 45/83] Update magweapon_energy.dm --- .../code/modules/projectiles/guns/ballistic/magweapon_energy.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modular_citadel/code/modules/projectiles/guns/ballistic/magweapon_energy.dm b/modular_citadel/code/modules/projectiles/guns/ballistic/magweapon_energy.dm index 37a6fd59e3..ba853f3670 100644 --- a/modular_citadel/code/modules/projectiles/guns/ballistic/magweapon_energy.dm +++ b/modular_citadel/code/modules/projectiles/guns/ballistic/magweapon_energy.dm @@ -104,7 +104,7 @@ /datum/design/mag_magrifle_e/nl name = "Magrifle Magazine (Non-Lethal)" desc = "A 24- round non-lethal magazine for the Magrifle." - id = "mag_magrifle_nl" + id = "mag_magrifle_e_nl" materials = list(MAT_METAL = 6000, MAT_SILVER = 500, MAT_TITANIUM = 500) build_path = /obj/item/ammo_box/magazine/mmag_e departmental_flags = DEPARTMENTAL_FLAG_SECURITY From d136d9574386c1d4ac4cab5548c1e086e5b53b54 Mon Sep 17 00:00:00 2001 From: Trilbyspaceclone <30435998+Trilbyspaceclone@users.noreply.github.com> Date: Sun, 28 Apr 2019 23:56:39 -0400 Subject: [PATCH 46/83] Update magweapon.dm --- .../code/modules/projectiles/guns/ballistic/magweapon.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modular_citadel/code/modules/projectiles/guns/ballistic/magweapon.dm b/modular_citadel/code/modules/projectiles/guns/ballistic/magweapon.dm index 226d982991..409b8eecaf 100644 --- a/modular_citadel/code/modules/projectiles/guns/ballistic/magweapon.dm +++ b/modular_citadel/code/modules/projectiles/guns/ballistic/magweapon.dm @@ -271,7 +271,8 @@ recoil = 0.15 casing_ejector = 0 -/*//research/// +/* +//research/// /obj/item/gun/ballistic/automatic/magrifle/nopin pin = null @@ -326,7 +327,6 @@ spread = 60 w_class = WEIGHT_CLASS_BULKY weapon_weight = WEAPON_HEAVY - /* // TECHWEBS IMPLEMENTATION // From 5430454c7323e03110e9eb0327c0ce307a4fb3fa Mon Sep 17 00:00:00 2001 From: Trilbyspaceclone <30435998+Trilbyspaceclone@users.noreply.github.com> Date: Sun, 28 Apr 2019 23:59:29 -0400 Subject: [PATCH 47/83] Update magweapon.dm --- .../code/modules/projectiles/guns/ballistic/magweapon.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modular_citadel/code/modules/projectiles/guns/ballistic/magweapon.dm b/modular_citadel/code/modules/projectiles/guns/ballistic/magweapon.dm index 409b8eecaf..b3af722332 100644 --- a/modular_citadel/code/modules/projectiles/guns/ballistic/magweapon.dm +++ b/modular_citadel/code/modules/projectiles/guns/ballistic/magweapon.dm @@ -305,7 +305,7 @@ materials = list(MAT_METAL = 6000, MAT_SILVER = 500, MAT_TITANIUM = 500) build_path = /obj/item/ammo_box/magazine/mmag departmental_flags = DEPARTMENTAL_FLAG_SECURITY -/* +*/ ///foamagrifle/// /obj/item/ammo_box/magazine/toy/foamag From 4492e60a9faacd2f12acc738cbaf0915e5a80b76 Mon Sep 17 00:00:00 2001 From: Trilbyspaceclone <30435998+Trilbyspaceclone@users.noreply.github.com> Date: Mon, 29 Apr 2019 00:02:53 -0400 Subject: [PATCH 48/83] typo --- .../code/modules/projectiles/guns/ballistic/magweapon_energy.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modular_citadel/code/modules/projectiles/guns/ballistic/magweapon_energy.dm b/modular_citadel/code/modules/projectiles/guns/ballistic/magweapon_energy.dm index ba853f3670..7140fda076 100644 --- a/modular_citadel/code/modules/projectiles/guns/ballistic/magweapon_energy.dm +++ b/modular_citadel/code/modules/projectiles/guns/ballistic/magweapon_energy.dm @@ -146,7 +146,7 @@ display_name = "Magnetic Weapons" description = "Weapons using magnetic technology" prereq_ids = list("weaponry", "adv_weaponry", "emp_adv") - design_ids = list("magrifle_e", "magpisol_e", "mag_magrifle_e", "mag_magrifle_nl", "mag_magpistol_e", "mag_magpistol_nl") + design_ids = list("magrifle_e", "magpistol_e", "mag_magrifle_e", "mag_magrifle_nl", "mag_magpistol_e", "mag_magpistol_nl") research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2500) export_price = 5000 From 60a9544a6bd1f25c9f602f71ea86c262d4f5e05d Mon Sep 17 00:00:00 2001 From: Trilbyspaceclone <30435998+Trilbyspaceclone@users.noreply.github.com> Date: Mon, 29 Apr 2019 00:19:47 -0400 Subject: [PATCH 49/83] Update magweapon_energy.dm --- .../code/modules/projectiles/guns/ballistic/magweapon_energy.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modular_citadel/code/modules/projectiles/guns/ballistic/magweapon_energy.dm b/modular_citadel/code/modules/projectiles/guns/ballistic/magweapon_energy.dm index 7140fda076..90dd577c4b 100644 --- a/modular_citadel/code/modules/projectiles/guns/ballistic/magweapon_energy.dm +++ b/modular_citadel/code/modules/projectiles/guns/ballistic/magweapon_energy.dm @@ -146,7 +146,7 @@ display_name = "Magnetic Weapons" description = "Weapons using magnetic technology" prereq_ids = list("weaponry", "adv_weaponry", "emp_adv") - design_ids = list("magrifle_e", "magpistol_e", "mag_magrifle_e", "mag_magrifle_nl", "mag_magpistol_e", "mag_magpistol_nl") + design_ids = list("magrifle_e", "magpistol_e", "mag_magrifle_e", "mag_magrifle_e_nl", "mag_magpistol_e", "mag_magpistol_e_nl") research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2500) export_price = 5000 From 079dc70dc25c17518518e5499dfce6b9cc4e5efe Mon Sep 17 00:00:00 2001 From: Trilbyspaceclone <30435998+Trilbyspaceclone@users.noreply.github.com> Date: Mon, 29 Apr 2019 17:44:05 -0400 Subject: [PATCH 50/83] Delete food.dmi --- modular_citadel/icons/obj/food/food.dmi | Bin 4184 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 modular_citadel/icons/obj/food/food.dmi diff --git a/modular_citadel/icons/obj/food/food.dmi b/modular_citadel/icons/obj/food/food.dmi deleted file mode 100644 index d205b29b8b2969c0f7c114450a742f5329b6697d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4184 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 Date: Mon, 29 Apr 2019 17:44:32 -0400 Subject: [PATCH 51/83] Add files via upload --- modular_citadel/icons/obj/food/food.dmi | Bin 0 -> 5346 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 modular_citadel/icons/obj/food/food.dmi diff --git a/modular_citadel/icons/obj/food/food.dmi b/modular_citadel/icons/obj/food/food.dmi new file mode 100644 index 0000000000000000000000000000000000000000..da9a6c365f697cd66b3f00949ece94110a1bada2 GIT binary patch literal 5346 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 Z=|A_g Date: Mon, 29 Apr 2019 17:45:48 -0400 Subject: [PATCH 52/83] Add files via upload --- .../recipes/tablecraft/snacks_sushi.dm | 95 +++++++++++++++++++ 1 file changed, 95 insertions(+) create mode 100644 code/modules/food_and_drinks/recipes/tablecraft/snacks_sushi.dm diff --git a/code/modules/food_and_drinks/recipes/tablecraft/snacks_sushi.dm b/code/modules/food_and_drinks/recipes/tablecraft/snacks_sushi.dm new file mode 100644 index 0000000000..a4cbc5e344 --- /dev/null +++ b/code/modules/food_and_drinks/recipes/tablecraft/snacks_sushi.dm @@ -0,0 +1,95 @@ +//////////////////////////Sushi Components/////////////////////// + +/obj/item/reagent_containers/food/snacks/sushi_rice + name = "Sushi Rice" + desc = "A bowl of sticky rice for making sushi." + icon = 'modular_citadel/icons/obj/food/food.dmi' + icon_state = "sushi_rice" + list_reagents = list("sodiumchloride" = 5) + tastes = list("rice" = 5, "salt" = 1) + foodtype = GRAIN + +/obj/item/reagent_containers/food/snacks/sea_weed + name = "Sea Weed Sheet" + desc = "A thin, light salt sheet of plant mater. This is commenly used in sushi recipes," + icon = 'modular_citadel/icons/obj/food/food.dmi' + icon_state = "sea_weed" + list_reagents = list("sodiumchloride" = 2) + tastes = list("plants" = 2, "salt" = 1) + foodtype = VEGETABLES + +/obj/item/reagent_containers/food/snacks/tuna + name = "Canned Tuna" + desc = "A small can of tuna fish beloved by felines." + icon = 'modular_citadel/icons/obj/food/food.dmi' + icon_state = "tuna_can" +//trash = /obj/item/trash/tuna_used //I dont know if I like this idea - A Masked Cat + list_reagents = list("sodiumchloride" = 5, "mercury" = 2) + tastes = list("tuna" = 15, "mercury" = 1, "salt" = 3) + foodtype = MEAT + +//////////////////////////Sushi///////////////////////////////// +/obj/item/reagent_containers/food/snacks/sushie_basic + name = "Funa Hosomaki" + desc = "A small cylindrical filled with rice and fish." + icon = 'modular_citadel/icons/obj/food/food.dmi' + icon_state = "sushie_basic" + bonus_reagents = list("vitamin" = 2) + list_reagents = list("nutriment" = 1) + bitesize = 1 + filling_color = "#F2EEEA" //rgb(242, 238, 234) + tastes = list("fish" = 1, "rice" = 1, "salt" = 1) + foodtype = MEAT | VEGETABLES + +/obj/item/reagent_containers/food/snacks/sushie_adv + name = "Funa Nigiri" + desc = "A pice of carp lightly placed on some rice." + icon = 'modular_citadel/icons/obj/food/food.dmi' + icon_state = "sushie_adv" + bonus_reagents = list("vitamin" = 2) + list_reagents = list("nutriment" = 2) + bitesize = 1 + filling_color = "#F2EEEA" //rgb(242, 238, 234) + tastes = list("fish" = 1, "rice" = 1, "salt" = 1) + foodtype = MEAT | VEGETABLES + +/obj/item/reagent_containers/food/snacks/sushie_pro + name = "Funa Nigiri" + desc = "A well prepared pice of the best of the carp fillet placed on rice. Looks fancy and fresh!" + icon = 'modular_citadel/icons/obj/food/food.dmi' + icon_state = "sushie_pro" + bonus_reagents = list("nutriment" = 1, "vitamin" = 2) + list_reagents = list("nutriment" = 8, "vitamin" = 1) + bitesize = 1 + filling_color = "#F2EEEA" //rgb(242, 238, 234) + tastes = list("fish" = 1, "rice" = 1, "salt" = 1) + foodtype = MEAT | VEGETABLES + +/obj/item/reagent_containers/food/snacks/tobiko + name = "Tobiko" + desc = "Spider eggs wrapped in a thin salted Kudzu pod" + icon = 'modular_citadel/icons/obj/food/food.dmi' + icon_state = "sushie_egg" + list_reagents = list("nutriment" = 3, "vitamin" = 2) + filling_color = "#FF3333" // R225 G051 B051 + tastes = list("seaweed" = 1, "salty" = 2) + foodtype = MEAT | VEGETABLES + +/obj/item/reagent_containers/food/snacks/riceball + name = "Onigiri" + desc = "A ball of rice with some light salt and a wrap of Kudzu skin." + icon = 'modular_citadel/icons/obj/food/food.dmi' + icon_state = "riceball" + list_reagents = list("nutriment" = 5, "sodiumchloride" = 2) + tastes = list("rice" = 4, "salt" = 1) + foodtype = GRAIN + +/obj/item/reagent_containers/food/snacks/sashimi + name = "carp sashimi" + desc = "Celebrate surviving attack from hostile alien lifeforms by hospitalising yourself." + icon_state = "sashimi" + bonus_reagents = list("nutriment" = 1, "capsaicin" = 4, "vitamin" = 4) + list_reagents = list("nutriment" = 6, "capsaicin" = 5) + filling_color = "#FA8072" + tastes = list("fish" = 1, "hot peppers" = 1) + foodtype = MEAT | TOXIC \ No newline at end of file From bf9f9dcac32bdd836cd9915c6898dd4da862c43a Mon Sep 17 00:00:00 2001 From: Trilbyspaceclone <30435998+Trilbyspaceclone@users.noreply.github.com> Date: Mon, 29 Apr 2019 17:47:15 -0400 Subject: [PATCH 53/83] Update tgstation.dme --- tgstation.dme | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tgstation.dme b/tgstation.dme index 5b4c4eabe5..55cf2cd18e 100755 --- a/tgstation.dme +++ b/tgstation.dme @@ -1628,6 +1628,7 @@ #include "code\modules\food_and_drinks\food\snacks_sandwichtoast.dm" #include "code\modules\food_and_drinks\food\snacks_soup.dm" #include "code\modules\food_and_drinks\food\snacks_spaghetti.dm" +#include "code\modules\food_and_drinks\food\snacks_sushi.dm" #include "code\modules\food_and_drinks\food\snacks_vend.dm" #include "code\modules\food_and_drinks\food\snacks\dough.dm" #include "code\modules\food_and_drinks\food\snacks\meat.dm" @@ -1655,6 +1656,7 @@ #include "code\modules\food_and_drinks\recipes\tablecraft\recipes_sandwich.dm" #include "code\modules\food_and_drinks\recipes\tablecraft\recipes_soup.dm" #include "code\modules\food_and_drinks\recipes\tablecraft\recipes_spaghetti.dm" +#include "code\modules\food_and_drinks\recipes\tablecraft\recipes_sushi.dm" #include "code\modules\games\cas.dm" #include "code\modules\goonchat\browserOutput.dm" #include "code\modules\goonchat\jsErrorHandler.dm" From 25df517ad567cab4b8375fadc5335b53cbe8a8be Mon Sep 17 00:00:00 2001 From: Trilbyspaceclone <30435998+Trilbyspaceclone@users.noreply.github.com> Date: Mon, 29 Apr 2019 17:48:26 -0400 Subject: [PATCH 54/83] Update construction.dm --- code/__DEFINES/construction.dm | 1 + 1 file changed, 1 insertion(+) diff --git a/code/__DEFINES/construction.dm b/code/__DEFINES/construction.dm index aab49720f6..9f3d38efa1 100644 --- a/code/__DEFINES/construction.dm +++ b/code/__DEFINES/construction.dm @@ -102,6 +102,7 @@ #define CAT_SANDWICH "Sandwiches" #define CAT_SOUP "Soups" #define CAT_SPAGHETTI "Spaghettis" +#define CAT_SUSHI "Fish" #define RCD_FLOORWALL 1 #define RCD_AIRLOCK 2 From 555359f873083b0ac4e2497a52b0d103cf64b7be Mon Sep 17 00:00:00 2001 From: Trilbyspaceclone <30435998+Trilbyspaceclone@users.noreply.github.com> Date: Mon, 29 Apr 2019 17:51:53 -0400 Subject: [PATCH 55/83] Update snacks_sandwichtoast.dm --- .../food_and_drinks/food/snacks_sandwichtoast.dm | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/code/modules/food_and_drinks/food/snacks_sandwichtoast.dm b/code/modules/food_and_drinks/food/snacks_sandwichtoast.dm index 747f5f7d35..88f8848315 100644 --- a/code/modules/food_and_drinks/food/snacks_sandwichtoast.dm +++ b/code/modules/food_and_drinks/food/snacks_sandwichtoast.dm @@ -102,3 +102,13 @@ list_reagents = list("nutriment" = 2, "vitamin" = 2) tastes = list("bread" = 2) foodtype = GRAIN + +/obj/item/reagent_containers/food/snacks/tuna_sandwich + name = "tuna sandwich" + desc = "Both a salad and a sandwich in one." + icon = 'modular_citadel/icons/obj/food/food.dmi' + icon_state = "tunasandwich" + trash = /obj/item/trash/plate + bonus_reagents = list("nutriment" = 1, "vitamin" = 3) + tastes = list("tuna" = 4, "mayonnaise" = 2, "bread" = 2) + foodtype = GRAIN | MEAT From 5737a4e951d34070df6691ed0f2b2ec34eea3773 Mon Sep 17 00:00:00 2001 From: Trilbyspaceclone <30435998+Trilbyspaceclone@users.noreply.github.com> Date: Mon, 29 Apr 2019 17:52:28 -0400 Subject: [PATCH 56/83] Add files via upload --- .../food_and_drinks/food/snacks_sushi.dm | 95 +++++++++++++++++++ 1 file changed, 95 insertions(+) create mode 100644 code/modules/food_and_drinks/food/snacks_sushi.dm diff --git a/code/modules/food_and_drinks/food/snacks_sushi.dm b/code/modules/food_and_drinks/food/snacks_sushi.dm new file mode 100644 index 0000000000..a4cbc5e344 --- /dev/null +++ b/code/modules/food_and_drinks/food/snacks_sushi.dm @@ -0,0 +1,95 @@ +//////////////////////////Sushi Components/////////////////////// + +/obj/item/reagent_containers/food/snacks/sushi_rice + name = "Sushi Rice" + desc = "A bowl of sticky rice for making sushi." + icon = 'modular_citadel/icons/obj/food/food.dmi' + icon_state = "sushi_rice" + list_reagents = list("sodiumchloride" = 5) + tastes = list("rice" = 5, "salt" = 1) + foodtype = GRAIN + +/obj/item/reagent_containers/food/snacks/sea_weed + name = "Sea Weed Sheet" + desc = "A thin, light salt sheet of plant mater. This is commenly used in sushi recipes," + icon = 'modular_citadel/icons/obj/food/food.dmi' + icon_state = "sea_weed" + list_reagents = list("sodiumchloride" = 2) + tastes = list("plants" = 2, "salt" = 1) + foodtype = VEGETABLES + +/obj/item/reagent_containers/food/snacks/tuna + name = "Canned Tuna" + desc = "A small can of tuna fish beloved by felines." + icon = 'modular_citadel/icons/obj/food/food.dmi' + icon_state = "tuna_can" +//trash = /obj/item/trash/tuna_used //I dont know if I like this idea - A Masked Cat + list_reagents = list("sodiumchloride" = 5, "mercury" = 2) + tastes = list("tuna" = 15, "mercury" = 1, "salt" = 3) + foodtype = MEAT + +//////////////////////////Sushi///////////////////////////////// +/obj/item/reagent_containers/food/snacks/sushie_basic + name = "Funa Hosomaki" + desc = "A small cylindrical filled with rice and fish." + icon = 'modular_citadel/icons/obj/food/food.dmi' + icon_state = "sushie_basic" + bonus_reagents = list("vitamin" = 2) + list_reagents = list("nutriment" = 1) + bitesize = 1 + filling_color = "#F2EEEA" //rgb(242, 238, 234) + tastes = list("fish" = 1, "rice" = 1, "salt" = 1) + foodtype = MEAT | VEGETABLES + +/obj/item/reagent_containers/food/snacks/sushie_adv + name = "Funa Nigiri" + desc = "A pice of carp lightly placed on some rice." + icon = 'modular_citadel/icons/obj/food/food.dmi' + icon_state = "sushie_adv" + bonus_reagents = list("vitamin" = 2) + list_reagents = list("nutriment" = 2) + bitesize = 1 + filling_color = "#F2EEEA" //rgb(242, 238, 234) + tastes = list("fish" = 1, "rice" = 1, "salt" = 1) + foodtype = MEAT | VEGETABLES + +/obj/item/reagent_containers/food/snacks/sushie_pro + name = "Funa Nigiri" + desc = "A well prepared pice of the best of the carp fillet placed on rice. Looks fancy and fresh!" + icon = 'modular_citadel/icons/obj/food/food.dmi' + icon_state = "sushie_pro" + bonus_reagents = list("nutriment" = 1, "vitamin" = 2) + list_reagents = list("nutriment" = 8, "vitamin" = 1) + bitesize = 1 + filling_color = "#F2EEEA" //rgb(242, 238, 234) + tastes = list("fish" = 1, "rice" = 1, "salt" = 1) + foodtype = MEAT | VEGETABLES + +/obj/item/reagent_containers/food/snacks/tobiko + name = "Tobiko" + desc = "Spider eggs wrapped in a thin salted Kudzu pod" + icon = 'modular_citadel/icons/obj/food/food.dmi' + icon_state = "sushie_egg" + list_reagents = list("nutriment" = 3, "vitamin" = 2) + filling_color = "#FF3333" // R225 G051 B051 + tastes = list("seaweed" = 1, "salty" = 2) + foodtype = MEAT | VEGETABLES + +/obj/item/reagent_containers/food/snacks/riceball + name = "Onigiri" + desc = "A ball of rice with some light salt and a wrap of Kudzu skin." + icon = 'modular_citadel/icons/obj/food/food.dmi' + icon_state = "riceball" + list_reagents = list("nutriment" = 5, "sodiumchloride" = 2) + tastes = list("rice" = 4, "salt" = 1) + foodtype = GRAIN + +/obj/item/reagent_containers/food/snacks/sashimi + name = "carp sashimi" + desc = "Celebrate surviving attack from hostile alien lifeforms by hospitalising yourself." + icon_state = "sashimi" + bonus_reagents = list("nutriment" = 1, "capsaicin" = 4, "vitamin" = 4) + list_reagents = list("nutriment" = 6, "capsaicin" = 5) + filling_color = "#FA8072" + tastes = list("fish" = 1, "hot peppers" = 1) + foodtype = MEAT | TOXIC \ No newline at end of file From 862512fba749ff11bfc71962999bd5a1f7ed5760 Mon Sep 17 00:00:00 2001 From: Trilbyspaceclone <30435998+Trilbyspaceclone@users.noreply.github.com> Date: Mon, 29 Apr 2019 17:53:44 -0400 Subject: [PATCH 57/83] Update recipes_sandwich.dm --- .../recipes/tablecraft/recipes_sandwich.dm | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/code/modules/food_and_drinks/recipes/tablecraft/recipes_sandwich.dm b/code/modules/food_and_drinks/recipes/tablecraft/recipes_sandwich.dm index 9750e91930..a2e83a09b4 100644 --- a/code/modules/food_and_drinks/recipes/tablecraft/recipes_sandwich.dm +++ b/code/modules/food_and_drinks/recipes/tablecraft/recipes_sandwich.dm @@ -62,5 +62,13 @@ result = /obj/item/reagent_containers/food/snacks/notasandwich subcategory = CAT_SANDWICH - - +/datum/crafting_recipe/food/notasandwich + name = "Tuna sandwich" + reqs = list( + /obj/item/reagent_containers/food/snacks/breadslice/plain = 2, + /obj/item/reagent_containers/food/snacks/tuna = 1, + /obj/item/reagent_containers/food/snacks/grown/onion = 1, + /obj/item/reagent_containers/food/condiment/mayonnaise = 5 + ) + result = /obj/item/reagent_containers/food/snacks/tuna_sandwich + subcategory = CAT_SANDWICH From adc6ef506e609689ebd6493f6c5b445eaa9fc81c Mon Sep 17 00:00:00 2001 From: Trilbyspaceclone <30435998+Trilbyspaceclone@users.noreply.github.com> Date: Mon, 29 Apr 2019 17:58:17 -0400 Subject: [PATCH 58/83] Update recipes_meat.dm --- .../recipes/tablecraft/recipes_meat.dm | 486 ++++++++++-------- 1 file changed, 269 insertions(+), 217 deletions(-) diff --git a/code/modules/food_and_drinks/recipes/tablecraft/recipes_meat.dm b/code/modules/food_and_drinks/recipes/tablecraft/recipes_meat.dm index e401e08062..d48d71c63c 100644 --- a/code/modules/food_and_drinks/recipes/tablecraft/recipes_meat.dm +++ b/code/modules/food_and_drinks/recipes/tablecraft/recipes_meat.dm @@ -1,240 +1,292 @@ +//Not only meat, actually, but also snacks that are almost meat, such as fish meat or tofu -////////////////////////////////////////////////KEBABS//////////////////////////////////////////////// +////////////////////////////////////////////FISH//////////////////////////////////////////// -/datum/crafting_recipe/food/humankebab - name = "Human kebab" - reqs = list( - /obj/item/stack/rods = 1, - /obj/item/reagent_containers/food/snacks/meat/steak/plain/human = 2 - ) - result = /obj/item/reagent_containers/food/snacks/kebab/human - subcategory = CAT_MEAT +/obj/item/reagent_containers/food/snacks/cubancarp + name = "\improper Cuban carp" + desc = "A grifftastic sandwich that burns your tongue and then leaves it numb!" + icon_state = "cubancarp" + trash = /obj/item/trash/plate + bonus_reagents = list("nutriment" = 1, "vitamin" = 4) + bitesize = 3 + filling_color = "#CD853F" + list_reagents = list("nutriment" = 6, "capsaicin" = 1) + tastes = list("fish" = 4, "batter" = 1, "hot peppers" = 1) + foodtype = MEAT -/datum/crafting_recipe/food/kebab - name = "Kebab" - reqs = list( - /obj/item/stack/rods = 1, - /obj/item/reagent_containers/food/snacks/meat/steak = 2 - ) - result = /obj/item/reagent_containers/food/snacks/kebab/monkey - subcategory = CAT_MEAT +/obj/item/reagent_containers/food/snacks/carpmeat + name = "carp fillet" + desc = "A fillet of spess carp meat." + icon_state = "fishfillet" + list_reagents = list("nutriment" = 3, "carpotoxin" = 2, "vitamin" = 2) + bitesize = 6 + filling_color = "#FA8072" + tastes = list("fish" = 1) + foodtype = MEAT -/datum/crafting_recipe/food/tofukebab - name = "Tofu kebab" - reqs = list( - /obj/item/stack/rods = 1, - /obj/item/reagent_containers/food/snacks/tofu = 2 - ) - result = /obj/item/reagent_containers/food/snacks/kebab/tofu - subcategory = CAT_MEAT +/obj/item/reagent_containers/food/snacks/carpmeat/Initialize() + . = ..() + eatverb = pick("bite","chew","choke down","gnaw","swallow","chomp") -/datum/crafting_recipe/food/tailkebab - name = "Lizard tail kebab" - reqs = list( - /obj/item/stack/rods = 1, - /obj/item/organ/tail/lizard = 1 - ) - result = /obj/item/reagent_containers/food/snacks/kebab/tail - subcategory = CAT_MEAT +/obj/item/reagent_containers/food/snacks/carpmeat/imitation + name = "imitation carp fillet" + desc = "Almost just like the real thing, kinda." -// see code/module/crafting/table.dm +/obj/item/reagent_containers/food/snacks/fishfingers + name = "fish fingers" + desc = "A finger of fish." + icon_state = "fishfingers" + bonus_reagents = list("nutriment" = 1, "vitamin" = 2) + list_reagents = list("nutriment" = 4) + bitesize = 1 + filling_color = "#CD853F" + tastes = list("fish" = 1, "breadcrumbs" = 1) + foodtype = MEAT -////////////////////////////////////////////////FISH//////////////////////////////////////////////// +/obj/item/reagent_containers/food/snacks/fishandchips + name = "fish and chips" + desc = "I do say so myself chap." + icon_state = "fishandchips" + bonus_reagents = list("nutriment" = 1, "vitamin" = 2) + list_reagents = list("nutriment" = 6) + filling_color = "#FA8072" + tastes = list("fish" = 1, "chips" = 1) + foodtype = MEAT | VEGETABLES | FRIED -/datum/crafting_recipe/food/cubancarp - name = "Cuban carp" - reqs = list( - /datum/reagent/consumable/flour = 5, - /obj/item/reagent_containers/food/snacks/grown/chili = 1, - /obj/item/reagent_containers/food/snacks/carpmeat = 1 - ) - result = /obj/item/reagent_containers/food/snacks/cubancarp - subcategory = CAT_MEAT +////////////////////////////////////////////MEATS AND ALIKE//////////////////////////////////////////// -/datum/crafting_recipe/food/fishandchips - name = "Fish and chips" - reqs = list( - /obj/item/reagent_containers/food/snacks/fries = 1, - /obj/item/reagent_containers/food/snacks/carpmeat = 1 - ) - result = /obj/item/reagent_containers/food/snacks/fishandchips - subcategory = CAT_MEAT +/obj/item/reagent_containers/food/snacks/tofu + name = "tofu" + desc = "We all love tofu." + icon_state = "tofu" + list_reagents = list("nutriment" = 2) + filling_color = "#F0E68C" + tastes = list("tofu" = 1) + foodtype = VEGETABLES -/datum/crafting_recipe/food/fishfingers - name = "Fish fingers" - reqs = list( - /datum/reagent/consumable/flour = 5, - /obj/item/reagent_containers/food/snacks/bun = 1, - /obj/item/reagent_containers/food/snacks/carpmeat = 1 - ) - result = /obj/item/reagent_containers/food/snacks/fishfingers - subcategory = CAT_MEAT +/obj/item/reagent_containers/food/snacks/spiderleg + name = "spider leg" + desc = "A still twitching leg of a giant spider... you don't really want to eat this, do you?" + icon_state = "spiderleg" + list_reagents = list("nutriment" = 2, "toxin" = 2) + cooked_type = /obj/item/reagent_containers/food/snacks/boiledspiderleg + filling_color = "#000000" + tastes = list("cobwebs" = 1) + foodtype = MEAT | TOXIC -/datum/crafting_recipe/food/sashimi - name = "Sashimi" - reqs = list( - /datum/reagent/consumable/soysauce = 5, - /obj/item/reagent_containers/food/snacks/spidereggs = 1, - /obj/item/reagent_containers/food/snacks/carpmeat = 1 - ) - result = /obj/item/reagent_containers/food/snacks/sashimi - subcategory = CAT_MEAT +/obj/item/reagent_containers/food/snacks/cornedbeef + name = "corned beef and cabbage" + desc = "Now you can feel like a real tourist vacationing in Ireland." + icon_state = "cornedbeef" + trash = /obj/item/trash/plate + bonus_reagents = list("nutriment" = 1, "vitamin" = 4) + list_reagents = list("nutriment" = 5) + tastes = list("meat" = 1, "cabbage" = 1) + foodtype = MEAT | VEGETABLES -/datum/crafting_recipe/food/sushi_basic - name = "Funa Hosomaki" - reqs = list( - /datum/reagent/consumable/soysauce = 3, - /obj/item/reagent_containers/food/snacks/salad/ricebowl = 1, - /obj/item/reagent_containers/food/snacks/carpmeat = 2, - /obj/item/reagent_containers/food/snacks/grown/kudzupod = 3, - ) - result = /obj/item/reagent_containers/food/snacks/sushi_basic - subcategory = CAT_MEAT - -/datum/crafting_recipe/food/sushi_adv - name = "Funa Nigiri" - reqs = list( - /datum/reagent/consumable/soysauce = 5, - /obj/item/reagent_containers/food/snacks/salad/ricebowl = 1, - /obj/item/reagent_containers/food/snacks/carpmeat = 1 - ) - result = /obj/item/reagent_containers/food/snacks/sushi_adv - subcategory = CAT_MEAT - -/datum/crafting_recipe/food/sushi_pro - name = "Well made Funa Nigiri" - reqs = list( - /datum/reagent/consumable/soysauce = 10, - /obj/item/reagent_containers/food/snacks/salad/ricebowl = 2, - /obj/item/reagent_containers/food/snacks/carpmeat = 2 - ) - result = /obj/item/reagent_containers/food/snacks/sushi_pro - subcategory = CAT_MEAT - -////////////////////////////////////////////////MR SPIDER//////////////////////////////////////////////// - -/datum/crafting_recipe/food/spidereggsham - name = "Spider eggs ham" - reqs = list( - /datum/reagent/consumable/sodiumchloride = 1, - /obj/item/reagent_containers/food/snacks/spidereggs = 1, - /obj/item/reagent_containers/food/snacks/meat/cutlet/spider = 2 - ) - result = /obj/item/reagent_containers/food/snacks/spidereggsham - subcategory = CAT_MEAT - -/datum/crafting_recipe/food/sushi_egg - name = "Tobiko" - reqs = list( - /datum/reagent/consumable/soysauce = 6, - /obj/item/reagent_containers/food/snacks/spidereggs = 1, - /obj/item/reagent_containers/food/snacks/grown/kudzupod = 2, - ) - result = /obj/item/reagent_containers/food/snacks/tobiko - subcategory = CAT_MEAT - -////////////////////////////////////////////////MISC RECIPE's//////////////////////////////////////////////// - -/datum/crafting_recipe/food/cornedbeef - name = "Corned beef" - reqs = list( - /datum/reagent/consumable/sodiumchloride = 5, - /obj/item/reagent_containers/food/snacks/meat/steak = 1, - /obj/item/reagent_containers/food/snacks/grown/cabbage = 2 - ) - result = /obj/item/reagent_containers/food/snacks/cornedbeef - subcategory = CAT_MEAT - -/datum/crafting_recipe/food/bearsteak +/obj/item/reagent_containers/food/snacks/bearsteak name = "Filet migrawr" - reqs = list( - /datum/reagent/consumable/ethanol/manly_dorf = 5, - /obj/item/reagent_containers/food/snacks/meat/steak/bear = 1, - ) - tools = list(/obj/item/lighter) - result = /obj/item/reagent_containers/food/snacks/bearsteak - subcategory = CAT_MEAT + desc = "Because eating bear wasn't manly enough." + icon_state = "bearsteak" + trash = /obj/item/trash/plate + bonus_reagents = list("nutriment" = 2, "vitamin" = 6) + list_reagents = list("nutriment" = 2, "vitamin" = 5, "manlydorf" = 5) + tastes = list("meat" = 1, "salmon" = 1) + foodtype = MEAT | ALCOHOL -/datum/crafting_recipe/food/enchiladas - name = "Enchiladas" - reqs = list( - /obj/item/reagent_containers/food/snacks/meat/cutlet = 2, - /obj/item/reagent_containers/food/snacks/grown/chili = 2, - /obj/item/reagent_containers/food/snacks/tortilla = 2 - ) - result = /obj/item/reagent_containers/food/snacks/enchiladas - subcategory = CAT_MEAT +/obj/item/reagent_containers/food/snacks/faggot + name = "faggot" + desc = "A great meal all round. Not a cord of wood." + icon_state = "faggot" + list_reagents = list("nutriment" = 4, "vitamin" = 1) + filling_color = "#800000" + tastes = list("meat" = 1) + foodtype = MEAT -/datum/crafting_recipe/food/stewedsoymeat - name = "Stewed soymeat" - reqs = list( - /obj/item/reagent_containers/food/snacks/soydope = 2, - /obj/item/reagent_containers/food/snacks/grown/carrot = 1, - /obj/item/reagent_containers/food/snacks/grown/tomato = 1 - ) - result = /obj/item/reagent_containers/food/snacks/stewedsoymeat - subcategory = CAT_MEAT +/obj/item/reagent_containers/food/snacks/sausage + name = "sausage" + desc = "A piece of mixed, long meat." + icon_state = "sausage" + filling_color = "#CD5C5C" + bonus_reagents = list("nutriment" = 1, "vitamin" = 1) + list_reagents = list("nutriment" = 6, "vitamin" = 1) + tastes = list("meat" = 1) + foodtype = MEAT + var/roasted = FALSE -/datum/crafting_recipe/food/sausage - name = "Sausage" - reqs = list( - /obj/item/reagent_containers/food/snacks/faggot = 1, - /obj/item/reagent_containers/food/snacks/meat/cutlet = 2 - ) - result = /obj/item/reagent_containers/food/snacks/sausage - subcategory = CAT_MEAT +/obj/item/reagent_containers/food/snacks/sausage/Initialize() + . = ..() + eatverb = pick("bite","chew","nibble","deep throat","gobble","chomp") -/datum/crafting_recipe/food/nugget - name = "Chicken nugget" - reqs = list( - /obj/item/reagent_containers/food/snacks/meat/cutlet = 1 - ) - result = /obj/item/reagent_containers/food/snacks/nugget - subcategory = CAT_MEAT +/obj/item/reagent_containers/food/snacks/kebab + trash = /obj/item/stack/rods + icon_state = "kebab" + w_class = WEIGHT_CLASS_NORMAL + list_reagents = list("nutriment" = 8) + tastes = list("meat" = 3, "metal" = 1) + foodtype = MEAT -/datum/crafting_recipe/food/rawkhinkali - name = "Raw Khinkali" - reqs = list( - /obj/item/reagent_containers/food/snacks/doughslice = 1, - /obj/item/reagent_containers/food/snacks/faggot = 1 - ) - result = /obj/item/reagent_containers/food/snacks/rawkhinkali - subcategory = CAT_MEAT +/obj/item/reagent_containers/food/snacks/kebab/human + name = "human-kebab" + desc = "A human meat, on a stick." + bonus_reagents = list("nutriment" = 1, "vitamin" = 6) + tastes = list("tender meat" = 3, "metal" = 1) + foodtype = MEAT | GROSS -/datum/crafting_recipe/food/pigblanket - name = "Pig in a Blanket" - reqs = list( - /obj/item/reagent_containers/food/snacks/bun = 1, - /obj/item/reagent_containers/food/snacks/butter = 1, - /obj/item/reagent_containers/food/snacks/meat/cutlet = 1 - ) - result = /obj/item/reagent_containers/food/snacks/pigblanket - subcategory = CAT_MEAT +/obj/item/reagent_containers/food/snacks/kebab/monkey + name = "meat-kebab" + desc = "Delicious meat, on a stick." + bonus_reagents = list("nutriment" = 1, "vitamin" = 2) + tastes = list("meat" = 3, "metal" = 1) + foodtype = MEAT -/datum/crafting_recipe/food/ratkebab - name = "Rat Kebab" - reqs = list( - /obj/item/stack/rods = 1, - /obj/item/reagent_containers/food/snacks/deadmouse = 1 - ) - result = /obj/item/reagent_containers/food/snacks/kebab/rat - subcategory = CAT_MEAT +/obj/item/reagent_containers/food/snacks/kebab/tofu + name = "tofu-kebab" + desc = "Vegan meat, on a stick." + bonus_reagents = list("nutriment" = 1) + tastes = list("tofu" = 3, "metal" = 1) + foodtype = VEGETABLES -/datum/crafting_recipe/food/doubleratkebab - name = "Double Rat Kebab" - reqs = list( - /obj/item/stack/rods = 1, - /obj/item/reagent_containers/food/snacks/deadmouse = 2 - ) - result = /obj/item/reagent_containers/food/snacks/kebab/rat/double - subcategory = CAT_MEAT +/obj/item/reagent_containers/food/snacks/kebab/tail + name = "lizard-tail kebab" + desc = "Severed lizard tail on a stick." + bonus_reagents = list("nutriment" = 1, "vitamin" = 4) + tastes = list("meat" = 8, "metal" = 4, "scales" = 1) + foodtype = MEAT + +/obj/item/reagent_containers/food/snacks/rawkhinkali + name = "raw khinkali" + desc = "One hundred khinkalis? Do I look like a pig?" + icon_state = "khinkali" + list_reagents = list("nutriment" = 1, "vitamin" = 1) + cooked_type = /obj/item/reagent_containers/food/snacks/khinkali + tastes = list("meat" = 1, "onions" = 1, "garlic" = 1) + foodtype = MEAT + +/obj/item/reagent_containers/food/snacks/khinkali + name = "khinkali" + desc = "One hundred khinkalis? Do I look like a pig?" + icon_state = "khinkali" + list_reagents = list("nutriment" = 4, "vitamin" = 2) + bitesize = 3 + filling_color = "#F0F0F0" + tastes = list("meat" = 1, "onions" = 1, "garlic" = 1) + foodtype = MEAT + +/obj/item/reagent_containers/food/snacks/monkeycube + name = "monkey cube" + desc = "Just add water!" + icon_state = "monkeycube" + bitesize = 12 + list_reagents = list("nutriment" = 2) + filling_color = "#CD853F" + tastes = list("the jungle" = 1, "bananas" = 1) + foodtype = MEAT | SUGAR + +/obj/item/reagent_containers/food/snacks/monkeycube/On_Consume(mob/living/carbon/M) + if(iscarbon(M)) + M.visible_message("[src] bursts out of [M]!") + M.emote("scream") + M.Knockdown(40) + M.adjustBruteLoss(60) + Expand() + return ..() + +/obj/item/reagent_containers/food/snacks/monkeycube/proc/Expand() + var/mob/spammer = get_mob_by_key(fingerprintslast) + var/mob/living/carbon/monkey/bananas = new(drop_location(), TRUE, spammer) + if (!QDELETED(bananas)) + visible_message("[src] expands!") + bananas.log_message("Spawned via [src] at [AREACOORD(src)], Last attached mob: [key_name(spammer)].", LOG_ATTACK) + else if (!spammer) // Visible message in case there are no fingerprints + visible_message("[src] fails to expand!") + qdel(src) + +/obj/item/reagent_containers/food/snacks/enchiladas + name = "enchiladas" + desc = "Viva La Mexico!" + icon_state = "enchiladas" + bonus_reagents = list("nutriment" = 1, "vitamin" = 2) + bitesize = 4 + filling_color = "#FFA07A" + list_reagents = list("nutriment" = 8, "capsaicin" = 6) + tastes = list("hot peppers" = 1, "meat" = 3, "cheese" = 1, "sour cream" = 1) + foodtype = MEAT + +/obj/item/reagent_containers/food/snacks/stewedsoymeat + name = "stewed soy meat" + desc = "Even non-vegetarians will LOVE this!" + icon_state = "stewedsoymeat" + trash = /obj/item/trash/plate + bonus_reagents = list("nutriment" = 1) + list_reagents = list("nutriment" = 8) + filling_color = "#D2691E" + tastes = list("soy" = 1, "vegetables" = 1) + foodtype = VEGETABLES + +/obj/item/reagent_containers/food/snacks/stewedsoymeat/Initialize() + . = ..() + eatverb = pick("slurp","sip","suck","inhale","drink") + +/obj/item/reagent_containers/food/snacks/boiledspiderleg + name = "boiled spider leg" + desc = "A giant spider's leg that's still twitching after being cooked. Gross!" + icon_state = "spiderlegcooked" + trash = /obj/item/trash/plate + bonus_reagents = list("nutriment" = 1, "capsaicin" = 2, "vitamin" = 2) + list_reagents = list("nutriment" = 3, "capsaicin" = 2) + filling_color = "#000000" + tastes = list("hot peppers" = 1, "cobwebs" = 1) + foodtype = MEAT + +/obj/item/reagent_containers/food/snacks/spidereggsham + name = "green eggs and ham" + desc = "Would you eat them on a train? Would you eat them on a plane? Would you eat them on a state of the art corporate deathtrap floating through space?" + icon_state = "spidereggsham" + trash = /obj/item/trash/plate + bonus_reagents = list("nutriment" = 1, "vitamin" = 3) + list_reagents = list("nutriment" = 6) + bitesize = 4 + filling_color = "#7FFF00" + tastes = list("meat" = 1, "the colour green" = 1) + foodtype = MEAT + +/obj/item/reagent_containers/food/snacks/nugget + name = "chicken nugget" + filling_color = "#B22222" + bonus_reagents = list("nutriment" = 1, "vitamin" = 1) + list_reagents = list("nutriment" = 2) + tastes = list("\"chicken\"" = 1) + foodtype = MEAT + +/obj/item/reagent_containers/food/snacks/nugget/Initialize() + . = ..() + var/shape = pick("lump", "star", "lizard", "corgi") + desc = "A 'chicken' nugget vaguely shaped like a [shape]." + icon_state = "nugget_[shape]" + +/obj/item/reagent_containers/food/snacks/pigblanket + name = "pig in a blanket" + desc = "A tiny sausage wrapped in a flakey, buttery roll. Free this pig from its blanket prison by eating it." + icon_state = "pigblanket" + list_reagents = list("nutriment" = 6, "vitamin" = 1) + bonus_reagents = list("nutriment" = 1, "vitamin" = 1) + filling_color = "#800000" + tastes = list("meat" = 1, "butter" = 1) + +/obj/item/reagent_containers/food/snacks/kebab/rat + name = "rat-kebab" + desc = "Not so delicious rat meat, on a stick." + icon_state = "ratkebab" + w_class = WEIGHT_CLASS_NORMAL + list_reagents = list("nutriment" = 6, "vitamin" = 2) + tastes = list("rat meat" = 1, "metal" = 1) + foodtype = MEAT | GROSS + +/obj/item/reagent_containers/food/snacks/kebab/rat/double + name = "double rat-kebab" + icon_state = "doubleratkebab" + tastes = list("rat meat" = 2, "metal" = 1) + bonus_reagents = list("nutriment" = 6, "vitamin" = 2) -/datum/crafting_recipe/food/ricepork - name = "Rice and pork" - reqs = list( - /obj/item/reagent_containers/food/snacks/salad/boiledrice = 1, - /obj/item/reagent_containers/food/snacks/meat/cutlet = 2 - ) - result = /obj/item/reagent_containers/food/snacks/salad/ricepork - subcategory = CAT_MEAT From 0d099cb627bf544194ef1e11af9d1d8209fe6aae Mon Sep 17 00:00:00 2001 From: Trilbyspaceclone <30435998+Trilbyspaceclone@users.noreply.github.com> Date: Mon, 29 Apr 2019 18:13:42 -0400 Subject: [PATCH 59/83] Update recipes_meat.dm --- code/modules/food_and_drinks/recipes/tablecraft/recipes_meat.dm | 1 - 1 file changed, 1 deletion(-) diff --git a/code/modules/food_and_drinks/recipes/tablecraft/recipes_meat.dm b/code/modules/food_and_drinks/recipes/tablecraft/recipes_meat.dm index d48d71c63c..a4a3cdd298 100644 --- a/code/modules/food_and_drinks/recipes/tablecraft/recipes_meat.dm +++ b/code/modules/food_and_drinks/recipes/tablecraft/recipes_meat.dm @@ -1,6 +1,5 @@ //Not only meat, actually, but also snacks that are almost meat, such as fish meat or tofu - ////////////////////////////////////////////FISH//////////////////////////////////////////// /obj/item/reagent_containers/food/snacks/cubancarp From fd5554dc2176fdc12ce420b345af31b94ddd8364 Mon Sep 17 00:00:00 2001 From: Trilbyspaceclone <30435998+Trilbyspaceclone@users.noreply.github.com> Date: Mon, 29 Apr 2019 18:17:53 -0400 Subject: [PATCH 60/83] Update recipes_meat.dm --- .../modules/food_and_drinks/recipes/tablecraft/recipes_meat.dm | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/code/modules/food_and_drinks/recipes/tablecraft/recipes_meat.dm b/code/modules/food_and_drinks/recipes/tablecraft/recipes_meat.dm index a4a3cdd298..620418e2d0 100644 --- a/code/modules/food_and_drinks/recipes/tablecraft/recipes_meat.dm +++ b/code/modules/food_and_drinks/recipes/tablecraft/recipes_meat.dm @@ -1,6 +1,6 @@ //Not only meat, actually, but also snacks that are almost meat, such as fish meat or tofu -////////////////////////////////////////////FISH//////////////////////////////////////////// +///////////////////////////////////////////FISH//////////////////////////////////////////// /obj/item/reagent_containers/food/snacks/cubancarp name = "\improper Cuban carp" @@ -288,4 +288,3 @@ icon_state = "doubleratkebab" tastes = list("rat meat" = 2, "metal" = 1) bonus_reagents = list("nutriment" = 6, "vitamin" = 2) - From c03febe17e394b32ba0317df7b34ec2fc75bee62 Mon Sep 17 00:00:00 2001 From: Trilbyspaceclone <30435998+Trilbyspaceclone@users.noreply.github.com> Date: Mon, 29 Apr 2019 18:20:38 -0400 Subject: [PATCH 61/83] THATS WHY --- .../recipes/tablecraft/recipes_meat.dm | 496 ++++++++---------- 1 file changed, 228 insertions(+), 268 deletions(-) diff --git a/code/modules/food_and_drinks/recipes/tablecraft/recipes_meat.dm b/code/modules/food_and_drinks/recipes/tablecraft/recipes_meat.dm index 620418e2d0..fe71e9e154 100644 --- a/code/modules/food_and_drinks/recipes/tablecraft/recipes_meat.dm +++ b/code/modules/food_and_drinks/recipes/tablecraft/recipes_meat.dm @@ -1,290 +1,250 @@ -//Not only meat, actually, but also snacks that are almost meat, such as fish meat or tofu -///////////////////////////////////////////FISH//////////////////////////////////////////// -/obj/item/reagent_containers/food/snacks/cubancarp - name = "\improper Cuban carp" - desc = "A grifftastic sandwich that burns your tongue and then leaves it numb!" - icon_state = "cubancarp" - trash = /obj/item/trash/plate - bonus_reagents = list("nutriment" = 1, "vitamin" = 4) - bitesize = 3 - filling_color = "#CD853F" - list_reagents = list("nutriment" = 6, "capsaicin" = 1) - tastes = list("fish" = 4, "batter" = 1, "hot peppers" = 1) - foodtype = MEAT +////////////////////////////////////////////////KEBABS//////////////////////////////////////////////// -/obj/item/reagent_containers/food/snacks/carpmeat - name = "carp fillet" - desc = "A fillet of spess carp meat." - icon_state = "fishfillet" - list_reagents = list("nutriment" = 3, "carpotoxin" = 2, "vitamin" = 2) - bitesize = 6 - filling_color = "#FA8072" - tastes = list("fish" = 1) - foodtype = MEAT +/datum/crafting_recipe/food/humankebab + name = "Human kebab" + reqs = list( + /obj/item/stack/rods = 1, + /obj/item/reagent_containers/food/snacks/meat/steak/plain/human = 2 + ) + result = /obj/item/reagent_containers/food/snacks/kebab/human + subcategory = CAT_MEAT -/obj/item/reagent_containers/food/snacks/carpmeat/Initialize() - . = ..() - eatverb = pick("bite","chew","choke down","gnaw","swallow","chomp") +/datum/crafting_recipe/food/kebab + name = "Kebab" + reqs = list( + /obj/item/stack/rods = 1, + /obj/item/reagent_containers/food/snacks/meat/steak = 2 + ) + result = /obj/item/reagent_containers/food/snacks/kebab/monkey + subcategory = CAT_MEAT -/obj/item/reagent_containers/food/snacks/carpmeat/imitation - name = "imitation carp fillet" - desc = "Almost just like the real thing, kinda." +/datum/crafting_recipe/food/tofukebab + name = "Tofu kebab" + reqs = list( + /obj/item/stack/rods = 1, + /obj/item/reagent_containers/food/snacks/tofu = 2 + ) + result = /obj/item/reagent_containers/food/snacks/kebab/tofu + subcategory = CAT_MEAT -/obj/item/reagent_containers/food/snacks/fishfingers - name = "fish fingers" - desc = "A finger of fish." - icon_state = "fishfingers" - bonus_reagents = list("nutriment" = 1, "vitamin" = 2) - list_reagents = list("nutriment" = 4) - bitesize = 1 - filling_color = "#CD853F" - tastes = list("fish" = 1, "breadcrumbs" = 1) - foodtype = MEAT +/datum/crafting_recipe/food/tailkebab + name = "Lizard tail kebab" + reqs = list( + /obj/item/stack/rods = 1, + /obj/item/organ/tail/lizard = 1 + ) + result = /obj/item/reagent_containers/food/snacks/kebab/tail + subcategory = CAT_MEAT -/obj/item/reagent_containers/food/snacks/fishandchips - name = "fish and chips" - desc = "I do say so myself chap." - icon_state = "fishandchips" - bonus_reagents = list("nutriment" = 1, "vitamin" = 2) - list_reagents = list("nutriment" = 6) - filling_color = "#FA8072" - tastes = list("fish" = 1, "chips" = 1) - foodtype = MEAT | VEGETABLES | FRIED +// see code/module/crafting/table.dm -////////////////////////////////////////////MEATS AND ALIKE//////////////////////////////////////////// +////////////////////////////////////////////////FISH//////////////////////////////////////////////// -/obj/item/reagent_containers/food/snacks/tofu - name = "tofu" - desc = "We all love tofu." - icon_state = "tofu" - list_reagents = list("nutriment" = 2) - filling_color = "#F0E68C" - tastes = list("tofu" = 1) - foodtype = VEGETABLES +/datum/crafting_recipe/food/cubancarp + name = "Cuban carp" + reqs = list( + /datum/reagent/consumable/flour = 5, + /obj/item/reagent_containers/food/snacks/grown/chili = 1, + /obj/item/reagent_containers/food/snacks/carpmeat = 1 + ) + result = /obj/item/reagent_containers/food/snacks/cubancarp + subcategory = CAT_MEAT -/obj/item/reagent_containers/food/snacks/spiderleg - name = "spider leg" - desc = "A still twitching leg of a giant spider... you don't really want to eat this, do you?" - icon_state = "spiderleg" - list_reagents = list("nutriment" = 2, "toxin" = 2) - cooked_type = /obj/item/reagent_containers/food/snacks/boiledspiderleg - filling_color = "#000000" - tastes = list("cobwebs" = 1) - foodtype = MEAT | TOXIC +/datum/crafting_recipe/food/fishandchips + name = "Fish and chips" + reqs = list( + /obj/item/reagent_containers/food/snacks/fries = 1, + /obj/item/reagent_containers/food/snacks/carpmeat = 1 + ) + result = /obj/item/reagent_containers/food/snacks/fishandchips + subcategory = CAT_MEAT -/obj/item/reagent_containers/food/snacks/cornedbeef - name = "corned beef and cabbage" - desc = "Now you can feel like a real tourist vacationing in Ireland." - icon_state = "cornedbeef" - trash = /obj/item/trash/plate - bonus_reagents = list("nutriment" = 1, "vitamin" = 4) - list_reagents = list("nutriment" = 5) - tastes = list("meat" = 1, "cabbage" = 1) - foodtype = MEAT | VEGETABLES +/datum/crafting_recipe/food/fishfingers + name = "Fish fingers" + reqs = list( + /datum/reagent/consumable/flour = 5, + /obj/item/reagent_containers/food/snacks/bun = 1, + /obj/item/reagent_containers/food/snacks/carpmeat = 1 + ) + result = /obj/item/reagent_containers/food/snacks/fishfingers + subcategory = CAT_MEAT -/obj/item/reagent_containers/food/snacks/bearsteak +/datum/crafting_recipe/food/sashimi + name = "Sashimi" + reqs = list( + /datum/reagent/consumable/soysauce = 5, + /obj/item/reagent_containers/food/snacks/spidereggs = 1, + /obj/item/reagent_containers/food/snacks/carpmeat = 1 + ) + result = /obj/item/reagent_containers/food/snacks/sashimi + subcategory = CAT_MEAT + +/datum/crafting_recipe/food/riceball + name = "Onigiri" + reqs = list( + /datum/reagent/consumable/soysauce = 1, + /obj/item/reagent_containers/food/snacks/grown/kudzupod = 1, + /obj/item/reagent_containers/food/snacks/salad/boiledrice = 1 + ) + result = /obj/item/reagent_containers/food/snacks/riceball + subcategory = CAT_MISCFOOD + +/datum/crafting_recipe/food/sushie_egg + name = "Tobiko" + reqs = list( + /datum/reagent/consumable/soysauce = 6, + /obj/item/reagent_containers/food/snacks/spidereggs = 1, + /obj/item/reagent_containers/food/snacks/grown/kudzupod = 2, + ) + result = /obj/item/reagent_containers/food/snacks/tobiko + subcategory = CAT_MEAT + +/datum/crafting_recipe/food/sushie_basic + name = "Funa Hosomaki" + reqs = list( + /datum/reagent/consumable/soysauce = 3, + /obj/item/reagent_containers/food/snacks/salad/boiledrice = 1, + /obj/item/reagent_containers/food/snacks/carpmeat = 2, + /obj/item/reagent_containers/food/snacks/grown/kudzupod = 3, + ) + result = /obj/item/reagent_containers/food/snacks/sushie_basic + subcategory = CAT_MEAT + +/datum/crafting_recipe/food/sushie_adv + name = "Funa Nigiri" + reqs = list( + /datum/reagent/consumable/soysauce = 5, + /obj/item/reagent_containers/food/snacks/salad/ricebowl = 1, + /obj/item/reagent_containers/food/snacks/carpmeat = 1 + ) + result = /obj/item/reagent_containers/food/snacks/sushie_adv + subcategory = CAT_MEAT + +/datum/crafting_recipe/food/sushie_pro + name = "Well made Funa Nigiri" + reqs = list( + /datum/reagent/consumable/soysauce = 10, + /obj/item/reagent_containers/food/snacks/salad/ricebowl = 2, + /obj/item/reagent_containers/food/snacks/carpmeat = 5 + ) + result = /obj/item/reagent_containers/food/snacks/sushie_pro + subcategory = CAT_MEAT + +////////////////////////////////////////////////MR SPIDER//////////////////////////////////////////////// + +/datum/crafting_recipe/food/spidereggsham + name = "Spider eggs ham" + reqs = list( + /datum/reagent/consumable/sodiumchloride = 1, + /obj/item/reagent_containers/food/snacks/spidereggs = 1, + /obj/item/reagent_containers/food/snacks/meat/cutlet/spider = 2 + ) + result = /obj/item/reagent_containers/food/snacks/spidereggsham + subcategory = CAT_MEAT + +////////////////////////////////////////////////MISC RECIPE's//////////////////////////////////////////////// + +/datum/crafting_recipe/food/cornedbeef + name = "Corned beef" + reqs = list( + /datum/reagent/consumable/sodiumchloride = 5, + /obj/item/reagent_containers/food/snacks/meat/steak = 1, + /obj/item/reagent_containers/food/snacks/grown/cabbage = 2 + ) + result = /obj/item/reagent_containers/food/snacks/cornedbeef + subcategory = CAT_MEAT + +/datum/crafting_recipe/food/bearsteak name = "Filet migrawr" - desc = "Because eating bear wasn't manly enough." - icon_state = "bearsteak" - trash = /obj/item/trash/plate - bonus_reagents = list("nutriment" = 2, "vitamin" = 6) - list_reagents = list("nutriment" = 2, "vitamin" = 5, "manlydorf" = 5) - tastes = list("meat" = 1, "salmon" = 1) - foodtype = MEAT | ALCOHOL + reqs = list( + /datum/reagent/consumable/ethanol/manly_dorf = 5, + /obj/item/reagent_containers/food/snacks/meat/steak/bear = 1, + ) + tools = list(/obj/item/lighter) + result = /obj/item/reagent_containers/food/snacks/bearsteak + subcategory = CAT_MEAT -/obj/item/reagent_containers/food/snacks/faggot - name = "faggot" - desc = "A great meal all round. Not a cord of wood." - icon_state = "faggot" - list_reagents = list("nutriment" = 4, "vitamin" = 1) - filling_color = "#800000" - tastes = list("meat" = 1) - foodtype = MEAT +/datum/crafting_recipe/food/enchiladas + name = "Enchiladas" + reqs = list( + /obj/item/reagent_containers/food/snacks/meat/cutlet = 2, + /obj/item/reagent_containers/food/snacks/grown/chili = 2, + /obj/item/reagent_containers/food/snacks/tortilla = 2 + ) + result = /obj/item/reagent_containers/food/snacks/enchiladas + subcategory = CAT_MEAT -/obj/item/reagent_containers/food/snacks/sausage - name = "sausage" - desc = "A piece of mixed, long meat." - icon_state = "sausage" - filling_color = "#CD5C5C" - bonus_reagents = list("nutriment" = 1, "vitamin" = 1) - list_reagents = list("nutriment" = 6, "vitamin" = 1) - tastes = list("meat" = 1) - foodtype = MEAT - var/roasted = FALSE +/datum/crafting_recipe/food/stewedsoymeat + name = "Stewed soymeat" + reqs = list( + /obj/item/reagent_containers/food/snacks/soydope = 2, + /obj/item/reagent_containers/food/snacks/grown/carrot = 1, + /obj/item/reagent_containers/food/snacks/grown/tomato = 1 + ) + result = /obj/item/reagent_containers/food/snacks/stewedsoymeat + subcategory = CAT_MEAT -/obj/item/reagent_containers/food/snacks/sausage/Initialize() - . = ..() - eatverb = pick("bite","chew","nibble","deep throat","gobble","chomp") +/datum/crafting_recipe/food/sausage + name = "Sausage" + reqs = list( + /obj/item/reagent_containers/food/snacks/faggot = 1, + /obj/item/reagent_containers/food/snacks/meat/cutlet = 2 + ) + result = /obj/item/reagent_containers/food/snacks/sausage + subcategory = CAT_MEAT -/obj/item/reagent_containers/food/snacks/kebab - trash = /obj/item/stack/rods - icon_state = "kebab" - w_class = WEIGHT_CLASS_NORMAL - list_reagents = list("nutriment" = 8) - tastes = list("meat" = 3, "metal" = 1) - foodtype = MEAT +/datum/crafting_recipe/food/nugget + name = "Chicken nugget" + reqs = list( + /obj/item/reagent_containers/food/snacks/meat/cutlet = 1 + ) + result = /obj/item/reagent_containers/food/snacks/nugget + subcategory = CAT_MEAT -/obj/item/reagent_containers/food/snacks/kebab/human - name = "human-kebab" - desc = "A human meat, on a stick." - bonus_reagents = list("nutriment" = 1, "vitamin" = 6) - tastes = list("tender meat" = 3, "metal" = 1) - foodtype = MEAT | GROSS +/datum/crafting_recipe/food/rawkhinkali + name = "Raw Khinkali" + reqs = list( + /obj/item/reagent_containers/food/snacks/doughslice = 1, + /obj/item/reagent_containers/food/snacks/faggot = 1 + ) + result = /obj/item/reagent_containers/food/snacks/rawkhinkali + subcategory = CAT_MEAT -/obj/item/reagent_containers/food/snacks/kebab/monkey - name = "meat-kebab" - desc = "Delicious meat, on a stick." - bonus_reagents = list("nutriment" = 1, "vitamin" = 2) - tastes = list("meat" = 3, "metal" = 1) - foodtype = MEAT +/datum/crafting_recipe/food/pigblanket + name = "Pig in a Blanket" + reqs = list( + /obj/item/reagent_containers/food/snacks/bun = 1, + /obj/item/reagent_containers/food/snacks/butter = 1, + /obj/item/reagent_containers/food/snacks/meat/cutlet = 1 + ) + result = /obj/item/reagent_containers/food/snacks/pigblanket + subcategory = CAT_MEAT -/obj/item/reagent_containers/food/snacks/kebab/tofu - name = "tofu-kebab" - desc = "Vegan meat, on a stick." - bonus_reagents = list("nutriment" = 1) - tastes = list("tofu" = 3, "metal" = 1) - foodtype = VEGETABLES +/datum/crafting_recipe/food/ratkebab + name = "Rat Kebab" + reqs = list( + /obj/item/stack/rods = 1, + /obj/item/reagent_containers/food/snacks/deadmouse = 1 + ) + result = /obj/item/reagent_containers/food/snacks/kebab/rat + subcategory = CAT_MEAT -/obj/item/reagent_containers/food/snacks/kebab/tail - name = "lizard-tail kebab" - desc = "Severed lizard tail on a stick." - bonus_reagents = list("nutriment" = 1, "vitamin" = 4) - tastes = list("meat" = 8, "metal" = 4, "scales" = 1) - foodtype = MEAT +/datum/crafting_recipe/food/doubleratkebab + name = "Double Rat Kebab" + reqs = list( + /obj/item/stack/rods = 1, + /obj/item/reagent_containers/food/snacks/deadmouse = 2 + ) + result = /obj/item/reagent_containers/food/snacks/kebab/rat/double + subcategory = CAT_MEAT -/obj/item/reagent_containers/food/snacks/rawkhinkali - name = "raw khinkali" - desc = "One hundred khinkalis? Do I look like a pig?" - icon_state = "khinkali" - list_reagents = list("nutriment" = 1, "vitamin" = 1) - cooked_type = /obj/item/reagent_containers/food/snacks/khinkali - tastes = list("meat" = 1, "onions" = 1, "garlic" = 1) - foodtype = MEAT - -/obj/item/reagent_containers/food/snacks/khinkali - name = "khinkali" - desc = "One hundred khinkalis? Do I look like a pig?" - icon_state = "khinkali" - list_reagents = list("nutriment" = 4, "vitamin" = 2) - bitesize = 3 - filling_color = "#F0F0F0" - tastes = list("meat" = 1, "onions" = 1, "garlic" = 1) - foodtype = MEAT - -/obj/item/reagent_containers/food/snacks/monkeycube - name = "monkey cube" - desc = "Just add water!" - icon_state = "monkeycube" - bitesize = 12 - list_reagents = list("nutriment" = 2) - filling_color = "#CD853F" - tastes = list("the jungle" = 1, "bananas" = 1) - foodtype = MEAT | SUGAR - -/obj/item/reagent_containers/food/snacks/monkeycube/On_Consume(mob/living/carbon/M) - if(iscarbon(M)) - M.visible_message("[src] bursts out of [M]!") - M.emote("scream") - M.Knockdown(40) - M.adjustBruteLoss(60) - Expand() - return ..() - -/obj/item/reagent_containers/food/snacks/monkeycube/proc/Expand() - var/mob/spammer = get_mob_by_key(fingerprintslast) - var/mob/living/carbon/monkey/bananas = new(drop_location(), TRUE, spammer) - if (!QDELETED(bananas)) - visible_message("[src] expands!") - bananas.log_message("Spawned via [src] at [AREACOORD(src)], Last attached mob: [key_name(spammer)].", LOG_ATTACK) - else if (!spammer) // Visible message in case there are no fingerprints - visible_message("[src] fails to expand!") - qdel(src) - -/obj/item/reagent_containers/food/snacks/enchiladas - name = "enchiladas" - desc = "Viva La Mexico!" - icon_state = "enchiladas" - bonus_reagents = list("nutriment" = 1, "vitamin" = 2) - bitesize = 4 - filling_color = "#FFA07A" - list_reagents = list("nutriment" = 8, "capsaicin" = 6) - tastes = list("hot peppers" = 1, "meat" = 3, "cheese" = 1, "sour cream" = 1) - foodtype = MEAT - -/obj/item/reagent_containers/food/snacks/stewedsoymeat - name = "stewed soy meat" - desc = "Even non-vegetarians will LOVE this!" - icon_state = "stewedsoymeat" - trash = /obj/item/trash/plate - bonus_reagents = list("nutriment" = 1) - list_reagents = list("nutriment" = 8) - filling_color = "#D2691E" - tastes = list("soy" = 1, "vegetables" = 1) - foodtype = VEGETABLES - -/obj/item/reagent_containers/food/snacks/stewedsoymeat/Initialize() - . = ..() - eatverb = pick("slurp","sip","suck","inhale","drink") - -/obj/item/reagent_containers/food/snacks/boiledspiderleg - name = "boiled spider leg" - desc = "A giant spider's leg that's still twitching after being cooked. Gross!" - icon_state = "spiderlegcooked" - trash = /obj/item/trash/plate - bonus_reagents = list("nutriment" = 1, "capsaicin" = 2, "vitamin" = 2) - list_reagents = list("nutriment" = 3, "capsaicin" = 2) - filling_color = "#000000" - tastes = list("hot peppers" = 1, "cobwebs" = 1) - foodtype = MEAT - -/obj/item/reagent_containers/food/snacks/spidereggsham - name = "green eggs and ham" - desc = "Would you eat them on a train? Would you eat them on a plane? Would you eat them on a state of the art corporate deathtrap floating through space?" - icon_state = "spidereggsham" - trash = /obj/item/trash/plate - bonus_reagents = list("nutriment" = 1, "vitamin" = 3) - list_reagents = list("nutriment" = 6) - bitesize = 4 - filling_color = "#7FFF00" - tastes = list("meat" = 1, "the colour green" = 1) - foodtype = MEAT - -/obj/item/reagent_containers/food/snacks/nugget - name = "chicken nugget" - filling_color = "#B22222" - bonus_reagents = list("nutriment" = 1, "vitamin" = 1) - list_reagents = list("nutriment" = 2) - tastes = list("\"chicken\"" = 1) - foodtype = MEAT - -/obj/item/reagent_containers/food/snacks/nugget/Initialize() - . = ..() - var/shape = pick("lump", "star", "lizard", "corgi") - desc = "A 'chicken' nugget vaguely shaped like a [shape]." - icon_state = "nugget_[shape]" - -/obj/item/reagent_containers/food/snacks/pigblanket - name = "pig in a blanket" - desc = "A tiny sausage wrapped in a flakey, buttery roll. Free this pig from its blanket prison by eating it." - icon_state = "pigblanket" - list_reagents = list("nutriment" = 6, "vitamin" = 1) - bonus_reagents = list("nutriment" = 1, "vitamin" = 1) - filling_color = "#800000" - tastes = list("meat" = 1, "butter" = 1) - -/obj/item/reagent_containers/food/snacks/kebab/rat - name = "rat-kebab" - desc = "Not so delicious rat meat, on a stick." - icon_state = "ratkebab" - w_class = WEIGHT_CLASS_NORMAL - list_reagents = list("nutriment" = 6, "vitamin" = 2) - tastes = list("rat meat" = 1, "metal" = 1) - foodtype = MEAT | GROSS - -/obj/item/reagent_containers/food/snacks/kebab/rat/double - name = "double rat-kebab" - icon_state = "doubleratkebab" - tastes = list("rat meat" = 2, "metal" = 1) - bonus_reagents = list("nutriment" = 6, "vitamin" = 2) +/datum/crafting_recipe/food/ricepork + name = "Rice and pork" + reqs = list( + /obj/item/reagent_containers/food/snacks/salad/boiledrice = 1, + /obj/item/reagent_containers/food/snacks/meat/cutlet = 2 + ) + result = /obj/item/reagent_containers/food/snacks/salad/ricepork + subcategory = CAT_MEAT From 482ee83621294711934aa244ae1aad1427ffa62a Mon Sep 17 00:00:00 2001 From: Trilbyspaceclone <30435998+Trilbyspaceclone@users.noreply.github.com> Date: Mon, 29 Apr 2019 18:22:31 -0400 Subject: [PATCH 62/83] Update recipes_meat.dm --- .../recipes/tablecraft/recipes_meat.dm | 63 ------------------- 1 file changed, 63 deletions(-) diff --git a/code/modules/food_and_drinks/recipes/tablecraft/recipes_meat.dm b/code/modules/food_and_drinks/recipes/tablecraft/recipes_meat.dm index fe71e9e154..c16c7268b9 100644 --- a/code/modules/food_and_drinks/recipes/tablecraft/recipes_meat.dm +++ b/code/modules/food_and_drinks/recipes/tablecraft/recipes_meat.dm @@ -1,5 +1,3 @@ - - ////////////////////////////////////////////////KEBABS//////////////////////////////////////////////// /datum/crafting_recipe/food/humankebab @@ -71,67 +69,6 @@ result = /obj/item/reagent_containers/food/snacks/fishfingers subcategory = CAT_MEAT -/datum/crafting_recipe/food/sashimi - name = "Sashimi" - reqs = list( - /datum/reagent/consumable/soysauce = 5, - /obj/item/reagent_containers/food/snacks/spidereggs = 1, - /obj/item/reagent_containers/food/snacks/carpmeat = 1 - ) - result = /obj/item/reagent_containers/food/snacks/sashimi - subcategory = CAT_MEAT - -/datum/crafting_recipe/food/riceball - name = "Onigiri" - reqs = list( - /datum/reagent/consumable/soysauce = 1, - /obj/item/reagent_containers/food/snacks/grown/kudzupod = 1, - /obj/item/reagent_containers/food/snacks/salad/boiledrice = 1 - ) - result = /obj/item/reagent_containers/food/snacks/riceball - subcategory = CAT_MISCFOOD - -/datum/crafting_recipe/food/sushie_egg - name = "Tobiko" - reqs = list( - /datum/reagent/consumable/soysauce = 6, - /obj/item/reagent_containers/food/snacks/spidereggs = 1, - /obj/item/reagent_containers/food/snacks/grown/kudzupod = 2, - ) - result = /obj/item/reagent_containers/food/snacks/tobiko - subcategory = CAT_MEAT - -/datum/crafting_recipe/food/sushie_basic - name = "Funa Hosomaki" - reqs = list( - /datum/reagent/consumable/soysauce = 3, - /obj/item/reagent_containers/food/snacks/salad/boiledrice = 1, - /obj/item/reagent_containers/food/snacks/carpmeat = 2, - /obj/item/reagent_containers/food/snacks/grown/kudzupod = 3, - ) - result = /obj/item/reagent_containers/food/snacks/sushie_basic - subcategory = CAT_MEAT - -/datum/crafting_recipe/food/sushie_adv - name = "Funa Nigiri" - reqs = list( - /datum/reagent/consumable/soysauce = 5, - /obj/item/reagent_containers/food/snacks/salad/ricebowl = 1, - /obj/item/reagent_containers/food/snacks/carpmeat = 1 - ) - result = /obj/item/reagent_containers/food/snacks/sushie_adv - subcategory = CAT_MEAT - -/datum/crafting_recipe/food/sushie_pro - name = "Well made Funa Nigiri" - reqs = list( - /datum/reagent/consumable/soysauce = 10, - /obj/item/reagent_containers/food/snacks/salad/ricebowl = 2, - /obj/item/reagent_containers/food/snacks/carpmeat = 5 - ) - result = /obj/item/reagent_containers/food/snacks/sushie_pro - subcategory = CAT_MEAT - ////////////////////////////////////////////////MR SPIDER//////////////////////////////////////////////// /datum/crafting_recipe/food/spidereggsham From ee007ecae041800944c4bdd305bf6ad140895097 Mon Sep 17 00:00:00 2001 From: Trilbyspaceclone <30435998+Trilbyspaceclone@users.noreply.github.com> Date: Mon, 29 Apr 2019 18:26:19 -0400 Subject: [PATCH 63/83] Update snacks_sushi.dm --- .../recipes/tablecraft/snacks_sushi.dm | 165 +++++++++--------- 1 file changed, 82 insertions(+), 83 deletions(-) diff --git a/code/modules/food_and_drinks/recipes/tablecraft/snacks_sushi.dm b/code/modules/food_and_drinks/recipes/tablecraft/snacks_sushi.dm index a4cbc5e344..99d48cf69d 100644 --- a/code/modules/food_and_drinks/recipes/tablecraft/snacks_sushi.dm +++ b/code/modules/food_and_drinks/recipes/tablecraft/snacks_sushi.dm @@ -1,95 +1,94 @@ //////////////////////////Sushi Components/////////////////////// -/obj/item/reagent_containers/food/snacks/sushi_rice +/datum/crafting_recipe/food/sushi_rice name = "Sushi Rice" - desc = "A bowl of sticky rice for making sushi." - icon = 'modular_citadel/icons/obj/food/food.dmi' - icon_state = "sushi_rice" - list_reagents = list("sodiumchloride" = 5) - tastes = list("rice" = 5, "salt" = 1) - foodtype = GRAIN + reqs = list( + /datum/reagent/water = 40, + /datum/reagent/consumable/rice = 10 + ) + result = /obj/item/reagent_containers/food/snacks/sushi_rice + subcategory = CAT_SUSHI -/obj/item/reagent_containers/food/snacks/sea_weed +/datum/crafting_recipe/food/sea_weed name = "Sea Weed Sheet" - desc = "A thin, light salt sheet of plant mater. This is commenly used in sushi recipes," - icon = 'modular_citadel/icons/obj/food/food.dmi' - icon_state = "sea_weed" - list_reagents = list("sodiumchloride" = 2) - tastes = list("plants" = 2, "salt" = 1) - foodtype = VEGETABLES + reqs = list( + /datum/reagent/water = 30, + /datum/reagent/consumable/soysauce = 5, + /obj/item/reagent_containers/food/snacks/grown/kudzupod = 1, + ) + result = /obj/item/reagent_containers/food/snacks/sea_weed + subcategory = CAT_SUSHI -/obj/item/reagent_containers/food/snacks/tuna - name = "Canned Tuna" - desc = "A small can of tuna fish beloved by felines." - icon = 'modular_citadel/icons/obj/food/food.dmi' - icon_state = "tuna_can" -//trash = /obj/item/trash/tuna_used //I dont know if I like this idea - A Masked Cat - list_reagents = list("sodiumchloride" = 5, "mercury" = 2) - tastes = list("tuna" = 15, "mercury" = 1, "salt" = 3) - foodtype = MEAT +/datum/crafting_recipe/food/tuna_can + name = "Can of Tuna" + reqs = list( + /datum/reagent/consumable/sodiumchloride = 15, + /datum/reagent/consumable/cooking_oil = 5, + /obj/item/reagent_containers/food/snacks/carpmeat = 1, + ) + result = /obj/item/reagent_containers/food/snacks/tuna + subcategory = CAT_SUSHI //////////////////////////Sushi///////////////////////////////// -/obj/item/reagent_containers/food/snacks/sushie_basic - name = "Funa Hosomaki" - desc = "A small cylindrical filled with rice and fish." - icon = 'modular_citadel/icons/obj/food/food.dmi' - icon_state = "sushie_basic" - bonus_reagents = list("vitamin" = 2) - list_reagents = list("nutriment" = 1) - bitesize = 1 - filling_color = "#F2EEEA" //rgb(242, 238, 234) - tastes = list("fish" = 1, "rice" = 1, "salt" = 1) - foodtype = MEAT | VEGETABLES -/obj/item/reagent_containers/food/snacks/sushie_adv - name = "Funa Nigiri" - desc = "A pice of carp lightly placed on some rice." - icon = 'modular_citadel/icons/obj/food/food.dmi' - icon_state = "sushie_adv" - bonus_reagents = list("vitamin" = 2) - list_reagents = list("nutriment" = 2) - bitesize = 1 - filling_color = "#F2EEEA" //rgb(242, 238, 234) - tastes = list("fish" = 1, "rice" = 1, "salt" = 1) - foodtype = MEAT | VEGETABLES +/datum/crafting_recipe/food/sashimi + name = "Sashimi" + reqs = list( + /datum/reagent/consumable/soysauce = 5, + /obj/item/reagent_containers/food/snacks/spidereggs = 1, + /obj/item/reagent_containers/food/snacks/carpmeat = 1 + ) + result = /obj/item/reagent_containers/food/snacks/sashimi + subcategory = CAT_SUSHI -/obj/item/reagent_containers/food/snacks/sushie_pro - name = "Funa Nigiri" - desc = "A well prepared pice of the best of the carp fillet placed on rice. Looks fancy and fresh!" - icon = 'modular_citadel/icons/obj/food/food.dmi' - icon_state = "sushie_pro" - bonus_reagents = list("nutriment" = 1, "vitamin" = 2) - list_reagents = list("nutriment" = 8, "vitamin" = 1) - bitesize = 1 - filling_color = "#F2EEEA" //rgb(242, 238, 234) - tastes = list("fish" = 1, "rice" = 1, "salt" = 1) - foodtype = MEAT | VEGETABLES - -/obj/item/reagent_containers/food/snacks/tobiko - name = "Tobiko" - desc = "Spider eggs wrapped in a thin salted Kudzu pod" - icon = 'modular_citadel/icons/obj/food/food.dmi' - icon_state = "sushie_egg" - list_reagents = list("nutriment" = 3, "vitamin" = 2) - filling_color = "#FF3333" // R225 G051 B051 - tastes = list("seaweed" = 1, "salty" = 2) - foodtype = MEAT | VEGETABLES - -/obj/item/reagent_containers/food/snacks/riceball +/datum/crafting_recipe/food/riceball name = "Onigiri" - desc = "A ball of rice with some light salt and a wrap of Kudzu skin." - icon = 'modular_citadel/icons/obj/food/food.dmi' - icon_state = "riceball" - list_reagents = list("nutriment" = 5, "sodiumchloride" = 2) - tastes = list("rice" = 4, "salt" = 1) - foodtype = GRAIN + reqs = list( + /datum/reagent/consumable/soysauce = 1, + /obj/item/reagent_containers/food/snacks/sea_weed = 1, + /obj/item/reagent_containers/food/snacks/sushi_rice = 1 + ) + result = /obj/item/reagent_containers/food/snacks/riceball + subcategory = CAT_SUSHI -/obj/item/reagent_containers/food/snacks/sashimi - name = "carp sashimi" - desc = "Celebrate surviving attack from hostile alien lifeforms by hospitalising yourself." - icon_state = "sashimi" - bonus_reagents = list("nutriment" = 1, "capsaicin" = 4, "vitamin" = 4) - list_reagents = list("nutriment" = 6, "capsaicin" = 5) - filling_color = "#FA8072" - tastes = list("fish" = 1, "hot peppers" = 1) - foodtype = MEAT | TOXIC \ No newline at end of file +/datum/crafting_recipe/food/sushie_egg + name = "Tobiko" + reqs = list( + /datum/reagent/consumable/soysauce = 6, + /obj/item/reagent_containers/food/snacks/spidereggs = 1, + /obj/item/reagent_containers/food/snacks/sea_weed = 2, + ) + result = /obj/item/reagent_containers/food/snacks/tobiko + subcategory = CAT_SUSHI + +/datum/crafting_recipe/food/sushie_basic + name = "Funa Hosomaki" + reqs = list( + /datum/reagent/consumable/soysauce = 3, + /obj/item/reagent_containers/food/snacks/sushi_rice = 1, + /obj/item/reagent_containers/food/snacks/carpmeat = 2, + /obj/item/reagent_containers/food/snacks/sea_weed = 3, + ) + result = /obj/item/reagent_containers/food/snacks/sushie_basic + subcategory = CAT_SUSHI + +/datum/crafting_recipe/food/sushie_adv + name = "Funa Nigiri" + reqs = list( + /datum/reagent/consumable/soysauce = 5, + /obj/item/reagent_containers/food/snacks/sushi_rice = 1, + /obj/item/reagent_containers/food/snacks/carpmeat = 1 + ) + result = /obj/item/reagent_containers/food/snacks/sushie_adv + subcategory = CAT_SUSHI + +/datum/crafting_recipe/food/sushie_pro + name = "Well made Funa Nigiri" + reqs = list( + /datum/reagent/consumable/soysauce = 10, + /obj/item/reagent_containers/food/snacks/sushi_rice = 2, + /obj/item/reagent_containers/food/snacks/carpmeat = 5, + /obj/item/reagent_containers/food/snacks/sea_weed = 1 + ) + result = /obj/item/reagent_containers/food/snacks/sushie_pro + subcategory = CAT_SUSHI From 0d868bc660f13c7dcbc7d828da40478d7b914171 Mon Sep 17 00:00:00 2001 From: Trilbyspaceclone <30435998+Trilbyspaceclone@users.noreply.github.com> Date: Mon, 29 Apr 2019 18:52:04 -0400 Subject: [PATCH 64/83] Rename snacks_sushi.dm to recipes_sushi.dm --- .../recipes/tablecraft/{snacks_sushi.dm => recipes_sushi.dm} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename code/modules/food_and_drinks/recipes/tablecraft/{snacks_sushi.dm => recipes_sushi.dm} (100%) diff --git a/code/modules/food_and_drinks/recipes/tablecraft/snacks_sushi.dm b/code/modules/food_and_drinks/recipes/tablecraft/recipes_sushi.dm similarity index 100% rename from code/modules/food_and_drinks/recipes/tablecraft/snacks_sushi.dm rename to code/modules/food_and_drinks/recipes/tablecraft/recipes_sushi.dm From e77188d461b99b2b5eed0eadc6583dc2b6b053e9 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Tue, 30 Apr 2019 07:14:13 -0500 Subject: [PATCH 65/83] Automatic changelog generation for PR #8302 [ci skip] --- html/changelogs/AutoChangeLog-pr-8302.yml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-8302.yml diff --git a/html/changelogs/AutoChangeLog-pr-8302.yml b/html/changelogs/AutoChangeLog-pr-8302.yml new file mode 100644 index 0000000000..e2b535c40f --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-8302.yml @@ -0,0 +1,5 @@ +author: "BurgerBB" +delete-after: True +changes: + - tweak: "Tweaked penis." + - balance: "Rebalanced penis." From 8cf8d87658d9a0456d302b445b0ae2f7d6b4dd3c Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Tue, 30 Apr 2019 07:18:17 -0500 Subject: [PATCH 66/83] Automatic changelog generation for PR #8287 [ci skip] --- html/changelogs/AutoChangeLog-pr-8287.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-8287.yml diff --git a/html/changelogs/AutoChangeLog-pr-8287.yml b/html/changelogs/AutoChangeLog-pr-8287.yml new file mode 100644 index 0000000000..aafba03474 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-8287.yml @@ -0,0 +1,4 @@ +author: "Trilbyspaceclone" +delete-after: True +changes: + - rscadd: "new lockable colalr" From 5802c75389b7f71fb9051212edc253382415c291 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Tue, 30 Apr 2019 07:18:55 -0500 Subject: [PATCH 67/83] Automatic changelog generation for PR #8289 [ci skip] --- html/changelogs/AutoChangeLog-pr-8289.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-8289.yml diff --git a/html/changelogs/AutoChangeLog-pr-8289.yml b/html/changelogs/AutoChangeLog-pr-8289.yml new file mode 100644 index 0000000000..d389d95cd6 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-8289.yml @@ -0,0 +1,4 @@ +author: "Trilbyspaceclone" +delete-after: True +changes: + - tweak: "armor" From 202d901c2584e3d918aa6ebeb415dce67702e90c Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Tue, 30 Apr 2019 07:24:19 -0500 Subject: [PATCH 68/83] Automatic changelog generation for PR #8301 [ci skip] --- html/changelogs/AutoChangeLog-pr-8301.yml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-8301.yml diff --git a/html/changelogs/AutoChangeLog-pr-8301.yml b/html/changelogs/AutoChangeLog-pr-8301.yml new file mode 100644 index 0000000000..90e893bdf2 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-8301.yml @@ -0,0 +1,5 @@ +author: "Trilbyspaceclone" +delete-after: True +changes: + - rscadd: "mag gun uses cells" + - balance: "kev things their to op" From 2661b08d287fb18914e24e8a2ab703322dccffcd Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Tue, 30 Apr 2019 07:28:58 -0500 Subject: [PATCH 69/83] Automatic changelog generation for PR #8283 [ci skip] --- html/changelogs/AutoChangeLog-pr-8283.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-8283.yml diff --git a/html/changelogs/AutoChangeLog-pr-8283.yml b/html/changelogs/AutoChangeLog-pr-8283.yml new file mode 100644 index 0000000000..7a614e2e82 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-8283.yml @@ -0,0 +1,4 @@ +author: "BurgerBB" +delete-after: True +changes: + - rscadd: "Adds a new 0 cost trait that makes you immune* to Crocin and Hexacrocin" From 1d69ac167200bcfb68c15424c48fa07aed1eff4e Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Tue, 30 Apr 2019 07:30:03 -0500 Subject: [PATCH 70/83] Automatic changelog generation for PR #8294 [ci skip] --- html/changelogs/AutoChangeLog-pr-8294.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-8294.yml diff --git a/html/changelogs/AutoChangeLog-pr-8294.yml b/html/changelogs/AutoChangeLog-pr-8294.yml new file mode 100644 index 0000000000..bce0031c2b --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-8294.yml @@ -0,0 +1,4 @@ +author: "Trilbyspaceclone" +delete-after: True +changes: + - imageadd: "This means sprite right?" From 52cff725c455907132187b32dbb128020fb53943 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Tue, 30 Apr 2019 07:31:36 -0500 Subject: [PATCH 71/83] Automatic changelog generation for PR #8290 [ci skip] --- html/changelogs/AutoChangeLog-pr-8290.yml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-8290.yml diff --git a/html/changelogs/AutoChangeLog-pr-8290.yml b/html/changelogs/AutoChangeLog-pr-8290.yml new file mode 100644 index 0000000000..553bfbf4f9 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-8290.yml @@ -0,0 +1,5 @@ +author: "Trilbyspaceclone" +delete-after: True +changes: + - bugfix: "missing hopes and dreams" + - code_imp: "orgized the weapon file to be more cat brain friendly" From ea9e2a7d149000a557cdf3bc3cd7bffbdd75df1a Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Tue, 30 Apr 2019 07:32:23 -0500 Subject: [PATCH 72/83] Automatic changelog generation for PR #8286 [ci skip] --- html/changelogs/AutoChangeLog-pr-8286.yml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-8286.yml diff --git a/html/changelogs/AutoChangeLog-pr-8286.yml b/html/changelogs/AutoChangeLog-pr-8286.yml new file mode 100644 index 0000000000..d59a8dad66 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-8286.yml @@ -0,0 +1,5 @@ +author: "BurgerBB" +delete-after: True +changes: + - tweak: "Tweaks how slurring works so it's more of a gradual change into slurring instead of immediate." + - balance: "Slurring is now directly proportional to your drunkenness, with other sources of slur being added on top of it." From 3b0ea2e293b58da98c269f353f6489b68d018286 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Tue, 30 Apr 2019 07:37:05 -0500 Subject: [PATCH 73/83] Automatic changelog generation for PR #8288 [ci skip] --- html/changelogs/AutoChangeLog-pr-8288.yml | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-8288.yml diff --git a/html/changelogs/AutoChangeLog-pr-8288.yml b/html/changelogs/AutoChangeLog-pr-8288.yml new file mode 100644 index 0000000000..6b3fbadbd8 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-8288.yml @@ -0,0 +1,7 @@ +author: "BurgerBB" +delete-after: True +changes: + - tweak: "Bras are now separate from underwear, meaning you can mix and match bras if you're into that." + - tweak: "Men can wear female accessory clothing, and females can wear men accessory clothing. It's not a fetish, mom, it's PROGRESSIVE." + - code_imp: "Reorganized accessories into their own files to prevent a massive 1000 line file." + - server: "i'm 10% sure that merging this PR will cause preference corruption sooooooooooo I just need to hear from @deathride58 or perhaps someone else on how much damage this could possibly do." From 6168d615ac16b3dd82e795a89abcc21a332d0530 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Tue, 30 Apr 2019 07:38:44 -0500 Subject: [PATCH 74/83] Automatic changelog generation for PR #8274 [ci skip] --- html/changelogs/AutoChangeLog-pr-8274.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-8274.yml diff --git a/html/changelogs/AutoChangeLog-pr-8274.yml b/html/changelogs/AutoChangeLog-pr-8274.yml new file mode 100644 index 0000000000..41b2de1d9e --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-8274.yml @@ -0,0 +1,4 @@ +author: "BurgerBB" +delete-after: True +changes: + - tweak: "Increased the spawn area of the City of Cogs (Reebe). This does not affect the area in which builders can build." From faeb4bc22d2ac54c3c1cb79335d3eff3ac74fe3b Mon Sep 17 00:00:00 2001 From: Poojawa Date: Wed, 1 May 2019 00:58:19 -0500 Subject: [PATCH 75/83] Mawp Mawp --- code/modules/mob/living/carbon/human/emote.dm | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/code/modules/mob/living/carbon/human/emote.dm b/code/modules/mob/living/carbon/human/emote.dm index 950ac5fb8b..d1d5fb7cd4 100644 --- a/code/modules/mob/living/carbon/human/emote.dm +++ b/code/modules/mob/living/carbon/human/emote.dm @@ -39,6 +39,19 @@ restraint_check = TRUE emote_type = EMOTE_AUDIBLE +/datum/emote/living/carbon/human/mawp + key = "mawp" + key_third_person = "mawps" + message = "mawps annoyingly." + emote_type = EMOTE_AUDIBLE + +/datum/emote/living/carbon/human/mawp/run_emote(mob/living/user, params) + . = ..() + if(.) + if(ishuman(user)) + if(prob(10)) + user.adjustEarDamage(-5, -5) + /datum/emote/living/carbon/human/mumble key = "mumble" key_third_person = "mumbles" From fd251d3dd2ce7b39193f276d8eaacd0bfcfb6ed0 Mon Sep 17 00:00:00 2001 From: Trilbyspaceclone <30435998+Trilbyspaceclone@users.noreply.github.com> Date: Wed, 1 May 2019 15:15:29 -0400 Subject: [PATCH 76/83] Update laser.dm --- code/modules/projectiles/guns/energy/laser.dm | 1 + 1 file changed, 1 insertion(+) diff --git a/code/modules/projectiles/guns/energy/laser.dm b/code/modules/projectiles/guns/energy/laser.dm index 4e97d0a9b3..a5e2cb6651 100644 --- a/code/modules/projectiles/guns/energy/laser.dm +++ b/code/modules/projectiles/guns/energy/laser.dm @@ -42,6 +42,7 @@ /obj/item/gun/energy/laser/carbine name = "laser carbine" desc = "A ruggedized laser carbine featuring much higher capacity and improved handling when compared to a normal laser gun." + icon = 'icons/obj/guns/energy.dmi' icon_state = "lasernew" item_state = "laser" force = 10 From 150db880def14cbf647e165813ae6227ff6808e0 Mon Sep 17 00:00:00 2001 From: Trilbyspaceclone <30435998+Trilbyspaceclone@users.noreply.github.com> Date: Wed, 1 May 2019 16:07:11 -0400 Subject: [PATCH 77/83] Update laser.dm --- code/modules/projectiles/guns/energy/laser.dm | 3 +++ 1 file changed, 3 insertions(+) diff --git a/code/modules/projectiles/guns/energy/laser.dm b/code/modules/projectiles/guns/energy/laser.dm index a5e2cb6651..cd0dd53d48 100644 --- a/code/modules/projectiles/guns/energy/laser.dm +++ b/code/modules/projectiles/guns/energy/laser.dm @@ -51,6 +51,9 @@ cell_type = /obj/item/stock_parts/cell/lascarbine resistance_flags = FIRE_PROOF | ACID_PROOF +/obj/item/gun/energy/laser/carbine/nopin + pin = null + /obj/item/gun/energy/laser/captain/scattershot name = "scatter shot laser rifle" icon_state = "lasercannon" From 831e450b3f09097a9b409976ebd35bc1001d8023 Mon Sep 17 00:00:00 2001 From: Trilbyspaceclone <30435998+Trilbyspaceclone@users.noreply.github.com> Date: Wed, 1 May 2019 16:08:17 -0400 Subject: [PATCH 78/83] Update weapon_designs.dm --- code/modules/research/designs/weapon_designs.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/research/designs/weapon_designs.dm b/code/modules/research/designs/weapon_designs.dm index 4e31fe50a9..03c0582245 100644 --- a/code/modules/research/designs/weapon_designs.dm +++ b/code/modules/research/designs/weapon_designs.dm @@ -145,7 +145,7 @@ id = "lasercarbine" build_type = PROTOLATHE materials = list(MAT_METAL = 15000, MAT_GLASS = 10000, MAT_GOLD = 2500, MAT_SILVER = 2500) - build_path = /obj/item/gun/energy/laser/carbine + build_path = /obj/item/gun/energy/laser/carbine/nopin category = list("Weapons") departmental_flags = DEPARTMENTAL_FLAG_SECURITY From 7dd5e563b0d6e1065a532b4b7ed38b5b3aaff15a Mon Sep 17 00:00:00 2001 From: deathride58 Date: Thu, 2 May 2019 00:21:38 -0400 Subject: [PATCH 79/83] Clamps biogen amount to a sane amount --- code/modules/hydroponics/biogenerator.dm | 2 ++ 1 file changed, 2 insertions(+) diff --git a/code/modules/hydroponics/biogenerator.dm b/code/modules/hydroponics/biogenerator.dm index e1eb976966..eaffeaf016 100644 --- a/code/modules/hydroponics/biogenerator.dm +++ b/code/modules/hydroponics/biogenerator.dm @@ -304,6 +304,8 @@ else if(href_list["create"]) var/amount = (text2num(href_list["amount"])) + //Can't be outside these (if you change this keep a sane limit) + amount = CLAMP(amount, 1, 50) var/datum/design/D = locate(href_list["create"]) create_product(D, amount) updateUsrDialog() From 1557c3300851ac81657fef335de6fd1b425c58d9 Mon Sep 17 00:00:00 2001 From: BurgerLua Date: Thu, 2 May 2019 14:55:04 -0700 Subject: [PATCH 80/83] Adds Penis Enlargement Pills --- code/__DEFINES/DNA.dm | 1 + code/_globalvars/lists/maintenance_loot.dm | 1 + code/game/objects/items/storage/firstaid.dm | 10 +++++++++- .../chemistry/reagents/other_reagents.dm | 17 +++++++++++++++++ .../modules/reagents/reagent_containers/pill.dm | 4 ++++ .../code/modules/arousal/organs/penis.dm | 2 +- 6 files changed, 33 insertions(+), 2 deletions(-) diff --git a/code/__DEFINES/DNA.dm b/code/__DEFINES/DNA.dm index aea7d42be6..4ed099d9e2 100644 --- a/code/__DEFINES/DNA.dm +++ b/code/__DEFINES/DNA.dm @@ -121,3 +121,4 @@ #define ORGAN_SLOT_BRAIN_ANTIDROP "brain_antidrop" #define ORGAN_SLOT_BRAIN_ANTISTUN "brain_antistun" #define ORGAN_SLOT_TAIL "tail" +#define ORGAN_SLOT_PENIS "penis" diff --git a/code/_globalvars/lists/maintenance_loot.dm b/code/_globalvars/lists/maintenance_loot.dm index d0506c7dcb..36049de77b 100644 --- a/code/_globalvars/lists/maintenance_loot.dm +++ b/code/_globalvars/lists/maintenance_loot.dm @@ -108,5 +108,6 @@ GLOBAL_LIST_INIT(maintenance_loot, list( /obj/item/toy/eightball = 1, /obj/item/reagent_containers/pill/floorpill = 1, /obj/item/storage/daki = 3, //VERY IMPORTANT CIT CHANGE - adds bodypillows to maint + /obj/item/storage/pill_bottle/penis_enlargement = 2, "" = 3 )) diff --git a/code/game/objects/items/storage/firstaid.dm b/code/game/objects/items/storage/firstaid.dm index 079feec17a..1a666ce921 100644 --- a/code/game/objects/items/storage/firstaid.dm +++ b/code/game/objects/items/storage/firstaid.dm @@ -122,7 +122,7 @@ new /obj/item/reagent_containers/pill/antirad(src) new /obj/item/reagent_containers/food/drinks/bottle/vodka(src) new /obj/item/healthanalyzer(src) - + /obj/item/storage/firstaid/o2 name = "oxygen deprivation treatment kit" @@ -312,3 +312,11 @@ /obj/item/storage/pill_bottle/mutarad/PopulateContents() for(var/i in 1 to 7) new /obj/item/reagent_containers/pill/mutarad(src) + +/obj/item/storage/pill_bottle/penis_enlargement + name = "penis enlargement pills" + desc = "You want penis enlargement pills?" + +/obj/item/storage/pill_bottle/penis_enlargement/PopulateContents() + for(var/i in 1 to 7) + new /obj/item/reagent_containers/pill/penis_enlargement(src) diff --git a/code/modules/reagents/chemistry/reagents/other_reagents.dm b/code/modules/reagents/chemistry/reagents/other_reagents.dm index 15a2ef1cba..5d1593d1e7 100644 --- a/code/modules/reagents/chemistry/reagents/other_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/other_reagents.dm @@ -1863,3 +1863,20 @@ description = "The primary precursor for an ancient feline delicacy known as skooma. While it has no notable effects on it's own, mixing it with morphine in a chilled container may yield interesting results." color = "#FAEAFF" taste_description = "synthetic catnip" + +/datum/reagent/penis_enlargement + name = "Penis Enlargement" + id = "penis_enlargement" + description = "A patented chemical forumula by Doctor Ronald Hyatt that is guaranteed to bring maximum GROWTH and LENGTH to your penis, today!" + color = "#888888" + taste_description = "chinese dragon powder" + metabolization_rate = INFINITY //So it instantly removes all of itself. Don't want to put strain on the system. + +/datum/reagent/penis_enlargement/on_mob_life(mob/living/carbon/C) + var/obj/item/organ/genital/penis/P = C.getorganslot(ORGAN_SLOT_PENIS) + if(P) + var/added_length = round(volume/30,0.01) //Every 30u gives an extra inch. Rounded to the nearest 0.01 so float fuckery doesn't occur with the division by 30. + if(added_length >= 0.20) //Only add the length if it's greater than or equal to 0.2. This is to prevent people from smoking the reagents and causing the penis to update constantly. + P.length += added_length + P.update() + ..() \ No newline at end of file diff --git a/code/modules/reagents/reagent_containers/pill.dm b/code/modules/reagents/reagent_containers/pill.dm index 38d47d5185..ed2ca66aae 100644 --- a/code/modules/reagents/reagent_containers/pill.dm +++ b/code/modules/reagents/reagent_containers/pill.dm @@ -233,3 +233,7 @@ /obj/item/reagent_containers/pill/get_belt_overlay() return mutable_appearance('icons/obj/clothing/belt_overlays.dmi', "pouch") + +/obj/item/reagent_containers/pill/penis_enlargement + name = "penis enlargement pill" + list_reagents = list("penis_enlargement" = 30) diff --git a/modular_citadel/code/modules/arousal/organs/penis.dm b/modular_citadel/code/modules/arousal/organs/penis.dm index 18c4d44f13..f6b9f1d999 100644 --- a/modular_citadel/code/modules/arousal/organs/penis.dm +++ b/modular_citadel/code/modules/arousal/organs/penis.dm @@ -4,7 +4,7 @@ icon_state = "penis" icon = 'modular_citadel/icons/obj/genitals/penis.dmi' zone = "groin" - slot = "penis" + slot = ORGAN_SLOT_PENIS w_class = 3 can_masturbate_with = TRUE masturbation_verb = "stroke" From 9cc8ed4bba3d9bb120087a9175edcc9cc4008e93 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Sun, 5 May 2019 01:17:20 -0500 Subject: [PATCH 81/83] Automatic changelog generation for PR #8319 [ci skip] --- html/changelogs/AutoChangeLog-pr-8319.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-8319.yml diff --git a/html/changelogs/AutoChangeLog-pr-8319.yml b/html/changelogs/AutoChangeLog-pr-8319.yml new file mode 100644 index 0000000000..e46b83c121 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-8319.yml @@ -0,0 +1,4 @@ +author: "BurgerBB" +delete-after: True +changes: + - rscadd: "Adds penis enlargement pills." From 1480d534073049f554ea6fc2f2ff9a39b6ee455f Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Sun, 5 May 2019 01:17:53 -0500 Subject: [PATCH 82/83] Automatic changelog generation for PR #8315 [ci skip] --- html/changelogs/AutoChangeLog-pr-8315.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-8315.yml diff --git a/html/changelogs/AutoChangeLog-pr-8315.yml b/html/changelogs/AutoChangeLog-pr-8315.yml new file mode 100644 index 0000000000..5d0b85e162 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-8315.yml @@ -0,0 +1,4 @@ +author: "Trilbyspaceclone" +delete-after: True +changes: + - bugfix: "laser carbine" From c039043d0f6804675f4aa033a829afe70b5be849 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Sun, 5 May 2019 01:18:38 -0500 Subject: [PATCH 83/83] Automatic changelog generation for PR #8317 [ci skip] --- html/changelogs/AutoChangeLog-pr-8317.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-8317.yml diff --git a/html/changelogs/AutoChangeLog-pr-8317.yml b/html/changelogs/AutoChangeLog-pr-8317.yml new file mode 100644 index 0000000000..0fd31c3c52 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-8317.yml @@ -0,0 +1,4 @@ +author: "deathride58" +delete-after: True +changes: + - tweak: "Biogenerators now have a sane limit for production"