merge conflicts
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
//3-Way Manifold
|
||||
/obj/machinery/atmospherics/pipe/heat_exchanging/manifold
|
||||
icon = 'icons/obj/atmospherics/pipes/he-manifold.dmi'
|
||||
icon_state = "manifold-2"
|
||||
|
||||
name = "pipe manifold"
|
||||
@@ -15,7 +16,7 @@
|
||||
|
||||
var/mutable_appearance/center
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold/Initialize()
|
||||
/obj/machinery/atmospherics/pipe/heat_exchanging/manifold/Initialize()
|
||||
icon_state = ""
|
||||
center = mutable_appearance(icon, "manifold_center")
|
||||
return ..()
|
||||
|
||||
@@ -264,6 +264,8 @@
|
||||
M.key = new_team_member.key
|
||||
M.faction += team
|
||||
M.equipOutfit(ctf_gear)
|
||||
M.dna.species.punchdamagehigh = 25
|
||||
M.dna.species.punchdamagelow = 25
|
||||
spawned_mobs += M
|
||||
|
||||
/obj/machinery/capture_the_flag/Topic(href, href_list)
|
||||
@@ -368,6 +370,10 @@
|
||||
CTF.ctf_gear = initial(ctf_gear)
|
||||
CTF.respawn_cooldown = DEFAULT_RESPAWN
|
||||
|
||||
/proc/ctf_floor_vanish(atom/target)
|
||||
if(isturf(target.loc))
|
||||
qdel(target)
|
||||
|
||||
/obj/item/gun/ballistic/automatic/pistol/deagle/ctf
|
||||
desc = "This looks like it could really hurt in melee."
|
||||
force = 75
|
||||
@@ -375,11 +381,7 @@
|
||||
|
||||
/obj/item/gun/ballistic/automatic/pistol/deagle/ctf/dropped()
|
||||
. = ..()
|
||||
addtimer(CALLBACK(src, .proc/floor_vanish), 1)
|
||||
|
||||
/obj/item/gun/ballistic/automatic/pistol/deagle/ctf/proc/floor_vanish()
|
||||
if(isturf(loc))
|
||||
qdel(src)
|
||||
addtimer(CALLBACK(GLOBAL_PROC, /proc/ctf_floor_vanish, src), 1)
|
||||
|
||||
/obj/item/ammo_box/magazine/m50/ctf
|
||||
ammo_type = /obj/item/ammo_casing/a50/ctf
|
||||
@@ -402,22 +404,14 @@
|
||||
|
||||
/obj/item/gun/ballistic/automatic/laser/ctf/dropped()
|
||||
. = ..()
|
||||
addtimer(CALLBACK(src, .proc/floor_vanish), 1)
|
||||
|
||||
/obj/item/gun/ballistic/automatic/laser/ctf/proc/floor_vanish()
|
||||
if(isturf(loc))
|
||||
qdel(src)
|
||||
addtimer(CALLBACK(GLOBAL_PROC, /proc/ctf_floor_vanish, src), 1)
|
||||
|
||||
/obj/item/ammo_box/magazine/recharge/ctf
|
||||
ammo_type = /obj/item/ammo_casing/caseless/laser/ctf
|
||||
|
||||
/obj/item/ammo_box/magazine/recharge/ctf/dropped()
|
||||
. = ..()
|
||||
addtimer(CALLBACK(src, .proc/floor_vanish), 1)
|
||||
|
||||
/obj/item/ammo_box/magazine/recharge/ctf/proc/floor_vanish()
|
||||
if(isturf(loc))
|
||||
qdel(src)
|
||||
addtimer(CALLBACK(GLOBAL_PROC, /proc/ctf_floor_vanish, src), 1)
|
||||
|
||||
/obj/item/ammo_casing/caseless/laser/ctf
|
||||
projectile_type = /obj/item/projectile/beam/ctf
|
||||
@@ -470,6 +464,19 @@
|
||||
icon_state = "bluelaser"
|
||||
impact_effect_type = /obj/effect/temp_visual/impact_effect/blue_laser
|
||||
|
||||
// MELEE GANG
|
||||
/obj/item/claymore/ctf
|
||||
slot_flags = SLOT_BACK
|
||||
|
||||
/obj/item/claymore/ctf/pre_attack(atom/target, mob/user, params)
|
||||
if(!is_ctf_target(target))
|
||||
return FALSE
|
||||
return ..()
|
||||
|
||||
/obj/item/claymore/ctf/dropped()
|
||||
. = ..()
|
||||
addtimer(CALLBACK(GLOBAL_PROC, /proc/ctf_floor_vanish, src), 1)
|
||||
|
||||
/datum/outfit/ctf
|
||||
name = "CTF"
|
||||
ears = /obj/item/radio/headset
|
||||
@@ -483,6 +490,7 @@
|
||||
l_pocket = /obj/item/ammo_box/magazine/recharge/ctf
|
||||
r_pocket = /obj/item/ammo_box/magazine/recharge/ctf
|
||||
r_hand = /obj/item/gun/ballistic/automatic/laser/ctf
|
||||
back = /obj/item/claymore/ctf
|
||||
|
||||
/datum/outfit/ctf/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE, client/preference_source)
|
||||
if(visualsOnly)
|
||||
|
||||
@@ -229,12 +229,12 @@
|
||||
/datum/export/gear/magboots
|
||||
cost = 50
|
||||
unit_name = "magboots"
|
||||
export_types = list(/obj/item/clothing/shoes/magboots, /obj/item/clothing/shoes/magboots/atmos)
|
||||
export_types = list(/obj/item/clothing/shoes/magboots)
|
||||
|
||||
/datum/export/gear/nosellboots
|
||||
cost = -5000 //We DONT want scew antags
|
||||
unit_name = "error shipment stolen"
|
||||
export_types = list(/obj/item/clothing/shoes/magboots/advance, /obj/item/clothing/shoes/magboots/deathsquad)
|
||||
export_types = list(/obj/item/clothing/shoes/magboots/advance)
|
||||
|
||||
/datum/export/gear/syndamagboots
|
||||
cost = 250
|
||||
@@ -279,7 +279,7 @@
|
||||
/datum/export/gear/magicboots //Magic as in Antag - Wiz/Cults
|
||||
cost = 450
|
||||
unit_name = "magic shoes"
|
||||
export_types = list(/obj/item/clothing/shoes/sandal/marisa, /obj/item/clothing/shoes/sandal/magic, /obj/item/clothing/shoes/cult, /obj/item/clothing/shoes/clockwork, /obj/item/clothing/shoes/clown_shoes/taeclowndo, /obj/item/clothing/shoes/sandal/slippers)
|
||||
export_types = list(/obj/item/clothing/shoes/sandal/marisa, /obj/item/clothing/shoes/sandal/magic, /obj/item/clothing/shoes/cult, /obj/item/clothing/shoes/clockwork, /obj/item/clothing/shoes/clown_shoes/taeclowndo)
|
||||
include_subtypes = TRUE
|
||||
|
||||
//Headsets/Ears
|
||||
@@ -585,8 +585,7 @@ datum/export/gear/glasses //glasses are not worth selling
|
||||
export_types = list(/obj/item/clothing/under/scratch, /obj/item/clothing/under/sl_suit, /obj/item/clothing/under/rank/vice, /obj/item/clothing/under/suit_jacket, \
|
||||
/obj/item/clothing/under/burial, /obj/item/clothing/under/skirt/black, /obj/item/clothing/under/captainparade, /obj/item/clothing/under/hosparademale, \
|
||||
/obj/item/clothing/under/hosparadefem, /obj/item/clothing/under/assistantformal, /obj/item/clothing/under/stripeddress, /obj/item/clothing/under/redeveninggown, \
|
||||
/obj/item/clothing/under/plaid_skirt, /obj/item/clothing/under/geisha, /obj/item/clothing/under/trek, /obj/item/clothing/under/wedding, /obj/item/clothing/under/aviatoruniform,\
|
||||
/obj/item/clothing/under/mega, /obj/item/clothing/under/cia, /obj/item/clothing/under/casualwear, /obj/item/clothing/under/rank)
|
||||
/obj/item/clothing/under/plaid_skirt, /obj/item/clothing/under/geisha, /obj/item/clothing/under/trek, /obj/item/clothing/under/rank)
|
||||
include_subtypes = TRUE
|
||||
|
||||
/datum/export/gear/armored_jumpsuit
|
||||
|
||||
@@ -204,6 +204,35 @@
|
||||
for(var/i in 1 to 9)
|
||||
new /obj/item/coin/silver(.)
|
||||
|
||||
/datum/supply_pack/misc/dueling_stam
|
||||
name = "Dueling Pistols"
|
||||
desc = "Resolve all your quarrels with some nonlethal fun."
|
||||
cost = 2000
|
||||
contains = list(/obj/item/storage/lockbox/dueling/hugbox/stamina,
|
||||
/obj/item/storage/lockbox/dueling/hugbox/stamina,
|
||||
/obj/item/storage/lockbox/dueling/hugbox/stamina,
|
||||
/obj/item/storage/lockbox/dueling/hugbox/stamina,
|
||||
/obj/item/storage/lockbox/dueling/hugbox/stamina)
|
||||
crate_name = "dueling pistols"
|
||||
|
||||
/datum/supply_pack/misc/dueling_lethal
|
||||
name = "Lethal Dueling Pistols"
|
||||
desc = "Settle your differences the true spaceman way."
|
||||
cost = 3000
|
||||
contraband = TRUE
|
||||
contains = list(/obj/item/storage/lockbox/dueling/hugbox,
|
||||
/obj/item/storage/lockbox/dueling/hugbox,
|
||||
/obj/item/storage/lockbox/dueling/hugbox)
|
||||
crate_name = "dueling pistols (lethal)"
|
||||
|
||||
/datum/supply_pack/misc/dueling_death
|
||||
name = "Elimination Dueling Pistols"
|
||||
desc = "It's high noon."
|
||||
cost = 5000
|
||||
hidden = TRUE
|
||||
contains = list(/obj/item/storage/lockbox/dueling)
|
||||
crate_name = "dueling pistols (elimination)"
|
||||
|
||||
/datum/supply_pack/misc/dirtymags
|
||||
name = "Dirty Magazines"
|
||||
desc = "Get your mind out of the gutter operative, you have work to do. Three items per order. Possible Results: .357 Speedloaders, Kitchen Gun Mags, Stetchkin Mags."
|
||||
|
||||
@@ -448,7 +448,8 @@ GLOBAL_LIST_EMPTY(asset_datums)
|
||||
"scanner" = 'icons/pda_icons/pda_scanner.png',
|
||||
"signaler" = 'icons/pda_icons/pda_signaler.png',
|
||||
"status" = 'icons/pda_icons/pda_status.png',
|
||||
"dronephone" = 'icons/pda_icons/pda_dronephone.png'
|
||||
"dronephone" = 'icons/pda_icons/pda_dronephone.png',
|
||||
"emoji" = 'icons/pda_icons/pda_emoji.png'
|
||||
)
|
||||
|
||||
/datum/asset/spritesheet/simple/paper
|
||||
|
||||
@@ -14,9 +14,9 @@
|
||||
/client/verb/display_ping(time as num)
|
||||
set instant = TRUE
|
||||
set name = ".display_ping"
|
||||
to_chat(src, "<span class='notice'>Round trip ping took [round(pingfromtime(time),1)]ms</span>")
|
||||
to_chat(src, "<span class='notice'>Round trip ping took [round(pingfromtime(time),1)]ms (Avg: [round(avgping, 1)]ms])</span>")
|
||||
|
||||
/client/verb/ping()
|
||||
set name = "Ping"
|
||||
set category = "OOC"
|
||||
winset(src, null, "command=.display_ping+[world.time+world.tick_lag*TICK_USAGE_REAL/100]")
|
||||
winset(src, null, "command=.display_ping+[world.time+world.tick_lag*TICK_USAGE_REAL/100]")
|
||||
|
||||
@@ -1,41 +0,0 @@
|
||||
|
||||
//VG rip
|
||||
|
||||
/obj/item/clothing/glasses/sunglasses/purple
|
||||
desc = "Strangely ancient technology used to help provide rudimentary eye cover. Enhanced shielding blocks many flashes, and the colored lenses let you see the world in purple."
|
||||
name = "purple sunglasses"
|
||||
icon_state = "sun_purple"
|
||||
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
|
||||
|
||||
/obj/item/clothing/glasses/sunglasses/star
|
||||
name = "star-shaped sunglasses"
|
||||
desc = "Novelty sunglasses, both lenses are in the shape of a star."
|
||||
icon_state = "sun_star"
|
||||
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
|
||||
|
||||
/obj/item/clothing/glasses/sunglasses/rockstar
|
||||
name = "red star-shaped sunglasses"
|
||||
desc = "Novelty sunglasses with a fancy silver frame and two red-tinted star-shaped lenses. You should probably stomp on them and get a pair of normal ones."
|
||||
icon_state = "sun_star_silver"
|
||||
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
|
||||
|
||||
/obj/item/clothing/glasses/gglasses
|
||||
name = "Green Glasses"
|
||||
desc = "Forest green glasses, like the kind you'd wear when hatching a nasty scheme."
|
||||
icon_state = "gglasses"
|
||||
item_state = "gglasses"
|
||||
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
|
||||
|
||||
/obj/item/clothing/glasses/welding/superior
|
||||
name = "superior welding goggles"
|
||||
desc = "Welding goggles made from more expensive materials, strangely smells like potatoes. Allows for better vision than normal goggles.."
|
||||
icon_state = "rwelding-g"
|
||||
item_state = "rwelding-g"
|
||||
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
|
||||
actions_types = list(/datum/action/item_action/toggle)
|
||||
flash_protect = 2
|
||||
tint = 1
|
||||
visor_vars_to_toggle = VISOR_FLASHPROTECT | VISOR_TINT
|
||||
flags_cover = GLASSESCOVERSEYES
|
||||
visor_flags_inv = HIDEEYES
|
||||
glass_colour_type = /datum/client_colour/glass_colour/green
|
||||
@@ -1,70 +0,0 @@
|
||||
|
||||
/obj/item/clothing/gloves/batmangloves
|
||||
desc = "Used for handling all things bat related."
|
||||
name = "batgloves"
|
||||
icon_state = "bmgloves"
|
||||
item_state = "bmgloves"
|
||||
item_color = "bmgloves"
|
||||
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
|
||||
|
||||
obj/item/clothing/gloves/bikergloves
|
||||
name = "Biker's Gloves"
|
||||
icon_state = "biker-gloves"
|
||||
item_state = "biker-gloves"
|
||||
item_color = "bikergloves"
|
||||
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
|
||||
|
||||
/obj/item/clothing/gloves/megagloves
|
||||
desc = "Uncomfortably bulky armored gloves."
|
||||
name = "DRN-001 Gloves"
|
||||
icon_state = "megagloves"
|
||||
item_state = "megagloves"
|
||||
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
|
||||
|
||||
/obj/item/clothing/gloves/protogloves
|
||||
desc = "Funcionally identical to the DRN-001 model's, but in red!"
|
||||
name = "Prototype Gloves"
|
||||
icon_state = "protogloves"
|
||||
item_state = "protogloves"
|
||||
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
|
||||
|
||||
/obj/item/clothing/gloves/megaxgloves
|
||||
desc = "An upgrade to the DRN-001's gauntlets, retains the uncomfortable armor, but comes with white gloves!"
|
||||
name = "Maverick Hunter gloves"
|
||||
icon_state = "megaxgloves"
|
||||
item_state = "megaxgloves"
|
||||
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
|
||||
|
||||
/obj/item/clothing/gloves/joegloves
|
||||
desc = "Large grey gloves, very similar to the Prototype's."
|
||||
name = "Sniper Gloves"
|
||||
icon_state = "joegloves"
|
||||
item_state = "joegloves"
|
||||
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
|
||||
|
||||
/obj/item/clothing/gloves/doomguy
|
||||
desc = ""
|
||||
name = "Doomguy's gloves"
|
||||
icon_state = "doom"
|
||||
item_state = "doom"
|
||||
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
|
||||
|
||||
/obj/item/clothing/gloves/anchor_arms
|
||||
name = "Anchor Arms"
|
||||
desc = "When you're a jerk, everybody loves you."
|
||||
icon_state = "anchorarms"
|
||||
item_state = "anchorarms"
|
||||
|
||||
/obj/item/clothing/gloves/neorussian
|
||||
name = "neo-Russian gloves"
|
||||
desc = "Utilizes a non-slip technology that allows you to never drop your precious bottles of vodka."
|
||||
icon_state = "nr_gloves"
|
||||
item_state = "nr_gloves"
|
||||
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
|
||||
|
||||
/obj/item/clothing/gloves/neorussian/fingerless
|
||||
name = "neo-Russian fingerless gloves"
|
||||
desc = "For these tense combat situations when you just have to pick your nose."
|
||||
icon_state = "nr_fgloves"
|
||||
item_state = "nr_fgloves"
|
||||
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
|
||||
@@ -423,3 +423,15 @@
|
||||
desc = "A security cowboy hat, perfect for any true lawman"
|
||||
icon_state = "cowboyhat_sec"
|
||||
item_state= "cowboyhat_sec"
|
||||
|
||||
/obj/item/clothing/head/squatter_hat
|
||||
name = "slav squatter hat"
|
||||
icon_state = "squatter_hat"
|
||||
item_state = "squatter_hat"
|
||||
desc = "Cyka blyat."
|
||||
|
||||
/obj/item/clothing/head/russobluecamohat
|
||||
name = "russian blue camo beret"
|
||||
desc = "A symbol of discipline, honor, and lots and lots of removal of some type of skewered food."
|
||||
icon_state = "russobluecamohat"
|
||||
item_state = "russobluecamohat"
|
||||
|
||||
@@ -1,155 +0,0 @@
|
||||
/obj/item/clothing/head/helmet/dredd
|
||||
name = "Judge Helmet"
|
||||
desc = "Judge, Jury, and Executioner."
|
||||
icon_state = "dredd-helmet"
|
||||
item_state = "dredd-helmet"
|
||||
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
|
||||
armor = list(melee = 40, bullet = 30, laser = 30,energy = 30, bomb = 50, bio = 90, rad = 20, fire = 50, acid = 50)
|
||||
cold_protection = HEAD
|
||||
min_cold_protection_temperature = SPACE_HELM_MIN_TEMP_PROTECT
|
||||
heat_protection = HEAD
|
||||
max_heat_protection_temperature = SPACE_HELM_MAX_TEMP_PROTECT
|
||||
strip_delay = 80
|
||||
dog_fashion = null
|
||||
|
||||
/obj/item/clothing/head/helmet/aviatorhelmet
|
||||
name = "Aviator Helmet"
|
||||
desc = "Help the Bombardier!"
|
||||
armor = list(melee = 25, bullet = 0, laser = 20, energy = 10, bomb = 10, bio = 0, rad = 0)
|
||||
item_state = "aviator_helmet"
|
||||
icon_state = "aviator_helmet"
|
||||
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
|
||||
|
||||
/obj/item/clothing/head/helmet/biker
|
||||
name = "Biker's Helmet"
|
||||
desc = "This helmet should protect you from russians and masked vigilantes."
|
||||
armor = list(melee = 25, bullet = 15, laser = 20, energy = 10, bomb = 10, bio = 0, rad = 0)
|
||||
icon_state = "biker_helmet"
|
||||
flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE|HIDEHAIR
|
||||
|
||||
/obj/item/clothing/head/helmet/richard
|
||||
name = "Richard"
|
||||
desc = "Do you like hurting people?"
|
||||
armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0)
|
||||
icon_state = "richard"
|
||||
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
|
||||
flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE|HIDEHAIR
|
||||
|
||||
/obj/item/clothing/head/helmet/megahelmet
|
||||
name = "DRN-001 Helmet"
|
||||
desc = "The helmet of the DRN-001 model. A simple, sturdy blue helmet."
|
||||
icon_state = "megahelmet"
|
||||
item_state = "megahelmet"
|
||||
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
|
||||
siemens_coefficient = 1
|
||||
|
||||
/obj/item/clothing/head/helmet/protohelmet
|
||||
name = "Prototype Helmet"
|
||||
desc = "Shiny red helmet with white accents and a built in shaded visor that does absolutely nothing, nothing but look rad as hell."
|
||||
icon_state = "protohelmet"
|
||||
item_state = "protohelmet"
|
||||
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
|
||||
siemens_coefficient = 1
|
||||
|
||||
/obj/item/clothing/head/helmet/megaxhelmet
|
||||
name = "Maverick Hunter Helmet"
|
||||
desc = "Heavily armored upgrade to the DRN-001 model's helmet, now comes with a pointless red crystal thing!"
|
||||
icon_state = "megaxhelmet"
|
||||
item_state = "megaxhelmet"
|
||||
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
|
||||
|
||||
/obj/item/clothing/head/helmet/joehelmet
|
||||
name = "Sniper Helmet"
|
||||
desc = "Helmet belonging to one of the many mass produced 'Joe' type robots."
|
||||
icon_state = "joehelmet"
|
||||
flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE|HIDEHAIR
|
||||
item_state = "joehelmet"
|
||||
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
|
||||
|
||||
/obj/item/clothing/head/helmet/doomguy
|
||||
name = "Doomguy's helmet"
|
||||
desc = ""
|
||||
icon_state = "doom"
|
||||
flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE|HIDEHAIR
|
||||
item_state = "doom"
|
||||
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
|
||||
armor = list(melee = 50, bullet = 40, laser = 40,energy = 40, bomb = 5, bio = 0, rad = 0)
|
||||
|
||||
/obj/item/clothing/head/helmet/neorussian
|
||||
name = "neo-Russian helmet"
|
||||
desc = "This piece of equipment can double as a pillow, a bowl, an emergency toilet, and sometimes as a helmet."
|
||||
icon_state = "nr_helmet"
|
||||
item_state = "nr_helmet"
|
||||
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
|
||||
|
||||
/obj/item/clothing/head/panzer
|
||||
name = "Panzer Cap"
|
||||
desc = "Command any mech in style."
|
||||
icon_state = "panzercap"
|
||||
item_state = "panzercap"
|
||||
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
|
||||
|
||||
/obj/item/clothing/head/russobluecamohat
|
||||
name = "russian blue camo beret"
|
||||
desc = "A symbol of discipline, honor, and lots and lots of removal of some type of skewered food."
|
||||
icon_state = "russobluecamohat"
|
||||
item_state = "russobluecamohat"
|
||||
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
|
||||
|
||||
/obj/item/clothing/head/russofurhat
|
||||
name = "russian fur hat"
|
||||
desc = "Russian winter got you down? Maybe your enemy, but not you!"
|
||||
icon_state = "russofurhat"
|
||||
item_state = "russofurhat"
|
||||
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
|
||||
|
||||
/obj/item/clothing/head/squatter_hat
|
||||
name = "slav squatter hat"
|
||||
icon_state = "squatter_hat"
|
||||
item_state = "squatter_hat"
|
||||
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
|
||||
desc = "Cyka blyat."
|
||||
|
||||
/obj/item/clothing/head/snake
|
||||
name = "snake head"
|
||||
desc = "Reenact acts of violence against reptiles, or sneak into a swamp unnoticed."
|
||||
icon_state = "snakehead"
|
||||
item_state = "snakehead"
|
||||
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
|
||||
/obj/item/clothing/head/mummy_rags
|
||||
name = "mummy rags"
|
||||
desc = "Ancient rags taken off from some mummy."
|
||||
icon_state = "mummy"
|
||||
item_state = "mummy"
|
||||
item_color = "mummy"
|
||||
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
|
||||
flags_inv = HIDEHAIR|HIDEFACE|HIDEEARS
|
||||
|
||||
/obj/item/clothing/head/clownpiece
|
||||
name = "Clownpiece's jester hat"
|
||||
desc = "A purple polka-dotted jester's hat with yellow pompons."
|
||||
icon_state = "clownpiece"
|
||||
item_state = "clownpiece"
|
||||
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
|
||||
|
||||
/obj/item/clothing/head/mitre
|
||||
name = "mitre"
|
||||
desc = "A funny hat worn by extremely boring people."
|
||||
icon_state = "mitre"
|
||||
item_state = "mitre"
|
||||
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
|
||||
|
||||
/obj/item/clothing/head/tinfoil
|
||||
name = "tinfoil hat"
|
||||
desc = "There's no evidence that the security staff is NOT out to get you."
|
||||
icon_state = "foilhat"
|
||||
item_state = "paper"
|
||||
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
|
||||
siemens_coefficient = 2
|
||||
|
||||
/obj/item/clothing/head/celtic
|
||||
name = "\improper Celtic crown"
|
||||
desc = "According to legend, Celtic kings would use crowns like this one to shield their subjects from harsh winters back on Earth."
|
||||
icon_state = "celtic_crown"
|
||||
item_state = "celtic_crown"
|
||||
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
|
||||
@@ -1,17 +0,0 @@
|
||||
/obj/item/clothing/mask/gas/clown_hat/wiz
|
||||
name = "purple clown wig and mask"
|
||||
desc = "Some pranksters are truly magical."
|
||||
icon_state = "wizzclown"
|
||||
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
|
||||
|
||||
/obj/item/clothing/mask/chapmask
|
||||
name = "venetian mask"
|
||||
desc = "A plain porcelain mask that covers the entire face. Standard attire for particularly unspeakable religions. The eyes are wide shut."
|
||||
icon_state = "chapmask"
|
||||
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
|
||||
|
||||
/obj/item/clothing/mask/neorussian
|
||||
name = "neo-Russian mask"
|
||||
desc = "Somehow, it makes you act and look way more polite than usual."
|
||||
icon_state = "nr_mask"
|
||||
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
|
||||
@@ -1,124 +0,0 @@
|
||||
|
||||
/obj/item/clothing/shoes/leather
|
||||
name = "leather shoes"
|
||||
desc = "A sturdy pair of leather shoes."
|
||||
icon_state = "leather"
|
||||
item_color = "leather"
|
||||
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
|
||||
mutantrace_variation = NONE
|
||||
|
||||
/obj/item/clothing/shoes/magboots/deathsquad
|
||||
desc = "Very expensive and advanced magnetic boots, used only by the elite during extravehicular activity to ensure the user remains safely attached to the vehicle."
|
||||
name = "deathsquad magboots"
|
||||
icon_state = "DS-magboots0"
|
||||
magboot_state = "DS-magboots"
|
||||
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
|
||||
resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | ACID_PROOF
|
||||
mutantrace_variation = NONE
|
||||
|
||||
/obj/item/clothing/shoes/magboots/atmos
|
||||
desc = "Magnetic boots, often used during extravehicular activity to ensure the user remains safely attached to the vehicle. These are painted in the colors of an atmospheric technician."
|
||||
name = "atmospherics magboots"
|
||||
icon_state = "atmosmagboots0"
|
||||
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
|
||||
magboot_state = "atmosmagboots"
|
||||
resistance_flags = FIRE_PROOF
|
||||
mutantrace_variation = NONE
|
||||
|
||||
/obj/item/clothing/shoes/simonshoes
|
||||
name = "Simon's Shoes"
|
||||
desc = "Simon's Shoes."
|
||||
icon_state = "simonshoes"
|
||||
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
|
||||
mutantrace_variation = NONE
|
||||
|
||||
/obj/item/clothing/shoes/kneesocks
|
||||
name = "kneesocks"
|
||||
desc = "A pair of girly knee-high socks."
|
||||
icon_state = "kneesock"
|
||||
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
|
||||
mutantrace_variation = NONE
|
||||
|
||||
/obj/item/clothing/shoes/jestershoes
|
||||
name = "Jester Shoes"
|
||||
desc = "As worn by the clowns of old."
|
||||
icon_state = "jestershoes"
|
||||
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
|
||||
mutantrace_variation = NONE
|
||||
|
||||
/obj/item/clothing/shoes/aviatorboots
|
||||
name = "Aviator Boots"
|
||||
desc = "Boots suitable for just about any occasion."
|
||||
icon_state = "aviator_boots"
|
||||
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
|
||||
mutantrace_variation = NONE
|
||||
|
||||
/obj/item/clothing/shoes/libertyshoes
|
||||
name = "Liberty Shoes"
|
||||
desc = "Freedom isn't free, neither were these shoes."
|
||||
icon_state = "libertyshoes"
|
||||
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
|
||||
mutantrace_variation = NONE
|
||||
|
||||
/obj/item/clothing/shoes/megaboots
|
||||
name = "DRN-001 Boots"
|
||||
desc = "Large armored boots, very weak to large spikes."
|
||||
icon_state = "megaboots"
|
||||
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
|
||||
mutantrace_variation = NONE
|
||||
|
||||
/obj/item/clothing/shoes/protoboots
|
||||
name = "Prototype Boots"
|
||||
desc = "Functionally identical to the DRN-001 model's boots, but in red."
|
||||
icon_state = "protoboots"
|
||||
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
|
||||
mutantrace_variation = NONE
|
||||
|
||||
/obj/item/clothing/shoes/megaxboots
|
||||
name = "Maverick Hunter boots"
|
||||
desc = "Regardless of how much stronger these boots are than the DRN-001 model's, they're still extremely easy to pierce with a large spike."
|
||||
icon_state = "megaxboots"
|
||||
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
|
||||
mutantrace_variation = NONE
|
||||
|
||||
/obj/item/clothing/shoes/joeboots
|
||||
name = "Sniper Boots"
|
||||
desc = "Nearly identical to the Prototype's boots, except in black."
|
||||
icon_state = "joeboots"
|
||||
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
|
||||
mutantrace_variation = NONE
|
||||
|
||||
/obj/item/clothing/shoes/doomguy
|
||||
name = "Doomguy's boots"
|
||||
desc = "If you look closely, you might see skull fragments still buried in these boots."
|
||||
icon_state = "doom"
|
||||
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
|
||||
mutantrace_variation = NONE
|
||||
|
||||
/obj/item/clothing/shoes/rottenshoes
|
||||
name = "rotten shoes"
|
||||
desc = "These shoes seem perfect for sneaking around."
|
||||
icon_state = "rottenshoes"
|
||||
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
|
||||
mutantrace_variation = NONE
|
||||
|
||||
/obj/item/clothing/shoes/sandal/slippers
|
||||
name = "magic slippers"
|
||||
icon_state = "slippers"
|
||||
desc = "For the wizard that puts comfort first. Who's going to laugh?"
|
||||
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
|
||||
mutantrace_variation = NONE
|
||||
|
||||
/obj/item/clothing/shoes/slippers_worn
|
||||
name = "worn bunny slippers"
|
||||
desc = "Fluffy..."
|
||||
icon_state = "slippers_worn"
|
||||
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
|
||||
mutantrace_variation = NONE
|
||||
|
||||
/obj/item/clothing/shoes/jackboots/neorussian
|
||||
name = "neo-Russian boots"
|
||||
desc = "Tovarish, no one will realize you stepped on a pile of shit if your pair already looks like shit."
|
||||
icon_state = "nr_boots"
|
||||
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
|
||||
mutantrace_variation = NONE
|
||||
@@ -693,6 +693,29 @@
|
||||
listeningTo = null
|
||||
return ..()
|
||||
|
||||
/obj/item/clothing/head/helmet/space/hardsuit/soviet
|
||||
name = "soviet hardhelmet"
|
||||
desc = "Crafted with the pride of the proletariat. The vengeful gaze of the visor roots out all fascists and capitalists."
|
||||
item_state = "rig0-soviet"
|
||||
item_color = "soviet"
|
||||
icon_state = "rig0-soviet"
|
||||
armor = list("melee" = 40, "bullet" = 30, "laser" = 30, "energy" = 15, "bomb" = 35, "bio" = 100, "rad" = 20, "fire" = 50, "acid" = 75)
|
||||
mutantrace_variation = NONE
|
||||
|
||||
/obj/item/clothing/suit/space/hardsuit/soviet
|
||||
name = "soviet hardsuit"
|
||||
desc = "Crafted with the pride of the proletariat. The last thing the enemy sees is the bottom of this armor's boot."
|
||||
item_state = "rig-soviet"
|
||||
icon_state = "rig-soviet"
|
||||
slowdown = 0.8
|
||||
armor = list("melee" = 40, "bullet" = 30, "laser" = 30, "energy" = 15, "bomb" = 35, "bio" = 100, "rad" = 20, "fire" = 50, "acid" = 75)
|
||||
helmettype = /obj/item/clothing/head/helmet/space/hardsuit/soviet
|
||||
mutantrace_variation = NONE
|
||||
|
||||
/obj/item/clothing/suit/space/hardsuit/soviet/Initialize()
|
||||
. = ..()
|
||||
allowed = GLOB.security_hardsuit_allowed
|
||||
|
||||
/////////////SHIELDED//////////////////////////////////
|
||||
|
||||
/obj/item/clothing/suit/space/hardsuit/shielded
|
||||
|
||||
@@ -1,120 +0,0 @@
|
||||
|
||||
//VG Ports
|
||||
|
||||
/obj/item/clothing/head/helmet/space/hardsuit/soviet
|
||||
name = "soviet hardhelmet"
|
||||
desc = "Crafted with the pride of the proletariat. The vengeful gaze of the visor roots out all fascists and capitalists."
|
||||
item_state = "hardsuit0-soviet"
|
||||
icon_state = "hardsuit0-soviet"
|
||||
armor = list(melee = 40, bullet = 30, laser = 30, energy = 15, bomb = 35, bio = 100, rad = 20)
|
||||
item_color = "soviet"
|
||||
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
|
||||
|
||||
/obj/item/clothing/suit/space/hardsuit/soviet
|
||||
name = "soviet hardsuit"
|
||||
desc = "Crafted with the pride of the proletariat. The last thing the enemy sees is the bottom of this armor's boot."
|
||||
item_state = "hardsuit-soviet"
|
||||
icon_state = "hardsuit-soviet"
|
||||
slowdown = 1
|
||||
armor = list(melee = 40, bullet = 30, laser = 30, energy = 15, bomb = 35, bio = 100, rad = 20)
|
||||
allowed = list(/obj/item/gun,/obj/item/flashlight,/obj/item/tank,/obj/item/melee/)
|
||||
helmettype = /obj/item/clothing/head/helmet/space/hardsuit/soviet
|
||||
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
|
||||
|
||||
/obj/item/clothing/head/helmet/space/hardsuit/knight
|
||||
name = "Space-Knight helm"
|
||||
desc = "A well polished helmet belonging to a Space-Knight. Favored by space-jousters for its ability to stay on tight after being launched from a mass driver."
|
||||
icon_state = "hardsuit0-knight"
|
||||
item_state = "hardsuit0-knight"
|
||||
armor = list(melee = 60, bullet = 40, laser = 40,energy = 30, bomb = 50, bio = 100, rad = 60)
|
||||
max_heat_protection_temperature = FIRE_IMMUNITY_MAX_TEMP_PROTECT
|
||||
item_color="knight"
|
||||
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
|
||||
|
||||
/obj/item/clothing/suit/space/hardsuit/knight
|
||||
name = "Space-Knight armour"
|
||||
desc = "A well polished set of armour belonging to a Space-Knight. Maidens Rescued in Space: 100, Maidens who have slept with me in Space: 0."
|
||||
icon_state = "hardsuit-knight"
|
||||
item_state = "hardsuit-knight"
|
||||
slowdown = 1
|
||||
allowed = list(/obj/item/gun,/obj/item/melee/baton,/obj/item/tank,/obj/item/shield/energy,/obj/item/claymore)
|
||||
armor = list(melee = 60, bullet = 40, laser = 40,energy = 30, bomb = 50, bio = 100, rad = 60)
|
||||
max_heat_protection_temperature = FIRE_IMMUNITY_MAX_TEMP_PROTECT
|
||||
siemens_coefficient = 0.5
|
||||
helmettype = /obj/item/clothing/head/helmet/space/hardsuit/knight
|
||||
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
|
||||
|
||||
/obj/item/clothing/head/helmet/space/hardsuit/knight/black
|
||||
name = "Black Knight's helm"
|
||||
desc = "An ominous black helmet with a gold trim. The small viewports create an intimidating look, while also making it nearly impossible to see anything."
|
||||
icon_state = "hardsuit0-blackknight"
|
||||
item_state = "hardsuit0-blackknight"
|
||||
armor = list(melee = 70, bullet = 65, laser = 50,energy = 25, bomb = 60, bio = 100, rad = 60)
|
||||
item_color="blackknight"
|
||||
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
|
||||
|
||||
/obj/item/clothing/suit/space/hardsuit/knight/black
|
||||
name = "Black Knight's armour"
|
||||
desc = "An ominous black suit of armour with a gold trim. Surprisingly good at preventing accidental loss of limbs."
|
||||
icon_state = "hardsuit-blackknight"
|
||||
item_state = "hardsuit-blackknight"
|
||||
armor = list(melee = 70, bullet = 65, laser = 50,energy = 25, bomb = 60, bio = 100, rad = 60)
|
||||
helmettype = /obj/item/clothing/head/helmet/space/hardsuit/knight/black
|
||||
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
|
||||
|
||||
/obj/item/clothing/head/helmet/space/hardsuit/knight/solaire
|
||||
name = "Solar helm"
|
||||
desc = "A simple helmet. 'Made in Astora' is inscribed on the back."
|
||||
icon_state = "hardsuit0-solaire"
|
||||
item_state = "hardsuit0-solaire"
|
||||
armor = list(melee = 60, bullet = 65, laser = 90,energy = 30, bomb = 60, bio = 100, rad = 100)
|
||||
item_color="solaire"
|
||||
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
|
||||
|
||||
/obj/item/clothing/suit/space/hardsuit/knight/solaire
|
||||
name = "Solar armour"
|
||||
desc = "A solar powered hardsuit with a fancy insignia on the chest. Perfect for stargazers and adventurers alike."
|
||||
icon_state = "hardsuit-solaire"
|
||||
item_state = "hardsuit-solaire"
|
||||
armor = list(melee = 60, bullet = 65, laser = 90,energy = 30, bomb = 60, bio = 100, rad = 100)
|
||||
helmettype = /obj/item/clothing/head/helmet/space/hardsuit/knight/solaire
|
||||
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
|
||||
|
||||
/obj/item/clothing/head/helmet/space/hardsuit/t51b
|
||||
name = "T-51b Power Armor"
|
||||
desc = "Relic of a bygone era, the T-51b is powered by a TX-28 MicroFusion Pack, which holds enough fuel to power its internal hydraulics for a century!"
|
||||
icon_state = "hardsuit0-t51b"
|
||||
item_state = "hardsuit0-t51b"
|
||||
armor = list(melee = 35, bullet = 35, laser = 40, energy = 40, bomb = 80, bio = 100, rad = 100)
|
||||
item_color="t51b"
|
||||
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
|
||||
|
||||
/obj/item/clothing/suit/space/hardsuit/t51b
|
||||
name = "T-51b Power Armor"
|
||||
desc = "Relic of a bygone era, the T-51b is powered by a TX-28 MicroFusion Pack, which holds enough fuel to power its internal hydraulics for a century!"
|
||||
icon_state = "hardsuit-t51b"
|
||||
item_state = "hardsuit-t51b"
|
||||
armor = list(melee = 35, bullet = 35, laser = 40, energy = 40, bomb = 80, bio = 100, rad = 100)
|
||||
helmettype = /obj/item/clothing/head/helmet/space/hardsuit/t51b
|
||||
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
|
||||
|
||||
|
||||
/obj/item/clothing/head/helmet/space/bomberman
|
||||
name = "Bomberman head"
|
||||
desc = "Terrorism has never looked so adorable."
|
||||
icon_state = "bomberman"
|
||||
item_state = "bomberman"
|
||||
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 100, bio = 0, rad = 0)
|
||||
siemens_coefficient = 0
|
||||
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
|
||||
|
||||
obj/item/clothing/suit/space/bomberman
|
||||
name = "Bomberman's suit"
|
||||
desc = "Doesn't actually make you immune to bombs!"
|
||||
icon_state = "bomberman"
|
||||
item_state = "bomberman"
|
||||
slowdown = 0
|
||||
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 100, bio = 0, rad = 0)
|
||||
siemens_coefficient = 0
|
||||
max_heat_protection_temperature = FIRE_IMMUNITY_MAX_TEMP_PROTECT
|
||||
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
|
||||
@@ -1,138 +0,0 @@
|
||||
|
||||
/obj/item/clothing/suit/armor/xcomsquaddie
|
||||
name = "Squaddie Armor"
|
||||
desc = "A suit of armor with heavy padding to protect against projectile and laser attacks. Distributed to shadow organization squaddies."
|
||||
icon_state = "xcomarmor2"
|
||||
item_state = "xcomarmor2"
|
||||
body_parts_covered = CHEST|GROIN|LEGS|FEET|ARMS|HANDS
|
||||
armor = list(melee = 50, bullet = 50, laser = 50, energy = 30, bomb = 60, bio = 30, rad = 20)
|
||||
siemens_coefficient = 0.5
|
||||
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
|
||||
alternate_worn_icon = 'modular_citadel/icons/mob/citadel/suit.dmi'
|
||||
mutantrace_variation = NONE
|
||||
|
||||
/obj/item/clothing/suit/armor/xcomsquaddie/dredd
|
||||
name = "Judge Armor"
|
||||
desc = "A large suit of heavy armor, fit for a Judge."
|
||||
icon_state = "dredd-suit"
|
||||
item_state = "dredd-suit"
|
||||
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
|
||||
alternate_worn_icon = 'modular_citadel/icons/mob/citadel/suit.dmi'
|
||||
mutantrace_variation = NONE
|
||||
|
||||
|
||||
/obj/item/clothing/suit/armor/xcomarmor
|
||||
name = "Mysterious Armor"
|
||||
desc = "A suit of armor with heavy plating to protect against melee attacks. Distributed to shadow organization squaddies."
|
||||
icon_state = "xcomarmor1"
|
||||
item_state = "xcomarmor1"
|
||||
body_parts_covered = CHEST|GROIN|LEGS|FEET|ARMS|HANDS
|
||||
armor = list(melee = 50, bullet = 50, laser = 50, energy = 30, bomb = 60, bio = 30, rad = 20)
|
||||
slowdown = 1
|
||||
siemens_coefficient = 0.5
|
||||
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
|
||||
alternate_worn_icon = 'modular_citadel/icons/mob/citadel/suit.dmi'
|
||||
mutantrace_variation = NONE
|
||||
|
||||
/obj/item/clothing/suit/armor/vest/neorussian
|
||||
name = "neo-Russian vest"
|
||||
desc = "The narkotiki camo pattern will come useful for botany raids."
|
||||
icon_state = "nr_vest"
|
||||
item_state = "nr_vest"
|
||||
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
|
||||
alternate_worn_icon = 'modular_citadel/icons/mob/citadel/suit.dmi'
|
||||
mutantrace_variation = NONE
|
||||
|
||||
/obj/item/clothing/suit/armor/doomguy
|
||||
name = "Doomguy's armor"
|
||||
desc = ""
|
||||
icon_state = "doom"
|
||||
item_state = "doom"
|
||||
body_parts_covered = CHEST|GROIN
|
||||
slowdown = 0
|
||||
armor = list(melee = 50, bullet = 30, laser = 20, energy = 20, bomb = 30, bio = 0, rad = 0)
|
||||
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
|
||||
alternate_worn_icon = 'modular_citadel/icons/mob/citadel/suit.dmi'
|
||||
mutantrace_variation = NONE
|
||||
|
||||
|
||||
/obj/item/clothing/suit/kaminacape
|
||||
name = "Kamina's Cape"
|
||||
desc = "Don't believe in yourself, dumbass. Believe in me. Believe in the Kamina who believes in you."
|
||||
icon_state = "kaminacape"
|
||||
body_parts_covered = 0
|
||||
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
|
||||
alternate_worn_icon = 'modular_citadel/icons/mob/citadel/suit.dmi'
|
||||
mutantrace_variation = NONE
|
||||
|
||||
/obj/item/clothing/suit/officercoat
|
||||
name = "Officer's Coat"
|
||||
desc = "Ein Mantel gemacht, um die Juden zu bestrafen."
|
||||
icon_state = "officersuit"
|
||||
body_parts_covered = CHEST|GROIN|LEGS|ARMS|HANDS
|
||||
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
|
||||
mutantrace_variation = NONE
|
||||
|
||||
/obj/item/clothing/suit/soldiercoat
|
||||
name = "Soldier's Coat"
|
||||
desc = "Und das heißt: Erika."
|
||||
icon_state = "soldiersuit"
|
||||
body_parts_covered = CHEST|GROIN|LEGS|ARMS|HANDS
|
||||
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
|
||||
mutantrace_variation = NONE
|
||||
|
||||
/obj/item/clothing/suit/russofurcoat
|
||||
name = "russian fur coat"
|
||||
desc = "Let the land do the fighting for you."
|
||||
icon_state = "russofurcoat"
|
||||
allowed = list(/obj/item/gun)
|
||||
body_parts_covered = CHEST|GROIN|LEGS|ARMS|HANDS
|
||||
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
|
||||
alternate_worn_icon = 'modular_citadel/icons/mob/citadel/suit.dmi'
|
||||
mutantrace_variation = NONE
|
||||
|
||||
/obj/item/clothing/suit/doshjacket
|
||||
name = "Plasterer's Jacket"
|
||||
desc = "Perfect for doing up the house."
|
||||
icon_state = "doshjacket"
|
||||
body_parts_covered = CHEST|GROIN|ARMS
|
||||
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
|
||||
alternate_worn_icon = 'modular_citadel/icons/mob/citadel/suit.dmi'
|
||||
mutantrace_variation = NONE
|
||||
|
||||
/obj/item/clothing/suit/maidapron
|
||||
name = "Apron"
|
||||
desc = "Simple white apron."
|
||||
icon_state = "maidapron"
|
||||
body_parts_covered = CHEST|GROIN
|
||||
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
|
||||
alternate_worn_icon = 'modular_citadel/icons/mob/citadel/suit.dmi'
|
||||
mutantrace_variation = NONE
|
||||
|
||||
/obj/item/clothing/suit/clownpiece
|
||||
name = "small fairy wings"
|
||||
desc = "Some small and translucid insect-like wings."
|
||||
icon_state = "clownpiece"
|
||||
body_parts_covered = 0
|
||||
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
|
||||
alternate_worn_icon = 'modular_citadel/icons/mob/citadel/suit.dmi'
|
||||
mutantrace_variation = NONE
|
||||
|
||||
/obj/item/clothing/suit/clownpiece/flying
|
||||
name = "small fairy wings"
|
||||
desc = "Some small and translucid insect-like wings. Looks like these are the real deal!"
|
||||
icon_state = "clownpiece-fly"
|
||||
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
|
||||
alternate_worn_icon = 'modular_citadel/icons/mob/citadel/suit.dmi'
|
||||
mutantrace_variation = NONE
|
||||
|
||||
/obj/item/clothing/suit/raincoat
|
||||
name = "Raincoat"
|
||||
desc = "Do you like Huey Lewis and the News?"
|
||||
icon_state = "raincoat"
|
||||
body_parts_covered =CHEST|GROIN|LEGS|ARMS|HANDS
|
||||
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
|
||||
alternate_worn_icon = 'modular_citadel/icons/mob/citadel/suit.dmi'
|
||||
mutantrace_variation = NONE
|
||||
|
||||
|
||||
@@ -1000,4 +1000,89 @@
|
||||
item_state = "cheongr"
|
||||
body_parts_covered = CHEST|GROIN
|
||||
can_adjust = FALSE
|
||||
mutantrace_variation = NONE
|
||||
mutantrace_variation = NONE
|
||||
|
||||
/obj/item/clothing/under/squatter_outfit
|
||||
name = "slav squatter tracksuit"
|
||||
desc = "Cyka blyat."
|
||||
icon_state = "squatteroutfit"
|
||||
item_state = "squatteroutfit"
|
||||
item_color = "squatteroutfit"
|
||||
can_adjust = FALSE
|
||||
mutantrace_variation = NONE
|
||||
|
||||
/obj/item/clothing/under/russobluecamooutfit
|
||||
name = "russian blue camo"
|
||||
desc = "Drop and give me dvadtsat!"
|
||||
icon_state = "russobluecamo"
|
||||
item_state = "russobluecamo"
|
||||
item_color = "russobluecamo"
|
||||
can_adjust = FALSE
|
||||
mutantrace_variation = NONE
|
||||
|
||||
/obj/item/clothing/under/keyholesweater
|
||||
name = "keyhole sweater"
|
||||
desc = "What is the point of this, anyway?"
|
||||
icon_state = "keyholesweater"
|
||||
item_state = "keyholesweater"
|
||||
item_color = "keyholesweater"
|
||||
can_adjust = FALSE
|
||||
mutantrace_variation = NONE
|
||||
|
||||
/obj/item/clothing/under/stripper_pink
|
||||
name = "pink stripper outfit"
|
||||
icon_state = "stripper_p"
|
||||
item_state = "stripper_p"
|
||||
item_color = "stripper_p"
|
||||
|
||||
/obj/item/clothing/under/stripper_green
|
||||
name = "green stripper outfit"
|
||||
icon_state = "stripper_g"
|
||||
item_state = "stripper_g"
|
||||
item_color = "stripper_g"
|
||||
can_adjust = FALSE
|
||||
|
||||
/obj/item/clothing/under/mankini
|
||||
name = "pink mankini"
|
||||
icon_state = "mankini"
|
||||
item_state = "mankini"
|
||||
item_color = "mankini"
|
||||
can_adjust = FALSE
|
||||
mutantrace_variation = NONE
|
||||
|
||||
/obj/item/clothing/under/wedding
|
||||
name = "white wedding dress"
|
||||
desc = "A white wedding gown made from the finest silk."
|
||||
icon_state = "bride_white"
|
||||
item_state = "bride_white"
|
||||
item_color = "bride_white"
|
||||
can_adjust = FALSE
|
||||
mutantrace_variation = NONE
|
||||
|
||||
/obj/item/clothing/under/wedding/orange
|
||||
name = "orange wedding dress"
|
||||
desc = "A big and puffy orange dress."
|
||||
icon_state = "bride_orange"
|
||||
item_state = "bride_orange"
|
||||
item_color = "bride_orange"
|
||||
|
||||
/obj/item/clothing/under/wedding/purple
|
||||
name = "purple wedding dress"
|
||||
desc = "A big and puffy purple dress."
|
||||
icon_state = "bride_purple"
|
||||
item_state = "bride_purple"
|
||||
item_color = "bride_purple"
|
||||
|
||||
/obj/item/clothing/under/wedding/blue
|
||||
name = "blue wedding dress"
|
||||
desc = "A big and puffy blue dress."
|
||||
icon_state = "bride_blue"
|
||||
item_state = "bride_blue"
|
||||
item_color = "bride_blue"
|
||||
|
||||
/obj/item/clothing/under/wedding/red
|
||||
name = "red wedding dress"
|
||||
desc = "A big and puffy red dress."
|
||||
icon_state = "bride_red"
|
||||
item_state = "bride_red"
|
||||
item_color = "bride_red"
|
||||
|
||||
@@ -1,436 +0,0 @@
|
||||
// Fixed to work with Citadel code. Apparently none of them had NO_MUTANTRACE flags.
|
||||
// I was pissy when I realised how to fix this because it's so fucking easy and nobody apparently had done it.
|
||||
|
||||
/obj/item/clothing/under/stripper_pink
|
||||
name = "pink stripper outfit"
|
||||
icon_state = "stripper_p"
|
||||
item_state = "stripper_p"
|
||||
item_color = "stripper_p"
|
||||
can_adjust = 0
|
||||
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
|
||||
alternate_worn_icon = 'modular_citadel/icons/mob/citadel/uniforms.dmi'
|
||||
mutantrace_variation = NONE
|
||||
|
||||
/obj/item/clothing/under/stripper_green
|
||||
name = "green stripper outfit"
|
||||
icon_state = "stripper_g"
|
||||
item_state = "stripper_g"
|
||||
item_color = "stripper_g"
|
||||
can_adjust = 0
|
||||
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
|
||||
alternate_worn_icon = 'modular_citadel/icons/mob/citadel/uniforms.dmi'
|
||||
mutantrace_variation = NONE
|
||||
|
||||
/obj/item/clothing/under/wedding/bride_orange
|
||||
name = "orange wedding dress"
|
||||
desc = "A big and puffy orange dress."
|
||||
icon_state = "bride_orange"
|
||||
item_state = "bride_orange"
|
||||
item_color = "bride_orange"
|
||||
can_adjust = 0
|
||||
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
|
||||
alternate_worn_icon = 'modular_citadel/icons/mob/citadel/uniforms.dmi'
|
||||
mutantrace_variation = NONE
|
||||
|
||||
/obj/item/clothing/under/wedding/bride_purple
|
||||
name = "purple wedding dress"
|
||||
desc = "A big and puffy purple dress."
|
||||
icon_state = "bride_purple"
|
||||
item_state = "bride_purple"
|
||||
item_color = "bride_purple"
|
||||
can_adjust = 0
|
||||
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
|
||||
alternate_worn_icon = 'modular_citadel/icons/mob/citadel/uniforms.dmi'
|
||||
mutantrace_variation = NONE
|
||||
|
||||
/obj/item/clothing/under/wedding/bride_blue
|
||||
name = "blue wedding dress"
|
||||
desc = "A big and puffy blue dress."
|
||||
icon_state = "bride_blue"
|
||||
item_state = "bride_blue"
|
||||
item_color = "bride_blue"
|
||||
can_adjust = 0
|
||||
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
|
||||
alternate_worn_icon = 'modular_citadel/icons/mob/citadel/uniforms.dmi'
|
||||
mutantrace_variation = NONE
|
||||
|
||||
/obj/item/clothing/under/wedding/bride_red
|
||||
name = "red wedding dress"
|
||||
desc = "A big and puffy red dress."
|
||||
icon_state = "bride_red"
|
||||
item_state = "bride_red"
|
||||
item_color = "bride_red"
|
||||
can_adjust = 0
|
||||
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
|
||||
alternate_worn_icon = 'modular_citadel/icons/mob/citadel/uniforms.dmi'
|
||||
mutantrace_variation = NONE
|
||||
|
||||
/obj/item/clothing/under/wedding/bride_white
|
||||
name = "white wedding dress"
|
||||
desc = "A white wedding gown made from the finest silk."
|
||||
icon_state = "bride_white"
|
||||
item_state = "bride_white"
|
||||
item_color = "bride_white"
|
||||
can_adjust = 0
|
||||
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
|
||||
alternate_worn_icon = 'modular_citadel/icons/mob/citadel/uniforms.dmi'
|
||||
mutantrace_variation = NONE
|
||||
|
||||
/obj/item/clothing/under/mankini
|
||||
name = "pink mankini"
|
||||
icon_state = "mankini"
|
||||
item_state = "mankini"
|
||||
item_color = "mankini"
|
||||
can_adjust = 0
|
||||
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
|
||||
alternate_worn_icon = 'modular_citadel/icons/mob/citadel/uniforms.dmi'
|
||||
mutantrace_variation = NONE
|
||||
/*
|
||||
|
||||
/obj/item/clothing/under/psysuit
|
||||
name = "dark undersuit"
|
||||
desc = "A thick, layered grey undersuit lined with power cables. Feels a little like wearing an electrical storm."
|
||||
icon_state = "psysuit"
|
||||
item_state = "psysuit"
|
||||
item_color = "psysuit"
|
||||
can_adjust = 0
|
||||
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
|
||||
alternate_worn_icon = 'modular_citadel/icons/mob/citadel/uniforms.dmi'
|
||||
|
||||
|
||||
/obj/item/clothing/under/officeruniform
|
||||
name = "officer's uniform"
|
||||
desc = "Bestraft die Juden fur ihre Verbrechen."
|
||||
icon_state = "officeruniform"
|
||||
item_state = "officeruniform"
|
||||
item_color = "officeruniform"
|
||||
can_adjust = 0
|
||||
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
|
||||
alternate_worn_icon = 'modular_citadel/icons/mob/citadel/uniforms.dmi'
|
||||
|
||||
|
||||
/obj/item/clothing/under/soldieruniform
|
||||
name = "soldier's uniform"
|
||||
desc = "Bestraft die Verbundeten fur ihren Widerstand."
|
||||
icon_state = "soldieruniform"
|
||||
item_state = "soldieruniform"
|
||||
item_color = "soldieruniform"
|
||||
can_adjust = 0
|
||||
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
|
||||
alternate_worn_icon = 'modular_citadel/icons/mob/citadel/uniforms.dmi'
|
||||
|
||||
*/
|
||||
/obj/item/clothing/under/squatter_outfit
|
||||
name = "slav squatter tracksuit"
|
||||
desc = "Cyka blyat."
|
||||
icon_state = "squatteroutfit"
|
||||
item_state = "squatteroutfit"
|
||||
item_color = "squatteroutfit"
|
||||
can_adjust = 0
|
||||
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
|
||||
alternate_worn_icon = 'modular_citadel/icons/mob/citadel/uniforms.dmi'
|
||||
mutantrace_variation = NONE
|
||||
|
||||
/obj/item/clothing/under/russobluecamooutfit
|
||||
name = "russian blue camo"
|
||||
desc = "Drop and give me dvadtsat!"
|
||||
icon_state = "russobluecamo"
|
||||
item_state = "russobluecamo"
|
||||
item_color = "russobluecamo"
|
||||
can_adjust = 0
|
||||
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
|
||||
alternate_worn_icon = 'modular_citadel/icons/mob/citadel/uniforms.dmi'
|
||||
mutantrace_variation = NONE
|
||||
|
||||
/obj/item/clothing/under/stilsuit
|
||||
name = "stillsuit"
|
||||
desc = "Designed to preserve bodymoisture."
|
||||
icon_state = "stilsuit"
|
||||
item_state = "stilsuit"
|
||||
item_color = "stilsuit"
|
||||
can_adjust = 0
|
||||
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
|
||||
alternate_worn_icon = 'modular_citadel/icons/mob/citadel/uniforms.dmi'
|
||||
mutantrace_variation = NONE
|
||||
|
||||
/obj/item/clothing/under/aviatoruniform
|
||||
name = "aviator uniform"
|
||||
desc = "Now you can look absolutely dashing!"
|
||||
icon_state = "aviator_uniform"
|
||||
item_state = "aviator_uniform"
|
||||
item_color = "aviator_uniform"
|
||||
can_adjust = 0
|
||||
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
|
||||
alternate_worn_icon = 'modular_citadel/icons/mob/citadel/uniforms.dmi'
|
||||
mutantrace_variation = NONE
|
||||
|
||||
/obj/item/clothing/under/bikersuit
|
||||
name = "biker's outfit"
|
||||
icon_state = "biker"
|
||||
item_state = "biker"
|
||||
item_color = "biker"
|
||||
can_adjust = 0
|
||||
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
|
||||
alternate_worn_icon = 'modular_citadel/icons/mob/citadel/uniforms.dmi'
|
||||
mutantrace_variation = NONE
|
||||
|
||||
/obj/item/clothing/under/jacketsuit
|
||||
name = "richard's outfit"
|
||||
desc = "Do you know what time it is?"
|
||||
icon_state = "jacket"
|
||||
item_state = "jacket"
|
||||
item_color = "jacket"
|
||||
can_adjust = 0
|
||||
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
|
||||
alternate_worn_icon = 'modular_citadel/icons/mob/citadel/uniforms.dmi'
|
||||
mutantrace_variation = NONE
|
||||
|
||||
obj/item/clothing/under/mega
|
||||
name = "\improper DRN-001 suit"
|
||||
desc = "The original. Simple, yet very adaptable."
|
||||
icon_state = "mega"
|
||||
item_state = "mega"
|
||||
item_color = "mega"
|
||||
can_adjust = 0
|
||||
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
|
||||
alternate_worn_icon = 'modular_citadel/icons/mob/citadel/uniforms.dmi'
|
||||
mutantrace_variation = NONE
|
||||
|
||||
/obj/item/clothing/under/proto
|
||||
name = "The Prototype Suit"
|
||||
desc = "Even robots know scarves are the perfect accessory for a brooding rival."
|
||||
icon_state = "proto"
|
||||
item_state = "proto"
|
||||
item_color = "proto"
|
||||
can_adjust = 0
|
||||
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
|
||||
alternate_worn_icon = 'modular_citadel/icons/mob/citadel/uniforms.dmi'
|
||||
mutantrace_variation = NONE
|
||||
|
||||
/obj/item/clothing/under/megax
|
||||
name = "\improper Maverick Hunter regalia"
|
||||
desc = "The best outfit for taking out rogue borgs."
|
||||
icon_state = "megax"
|
||||
item_state = "megax"
|
||||
item_color = "megax"
|
||||
can_adjust = 0
|
||||
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
|
||||
alternate_worn_icon = 'modular_citadel/icons/mob/citadel/uniforms.dmi'
|
||||
mutantrace_variation = NONE
|
||||
|
||||
/obj/item/clothing/under/joe
|
||||
name = "The Sniper Suit"
|
||||
desc = "Mass produced combat robots with a rather unfitting name."
|
||||
icon_state = "joe"
|
||||
item_state = "joe"
|
||||
item_color = "joe"
|
||||
can_adjust = 0
|
||||
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
|
||||
alternate_worn_icon = 'modular_citadel/icons/mob/citadel/uniforms.dmi'
|
||||
mutantrace_variation = NONE
|
||||
|
||||
/obj/item/clothing/under/roll
|
||||
name = "\improper DRN-002 Dress"
|
||||
desc = "A simple red dress, the good doctor's second robot wasn't quite as exciting as the first."
|
||||
icon_state = "roll"
|
||||
item_state = "roll"
|
||||
item_color = "roll"
|
||||
can_adjust = 0
|
||||
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
|
||||
alternate_worn_icon = 'modular_citadel/icons/mob/citadel/uniforms.dmi'
|
||||
mutantrace_variation = NONE
|
||||
|
||||
/obj/item/clothing/under/gokugidown
|
||||
name = "turtle hermit undershirt"
|
||||
desc = "Something seems oddly familiar about this outfit..."
|
||||
icon_state = "gokugidown"
|
||||
item_state = "gokugidown"
|
||||
item_color = "gokugidown"
|
||||
can_adjust = 0
|
||||
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
|
||||
alternate_worn_icon = 'modular_citadel/icons/mob/citadel/uniforms.dmi'
|
||||
mutantrace_variation = NONE
|
||||
|
||||
/obj/item/clothing/under/gokugi
|
||||
name = "turtle hermit outfit"
|
||||
desc = "An outfit from one trained by the great Turtle Hermit."
|
||||
icon_state = "gokugi"
|
||||
item_state = "gokugi"
|
||||
item_color = "gokugi"
|
||||
can_adjust = 0
|
||||
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
|
||||
alternate_worn_icon = 'modular_citadel/icons/mob/citadel/uniforms.dmi'
|
||||
mutantrace_variation = NONE
|
||||
|
||||
/obj/item/clothing/under/doomguy
|
||||
name = "\improper Doomguy's pants"
|
||||
desc = ""
|
||||
icon_state = "doom"
|
||||
item_state = "doom"
|
||||
item_color = "doom"
|
||||
can_adjust = 0
|
||||
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
|
||||
alternate_worn_icon = 'modular_citadel/icons/mob/citadel/uniforms.dmi'
|
||||
mutantrace_variation = NONE
|
||||
|
||||
/obj/item/clothing/under/vault13
|
||||
name = "vault 13 Jumpsuit"
|
||||
desc = "Oddly similar to the station's usual jumpsuits, but with a rustic charm to it. Has a large thirteen emblazened on the back."
|
||||
icon_state = "v13-jumpsuit"
|
||||
item_state = "v13-jumpsuit"
|
||||
item_color = "v13-jumpsuit"
|
||||
can_adjust = 0
|
||||
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
|
||||
alternate_worn_icon = 'modular_citadel/icons/mob/citadel/uniforms.dmi'
|
||||
mutantrace_variation = NONE
|
||||
|
||||
/obj/item/clothing/under/vault
|
||||
name = "vault jumpsuit"
|
||||
desc = "Oddly similar to the station's usual jumpsuits, but with a rustic charm to it."
|
||||
icon_state = "v-jumpsuit"
|
||||
item_state = "v-jumpsuit"
|
||||
item_color = "v-jumpsuit"
|
||||
can_adjust = 0
|
||||
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
|
||||
alternate_worn_icon = 'modular_citadel/icons/mob/citadel/uniforms.dmi'
|
||||
mutantrace_variation = NONE
|
||||
|
||||
/obj/item/clothing/under/clownpiece
|
||||
name = "Clownpiece's Pierrot suit"
|
||||
desc = "A female-sized set of leggings and shirt with a pattern similar to the American flag, featuring a frilled collar."
|
||||
icon_state = "clownpiece"
|
||||
item_state = "clownpiece"
|
||||
item_color = "clownpiece"
|
||||
can_adjust = 0
|
||||
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
|
||||
alternate_worn_icon = 'modular_citadel/icons/mob/citadel/uniforms.dmi'
|
||||
mutantrace_variation = NONE
|
||||
|
||||
/obj/item/clothing/under/cia
|
||||
name = "casual IAA outfit"
|
||||
desc = "Just looking at this makes you feel in charge."
|
||||
icon_state = "cia"
|
||||
item_state = "cia"
|
||||
item_color = "cia"
|
||||
can_adjust = 0
|
||||
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
|
||||
alternate_worn_icon = 'modular_citadel/icons/mob/citadel/uniforms.dmi'
|
||||
mutantrace_variation = NONE
|
||||
|
||||
/obj/item/clothing/under/greaser
|
||||
name = "greaser outfit"
|
||||
desc = "The one that you want!"
|
||||
icon_state = "greaser_default"
|
||||
item_state = "greaser_default"
|
||||
can_adjust = 0
|
||||
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
|
||||
alternate_worn_icon = 'modular_citadel/icons/mob/citadel/uniforms.dmi'
|
||||
mutantrace_variation = NONE
|
||||
|
||||
/obj/item/clothing/under/greaser/New()
|
||||
var/greaser_colour = "default"
|
||||
switch(rand(1,4))
|
||||
if(1)
|
||||
greaser_colour = "default"
|
||||
if(2)
|
||||
greaser_colour = "cult"
|
||||
if(3)
|
||||
greaser_colour = "spider"
|
||||
if(4)
|
||||
greaser_colour = "snakes"
|
||||
desc = "Tunnel Snakes Rule!"
|
||||
icon_state = "greaser_[greaser_colour]"
|
||||
item_state = "greaser_[greaser_colour]"
|
||||
item_color = "greaser_[greaser_colour]"
|
||||
can_adjust = 0
|
||||
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
|
||||
mutantrace_variation = NONE
|
||||
|
||||
|
||||
/obj/item/clothing/under/wintercasualwear
|
||||
name = "winter casualwear"
|
||||
desc = "Perfect for winter!"
|
||||
icon_state = "shizunewinter"
|
||||
item_state = "shizunewinter"
|
||||
item_color = "shizunewinter"
|
||||
can_adjust = 0
|
||||
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
|
||||
alternate_worn_icon = 'modular_citadel/icons/mob/citadel/uniforms.dmi'
|
||||
mutantrace_variation = NONE
|
||||
|
||||
/obj/item/clothing/under/casualwear
|
||||
name = "spring casualwear"
|
||||
desc = "Perfect for spring!"
|
||||
icon_state = "shizunenormal"
|
||||
item_state = "shizunenormal"
|
||||
item_color = "shizunenormal"
|
||||
can_adjust = 0
|
||||
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
|
||||
alternate_worn_icon = 'modular_citadel/icons/mob/citadel/uniforms.dmi'
|
||||
mutantrace_variation = NONE
|
||||
|
||||
/obj/item/clothing/under/keyholesweater
|
||||
name = "keyhole sweater"
|
||||
desc = "What is the point of this, anyway?"
|
||||
icon_state = "keyholesweater"
|
||||
item_state = "keyholesweater"
|
||||
item_color = "keyholesweater"
|
||||
can_adjust = 0
|
||||
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
|
||||
alternate_worn_icon = 'modular_citadel/icons/mob/citadel/uniforms.dmi'
|
||||
mutantrace_variation = NONE
|
||||
|
||||
/obj/item/clothing/under/casualhoodie
|
||||
name = "casual hoodie"
|
||||
desc = "Pefect for lounging about in."
|
||||
icon_state = "hoodiejeans"
|
||||
item_state = "hoodiejeans"
|
||||
item_color = "hoodiejeans"
|
||||
can_adjust = 0
|
||||
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
|
||||
alternate_worn_icon = 'modular_citadel/icons/mob/citadel/uniforms.dmi'
|
||||
mutantrace_variation = NONE
|
||||
|
||||
/obj/item/clothing/under/casualhoodie/skirt
|
||||
icon_state = "hoodieskirt"
|
||||
item_state = "hoodieskirt"
|
||||
item_color = "hoodieskirt"
|
||||
can_adjust = 0
|
||||
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
|
||||
mutantrace_variation = NONE
|
||||
|
||||
/*
|
||||
/obj/item/clothing/under/mummy_rags
|
||||
name = "mummy rags"
|
||||
desc = "Ancient rags taken off from some mummy."
|
||||
icon_state = "mummy"
|
||||
item_state = "mummy"
|
||||
item_color = "mummy"
|
||||
can_adjust = 0
|
||||
has_sensor = 0
|
||||
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
|
||||
alternate_worn_icon = 'modular_citadel/icons/mob/citadel/uniforms.dmi'
|
||||
|
||||
|
||||
/obj/item/clothing/under/neorussian
|
||||
name = "neo-Russian uniform"
|
||||
desc = "Employs a special toshnit pattern, will render you invisible when you eat a potato on an empty stomach."
|
||||
icon_state = "nr_uniform"
|
||||
item_state = "nr_uniform"
|
||||
item_color = "nr_uniform"
|
||||
can_adjust = 0
|
||||
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
|
||||
alternate_worn_icon = 'modular_citadel/icons/mob/citadel/uniforms.dmi'
|
||||
*/
|
||||
|
||||
/obj/item/clothing/under/rottensuit
|
||||
name = "rotten suit"
|
||||
desc = "This suit seems perfect for wearing underneath a disguise."
|
||||
icon_state = "rottensuit"
|
||||
item_state = "rottensuit"
|
||||
item_color = "rottensuit"
|
||||
can_adjust = 0
|
||||
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
|
||||
alternate_worn_icon = 'modular_citadel/icons/mob/citadel/uniforms.dmi'
|
||||
mutantrace_variation = NONE
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/proc/emoji_parse(text)
|
||||
/proc/emoji_parse(text) //turns :ai: into an emoji in text.
|
||||
. = text
|
||||
if(!CONFIG_GET(flag/emojis))
|
||||
return
|
||||
@@ -30,3 +30,24 @@
|
||||
break
|
||||
return parsed
|
||||
|
||||
/proc/emoji_sanitize(text) //cuts any text that would not be parsed as an emoji
|
||||
. = text
|
||||
if(!CONFIG_GET(flag/emojis))
|
||||
return
|
||||
var/static/list/emojis = icon_states(icon('icons/emoji.dmi'))
|
||||
var/final = "" //only tags are added to this
|
||||
var/pos = 1
|
||||
var/search = 0
|
||||
while(1)
|
||||
search = findtext(text, ":", pos)
|
||||
if(search)
|
||||
pos = search
|
||||
search = findtext(text, ":", pos+1)
|
||||
if(search)
|
||||
var/word = lowertext(copytext(text, pos+1, search))
|
||||
if(word in emojis)
|
||||
final += lowertext(copytext(text, pos, search+1))
|
||||
pos = search + 1
|
||||
continue
|
||||
break
|
||||
return final
|
||||
|
||||
@@ -15,4 +15,4 @@
|
||||
movement_dir &= ~(NORTH|SOUTH)
|
||||
if((movement_dir & EAST) && (movement_dir & WEST))
|
||||
movement_dir &= ~(EAST|WEST)
|
||||
user.Move(get_step(src, movement_dir), movement_dir)
|
||||
user.Move(get_step(src, movement_dir), movement_dir)
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
set hidden = TRUE
|
||||
|
||||
client_keysend_amount += 1
|
||||
|
||||
|
||||
var/cache = client_keysend_amount
|
||||
|
||||
if(keysend_tripped && next_keysend_trip_reset <= world.time)
|
||||
@@ -20,7 +20,7 @@
|
||||
//don't want to kick people if a lag spike results in a huge flood of commands being sent
|
||||
if(cache >= MAX_KEYPRESS_AUTOKICK)
|
||||
if(!keysend_tripped)
|
||||
keysend_tripped = TRUE
|
||||
keysend_tripped = TRUE
|
||||
next_keysend_trip_reset = world.time + (2 SECONDS)
|
||||
else
|
||||
log_admin("Client [ckey] was just autokicked for flooding keysends; likely abuse but potentially lagspike.")
|
||||
@@ -35,11 +35,10 @@
|
||||
message_admins("Client [ckey] just attempted to send an invalid keypress. Keymessage was over [MAX_KEYPRESS_COMMANDLENGTH] characters, autokicking due to likely abuse.")
|
||||
QDEL_IN(src, 1)
|
||||
return
|
||||
//offset by 1 because the buffer address is 0 indexed because the math was simpler
|
||||
keys_held[current_key_address + 1] = _key
|
||||
//the time a key was pressed isn't actually used anywhere (as of 2019-9-10) but this allows easier access usage/checking
|
||||
keys_held[_key] = world.time
|
||||
current_key_address = ((current_key_address + 1) % HELD_KEY_BUFFER_LENGTH)
|
||||
|
||||
if(length(keys_held) > MAX_HELD_KEYS)
|
||||
keys_held.Cut(1,2)
|
||||
keys_held[_key] = TRUE
|
||||
var/movement = SSinput.movement_keys[_key]
|
||||
if(!(next_move_dir_sub & movement) && !keys_held["Ctrl"])
|
||||
next_move_dir_add |= movement
|
||||
@@ -70,11 +69,7 @@
|
||||
set instant = TRUE
|
||||
set hidden = TRUE
|
||||
|
||||
//Can't just do a remove because it would alter the length of the rolling buffer, instead search for the key then null it out if it exists
|
||||
for(var/i in 1 to HELD_KEY_BUFFER_LENGTH)
|
||||
if(keys_held[i] == _key)
|
||||
keys_held[i] = null
|
||||
break
|
||||
keys_held -= _key
|
||||
var/movement = SSinput.movement_keys[_key]
|
||||
if(!(next_move_dir_add & movement))
|
||||
next_move_dir_sub |= movement
|
||||
|
||||
@@ -1,8 +1,6 @@
|
||||
/client
|
||||
/// A rolling buffer of any keys held currently
|
||||
/// Keys currently held
|
||||
var/list/keys_held = list()
|
||||
///used to keep track of the current rolling buffer position
|
||||
var/current_key_address = 0
|
||||
/// These next two vars are to apply movement for keypresses and releases made while move delayed.
|
||||
/// Because discarding that input makes the game less responsive.
|
||||
/// On next move, add this dir to the move that would otherwise be done
|
||||
@@ -36,10 +34,7 @@
|
||||
/client/proc/set_macros()
|
||||
set waitfor = FALSE
|
||||
|
||||
//Reset and populate the rolling buffer
|
||||
keys_held.Cut()
|
||||
for(var/i in 1 to HELD_KEY_BUFFER_LENGTH)
|
||||
keys_held += null
|
||||
|
||||
erase_all_macros()
|
||||
|
||||
|
||||
+12
-20
@@ -571,29 +571,23 @@ GLOBAL_VAR_INIT(exploit_warn_spam_prevention, 0)
|
||||
M.show_inv(user)
|
||||
|
||||
/mob/proc/is_muzzled()
|
||||
return 0
|
||||
return FALSE
|
||||
|
||||
/mob/Stat()
|
||||
..()
|
||||
|
||||
if(statpanel("Status"))
|
||||
if (client)
|
||||
stat(null, "Ping: [round(client.lastping, 1)]ms (Average: [round(client.avgping, 1)]ms)")
|
||||
stat(null, "Map: [SSmapping.config?.map_name || "Loading..."]")
|
||||
var/datum/map_config/cached = SSmapping.next_map_config
|
||||
if(cached)
|
||||
stat(null, "Next Map: [cached.map_name]")
|
||||
stat(null, "Round ID: [GLOB.round_id ? GLOB.round_id : "NULL"]")
|
||||
stat(null, "Server Time: [time2text(world.timeofday, "YYYY-MM-DD hh:mm:ss")]")
|
||||
stat(null, "Round Time: [WORLDTIME2TEXT("hh:mm:ss")]")
|
||||
stat(null, "Station Time: [STATION_TIME_TIMESTAMP("hh:mm:ss")]")
|
||||
stat(null, "Time Dilation: [round(SStime_track.time_dilation_current,1)]% AVG:([round(SStime_track.time_dilation_avg_fast,1)]%, [round(SStime_track.time_dilation_avg,1)]%, [round(SStime_track.time_dilation_avg_slow,1)]%)")
|
||||
if(SSshuttle.emergency)
|
||||
var/ETA = SSshuttle.emergency.getModeStr()
|
||||
if(ETA)
|
||||
stat(null, "[ETA] [SSshuttle.emergency.getTimerStr()]")
|
||||
//This is only called from client/Stat(), let's assume client exists.
|
||||
|
||||
if(client && client.holder)
|
||||
if(statpanel("Status"))
|
||||
var/list/L = list()
|
||||
L += "Ping: [round(client.lastping,1)]ms (Avg: [round(client.avgping,1)]ms)"
|
||||
L += SSmapping.stat_map_name
|
||||
L += "Round ID: [GLOB.round_id || "NULL"]"
|
||||
L += SStime_track.stat_time_text
|
||||
L += SSshuttle.emergency_shuttle_stat_text
|
||||
stat(null, "[L.Join("\n\n")]")
|
||||
|
||||
if(client.holder)
|
||||
if(statpanel("MC"))
|
||||
var/turf/T = get_turf(client.eye)
|
||||
stat("Location:", COORD(T))
|
||||
@@ -643,8 +637,6 @@ GLOBAL_VAR_INIT(exploit_warn_spam_prevention, 0)
|
||||
if(A.IsObscured())
|
||||
continue
|
||||
statpanel(listed_turf.name, null, A)
|
||||
|
||||
|
||||
if(mind)
|
||||
add_spells_to_statpanel(mind.spell_list)
|
||||
var/datum/antagonist/changeling/changeling = mind.has_antag_datum(/datum/antagonist/changeling)
|
||||
|
||||
@@ -9,37 +9,36 @@
|
||||
mob.dropItemToGround(mob.get_active_held_item())
|
||||
return
|
||||
|
||||
/client/proc/Move_object(direct)
|
||||
/client/proc/Move_object(direction)
|
||||
if(mob && mob.control_object)
|
||||
if(mob.control_object.density)
|
||||
step(mob.control_object,direct)
|
||||
step(mob.control_object,direction)
|
||||
if(!mob.control_object)
|
||||
return
|
||||
mob.control_object.setDir(direct)
|
||||
mob.control_object.setDir(direction)
|
||||
else
|
||||
mob.control_object.forceMove(get_step(mob.control_object,direct))
|
||||
mob.control_object.forceMove(get_step(mob.control_object,direction))
|
||||
|
||||
#define MOVEMENT_DELAY_BUFFER 0.75
|
||||
#define MOVEMENT_DELAY_BUFFER_DELTA 1.25
|
||||
|
||||
/client/Move(n, direct)
|
||||
/client/Move(n, direction)
|
||||
if(world.time < move_delay) //do not move anything ahead of this check please
|
||||
return FALSE
|
||||
else
|
||||
next_move_dir_add = 0
|
||||
next_move_dir_sub = 0
|
||||
next_move_dir_add = next_move_dir_sub = NONE
|
||||
var/old_move_delay = move_delay
|
||||
move_delay = world.time + world.tick_lag //this is here because Move() can now be called mutiple times per tick
|
||||
if(!mob || !mob.loc)
|
||||
return FALSE
|
||||
if(!n || !direct)
|
||||
if(!n || !direction || !mob?.loc)
|
||||
return FALSE
|
||||
//GET RID OF THIS SOON AS MOBILITY FLAGS IS DONE
|
||||
if(mob.notransform)
|
||||
return FALSE //This is sota the goto stop mobs from moving var
|
||||
return FALSE
|
||||
|
||||
if(mob.control_object)
|
||||
return Move_object(direct)
|
||||
return Move_object(direction)
|
||||
if(!isliving(mob))
|
||||
return mob.Move(n, direct)
|
||||
return mob.Move(n, direction)
|
||||
if(mob.stat == DEAD)
|
||||
mob.ghostize()
|
||||
return FALSE
|
||||
@@ -48,29 +47,29 @@
|
||||
|
||||
var/mob/living/L = mob //Already checked for isliving earlier
|
||||
if(L.incorporeal_move) //Move though walls
|
||||
Process_Incorpmove(direct)
|
||||
Process_Incorpmove(direction)
|
||||
return FALSE
|
||||
|
||||
if(mob.remote_control) //we're controlling something, our movement is relayed to it
|
||||
return mob.remote_control.relaymove(mob, direct)
|
||||
return mob.remote_control.relaymove(mob, direction)
|
||||
|
||||
if(isAI(mob))
|
||||
return AIMove(n,direct,mob)
|
||||
return AIMove(n,direction,mob)
|
||||
|
||||
if(Process_Grab()) //are we restrained by someone's grip?
|
||||
return
|
||||
|
||||
if(mob.buckled) //if we're buckled to something, tell it we moved.
|
||||
return mob.buckled.relaymove(mob, direct)
|
||||
return mob.buckled.relaymove(mob, direction)
|
||||
|
||||
if(!mob.canmove)
|
||||
return FALSE
|
||||
|
||||
if(isobj(mob.loc) || ismob(mob.loc)) //Inside an object, tell it we moved
|
||||
var/atom/O = mob.loc
|
||||
return O.relaymove(mob, direct)
|
||||
return O.relaymove(mob, direction)
|
||||
|
||||
if(!mob.Process_Spacemove(direct))
|
||||
if(!mob.Process_Spacemove(direction))
|
||||
return FALSE
|
||||
//We are now going to move
|
||||
var/add_delay = mob.movement_delay()
|
||||
@@ -85,16 +84,16 @@
|
||||
if(L.confused > 40)
|
||||
newdir = pick(GLOB.alldirs)
|
||||
else if(prob(L.confused * 1.5))
|
||||
newdir = angle2dir(dir2angle(direct) + pick(90, -90))
|
||||
newdir = angle2dir(dir2angle(direction) + pick(90, -90))
|
||||
else if(prob(L.confused * 3))
|
||||
newdir = angle2dir(dir2angle(direct) + pick(45, -45))
|
||||
newdir = angle2dir(dir2angle(direction) + pick(45, -45))
|
||||
if(newdir)
|
||||
direct = newdir
|
||||
n = get_step(L, direct)
|
||||
direction = newdir
|
||||
n = get_step(L, direction)
|
||||
|
||||
. = ..()
|
||||
|
||||
if((direct & (direct - 1)) && mob.loc == n) //moved diagonally successfully
|
||||
if((direction & (direction - 1)) && mob.loc == n) //moved diagonally successfully
|
||||
add_delay *= 2
|
||||
move_delay += add_delay
|
||||
if(.) // If mob is null here, we deserve the runtime
|
||||
@@ -102,7 +101,7 @@
|
||||
mob.throwing.finalize(FALSE)
|
||||
|
||||
for(var/obj/O in mob.user_movement_hooks)
|
||||
O.intercept_user_move(direct, mob, n, oldloc)
|
||||
O.intercept_user_move(direction, mob, n, oldloc)
|
||||
|
||||
var/atom/movable/P = mob.pulling
|
||||
if(P && !ismob(P) && P.density)
|
||||
@@ -126,22 +125,22 @@
|
||||
///Process_Incorpmove
|
||||
///Called by client/Move()
|
||||
///Allows mobs to run though walls
|
||||
/client/proc/Process_Incorpmove(direct)
|
||||
/client/proc/Process_Incorpmove(direction)
|
||||
var/turf/mobloc = get_turf(mob)
|
||||
if(!isliving(mob))
|
||||
return
|
||||
var/mob/living/L = mob
|
||||
switch(L.incorporeal_move)
|
||||
if(INCORPOREAL_MOVE_BASIC)
|
||||
var/T = get_step(L,direct)
|
||||
var/T = get_step(L,direction)
|
||||
if(T)
|
||||
L.forceMove(T)
|
||||
L.setDir(direct)
|
||||
L.setDir(direction)
|
||||
if(INCORPOREAL_MOVE_SHADOW)
|
||||
if(prob(50))
|
||||
var/locx
|
||||
var/locy
|
||||
switch(direct)
|
||||
switch(direction)
|
||||
if(NORTH)
|
||||
locx = mobloc.x
|
||||
locy = (mobloc.y+2)
|
||||
@@ -175,12 +174,12 @@
|
||||
break
|
||||
else
|
||||
new /obj/effect/temp_visual/dir_setting/ninja/shadow(mobloc, L.dir)
|
||||
var/T = get_step(L,direct)
|
||||
var/T = get_step(L,direction)
|
||||
if(T)
|
||||
L.forceMove(T)
|
||||
L.setDir(direct)
|
||||
L.setDir(direction)
|
||||
if(INCORPOREAL_MOVE_JAUNT) //Incorporeal move, but blocked by holy-watered tiles and salt piles.
|
||||
var/turf/open/floor/stepTurf = get_step(L, direct)
|
||||
var/turf/open/floor/stepTurf = get_step(L, direction)
|
||||
if(stepTurf)
|
||||
for(var/obj/effect/decal/cleanable/salt/S in stepTurf)
|
||||
to_chat(L, "<span class='warning'>[S] bars your passage!</span>")
|
||||
@@ -197,7 +196,7 @@
|
||||
return
|
||||
|
||||
L.forceMove(stepTurf)
|
||||
L.setDir(direct)
|
||||
L.setDir(direction)
|
||||
return TRUE
|
||||
|
||||
|
||||
|
||||
@@ -237,7 +237,7 @@
|
||||
sprd = round((rand() - 0.5) * DUALWIELD_PENALTY_EXTRA_MULTIPLIER * (randomized_gun_spread + randomized_bonus_spread), 1)
|
||||
else //Smart spread
|
||||
sprd = round((((rand_spr/burst_size) * iteration) - (0.5 + (rand_spr * 0.25))) * (randomized_gun_spread + randomized_bonus_spread), 1)
|
||||
|
||||
before_firing(target,user)
|
||||
if(!chambered.fire_casing(target, user, params, ,suppressed, zone_override, sprd, src))
|
||||
shoot_with_empty_chamber(user)
|
||||
firing_burst = FALSE
|
||||
@@ -281,6 +281,7 @@
|
||||
else
|
||||
if(chambered)
|
||||
sprd = round((rand() - 0.5) * DUALWIELD_PENALTY_EXTRA_MULTIPLIER * (randomized_gun_spread + randomized_bonus_spread))
|
||||
before_firing(target,user)
|
||||
if(!chambered.fire_casing(target, user, params, , suppressed, zone_override, sprd, src))
|
||||
shoot_with_empty_chamber(user)
|
||||
return
|
||||
@@ -466,6 +467,10 @@
|
||||
qdel(pin)
|
||||
pin = new /obj/item/firing_pin
|
||||
|
||||
//Happens before the actual projectile creation
|
||||
/obj/item/gun/proc/before_firing(atom/target,mob/user)
|
||||
return
|
||||
|
||||
/////////////
|
||||
// ZOOMING //
|
||||
/////////////
|
||||
|
||||
@@ -0,0 +1,375 @@
|
||||
#define DUEL_IDLE 1
|
||||
#define DUEL_PREPARATION 2
|
||||
#define DUEL_READY 3
|
||||
#define DUEL_COUNTDOWN 4
|
||||
#define DUEL_FIRING 5
|
||||
|
||||
//paper rock scissors
|
||||
#define DUEL_SETTING_A "wide"
|
||||
#define DUEL_SETTING_B "cone"
|
||||
#define DUEL_SETTING_C "pinpoint"
|
||||
|
||||
#define DUEL_HUGBOX_NONE 0 //dismember head
|
||||
#define DUEL_HUGBOX_LETHAL 1 //200 damage to chest
|
||||
#define DUEL_HUGBOX_NONLETHAL 2 //stamcrit
|
||||
|
||||
/datum/duel
|
||||
var/obj/item/gun/energy/dueling/gun_A
|
||||
var/obj/item/gun/energy/dueling/gun_B
|
||||
var/state = DUEL_IDLE
|
||||
var/required_distance = 5
|
||||
var/list/confirmations = list()
|
||||
var/list/fired = list()
|
||||
var/countdown_length = 10
|
||||
var/countdown_step = 0
|
||||
|
||||
/datum/duel/proc/try_begin()
|
||||
//Check if both guns are held and if so begin.
|
||||
var/mob/living/A = get_duelist(gun_A)
|
||||
var/mob/living/B = get_duelist(gun_B)
|
||||
if(!A || !B)
|
||||
message_duelists("<span class='warning'>To begin the duel, both participants need to be holding paired dueling pistols.</span>")
|
||||
return
|
||||
begin()
|
||||
|
||||
/datum/duel/proc/begin()
|
||||
state = DUEL_PREPARATION
|
||||
confirmations.Cut()
|
||||
fired.Cut()
|
||||
countdown_step = countdown_length
|
||||
|
||||
message_duelists("<span class='notice'>Set your gun setting and move [required_distance] steps away from your opponent.</span>")
|
||||
|
||||
START_PROCESSING(SSobj,src)
|
||||
|
||||
/datum/duel/proc/get_duelist(obj/gun)
|
||||
var/mob/living/G = gun.loc
|
||||
if(!istype(G) || !G.is_holding(gun))
|
||||
return null
|
||||
return G
|
||||
|
||||
/datum/duel/proc/message_duelists(message)
|
||||
var/mob/living/LA = get_duelist(gun_A)
|
||||
if(LA)
|
||||
to_chat(LA,message)
|
||||
var/mob/living/LB = get_duelist(gun_B)
|
||||
if(LB)
|
||||
to_chat(LB,message)
|
||||
|
||||
/datum/duel/proc/other_gun(obj/item/gun/energy/dueling/G)
|
||||
return G == gun_A ? gun_B : gun_A
|
||||
|
||||
/datum/duel/proc/end()
|
||||
message_duelists("<span class='notice'>Duel finished. Re-engaging safety.</span>")
|
||||
STOP_PROCESSING(SSobj,src)
|
||||
state = DUEL_IDLE
|
||||
|
||||
/datum/duel/process()
|
||||
switch(state)
|
||||
if(DUEL_PREPARATION)
|
||||
if(check_positioning())
|
||||
confirm_positioning()
|
||||
else if (!get_duelist(gun_A) && !get_duelist(gun_B))
|
||||
end()
|
||||
if(DUEL_READY)
|
||||
if(!check_positioning())
|
||||
back_to_prep()
|
||||
else if(confirmations.len == 2)
|
||||
confirm_ready()
|
||||
if(DUEL_COUNTDOWN)
|
||||
if(!check_positioning())
|
||||
back_to_prep()
|
||||
else
|
||||
countdown_step()
|
||||
if(DUEL_FIRING)
|
||||
if(check_fired())
|
||||
end()
|
||||
|
||||
/datum/duel/proc/back_to_prep()
|
||||
message_duelists("<span class='notice'>Positions invalid. Please move to valid positions [required_distance] steps aways from each other to continue.</span>")
|
||||
state = DUEL_PREPARATION
|
||||
confirmations.Cut()
|
||||
countdown_step = countdown_length
|
||||
|
||||
/datum/duel/proc/confirm_positioning()
|
||||
message_duelists("<span class='notice'>Position confirmed. Confirm readiness by pulling the trigger once.</span>")
|
||||
state = DUEL_READY
|
||||
|
||||
/datum/duel/proc/confirm_ready()
|
||||
message_duelists("<span class='notice'>Readiness confirmed. Starting countdown. Commence firing at zero mark.</span>")
|
||||
state = DUEL_COUNTDOWN
|
||||
|
||||
/datum/duel/proc/countdown_step()
|
||||
countdown_step--
|
||||
if(countdown_step == 0)
|
||||
state = DUEL_FIRING
|
||||
message_duelists("<span class='userdanger'>Fire!</span>")
|
||||
else
|
||||
message_duelists("<span class='userdanger'>[countdown_step]!</span>")
|
||||
|
||||
/datum/duel/proc/check_fired()
|
||||
if(fired.len == 2)
|
||||
return TRUE
|
||||
//Let's say if gun was dropped/stowed the user is finished
|
||||
if(!get_duelist(gun_A))
|
||||
return TRUE
|
||||
if(!get_duelist(gun_B))
|
||||
return TRUE
|
||||
return FALSE
|
||||
|
||||
/datum/duel/proc/check_positioning()
|
||||
var/mob/living/A = get_duelist(gun_A)
|
||||
var/mob/living/B = get_duelist(gun_B)
|
||||
if(!A || !B)
|
||||
return FALSE
|
||||
if(!isturf(A.loc) || !isturf(B.loc))
|
||||
return FALSE
|
||||
if(get_dist(A,B) != required_distance)
|
||||
return FALSE
|
||||
for(var/turf/T in getline(get_turf(A),get_turf(B)))
|
||||
if(is_blocked_turf(T,TRUE))
|
||||
return FALSE
|
||||
return TRUE
|
||||
|
||||
/obj/item/gun/energy/dueling
|
||||
name = "dueling pistol"
|
||||
desc = "High-tech dueling pistol. Launches chaff and projectile according to preset settings."
|
||||
icon_state = "dueling_pistol"
|
||||
item_state = "gun"
|
||||
ammo_x_offset = 2
|
||||
w_class = WEIGHT_CLASS_SMALL
|
||||
ammo_type = list(/obj/item/ammo_casing/energy/duel)
|
||||
automatic_charge_overlays = FALSE
|
||||
var/unlocked = FALSE
|
||||
var/setting = DUEL_SETTING_A
|
||||
var/datum/duel/duel
|
||||
var/mutable_appearance/setting_overlay
|
||||
var/hugbox = DUEL_HUGBOX_NONE
|
||||
|
||||
/obj/item/gun/energy/dueling/hugbox
|
||||
hugbox = DUEL_HUGBOX_LETHAL
|
||||
|
||||
/obj/item/gun/energy/dueling/hugbox/stamina
|
||||
hugbox = DUEL_HUGBOX_NONLETHAL
|
||||
|
||||
/obj/item/gun/energy/dueling/Initialize()
|
||||
. = ..()
|
||||
setting_overlay = mutable_appearance(icon,setting_iconstate())
|
||||
add_overlay(setting_overlay)
|
||||
|
||||
/obj/item/gun/energy/dueling/proc/setting_iconstate()
|
||||
switch(setting)
|
||||
if(DUEL_SETTING_A)
|
||||
return "duel_red"
|
||||
if(DUEL_SETTING_B)
|
||||
return "duel_green"
|
||||
if(DUEL_SETTING_C)
|
||||
return "duel_blue"
|
||||
return "duel_red"
|
||||
|
||||
/obj/item/gun/energy/dueling/attack_self(mob/living/user)
|
||||
. = ..()
|
||||
if(duel.state == DUEL_IDLE)
|
||||
duel.try_begin()
|
||||
else
|
||||
toggle_setting(user)
|
||||
|
||||
/obj/item/gun/energy/dueling/proc/toggle_setting(mob/living/user)
|
||||
switch(setting)
|
||||
if(DUEL_SETTING_A)
|
||||
setting = DUEL_SETTING_B
|
||||
if(DUEL_SETTING_B)
|
||||
setting = DUEL_SETTING_C
|
||||
if(DUEL_SETTING_C)
|
||||
setting = DUEL_SETTING_A
|
||||
to_chat(user,"<span class='notice'>You switch [src] setting to [setting] mode.</span>")
|
||||
update_icon()
|
||||
|
||||
/obj/item/gun/energy/dueling/update_icon(force_update)
|
||||
. = ..()
|
||||
if(setting_overlay)
|
||||
cut_overlay(setting_overlay)
|
||||
setting_overlay.icon_state = setting_iconstate()
|
||||
add_overlay(setting_overlay)
|
||||
|
||||
/obj/item/gun/energy/dueling/Destroy()
|
||||
. = ..()
|
||||
if(duel.gun_A == src)
|
||||
duel.gun_A = null
|
||||
if(duel.gun_B == src)
|
||||
duel.gun_B = null
|
||||
duel = null
|
||||
|
||||
/obj/item/gun/energy/dueling/can_trigger_gun(mob/living/user)
|
||||
. = ..()
|
||||
switch(duel.state)
|
||||
if(DUEL_FIRING)
|
||||
return . && !duel.fired[src]
|
||||
if(DUEL_READY)
|
||||
return .
|
||||
else
|
||||
to_chat(user,"<span class='warning'>[src] is locked. Wait for FIRE signal before shooting.</span>")
|
||||
return FALSE
|
||||
|
||||
/obj/item/gun/energy/dueling/proc/is_duelist(mob/living/L)
|
||||
if(!istype(L))
|
||||
return FALSE
|
||||
if(!L.is_holding(duel.other_gun(src)))
|
||||
return FALSE
|
||||
return TRUE
|
||||
|
||||
/obj/item/gun/energy/dueling/process_fire(atom/target, mob/living/user, message, params, zone_override, bonus_spread)
|
||||
if(duel.state == DUEL_READY)
|
||||
duel.confirmations[src] = TRUE
|
||||
to_chat(user,"<span class='notice'>You confirm your readiness.</span>")
|
||||
return
|
||||
else if(!is_duelist(target)) //I kinda want to leave this out just to see someone shoot a bystander or missing.
|
||||
to_chat(user,"<span class='warning'>[src] safety system prevents shooting anyone but your designated opponent.</span>")
|
||||
return
|
||||
else
|
||||
duel.fired[src] = TRUE
|
||||
. = ..()
|
||||
|
||||
/obj/item/gun/energy/dueling/before_firing(target,user)
|
||||
var/obj/item/ammo_casing/energy/duel/D = chambered
|
||||
D.setting = setting
|
||||
D.hugbox = hugbox
|
||||
|
||||
/obj/effect/temp_visual/dueling_chaff
|
||||
icon = 'icons/effects/effects.dmi'
|
||||
icon_state = "shield-old"
|
||||
duration = 30
|
||||
var/setting
|
||||
|
||||
/obj/effect/temp_visual/dueling_chaff/update_icon()
|
||||
. = ..()
|
||||
switch(setting)
|
||||
if(DUEL_SETTING_A)
|
||||
color = "red"
|
||||
if(DUEL_SETTING_B)
|
||||
color = "green"
|
||||
if(DUEL_SETTING_C)
|
||||
color = "blue"
|
||||
|
||||
//Casing
|
||||
|
||||
/obj/item/ammo_casing/energy/duel
|
||||
e_cost = 0
|
||||
projectile_type = /obj/item/projectile/energy/duel
|
||||
var/setting
|
||||
var/hugbox = DUEL_HUGBOX_NONE
|
||||
|
||||
/obj/item/ammo_casing/energy/duel/ready_proj(atom/target, mob/living/user, quiet, zone_override)
|
||||
. = ..()
|
||||
var/obj/item/projectile/energy/duel/D = BB
|
||||
D.setting = setting
|
||||
D.hugbox = hugbox
|
||||
D.update_icon()
|
||||
|
||||
/obj/item/ammo_casing/energy/duel/fire_casing(atom/target, mob/living/user, params, distro, quiet, zone_override, spread, atom/fired_from)
|
||||
. = ..()
|
||||
var/obj/effect/temp_visual/dueling_chaff/C = new(get_turf(user))
|
||||
C.setting = setting
|
||||
C.update_icon()
|
||||
|
||||
//Projectile
|
||||
|
||||
/obj/item/projectile/energy/duel
|
||||
name = "dueling beam"
|
||||
icon_state = "declone"
|
||||
is_reflectable = FALSE
|
||||
homing = TRUE
|
||||
var/setting
|
||||
var/hugbox = DUEL_HUGBOX_NONE
|
||||
|
||||
/obj/item/projectile/energy/duel/update_icon()
|
||||
. = ..()
|
||||
switch(setting)
|
||||
if(DUEL_SETTING_A)
|
||||
color = "red"
|
||||
if(DUEL_SETTING_B)
|
||||
color = "green"
|
||||
if(DUEL_SETTING_C)
|
||||
color = "blue"
|
||||
|
||||
/obj/item/projectile/energy/duel/on_hit(atom/target, blocked)
|
||||
. = ..()
|
||||
var/turf/T = get_turf(target)
|
||||
var/obj/effect/temp_visual/dueling_chaff/C = locate() in T
|
||||
if(C)
|
||||
var/counter_setting
|
||||
switch(setting)
|
||||
if(DUEL_SETTING_A)
|
||||
counter_setting = DUEL_SETTING_B
|
||||
if(DUEL_SETTING_B)
|
||||
counter_setting = DUEL_SETTING_C
|
||||
if(DUEL_SETTING_C)
|
||||
counter_setting = DUEL_SETTING_A
|
||||
if(C.setting == counter_setting)
|
||||
return BULLET_ACT_BLOCK
|
||||
|
||||
var/mob/living/L = target
|
||||
if(!istype(target))
|
||||
return BULLET_ACT_BLOCK
|
||||
|
||||
switch(hugbox)
|
||||
if(DUEL_HUGBOX_NONE)
|
||||
var/obj/item/bodypart/B = L.get_bodypart(BODY_ZONE_HEAD)
|
||||
B.dismember()
|
||||
qdel(B)
|
||||
if(DUEL_HUGBOX_LETHAL)
|
||||
L.adjustBruteLoss(180)
|
||||
L.death() //Die, powergamers.
|
||||
if(DUEL_HUGBOX_NONLETHAL)
|
||||
L.adjustStaminaLoss(200, forced = TRUE) //Die, powergamers x 2
|
||||
L.Knockdown(100, override_hardstun = 100) //For good measure.
|
||||
|
||||
//Storage case.
|
||||
/obj/item/storage/lockbox/dueling
|
||||
name = "dueling pistol case"
|
||||
desc = "Let's solve this like gentlespacemen."
|
||||
icon_state = "medalbox+l"
|
||||
item_state = "syringe_kit"
|
||||
lefthand_file = 'icons/mob/inhands/equipment/medical_lefthand.dmi'
|
||||
righthand_file = 'icons/mob/inhands/equipment/medical_righthand.dmi'
|
||||
w_class = WEIGHT_CLASS_NORMAL
|
||||
req_access = list(ACCESS_CAPTAIN)
|
||||
icon_locked = "medalbox+l"
|
||||
icon_closed = "medalbox"
|
||||
icon_broken = "medalbox+b"
|
||||
var/gun_type = /obj/item/gun/energy/dueling
|
||||
|
||||
/obj/item/storage/lockbox/dueling/ComponentInitialize()
|
||||
. = ..()
|
||||
var/datum/component/storage/STR = GetComponent(/datum/component/storage)
|
||||
STR.max_w_class = WEIGHT_CLASS_SMALL
|
||||
STR.max_items = 2
|
||||
STR.can_hold = typecacheof(/obj/item/gun/energy/dueling)
|
||||
|
||||
/obj/item/storage/lockbox/dueling/update_icon()
|
||||
cut_overlays()
|
||||
var/locked = SEND_SIGNAL(src, COMSIG_IS_STORAGE_LOCKED)
|
||||
if(locked)
|
||||
icon_state = "medalbox+l"
|
||||
else
|
||||
icon_state = "medalbox"
|
||||
if(open)
|
||||
icon_state += "open"
|
||||
if(broken)
|
||||
icon_state += "+b"
|
||||
|
||||
/obj/item/storage/lockbox/dueling/PopulateContents()
|
||||
. = ..()
|
||||
var/obj/item/gun/energy/dueling/gun_A = new gun_type(src)
|
||||
var/obj/item/gun/energy/dueling/gun_B = new gun_type(src)
|
||||
var/datum/duel/D = new
|
||||
gun_A.duel = D
|
||||
gun_B.duel = D
|
||||
D.gun_A = gun_A
|
||||
D.gun_B = gun_B
|
||||
|
||||
/obj/item/storage/lockbox/dueling/hugbox
|
||||
gun_type = /obj/item/gun/energy/dueling/hugbox
|
||||
|
||||
/obj/item/storage/lockbox/dueling/hugbox/stamina
|
||||
gun_type = /obj/item/gun/energy/dueling/hugbox/stamina
|
||||
@@ -15,10 +15,9 @@
|
||||
/obj/item/clothing/head/russobluecamohat = 20
|
||||
)
|
||||
contraband = list(
|
||||
/obj/item/clothing/under/syndicate/tacticool = 4,
|
||||
/obj/item/clothing/suit/armor/vest/russian_coat = 4,
|
||||
/obj/item/clothing/mask/balaclava = 4,
|
||||
/obj/item/clothing/suit/russofurcoat = 4,
|
||||
/obj/item/clothing/head/russofurhat = 4,
|
||||
/obj/item/clothing/head/helmet/rus_ushanka = 4,
|
||||
/obj/item/clothing/suit/space/hardsuit/soviet = 3,
|
||||
/obj/item/gun/energy/laser/LaserAK = 4
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user