Skip to content

Commit

Permalink
PMC and Whiteout stuff (cmss13-devs#1966)
Browse files Browse the repository at this point in the history
<!-- Write **BELOW** The Headers and **ABOVE** The comments else it may
not be viewable. -->

# About the pull request

As a preword, I came up with every change in this PR and coded them in
the span of 10 hours, so some things may be iffy.

PMCs and Whiteout may be good, but they're a bit outdated, this
modernizes multiple loadout aspects, enables antag vendors for
admin-spawn, and does some balance changes to certain
portions(specifically chem ERT).

Individual changes, numbered, will go over each in why its good, may
have forgotten one or two things.

1. Buffs whiteout flamer with blue flame damage, belt-linked magharn,
and pyro underbarrel extinguisher
2. Adds a synthetic repair kit(medkit), with synth repair tools, gives
it to whiteout.
3. Adds breaching charges and swaps crowbars to tactical in whiteout
loadouts
4. Gives whiteout PMC sniper goggles(thermals)
5. Gives whiteout medic the required gear to actually repair a downed
member of the team, and just a lot of synth heals.
6. Gives whiteout leader a pyro extinguisher.
7. Gives whiteout weapons default attachments.
8. Adds an 'advanced' mini-flamer with the same stats as UPP integrated
UBF, gives it to NSG23 and random m41/2 attachie.
9. Gives detainer PMCs a version of the corporate m41A MK2(goon gun),
with attachies and adv flamer to replace flamethrower.
10. Swaps chem PMC TL P90(name is too long) with an M41/2
11. Gives normal PMC ERT roles a webbing vest with meds and
miniextinguisher
12. Gives PMC Surgeon the essentials required to act as a medic, swaps
NSG with M39/2, gives them a normal but unique look.
13. Whiteout and PMC SG powerpacks have 30k power by default, instead of
10k.
14. Gives PMC guns more options for random attachments, and gives m41/2
its intended collapsible stock
15. Gives PMC engi m39/2 instead of P90
16. Removes flamer from potential PMC loadouts.
17. Gives PMCs better CQC skill.
18. Gives PMC TLs autoinjector pouches(which gives chem TL a second
pouch in the first place)
19. Detainer PMCs now have tac-sechuds, PMC TLs have sensorhuds.
20. **Enables antag vendor for PMC roles.** (Look at file changes for
the specific things, too long for pr desc)

# Explain why it's good for the game

Modernization and some needed loadout/balance changes(IMO).
Per number:

1. Whiteout flamer did worse damage than napalm, and was incredibly easy
to lose.
2. More heals for each member of the whiteout team, allows more
self-sufficiency.
3. Breach charges for tacticool breaches, crowbar doubles as a melee
weapon in case the player doesn't know about synth punch
4. Whiteout didn't have proper NVG, thermals allows them to do
tacticooler breaches by lining up people wth breach charge.
5. Whiteout medic didn't have a lot of heals at all, and didn't have a
defib, so they weren't much of a medic.
6. To extinguish the flames and lead charges, works like pyro
underbarrel extinguisher, but handheld.
7. Default tacticool attachment, already made whiteout subtypes for
HEAP, why not give them good attachies with them too.
8. Mini-flamer sucks, gives a better version for NSG and m41/2, same
stats as the already existing UPP integrated UBF.
9. Detainers had flamers which sucked, gives them corpo m41s which
aren't as good as /2s, but have adv UBF for flames.
10. P90 sucks, having default m41/2 fits with other leader type, also
gives them a better gun than their underlings.
11. Medkit but in a webbing, its my personal combat webbing load when I
play so its good.
12. PMC Surgeon was horrifically undergeared, they didn't even have a
medhud, gives them basic gear similar to PMC med but with a beret to
tell them apart.
13. ERTs don't have spare batteries to get usually, more staying power
in fights.
14. More options for attachies to further make PMC weapons better, also
gives m41/2 the m41 collapsible stock because it needed it.
15. P90 sucks, support roles getting the m39/2 is cool.
16. Flamer sucks to get as PMC, and adv. UBF as a potential m41/2
attachie makes a full-sized flamer useless too.
17. PMCs could fireman carry, and multi-strip, but did it horrifically
slow, gives them MP level CQC(master for spec, expert for TL)
18. TL getting extra meds is neat, also chem TL had an empty pocket slot
and no meds, thats bad.
19. Sechud-thing for PMC detainers is useful(stops flashbang trolling
for one), giving PMC TL a sensorhud to watch their team's status is also
good.
20. Makes doing event bases for PMCs much easier, too long to post the
specific changes here but look at files for them.


# Testing Photographs and Procedure

I forgot to take screenshots but it all works. 👍 
I spawned myself as every changed role and tested every individual
change extensively.

# Changelog

<!-- If your PR modifies aspects of the game that can be concretely
observed by players or admins you should add a changelog. If your change
does NOT meet this description, remove this section. Be sure to properly
mark your PRs to prevent unnecessary GBP loss. Please note that
maintainers freely reserve the right to remove and add tags should they
deem it appropriate. You can attempt to finagle the system all you want,
but it's best to shoot for clear communication right off the bat. -->
<!-- If you add a name after the ':cl', that name will be used in the
changelog. You must add your CKEY after the CL if your GitHub name
doesn't match. Be sure to properly mark your PRs to prevent unnecessary
GBP loss. Maintainers freely reserve the right to remove and add tags
should they deem it appropriate. -->

:cl:
add: PMCs are now able to use antag vendors.
balance: Multiple loadout and skill changes to PMCs and Whiteout
balance: Buffs whiteout flame damage to blue flame damage.
fix: PMC Investigator Lead now appropriately spawns with a medical pouch
in their pocket, instead of nothing.
fix: Maximum skill preset now appropriately also has BE and intel skill,
at maximum of course.
fix: PMC Smartgunner now appropriately a VP78 to go along with their
VP78 magazines
fix: Whiteout now appropriately have night vision.
fix: M41A/2 now appropriately comes equipped with a collapsible stock.
spellcheck: PMC smartgun drum now has a seperate description and name
from base SG to match its different appearance.
/:cl:

<!-- Both :cl:'s are required for the changelog to work! -->
  • Loading branch information
CapCamIII authored Feb 8, 2023
1 parent 17f2f47 commit c7a33d5
Show file tree
Hide file tree
Showing 21 changed files with 1,731 additions and 147 deletions.
68 changes: 68 additions & 0 deletions code/datums/factions/pmc.dm
Original file line number Diff line number Diff line change
Expand Up @@ -25,3 +25,71 @@
hud_icon_state = "syn"
if(hud_icon_state)
holder.overlays += image('icons/mob/hud/marine_hud.dmi', H, "pmc_[hud_icon_state]")

/datum/faction/pmc/get_antag_guns_snowflake_equipment()
return list(
list("PRIMARY FIREARMS", 0, null, null, null),
list("M41A/2 Pulse Rifle", 30, /obj/item/weapon/gun/rifle/m41a/elite, null, VENDOR_ITEM_REGULAR),
list("M39B/2 submachinegun", 30, /obj/item/weapon/gun/smg/m39/elite, null, VENDOR_ITEM_REGULAR),
list("NSG23 assault rifle", 20, /obj/item/weapon/gun/rifle/nsg23, null, VENDOR_ITEM_REGULAR),

list("PRIMARY AMMUNITION", 0, null, null, null),
list("M41A AP magazine (10x24mm)", 10, /obj/item/ammo_magazine/rifle/ap, null, VENDOR_ITEM_REGULAR),
list("M41A extended magazine (10x24mm)", 5, /obj/item/ammo_magazine/rifle/extended, null, VENDOR_ITEM_REGULAR),
list("M39 AP magazine (10x20mm)", 10, /obj/item/ammo_magazine/smg/m39/ap, null, VENDOR_ITEM_REGULAR),
list("M39 HV extended magazine (10x20mm)", 5, /obj/item/ammo_magazine/smg/m39/extended, null, VENDOR_ITEM_REGULAR),
list("NSG 23 armor-piercing magazine (10x24mm)", 10, /obj/item/ammo_magazine/rifle/nsg23/ap, null, VENDOR_ITEM_REGULAR),
list("NSG 23 extended magazine (10x24mm)", 5, /obj/item/ammo_magazine/rifle/nsg23/extended, null, VENDOR_ITEM_REGULAR),

list("SIDEARMS", 0, null, null, null),
list("VP78 pistol", 20, /obj/item/weapon/gun/pistol/vp78, null, VENDOR_ITEM_REGULAR),
list("88 Mod 4 Combat Pistol", 15, /obj/item/weapon/gun/pistol/mod88, null, VENDOR_ITEM_REGULAR),

list("SIDEARM AMMUNITION", 0, null, null, null),
list("VP78 magazine (9mm)", 5, /obj/item/ammo_magazine/pistol/vp78, null, VENDOR_ITEM_REGULAR),
list("88M4 AP Magazine (9mm)", 5, /obj/item/ammo_magazine/pistol/mod88, null, VENDOR_ITEM_REGULAR),

list("ATTACHMENTS", 0, null, null, null),
list("Angled Grip", 15, /obj/item/attachable/angledgrip, null, VENDOR_ITEM_REGULAR),
list("Burst Fire Assembly", 15, /obj/item/attachable/burstfire_assembly, null, VENDOR_ITEM_REGULAR),
list("Extended Barrel", 15, /obj/item/attachable/extended_barrel, null, VENDOR_ITEM_REGULAR),
list("Advanced Underbarrel Flamethrower", 15, /obj/item/attachable/attached_gun/flamer/advanced, null, VENDOR_ITEM_REGULAR),
list("Laser Sight", 15, /obj/item/attachable/lasersight, null, VENDOR_ITEM_REGULAR),
list("Rail Flashlight", 5, /obj/item/attachable/flashlight, null, VENDOR_ITEM_REGULAR),
list("Red-Dot Sight", 15, /obj/item/attachable/reddot, null, VENDOR_ITEM_REGULAR),
list("Reflex Sight", 15, /obj/item/attachable/reflex, null, VENDOR_ITEM_REGULAR),
list("Suppressor", 15, /obj/item/attachable/suppressor, null, VENDOR_ITEM_REGULAR),
list("Vertical Grip", 15, /obj/item/attachable/verticalgrip, null, VENDOR_ITEM_REGULAR),

list("UTILITIES", 0, null, null, null),
list("M94 Marking Flare Pack", 3, /obj/item/storage/box/m94, null, VENDOR_ITEM_RECOMMENDED),
list("Smoke Grenade", 7, /obj/item/explosive/grenade/smokebomb, null, VENDOR_ITEM_REGULAR)
)

/datum/faction/pmc/get_antag_guns_sorted_equipment()
return list(
list("PRIMARY FIREARMS", 0, null, null, null),
list("M41A/2 Pulse Rifle", 30, /obj/item/weapon/gun/rifle/m41a/elite, null, VENDOR_ITEM_REGULAR),
list("M39B/2 submachinegun", 30, /obj/item/weapon/gun/smg/m39/elite, null, VENDOR_ITEM_REGULAR),
list("NSG23 assault rifle", 30, /obj/item/weapon/gun/rifle/nsg23, null, VENDOR_ITEM_REGULAR),

list("PRIMARY AMMUNITION", 0, null, null, null),
list("M41A AP magazine (10x24mm)", 30, /obj/item/ammo_magazine/rifle/ap, null, VENDOR_ITEM_REGULAR),
list("M41A extended magazine (10x24mm)", 50, /obj/item/ammo_magazine/rifle/extended, null, VENDOR_ITEM_REGULAR),
list("M39 AP magazine (10x20mm)", 30, /obj/item/ammo_magazine/smg/m39/ap, null, VENDOR_ITEM_REGULAR),
list("M39 HV extended magazine (10x20mm)", 50, /obj/item/ammo_magazine/smg/m39/extended, null, VENDOR_ITEM_REGULAR),
list("NSG 23 armor-piercing magazine (10x24mm)", 30, /obj/item/ammo_magazine/rifle/nsg23/ap, null, VENDOR_ITEM_REGULAR),
list("NSG 23 extended magazine (10x24mm)", 50, /obj/item/ammo_magazine/rifle/nsg23/extended, null, VENDOR_ITEM_REGULAR),

list("SIDEARMS", 0, null, null, null),
list("VP78 pistol", 20, /obj/item/weapon/gun/pistol/vp78, null, VENDOR_ITEM_REGULAR),
list("88 Mod 4 Combat Pistol", 30, /obj/item/weapon/gun/pistol/mod88, null, VENDOR_ITEM_REGULAR),

list("SIDEARM AMMUNITION", 0, null, null, null),
list("VP78 magazine (9mm)", 50, /obj/item/ammo_magazine/pistol/vp78, null, VENDOR_ITEM_REGULAR),
list("88M4 AP Magazine (9mm)", 50, /obj/item/ammo_magazine/pistol/mod88, null, VENDOR_ITEM_REGULAR),

list("UTILITIES", 0, null, null, null),
list("M94 Marking Flare Pack", 30, /obj/item/storage/box/m94, null, VENDOR_ITEM_RECOMMENDED),
list("Smoke Grenade", 30, /obj/item/explosive/grenade/smokebomb, null, VENDOR_ITEM_REGULAR)
)
2 changes: 2 additions & 0 deletions code/datums/skills.dm
Original file line number Diff line number Diff line change
Expand Up @@ -1906,4 +1906,6 @@ MISCELLANEOUS
SKILL_POWERLOADER = SKILL_POWERLOADER_MAX,
SKILL_VEHICLE = SKILL_VEHICLE_MAX,
SKILL_JTAC = SKILL_JTAC_MAX,
SKILL_EXECUTION = SKILL_EXECUTION_MAX,
SKILL_INTEL = SKILL_INTEL_MAX,
)
29 changes: 26 additions & 3 deletions code/game/objects/items/storage/belt.dm
Original file line number Diff line number Diff line change
Expand Up @@ -1465,7 +1465,7 @@

