Skip to content

Commit

Permalink
Costumes for nuclear operatives (tgstation#34487)
Browse files Browse the repository at this point in the history
πŸ†‘ coiax
add: Nuclear operatives that wish to fail in style can purchase Centcom
Official and Clown costumes. They can also buy a defective chameleon
kit.
/πŸ†‘

It's funny. Other costume ideas welcome.

    Also merges two Initializes in camo guns
    Centcom Inspector outfit does have a Centcom headset, but it has no encryption chips. The outfit also is missing an egun.
    Removes the "Stealthy" description from camo shoes in the nuke op uplink they buy the same damn shoes, they're just more expensive for immersive and plausible reasons.
  • Loading branch information
coiax authored and optimumtact committed Jan 24, 2018
1 parent 6047130 commit a00d4b1
Show file tree
Hide file tree
Showing 8 changed files with 155 additions and 43 deletions.
4 changes: 3 additions & 1 deletion code/game/machinery/PDApainter.dm
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,9 @@
/obj/item/device/pda/ai,
/obj/item/device/pda/heads,
/obj/item/device/pda/clear,
/obj/item/device/pda/syndicate)
/obj/item/device/pda/syndicate,
/obj/item/device/pda/chameleon,
/obj/item/device/pda/chameleon/broken)

for(var/P in typesof(/obj/item/device/pda) - blocked)
var/obj/item/device/pda/D = new P
Expand Down
4 changes: 4 additions & 0 deletions code/game/objects/items/devices/radio/headset.dm
Original file line number Diff line number Diff line change
Expand Up @@ -194,6 +194,10 @@
keyslot = new /obj/item/device/encryptionkey/headset_com
keyslot2 = new /obj/item/device/encryptionkey/headset_cent

/obj/item/device/radio/headset/headset_cent/empty
keyslot = null
keyslot2 = null

/obj/item/device/radio/headset/headset_cent/commander
keyslot = new /obj/item/device/encryptionkey/heads/captain

Expand Down
2 changes: 1 addition & 1 deletion code/game/objects/items/implants/implant_clown.dm
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
playsound(loc, 'sound/misc/sadtrombone.ogg', 50, 0)

/obj/item/implanter/sad_trombone
name = "implanter (sad_trombone)"
name = "implanter (sad trombone)"
imp_type = /obj/item/implant/sad_trombone

/obj/item/implantcase/sad_trombone
Expand Down
13 changes: 13 additions & 0 deletions code/game/objects/items/storage/backpack.dm
Original file line number Diff line number Diff line change
Expand Up @@ -553,3 +553,16 @@
new /obj/item/reagent_containers/food/drinks/bottle/vodka/badminka(src)
new /obj/item/reagent_containers/syringe/stimulants(src)
new /obj/item/grenade/syndieminibomb(src)

// For ClownOps.
/obj/item/storage/backpack/duffelbag/clown/syndie
slowdown = 0
silent = TRUE

/obj/item/storage/backpack/duffelbag/clown/syndie/PopulateContents()
new /obj/item/device/pda/clown(src)
new /obj/item/clothing/under/rank/clown(src)
new /obj/item/clothing/shoes/clown_shoes(src)
new /obj/item/clothing/mask/gas/clown_hat(src)
new /obj/item/bikehorn(src)
new /obj/item/implanter/sad_trombone(src)
24 changes: 24 additions & 0 deletions code/game/objects/items/storage/uplink_kits.dm
Original file line number Diff line number Diff line change
Expand Up @@ -308,3 +308,27 @@

/obj/item/storage/box/syndie_kit/imp_radio/PopulateContents()
new /obj/item/implanter/radio(src)

/obj/item/storage/box/syndie_kit/centcom_costume/PopulateContents()
new /obj/item/clothing/under/rank/centcom_officer(src)
new /obj/item/clothing/shoes/sneakers/black(src)
new /obj/item/clothing/gloves/color/black(src)
new /obj/item/device/radio/headset/headset_cent/empty(src)
new /obj/item/clothing/glasses/sunglasses(src)
new /obj/item/storage/backpack/satchel(src)
new /obj/item/device/pda/heads(src)
new /obj/item/clipboard(src)

