Files
Bubberstation/code/modules/capture_the_flag/ctf_classes.dm
SkyratBot 6c8b61e723 [MIRROR] Capture The Flag: Skill Issue [MDB IGNORE] (#19224)
* Capture The Flag: Skill Issue (#72960)

## About The Pull Request

QoL update for CTF to make the experience better and smoother.

## Why It's Good For The Game

The CTF experience is a bit unpolished in some areas such as important
information (shield charge, control point score) being obscured,
mandatory hand switching on spawning, and players messing with their
team by blocking the controller.

## Changelog
🆑
qol: CTF guns spawn in the default active hand
qol: CTF shields become transparent as they lose charge
qol: CTF King of the Hill scores are visible to players in-game
qol: CTF controllers can no longer be blocked by players standing on
them
/🆑

* Capture The Flag: Skill Issue

---------

Co-authored-by: Thunder12345 <Thunder12345@users.noreply.github.com>
2023-02-08 02:16:57 +00:00

227 lines
8.6 KiB
Plaintext

// GENERIC CLASSES
/datum/outfit/ctf
name = "CTF Rifleman (Solo)"
ears = /obj/item/radio/headset
uniform = /obj/item/clothing/under/syndicate
suit = /obj/item/clothing/suit/armor/vest/ctf
shoes = /obj/item/clothing/shoes/combat
gloves = /obj/item/clothing/gloves/combat
id = /obj/item/card/id/away
belt = /obj/item/gun/ballistic/automatic/pistol/deagle/ctf
l_pocket = /obj/item/ammo_box/magazine/recharge/ctf
r_pocket = /obj/item/ammo_box/magazine/recharge/ctf
l_hand = /obj/item/gun/ballistic/automatic/laser/ctf
///Description to be shown in the class selection menu
var/class_description = "General purpose combat class. Armed with a laser rifle and backup pistol."
///Radio frequency to assign players with this outfit
var/team_radio_freq = FREQ_COMMON // they won't be able to use this on the centcom z-level, so ffa players cannot use radio
///Icon file for the class radial menu icons
var/icon = 'icons/hud/radial_ctf.dmi'
///Icon state for this class
var/icon_state = "ctf_rifleman"
///Do they get a headset?
var/has_radio = TRUE
///Do they get an ID?
var/has_card = TRUE
///Which slots to apply TRAIT_NODROP to the items in
var/list/nodrop_slots = list(ITEM_SLOT_OCLOTHING, ITEM_SLOT_GLOVES, ITEM_SLOT_FEET, ITEM_SLOT_ICLOTHING, ITEM_SLOT_EARS)
/datum/outfit/ctf/post_equip(mob/living/carbon/human/human_to_equip, visualsOnly=FALSE)
if(visualsOnly)
return
var/list/no_drops = list()
if(has_card)
var/obj/item/card/id/idcard = human_to_equip.wear_id
no_drops += idcard
idcard.registered_name = human_to_equip.real_name
idcard.update_label()
idcard.update_icon()
// Make clothing in the specified slots NODROP
for(var/slot in nodrop_slots)
no_drops += human_to_equip.get_item_by_slot(slot)
// Make items in the hands NODROP
for(var/obj/item/held_item in human_to_equip.held_items)
no_drops += held_item
list_clear_nulls(no_drops) // For any slots we didn't have filled
// Apply TRAIT_NODROP to everything
for(var/obj/item/item_to_nodrop as anything in no_drops)
ADD_TRAIT(item_to_nodrop, TRAIT_NODROP, CAPTURE_THE_FLAG_TRAIT)
if(has_radio)
var/obj/item/radio/headset = human_to_equip.ears
headset.set_frequency(team_radio_freq)
headset.freqlock = RADIO_FREQENCY_LOCKED
headset.independent = TRUE
human_to_equip.dna.species.stunmod = 0
/datum/outfit/ctf/instagib
name = "CTF Instagib (Solo)"
l_hand = /obj/item/gun/energy/laser/instakill/ctf
shoes = /obj/item/clothing/shoes/jackboots/fast
icon_state = "ctf_instakill"
class_description = "General purpose combat class. Armed with a laser rifle and backup pistol."
/datum/outfit/ctf/assault
name = "CTF Assaulter (Solo)"
suit = /obj/item/clothing/suit/armor/vest/ctf/light
l_hand = /obj/item/gun/ballistic/shotgun/ctf
gloves = /obj/item/clothing/gloves/tackler/rocket
l_pocket = /obj/item/ammo_box/magazine/recharge/ctf/shotgun
r_pocket = /obj/item/ammo_box/magazine/recharge/ctf/shotgun
belt = null
icon_state = "ctf_assaulter"
class_description = "Close combat class. Armed with a shotgun and rocket gloves."
/datum/outfit/ctf/marksman
name = "CTF Marksman (Solo)"
l_hand = /obj/item/gun/ballistic/automatic/laser/ctf/marksman
l_pocket = /obj/item/ammo_box/magazine/recharge/ctf/marksman
r_pocket = /obj/item/ammo_box/magazine/recharge/ctf/marksman
belt = null
icon_state = "ctf_marksman"
class_description = "Long range class. Armed with a hitscan laser rifle."
// RED TEAM CLASSES
/datum/outfit/ctf/red
name = "CTF Rifleman (Red)"
suit = /obj/item/clothing/suit/armor/vest/ctf/red
l_hand = /obj/item/gun/ballistic/automatic/laser/ctf/red
l_pocket = /obj/item/ammo_box/magazine/recharge/ctf/rifle/red
r_pocket = /obj/item/ammo_box/magazine/recharge/ctf/rifle/red
id = /obj/item/card/id/red //it's red
team_radio_freq = FREQ_CTF_RED
/datum/outfit/ctf/red/instagib
name = "CTF Instagib (Red)"
l_hand = /obj/item/gun/energy/laser/instakill/ctf/red
shoes = /obj/item/clothing/shoes/jackboots/fast
team_radio_freq = FREQ_CTF_RED
/datum/outfit/ctf/assault/red
name = "CTF Assaulter (Red)"
suit = /obj/item/clothing/suit/armor/vest/ctf/light/red
l_hand = /obj/item/gun/ballistic/shotgun/ctf/red
l_pocket = /obj/item/ammo_box/magazine/recharge/ctf/shotgun/red
r_pocket = /obj/item/ammo_box/magazine/recharge/ctf/shotgun/red
id = /obj/item/card/id/red
team_radio_freq = FREQ_CTF_RED
/datum/outfit/ctf/marksman/red
name = "CTF Marksman (Red)"
suit = /obj/item/clothing/suit/armor/vest/ctf/red
l_hand = /obj/item/gun/ballistic/automatic/laser/ctf/marksman/red
l_pocket = /obj/item/ammo_box/magazine/recharge/ctf/marksman/red
r_pocket = /obj/item/ammo_box/magazine/recharge/ctf/marksman/red
id = /obj/item/card/id/red
team_radio_freq = FREQ_CTF_RED
// BLUE TEAM CLASSES
/datum/outfit/ctf/blue
name = "CTF Rifleman (Blue)"
suit = /obj/item/clothing/suit/armor/vest/ctf/blue
l_hand = /obj/item/gun/ballistic/automatic/laser/ctf/blue
l_pocket = /obj/item/ammo_box/magazine/recharge/ctf/rifle/blue
r_pocket = /obj/item/ammo_box/magazine/recharge/ctf/rifle/blue
id = /obj/item/card/id/blue //it's blue
team_radio_freq = FREQ_CTF_BLUE
/datum/outfit/ctf/blue/instagib
name = "CTF Instagib (Blue)"
l_hand = /obj/item/gun/energy/laser/instakill/ctf/blue
shoes = /obj/item/clothing/shoes/jackboots/fast
team_radio_freq = FREQ_CTF_BLUE
/datum/outfit/ctf/assault/blue
name = "CTF Assaulter (Blue)"
suit = /obj/item/clothing/suit/armor/vest/ctf/light/blue
l_hand = /obj/item/gun/ballistic/shotgun/ctf/blue
l_pocket = /obj/item/ammo_box/magazine/recharge/ctf/shotgun/blue
r_pocket = /obj/item/ammo_box/magazine/recharge/ctf/shotgun/blue
id = /obj/item/card/id/blue
team_radio_freq = FREQ_CTF_BLUE
/datum/outfit/ctf/marksman/blue
name = "CTF Marksman (Blue)"
suit = /obj/item/clothing/suit/armor/vest/ctf/blue
l_hand = /obj/item/gun/ballistic/automatic/laser/ctf/marksman/blue
l_pocket = /obj/item/ammo_box/magazine/recharge/ctf/marksman/blue
r_pocket = /obj/item/ammo_box/magazine/recharge/ctf/marksman/blue
id = /obj/item/card/id/blue
team_radio_freq = FREQ_CTF_BLUE
// GREEN TEAM CLASSES
/datum/outfit/ctf/green
name = "CTF Rifleman (Green)"
suit = /obj/item/clothing/suit/armor/vest/ctf/green
l_hand = /obj/item/gun/ballistic/automatic/laser/ctf/green
l_pocket = /obj/item/ammo_box/magazine/recharge/ctf/rifle/green
r_pocket = /obj/item/ammo_box/magazine/recharge/ctf/rifle/green
id = /obj/item/card/id/green //it's green
team_radio_freq = FREQ_CTF_GREEN
/datum/outfit/ctf/green/instagib
name = "CTF Instagib (Green)"
l_hand = /obj/item/gun/energy/laser/instakill/ctf/green
shoes = /obj/item/clothing/shoes/jackboots/fast
team_radio_freq = FREQ_CTF_GREEN
/datum/outfit/ctf/assault/green
name = "CTF Assaulter (Green)"
suit = /obj/item/clothing/suit/armor/vest/ctf/light/green
l_hand = /obj/item/gun/ballistic/shotgun/ctf/green
l_pocket = /obj/item/ammo_box/magazine/recharge/ctf/shotgun/green
r_pocket = /obj/item/ammo_box/magazine/recharge/ctf/shotgun/green
id = /obj/item/card/id/green
team_radio_freq = FREQ_CTF_GREEN
/datum/outfit/ctf/marksman/green
name = "CTF Marksman (Green)"
suit = /obj/item/clothing/suit/armor/vest/ctf/green
l_hand = /obj/item/gun/ballistic/automatic/laser/ctf/marksman/green
l_pocket = /obj/item/ammo_box/magazine/recharge/ctf/marksman/green
r_pocket = /obj/item/ammo_box/magazine/recharge/ctf/marksman/green
id = /obj/item/card/id/green
team_radio_freq = FREQ_CTF_GREEN
// YELLOW TEAM CLASSES
/datum/outfit/ctf/yellow
name = "CTF Rifleman (Yellow)"
suit = /obj/item/clothing/suit/armor/vest/ctf/yellow
l_hand = /obj/item/gun/ballistic/automatic/laser/ctf/yellow
l_pocket = /obj/item/ammo_box/magazine/recharge/ctf/rifle/yellow
r_pocket = /obj/item/ammo_box/magazine/recharge/ctf/rifle/yellow
id = /obj/item/card/id/yellow //it's yellow
team_radio_freq = FREQ_CTF_YELLOW
/datum/outfit/ctf/yellow/instagib
name = "CTF Instagib (Yellow)"
l_hand = /obj/item/gun/energy/laser/instakill/ctf/yellow
shoes = /obj/item/clothing/shoes/jackboots/fast
team_radio_freq = FREQ_CTF_YELLOW
/datum/outfit/ctf/assault/yellow
name = "CTF Assaulter (Yellow)"
suit = /obj/item/clothing/suit/armor/vest/ctf/light/yellow
l_hand = /obj/item/gun/ballistic/shotgun/ctf/yellow
l_pocket = /obj/item/ammo_box/magazine/recharge/ctf/shotgun/yellow
r_pocket = /obj/item/ammo_box/magazine/recharge/ctf/shotgun/yellow
id = /obj/item/card/id/yellow
team_radio_freq = FREQ_CTF_YELLOW
/datum/outfit/ctf/marksman/yellow
name = "CTF Marksman (Yellow)"
suit = /obj/item/clothing/suit/armor/vest/ctf/yellow
l_hand = /obj/item/gun/ballistic/automatic/laser/ctf/marksman/yellow
l_pocket = /obj/item/ammo_box/magazine/recharge/ctf/marksman/yellow
r_pocket = /obj/item/ammo_box/magazine/recharge/ctf/marksman/yellow
id = /obj/item/card/id/yellow
team_radio_freq = FREQ_CTF_YELLOW