diff --git a/_maps/shuttles/pirate_medieval.dmm b/_maps/shuttles/pirate_medieval.dmm new file mode 100644 index 00000000000..03441b8a652 --- /dev/null +++ b/_maps/shuttles/pirate_medieval.dmm @@ -0,0 +1,535 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"a" = ( +/turf/template_noop, +/area/template_noop) +"b" = ( +/obj/structure/table/wood, +/obj/item/stack/sheet/mineral/wood/fifty{ + pixel_y = 4 + }, +/turf/open/floor/stone, +/area/shuttle/pirate) +"c" = ( +/obj/structure/fake_stairs/wood/directional/east, +/obj/structure/window/reinforced/spawner/directional/north, +/obj/structure/window/reinforced/spawner/directional/south, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden{ + dir = 4 + }, +/turf/open/floor/stone, +/area/shuttle/pirate) +"d" = ( +/obj/structure/fake_stairs/wood/directional/east, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden{ + dir = 4 + }, +/obj/structure/mineral_door/gold, +/turf/open/floor/stone, +/area/shuttle/pirate) +"e" = ( +/obj/structure/window/reinforced/spawner/directional/west, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/spawner/random/trash/botanical_waste, +/obj/effect/spawner/random/trash/garbage, +/obj/effect/mob_spawn/ghost_role/human/pirate/medieval, +/turf/open/floor/plating, +/area/shuttle/pirate) +"f" = ( +/obj/structure/window/reinforced/spawner/directional/east, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/spawner/random/trash/garbage, +/turf/open/floor/plating, +/area/shuttle/pirate) +"g" = ( +/obj/structure/fans/tiny, +/obj/structure/window/reinforced/spawner/directional/east, +/obj/structure/mineral_door/iron, +/turf/open/floor/plating, +/area/shuttle/pirate) +"h" = ( +/obj/structure/table/wood, +/obj/item/spear/military{ + pixel_y = 8; + pixel_x = -7 + }, +/obj/item/spear/military{ + pixel_y = 1; + pixel_x = -6 + }, +/obj/item/spear/military{ + pixel_y = -2; + pixel_x = 1 + }, +/turf/open/floor/stone, +/area/shuttle/pirate) +"j" = ( +/obj/item/flashlight/lantern{ + light_on = 1 + }, +/turf/open/floor/stone, +/area/shuttle/pirate) +"k" = ( +/obj/structure/table/wood, +/obj/item/restraints/legcuffs/bola/tactical, +/obj/item/restraints/legcuffs/bola/tactical, +/obj/item/restraints/legcuffs/bola/tactical, +/obj/item/restraints/legcuffs/bola, +/obj/item/restraints/legcuffs/bola, +/obj/item/restraints/legcuffs/bola, +/turf/open/floor/stone, +/area/shuttle/pirate) +"l" = ( +/obj/structure/fans/tiny, +/obj/structure/mineral_door/iron, +/turf/open/floor/stone, +/area/shuttle/pirate) +"m" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/turf_decal/arrows{ + dir = 8 + }, +/obj/effect/spawner/random/trash/cigbutt, +/obj/effect/spawner/random/trash/botanical_waste, +/obj/effect/mob_spawn/ghost_role/human/pirate/medieval, +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 8 + }, +/turf/open/floor/plating, +/area/shuttle/pirate) +"n" = ( +/obj/effect/decal/cleanable/vomit/old, +/turf/open/floor/stone, +/area/shuttle/pirate) +"o" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/turf_decal/arrows{ + dir = 4 + }, +/obj/effect/spawner/random/trash/mess, +/obj/effect/spawner/random/trash/garbage, +/obj/effect/mob_spawn/ghost_role/human/pirate/medieval, +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 4 + }, +/turf/open/floor/plating, +/area/shuttle/pirate) +"p" = ( +/turf/closed/wall/mineral/wood, +/area/shuttle/pirate) +"q" = ( +/obj/effect/mob_spawn/ghost_role/human/pirate/medieval/warlord, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden{ + dir = 4 + }, +/turf/open/floor/stone, +/area/shuttle/pirate) +"r" = ( +/obj/structure/window/reinforced/spawner/directional/east, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/spawner/random/trash/garbage, +/obj/effect/mob_spawn/ghost_role/human/pirate/medieval, +/turf/open/floor/plating, +/area/shuttle/pirate) +"s" = ( +/obj/structure/fans/tiny, +/obj/structure/window/reinforced/spawner/directional/east, +/obj/docking_port/mobile/pirate{ + launch_status = 0; + movement_force = list("KNOCKDOWN"=0,"THROW"=0); + name = "Pirate Ship"; + port_direction = 2 + }, +/obj/docking_port/stationary{ + dwidth = 11; + height = 16; + shuttle_id = "pirate_home"; + name = "Deep Space"; + width = 17 + }, +/obj/structure/mineral_door/iron, +/turf/open/floor/plating, +/area/shuttle/pirate) +"u" = ( +/obj/effect/decal/cleanable/blood/old, +/obj/effect/decal/cleanable/blood/gibs/limb, +/obj/effect/decal/cleanable/blood/gibs/body, +/obj/item/food/meat/slab/human/mutant/zombie, +/obj/item/kitchen/fork, +/turf/open/floor/stone, +/area/shuttle/pirate) +"v" = ( +/obj/structure/window/reinforced/spawner/directional/west, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/spawner/random/trash/garbage, +/turf/open/floor/plating, +/area/shuttle/pirate) +"w" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden{ + dir = 4 + }, +/turf/open/floor/stone, +/area/shuttle/pirate) +"x" = ( +/obj/structure/fake_stairs/wood/directional/west, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden{ + dir = 4 + }, +/obj/structure/mineral_door/gold, +/turf/open/floor/stone, +/area/shuttle/pirate) +"y" = ( +/obj/machinery/shuttle_scrambler, +/turf/open/floor/stone, +/area/shuttle/pirate) +"z" = ( +/obj/structure/fans/tiny, +/obj/structure/window/reinforced/spawner/directional/west, +/obj/structure/mineral_door/iron, +/turf/open/floor/plating, +/area/shuttle/pirate) +"A" = ( +/obj/structure/window/reinforced/spawner/directional/east, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt/dust, +/obj/item/reagent_containers/cup/glass/bottle/vodka, +/turf/open/floor/plating, +/area/shuttle/pirate) +"C" = ( +/obj/machinery/airalarm/directional/west, +/obj/effect/mapping_helpers/airalarm/all_access, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/stone, +/area/shuttle/pirate) +"D" = ( +/obj/machinery/piratepad, +/turf/open/floor/stone, +/area/shuttle/pirate) +"E" = ( +/obj/effect/spawner/structure/window/reinforced/plasma/plastitanium, +/obj/structure/barricade/wooden/crude, +/turf/open/floor/stone, +/area/shuttle/pirate) +"F" = ( +/turf/open/floor/stone, +/area/shuttle/pirate) +"G" = ( +/obj/machinery/computer/piratepad_control, +/turf/open/floor/stone, +/area/shuttle/pirate) +"H" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/structure/chair/wood/wings, +/turf/open/floor/stone, +/area/shuttle/pirate) +"I" = ( +/obj/structure/fake_stairs/wood/directional/west, +/obj/structure/window/reinforced/spawner/directional/north, +/obj/structure/window/reinforced/spawner/directional/south, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden{ + dir = 4 + }, +/turf/open/floor/stone, +/area/shuttle/pirate) +"J" = ( +/obj/effect/decal/cleanable/blood/gibs/old, +/obj/item/food/burger/human, +/obj/structure/table/wood, +/obj/item/reagent_containers/cup/glass/bottle/rum{ + pixel_y = 15; + pixel_x = -4 + }, +/obj/item/reagent_containers/cup/glass/bottle/rum{ + pixel_y = 8; + pixel_x = 8 + }, +/turf/open/floor/stone, +/area/shuttle/pirate) +"K" = ( +/obj/structure/table/wood, +/obj/item/stack/medical/poultice{ + pixel_y = 6; + pixel_x = -3 + }, +/obj/item/stack/medical/poultice{ + pixel_y = -3; + pixel_x = 5 + }, +/obj/item/storage/medkit/fire, +/turf/open/floor/stone, +/area/shuttle/pirate) +"L" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 1 + }, +/turf/open/floor/stone, +/area/shuttle/pirate) +"M" = ( +/obj/structure/window/reinforced/spawner/directional/west, +/obj/effect/spawner/random/trash/graffiti, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/spawner/random/trash/garbage, +/turf/open/floor/plating, +/area/shuttle/pirate) +"N" = ( +/obj/machinery/computer/shuttle/pirate/drop_pod, +/turf/open/floor/stone, +/area/shuttle/pirate) +"O" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/structure/fermenting_barrel/thermite, +/obj/item/reagent_containers/cup/beaker/large, +/obj/item/reagent_containers/cup/beaker/large, +/obj/item/reagent_containers/cup/beaker/large, +/turf/open/floor/stone, +/area/shuttle/pirate) +"P" = ( +/obj/effect/decal/cleanable/glass, +/turf/open/floor/stone, +/area/shuttle/pirate) +"Q" = ( +/obj/structure/closet/cabinet, +/obj/item/claymore, +/obj/item/shield/kite, +/obj/item/shield/kite, +/obj/item/shield/kite, +/turf/open/floor/stone, +/area/shuttle/pirate) +"R" = ( +/obj/machinery/atmospherics/components/tank/air{ + dir = 1 + }, +/turf/open/floor/stone, +/area/shuttle/pirate) +"S" = ( +/obj/structure/frame/computer{ + anchored = 1 + }, +/obj/item/assault_pod/medieval, +/turf/open/floor/stone, +/area/shuttle/pirate) +"T" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden{ + dir = 4 + }, +/turf/open/floor/stone, +/area/shuttle/pirate) +"U" = ( +/obj/machinery/loot_locator, +/turf/open/floor/stone, +/area/shuttle/pirate) +"V" = ( +/obj/effect/spawner/structure/window/reinforced/plasma/plastitanium, +/obj/structure/barricade/wooden/crude, +/turf/open/floor/plating, +/area/shuttle/pirate) +"W" = ( +/obj/structure/table/wood, +/obj/item/radio/intercom{ + pixel_y = 5 + }, +/turf/open/floor/stone, +/area/shuttle/pirate) +"X" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden{ + dir = 4 + }, +/obj/structure/table/wood, +/obj/item/bodypart/head/skeleton{ + pixel_x = -6 + }, +/obj/item/bodypart/head/skeleton{ + pixel_y = -2; + pixel_x = 5 + }, +/obj/item/bodypart/head/skeleton{ + pixel_x = 1; + pixel_y = 8 + }, +/turf/open/floor/stone, +/area/shuttle/pirate) +"Y" = ( +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/stone, +/area/shuttle/pirate) +"Z" = ( +/obj/effect/decal/cleanable/dirt, +/obj/item/flashlight/lantern{ + light_on = 1 + }, +/turf/open/floor/stone, +/area/shuttle/pirate) + +(1,1,1) = {" +a +a +p +p +l +p +p +p +a +"} +(2,1,1) = {" +a +a +g +f +o +r +A +s +a +"} +(3,1,1) = {" +a +a +a +a +I +a +a +a +a +"} +(4,1,1) = {" +p +p +p +p +x +p +E +p +a +"} +(5,1,1) = {" +a +E +R +X +T +C +Q +p +p +"} +(6,1,1) = {" +p +p +W +F +T +j +Y +h +E +"} +(7,1,1) = {" +a +E +N +Y +T +Y +F +k +p +"} +(8,1,1) = {" +V +V +S +P +q +L +F +F +l +"} +(9,1,1) = {" +a +E +y +F +w +n +H +b +p +"} +(10,1,1) = {" +p +p +U +F +w +Z +u +K +E +"} +(11,1,1) = {" +a +E +G +D +T +O +J +p +p +"} +(12,1,1) = {" +p +p +p +p +d +p +E +p +a +"} +(13,1,1) = {" +a +a +a +a +c +a +a +a +a +"} +(14,1,1) = {" +a +a +z +M +m +e +v +z +a +"} +(15,1,1) = {" +a +a +p +p +l +p +p +p +a +"} diff --git a/code/datums/components/crafting/entertainment.dm b/code/datums/components/crafting/entertainment.dm index 370a98a7bfb..7bc2222b142 100644 --- a/code/datums/components/crafting/entertainment.dm +++ b/code/datums/components/crafting/entertainment.dm @@ -112,6 +112,7 @@ /obj/item/spear/explosive, /obj/item/spear/bonespear, /obj/item/spear/bamboospear, + /obj/item/spear/military, ) result = /obj/structure/headpike category = CAT_ENTERTAINMENT @@ -144,6 +145,20 @@ result = /obj/structure/headpike/bamboo category = CAT_ENTERTAINMENT +/datum/crafting_recipe/headpikemilitary + name = "Spike Head (Military)" + time = 6.5 SECONDS + reqs = list( + /obj/item/spear/military = 1, + /obj/item/bodypart/head = 1, + ) + parts = list( + /obj/item/bodypart/head = 1, + /obj/item/spear/military = 1, + ) + result = /obj/structure/headpike/military + category = CAT_ENTERTAINMENT + /datum/crafting_recipe/guillotine name = "Guillotine" result = /obj/structure/guillotine diff --git a/code/datums/mutations/hulk.dm b/code/datums/mutations/hulk.dm index 5db06560964..63e0abc22a3 100644 --- a/code/datums/mutations/hulk.dm +++ b/code/datums/mutations/hulk.dm @@ -277,4 +277,22 @@ TRAIT_STUNIMMUNE, ) // no chunk +/datum/mutation/human/hulk/superhuman + health_req = 0 + instability = 0 + /// List of traits to add/remove when someone gets this mutation. + mutation_traits = list( + TRAIT_CHUNKYFINGERS, + TRAIT_HULK, + TRAIT_IGNOREDAMAGESLOWDOWN, + TRAIT_NOSOFTCRIT, + TRAIT_NOHARDCRIT, + TRAIT_PUSHIMMUNE, + TRAIT_STUNIMMUNE, + TRAIT_ANALGESIA, + ) // fight till your last breath + +/datum/mutation/human/hulk/superhuman/on_life(seconds_per_tick, times_fired) + return + #undef HULK_TAILTHROW_STEPS diff --git a/code/datums/shuttles/pirate.dm b/code/datums/shuttles/pirate.dm index c6f94b5684b..99f866d23fc 100644 --- a/code/datums/shuttles/pirate.dm +++ b/code/datums/shuttles/pirate.dm @@ -29,3 +29,7 @@ /datum/map_template/shuttle/pirate/geode suffix = "geode" name = "pirate ship (Lustrous Geode)" + +/datum/map_template/shuttle/pirate/medieval + suffix = "medieval" + name = "pirate ship (Siege Pod)" diff --git a/code/game/objects/items/fireaxe.dm b/code/game/objects/items/fireaxe.dm index 901e506194e..2859b4d3b2c 100644 --- a/code/game/objects/items/fireaxe.dm +++ b/code/game/objects/items/fireaxe.dm @@ -86,3 +86,13 @@ tool_behaviour = TOOL_CROWBAR toolspeed = 1 usesound = 'sound/items/crowbar.ogg' + +//boarding axe +/obj/item/fireaxe/boardingaxe + icon_state = "boarding_axe0" + base_icon_state = "boarding_axe" + name = "boarding axe" + desc = "A hulking cleaver that feels like a burden just looking at it. Seems excellent at halving obstacles like windows, airlocks, barricades and people." + force_unwielded = 5 + force_wielded = 30 + demolition_mod = 3 diff --git a/code/game/objects/items/shields.dm b/code/game/objects/items/shields.dm index 66dd5a34b6a..2cc41b5d9f2 100644 --- a/code/game/objects/items/shields.dm +++ b/code/game/objects/items/shields.dm @@ -99,6 +99,15 @@ max_integrity = 55 w_class = WEIGHT_CLASS_NORMAL +/obj/item/shield/kite + name = "kite shield" + desc = "Protect your internal organs with this almond shaped shield." + icon_state = "kite" + inhand_icon_state = "kite" + custom_materials = list(/datum/material/wood = SHEET_MATERIAL_AMOUNT * 15) + shield_break_sound = 'sound/effects/grillehit.ogg' + max_integrity = 60 + /obj/item/shield/roman name = "\improper Roman shield" desc = "Bears an inscription on the inside: \"Romanes venio domus\"." diff --git a/code/game/objects/items/spear.dm b/code/game/objects/items/spear.dm index 401ffd46934..f4c0b58a11b 100644 --- a/code/game/objects/items/spear.dm +++ b/code/game/objects/items/spear.dm @@ -216,6 +216,31 @@ M.Copy_Parent(user, 100, user.health/2.5, 12, 30) M.GiveTarget(L) +//MILITARY +/obj/item/spear/military + icon_state = "military_spear0" + base_icon_state = "military_spear0" + icon_prefix = "military_spear" + name = "military Javelin" + desc = "A stick with a seemingly blunt spearhead on its end. Looks like it might break bones easily." + attack_verb_continuous = list("attacks", "pokes", "jabs") + attack_verb_simple = list("attack", "poke", "jab") + throwforce = 30 + demolition_mod = 1 + wound_bonus = 5 + bare_wound_bonus = 25 + throw_range = 9 + throw_speed = 5 + sharpness = NONE // we break bones instead of cutting flesh + +/obj/item/spear/military/add_headpike_component() + var/static/list/slapcraft_recipe_list = list(/datum/crafting_recipe/headpikemilitary) + + AddComponent( + /datum/component/slapcrafting,\ + slapcraft_recipes = slapcraft_recipe_list,\ + ) + /* * Bone Spear */ diff --git a/code/game/objects/items/weaponry.dm b/code/game/objects/items/weaponry.dm index 2aa649844e5..f7717da19e7 100644 --- a/code/game/objects/items/weaponry.dm +++ b/code/game/objects/items/weaponry.dm @@ -175,6 +175,18 @@ for further reading, please see: https://github.com/tgstation/tgstation/pull/301 block_chance = 10 resistance_flags = NONE +//bootleg claymore +/obj/item/claymore/shortsword + name = "shortsword" + desc = "A mercenary's sword, chipped and worn from battles long gone. You could say it is a swordsman's shortsword short sword." + icon_state = "shortsword" + inhand_icon_state = "shortsword" + worn_icon_state = "shortsword" + slot_flags = ITEM_SLOT_BELT + force = 20 + demolition_mod = 0.75 + block_chance = 30 + /obj/item/claymore/highlander //ALL COMMENTS MADE REGARDING THIS SWORD MUST BE MADE IN ALL CAPS desc = "THERE CAN BE ONLY ONE, AND IT WILL BE YOU!!!\nActivate it in your hand to point to the nearest victim." obj_flags = CONDUCTS_ELECTRICITY diff --git a/code/game/objects/structures/headpike.dm b/code/game/objects/structures/headpike.dm index 0c29d92d53b..b4cffdb654d 100644 --- a/code/game/objects/structures/headpike.dm +++ b/code/game/objects/structures/headpike.dm @@ -17,6 +17,10 @@ icon_state = "headpike-bamboo" speartype = /obj/item/spear/bamboospear +/obj/structure/headpike/military //for military spears + icon_state = "headpike-military" + speartype = /obj/item/spear/military + /obj/structure/headpike/Initialize(mapload) . = ..() if(mapload) diff --git a/code/modules/antagonists/pirate/pirate_gangs.dm b/code/modules/antagonists/pirate/pirate_gangs.dm index 5016683c5ea..aef8222a993 100644 --- a/code/modules/antagonists/pirate/pirate_gangs.dm +++ b/code/modules/antagonists/pirate/pirate_gangs.dm @@ -205,3 +205,25 @@ GLOBAL_LIST_INIT(heavy_pirate_gangs, init_pirate_gangs(is_heavy = TRUE)) response_too_late = "You were not ready then, and now that time has passed. We can only go forward, never back." response_not_enough = "You have insulted us, but there shall be no feud, only swift justice!" announcement_color = "purple" + +//medieval militia, from OUTER SPACE! +/datum/pirate_gang/medieval + name = "Medieval Warmongers" + + is_heavy_threat = TRUE + ship_template_id = "medieval" + ship_name_pool = "medieval_names" + + threat_title = "HOMAGE PAYMENT REQUEST" + threat_content = "SALUTATIONS, THIS IS %SHIPNAME AND WE ARE COLLECTING MONEY \ + FROM THE VASSALS IN OUR TERRITORY, YOU JUST SO HAPPEN TO BE IN IT TOO!! NORMALLY \ + WE SLAUGHTER WEAKLINGS LIKE YOU FOR TRESPASING ON OUR LAND, BUT WE ARE WILLING \ + TO WELCOME YOU INTO OUR SPACE IF YOU PAY %PAYOFF AS HOMAGE TO OUR LAW. BE WISE ON YOUR CHOICE!! \ + (send message. send message. why message not sent?)." + arrival_announcement = "I FIGURED OUT HOW TO FLY MY SHIP, WE WILL BE DOCKING NEXT TO YOU IN A MINUTE!!" + possible_answers = list("Please don't hurt me.","You are dumb, go larp somewhere else.") + + response_received = "THIS WILL SUFFICE, REMEMBER WHO OWNS YOU!!" + response_rejected = "FOOLISH DECISION, I'LL MAKE AN EXAMPLE OUT OF YOUR CARCASS!! (does anyone remember how to pilot our ship?)" + response_too_late = "YOU ARE ALREADY UNDER SIEGE YOU BUFFON, ARE YOU BRAINSICK OR IGNORANT?!!" + response_not_enough = "DO THINK OF ME AS A JESTER? YOU ARE DEAD MEAT!! (i forgot how to fly the ship, tarnation.)" diff --git a/code/modules/antagonists/pirate/pirate_outfits.dm b/code/modules/antagonists/pirate/pirate_outfits.dm index 4c73cac107f..15a3d4fe2dc 100644 --- a/code/modules/antagonists/pirate/pirate_outfits.dm +++ b/code/modules/antagonists/pirate/pirate_outfits.dm @@ -148,3 +148,34 @@ glasses = null suit = /obj/item/clothing/suit/jacket/oversized head = /obj/item/clothing/head/costume/crown + +/datum/outfit/pirate/medieval + name = "Medieval Warmonger" + + id = null + glasses = null + uniform = /obj/item/clothing/under/costume/gamberson/military + suit = /obj/item/clothing/suit/armor/vest/military + suit_store = /obj/item/spear/military + back = /obj/item/storage/backpack/satchel/leather + gloves = /obj/item/clothing/gloves/color/brown + head = /obj/item/clothing/head/helmet/military + mask = /obj/item/clothing/mask/balaclava + shoes = /obj/item/clothing/shoes/workboots + belt = /obj/item/claymore/shortsword + l_pocket = /obj/item/flashlight/flare/torch + +/datum/outfit/pirate/medieval/warlord + name = "Medieval Warlord" + + neck = /obj/item/bedsheet/pirate + suit = /obj/item/clothing/suit/armor/riot/knight/warlord + suit_store = null + back = /obj/item/fireaxe/boardingaxe + gloves = /obj/item/clothing/gloves/combat + head = /obj/item/clothing/head/helmet/knight/warlord + mask = /obj/item/clothing/mask/breath + shoes = /obj/item/clothing/shoes/bronze + belt = /obj/item/gun/magic/hook + l_pocket = /obj/item/tank/internals/emergency_oxygen + r_pocket = /obj/item/flashlight/lantern diff --git a/code/modules/antagonists/pirate/pirate_roles.dm b/code/modules/antagonists/pirate/pirate_roles.dm index 64baa724db1..78a3d3fd12a 100644 --- a/code/modules/antagonists/pirate/pirate_roles.dm +++ b/code/modules/antagonists/pirate/pirate_roles.dm @@ -191,3 +191,33 @@ /obj/effect/mob_spawn/ghost_role/human/pirate/lustrous/gunner rank = "Coruscant" + +/obj/effect/mob_spawn/ghost_role/human/pirate/medieval + name = "\improper Improvised sleeper" + desc = "A body bag poked with holes, currently being used as a sleeping bag. Someone seems to be sleeping inside of it." + density = FALSE + you_are_text = "You were a nobody before, until you were given a sword and the opportunity to rise up in ranks. If you put some effort, you can make it big!" + flavour_text = "Raiding some cretins while engaging in bloodsport and violence? what a deal. Stay together and pillage everything!" + icon = 'icons/obj/medical/bodybag.dmi' + icon_state = "bodybag" + fluff_spawn = null + prompt_name = "a medieval warmonger" + outfit = /datum/outfit/pirate/medieval + rank = "Footsoldier" + +/obj/effect/mob_spawn/ghost_role/human/pirate/medieval/special(mob/living/carbon/spawned_mob) + . = ..() + if(rank == "Footsoldier") + ADD_TRAIT(spawned_mob, TRAIT_NOGUNS, INNATE_TRAIT) + spawned_mob.AddComponent(/datum/component/unbreakable) + var/datum/action/cooldown/mob_cooldown/dash/dodge = new(spawned_mob) + dodge.Grant(spawned_mob) + +/obj/effect/mob_spawn/ghost_role/human/pirate/medieval/warlord + rank = "Warlord" + outfit = /datum/outfit/pirate/medieval/warlord + +/obj/effect/mob_spawn/ghost_role/human/pirate/medieval/warlord/special(mob/living/carbon/spawned_mob) + . = ..() + spawned_mob.dna.add_mutation(/datum/mutation/human/hulk/superhuman) + spawned_mob.dna.add_mutation(/datum/mutation/human/gigantism) diff --git a/code/modules/antagonists/pirate/pirate_shuttle_equipment.dm b/code/modules/antagonists/pirate/pirate_shuttle_equipment.dm index 04ebab73cbd..eaa1de48b58 100644 --- a/code/modules/antagonists/pirate/pirate_shuttle_equipment.dm +++ b/code/modules/antagonists/pirate/pirate_shuttle_equipment.dm @@ -96,6 +96,9 @@ light_color = COLOR_SOFT_RED possible_destinations = "pirate_away;pirate_home;pirate_custom" +/obj/machinery/computer/shuttle/pirate/drop_pod + possible_destinations = "null" + /obj/machinery/computer/camera_advanced/shuttle_docker/syndicate/pirate name = "pirate shuttle navigation computer" desc = "Used to designate a precise transit location for the pirate shuttle." diff --git a/code/modules/clothing/head/helmet.dm b/code/modules/clothing/head/helmet.dm index 61bfa3dfe04..0122cda3978 100644 --- a/code/modules/clothing/head/helmet.dm +++ b/code/modules/clothing/head/helmet.dm @@ -524,3 +524,48 @@ fire = 65 acid = 40 wound = 15 + +/obj/item/clothing/head/helmet/military + name = "Crude Helmet" + desc = "A cheaply made kettle helmet with an added faceplate to protect your eyes and mouth." + icon_state = "military" + inhand_icon_state = "knight_helmet" + flags_inv = HIDEEARS|HIDEEYES|HIDEFACE|HIDEHAIR|HIDESNOUT + flags_cover = HEADCOVERSEYES | HEADCOVERSMOUTH | PEPPERPROOF + strip_delay = 80 + dog_fashion = null + armor_type = /datum/armor/helmet_military + +/datum/armor/helmet_military + melee = 45 + bullet = 25 + laser = 25 + energy = 25 + bomb = 25 + fire = 10 + acid = 50 + wound = 20 + +/obj/item/clothing/head/helmet/military/Initialize(mapload) + . = ..() + AddComponent(/datum/component/clothing_fov_visor, FOV_90_DEGREES) + +/obj/item/clothing/head/helmet/knight/warlord + name = "golden barbute helmet" + desc = "There is no man behind the helmet, only a terrible thought." + icon_state = "warlord" + inhand_icon_state = null + armor_type = /datum/armor/helmet_warlord + flags_inv = HIDEEARS|HIDEEYES|HIDEFACE|HIDEMASK|HIDEHAIR|HIDEFACIALHAIR|HIDESNOUT + flags_cover = HEADCOVERSEYES | HEADCOVERSMOUTH | PEPPERPROOF + slowdown = 0.2 + +/datum/armor/helmet_warlord + melee = 70 + bullet = 60 + laser = 70 + energy = 70 + bomb = 40 + fire = 50 + acid = 50 + wound = 30 diff --git a/code/modules/clothing/suits/armor.dm b/code/modules/clothing/suits/armor.dm index 32bf993cf9b..b12a220c2f0 100644 --- a/code/modules/clothing/suits/armor.dm +++ b/code/modules/clothing/suits/armor.dm @@ -688,3 +688,48 @@ fire = 40 acid = 50 wound = 30 + +/obj/item/clothing/suit/armor/vest/military + name = "Crude chestplate" + desc = "It may look rough, rusty and battered, but it's also made out of junk and uncomfortable to wear." + icon_state = "military" + inhand_icon_state = "armor" + dog_fashion = null + armor_type = /datum/armor/military + allowed = list( + /obj/item/banner, + /obj/item/claymore/shortsword, + /obj/item/nullrod, + /obj/item/spear, + /obj/item/gun/ballistic/bow + ) + +/datum/armor/military + melee = 45 + bullet = 25 + laser = 25 + energy = 25 + bomb = 25 + fire = 10 + acid = 50 + wound = 20 + +/obj/item/clothing/suit/armor/riot/knight/warlord + name = "golden plate armor" + desc = "This bulky set of armor is coated with a shiny layer of gold. It seems to almost reflect all light sources." + icon_state = "warlord" + inhand_icon_state = null + armor_type = /datum/armor/armor_warlord + w_class = WEIGHT_CLASS_BULKY + clothing_flags = THICKMATERIAL + slowdown = 0.8 + +/datum/armor/armor_warlord + melee = 70 + bullet = 60 + laser = 70 + energy = 70 + bomb = 40 + fire = 50 + acid = 50 + wound = 30 diff --git a/code/modules/clothing/under/costume.dm b/code/modules/clothing/under/costume.dm index 9259bc78c96..080d1afe70a 100644 --- a/code/modules/clothing/under/costume.dm +++ b/code/modules/clothing/under/costume.dm @@ -428,3 +428,17 @@ body_parts_covered = CHEST|GROIN|LEGS|FEET|ARMS|HANDS|HEAD flags_inv = HIDEGLOVES|HIDESHOES|HIDEEARS|HIDEEYES|HIDEHAIR +/obj/item/clothing/under/costume/gamberson + name = "re-enactor's Gamberson" + desc = "A colorful set of clothes made to look like a medieval gamberson." + icon_state = "gamberson" + inhand_icon_state = null + female_sprite_flags = NO_FEMALE_UNIFORM + can_adjust = FALSE + +/obj/item/clothing/under/costume/gamberson/military + name = "swordsman's Gamberson" + desc = "A padded medieval gamberson. Has enough woolen layers to dull a strike from any small weapon." + armor_type = /datum/armor/clothing_under/rank_security + has_sensor = NO_SENSORS + diff --git a/code/modules/hydroponics/fermenting_barrel.dm b/code/modules/hydroponics/fermenting_barrel.dm index a971b2b6a74..676c0cec7bb 100644 --- a/code/modules/hydroponics/fermenting_barrel.dm +++ b/code/modules/hydroponics/fermenting_barrel.dm @@ -163,3 +163,13 @@ /obj/structure/fermenting_barrel/gunpowder/Initialize(mapload) . = ..() reagents.add_reagent(/datum/reagent/gunpowder, 500) + +/// Medieval pirates can have a barrel as a treat +/obj/structure/fermenting_barrel/thermite + name = "thermite barrel" + desc = "A large wooden barrel for holding thermite. Use this to make a big flipping hole on walls." + can_open = FALSE + +/obj/structure/fermenting_barrel/thermite/Initialize(mapload) + . = ..() + reagents.add_reagent(/datum/reagent/thermite, 500) diff --git a/code/modules/shuttle/assault_pod.dm b/code/modules/shuttle/assault_pod.dm index b628d7c5d84..d9a21cf5e23 100644 --- a/code/modules/shuttle/assault_pod.dm +++ b/code/modules/shuttle/assault_pod.dm @@ -28,6 +28,7 @@ var/width = 7 var/height = 7 var/lz_dir = 1 + var/lzname = "assault_pod" /obj/item/assault_pod/attack_self(mob/living/user) @@ -45,8 +46,8 @@ return var/turf/T = pick(turfs) var/obj/docking_port/stationary/landing_zone = new /obj/docking_port/stationary(T) - landing_zone.shuttle_id = "assault_pod([REF(src)])" - landing_zone.port_destinations = "assault_pod([REF(src)])" + landing_zone.shuttle_id = "[lzname]([REF(src)])" + landing_zone.port_destinations = "[lzname]([REF(src)])" landing_zone.name = "Landing Zone" landing_zone.dwidth = dwidth landing_zone.dheight = dheight @@ -61,3 +62,23 @@ to_chat(user, span_notice("Landing zone set.")) qdel(src) + +/obj/item/assault_pod/medieval //for the medieval pirates + name = "Shuttle placement designator" + icon = 'icons/obj/scrolls.dmi' + icon_state = "blueprints" + inhand_icon_state = null + desc = "A map of the station used to select where you want to land your shuttle." + shuttle_id = "pirate" + dwidth = 1 + dheight = 1 + width = 15 + height = 9 + lzname = "pirate" + +/obj/item/assault_pod/medieval/Initialize(mapload) + . = ..() + var/counter = length(SSmachines.get_machines_by_type_and_subtypes(/obj/machinery/computer/shuttle/pirate)) + if(counter != 1) + shuttle_id = "[shuttle_id]_[counter]" + lzname = "[lzname] [counter]" diff --git a/icons/mob/clothing/back.dmi b/icons/mob/clothing/back.dmi index 1b597f0d33d..30469c85dae 100644 Binary files a/icons/mob/clothing/back.dmi and b/icons/mob/clothing/back.dmi differ diff --git a/icons/mob/clothing/belt.dmi b/icons/mob/clothing/belt.dmi index f21f3ad3dbb..b0e74178ce1 100644 Binary files a/icons/mob/clothing/belt.dmi and b/icons/mob/clothing/belt.dmi differ diff --git a/icons/mob/clothing/belt_mirror.dmi b/icons/mob/clothing/belt_mirror.dmi index 4f7f64db8c6..37658b154db 100644 Binary files a/icons/mob/clothing/belt_mirror.dmi and b/icons/mob/clothing/belt_mirror.dmi differ diff --git a/icons/mob/clothing/head/helmet.dmi b/icons/mob/clothing/head/helmet.dmi index 27215178912..74df620a572 100644 Binary files a/icons/mob/clothing/head/helmet.dmi and b/icons/mob/clothing/head/helmet.dmi differ diff --git a/icons/mob/clothing/suits/armor.dmi b/icons/mob/clothing/suits/armor.dmi index 90be12b694a..3f51d089d9b 100644 Binary files a/icons/mob/clothing/suits/armor.dmi and b/icons/mob/clothing/suits/armor.dmi differ diff --git a/icons/mob/clothing/under/costume.dmi b/icons/mob/clothing/under/costume.dmi index a3b6c7e5050..34703c07058 100644 Binary files a/icons/mob/clothing/under/costume.dmi and b/icons/mob/clothing/under/costume.dmi differ diff --git a/icons/mob/inhands/equipment/shields_lefthand.dmi b/icons/mob/inhands/equipment/shields_lefthand.dmi index ce99a16d476..1aa27021b9e 100644 Binary files a/icons/mob/inhands/equipment/shields_lefthand.dmi and b/icons/mob/inhands/equipment/shields_lefthand.dmi differ diff --git a/icons/mob/inhands/equipment/shields_righthand.dmi b/icons/mob/inhands/equipment/shields_righthand.dmi index 1c9c990b43d..4227ba00792 100644 Binary files a/icons/mob/inhands/equipment/shields_righthand.dmi and b/icons/mob/inhands/equipment/shields_righthand.dmi differ diff --git a/icons/mob/inhands/weapons/axes_lefthand.dmi b/icons/mob/inhands/weapons/axes_lefthand.dmi index 7a0f4fdd592..8352626ce27 100644 Binary files a/icons/mob/inhands/weapons/axes_lefthand.dmi and b/icons/mob/inhands/weapons/axes_lefthand.dmi differ diff --git a/icons/mob/inhands/weapons/axes_righthand.dmi b/icons/mob/inhands/weapons/axes_righthand.dmi index 42cb6350746..7c026e12b66 100644 Binary files a/icons/mob/inhands/weapons/axes_righthand.dmi and b/icons/mob/inhands/weapons/axes_righthand.dmi differ diff --git a/icons/mob/inhands/weapons/polearms_lefthand.dmi b/icons/mob/inhands/weapons/polearms_lefthand.dmi index f9b43790df7..a1355ed9c40 100644 Binary files a/icons/mob/inhands/weapons/polearms_lefthand.dmi and b/icons/mob/inhands/weapons/polearms_lefthand.dmi differ diff --git a/icons/mob/inhands/weapons/polearms_righthand.dmi b/icons/mob/inhands/weapons/polearms_righthand.dmi index 9f7e6239895..05665fbaf95 100644 Binary files a/icons/mob/inhands/weapons/polearms_righthand.dmi and b/icons/mob/inhands/weapons/polearms_righthand.dmi differ diff --git a/icons/mob/inhands/weapons/swords_lefthand.dmi b/icons/mob/inhands/weapons/swords_lefthand.dmi index e0a33fbcee3..6a0520ac9da 100644 Binary files a/icons/mob/inhands/weapons/swords_lefthand.dmi and b/icons/mob/inhands/weapons/swords_lefthand.dmi differ diff --git a/icons/mob/inhands/weapons/swords_righthand.dmi b/icons/mob/inhands/weapons/swords_righthand.dmi index fcdac64bdca..29db3057a2a 100644 Binary files a/icons/mob/inhands/weapons/swords_righthand.dmi and b/icons/mob/inhands/weapons/swords_righthand.dmi differ diff --git a/icons/obj/clothing/head/helmet.dmi b/icons/obj/clothing/head/helmet.dmi index 3bea00dcdc3..02281abe6a3 100644 Binary files a/icons/obj/clothing/head/helmet.dmi and b/icons/obj/clothing/head/helmet.dmi differ diff --git a/icons/obj/clothing/suits/armor.dmi b/icons/obj/clothing/suits/armor.dmi index 4fb7248dbd8..480d6d9102c 100644 Binary files a/icons/obj/clothing/suits/armor.dmi and b/icons/obj/clothing/suits/armor.dmi differ diff --git a/icons/obj/clothing/under/costume.dmi b/icons/obj/clothing/under/costume.dmi index 90bdc205d52..85a49d1b330 100644 Binary files a/icons/obj/clothing/under/costume.dmi and b/icons/obj/clothing/under/costume.dmi differ diff --git a/icons/obj/structures.dmi b/icons/obj/structures.dmi index 1bb6689becf..cf6cdbdf0d8 100644 Binary files a/icons/obj/structures.dmi and b/icons/obj/structures.dmi differ diff --git a/icons/obj/weapons/fireaxe.dmi b/icons/obj/weapons/fireaxe.dmi index c89ea533cbe..a4743f680ad 100644 Binary files a/icons/obj/weapons/fireaxe.dmi and b/icons/obj/weapons/fireaxe.dmi differ diff --git a/icons/obj/weapons/shields.dmi b/icons/obj/weapons/shields.dmi index 7c4be107566..99e9b06aa40 100644 Binary files a/icons/obj/weapons/shields.dmi and b/icons/obj/weapons/shields.dmi differ diff --git a/icons/obj/weapons/spear.dmi b/icons/obj/weapons/spear.dmi index 7262da01c45..7c044d362a7 100644 Binary files a/icons/obj/weapons/spear.dmi and b/icons/obj/weapons/spear.dmi differ diff --git a/icons/obj/weapons/sword.dmi b/icons/obj/weapons/sword.dmi index 255c3b0cffd..5dca921bd5b 100644 Binary files a/icons/obj/weapons/sword.dmi and b/icons/obj/weapons/sword.dmi differ diff --git a/strings/pirates.json b/strings/pirates.json index 62da040c6be..8eec25a3535 100644 --- a/strings/pirates.json +++ b/strings/pirates.json @@ -237,5 +237,22 @@ "Mass of Fermenting Dregs", "Bloody Valentine", "Wild Nothing" + ], + "medieval_names":[ + "Head Reaper", + "The Lords Judgement", + "The Judgement", + "Peasant Smiter", + "Wicked Ravager", + "Sheep Reaver", + "Never-ending Crusade", + "Locus Invicta", + "Memento Morieris", + "God Conqueror", + "Omnium Contra Omnes", + "Aries Duo", + "Dark Ages Bringer", + "Merciless Barricade", + "Murder Mcmurderface" ] }