/obj/item/storage/box/syndie_kit/chameleon/broken/PopulateContents()
new /obj/item/clothing/under/chameleon/broken(src)
new /obj/item/clothing/suit/chameleon/broken(src)
new /obj/item/clothing/gloves/chameleon/broken(src)
new /obj/item/clothing/shoes/chameleon/broken(src)
new /obj/item/clothing/glasses/chameleon/broken(src)
new /obj/item/clothing/head/chameleon/broken(src)
new /obj/item/clothing/mask/chameleon/broken(src)
new /obj/item/storage/backpack/chameleon/broken(src)
new /obj/item/device/radio/headset/chameleon/broken(src)
new /obj/item/stamp/chameleon/broken(src)
new /obj/item/device/pda/chameleon/broken(src)
// No chameleon laser, they can't randomise for //REASONS//
100 changes: 72 additions & 28 deletions code/modules/clothing/chameleon.dm
Original file line number Diff line number Diff line change
Expand Up @@ -153,13 +153,15 @@
select_look(owner)
return 1

/datum/action/item_action/chameleon/change/proc/emp_randomise()
/datum/action/item_action/chameleon/change/proc/emp_randomise(var/amount = EMP_RANDOMISE_TIME)
if(istype(target, /obj/item/gun/energy/laser/chameleon))
return //Please no crash!
START_PROCESSING(SSprocessing, src)
random_look(owner)

emp_timer = world.time + EMP_RANDOMISE_TIME
var/new_value = world.time + amount
if(new_value > emp_timer)
emp_timer = new_value

/datum/action/item_action/chameleon/change/process()
if(world.time > emp_timer)
Expand Down Expand Up @@ -189,8 +191,8 @@
item_state = "engi_suit"
item_color = "engine"

/obj/item/clothing/under/chameleon/New()
..()
/obj/item/clothing/under/chameleon/Initialize()
. = ..()
chameleon_action = new(src)
chameleon_action.chameleon_type = /obj/item/clothing/under
chameleon_action.chameleon_name = "Jumpsuit"
Expand All @@ -200,6 +202,10 @@
/obj/item/clothing/under/chameleon/emp_act(severity)
chameleon_action.emp_randomise()

/obj/item/clothing/under/chameleon/broken/Initialize()
. = ..()
chameleon_action.emp_randomise(INFINITY)

/obj/item/clothing/suit/chameleon
name = "armor"
desc = "A slim armored vest that protects against most types of damage."
Expand All @@ -211,8 +217,8 @@

var/datum/action/item_action/chameleon/change/chameleon_action

/obj/item/clothing/suit/chameleon/New()
..()
/obj/item/clothing/suit/chameleon/Initialize()
. = ..()
chameleon_action = new(src)
chameleon_action.chameleon_type = /obj/item/clothing/suit
chameleon_action.chameleon_name = "Suit"
Expand All @@ -222,6 +228,10 @@
/obj/item/clothing/suit/chameleon/emp_act(severity)
chameleon_action.emp_randomise()

/obj/item/clothing/suit/chameleon/broken/Initialize()
. = ..()
chameleon_action.emp_randomise(INFINITY)

/obj/item/clothing/glasses/chameleon
name = "Optical Meson Scanner"
desc = "Used by engineering and mining staff to see basic structural and terrain layouts through walls, regardless of lighting condition."
Expand All @@ -232,8 +242,8 @@

var/datum/action/item_action/chameleon/change/chameleon_action

/obj/item/clothing/glasses/chameleon/New()
..()
/obj/item/clothing/glasses/chameleon/Initialize()
. = ..()
chameleon_action = new(src)
chameleon_action.chameleon_type = /obj/item/clothing/glasses
chameleon_action.chameleon_name = "Glasses"
Expand All @@ -243,6 +253,10 @@
/obj/item/clothing/glasses/chameleon/emp_act(severity)
chameleon_action.emp_randomise()

/obj/item/clothing/glasses/chameleon/broken/Initialize()
. = ..()
chameleon_action.emp_randomise(INFINITY)

/obj/item/clothing/gloves/chameleon
desc = "These gloves will protect the wearer from electric shock."
name = "insulated gloves"
Expand All @@ -254,8 +268,8 @@

