diff --git a/code/datums/outfits/pirates.dm b/code/datums/outfits/pirates.dm
index 0d15c3067d..dfb97b6d26 100644
--- a/code/datums/outfits/pirates.dm
+++ b/code/datums/outfits/pirates.dm
@@ -15,3 +15,19 @@
suit = /obj/item/clothing/suit/pirate
back = /obj/item/weapon/tank/jetpack/oxygen
flags = OUTFIT_HAS_JETPACK
+
+//CHOMPAdd
+/decl/hierarchy/outfit/pirate/vox
+ name = "Vox Raider"
+ uniform = /obj/item/clothing/under/color/black
+ suit = /obj/item/clothing/suit/armor/vox_scrap
+ shoes = /obj/item/clothing/shoes/magboots/vox
+ gloves = /obj/item/clothing/gloves/light_brown
+ mask = /obj/item/clothing/mask/breath
+ back = /obj/item/weapon/tank/vox
+ l_hand = /obj/item/weapon/melee/energy/sword/pirate
+ r_hand = /obj/item/weapon/gun/projectile/shotgun/pump/rifle/vox_hunting
+ l_pocket = /obj/item/ammo_magazine/clip/c762
+ r_pocket = /obj/item/ammo_magazine/clip/c762
+
+ var/faction = "voxpirate"
\ No newline at end of file
diff --git a/code/modules/ai/say_list_ch.dm b/code/modules/ai/say_list_ch.dm
new file mode 100644
index 0000000000..5eaec549e0
--- /dev/null
+++ b/code/modules/ai/say_list_ch.dm
@@ -0,0 +1,68 @@
+//Vox Pirate Saylist
+/datum/say_list/merc/voxpirate
+ speak = list("Lookings for scrap, yaya.",
+ "Tank is lookings low.",
+ "Knowings should haves stayed on the Ark.",
+ "Quills itchings...",
+ "Cravings Teshari on stick.",
+ "Plates locking up. Not good.")
+ emote_see = list("sniffs", "coughs", "taps his foot", "looks around", "checks his equipment")
+
+ say_understood = list("Yayaya!")
+ say_cannot = list("Skreking negatives!", "Can't do that.")
+ say_maybe_target = list("Who's theres?", "Is hearing things?")
+ say_got_target = list("Dust!", "Easy loot!")
+ say_threaten = list("Gets out of heres!")
+ say_stand_down = list("Yaya, runs!", "Kikikiki!")
+ say_escalate = list("Skrek!", "Bringings it!", "Takings shot", "Lock claws!")
+
+
+ //Synth Horror Saylist
+
+/datum/say_list/cyber_horror
+ speak = list("H@!#$$P M@!$#",
+ "GHAA!@@#",
+ "KR@!!N",
+ "K!@@##L!@@ %!@#E",
+ "G@#!$ H@!#%",
+ "H!@%%@ @!E")
+ emote_hear = list("emits", "groans", "wails", "pleads")
+ emote_see = list ("stares unblinkingly.", "jitters and twitches.", "emits a synthetic scream.", "rapidly twitches.", "convulses.", "twitches uncontrollably.", "goes stock still.")
+ say_threaten = list ("FR@#DOM","EN@ T#I$-$","N0$ M^> B@!#")
+ say_got_target = list("I *#@ Y@%","!E@#$P","F#RR @I","D0@#$ ##OK %","IT $##TS")
+
+//Roach Saylists Woo Hoo
+/datum/say_list/roach
+ speak = list("Chitter!","Chk chk!","Tchk?")
+ emote_hear = list("chitters","chirps","shuffles")
+ emote_see = list("rubs its antennae", "skitters", "clacks across the floor")
+
+/datum/say_list/possessed
+ speak = list("Where am I?",
+ "Why am I here?",
+ "Where did everyone go?")
+
+ emote_hear = list("lets out a mournful cry.", "can be heard sobbing.", "groans out in pain.")
+ emote_see = list("kneels down for a moment, picking something up before casting it away.","stands as still as a statue.", "looks to be doing some kind of work.")
+
+ say_maybe_target = list("Is there someone there?", "Who's there?")
+ say_got_target = list("You! You help people!", "Can you help me?", "I'm lost!")
+ say_threaten = list("Help me!", "Please help!", "Hey, who turned out the lights?", "Allonsy!", "Geronimo!")
+ say_stand_down = list("Please. Anyone. Help!", "Where is everyone?", "Where am I?")
+ say_escalate = list("Help!", "I'm sorry!", "I can't stop!", "I don't want to do this!", "I don't want to go!")
+
+/datum/say_list/merc/elite // colder. also, actually just assholes.
+ speak = list("I got better pay on my last job.",
+ "So, y'think we'll get to shoot anyone today?",
+ "Fuck, I hate those guys.",
+ "Would be nice for something to happen, for once.",
+ "Think those NT shits'll rear their heads?",
+ "Any of you see anything recently?")
+ emote_see = list("taps his foot", "looks around coldly", "checks his equipment", "rummages in his webbing")
+ say_understood = list("Aff.", "Affirmative.", "Copy.", "Understood.")
+ say_cannot = list("Neg.", "Negative.")
+ say_maybe_target = list("I heard something.")
+ say_got_target = list("Oh, good, I needed more range fodder.", "I'm going to enjoy this.", "I see you.", "Not quiet enough.")
+ say_threaten = list("Hoy, private property, fuck off.", "You're acting mighty bold for a bullet sponge.", "First and last warning; find somewhere else to be.", "I wouldn't do that if I were you.", "Back off or your field medic's getting a bonus.")
+ say_stand_down = list("Damn it, I was hoping you'd push your luck.", "What, that's it? Pussy.", "And don't come back.", "Good call. Don't do it again.", "Harrumph.", "That'll teach 'ya.")
+ say_escalate = list("Oh, I'm gonna enjoy this.", "I'm going to enjoy making you regret that.", "Last mistake you'll make.")
diff --git a/code/modules/mob/dead/corpse.dm b/code/modules/mob/dead/corpse.dm
index 18d81bf484..93c36700bb 100644
--- a/code/modules/mob/dead/corpse.dm
+++ b/code/modules/mob/dead/corpse.dm
@@ -167,4 +167,125 @@
corpsehelmet = /obj/item/clothing/head/bearpelt
/obj/effect/landmark/mobcorpse/russian/ranged
- corpsehelmet = /obj/item/clothing/head/ushanka
\ No newline at end of file
+ corpsehelmet = /obj/item/clothing/head/ushanka
+
+//CHOMPAdd start
+//////////////////////////
+// Vox Bodies
+//////////////////////////
+
+/obj/effect/landmark/mobcorpse/vox
+ name = "vox"
+ corpseid = 0
+
+/obj/effect/landmark/mobcorpse/vox/New()
+ createvoxCorpse()
+
+/obj/effect/landmark/mobcorpse/vox/proc/createvoxCorpse() //Creates a mob and checks for gear in each slot before attempting to equip it.
+ var/mob/living/carbon/human/vox/M = new /mob/living/carbon/human/vox (src.loc)
+ M.real_name = src.name
+ M.stat = 2 //Kills the new mob
+ if(src.corpseuniform)
+ M.equip_to_slot_or_del(new src.corpseuniform(M), slot_w_uniform)
+ if(src.corpsesuit)
+ M.equip_to_slot_or_del(new src.corpsesuit(M), slot_wear_suit)
+ if(src.corpseshoes)
+ M.equip_to_slot_or_del(new src.corpseshoes(M), slot_shoes)
+ if(src.corpsegloves)
+ M.equip_to_slot_or_del(new src.corpsegloves(M), slot_gloves)
+ if(src.corpseradio)
+ M.equip_to_slot_or_del(new src.corpseradio(M), slot_l_ear)
+ if(src.corpseglasses)
+ M.equip_to_slot_or_del(new src.corpseglasses(M), slot_glasses)
+ if(src.corpsemask)
+ M.equip_to_slot_or_del(new src.corpsemask(M), slot_wear_mask)
+ if(src.corpsehelmet)
+ M.equip_to_slot_or_del(new src.corpsehelmet(M), slot_head)
+ if(src.corpsebelt)
+ M.equip_to_slot_or_del(new src.corpsebelt(M), slot_belt)
+ if(src.corpsepocket1)
+ M.equip_to_slot_or_del(new src.corpsepocket1(M), slot_r_store)
+ if(src.corpsepocket2)
+ M.equip_to_slot_or_del(new src.corpsepocket2(M), slot_l_store)
+ if(src.corpseback)
+ M.equip_to_slot_or_del(new src.corpseback(M), slot_back)
+ if(src.corpseid == 1)
+ var/obj/item/weapon/card/id/W = new(M)
+ W.name = "[M.real_name]'s ID Card"
+ var/datum/job/jobdatum
+ for(var/jobtype in typesof(/datum/job))
+ var/datum/job/J = new jobtype
+ if(J.title == corpseidaccess)
+ jobdatum = J
+ break
+ if(src.corpseidicon)
+ W.icon_state = corpseidicon
+ if(src.corpseidaccess)
+ if(jobdatum)
+ W.access = jobdatum.get_access()
+ else
+ W.access = list()
+ if(corpseidjob)
+ W.assignment = corpseidjob
+ W.registered_name = M.real_name
+ M.equip_to_slot_or_del(W, slot_wear_id)
+ delete_me = 1
+ qdel(src)
+
+
+//Types of Vox corpses:
+
+/obj/effect/landmark/mobcorpse/vox/pirate
+ name = "vox pirate"
+ corpseuniform = /obj/item/clothing/under/color/black
+ corpsesuit = /obj/item/clothing/suit/armor/vox_scrap
+ corpseshoes = /obj/item/clothing/shoes/boots/workboots
+ corpsegloves = /obj/item/clothing/gloves/light_brown
+ corpsemask = /obj/item/clothing/mask/breath
+ corpseid = 0
+
+/obj/effect/landmark/mobcorpse/vox/boarder_m
+ name = "vox melee boarder"
+ corpseuniform = /obj/item/clothing/under/vox/vox_casual
+ corpsesuit = /obj/item/clothing/suit/armor/vox_scrap
+ corpseshoes = /obj/item/clothing/shoes/boots/workboots
+ corpsegloves = /obj/item/clothing/gloves/light_brown
+ corpsemask = /obj/item/clothing/mask/breath
+ corpseid = 0
+
+/obj/effect/landmark/mobcorpse/vox/boarder_r
+ name = "vox ranged boarder"
+ corpseuniform = /obj/item/clothing/under/rank/bartender
+ corpsesuit = /obj/item/clothing/suit/armor/bulletproof
+ corpseshoes = /obj/item/clothing/shoes/boots/workboots
+ corpsemask = /obj/item/clothing/mask/breath
+ corpseid = 0
+
+/obj/effect/landmark/mobcorpse/vox/boarder_t
+ name = "vox salvage technician"
+ corpseuniform = /obj/item/clothing/under/rank/bartender
+ corpsesuit = /obj/item/clothing/suit/armor/bulletproof
+ corpseshoes = /obj/item/clothing/shoes/boots/workboots
+ corpsemask = /obj/item/clothing/mask/breath
+ corpseid = 0
+
+/obj/effect/landmark/mobcorpse/vox/suppressor
+ name = "vox suppressor"
+ corpseuniform = /obj/item/clothing/under/color/red
+ corpsesuit = /obj/item/clothing/suit/storage/toggle/fr_jacket
+ corpseshoes = /obj/item/clothing/shoes/orange
+ corpsegloves = /obj/item/clothing/gloves/red
+ corpsemask = /obj/item/clothing/mask/gas/half
+ corpseid = 0
+
+/obj/effect/landmark/mobcorpse/vox/captain
+ name = "vox captain"
+ corpseuniform = /obj/item/clothing/under/color/black
+ corpsesuit = /obj/item/clothing/suit/space/vox/carapace
+ corpseshoes = /obj/item/clothing/shoes/magboots/vox
+ corpsegloves = /obj/item/clothing/gloves/light_brown
+ corpsemask = /obj/item/clothing/mask/breath
+ corpsehelmet = /obj/item/clothing/head/helmet/riot
+ corpseid = 0
+
+//CHOMPAdd end
\ No newline at end of file
diff --git a/code/modules/mob/living/simple_mob/subtypes/humanoid/mercs/mercs.dm b/code/modules/mob/living/simple_mob/subtypes/humanoid/mercs/mercs.dm
index cf6b2649a8..2e16e12447 100644
--- a/code/modules/mob/living/simple_mob/subtypes/humanoid/mercs/mercs.dm
+++ b/code/modules/mob/living/simple_mob/subtypes/humanoid/mercs/mercs.dm
@@ -5,15 +5,15 @@
// Probably shouldn't use this directly, there are a bunch of sub-classes that are more complete.
/mob/living/simple_mob/humanoid/merc
name = "mercenary"
- desc = "A tough looking heavily-armed individual."
tt_desc = "E Homo sapiens"
+ desc = "A tough looking individual armed with only a knife." //CHOMPEdit
+ movement_cooldown = 2 //CHOMPEdit
icon_state = "syndicate"
icon_living = "syndicate"
icon_dead = "syndicate_dead"
icon_gib = "syndicate_gib"
faction = "syndicate"
- movement_cooldown = 4
status_flags = 0
@@ -24,8 +24,7 @@
harm_intent_damage = 5
melee_damage_lower = 15 //Tac Knife damage
melee_damage_upper = 15
- attack_armor_pen = 20
- attack_sharp = TRUE
+ attack_sharp = 1 //CHOMPEdit
attack_edge = 1
attacktext = list("slashed", "stabbed")
armor = list(melee = 40, bullet = 30, laser = 30, energy = 10, bomb = 10, bio = 100, rad = 100) // Same armor values as the vest they drop, plus simple mob immunities
@@ -38,6 +37,7 @@
// Grenade special attack vars
var/grenade_type = /obj/item/weapon/grenade/concussion
+ var/grenade_timer = 50 //CHOMPEdit
special_attack_cooldown = 45 SECONDS
special_attack_min_range = 2
special_attack_max_range = 7
@@ -71,7 +71,8 @@
var/obj/item/weapon/grenade/G = new grenade_type(get_turf(src))
if(istype(G))
G.throw_at(A, G.throw_range, G.throw_speed, src)
- G.attack_self(src)
+ G.det_time = grenade_timer //CHOMPEdit
+ G.activate(src) //CHOMPEdit
special_attack_charges = max(special_attack_charges-1, 0)
set_AI_busy(FALSE)
@@ -98,6 +99,9 @@
/datum/ai_holder/simple_mob/merc/ranged/sniper/max_range(atom/movable/AM)
return holder.ICheckRangedAttack(AM) ? 14 : 1
+/datum/ai_holder/simple_mob/merc/ranged/surpressor //CHOMPAdd
+ conserve_ammo = FALSE //For Surpressive Fire Mercs like the Heavy and Tommy-Las
+
////////////////////////////////
// Melee
////////////////////////////////
@@ -112,7 +116,7 @@
melee_damage_lower = 30
melee_damage_upper = 30
attack_armor_pen = 50
- attack_sharp = TRUE
+ attack_sharp = 1 //CHOMPEdit
attack_edge = 1
attacktext = list("slashed")
diff --git a/code/modules/mob/living/simple_mob/subtypes/humanoid/mercs/mercs_ch.dm b/code/modules/mob/living/simple_mob/subtypes/humanoid/mercs/mercs_ch.dm
new file mode 100644
index 0000000000..1cf1d364fb
--- /dev/null
+++ b/code/modules/mob/living/simple_mob/subtypes/humanoid/mercs/mercs_ch.dm
@@ -0,0 +1,511 @@
+/datum/category_item/catalogue/fauna/mercenary
+ name = "Mercenaries"
+ desc = "Life on the Frontier is hard, and unregulated. Unlike life in \
+ more 'civlized' areas of the Galaxy, violence and piracy remain common \
+ this far out. The Megacorporations keep a tight grip on their holdings, \
+ but there are always small bands or aspiring companies looking to make a \
+ thaler. From simple pirates to legitimate PMCs, Frontier mercs come in \
+ all shapes and sizes."
+ value = CATALOGUER_REWARD_TRIVIAL
+ unlocked_by_any = list(/datum/category_item/catalogue/fauna/mercenary)
+
+// Obtained by scanning all X.
+/datum/category_item/catalogue/fauna/all_mercenaries
+ name = "Collection - Mercenaries"
+ desc = "You have scanned a large array of different types of mercenary, \
+ and therefore you have been granted a large sum of points, through this \
+ entry."
+ value = CATALOGUER_REWARD_HARD
+ unlocked_by_all = list(
+ /datum/category_item/catalogue/fauna/mercenary/human,
+ /datum/category_item/catalogue/fauna/mercenary/human/peacekeeper,
+ /datum/category_item/catalogue/fauna/mercenary/human/grenadier,
+ /datum/category_item/catalogue/fauna/mercenary/human/space,
+ /datum/category_item/catalogue/fauna/mercenary/human/space/suppressor,
+ /datum/category_item/catalogue/fauna/mercenary/vox,
+ /datum/category_item/catalogue/fauna/mercenary/vox/boarder,
+ /datum/category_item/catalogue/fauna/mercenary/vox/technician,
+ /datum/category_item/catalogue/fauna/mercenary/vox/suppressor,
+ /datum/category_item/catalogue/fauna/mercenary/vox/captain
+ )
+
+/datum/category_item/catalogue/fauna/mercenary/human
+ name = "Mercenaries - Human"
+ desc = "Human Mercenary bands are extremely common on the Frontier. Many \
+ of the modern outfits operating on the fringe today are veterans of the \
+ Phoron Wars. After the dissolution of the Syndicate, these operatives were \
+ left without a place to call home. Those who have survived have leveraged \
+ their experience into a viable trade."
+ value = CATALOGUER_REWARD_EASY
+
+/datum/category_item/catalogue/fauna/mercenary/human/peacekeeper
+ name = "Mercenaries - Solar Peacekeeper"
+ desc = "Activist groups in Civlized Space often raise moral concerns about \
+ conditions on the Frontier. The more organized groups will sometimes gather \
+ bands of mercenaries from the core worlds together under the belief that they \
+ can come out to the Frontier to enforce their way of life. Due to the Frontier \
+ Act, these 'humanitarian operations' are quickly demolished."
+ value = CATALOGUER_REWARD_EASY
+
+/datum/category_item/catalogue/fauna/mercenary/human/grenadier
+ name = "Mercenaries - Grenadier"
+ desc = "After the Phoron Wars, many deniable operatives on both sides of \
+ the conflict found that there was no place for them within their home companies \
+ any more. Left without options, these highly motivated and trained specialists \
+ often seek revenge, or attempt to carve out their own fiefdoms. Well equipped \
+ and well trained, these outcasts are not to be taken lightly."
+ value = CATALOGUER_REWARD_EASY
+
+/datum/category_item/catalogue/fauna/mercenary/human/space
+ name = "Mercenaries - Commando"
+ desc = "Commandos, much like their less equipped brethren, are experts in \
+ wet work. Honing their skills over years of training, the Commando's iconic \
+ equipment summons memories of the bad old days in any survivor who sees them. \
+ These mercs make a statement with their equipment - 'I was there. Come get me.' \
+ It is usually not an idle boast."
+ value = CATALOGUER_REWARD_EASY
+
+/mob/living/simple_mob/humanoid/merc
+ icon = 'icons/mob/animal_ch.dmi'
+ catalogue_data = list(/datum/category_item/catalogue/fauna/mercenary/human)
+
+/mob/living/simple_mob/humanoid/merc/ranged
+ desc = "A tough looking individual armed with an pistol."
+
+/mob/living/simple_mob/humanoid/merc/ranged/smg
+ name = "mercenary soldier"
+ desc = "A tough looking individual armed with an submachine gun."
+
+/mob/living/simple_mob/humanoid/merc/ranged/smg/sol
+ catalogue_data = list(/datum/category_item/catalogue/fauna/mercenary/human/peacekeeper)
+
+/mob/living/simple_mob/humanoid/merc/ranged/laser
+ name = "mercenary marksman"
+ desc = "A tough looking individual armed with an laser rifle."
+
+/mob/living/simple_mob/humanoid/merc/ranged/ionrifle
+ name = "mercenary anti-technical"
+ desc = "A tough looking individual armed with an ion rifle."
+
+
+//Garand
+/mob/living/simple_mob/humanoid/merc/ranged/garand
+ name = "mercenary rifleman"
+ desc = "A tough looking individual armed with a semiautomatic rifle."
+ icon_state = "syndicateranged_veteran"
+ icon_living = "syndicateranged_veteran"
+ projectiletype = /obj/item/projectile/bullet/rifle/a762
+ projectilesound = 'sound/weapons/Gunshot_heavy.ogg'
+ loot_list = list(/obj/item/weapon/gun/projectile/garand = 100)
+ reload_max = 8
+ reload_time = 2 // It takes a bit to jam a stripper clip into the rifle.
+
+//Hand Cannon
+/mob/living/simple_mob/humanoid/merc/ranged/deagle
+ name = "mercenary officer"
+ desc = "A tough looking individual armed with an handcannon."
+ icon_state = "syndicate_handcannon"
+ icon_living = "syndicate_handcannon"
+ projectiletype = /obj/item/projectile/bullet/pistol/strong
+ projectilesound = 'sound/weapons/Gunshot_deagle.ogg'
+ loot_list = list(/obj/item/weapon/gun/projectile/deagle = 100)
+ needs_reload = TRUE
+ reload_max = 7 // Deagle Reload
+
+/mob/living/simple_mob/humanoid/merc/ranged/grenadier
+ name = "mercenary grenadier"
+ desc = "A tough looking individual armed with a shotgun and a belt of grenades."
+ catalogue_data = list(/datum/category_item/catalogue/fauna/mercenary/human/grenadier)
+
+/mob/living/simple_mob/humanoid/merc/melee/sword/space
+ name = "mercenary commando"
+ desc = "A tough looking individual, armred with an energy sword and shield."
+ icon_state = "syndicatespace-melee"
+ icon_living = "syndicatespace-melee"
+ catalogue_data = list(/datum/category_item/catalogue/fauna/mercenary/human/space)
+
+/mob/living/simple_mob/humanoid/merc/ranged/space
+ name = "armored mercenary"
+ desc = "A tough looking individual, armed with a submachine gun."
+ icon_state = "syndicatespace-ranged"
+ icon_living = "syndicatespceace-ranged"
+ armor = list(melee = 60, bullet = 50, laser = 30, energy = 15, bomb = 35, bio = 100, rad = 100) // Same armor as their voidsuit.
+ base_attack_cooldown = 5 // Two attacks a second or so.
+ reload_max = 20
+ loot_list = list(/obj/item/weapon/gun/projectile/automatic/c20r = 100)
+
+//Combat Shotgun Merc
+/mob/living/simple_mob/humanoid/merc/ranged/space/shotgun
+ name = "mercenary tactical"
+ desc = "A tough looking individual armed with a combat shotgun."
+ icon_state = "syndicatespace-shotgun"
+ icon_living = "syndicatespace-shotgun"
+ base_attack_cooldown = 10
+ reload_max = 7
+ reload_time = 2 SECONDS //Takes a While to load all those shells.
+ projectiletype = /obj/item/projectile/bullet/pellet/shotgun // Buckshot
+ projectilesound = 'sound/weapons/Gunshot_shotgun.ogg'
+ loot_list = list(/obj/item/weapon/gun/projectile/shotgun/pump/combat = 100)
+
+//Auto-Shotgun Space Merc
+/mob/living/simple_mob/humanoid/merc/ranged/space/shotgun/auto
+ name = "mercenary sweeper"
+ desc = "A tough looking individual armed with an automatic shotgun."
+ icon_state = "syndicatespace-ashotgun"
+ icon_living = "syndicatespace-ashotgun"
+ base_attack_cooldown = 5 // Two attacks a second or so.
+ reload_max = 24
+ projectiletype = /obj/item/projectile/bullet/pellet/shotgun // Buckshot
+ projectilesound = 'sound/weapons/Gunshot_shotgun.ogg'
+ loot_list = list(/obj/item/weapon/gun/projectile/automatic/as24 = 100)
+ ai_holder_type = /datum/ai_holder/simple_mob/merc/ranged/surpressor
+
+//Machine Gun Merc
+/mob/living/simple_mob/humanoid/merc/ranged/space/heavy
+ name = "mercenary heavy gunner"
+ desc = "A tough looking individual armed with an light machinegun."
+ icon_state = "syndicatespace-heavy"
+ icon_living = "syndicatespace-heavy"
+ base_attack_cooldown = 2.5 // Four Attacks a Second. MOAR DAKKA
+ reload_max = 50
+ projectiletype = /obj/item/projectile/bullet/rifle/a545
+ projectilesound = 'sound/weapons/Gunshot_light.ogg'
+ loot_list = list(/obj/item/weapon/gun/projectile/automatic/l6_saw = 100)
+ ai_holder_type = /datum/ai_holder/simple_mob/merc/ranged/surpressor
+
+//Tommy-Las Merc
+/mob/living/simple_mob/humanoid/merc/ranged/space/tommylas
+ name = "mercenary light burster"
+ desc = "A tough looking individual armed with an automatic laser."
+ icon_state = "syndicatespace-tommylas"
+ icon_living = "syndicatespace-tommylas"
+ base_attack_cooldown = 2.5 // Four Attacks a Second. MOAR DAKKA
+ reload_max = 3
+ reload_time = 0.5 // Meant to Simulate controlled Supressive Bursts
+ projectiletype = /obj/item/projectile/beam/weaklaser
+ projectilesound = 'sound/weapons/Laser.ogg'
+ loot_list = list(/obj/item/weapon/gun/energy/tommylaser = 100)
+ ai_holder_type = /datum/ai_holder/simple_mob/merc/ranged/surpressor
+
+/mob/living/simple_mob/humanoid/merc/ranged/space/fal
+ name = "mercenary commando"
+ desc = "A tough looking individual armed with a assault rifle."
+ icon_state = "syndicatespace-commando"
+ icon_living = "syndicatespace-commando"
+ projectiletype = /obj/item/projectile/bullet/rifle/a762
+ projectilesound = 'sound/weapons/Gunshot_heavy.ogg'
+ loot_list = list(/obj/item/weapon/gun/projectile/automatic/fal = 100)
+ reload_max = 20
+
+// suppressors are just assholes and are intended to be a piss poor experience for everyone on both sides
+/datum/category_item/catalogue/fauna/mercenary/human/space/suppressor
+ name = "Mercenaries - Suppressor"
+ desc = "Just because the Phoron Wars are over, it doesn't mean that covert \
+ actions and corporate espionage ended too. When you encounter mercs with \
+ the latest gear and the best training, you can bet your bottom Thaler that \
+ they've got a Corporate sponsor backing them up."
+ value = CATALOGUER_REWARD_MEDIUM
+/datum/ai_holder/simple_mob/merc/ranged/suppressor
+ respect_alpha = FALSE // he really just shoots you
+ vision_range = 10 // plutonia experience
+
+/mob/living/simple_mob/humanoid/merc/ranged/space/suppressor // adminspawn only, and also Probably Going To Kill The Unprepared
+ name = "mercenary suppressor"
+ desc = "Geeze, weren't shotgun ops bad enough? At least when you fade these jerks you get a flashbang to the face."
+ icon_state = "syndi-ranged-space-sup"
+ icon_living = "syndi-ranged-space-sup"
+ armor = list(melee = 80, bullet = 65, laser = 50, energy = 15, bomb = 80, bio = 100, rad = 100) // this is the merc rig's stats
+ ai_holder_type = /datum/ai_holder/simple_mob/merc/ranged/suppressor
+ say_list_type = /datum/say_list/merc/elite
+ projectiletype = /obj/item/projectile/bullet/pistol/medium/ap/suppressor // it's high velocity
+ projectilesound = 'sound/weapons/doompistol.ogg' // converted from .wavs extracted from doom 2
+ base_attack_cooldown = 3 // three? attacks a second
+ reload_max = 30 // extended mags
+ special_attack_charges = 5
+ loot_list = list() // oh, you killed him?
+ corpse = null // well, sorry, buddy, he doesn't drop shit
+ catalogue_data = list(/datum/category_item/catalogue/fauna/mercenary/human/space/suppressor)
+// var/deathnade_path = /obj/item/grenade/flashbang/stingbang
+/* far too fun for the codebase at the moment
+/mob/living/simple_mob/humanoid/merc/ranged/space/suppressor/death()
+ // you thought killing him would be the least of your worries?
+ // think again
+ var/obj/item/grenade/banger = new deathnade_path(get_turf(src))
+ banger.throw_at(ai_holder.target, 9, 9, null)
+ banger.det_time = 25
+ banger.activate(null)
+ ..()
+*/
+/mob/living/simple_mob/humanoid/merc/ranged/space/suppressor/elite // really reconsider why you're spawning this dude
+ name = "mercenary elite suppressor"
+ desc = "Geeze, weren't normal suppressors bad enough? At least if you fade this jerk, you'll have an awful time anyway."
+ icon_state = "syndi-ranged-space-sup-elite"
+ icon_living = "syndi-ranged-space-sup-elite"
+ armor = list(melee = 80, bullet = 70, laser = 55, energy = 15, bomb = 80, bio = 100, rad = 100) // see code for military hardsuit
+ projectiletype = /obj/item/projectile/bullet/pistol/medium/ap/suppressor/turbo // fuck it, fast bullets
+ grenade_type = /obj/item/weapon/grenade/shooter/rubber // don't group up
+ grenade_timer = 30 // well, look what you've done, you've grouped up
+// deathnade_path = /obj/item/grenade/flashbang/stingbang/shredbang // REALLY don't group up
+// being Actual Professionals, they have better (read: player-level) blocking chances
+/mob/living/simple_mob/humanoid/merc/ranged/space/suppressor/attackby(var/obj/item/O, var/mob/user)
+ if(O.force)
+ if(prob(50))
+ visible_message("\The [src] blocks \the [O] with its shield!")
+ if(user)
+ ai_holder.react_to_attack(user)
+ return
+ else
+ ..()
+ else
+ visible_message("\The [user] gently taps [src] with \the [O].")
+/mob/living/simple_mob/humanoid/merc/ranged/space/suppressor/bullet_act(var/obj/item/projectile/Proj)
+ if(!Proj) return
+ if(prob(50))
+ visible_message("[src] blocks [Proj] with its shield!")
+ if(Proj.firer)
+ ai_holder.react_to_attack(Proj.firer)
+ return
+ else
+
+
+
+
+
+
+////////////////////////////////
+// Vox Pirates
+////////////////////////////////
+//Classifying these as Mercs, due to the general power level I want them at.
+
+/datum/category_item/catalogue/fauna/mercenary/vox
+ name = "Mercenaries - Vox"
+ desc = "For centuries the Vox have inflicted their way of life upon the \
+ Galaxy. Regarded with distrust due to their tendency to engage in piracy \
+ and violence, the Vox are equally feared for their robust physiology and \
+ curiously advanced xenotech. Due to ancient compacts, Vox pirates try to \
+ avoid bloodshed, but will react to violence in kind."
+ value = CATALOGUER_REWARD_MEDIUM
+ unlocked_by_any = list(/datum/category_item/catalogue/fauna/mercenary/vox)
+
+/mob/living/simple_mob/humanoid/merc/voxpirate //Don't use this one.
+ name = "vox mannequin"
+ desc = "You shouldn't be seeing this one."
+ icon = 'icons/mob/animal.dmi'
+ icon_state = "voxpirate"
+ icon_living = "voxpirate"
+ icon_dead = "voxpirate_dead"
+
+ faction = "voxpirate"
+ movement_cooldown = 4
+
+ status_flags = 0
+
+ response_help = "pokes"
+ response_disarm = "shoves"
+ response_harm = "hits"
+
+ harm_intent_damage = 5
+ melee_damage_lower = 20 //Vox Hunting rifle blade damage
+ melee_damage_upper = 20
+ attack_sharp = 1
+ attack_edge = 1
+ attacktext = list("slashed", "stabbed")
+ armor = list(melee = 60, bullet = 50, laser = 30, energy = 15, bomb = 35, bio = 100, rad = 100) // Matching Merc voidsuit stats to represent toughness.
+
+ min_oxy = 0 //Vox are spaceproof.
+ max_oxy = 0
+ min_tox = 0
+ max_tox = 0
+ min_co2 = 0
+ max_co2 = 0
+ min_n2 = 0
+ max_n2 = 0
+ minbodytemp = 0
+
+ corpse = /obj/effect/landmark/mobcorpse/vox/pirate
+ loot_list = list(/obj/item/weapon/gun/projectile/shotgun/pump/rifle/vox_hunting = 100,
+ /obj/item/ammo_magazine/clip/c762 = 30,
+ /obj/item/ammo_magazine/clip/c762 = 30
+ )
+
+ ai_holder_type = /datum/ai_holder/simple_mob/merc
+ say_list_type = /datum/say_list/merc/voxpirate
+
+/mob/living/simple_mob/humanoid/merc/voxpirate/pirate
+ name = "vox pirate"
+ desc = "A desperate looking Vox. Get your gun."
+
+ projectiletype = /obj/item/projectile/bullet/rifle/a762
+ projectilesound = 'sound/weapons/riflebolt.ogg'
+ needs_reload = TRUE
+ reload_max = 20
+
+////////////////////////////////
+// Vox Melee
+////////////////////////////////
+
+/datum/category_item/catalogue/fauna/mercenary/vox/boarder
+ name = "Mercenaries - Vox Boarder"
+ desc = "Vox are squat creatures, with powerful muscles and tough, scaly \
+ hides. Their dense bones and sharp talons make them a formidable threat in \
+ close quarters combat. Low level Vox weaponry generally emphasizes closing \
+ the distance to exploit these facts."
+ value = CATALOGUER_REWARD_MEDIUM
+
+/mob/living/simple_mob/humanoid/merc/voxpirate/boarder
+ name = "vox melee boarder"
+ desc = "A howling Vox with a sword. Run."
+ icon_state = "voxboarder_m"
+ icon_living = "voxboarder_m"
+ icon_dead = "voxboarder_m_dead"
+ catalogue_data = list(/datum/category_item/catalogue/fauna/mercenary/vox/boarder)
+
+ melee_damage_lower = 30 //Energy sword damage
+ melee_damage_upper = 30
+ attack_sharp = 1
+ attack_edge = 1
+
+ ai_holder_type = /datum/ai_holder/simple_mob/melee/evasive
+ corpse = /obj/effect/landmark/mobcorpse/vox/boarder_m
+ loot_list = list(/obj/item/weapon/melee/energy/sword = 100)
+
+// They're good with the swords? I dunno. I like the idea they can deflect.
+/mob/living/simple_mob/humanoid/merc/voxpirate/boarder/attackby(var/obj/item/O, var/mob/user)
+ if(O.force)
+ if(prob(20))
+ visible_message("\The [src] blocks \the [O] with its sword!")
+ if(user)
+ ai_holder.react_to_attack(user)
+ return
+ else
+ ..()
+ else
+ to_chat(user, "This weapon is ineffective, it does no damage.")
+ visible_message("\The [user] gently taps [src] with \the [O].")
+
+/mob/living/simple_mob/humanoid/merc/voxpirate/boarder/bullet_act(var/obj/item/projectile/Proj)
+ if(!Proj) return
+ if(prob(35))
+ visible_message("[src] blocks [Proj] with its sword!")
+ if(Proj.firer)
+ ai_holder.react_to_attack(Proj.firer)
+ return
+ else
+ ..()
+
+////////////////////////////////
+// Vox Ranged
+////////////////////////////////
+
+/mob/living/simple_mob/humanoid/merc/voxpirate/boarder
+ name = "vox ranged boarder"
+ desc = "A howling Vox with a shotgun. Get to cover!"
+ icon_state = "voxboarder_r"
+ icon_living = "voxboarder_r"
+ icon_dead = "voxboarder_r_dead"
+ catalogue_data = list(/datum/category_item/catalogue/fauna/mercenary/vox/boarder)
+
+ projectiletype = /obj/item/projectile/bullet/pellet/shotgun
+ projectilesound = 'sound/weapons/Gunshot_shotgun.ogg'
+
+ ai_holder_type = /datum/ai_holder/simple_mob/ranged/aggressive
+ corpse = /obj/effect/landmark/mobcorpse/vox/boarder_r
+ loot_list = list(/obj/item/weapon/gun/projectile/shotgun/pump/combat = 100,
+ /obj/item/ammo_magazine/m12gdrum = 30,
+ /obj/item/ammo_magazine/m12gdrum = 30
+ )
+
+ needs_reload = TRUE
+ reload_max = 10
+
+/datum/category_item/catalogue/fauna/mercenary/vox/technician
+ name = "Mercenaries - Vox Technician"
+ desc = "The belief that Vox are unintelligent comes largely from a kind \
+ of anthrochauvanism. Due to their difficulty speaking GalCom and their tendency \
+ to resort to underhanded methods, the Galaxy sees Vox as brutal, unintelligent \
+ aliens. In reality, Vox are just as intelligent as everyone else, as the state \
+ of their technology shows. Vox Technicians maintain ancient vessels and tools \
+ with scraps and odd bits, often recieving no external recognition for their work."
+ value = CATALOGUER_REWARD_MEDIUM
+
+/mob/living/simple_mob/humanoid/merc/voxpirate/technician
+ name = "vox salvage technician"
+ desc = "A screeching Vox with an ion rifle. Usually sent on scrapping operations."
+ icon_state = "voxboarder_t"
+ icon_living = "voxboarder_t"
+ icon_dead = "voxboarder_t_dead"
+ catalogue_data = list(/datum/category_item/catalogue/fauna/mercenary/vox/technician)
+
+ projectiletype = /obj/item/projectile/ion
+ projectilesound = 'sound/weapons/Laser.ogg'
+
+ ai_holder_type = /datum/ai_holder/simple_mob/ranged/kiting
+ corpse = /obj/effect/landmark/mobcorpse/vox/boarder_t
+ loot_list = list(/obj/item/weapon/gun/energy/ionrifle)
+
+ needs_reload = TRUE
+ reload_max = 25 //Suppressive tech weapon.
+
+/datum/category_item/catalogue/fauna/mercenary/vox/suppressor
+ name = "Mercenaries - Vox Suppressor"
+ desc = "Among Vox bands, Suppressors are an even more motley crew. \
+ Staying true to the name, Suppressors are veteran Vox pirates who have \
+ faced hundreds of engagements. Tough and well suited for violence, these \
+ Vox wear bright, mismatching colors into battle to draw attention. Serving \
+ as a beacon to draw eyes away from their companions, Suppressors wield the \
+ fearsome Sonic Cannon - a booming directed frequency device capable of \
+ wreaking havoc all its own. It doesn't sound half bad either, when it isn't \
+ pointed at you."
+ value = CATALOGUER_REWARD_MEDIUM
+
+/mob/living/simple_mob/humanoid/merc/voxpirate/suppressor
+ name = "vox suppressor"
+ desc = "Come on, feel the noise!"
+ icon_state = "voxsuppressor"
+ icon_living = "voxsuppressor"
+ icon_dead = "voxsuppresor_dead"
+ catalogue_data = list(/datum/category_item/catalogue/fauna/mercenary/vox/suppressor)
+
+ armor = list(melee = 30, bullet = 50, laser = 60, energy = 30, bomb = 35, bio = 100, rad = 100) // Boosted armor to represent Tank role.
+
+ projectiletype = /obj/item/projectile/sonic/weak
+ projectilesound = 'sound/effects/basscannon.ogg'
+
+ ai_holder_type = /datum/ai_holder/simple_mob/destructive
+ corpse = /obj/effect/landmark/mobcorpse/vox/suppressor
+ loot_list = list(/obj/item/weapon/gun/energy/sonic = 100)
+
+ base_attack_cooldown = 5 // Two attacks a second or so.
+ needs_reload = TRUE
+ reload_max = 30 //Gotta lay down that fire, son.
+
+/datum/category_item/catalogue/fauna/mercenary/vox/captain
+ name = "Mercenaries - Vox Captain"
+ desc = "Accomplished Vox who bring in scrap reliably eventually become the \
+ 'Quills' of their own expeditions. This Vox term is considered analagous to \
+ the word 'Captain'. As such, any Vox who has attained this rank has certainly \
+ earned the powerful equipment they carry into combat: Dark Matter cannons, \
+ advanced armor, proper Hunting Rifles - the list goes on. The Vox Captain \
+ is a formidable opponent, honed by years of hard living and harder fighting. \
+ If you are unable to negotiate, expect to face their entire crew head on."
+ value = CATALOGUER_REWARD_MEDIUM
+
+/mob/living/simple_mob/humanoid/merc/voxpirate/captain
+ name = "vox pirate captain"
+ desc = "Walkings the plank, dustlung! Yayaya."
+ icon_state = "voxcaptain"
+ icon_living = "voxcaptain"
+ icon_dead = "voxcaptain_dead"
+ catalogue_data = list(/datum/category_item/catalogue/fauna/mercenary/vox/captain)
+
+ armor = list(melee = 60, bullet = 50, laser = 40, energy = 15, bomb = 30, bio = 100, rad = 100) // Vox RIG armor values.
+
+ projectiletype = /obj/item/projectile/beam/darkmatter
+ projectilesound = 'sound/weapons/eLuger.ogg'
+
+ ai_holder_type = /datum/ai_holder/simple_mob/destructive
+ corpse = /obj/effect/landmark/mobcorpse/vox/captain
+ loot_list = list(/obj/item/weapon/gun/energy/darkmatter = 100)
+
+ needs_reload = TRUE
+ reload_max = 15 //Other Vox should be carrying ammo.
\ No newline at end of file
diff --git a/code/modules/projectiles/gun_ch.dm b/code/modules/projectiles/gun_ch.dm
new file mode 100644
index 0000000000..58e2fd9483
--- /dev/null
+++ b/code/modules/projectiles/gun_ch.dm
@@ -0,0 +1,2 @@
+/obj/item/weapon/gun
+ var/holy = 0 //For Divinely blessed guns
\ No newline at end of file
diff --git a/code/modules/projectiles/guns/energy/laser_ch.dm b/code/modules/projectiles/guns/energy/laser_ch.dm
index 633952c3e1..1c4d59582d 100644
--- a/code/modules/projectiles/guns/energy/laser_ch.dm
+++ b/code/modules/projectiles/guns/energy/laser_ch.dm
@@ -80,3 +80,32 @@
matter = list("metal" = 350, "glass" = 50)
preserve_item = 1
origin_tech = list(TECH_POWER = 6)
+
+/obj/item/weapon/gun/energy/tommylaser
+ name = "M-2421 'Tommy-Laser'"
+ desc = "A automatic laser weapon resembling a Tommy-Gun. Designed by Cybersun Industries to be a man portable supressive fire laser weapon."
+ icon_state = "tommylas"
+ item_state = "tommylas"
+ w_class = ITEMSIZE_LARGE
+ slot_flags = SLOT_BACK
+ charge_cost = 60 // 40 shots, lay down the firepower
+ projectile_type = /obj/item/projectile/beam/weaklaser
+ cell_type = /obj/item/weapon/cell/device/weapon
+ origin_tech = list(TECH_COMBAT = 5, TECH_MAGNET = 5, TECH_ILLEGAL = 3)
+
+ firemodes = list(
+ list(mode_name="single shot", burst = 1, fire_delay=4, move_delay=null, burst_accuracy = null, dispersion = null),
+ list(mode_name="three shot bursts", burst=3, fire_delay=10 , move_delay=4, burst_accuracy=list(65,65,65), dispersion=list(1,1,1)),
+ list(mode_name="short bursts", burst=5, fire_delay=10 ,move_delay=6, burst_accuracy = list(65,65,65,65,65), dispersion = list(4,4,4,4,4)),
+ )
+
+/obj/item/weapon/gun/energy/zip
+ name = "Zip-Las"
+ desc = "A homemade (and somehow safe) laser gun designed around shooting single powerful laser beam draining the cell entirely. Better not miss and better have spare cells."
+ icon_state = "ziplas"
+ item_state = "ziplas"
+ w_class = ITEMSIZE_SMALL
+ slot_flags = SLOT_BELT|SLOT_BACK
+ charge_cost = 1500 //You got 1 shot...
+ projectile_type = /obj/item/projectile/beam/heavylaser //But it hurts a lot
+ cell_type = /obj/item/weapon/cell/device/weapon
\ No newline at end of file
diff --git a/code/modules/projectiles/guns/projectile/automatic_ch.dm b/code/modules/projectiles/guns/projectile/automatic_ch.dm
new file mode 100644
index 0000000000..508f330ffe
--- /dev/null
+++ b/code/modules/projectiles/guns/projectile/automatic_ch.dm
@@ -0,0 +1,26 @@
+/obj/item/weapon/gun/projectile/automatic/fal
+ name = "FN-FAL"
+ desc = "A 20th century Assault Rifle originally designed by Fabrique National. Famous for its use by mercs in grinding proxy wars in backwater nations. This reproduction was probably made for similar purposes."
+ icon_state = "fal"
+ item_state = "fal"
+ w_class = ITEMSIZE_LARGE
+ force = 10
+ caliber = "7.62mm"
+ origin_tech = list(TECH_COMBAT = 6, TECH_MATERIAL = 1, TECH_ILLEGAL = 4)
+ slot_flags = SLOT_BACK
+ load_method = MAGAZINE
+ magazine_type = /obj/item/ammo_magazine/m762m
+ allowed_magazines = list(/obj/item/ammo_magazine/m762, /obj/item/ammo_magazine/m762m)
+ projectile_type = /obj/item/projectile/bullet/rifle/a762
+
+ firemodes = list(
+ list(mode_name="semiauto", burst=1, fire_delay=0, move_delay=null, burst_accuracy=null, dispersion=null),
+ list(mode_name="2-round bursts", burst=2, fire_delay=null, move_delay=6, burst_accuracy=list(60,35), dispersion=list(0.0, 0.6))
+ )
+
+/obj/item/weapon/gun/projectile/automatic/fal/update_icon(var/ignore_inhands)
+ ..()
+ if(ammo_magazine)
+ icon_state = initial(icon_state)
+ else
+ icon_state = "[initial(icon_state)]-empty"
\ No newline at end of file
diff --git a/code/modules/projectiles/guns/projectile/boltaction_ch.dm b/code/modules/projectiles/guns/projectile/boltaction_ch.dm
new file mode 100644
index 0000000000..a85a13b8eb
--- /dev/null
+++ b/code/modules/projectiles/guns/projectile/boltaction_ch.dm
@@ -0,0 +1,8 @@
+/obj/item/weapon/gun/projectile/shotgun/pump/rifle/vox_hunting
+ name = "vox hunting rifle"
+ desc = "This ancient rifle bears traces of an assembly meant to house power cells, implying it used to fire energy beams. It has since been crudely modified to fire standard 7.62mm rounds."
+ icon_state = "vox_hunting"
+ item_state = "vox_hunting"
+ ammo_type = /obj/item/ammo_casing/a762
+ throwforce = 10
+ force = 20
\ No newline at end of file
diff --git a/code/modules/projectiles/projectile/bullets_ch.dm b/code/modules/projectiles/projectile/bullets_ch.dm
index 92cf517ccb..05b7c25c37 100644
--- a/code/modules/projectiles/projectile/bullets_ch.dm
+++ b/code/modules/projectiles/projectile/bullets_ch.dm
@@ -412,3 +412,16 @@ only use the hollow_point and armor_penetration values.*/
/obj/item/projectile/bullet/gyro
old_bullet_act = TRUE
+
+/obj/item/projectile/bullet/pistol/medium/ap/suppressor // adminspawn only
+ name = "suppressor bullet" // this guy is Important and also Hates You
+ fire_sound = 'sound/weapons/doompistol.ogg' // converted from .wavs extracted from doom 2
+ damage = 10 // high rof kinda fucked up lets be real
+ agony = 10 // brute easily heals, agony not so much
+ armor_penetration = 30 // reduces shield blockchance
+ accuracy = -20 // he do miss actually
+ speed = 0.4 // if the pathfinder gets a funny burst rifle, they deserve a rival
+ // that's 2x projectile speed btw
+
+/obj/item/projectile/bullet/pistol/medium/ap/suppressor/turbo // spicy boys
+ speed = 0.2 // this is 4x projectile speed
\ No newline at end of file
diff --git a/code/modules/projectiles/projectile_ch.dm b/code/modules/projectiles/projectile_ch.dm
new file mode 100644
index 0000000000..4b83b8bc12
--- /dev/null
+++ b/code/modules/projectiles/projectile_ch.dm
@@ -0,0 +1,3 @@
+/obj/item/projectile
+/// If this projectile is holy. Silver bullets, etc. Currently no effects.
+ var/holy = 0
\ No newline at end of file
diff --git a/icons/mob/animal_ch.dmi b/icons/mob/animal_ch.dmi
index 26e8e76c24..8ef560c776 100644
Binary files a/icons/mob/animal_ch.dmi and b/icons/mob/animal_ch.dmi differ
diff --git a/icons/obj/gun_ch.dmi b/icons/obj/gun_ch.dmi
index 3b50d31c72..160ed579f7 100644
Binary files a/icons/obj/gun_ch.dmi and b/icons/obj/gun_ch.dmi differ
diff --git a/sound/weapons/doompistol.ogg b/sound/weapons/doompistol.ogg
new file mode 100644
index 0000000000..00abb8f343
Binary files /dev/null and b/sound/weapons/doompistol.ogg differ
diff --git a/vorestation.dme b/vorestation.dme
index ef20c82b57..29802bfa2b 100644
--- a/vorestation.dme
+++ b/vorestation.dme
@@ -1865,6 +1865,7 @@
#include "code\modules\ai\ai_holder_targeting_vr.dm"
#include "code\modules\ai\interfaces.dm"
#include "code\modules\ai\say_list.dm"
+#include "code\modules\ai\say_list_ch.dm"
#include "code\modules\ai\ai_holder_subtypes\simple_mob_ai.dm"
#include "code\modules\ai\ai_holder_subtypes\simple_mob_ai_ch.dm"
#include "code\modules\ai\ai_holder_subtypes\simple_mob_ai_vr.dm"
@@ -3224,6 +3225,7 @@
#include "code\modules\mob\living\simple_mob\subtypes\humanoid\pirates.dm"
#include "code\modules\mob\living\simple_mob\subtypes\humanoid\russian.dm"
#include "code\modules\mob\living\simple_mob\subtypes\humanoid\mercs\mercs.dm"
+#include "code\modules\mob\living\simple_mob\subtypes\humanoid\mercs\mercs_ch.dm"
#include "code\modules\mob\living\simple_mob\subtypes\humanoid\mercs\mercs_vr.dm"
#include "code\modules\mob\living\simple_mob\subtypes\illusion\illusion.dm"
#include "code\modules\mob\living\simple_mob\subtypes\mechanical\corrupt_maint_drone_vr.dm"
@@ -3720,7 +3722,9 @@
#include "code\modules\projectiles\broken.dm"
#include "code\modules\projectiles\dnalocking.dm"
#include "code\modules\projectiles\gun.dm"
+#include "code\modules\projectiles\gun_ch.dm"
#include "code\modules\projectiles\projectile.dm"
+#include "code\modules\projectiles\projectile_ch.dm"
#include "code\modules\projectiles\ammunition\magazines.dm"
#include "code\modules\projectiles\ammunition\magazines_vr.dm"
#include "code\modules\projectiles\ammunition\magazines_yw.dm"
@@ -3790,9 +3794,11 @@
#include "code\modules\projectiles\guns\magnetic\magnetic_railgun_ch.dm"
#include "code\modules\projectiles\guns\magnetic\magnetic_railgun_vr.dm"
#include "code\modules\projectiles\guns\projectile\automatic.dm"
+#include "code\modules\projectiles\guns\projectile\automatic_ch.dm"
#include "code\modules\projectiles\guns\projectile\automatic_vr.dm"
#include "code\modules\projectiles\guns\projectile\automatic_yw.dm"
#include "code\modules\projectiles\guns\projectile\boltaction.dm"
+#include "code\modules\projectiles\guns\projectile\boltaction_ch.dm"
#include "code\modules\projectiles\guns\projectile\boltaction_vr.dm"
#include "code\modules\projectiles\guns\projectile\caseless.dm"
#include "code\modules\projectiles\guns\projectile\contender.dm"