Skip to content

Commit

Permalink
Adds Medieval Pirates (and small assault_pod change) (tgstation#82392)
Browse files Browse the repository at this point in the history
## About The Pull Request

(short, slightly outdated video compilation of the pirates)
https://youtu.be/j9BNFzcUSjc

Adds the **MEDIEVAL WARMONGERS** pirate gang, these pirates are focused
on causing chaos directly on the station with the use of melee weaponry
and swarming tactics.
they are not very smart when it comes to using technology, so they crash
in the station in an attempt to dock.

the pirates spawn with the NOGUN trait as they have never used guns
before but have access to dashing and the unbreakable component(small
heal burst upon reaching crit).
Warlord spawns with a better version of hulk(isnt removed upon crit and
can still do stuff while critted) and gigantism mutation by default
because ~~Chad Maximus~~ the other pirates require someone to run to
when stuff like flashbangs, batons or lasers are present. The warlord
spawns with a boarding axe which is a better axe that is good at
destroying things and a meat hook. **there's a total of 5 pirates.**

the pirate shuttle has:
- thermite barrel and 3 large beakers
- single weak claymore
- 3 extra military spears
- 3 kite shields
- 3 heavy bolas
- 4 regular bolas
- a stack of wood
- 2 stacks of mourning poultice (15 uses each)
- one burn medkit

**shuttle was made by striders18, big thanks to him**

![image](https://github.com/tgstation/tgstation/assets/114047053/766d0b96-4487-47d3-b524-70d811ce4d73)


things added:

- the new pirate gang
- a gamberson jumpsuit
- crude armor (good melee and wound protection but lacks on the rest)
- warlord armor (extreme protection at the cost of slowdown)
- a shortsword(bootleg claymore with 30 block chance and goes on belt
instead of back)
- military spear (better at throwing, better wounding, deals blunt
wounds instead of sharp)
- axe with better damage and demolition mod for the warlord
- a var to specify the name of the landing zone destination for the
assaultpod
- an assault pod targeting device item for the medieval shuttle
- a thermite barrel
- kite shields
- new hulk variant that doesnt go away when crit and has tenacity
## Why It's Good For The Game
I always liked the chaotic nature of the russian bounty hunters that
would come from their extra numbers and lack of tools. i thought
something of a similar idea on pirates would be good, a very direct and
scary militia rushing in with sword and faith would create some awesome
scenarios

## Changelog
:cl:
add: New heavy weight pirates, medieval warmongers
add: Adds military spear, shortsword, boarding axe, kite shields
add: Adds warlord and crude armor
add: Adds medieval shuttle (made by striders18)
/:cl:

---------

Co-authored-by: MrMelbert <[email protected]>
  • Loading branch information
uaioy and MrMelbert authored Apr 23, 2024
1 parent 9e7aeca commit b5fa92d
Show file tree
Hide file tree
Showing 41 changed files with 872 additions and 2 deletions.
535 changes: 535 additions & 0 deletions _maps/shuttles/pirate_medieval.dmm

Large diffs are not rendered by default.

15 changes: 15 additions & 0 deletions code/datums/components/crafting/entertainment.dm
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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
Expand Down
18 changes: 18 additions & 0 deletions code/datums/mutations/hulk.dm
Original file line number Diff line number Diff line change
Expand Up @@ -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
4 changes: 4 additions & 0 deletions code/datums/shuttles/pirate.dm
Original file line number Diff line number Diff line change
Expand Up @@ -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)"
10 changes: 10 additions & 0 deletions code/game/objects/items/fireaxe.dm
Original file line number Diff line number Diff line change
Expand Up @@ -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
9 changes: 9 additions & 0 deletions code/game/objects/items/shields.dm
Original file line number Diff line number Diff line change
Expand Up @@ -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: <i>\"Romanes venio domus\"</i>."
Expand Down
25 changes: 25 additions & 0 deletions code/game/objects/items/spear.dm
Original file line number Diff line number Diff line change
Expand Up @@ -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
*/
Expand Down
12 changes: 12 additions & 0 deletions code/game/objects/items/weaponry.dm
Original file line number Diff line number Diff line change
Expand Up @@ -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 = "<b><i>THERE CAN BE ONLY ONE, AND IT WILL BE YOU!!!</i></b>\nActivate it in your hand to point to the nearest victim."
obj_flags = CONDUCTS_ELECTRICITY
Expand Down
4 changes: 4 additions & 0 deletions code/game/objects/structures/headpike.dm
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down
22 changes: 22 additions & 0 deletions code/modules/antagonists/pirate/pirate_gangs.dm
Original file line number Diff line number Diff line change
Expand Up @@ -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.)"
31 changes: 31 additions & 0 deletions code/modules/antagonists/pirate/pirate_outfits.dm
Original file line number Diff line number Diff line change
Expand Up @@ -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
30 changes: 30 additions & 0 deletions code/modules/antagonists/pirate/pirate_roles.dm
Original file line number Diff line number Diff line change
Expand Up @@ -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)
3 changes: 3 additions & 0 deletions code/modules/antagonists/pirate/pirate_shuttle_equipment.dm
Original file line number Diff line number Diff line change
Expand Up @@ -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."
Expand Down
45 changes: 45 additions & 0 deletions code/modules/clothing/head/helmet.dm
Original file line number Diff line number Diff line change
Expand Up @@ -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
45 changes: 45 additions & 0 deletions code/modules/clothing/suits/armor.dm
Original file line number Diff line number Diff line change
Expand Up @@ -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
14 changes: 14 additions & 0 deletions code/modules/clothing/under/costume.dm
Original file line number Diff line number Diff line change
Expand Up @@ -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

10 changes: 10 additions & 0 deletions code/modules/hydroponics/fermenting_barrel.dm
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Loading

0 comments on commit b5fa92d

Please sign in to comment.