Adds Medieval Pirates (and small assault_pod change) (#82392)

## 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
🆑
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)
/🆑

---------

Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
This commit is contained in:
uaioy
2024-04-22 21:16:06 -07:00
committed by GitHub
parent 9e7aecaf9e
commit b5fa92d691
41 changed files with 872 additions and 2 deletions

View File

@@ -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.)"

View File

@@ -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

View File

@@ -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)

View File

@@ -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."

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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)

View File

@@ -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]"