mirror of
https://github.com/Aurorastation/Aurora.3.git
synced 2026-08-22 20:43:10 +01:00
chameleon shoes now have a proper icon_state and are no longer invisble :) also fixed emp reseting to the bad icon_state making it impossible to find
580 lines
18 KiB
Plaintext
580 lines
18 KiB
Plaintext
//*****************
|
|
//**Cham Jumpsuit**
|
|
//*****************
|
|
|
|
/obj/item/proc/disguise(newtype)
|
|
//this is necessary, unfortunately, as initial() does not play well with list vars
|
|
var/obj/item/copy = new newtype(null) //so that it is GCed once we exit
|
|
|
|
var/original_layer = layer
|
|
var/original_plane = plane
|
|
appearance = copy
|
|
layer = original_layer // So it doesn't get fucked up in the inv.
|
|
plane = original_plane
|
|
item_state = copy.item_state
|
|
body_parts_covered = copy.body_parts_covered
|
|
flags_inv = copy.flags_inv
|
|
body_parts_covered = copy.body_parts_covered
|
|
contained_sprite = copy.contained_sprite
|
|
icon_override = copy.icon_override
|
|
icon_species_tag = copy.icon_species_tag
|
|
|
|
if(copy.item_state_slots) // copy.item_state_slots.Copy() apears to be undefined
|
|
item_state_slots = copy.item_state_slots // however this appears to work perfectly fine
|
|
if(copy.item_icons)
|
|
item_icons = copy.item_icons.Copy()
|
|
if(copy.sprite_sheets)
|
|
sprite_sheets = copy.sprite_sheets.Copy()
|
|
//copying sprite_sheets_obj should be unnecessary as chameleon items are not refittable.
|
|
|
|
QDEL_IN(copy, 1) // The call chain should terminate by the time this triggers.
|
|
|
|
return copy //for inheritance
|
|
|
|
/proc/generate_chameleon_choices(var/basetype, var/blacklist=list(), var/list/whitelist=list())
|
|
. = list()
|
|
|
|
var/i = 1 //in case there is a collision with both name AND icon_state
|
|
for(var/typepath in (whitelist + typesof(basetype) - blacklist))
|
|
var/obj/O = typepath
|
|
if(initial(O.icon) && initial(O.icon_state))
|
|
var/name = initial(O.name)
|
|
if(name in .)
|
|
name += " ([initial(O.icon_state)])"
|
|
if(name in .)
|
|
name += " \[[i++]\]"
|
|
.[name] = typepath
|
|
|
|
/obj/item/clothing/under/chameleon
|
|
//starts off as black
|
|
name = "black jumpsuit"
|
|
desc = "It's a plain jumpsuit. It seems to have a small dial on the wrist."
|
|
icon_state = "ninja"
|
|
item_state = "ninja"
|
|
origin_tech = list(TECH_ILLEGAL = 3)
|
|
var/global/list/clothing_choices
|
|
|
|
/obj/item/clothing/under/chameleon/Initialize()
|
|
. = ..()
|
|
if(!clothing_choices)
|
|
var/blocked = list(src.type, /obj/item/clothing/under/gimmick, /obj/item/clothing/under/rank/centcom_officer/bst)//Prevent infinite loops and bad jumpsuits.
|
|
clothing_choices = generate_chameleon_choices(/obj/item/clothing/under, blocked)
|
|
|
|
/obj/item/clothing/under/chameleon/emp_act(severity)
|
|
. = ..()
|
|
|
|
name = "psychedelic"
|
|
desc = "Groovy!"
|
|
icon_state = "psyche"
|
|
item_state_slots[slot_w_uniform_str] = "psyche"
|
|
update_icon()
|
|
update_clothing_icon()
|
|
|
|
/obj/item/clothing/under/chameleon/verb/change()
|
|
set name = "Change Jumpsuit Appearance"
|
|
set category = "Chameleon Items"
|
|
set src in usr
|
|
|
|
var/picked = tgui_input_list(usr, "Select disguise.", "Disguise", clothing_choices)
|
|
|
|
if(!picked)
|
|
return
|
|
|
|
disguise(clothing_choices[picked])
|
|
update_clothing_icon() //so our overlays update.
|
|
|
|
//*****************
|
|
//**Chameleon Hat**
|
|
//*****************
|
|
|
|
/obj/item/clothing/head/chameleon
|
|
name = "grey cap"
|
|
desc = "It looks like a softcap in a tasteless color, but upon closer inspection there's an advanced holographic array installed inside. It seems to have a small dial inside."
|
|
icon = 'icons/obj/clothing/hats/soft_caps.dmi'
|
|
icon_state = "softcap"
|
|
item_state = "softcap"
|
|
origin_tech = list(TECH_ILLEGAL = 3)
|
|
body_parts_covered = 0
|
|
var/global/list/clothing_choices
|
|
|
|
/obj/item/clothing/head/chameleon/Initialize()
|
|
. = ..()
|
|
if(!clothing_choices)
|
|
var/blocked = list(src.type, /obj/item/clothing/head/justice,)//Prevent infinite loops and bad hats.
|
|
clothing_choices = generate_chameleon_choices(/obj/item/clothing/head, blocked)
|
|
|
|
/obj/item/clothing/head/chameleon/emp_act(severity) //Because we don't have psych for all slots right now but still want a downside to EMP. In this case your cover's blown.
|
|
. = ..()
|
|
|
|
name = initial(name)
|
|
desc = "It's a baseball hat in a tasteful grey colour."
|
|
icon_state = initial(icon_state)
|
|
update_icon()
|
|
update_clothing_icon()
|
|
|
|
/obj/item/clothing/head/chameleon/verb/change()
|
|
set name = "Change Hat/Helmet Appearance"
|
|
set category = "Chameleon Items"
|
|
set src in usr
|
|
|
|
var/picked = tgui_input_list(usr, "Select disguise.", "Disguise", clothing_choices)
|
|
|
|
if(!picked)
|
|
return
|
|
|
|
disguise(clothing_choices[picked])
|
|
update_clothing_icon() //so our overlays update.
|
|
|
|
//******************
|
|
//**Chameleon Suit**
|
|
//******************
|
|
|
|
/obj/item/clothing/suit/chameleon
|
|
name = "armor"
|
|
icon_state = "armor"
|
|
item_state = "armor"
|
|
desc = "It appears to be a vest of standard armor, except this is embedded with a hidden holographic cloaker, allowing it to change it's appearance, but offering no protection.. It seems to have a small dial inside."
|
|
origin_tech = list(TECH_ILLEGAL = 3)
|
|
var/global/list/clothing_choices
|
|
|
|
/obj/item/clothing/suit/chameleon/Initialize()
|
|
. = ..()
|
|
if(!clothing_choices)
|
|
var/blocked = list(src.type, /obj/item/clothing/suit/cyborg_suit, /obj/item/clothing/suit/justice)
|
|
clothing_choices = generate_chameleon_choices(/obj/item/clothing/suit, blocked)
|
|
|
|
/obj/item/clothing/suit/chameleon/emp_act(severity) //Because we don't have psych for all slots right now but still want a downside to EMP. In this case your cover's blown.
|
|
. = ..()
|
|
|
|
name = "armor"
|
|
desc = "An armored vest that protects against some damage."
|
|
icon_state = "armor"
|
|
update_icon()
|
|
update_clothing_icon()
|
|
|
|
/obj/item/clothing/suit/chameleon/verb/change()
|
|
set name = "Change Oversuit Appearance"
|
|
set category = "Chameleon Items"
|
|
set src in usr
|
|
|
|
var/picked = tgui_input_list(usr, "Select disguise.", "Disguise", clothing_choices)
|
|
|
|
if(!picked)
|
|
return
|
|
|
|
disguise(clothing_choices[picked])
|
|
update_clothing_icon() //so our overlays update.
|
|
|
|
//*******************
|
|
//**Chameleon Plate Carrier**
|
|
//*******************
|
|
|
|
/obj/item/clothing/suit/armor/chameleon
|
|
name = "standard plate carrier"
|
|
icon = 'icons/obj/clothing/suits.dmi'
|
|
contained_sprite = TRUE
|
|
icon_state = "plate_chameleon"
|
|
item_state = "plate_chameleon"
|
|
w_class = WEIGHT_CLASS_NORMAL
|
|
body_parts_covered = UPPER_TORSO|LOWER_TORSO|ARMS|LEGS
|
|
armor = list(
|
|
MELEE = ARMOR_MELEE_KEVLAR,
|
|
BULLET = ARMOR_BALLISTIC_MEDIUM,
|
|
LASER = ARMOR_LASER_KEVLAR,
|
|
ENERGY = ARMOR_ENERGY_SMALL,
|
|
BOMB = ARMOR_BOMB_PADDED
|
|
)
|
|
desc = "A standard plate carrier that upon closer inspection reveal a holographic cloaker that allows it to change its appearance. It seems to have a small dial inside."
|
|
origin_tech = list(TECH_ILLEGAL = 3)
|
|
var/global/list/clothing_choices
|
|
|
|
/obj/item/clothing/suit/armor/chameleon/Initialize()
|
|
. = ..()
|
|
if(!clothing_choices)
|
|
var/blocked = list(src.type, /obj/item/clothing/suit/cyborg_suit, /obj/item/clothing/suit/justice)
|
|
clothing_choices = generate_chameleon_choices(/obj/item/clothing/suit, blocked)
|
|
|
|
/obj/item/clothing/suit/armor/chameleon/emp_act(severity) //Because we don't have psych for all slots right now but still want a downside to EMP. In this case your cover's blown.
|
|
. = ..()
|
|
|
|
name = "plate carrier"
|
|
desc = "A generic plate carrier."
|
|
icon_state = "carrier_chameleon"
|
|
update_icon()
|
|
update_clothing_icon()
|
|
|
|
/obj/item/clothing/suit/armor/chameleon/verb/change()
|
|
set name = "Change Oversuit Appearance"
|
|
set category = "Chameleon Items"
|
|
set src in usr
|
|
|
|
var/picked = tgui_input_list(usr, "Select disguise.", "Disguise", clothing_choices)
|
|
|
|
if(!picked)
|
|
return
|
|
|
|
disguise(clothing_choices[picked])
|
|
update_clothing_icon() //so our overlays update.
|
|
|
|
//*******************
|
|
//**Chameleon Helmet**
|
|
//*******************
|
|
|
|
/obj/item/clothing/head/helmet/chameleon
|
|
name = "standard helmet"
|
|
desc = "A standard helmet that upon closer inspection reveal a holographic cloaker that allows it to change its appearance. It seems to have a small dial on the inside."
|
|
icon = 'icons/obj/item/clothing/head/modular_armor_helmets.dmi'
|
|
icon_state = "helm_generic"
|
|
item_state = "helm_generic"
|
|
contained_sprite = TRUE
|
|
origin_tech = list(TECH_ILLEGAL = 3)
|
|
armor = list(
|
|
MELEE = ARMOR_MELEE_KEVLAR,
|
|
BULLET = ARMOR_BALLISTIC_MEDIUM,
|
|
LASER = ARMOR_LASER_KEVLAR,
|
|
ENERGY = ARMOR_ENERGY_SMALL,
|
|
BOMB = ARMOR_BOMB_PADDED
|
|
)
|
|
var/global/list/clothing_choices
|
|
|
|
/obj/item/clothing/head/helmet/chameleon/Initialize()
|
|
. = ..()
|
|
if(!clothing_choices)
|
|
var/blocked = list(src.type, /obj/item/clothing/head/justice,)//Prevent infinite loops and bad hats.
|
|
clothing_choices = generate_chameleon_choices(/obj/item/clothing/head, blocked)
|
|
|
|
/obj/item/clothing/head/helmet/chameleon/emp_act(severity) //Because we don't have psych for all slots right now but still want a downside to EMP. In this case your cover's blown.
|
|
. = ..()
|
|
|
|
name = "standard helmet"
|
|
desc = "A generic helmet."
|
|
icon_state = initial(icon_state)
|
|
update_icon()
|
|
update_clothing_icon()
|
|
|
|
/obj/item/clothing/head/helmet/chameleon/verb/change()
|
|
set name = "Change Hat/Helmet Appearance"
|
|
set category = "Chameleon Items"
|
|
set src in usr
|
|
|
|
var/picked = tgui_input_list(usr, "Select disguise.", "Disguise", clothing_choices)
|
|
|
|
if(!picked)
|
|
return
|
|
|
|
disguise(clothing_choices[picked])
|
|
update_clothing_icon() //so our overlays update.
|
|
|
|
//*******************
|
|
//**Chameleon Shoes**
|
|
//*******************
|
|
/obj/item/clothing/shoes/chameleon
|
|
name = "black shoes"
|
|
icon = 'icons/obj/item/clothing/shoes/sneakers.dmi'
|
|
icon_state = "black"
|
|
item_state = "black"
|
|
contained_sprite = TRUE
|
|
desc = "They're comfy black shoes, with clever cloaking technology built in. It seems to have a small dial on the back of each shoe."
|
|
silent = 1
|
|
origin_tech = list(TECH_ILLEGAL = 3)
|
|
species_restricted = list("exclude",BODYTYPE_GOLEM,BODYTYPE_VAURCA_BREEDER,BODYTYPE_VAURCA_WARFORM)
|
|
var/global/list/clothing_choices
|
|
|
|
/obj/item/clothing/shoes/chameleon/Initialize()
|
|
. = ..()
|
|
if(!clothing_choices)
|
|
var/blocked = list(src.type, /obj/item/clothing/shoes/galoshes/syndie, /obj/item/clothing/shoes/cyborg, /obj/item/clothing/shoes/sneakers/black/bst)//prevent infinite loops and bad shoes.
|
|
clothing_choices = generate_chameleon_choices(/obj/item/clothing/shoes, blocked)
|
|
|
|
/obj/item/clothing/shoes/chameleon/emp_act(severity) //Because we don't have psych for all slots right now but still want a downside to EMP. In this case your cover's blown.
|
|
. = ..()
|
|
|
|
name = "black shoes"
|
|
desc = "A pair of black shoes."
|
|
icon = 'icons/obj/item/clothing/shoes/sneakers.dmi'
|
|
icon_state = "black"
|
|
item_state = "black"
|
|
contained_sprite = TRUE
|
|
update_icon()
|
|
update_clothing_icon()
|
|
|
|
/obj/item/clothing/shoes/chameleon/verb/change()
|
|
set name = "Change Footwear Appearance"
|
|
set category = "Chameleon Items"
|
|
set src in usr
|
|
|
|
var/picked = tgui_input_list(usr, "Select disguise.", "Disguise", clothing_choices)
|
|
|
|
if(!picked)
|
|
return
|
|
|
|
disguise(clothing_choices[picked])
|
|
update_clothing_icon() //so our overlays update.
|
|
|
|
|
|
//**********************
|
|
//**Chameleon Backpack**
|
|
//**********************
|
|
/obj/item/storage/backpack/chameleon
|
|
name = "backpack"
|
|
icon_state = "backpack"
|
|
item_state = "backpack"
|
|
desc = "A backpack outfitted with cloaking tech. It seems to have a small dial inside, kept away from the storage."
|
|
origin_tech = list(TECH_ILLEGAL = 3)
|
|
var/global/list/clothing_choices
|
|
|
|
/obj/item/storage/backpack/chameleon/fill()
|
|
..()
|
|
if(!clothing_choices)
|
|
var/blocked = list(src.type, /obj/item/storage/backpack/satchel/leather/withwallet)
|
|
clothing_choices = generate_chameleon_choices(/obj/item/storage/backpack, blocked)
|
|
|
|
/obj/item/storage/backpack/chameleon/emp_act(severity) //Because we don't have psych for all slots right now but still want a downside to EMP. In this case your cover's blown.
|
|
. = ..()
|
|
|
|
name = "backpack"
|
|
desc = "You wear this on your back and put items into it."
|
|
icon_state = "backpack"
|
|
item_state = "backpack"
|
|
update_icon()
|
|
if (ismob(src.loc))
|
|
var/mob/M = src.loc
|
|
M.update_inv_back()
|
|
|
|
/obj/item/storage/backpack/chameleon/verb/change()
|
|
set name = "Change Backpack Appearance"
|
|
set category = "Chameleon Items"
|
|
set src in usr
|
|
|
|
var/picked = tgui_input_list(usr, "Select disguise.", "Disguise", clothing_choices)
|
|
|
|
if(!picked)
|
|
return
|
|
|
|
disguise(clothing_choices[picked])
|
|
|
|
//so our overlays update.
|
|
if (ismob(src.loc))
|
|
var/mob/M = src.loc
|
|
M.update_inv_back()
|
|
|
|
|
|
//********************
|
|
//**Chameleon Gloves**
|
|
//********************
|
|
|
|
/obj/item/clothing/gloves/chameleon
|
|
name = "work gloves"
|
|
icon_state = "black"
|
|
item_state = "black"
|
|
desc = "It looks like a pair of gloves, but it seems to have a small dial inside."
|
|
origin_tech = list(TECH_ILLEGAL = 3)
|
|
species_restricted = list("exclude",BODYTYPE_GOLEM,BODYTYPE_VAURCA_BREEDER,BODYTYPE_VAURCA_WARFORM)
|
|
var/global/list/clothing_choices
|
|
|
|
/obj/item/clothing/gloves/chameleon/Initialize()
|
|
. = ..()
|
|
if(!clothing_choices)
|
|
var/blocked = list(src.type, /obj/item/clothing/gloves/swat/bst)
|
|
clothing_choices = generate_chameleon_choices(/obj/item/clothing/gloves, blocked)
|
|
|
|
/obj/item/clothing/gloves/chameleon/emp_act(severity) //Because we don't have psych for all slots right now but still want a downside to EMP. In this case your cover's blown.
|
|
. = ..()
|
|
|
|
name = "work gloves"
|
|
desc = "It looks like a pair of gloves, but it seems to have a small dial inside."
|
|
icon_state = "black"
|
|
update_icon()
|
|
update_clothing_icon()
|
|
|
|
/obj/item/clothing/gloves/chameleon/verb/change()
|
|
set name = "Change Gloves Appearance"
|
|
set category = "Chameleon Items"
|
|
set src in usr
|
|
|
|
var/picked = tgui_input_list(usr, "Select disguise.", "Disguise", clothing_choices)
|
|
|
|
if(!picked)
|
|
return
|
|
|
|
disguise(clothing_choices[picked])
|
|
update_clothing_icon() //so our overlays update.
|
|
|
|
//******************
|
|
//**Chameleon Mask**
|
|
//******************
|
|
|
|
/obj/item/clothing/mask/chameleon
|
|
name = "gas mask"
|
|
icon_state = "gas_alt"
|
|
item_state = "gas_alt"
|
|
desc = "It looks like a plain gask mask, but on closer inspection, it seems to have a small dial inside."
|
|
origin_tech = list(TECH_ILLEGAL = 3)
|
|
var/global/list/clothing_choices
|
|
|
|
/obj/item/clothing/mask/chameleon/Initialize()
|
|
. = ..()
|
|
if(!clothing_choices)
|
|
clothing_choices = generate_chameleon_choices(/obj/item/clothing/mask, list(src.type))
|
|
|
|
/obj/item/clothing/mask/chameleon/emp_act(severity) //Because we don't have psych for all slots right now but still want a downside to EMP. In this case your cover's blown.
|
|
. = ..()
|
|
|
|
name = "gas mask"
|
|
desc = "It's a gas mask."
|
|
icon_state = "gas_alt"
|
|
update_icon()
|
|
update_clothing_icon()
|
|
|
|
/obj/item/clothing/mask/chameleon/verb/change()
|
|
set name = "Change Mask Appearance"
|
|
set category = "Chameleon Items"
|
|
set src in usr
|
|
|
|
var/picked = tgui_input_list(usr, "Select disguise.", "Disguise", clothing_choices)
|
|
|
|
if(!picked)
|
|
return
|
|
|
|
disguise(clothing_choices[picked])
|
|
update_clothing_icon() //so our overlays update.
|
|
|
|
//*********************
|
|
//**Chameleon Glasses**
|
|
//*********************
|
|
|
|
/obj/item/clothing/glasses/chameleon
|
|
name = "optical meson scanner"
|
|
icon_state = "meson"
|
|
item_state = "glasses"
|
|
desc = "It looks like a plain set of mesons, but on closer inspection, it seems to have a small dial inside."
|
|
origin_tech = list(TECH_ILLEGAL = 3)
|
|
var/list/global/clothing_choices
|
|
|
|
/obj/item/clothing/glasses/chameleon/Initialize()
|
|
. = ..()
|
|
if(!clothing_choices)
|
|
var/blocked = list(src.type, /obj/item/clothing/glasses/sunglasses/bst)
|
|
clothing_choices = generate_chameleon_choices(/obj/item/clothing/glasses, blocked)
|
|
|
|
/obj/item/clothing/glasses/chameleon/emp_act(severity) //Because we don't have psych for all slots right now but still want a downside to EMP. In this case your cover's blown.
|
|
. = ..()
|
|
|
|
name = "optical meson scanner"
|
|
desc = "It's a set of mesons."
|
|
icon_state = "meson"
|
|
update_icon()
|
|
update_clothing_icon()
|
|
|
|
/obj/item/clothing/glasses/chameleon/verb/change()
|
|
set name = "Change Glasses Appearance"
|
|
set category = "Chameleon Items"
|
|
set src in usr
|
|
|
|
var/picked = tgui_input_list(usr, "Select disguise.", "Disguise", clothing_choices)
|
|
|
|
if(!picked)
|
|
return
|
|
|
|
disguise(clothing_choices[picked])
|
|
update_clothing_icon() //so our overlays update.
|
|
|
|
//*****************
|
|
//**Chameleon Gun**
|
|
//*****************
|
|
/obj/item/gun/energy/chameleon
|
|
name = "\improper Desert Eagle pistol"
|
|
desc = null
|
|
icon = 'icons/obj/guns/faction/antique/deagle.dmi'
|
|
icon_state = "deagle"
|
|
w_class = WEIGHT_CLASS_NORMAL
|
|
origin_tech = list(TECH_COMBAT = 2, TECH_MATERIAL = 2, TECH_ILLEGAL = 8)
|
|
matter = list()
|
|
|
|
fire_sound = 'sound/weapons/gunshot/gunshot1.ogg'
|
|
projectile_type = /obj/projectile/chameleon
|
|
charge_meter = 0
|
|
charge_cost = 20 //uses next to no power, since it's just holograms
|
|
max_shots = 50
|
|
|
|
var/obj/projectile/copy_projectile
|
|
var/global/list/gun_choices
|
|
|
|
/obj/item/gun/energy/chameleon/mechanics_hints(mob/user, distance, is_adjacent)
|
|
. += ..()
|
|
. += "Exactly as it appears, officer."
|
|
|
|
/obj/item/gun/energy/chameleon/antagonist_hints(mob/user, distance, is_adjacent)
|
|
. += ..()
|
|
. += "This gun is actually a hologram projector that can alter its appearance to mimick other weapons. "
|
|
. += "To change the appearance, use the appropriate verb in the chameleon items tab."
|
|
. += "Any beams or projectiles fired from this gun are actually holograms and useless for actual combat."
|
|
. += "Projecting these holograms over distance uses a little bit of charge."
|
|
|
|
/obj/item/gun/energy/chameleon/Initialize()
|
|
. = ..()
|
|
|
|
if(!gun_choices)
|
|
gun_choices = list()
|
|
for(var/gun_type in typesof(/obj/item/gun/) - src.type)
|
|
var/obj/item/gun/G = gun_type
|
|
src.gun_choices[initial(G.name)] = gun_type
|
|
|
|
/obj/item/gun/energy/chameleon/consume_next_projectile()
|
|
var/obj/projectile/P = ..()
|
|
if(P && ispath(copy_projectile))
|
|
P.name = initial(copy_projectile.name)
|
|
P.icon = initial(copy_projectile.icon)
|
|
P.icon_state = initial(copy_projectile.icon_state)
|
|
P.pass_flags = initial(copy_projectile.pass_flags)
|
|
P.hitscan = initial(copy_projectile.hitscan)
|
|
P.range = initial(copy_projectile.range)
|
|
P.muzzle_type = initial(copy_projectile.muzzle_type)
|
|
P.tracer_type = initial(copy_projectile.tracer_type)
|
|
P.impact_type = initial(copy_projectile.impact_type)
|
|
return P
|
|
|
|
/obj/item/gun/energy/chameleon/emp_act(severity)
|
|
. = ..()
|
|
|
|
name = "desert eagle"
|
|
desc = "It's a desert eagle."
|
|
icon_state = "deagle"
|
|
update_icon()
|
|
if (ismob(src.loc))
|
|
var/mob/M = src.loc
|
|
M.update_inv_r_hand()
|
|
M.update_inv_l_hand()
|
|
|
|
/obj/item/gun/energy/chameleon/disguise(var/newtype)
|
|
var/obj/item/gun/copy = ..()
|
|
|
|
flags_inv = copy.flags_inv
|
|
fire_sound = copy.fire_sound
|
|
fire_sound_text = copy.fire_sound_text
|
|
|
|
var/obj/item/gun/energy/E = copy
|
|
if(istype(E))
|
|
copy_projectile = E.projectile_type
|
|
desc = E.desc
|
|
else
|
|
copy_projectile = null
|
|
|
|
/obj/item/gun/energy/chameleon/verb/change()
|
|
set name = "Change Gun Appearance"
|
|
set category = "Chameleon Items"
|
|
set src in usr
|
|
|
|
var/picked = tgui_input_list(usr, "Select disguise.", "Disguise", gun_choices)
|
|
|
|
if(!picked)
|
|
return
|
|
|
|
disguise(gun_choices[picked])
|
|
|
|
//so our overlays update.
|
|
if (ismob(src.loc))
|
|
var/mob/M = src.loc
|
|
M.update_inv_r_hand()
|
|
M.update_inv_l_hand()
|