Files
Bubberstation/code/datums/id_trim/centcom.dm
Cheshify b9fa1bc8f4 The Laser Musket (2023) (Settlement Helper Edition) (#76231)
## About The Pull Request
This adds a craftable laser musket to the game. It's slow and unwieldy,
but consistent! I'd be happy to tweak the numbers if it's too good/bad.

This PR also adds an independent militia ERT, who travels the spinward
sector to help defend stations!

TO DO LIST:

- [x] Finish worn sprites
- [x] Add a crafting recipe on par with the pipegun
- [x] Add bayonets
- [x] Separate charging into two stages and REDO THE AUDIO AAAA
- [x] Clean up code (Needs review, totally)

Scrapped:

- Possibly add overcharge mechanic (This is just beyond my skill level
for now)
- Find a unique sound for the weapon firing (We have a unique
projectile, and I can't a sound that fits more than the laser gun one)


![image](https://github.com/tgstation/tgstation/assets/73589390/40ee8f1d-5c1f-4638-af70-ff1215b85c9e)

![1211
(1)](https://github.com/tgstation/tgstation/assets/73589390/1a4b9856-a878-4500-96ce-4fd83587fa81)

![musket (2) (2)
(2)](https://github.com/tgstation/tgstation/assets/73589390/2ebdc2ed-6f78-4761-9deb-a1b2d337a02d)

![aaaa1
(1)](https://github.com/tgstation/tgstation/assets/73589390/6076edd3-97c9-41ec-a67a-90717f97eab0)


![image](https://github.com/tgstation/tgstation/assets/73589390/c47e44bd-3f4b-44b3-aaa5-9b1c25a72cad)

Inhands by RedSentry27
Suit sprite by Kinnebian
Prime Laser Musket sprites by RedSentry27

Balance Considerations (ew):
25 damage (30 on prime)
Normal wound
40 Stamina damage (45 on prime)
Weak to armour (prime not weak to armor)
2 second charge time, needs to be charged twice
No overcharge
Requires two hands to hold (like a chainsaw)

Crafting Recipe:
One rifle stock
Fifteen Cable Coils
Four Iron Rods
One micro laser
One capacitor
One pair of prescription glasses
One drinking glass
Craft for 10 seconds with a wirecutter and screwdriver

Prime crafting recipe: (REQUIRES READING MAINTENANCE LOOT: "journal of a
space ranger")
One laser musket
Fifteen cable coils
Five silver
One water recycler
Fifteen units of nuka cola
Craft for 30 seconds with a screwdriver while wearing cowboy boots and a
cowboy hat
## Why It's Good For The Game
The idea of assistants and revs forming firing lines in the halls to
shoot eachother sounds hilarious. Besides, we need a parallel to the
pipegun, and this is the funniest way to do so.
## Changelog
🆑 Cheshify, Kinnebian, and RedSentry27
add: Maintenance engineers have sent out blueprints across the sector
for a new laser musket.
admin: A new energy-gun toting ERT is available to send to the crew.

---------

Co-authored-by: carlarctg <53100513+carlarctg@users.noreply.github.com>
2023-06-30 19:54:33 +00:00

202 lines
7.0 KiB
Plaintext

/// Trim for basic Centcom cards.
/datum/id_trim/centcom
access = list(ACCESS_CENT_GENERAL)
assignment = JOB_CENTCOM
trim_state = "trim_centcom"
sechud_icon_state = SECHUD_CENTCOM
department_color = COLOR_CENTCOM_BLUE
subdepartment_color = COLOR_CENTCOM_BLUE
/// Trim for Centcom VIPs
/datum/id_trim/centcom/vip
access = list(ACCESS_CENT_GENERAL)
assignment = JOB_CENTCOM_VIP
/// Trim for Centcom Custodians.
/datum/id_trim/centcom/custodian
access = list(ACCESS_CENT_GENERAL, ACCESS_CENT_LIVING, ACCESS_CENT_STORAGE)
assignment = JOB_CENTCOM_CUSTODIAN
trim_state = "trim_janitor"
department_color = COLOR_CENTCOM_BLUE
subdepartment_color = COLOR_SERVICE_LIME
/// Trim for Centcom Thunderdome Overseers.
/datum/id_trim/centcom/thunderdome_overseer
access = list(ACCESS_CENT_GENERAL, ACCESS_CENT_THUNDER)
assignment = JOB_CENTCOM_THUNDERDOME_OVERSEER
/// Trim for Centcom Officials.
/datum/id_trim/centcom/official
access = list(ACCESS_CENT_GENERAL, ACCESS_CENT_LIVING, ACCESS_WEAPONS)
assignment = JOB_CENTCOM_OFFICIAL
/// Trim for Centcom Interns.
/datum/id_trim/centcom/intern
access = list(ACCESS_CENT_GENERAL, ACCESS_CENT_LIVING, ACCESS_WEAPONS)
assignment = "CentCom Intern"
/// Trim for Centcom Head Interns. Different assignment, common station access added on.
/datum/id_trim/centcom/intern/head
assignment = "CentCom Head Intern"
/datum/id_trim/centcom/intern/head/New()
. = ..()
access |= SSid_access.get_flag_access_list(ACCESS_FLAG_COMMON)
/// Trim for Bounty Hunters hired by centcom.
/datum/id_trim/centcom/bounty_hunter
access = list(ACCESS_CENT_GENERAL)
assignment = "Bounty Hunter"
/// Trim for Centcom Bartenders.
/datum/id_trim/centcom/bartender
access = list(ACCESS_CENT_GENERAL, ACCESS_CENT_LIVING, ACCESS_CENT_BAR)
assignment = JOB_CENTCOM_BARTENDER
/// Trim for Centcom Medical Officers.
/datum/id_trim/centcom/medical_officer
access = list(ACCESS_CENT_GENERAL, ACCESS_CENT_LIVING, ACCESS_CENT_MEDICAL)
assignment = JOB_CENTCOM_MEDICAL_DOCTOR
/// Trim for Centcom Research Officers.
/datum/id_trim/centcom/research_officer
access = list(ACCESS_CENT_GENERAL, ACCESS_CENT_SPECOPS, ACCESS_CENT_MEDICAL, ACCESS_CENT_TELEPORTER, ACCESS_CENT_STORAGE)
assignment = JOB_CENTCOM_RESEARCH_OFFICER
/// Trim for Centcom Specops Officers. All Centcom and Station Access.
/datum/id_trim/centcom/specops_officer
assignment = JOB_CENTCOM_SPECIAL_OFFICER
/datum/id_trim/centcom/specops_officer/New()
. = ..()
access = SSid_access.get_region_access_list(list(REGION_CENTCOM, REGION_ALL_STATION))
/// Trim for Centcom (Soviet) Admirals. All Centcom and Station Access.
/datum/id_trim/centcom/admiral
assignment = JOB_CENTCOM_ADMIRAL
/datum/id_trim/centcom/admiral/New()
. = ..()
access = SSid_access.get_region_access_list(list(REGION_CENTCOM, REGION_ALL_STATION))
/// Trim for Centcom Commanders. All Centcom and Station Access.
/datum/id_trim/centcom/commander
assignment = JOB_CENTCOM_COMMANDER
/datum/id_trim/centcom/commander/New()
. = ..()
access = SSid_access.get_region_access_list(list(REGION_CENTCOM, REGION_ALL_STATION))
/// Trim for Deathsquad officers. All Centcom and Station Access.
/datum/id_trim/centcom/deathsquad
assignment = JOB_ERT_DEATHSQUAD
trim_state = "trim_deathcommando"
sechud_icon_state = SECHUD_DEATH_COMMANDO
/datum/id_trim/centcom/deathsquad/New()
. = ..()
access = SSid_access.get_region_access_list(list(REGION_CENTCOM, REGION_ALL_STATION))
/// Trim for generic ERT interns. No universal ID card changing access.
/datum/id_trim/centcom/ert
assignment = "Emergency Response Team Intern"
/datum/id_trim/centcom/ert/New()
. = ..()
access = list(ACCESS_CENT_GENERAL) | (SSid_access.get_region_access_list(list(REGION_ALL_STATION)) - ACCESS_CHANGE_IDS)
/// Trim for ERT Commanders. All station and centcom access.
/datum/id_trim/centcom/ert/commander
assignment = JOB_ERT_COMMANDER
trim_state = "trim_ert_commander"
sechud_icon_state = SECHUD_EMERGENCY_RESPONSE_TEAM_COMMANDER
/datum/id_trim/centcom/ert/commander/New()
. = ..()
access = SSid_access.get_region_access_list(list(REGION_CENTCOM, REGION_ALL_STATION))
/// Trim for generic ERT seccies. No universal ID card changing access.
/datum/id_trim/centcom/ert/security
assignment = JOB_ERT_OFFICER
trim_state = "trim_securityofficer"
subdepartment_color = COLOR_SECURITY_RED
sechud_icon_state = SECHUD_SECURITY_RESPONSE_OFFICER
/datum/id_trim/centcom/ert/security/New()
. = ..()
access = list(ACCESS_CENT_GENERAL, ACCESS_CENT_SPECOPS, ACCESS_CENT_LIVING) | (SSid_access.get_region_access_list(list(REGION_ALL_STATION)) - ACCESS_CHANGE_IDS)
/// Trim for generic ERT engineers. No universal ID card changing access.
/datum/id_trim/centcom/ert/engineer
assignment = JOB_ERT_ENGINEER
trim_state = "trim_stationengineer"
subdepartment_color = COLOR_ENGINEERING_ORANGE
sechud_icon_state = SECHUD_ENGINEERING_RESPONSE_OFFICER
/datum/id_trim/centcom/ert/engineer/New()
. = ..()
access = list(ACCESS_CENT_GENERAL, ACCESS_CENT_SPECOPS, ACCESS_CENT_LIVING, ACCESS_CENT_STORAGE) | (SSid_access.get_region_access_list(list(REGION_ALL_STATION)) - ACCESS_CHANGE_IDS)
/// Trim for generic ERT medics. No universal ID card changing access.
/datum/id_trim/centcom/ert/medical
assignment = JOB_ERT_MEDICAL_DOCTOR
trim_state = "trim_medicaldoctor"
subdepartment_color = COLOR_MEDICAL_BLUE
sechud_icon_state = SECHUD_MEDICAL_RESPONSE_OFFICER
/datum/id_trim/centcom/ert/medical/New()
. = ..()
access = list(ACCESS_CENT_GENERAL, ACCESS_CENT_SPECOPS, ACCESS_CENT_MEDICAL, ACCESS_CENT_LIVING) | (SSid_access.get_region_access_list(list(REGION_ALL_STATION)) - ACCESS_CHANGE_IDS)
/// Trim for generic ERT chaplains. No universal ID card changing access.
/datum/id_trim/centcom/ert/chaplain
assignment = JOB_ERT_CHAPLAIN
trim_state = "trim_chaplain"
subdepartment_color = "#58C800"
sechud_icon_state = SECHUD_RELIGIOUS_RESPONSE_OFFICER
/datum/id_trim/centcom/ert/chaplain/New()
. = ..()
access = list(ACCESS_CENT_GENERAL, ACCESS_CENT_SPECOPS, ACCESS_CENT_LIVING) | (SSid_access.get_region_access_list(list(REGION_ALL_STATION)) - ACCESS_CHANGE_IDS)
/// Trim for generic ERT janitors. No universal ID card changing access.
/datum/id_trim/centcom/ert/janitor
assignment = JOB_ERT_JANITOR
trim_state = "trim_ert_janitor"
subdepartment_color = COLOR_SERVICE_LIME
sechud_icon_state = SECHUD_JANITORIAL_RESPONSE_OFFICER
/datum/id_trim/centcom/ert/janitor/New()
. = ..()
access = list(ACCESS_CENT_GENERAL, ACCESS_CENT_LIVING) | (SSid_access.get_region_access_list(list(REGION_ALL_STATION)) - ACCESS_CHANGE_IDS)
/// Trim for generic ERT clowns. No universal ID card changing access.
/datum/id_trim/centcom/ert/clown
assignment = JOB_ERT_CLOWN
trim_state = "trim_clown"
subdepartment_color = COLOR_MAGENTA
sechud_icon_state = SECHUD_ENTERTAINMENT_RESPONSE_OFFICER
/datum/id_trim/centcom/ert/clown/New()
. = ..()
access = list(ACCESS_CENT_GENERAL, ACCESS_CENT_LIVING) | (SSid_access.get_region_access_list(list(REGION_ALL_STATION)) - ACCESS_CHANGE_IDS)
/datum/id_trim/centcom/ert/militia
assignment = "Frontier Militia"
/datum/id_trim/centcom/ert/militia/general
assignment = "Frontier Militia General"