Adds 9 new Chameleon items.

Chameleon Glasses, Exosuit, Gloves, Shoes, Hat, Gun, Mask, Backpack, and Gun.

The Gun does 1 damage and can disguise as any gun. As long as you don't fire it people won't notice that it shoots 1 damage rubber bullets.

These new items come in the Chameleon Kit, which replaces and contains the Chameleon Jumpsuit
This commit is contained in:
iamgoofball
2014-03-23 14:08:23 -07:00
parent 98fba3b6b0
commit 6fa4084d11
7 changed files with 437 additions and 46 deletions

View File

@@ -44,7 +44,7 @@ Stealthy and Inconspicuous Weapons;
/obj/item/weapon/cartridge/syndicate:3:Detomatix PDA Cartridge; /obj/item/weapon/cartridge/syndicate:3:Detomatix PDA Cartridge;
Whitespace:Seperator; Whitespace:Seperator;
Stealth and Camouflage Items; Stealth and Camouflage Items;
/obj/item/clothing/under/chameleon:3:Chameleon Jumpsuit; /obj/item/weapon/storage/box/syndie_kit/chameleon:3:Chameleon Kit;
/obj/item/clothing/shoes/syndigaloshes:2:No-Slip Syndicate Shoes; /obj/item/clothing/shoes/syndigaloshes:2:No-Slip Syndicate Shoes;
/obj/item/weapon/card/id/syndicate:2:Agent ID card; /obj/item/weapon/card/id/syndicate:2:Agent ID card;
/obj/item/clothing/mask/gas/voice:4:Voice Changer; /obj/item/clothing/mask/gas/voice:4:Voice Changer;

View File

@@ -117,3 +117,20 @@
new /obj/item/clothing/suit/space/syndicate(src) new /obj/item/clothing/suit/space/syndicate(src)
new /obj/item/clothing/head/helmet/space/syndicate(src) new /obj/item/clothing/head/helmet/space/syndicate(src)
return return
/obj/item/weapon/storage/box/syndie_kit/chameleon
name = "Chameleon Kit"
desc = "Comes with all the clothes you need to impersonate most people. Acting lessons sold seperately."
storage_slots = 10
/obj/item/weapon/storage/box/syndie_kit/chameleon/New()
..()
new /obj/item/clothing/under/chameleon(src)
new /obj/item/clothing/head/chameleon(src)
new /obj/item/clothing/suit/chameleon(src)
new /obj/item/clothing/shoes/chameleon(src)
new /obj/item/weapon/storage/backpack/chameleon(src)
new /obj/item/clothing/gloves/chameleon(src)
new /obj/item/clothing/mask/chameleon(src)
new /obj/item/clothing/glasses/chameleon(src)
new /obj/item/weapon/gun/projectile/chameleon(src)
new /obj/item/ammo_magazine/chameleon(src)

View File