var/datum/action/item_action/chameleon/change/chameleon_action

/obj/item/clothing/gloves/chameleon/New()
..()
/obj/item/clothing/gloves/chameleon/Initialize()
. = ..()
chameleon_action = new(src)
chameleon_action.chameleon_type = /obj/item/clothing/gloves
chameleon_action.chameleon_name = "Gloves"
Expand All @@ -265,6 +279,10 @@
/obj/item/clothing/gloves/chameleon/emp_act(severity)
chameleon_action.emp_randomise()

/obj/item/clothing/gloves/chameleon/broken/Initialize()
. = ..()
chameleon_action.emp_randomise(INFINITY)

/obj/item/clothing/head/chameleon
name = "grey cap"
desc = "It's a baseball hat in a tasteful grey colour."
Expand All @@ -276,8 +294,8 @@

var/datum/action/item_action/chameleon/change/chameleon_action

/obj/item/clothing/head/chameleon/New()
..()
/obj/item/clothing/head/chameleon/Initialize()
. = ..()
chameleon_action = new(src)
chameleon_action.chameleon_type = /obj/item/clothing/head
chameleon_action.chameleon_name = "Hat"
Expand All @@ -287,15 +305,19 @@
/obj/item/clothing/head/chameleon/emp_act(severity)
chameleon_action.emp_randomise()

/obj/item/clothing/head/chameleon/broken/Initialize()
. = ..()
chameleon_action.emp_randomise(INFINITY)

/obj/item/clothing/head/chameleon/drone
// The camohat, I mean, holographic hat projection, is part of the
// drone itself.
flags_1 = NODROP_1
armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0, fire = 0, acid = 0)
// which means it offers no protection, it's just air and light

/obj/item/clothing/head/chameleon/drone/New()
..()
/obj/item/clothing/head/chameleon/drone/Initialize()
. = ..()
chameleon_action.random_look()
var/datum/action/item_action/chameleon/drone/togglehatmask/togglehatmask_action = new(src)
togglehatmask_action.UpdateButtonIcon()
Expand All @@ -320,8 +342,8 @@

var/datum/action/item_action/chameleon/change/chameleon_action

/obj/item/clothing/mask/chameleon/New()
..()
/obj/item/clothing/mask/chameleon/Initialize()
. = ..()
chameleon_action = new(src)
chameleon_action.chameleon_type = /obj/item/clothing/mask
chameleon_action.chameleon_name = "Mask"
Expand All @@ -331,6 +353,10 @@
/obj/item/clothing/mask/chameleon/emp_act(severity)
chameleon_action.emp_randomise()

/obj/item/clothing/mask/chameleon/broken/Initialize()
. = ..()
chameleon_action.emp_randomise(INFINITY)

/obj/item/clothing/mask/chameleon/attack_self(mob/user)
vchange = !vchange
to_chat(user, "<span class='notice'>The voice changer is now [vchange ? "on" : "off"]!</span>")
Expand All @@ -343,8 +369,8 @@
// Can drones use the voice changer part? Let's not find out.
vchange = 0

/obj/item/clothing/mask/chameleon/drone/New()
..()
/obj/item/clothing/mask/chameleon/drone/Initialize()
. = ..()
chameleon_action.random_look()
var/datum/action/item_action/chameleon/drone/togglehatmask/togglehatmask_action = new(src)
togglehatmask_action.UpdateButtonIcon()
Expand All @@ -367,8 +393,8 @@

var/datum/action/item_action/chameleon/change/chameleon_action

/obj/item/clothing/shoes/chameleon/New()
..()
/obj/item/clothing/shoes/chameleon/Initialize()
. = ..()
chameleon_action = new(src)
chameleon_action.chameleon_type = /obj/item/clothing/shoes
chameleon_action.chameleon_name = "Shoes"
Expand All @@ -378,6 +404,10 @@
/obj/item/clothing/shoes/chameleon/emp_act(severity)
chameleon_action.emp_randomise()

/obj/item/clothing/shoes/chameleon/broken/Initialize()
. = ..()
chameleon_action.emp_randomise(INFINITY)