/obj/item/storage/belt/gun/smartgunner/pmc
name = "\improper M802 pattern 'Dirty' smartgunner sidearm rig"
desc = "A modification of the standard M802 load-bearing equipment, designed to carry smartgun ammunition and a Mateba revolver."
desc = "A modification of the standard M802 load-bearing equipment, designed to carry smartgun ammunition and a sidearm."
can_hold = list(
/obj/item/device/flashlight/flare,
/obj/item/weapon/gun/flare,
Expand All @@ -1480,8 +1480,31 @@
has_gamemode_skin = TRUE

/obj/item/storage/belt/gun/smartgunner/pmc/full/fill_preset_inventory()
handle_item_insertion(new /obj/item/weapon/gun/revolver/mateba())
new /obj/item/ammo_magazine/revolver/mateba/highimpact(src)
handle_item_insertion(new /obj/item/weapon/gun/pistol/vp78())
new /obj/item/ammo_magazine/pistol/vp78(src)
new /obj/item/ammo_magazine/smartgun/dirty(src)
new /obj/item/ammo_magazine/smartgun/dirty(src)
new /obj/item/ammo_magazine/smartgun/dirty(src)

/obj/item/storage/belt/gun/smartgunner/whiteout
name = "\improper M802 pattern 'Terminator' smartgunner sidearm rig"
desc = "A modification of the standard M802 load-bearing equipment, designed to carry smartgun ammunition and a Mateba revolver."
can_hold = list(
/obj/item/device/flashlight/flare,
/obj/item/weapon/gun/flare,
/obj/item/weapon/gun/pistol,
/obj/item/weapon/gun/revolver/m44,
/obj/item/weapon/gun/revolver/mateba,
/obj/item/ammo_magazine/revolver,
/obj/item/ammo_magazine/revolver/mateba,
/obj/item/ammo_magazine/pistol,
/obj/item/ammo_magazine/smartgun,
)
has_gamemode_skin = TRUE

/obj/item/storage/belt/gun/smartgunner/whiteout/full/fill_preset_inventory()
handle_item_insertion(new /obj/item/weapon/gun/revolver/mateba/pmc())
new /obj/item/ammo_magazine/revolver/mateba/highimpact/ap(src)
new /obj/item/ammo_magazine/smartgun/dirty(src)
new /obj/item/ammo_magazine/smartgun/dirty(src)
new /obj/item/ammo_magazine/smartgun/dirty(src)
Expand Down
14 changes: 14 additions & 0 deletions code/game/objects/items/storage/boxes.dm
Original file line number Diff line number Diff line change
Expand Up @@ -374,6 +374,20 @@
new /obj/item/handcuffs/zip(src)
new /obj/item/handcuffs/zip(src)

/obj/item/storage/box/zipcuffs/small
name = "small box of zip cuffs"
desc = "A small box full of zip cuffs."
w_class = SIZE_MEDIUM

/obj/item/storage/box/zipcuffs/fill_preset_inventory()
new /obj/item/handcuffs/zip(src)
new /obj/item/handcuffs/zip(src)
new /obj/item/handcuffs/zip(src)
new /obj/item/handcuffs/zip(src)
new /obj/item/handcuffs/zip(src)
new /obj/item/handcuffs/zip(src)
new /obj/item/handcuffs/zip(src)

/obj/item/storage/box/tapes
name = "box of regulation tapes"
desc = "A box full of magnetic tapes for tape recorders. Contains 10 hours and 40 minutes of recording space!"
Expand Down
24 changes: 24 additions & 0 deletions code/game/objects/items/storage/firstaid.dm
Original file line number Diff line number Diff line change
Expand Up @@ -150,6 +150,30 @@
/obj/item/storage/firstaid/adv/empty/fill_preset_inventory()
return



/obj/item/storage/firstaid/synth
name = "synthetic repair kit"
desc = "Contains equipment to repair a damaged synthetic. A tag on the back reads: 'Does not contain a shocking tool to repair disabled synthetics, nor a scanning device to detect specific damage; pack seperately.'"
icon_state = "bezerk"
item_state = "firstaid-advanced"
cant_hold = list(
/obj/item/ammo_magazine,
/obj/item/explosive/grenade,
)

/obj/item/storage/firstaid/synth/fill_preset_inventory()
new /obj/item/stack/nanopaste(src)
new /obj/item/stack/nanopaste(src)
new /obj/item/stack/nanopaste(src)
new /obj/item/stack/nanopaste(src)
new /obj/item/stack/cable_coil/white(src)
new /obj/item/stack/cable_coil/white(src)
new /obj/item/tool/weldingtool/largetank(src)

/obj/item/storage/firstaid/synth/empty/fill_preset_inventory()
return

/obj/item/storage/firstaid/rad
name = "radiation first-aid kit"
desc = "Contains treatment for radiation exposure"
Expand Down
6 changes: 5 additions & 1 deletion code/game/objects/items/storage/pouch.dm
Original file line number Diff line number Diff line change
Expand Up @@ -468,6 +468,10 @@
for(var/i in 1 to storage_slots)
new /obj/item/ammo_magazine/revolver/mateba/highimpact(src)

/obj/item/storage/pouch/magazine/pistol/large/vp78/fill_preset_inventory()
for(var/i = 1 to storage_slots)
new /obj/item/ammo_magazine/pistol/vp78(src)

/obj/item/storage/pouch/magazine/shotgun/attackby(obj/item/W, mob/living/user)
if(istype(W, /obj/item/ammo_magazine/shotgun))
var/obj/item/ammo_magazine/shotgun/M = W
Expand All @@ -481,7 +485,7 @@

/obj/item/storage/pouch/magazine/pistol/pmc_mateba/fill_preset_inventory()
for(var/i = 1 to storage_slots)
new /obj/item/ammo_magazine/revolver/mateba(src)
new /obj/item/ammo_magazine/revolver/mateba/highimpact/ap(src)

/obj/item/storage/pouch/magazine/pistol/pmc_mod88/fill_preset_inventory()
for(var/i = 1 to storage_slots)
Expand Down
5 changes: 5 additions & 0 deletions code/modules/clothing/glasses/night.dm
Original file line number Diff line number Diff line change
Expand Up @@ -201,6 +201,11 @@
else
button.icon_state = "template"

/obj/item/clothing/glasses/night/m56_goggles/whiteout
name = "\improper M56T head mounted sight"
desc = "A headset and goggles system for the M56T 'Terminator' Smartgun. Has a low-light vision processor as well as a system allowing detection of thermal signatures though solid surfaces."
vision_flags = SEE_TURFS|SEE_MOBS

/obj/item/clothing/glasses/night/yautja
name = "bio-mask nightvision"
gender = NEUTER
Expand Down
3 changes: 3 additions & 0 deletions code/modules/clothing/under/ties.dm
Original file line number Diff line number Diff line change
Expand Up @@ -579,6 +579,9 @@
desc = "A matte blue synthcotton vest purpose-made for holding surgical tools."
icon_state = "vest_blue"

/obj/item/clothing/accessory/storage/surg_vest/blue/equipped
hold = /obj/item/storage/internal/accessory/surg_vest/equipped

/obj/item/clothing/accessory/storage/knifeharness
name = "M272 pattern knife vest"
desc = "An older generation M272 pattern knife vest once employed by the USCM. Can hold up to 5 knives. It is made of synthcotton."
Expand Down
37 changes: 37 additions & 0 deletions code/modules/cm_marines/equipment/weapons.dm
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,36 @@
else
icon_state = "kit_case_e"

/obj/item/storage/box/m56_dirty_system
name = "\improper M56D 'Dirty' smartgun system case"
desc = "A large case containing an M56D 'Dirty' Smartgun, M56D PMC combat harness and helmet, head mounted sight, M280 Smartgunner Drum Belt and powerpack.\nDrag this sprite into you to open it up! NOTE: You cannot put items back inside this case."
icon = 'icons/obj/items/storage.dmi'
icon_state = "kit_case"
w_class = SIZE_HUGE
storage_slots = 6
slowdown = 1
can_hold = list() //Nada. Once you take the stuff out it doesn't fit back in.
foldable = null

/obj/item/storage/box/m56_dirty_system/Initialize()
. = ..()
new /obj/item/clothing/glasses/night/m56_goggles(src)
new /obj/item/weapon/gun/smartgun/dirty(src)
new /obj/item/smartgun_powerpack/pmc(src)
new /obj/item/clothing/suit/storage/marine/smartgunner/veteran/pmc(src)
new /obj/item/clothing/head/helmet/marine/veteran/pmc/gunner(src)
new /obj/item/storage/belt/gun/smartgunner/pmc/full(src)
update_icon()

/obj/item/storage/box/m56_dirty_system/update_icon()
if(overlays.len)
overlays.Cut()
if(contents.len)
icon_state = "kit_case"
overlays += image(icon, "smartgun")
else
icon_state = "kit_case_e"

/obj/item/smartgun_powerpack
name = "\improper M56 powerpack"
desc = "A heavy reinforced backpack with support equipment and power cells for the M56 Smartgun System."
Expand Down Expand Up @@ -117,6 +147,13 @@
return FALSE
return FALSE

/obj/item/smartgun_powerpack/pmc
icon_state = "powerpack"

/obj/item/smartgun_powerpack/pmc/Initialize(mapload, ...)
. = ..()
pcell = new /obj/item/cell/hyper(src)

/obj/item/smartgun_powerpack/snow
icon_state = "powerpack"

Expand Down
2 changes: 1 addition & 1 deletion code/modules/cm_tech/implements/xeno_handler.dm
Original file line number Diff line number Diff line change
Expand Up @@ -55,5 +55,5 @@
SKILL_CONSTRUCTION = SKILL_CONSTRUCTION_ENGI,
SKILL_ENGINEER = SKILL_ENGINEER_ENGI,
SKILL_LEADERSHIP = SKILL_LEAD_MASTER,
SKILL_ENDURANCE = SKILL_ENDURANCE_SURVIVOR,
SKILL_ENDURANCE = SKILL_ENDURANCE_EXPERT,
)
Loading

0 comments on commit c7a33d5

Please sign in to comment.