@@ -1,3 +1,7 @@
//*****************
//**Cham Jumpsuit**
//*****************
/obj/item/clothing/under/chameleon /obj/item/clothing/under/chameleon
//starts off as black //starts off as black
name = "black jumpsuit" name = "black jumpsuit"
@@ -6,58 +10,30 @@
item_color = "black" item_color = "black"
desc = "It's a plain jumpsuit. It seems to have a small dial on the wrist." desc = "It's a plain jumpsuit. It seems to have a small dial on the wrist."
origin_tech = "syndicate=3" origin_tech = "syndicate=3"
siemens_coefficient = 0.8
var/list/clothing_choices = list() var/list/clothing_choices = list()
New() New()
..() ..()
for(var/U in typesof(/obj/item/clothing/under/color)-(/obj/item/clothing/under/color)) var/blocked = list(/obj/item/clothing/under/chameleon, /obj/item/clothing/under/cloud,
var/obj/item/clothing/under/V = new U /obj/item/clothing/under/golem, /obj/item/clothing/under/gimmick)//Prevent infinite loops and bad jumpsuits.
src.clothing_choices += V for(var/U in typesof(/obj/item/clothing/under)-blocked)
for(var/U in typesof(/obj/item/clothing/under/rank)-(/obj/item/clothing/under/rank))
var/obj/item/clothing/under/V = new U var/obj/item/clothing/under/V = new U
src.clothing_choices += V src.clothing_choices += V
return return
attackby(obj/item/clothing/under/U as obj, mob/user as mob)
..()
if(istype(U, /obj/item/clothing/under/chameleon))
user << "\red Nothing happens."
return
if(istype(U, /obj/item/clothing/under))
if(src.clothing_choices.Find(U))
user << "\red Pattern is already recognised by the suit."
return
src.clothing_choices += U
user << "\red Pattern absorbed by the suit."
emp_act(severity) emp_act(severity)
name = "psychedelic" name = "psychedelic"
desc = "Groovy!" desc = "Groovy!"
icon_state = "psyche" icon_state = "psyche"
item_color = "psyche" item_color = "psyche"
spawn(200)
name = "Black Jumpsuit"
icon_state = "bl_suit"
item_color = "black"
desc = null
..()
verb/change() verb/change()
set name = "Change Color" set name = "Change Jumpsuit Appearance"
set category = "Object" set category = "Object"
set src in usr set src in usr
if(icon_state == "psyche") var/obj/item/clothing/suit/A
usr << "\red Your suit is malfunctioning" A = input("Select jumpsuit to change it to", "Chameleon Jumpsuit")as null|anything in clothing_choices
return
var/obj/item/clothing/under/A
A = input("Select Colour to change it to", "BOOYEA", A) in clothing_choices
if(!A) if(!A)
return return
@@ -71,12 +47,387 @@
item_color = A.item_color item_color = A.item_color
usr.update_inv_w_uniform() //so our overlays update. usr.update_inv_w_uniform() //so our overlays update.
//*****************
//**Chameleon Hat**
//*****************
/obj/item/clothing/head/chameleon
name = "grey cap"
icon_state = "greysoft"
item_state = "greysoft"
item_color = "grey"
desc = "It looks like a plain hat, but upon closer inspection, there's an advanced holographic array installed inside. It seems to have a small dial inside."
origin_tech = "syndicate=3"
var/list/clothing_choices = list()
/obj/item/clothing/under/chameleon/all/New() New()
..() ..()
var/blocked = list(/obj/item/clothing/under/chameleon, /obj/item/clothing/under/chameleon/all) var/blocked = list(/obj/item/clothing/head/chameleon,
//to prevent an infinite loop /obj/item/clothing/head/space/golem, /obj/item/clothing/head/justice,)//Prevent infinite loops and bad hats.
for(var/U in typesof(/obj/item/clothing/under)-blocked) for(var/U in typesof(/obj/item/clothing/head)-blocked)
var/obj/item/clothing/under/V = new U var/obj/item/clothing/head/V = new U
src.clothing_choices += V src.clothing_choices += V
return
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 = "grey cap"
desc = "It's a baseball hat in a tasteful grey colour."
icon_state = "greysoft"
item_color = "grey"
update_icon()
verb/change()
set name = "Change Hat/Helmet Appearance"
set category = "Object"
set src in usr
var/obj/item/clothing/suit/A
A = input("Select headwear to change it to", "Chameleon Hat")as null|anything in clothing_choices
if(!A)
return
desc = null
permeability_coefficient = 0.90
desc = A.desc
name = A.name
icon_state = A.icon_state
item_state = A.item_state
item_color = A.item_color
flags_inv = A.flags_inv
usr.update_inv_head() //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 = "syndicate=3"
var/list/clothing_choices = list()
New()
..()
var/blocked = list(/obj/item/clothing/suit/chameleon,
/obj/item/clothing/suit/golem, /obj/item/clothing/suit/suit, /obj/item/clothing/suit/cyborg_suit, /obj/item/clothing/suit/justice,
/obj/item/clothing/suit/greatcoat)//Prevent infinite loops and bad suits.
for(var/U in typesof(/obj/item/clothing/suit)-blocked)
var/obj/item/clothing/suit/V = new U
src.clothing_choices += V
return
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"
item_color = "armor"
update_icon()
verb/change()
set name = "Change Exosuit Appearance"
set category = "Object"
set src in usr
var/obj/item/clothing/suit/A
A = input("Select footwear to change it to", "Chameleon Exosuit")as null|anything in clothing_choices
if(!A)
return
desc = null
permeability_coefficient = 0.90
desc = A.desc
name = A.name
icon_state = A.icon_state
item_state = A.item_state
item_color = A.item_color
flags_inv = A.flags_inv
usr.update_inv_wear_suit() //so our overlays update.
//*******************
//**Chameleon Shoes**
//*******************
/obj/item/clothing/shoes/chameleon
name = "black shoes"
icon_state = "black"
item_state = "black"
item_color = "black"
desc = "They're comfy black shoes, with clever Syndicate cloaking technology built in. It seems to have a small dial on the back of each shoe."
origin_tech = "syndicate=3"
var/list/clothing_choices = list()
New()
..()
var/blocked = list(/obj/item/clothing/shoes/chameleon,
/obj/item/clothing/shoes/golem, /obj/item/clothing/shoes/syndigaloshes, /obj/item/clothing/shoes/cyborg)//prevent infinite loops and bad shoes.
for(var/U in typesof(/obj/item/clothing/shoes)-blocked)
var/obj/item/clothing/shoes/V = new U
src.clothing_choices += V
return
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_state = "black"
item_state = "black"
item_color = "black"
update_icon()
verb/change()
set name = "Change Footwear Appearance"
set category = "Object"
set src in usr
var/obj/item/clothing/shoes/A
A = input("Select footwear to change it to", "Chameleon Shoes")as null|anything in clothing_choices
if(!A)
return
desc = null
permeability_coefficient = 0.90
desc = A.desc
name = A.name
icon_state = A.icon_state
item_state = A.item_state
item_color = A.item_color
usr.update_inv_shoes() //so our overlays update.
//**********************
//**Chameleon Backpack**
//**********************
/obj/item/weapon/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 = "syndicate=3"
var/list/clothing_choices = list()
New()
..()
var/blocked = list(/obj/item/weapon/storage/backpack/chameleon, /obj/item/weapon/storage/backpack/satchel/withwallet)
for(var/U in typesof(/obj/item/weapon/storage/backpack)-blocked)//Prevent infinite loops and bad backpacks.
var/obj/item/weapon/storage/backpack/V = new U
src.clothing_choices += V
return
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()
verb/change()
set name = "Change Backpack Appearance"
set category = "Object"
set src in usr
var/obj/item/weapon/storage/backpack/A
A = input("Select backpack to change it to", "Chameleon Backpack")as null|anything in clothing_choices
if(!A)
return
desc = null
permeability_coefficient = 0.90
desc = A.desc
name = A.name
icon_state = A.icon_state
item_state = A.item_state
item_color = A.item_color
usr.update_inv_back() //so our overlays update.
//********************
//**Chameleon Gloves**
//********************
/obj/item/clothing/gloves/chameleon
name = "black gloves"
icon_state = "black"
item_state = "bgloves"
item_color = "brown"
desc = "It looks like a pair of gloves, but it seems to have a small dial inside."
origin_tech = "syndicate=3"
var/list/clothing_choices = list()
New()
..()
var/blocked = list(/obj/item/clothing/gloves/chameleon)//Prevent infinite loops and bad hats.
for(var/U in typesof(/obj/item/clothing/gloves)-blocked)
var/obj/item/clothing/gloves/V = new U
src.clothing_choices += V
return
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 gloves"
desc = "It looks like a pair of gloves, but it seems to have a small dial inside."
icon_state = "black"
item_color = "brown"
update_icon()
verb/change()
set name = "Change Gloves Appearance"
set category = "Object"
set src in usr
var/obj/item/clothing/gloves/A
A = input("Select gloves to change it to", "Chameleon Gloves")as null|anything in clothing_choices
if(!A)
return
desc = null
permeability_coefficient = 0.90
desc = A.desc
name = A.name
icon_state = A.icon_state
item_state = A.item_state
item_color = A.item_color
flags_inv = A.flags_inv
usr.update_inv_gloves() //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 = "syndicate=3"
var/list/clothing_choices = list()
New()
..()
var/blocked = list(/obj/item/clothing/mask/chameleon)//Prevent infinite loops and bad hats.
for(var/U in typesof(/obj/item/clothing/mask)-blocked)
var/obj/item/clothing/mask/V = new U
src.clothing_choices += V
return
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()
verb/change()
set name = "Change Mask Appearance"
set category = "Object"
set src in usr
var/obj/item/clothing/mask/A
A = input("Select mask to change it to", "Chameleon Mask")as null|anything in clothing_choices
if(!A)
return
desc = null
permeability_coefficient = 0.90
desc = A.desc
name = A.name
icon_state = A.icon_state
item_state = A.item_state
flags_inv = A.flags_inv
usr.update_inv_wear_mask() //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 = "syndicate=3"
var/list/clothing_choices = list()
New()
..()
var/blocked = list(/obj/item/clothing/glasses/chameleon)//Prevent infinite loops and bad hats.
for(var/U in typesof(/obj/item/clothing/glasses)-blocked)
var/obj/item/clothing/glasses/V = new U
src.clothing_choices += V
return
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()
verb/change()
set name = "Change Glasses Appearance"
set category = "Object"
set src in usr
var/obj/item/clothing/glasses/A
A = input("Select glasses to change it to", "Chameleon Glasses")as null|anything in clothing_choices
if(!A)
return
desc = null
permeability_coefficient = 0.90
desc = A.desc
name = A.name
icon_state = A.icon_state
item_state = A.item_state
flags_inv = A.flags_inv
usr.update_inv_glasses() //so our overlays update.
//*****************
//**Chameleon Gun**
//*****************
/obj/item/weapon/gun/projectile/chameleon
name = "desert eagle"
desc = "A fake Desert Eagle with a dial on the side to change the gun's disguise."
icon_state = "deagle"
w_class = 3.0
max_shells = 7
caliber = ".45"
origin_tech = "combat=2;materials=2;syndicate=8"
ammo_type = "/obj/item/ammo_casing/chameleon"
var/list/gun_choices = list()
New()
..()
var/blocked = list(/obj/item/weapon/gun/projectile/chameleon)//Prevent infinite loops and bad hats.
for(var/U in typesof(/obj/item/weapon/gun/)-blocked)
var/obj/item/weapon/gun/V = new U
src.gun_choices += V
return
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 = "desert eagle"
desc = "It's a desert eagle."
icon_state = "deagle"
update_icon()
verb/change()
set name = "Change Gun Appearance"
set category = "Object"
set src in usr
var/obj/item/weapon/gun/A
A = input("Select gun to change it to", "Chameleon Gun")as null|anything in gun_choices
if(!A)
return
desc = null
permeability_coefficient = 0.90
desc = A.desc
name = A.name
icon_state = A.icon_state
item_state = A.item_state
flags_inv = A.flags_inv
usr.update_inv_r_hand()
usr.update_inv_l_hand() //so our overlays update.

View File

@@ -135,4 +135,18 @@
icon_state = "a762" icon_state = "a762"
ammo_type = "/obj/item/ammo_casing/a762" ammo_type = "/obj/item/ammo_casing/a762"
max_ammo = 0 max_ammo = 0
multiple_sprites = 1
/obj/item/ammo_magazine/chameleon
name = "magazine (.45)"
icon_state = "45"
ammo_type = "/obj/item/ammo_casing/chameleon"
max_ammo = 7
multiple_sprites = 1
/obj/item/ammo_magazine/chameleon/empty
name = "magazine (.45)"
icon_state = "45"
ammo_type = "/obj/item/ammo_casing/chameleon"
max_ammo = 0
multiple_sprites = 1 multiple_sprites = 1

View File

@@ -105,3 +105,9 @@
icon_state = "rocketshell" icon_state = "rocketshell"
projectile_type = "/obj/item/missile" projectile_type = "/obj/item/missile"
caliber = "rocket" caliber = "rocket"
/obj/item/ammo_casing/chameleon
name = "chameleon bullets"
desc = "A set of bullets for the Chameleon Gun."
projectile_type = "/obj/item/projectile/bullet/chameleon"
caliber = ".45"

View File

@@ -58,4 +58,7 @@
embed = 0 embed = 0
/obj/item/projectile/bullet/a762 /obj/item/projectile/bullet/a762
damage = 25 damage = 25
/obj/item/projectile/bullet/chameleon
damage = 1 // stop trying to murderbone with a fake gun dumbass!!!

View File

@@ -1369,13 +1369,13 @@ datum/design/implant_free
build_path = "/obj/item/weapon/implant/freedom" build_path = "/obj/item/weapon/implant/freedom"
datum/design/chameleon datum/design/chameleon
name = "Chameleon Jumpsuit" name = "Chameleon Kit"
desc = "It's a plain jumpsuit. It seems to have a small dial on the wrist." desc = "It's a set of clothes with dials on them."
id = "chameleon" id = "chameleon"
req_tech = list("syndicate" = 2) req_tech = list("syndicate" = 2)
build_type = PROTOLATHE build_type = PROTOLATHE
materials = list("$metal" = 500) materials = list("$metal" = 500)
build_path = "/obj/item/clothing/under/chameleon" build_path = "/obj/item/weapon/storage/box/syndie_kit/chameleon"
datum/design/bluespacebeaker datum/design/bluespacebeaker