/obj/item/gun/energy/laser/chameleon
name = "practice laser gun"
desc = "A modified version of the basic laser gun, this one fires less concentrated energy bolts designed for target practice."
Expand Down Expand Up @@ -405,8 +435,6 @@
chameleon_action.chameleon_blacklist = typecacheof(/obj/item/gun/magic, ignore_root_path = FALSE)
chameleon_action.initialize_disguises()

/obj/item/gun/energy/laser/chameleon/Initialize()
. = ..()
projectile_copy_vars = list("name", "icon", "icon_state", "item_state", "speed", "color", "hitsound", "forcedodge", "impact_effect_type", "range", "suppressed", "hitsound_wall", "impact_effect_type", "pass_flags")
chameleon_projectile_vars = list("name" = "practice laser", "icon" = 'icons/obj/projectiles.dmi', "icon_state" = "laser")
gun_copy_vars = list("fire_sound", "burst_size", "fire_delay")
Expand Down Expand Up @@ -505,8 +533,8 @@
name = "backpack"
var/datum/action/item_action/chameleon/change/chameleon_action

/obj/item/storage/backpack/chameleon/New()
..()
/obj/item/storage/backpack/chameleon/Initialize()
. = ..()
chameleon_action = new(src)
chameleon_action.chameleon_type = /obj/item/storage/backpack
chameleon_action.chameleon_name = "Backpack"
Expand All @@ -515,14 +543,18 @@
/obj/item/storage/backpack/chameleon/emp_act(severity)
chameleon_action.emp_randomise()

/obj/item/storage/backpack/chameleon/broken/Initialize()
. = ..()
chameleon_action.emp_randomise(INFINITY)

/obj/item/storage/belt/chameleon
name = "toolbelt"
desc = "Holds tools."
silent = 1
var/datum/action/item_action/chameleon/change/chameleon_action

/obj/item/storage/belt/chameleon/New()
..()
/obj/item/storage/belt/chameleon/Initialize()
. = ..()
chameleon_action = new(src)
chameleon_action.chameleon_type = /obj/item/storage/belt
chameleon_action.chameleon_name = "Belt"
Expand All @@ -531,6 +563,10 @@
/obj/item/storage/belt/chameleon/emp_act(severity)
chameleon_action.emp_randomise()

/obj/item/storage/belt/chameleon/broken/Initialize()
. = ..()
chameleon_action.emp_randomise(INFINITY)

/obj/item/device/radio/headset/chameleon
name = "radio headset"
var/datum/action/item_action/chameleon/change/chameleon_action
Expand All @@ -545,12 +581,16 @@
/obj/item/device/radio/headset/chameleon/emp_act(severity)
chameleon_action.emp_randomise()

/obj/item/device/radio/headset/chameleon/broken/Initialize()
. = ..()
chameleon_action.emp_randomise(INFINITY)

/obj/item/device/pda/chameleon
name = "PDA"
var/datum/action/item_action/chameleon/change/chameleon_action

/obj/item/device/pda/chameleon/New()
..()
/obj/item/device/pda/chameleon/Initialize()
. = ..()
chameleon_action = new(src)
chameleon_action.chameleon_type = /obj/item/device/pda
chameleon_action.chameleon_name = "PDA"
Expand All @@ -560,3 +600,7 @@
/obj/item/device/pda/chameleon/emp_act(severity)
chameleon_action.emp_randomise()

/obj/item/device/pda/chameleon/broken/Initialize()
. = ..()
chameleon_action.emp_randomise(INFINITY)

11 changes: 11 additions & 0 deletions code/modules/paperwork/stamps.dm
Original file line number Diff line number Diff line change
Expand Up @@ -109,3 +109,14 @@
if(initial(stamp_type.name) == input_stamp)
break
change_to(stamp_type)

/obj/item/stamp/chameleon/broken/Initialize()
. = ..()
START_PROCESSING(SSobj, src)

/obj/item/stamp/chameleon/broken/Destroy()
STOP_PROCESSING(SSobj, src)
return ..()

/obj/item/stamp/chameleon/broken/process()
change_to(pick(stamp_types))
Loading

0 comments on commit a00d4b1

Please sign in to comment.