diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm index fc24fb14bad..70e74cab0eb 100644 --- a/code/game/objects/items.dm +++ b/code/game/objects/items.dm @@ -122,6 +122,63 @@ var/global/image/fire_overlay = image("icon" = 'icons/effects/fire.dmi', "icon_s slot_drone_storage\ ) + + var/list/chameleon_blacklist = list() + var/list/chameleon_list = list() + var/chameleon_type = null + var/chameleon_name = "Item" + var/datum/action/item_action/chameleon/change/chameleon_change_action + var/chameleon_action_type = /datum/action/item_action/chameleon/change + +/datum/action/item_action/chameleon/change + name = "Chameleon Change" + +/datum/action/item_action/chameleon/change/Trigger() + if(!Checks()) + return + + var/obj/item/I = target + I.chameleon_change(owner) + return 1 + +/obj/item/New() + ..() + if(chameleon_type) + chameleon_change_action = new chameleon_action_type(src) + chameleon_change_action.name = "Change [chameleon_name] Appearance" + chameleon_blacklist += type + for(var/U in typesof(chameleon_type)-chameleon_blacklist) + var/obj/item/V = new U + chameleon_list += V + +/obj/item/pickup(mob/user) + ..() + if(chameleon_type) + chameleon_change_action.Grant(user) + +/obj/item/dropped(mob/user) + ..() + if(chameleon_type) + chameleon_change_action.Remove(user) + +/obj/item/proc/chameleon_change(user) + var/obj/item/clothing/under/A + A = input("Select [chameleon_name] to change it to", "Chameleon [chameleon_name]", A) in chameleon_list + if(!A) + return + if(istype(user, /mob/living/carbon)) + var/mob/living/C = user + if(C.stat != CONSCIOUS) + return + + desc = A.desc + name = A.name + icon_state = A.icon_state + item_state = A.item_state + icon = A.icon + + C.update_icons() //so our overlays update. + /obj/item/proc/check_allowed_items(atom/target, not_inside, target_self) if(((src in target) && !target_self) || ((!istype(target.loc, /turf)) && (!istype(target, /turf)) && (not_inside)) || is_type_in_list(target, can_be_placed_into)) return 0 diff --git a/code/game/objects/items/weapons/storage/uplink_kits.dm b/code/game/objects/items/weapons/storage/uplink_kits.dm index 81b0d72c4e5..455d06a33d1 100644 --- a/code/game/objects/items/weapons/storage/uplink_kits.dm +++ b/code/game/objects/items/weapons/storage/uplink_kits.dm @@ -5,9 +5,9 @@ switch (pickweight(list("bloodyspai" = 3, "stealth" = 3, "bond" = 1, "screwed" = 3, "sabotage" = 3, "guns" = 1, "murder" = 2, "implant" = 2, "hacker" = 2, "lordsingulo" = 2, "darklord" = 1))) if("bloodyspai") new /obj/item/clothing/under/chameleon(src) - new /obj/item/clothing/mask/gas/voice(src) + new /obj/item/clothing/mask/chameleon(src) new /obj/item/weapon/card/id/syndicate(src) - new /obj/item/clothing/shoes/sneakers/syndigaloshes(src) + new /obj/item/clothing/shoes/chameleon(src) new /obj/item/device/camera_bug(src) new /obj/item/device/multitool/ai_detect(src) new /obj/item/device/encryptionkey/syndicate(src) @@ -55,7 +55,7 @@ new /obj/item/weapon/melee/energy/sword/saber(src) new /obj/item/clothing/glasses/thermal/syndi(src) new /obj/item/weapon/card/emag(src) - new /obj/item/clothing/shoes/sneakers/syndigaloshes(src) + new /obj/item/clothing/shoes/chameleon(src) return if("implant") @@ -240,3 +240,18 @@ new /obj/item/weapon/reagent_containers/hypospray/medipen/tuberculosiscure(src) new /obj/item/weapon/reagent_containers/syringe(src) new /obj/item/weapon/reagent_containers/glass/bottle/tuberculosiscure(src) + +/obj/item/weapon/storage/box/syndie_kit/chameleon + name = "chameleon kit" + +/obj/item/weapon/storage/box/syndie_kit/chameleon/New() + ..() + new /obj/item/clothing/under/chameleon(src) + new /obj/item/clothing/suit/chameleon(src) + new /obj/item/clothing/gloves/chameleon(src) + new /obj/item/clothing/shoes/chameleon(src) + new /obj/item/clothing/suit/chameleon(src) + new /obj/item/clothing/head/chameleon(src) + new /obj/item/clothing/mask/chameleon(src) + new /obj/item/weapon/stamp/chameleon(src) + new /obj/item/weapon/gun/energy/laser/chameleon(src) \ No newline at end of file diff --git a/code/modules/awaymissions/mission_code/snowdin.dm b/code/modules/awaymissions/mission_code/snowdin.dm index 3f2db7b6d2a..1acf5f000d0 100644 --- a/code/modules/awaymissions/mission_code/snowdin.dm +++ b/code/modules/awaymissions/mission_code/snowdin.dm @@ -127,7 +127,7 @@ obj/item/weapon/paper/crumpled/snowdin/shovel /obj/item/weapon/c4 = 7, /obj/item/weapon/grenade/clusterbuster/smoke = 15, /obj/item/clothing/under/chameleon = 13, - /obj/item/clothing/shoes/sneakers/syndigaloshes = 10, + /obj/item/clothing/shoes/chameleon = 10, /obj/item/borg/upgrade/ddrill = 3, /obj/item/borg/upgrade/soh = 3) diff --git a/code/modules/clothing/chameleon.dm b/code/modules/clothing/chameleon.dm new file mode 100644 index 00000000000..7d3f8e08a80 --- /dev/null +++ b/code/modules/clothing/chameleon.dm @@ -0,0 +1,112 @@ +/obj/item/clothing/under/chameleon +//starts off as black + name = "black jumpsuit" + icon_state = "black" + item_state = "bl_suit" + item_color = "black" + desc = "It's a plain jumpsuit. It has a small dial on the wrist." + action_button_name = "Change" + origin_tech = "syndicate=3" + sensor_mode = 0 //Hey who's this guy on the Syndicate Shuttle?? + random_sensor = 0 + burn_state = FIRE_PROOF + armor = list(melee = 10, bullet = 10, laser = 10, energy = 0, bomb = 0, bio = 0, rad = 0) + + chameleon_type = /obj/item/clothing/under + chameleon_name = "Jumpsuit" + +/obj/item/clothing/suit/chameleon + name = "armor" + desc = "A slim armored vest that protects against most types of damage." + icon_state = "armor" + item_state = "armor" + blood_overlay_type = "armor" + origin_tech = "syndicate=3" + burn_state = FIRE_PROOF + armor = list(melee = 10, bullet = 10, laser = 10, energy = 0, bomb = 0, bio = 0, rad = 0) + + chameleon_type = /obj/item/clothing/suit + chameleon_name = "Suit" + +/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." + icon_state = "meson" + item_state = "meson" + + origin_tech = "syndicate=3" + burn_state = FIRE_PROOF + armor = list(melee = 10, bullet = 10, laser = 10, energy = 0, bomb = 0, bio = 0, rad = 0) + + chameleon_type = /obj/item/clothing/glasses + chameleon_name = "Glasses" + +/obj/item/clothing/gloves/chameleon + desc = "These gloves will protect the wearer from electric shock." + name = "insulated gloves" + icon_state = "yellow" + item_state = "ygloves" + + burn_state = FIRE_PROOF + armor = list(melee = 10, bullet = 10, laser = 10, energy = 0, bomb = 0, bio = 0, rad = 0) + + chameleon_type = /obj/item/clothing/gloves + chameleon_name = "Gloves" + +/obj/item/clothing/head/chameleon + name = "grey cap" + desc = "It's a baseball hat in a tasteful grey colour." + icon_state = "greysoft" + item_color = "grey" + + burn_state = FIRE_PROOF + armor = list(melee = 10, bullet = 10, laser = 10, energy = 0, bomb = 0, bio = 0, rad = 0) + + chameleon_type = /obj/item/clothing/head + chameleon_name = "Hat" + +/obj/item/clothing/mask/chameleon + name = "gas mask" + desc = "A face-covering mask that can be connected to an air supply. While good for concealing your identity, it isn't good for blocking gas flow." //More accurate + icon_state = "gas_alt" + item_state = "gas_alt" + + burn_state = FIRE_PROOF + armor = list(melee = 10, bullet = 10, laser = 10, energy = 0, bomb = 0, bio = 0, rad = 0) + + chameleon_type = /obj/item/clothing/mask + chameleon_name = "Mask" + var/vchange = 1 + +/obj/item/clothing/mask/chameleon/attack_self(mob/user) + vchange = !vchange + user << "The voice changer is now [vchange ? "on" : "off"]!" + +/obj/item/clothing/shoes/chameleon + name = "black shoes" + icon_state = "black" + item_color = "black" + desc = "A pair of black shoes." + + permeability_coefficient = 0.05 + flags = NOSLIP + origin_tech = "syndicate=3" + burn_state = FIRE_PROOF + can_hold_items = 1 + armor = list(melee = 10, bullet = 10, laser = 10, energy = 0, bomb = 0, bio = 0, rad = 0) + + chameleon_type = /obj/item/clothing/shoes + chameleon_name = "Shoes" + + +/obj/item/weapon/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." + ammo_type = list(/obj/item/ammo_casing/energy/laser/practice) + clumsy_check = 0 + needs_permit = 0 + pin = /obj/item/device/firing_pin + cell_type = /obj/item/weapon/stock_parts/cell/bluespace + + chameleon_type = /obj/item/weapon/gun + chameleon_name = "Gun" \ No newline at end of file diff --git a/code/modules/clothing/masks/gasmask.dm b/code/modules/clothing/masks/gasmask.dm index 6055104b49f..623baae2c9f 100644 --- a/code/modules/clothing/masks/gasmask.dm +++ b/code/modules/clothing/masks/gasmask.dm @@ -53,20 +53,6 @@ icon_state = "syndicate" strip_delay = 60 -/obj/item/clothing/mask/gas/voice - name = "gas mask" - //desc = "A face-covering mask that can be connected to an air supply. It seems to house some odd electronics." - var/mode = 0// 0==Scouter | 1==Night Vision | 2==Thermal | 3==Meson - var/voice = "Unknown" - var/vchange = 0//This didn't do anything before. It now checks if the mask has special functions/N - origin_tech = "syndicate=4" - action_button_name = "Toggle mask" - -/obj/item/clothing/mask/gas/voice/attack_self(mob/user) - vchange = !vchange - user << "The voice changer is now [vchange ? "on" : "off"]!" - - /obj/item/clothing/mask/gas/clown_hat name = "clown wig and mask" desc = "A true prankster's facial attire. A clown is incomplete without his wig and mask." diff --git a/code/modules/clothing/shoes/miscellaneous.dm b/code/modules/clothing/shoes/miscellaneous.dm index 190a09a1643..b63d3a4f771 100644 --- a/code/modules/clothing/shoes/miscellaneous.dm +++ b/code/modules/clothing/shoes/miscellaneous.dm @@ -7,17 +7,6 @@ playsound(user, 'sound/weapons/genhit2.ogg', 50, 1) return(BRUTELOSS) -/obj/item/clothing/shoes/sneakers/syndigaloshes - desc = "A pair of brown shoes." - name = "brown shoes" - icon_state = "brown" - item_state = "brown" - permeability_coefficient = 0.05 - flags = NOSLIP - origin_tech = "syndicate=3" - burn_state = FIRE_PROOF - can_hold_items = 1 - /obj/item/clothing/shoes/sneakers/mime name = "mime shoes" icon_state = "mime" diff --git a/code/modules/clothing/under/chameleon.dm b/code/modules/clothing/under/chameleon.dm deleted file mode 100644 index f38708348bb..00000000000 --- a/code/modules/clothing/under/chameleon.dm +++ /dev/null @@ -1,97 +0,0 @@ -/obj/item/clothing/under/chameleon -//starts off as black - name = "black jumpsuit" - icon_state = "black" - item_state = "bl_suit" - item_color = "black" - desc = "It's a plain jumpsuit. It has a small dial on the wrist." - action_button_name = "Change" - origin_tech = "syndicate=3" - sensor_mode = 0 //Hey who's this guy on the Syndicate Shuttle?? - random_sensor = 0 - var/list/clothing_choices = list() - var/malfunctioning = 0 - burn_state = FIRE_PROOF - armor = list(melee = 10, bullet = 10, laser = 10,energy = 0, bomb = 0, bio = 0, rad = 0) - -/obj/item/clothing/under/chameleon/New() - ..() - for(var/U in subtypesof(/obj/item/clothing/under/color)) - var/obj/item/clothing/under/V = new U - src.clothing_choices += V - - for(var/U in subtypesof(/obj/item/clothing/under/rank)) - var/obj/item/clothing/under/V = new U - src.clothing_choices += V - return - - -/obj/item/clothing/under/chameleon/attackby(obj/item/clothing/under/U, mob/user, params) - ..() - if(istype(U, /obj/item/clothing/under/chameleon)) - user << "\Nothing happens." - return - if(istype(U, /obj/item/clothing/under)) - if(src.clothing_choices.Find(U)) - user << "Pattern is already recognised by the suit." - return - src.clothing_choices += U - user << "Pattern absorbed by the suit." - - -/obj/item/clothing/under/chameleon/emp_act(severity) - name = "psychedelic" - desc = "Groovy!" - icon_state = "psyche" - item_color = "psyche" - malfunctioning = 1 - if(ismob(loc)) - var/mob/M = loc - M.update_inv_w_uniform() - M << "Your jumpsuit malfunctions!" - spawn(200) - name = "Black Jumpsuit" - icon_state = "black" - item_state = "bl_suit" - item_color = "black" - malfunctioning = 0 - if(ismob(loc)) - var/mob/M = loc - M.update_inv_w_uniform() - M << "Your jumpsuit is functioning normally again." - ..() - -/obj/item/clothing/under/chameleon/attack_self() - set src in usr - - var/obj/item/clothing/under/A - A = input("Select Colour to change it to", "BOOYEA", A) in clothing_choices - if(!A) - return - - if(usr.stat != CONSCIOUS) - return - - if(malfunctioning) - usr << "Your jumpsuit is malfunctioning!" - 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 - suit_color = A.suit_color - usr.update_inv_w_uniform() //so our overlays update. - - - -/obj/item/clothing/under/chameleon/all/New() - ..() - var/blocked = list(/obj/item/clothing/under/chameleon, /obj/item/clothing/under/chameleon/all) //to prevent an infinite loop - for(var/U in typesof(/obj/item/clothing/under)-blocked) - var/obj/item/clothing/under/V = new U - src.clothing_choices += V diff --git a/code/modules/events/wizard/curseditems.dm b/code/modules/events/wizard/curseditems.dm index eb1d15c4038..67db16aa319 100644 --- a/code/modules/events/wizard/curseditems.dm +++ b/code/modules/events/wizard/curseditems.dm @@ -31,7 +31,7 @@ loadout[6] = /obj/item/clothing/gloves/boxing ruins_spaceworthiness = 1 if("voicemodulators") - loadout[4] = /obj/item/clothing/mask/gas/voice + loadout[4] = /obj/item/clothing/mask/chameleon if("catgirls2015") loadout[3] = /obj/item/clothing/head/kitty ruins_spaceworthiness = 1 diff --git a/code/modules/flufftext/Hallucination.dm b/code/modules/flufftext/Hallucination.dm index 8cde367bace..ac3cff9610d 100644 --- a/code/modules/flufftext/Hallucination.dm +++ b/code/modules/flufftext/Hallucination.dm @@ -463,8 +463,8 @@ var/list/non_fakeattack_weapons = list(/obj/item/weapon/gun/projectile, /obj/ite /obj/item/weapon/gun/energy/kinetic_accelerator/crossbow, /obj/item/weapon/melee/energy/sword/saber,\ /obj/item/weapon/storage/box/syndicate, /obj/item/weapon/storage/box/emps,\ /obj/item/weapon/cartridge/syndicate, /obj/item/clothing/under/chameleon,\ - /obj/item/clothing/shoes/sneakers/syndigaloshes, /obj/item/weapon/card/id/syndicate,\ - /obj/item/clothing/mask/gas/voice, /obj/item/clothing/glasses/thermal,\ + /obj/item/clothing/shoes/chameleon, /obj/item/weapon/card/id/syndicate,\ + /obj/item/clothing/mask/chameleon, /obj/item/clothing/glasses/thermal,\ /obj/item/device/chameleon, /obj/item/weapon/card/emag,\ /obj/item/weapon/storage/toolbox/syndicate, /obj/item/weapon/aiModule,\ /obj/item/device/radio/headset/syndicate, /obj/item/weapon/c4,\ diff --git a/code/modules/mob/living/carbon/human/say.dm b/code/modules/mob/living/carbon/human/say.dm index 4f2ef525153..b4152717bab 100644 --- a/code/modules/mob/living/carbon/human/say.dm +++ b/code/modules/mob/living/carbon/human/say.dm @@ -31,8 +31,8 @@ return ..() | dna.mutations_get_spans() | dna.species_get_spans() /mob/living/carbon/human/GetVoice() - if(istype(wear_mask, /obj/item/clothing/mask/gas/voice)) - var/obj/item/clothing/mask/gas/voice/V = wear_mask + if(istype(wear_mask, /obj/item/clothing/mask/chameleon)) + var/obj/item/clothing/mask/chameleon/V = wear_mask if(V.vchange && wear_id) var/obj/item/weapon/card/id/idcard = wear_id.GetID() if(istype(idcard)) diff --git a/code/modules/ninja/ninja_event.dm b/code/modules/ninja/ninja_event.dm index 17eb0f7b0f6..1ef8d0a23e0 100644 --- a/code/modules/ninja/ninja_event.dm +++ b/code/modules/ninja/ninja_event.dm @@ -202,7 +202,7 @@ Contents: equip_to_slot_or_del(theSuit, slot_wear_suit) equip_to_slot_or_del(new /obj/item/clothing/gloves/space_ninja(src), slot_gloves) equip_to_slot_or_del(new /obj/item/clothing/head/helmet/space/space_ninja(src), slot_head) - equip_to_slot_or_del(new /obj/item/clothing/mask/gas/voice/space_ninja(src), slot_wear_mask) + equip_to_slot_or_del(new /obj/item/clothing/mask/gas/space_ninja(src), slot_wear_mask) equip_to_slot_or_del(new /obj/item/clothing/glasses/night(src), slot_glasses) equip_to_slot_or_del(EK, slot_belt) equip_to_slot_or_del(new /obj/item/device/flashlight(src), slot_r_store) diff --git a/code/modules/ninja/suit/mask.dm b/code/modules/ninja/suit/mask.dm index 87e9255e41d..f5c5b4dbd4c 100644 --- a/code/modules/ninja/suit/mask.dm +++ b/code/modules/ninja/suit/mask.dm @@ -10,130 +10,9 @@ Contents: -/obj/item/clothing/mask/gas/voice/space_ninja +/obj/item/clothing/mask/gas/space_ninja name = "ninja mask" desc = "A close-fitting mask that acts both as an air filter and a post-modern fashion statement." icon_state = "s-ninja" item_state = "s-ninja_mask" - vchange = 1 strip_delay = 120 - -/obj/item/clothing/mask/gas/voice/space_ninja/speechModification(message) - if(voice == "Unknown") - if(copytext(message, 1, 2) != "*") - var/list/temp_message = splittext(message, " ") - var/list/pick_list = list() - for(var/i = 1, i <= temp_message.len, i++) - pick_list += i - for(var/i=1, i <= abs(temp_message.len/3), i++) - var/H = pick(pick_list) - if(findtext(temp_message[H], "*") || findtext(temp_message[H], ";") || findtext(temp_message[H], ":")) continue - temp_message[H] = ninjaspeak(temp_message[H]) - pick_list -= H - message = jointext(temp_message, " ") - - //The Alternate speech mod is now the main one. - message = replacetext(message, "l", "r") - message = replacetext(message, "rr", "ru") - message = replacetext(message, "v", "b") - message = replacetext(message, "f", "hu") - message = replacetext(message, "'t", "") - message = replacetext(message, "t ", "to ") - message = replacetext(message, " I ", " ai ") - message = replacetext(message, "th", "z") - message = replacetext(message, "is", "izu") - message = replacetext(message, "ziz", "zis") - message = replacetext(message, "se", "su") - message = replacetext(message, "br", "bur") - message = replacetext(message, "ry", "ri") - message = replacetext(message, "you", "yuu") - message = replacetext(message, "ck", "cku") - message = replacetext(message, "eu", "uu") - message = replacetext(message, "ow", "au") - message = replacetext(message, "are", "aa") - message = replacetext(message, "ay", "ayu") - message = replacetext(message, "ea", "ii") - message = replacetext(message, "ch", "chi") - message = replacetext(message, "than", "sen") - message = replacetext(message, ".", "") - message = lowertext(message) - - return message - - - -/obj/item/clothing/mask/gas/voice/space_ninja/New() - verbs += /obj/item/clothing/mask/gas/voice/space_ninja/proc/togglev - - -//This proc is linked to human life.dm. It determines what hud icons to display based on mind special role for most mobs. -/obj/item/clothing/mask/gas/voice/space_ninja/proc/assess_targets(list/target_list, mob/living/carbon/U) - var/icon/tempHud = 'icons/mob/hud.dmi' - for(var/mob/living/target in target_list) - if(iscarbon(target)) - switch(target.mind.special_role) - if("traitor") - U.client.images += image(tempHud,target,"hudtraitor") - if("Revolutionary","Head Revolutionary") - U.client.images += image(tempHud,target,"hudrevolutionary") - if("Cultist") - U.client.images += image(tempHud,target,"hudcultist") - if("Changeling") - U.client.images += image(tempHud,target,"hudchangeling") - if("Wizard","Fake Wizard") - U.client.images += image(tempHud,target,"hudwizard") - if("Hunter","Sentinel","Drone","Queen") - U.client.images += image(tempHud,target,"hudalien") - if("Syndicate") - U.client.images += image(tempHud,target,"hudoperative") - if("Death Commando") - U.client.images += image(tempHud,target,"huddeathsquad") - if("Space Ninja") - U.client.images += image(tempHud,target,"hudninja") - else//If we don't know what role they have but they have one. - U.client.images += image(tempHud,target,"hudunknown1") - else if(issilicon(target))//If the silicon mob has no law datum, no inherent laws, or a law zero, add them to the hud. - var/mob/living/silicon/silicon_target = target - if(!silicon_target.laws||(silicon_target.laws&&(silicon_target.laws.zeroth||!silicon_target.laws.inherent.len))) - if(isrobot(silicon_target))//Different icons for robutts and AI. - U.client.images += image(tempHud,silicon_target,"hudmalborg") - else - U.client.images += image(tempHud,silicon_target,"hudmalai") - return 1 - - -/obj/item/clothing/mask/gas/voice/space_ninja/proc/togglev() - set name = "Toggle Voice" - set desc = "Toggles the voice synthesizer on or off." - set category = "Ninja Equip" - - var/mob/U = loc//Can't toggle voice when you're not wearing the mask. - var/vchange = (alert("Would you like to synthesize a new name or turn off the voice synthesizer?",,"New Name","Turn Off")) - if(vchange == "New Name") - var/chance = rand(1,100) - switch(chance) - if(1 to 50)//High chance of a regular name. - voice = "[rand(0,1) == 1 ? pick(first_names_female) : pick(first_names_male)] [pick(last_names)]" - if(51 to 70)//Smaller chance of a lizard name. - voice = "[pick(lizard_name(MALE),lizard_name(FEMALE))]" - if(71 to 80)//Small chance of a clown name. - voice = "[pick(clown_names)]" - if(81 to 90)//Small chance of a wizard name. - voice = "[pick(wizard_first)] [pick(wizard_second)]" - if(91 to 100)//Small chance of an existing crew name. - var/list/names = list() - for(var/mob/living/carbon/human/M in player_list) - if(M == U || !M.client || !M.real_name) - continue - names.Add(M.real_name) - voice = !names.len ? "Cuban Pete" : pick(names) - U << "You are now mimicking [voice]." - else - U << "The voice synthesizer is [voice!="Unknown"?"now":"already"] deactivated." - voice = "Unknown" - return - - -/obj/item/clothing/mask/gas/voice/space_ninja/examine(mob/user) - ..() - user << "Voice mimicking algorithm is set [!vchange?"inactive":"active"]." diff --git a/code/modules/power/lighting.dm b/code/modules/power/lighting.dm index 0de92685532..e5b1da10739 100644 --- a/code/modules/power/lighting.dm +++ b/code/modules/power/lighting.dm @@ -183,11 +183,11 @@ switch(fitting) if("tube") brightness = 8 - if(prob(2)) + if(prob(6)) broken(1) if("bulb") brightness = 4 - if(prob(5)) + if(prob(12)) broken(1) spawn(1) update(0) diff --git a/code/modules/uplink/uplink_item.dm b/code/modules/uplink/uplink_item.dm index 0e6f48cc781..2f6ebf76447 100644 --- a/code/modules/uplink/uplink_item.dm +++ b/code/modules/uplink/uplink_item.dm @@ -650,27 +650,17 @@ var/list/uplink_items = list() // Global list so we only initialize this once. /datum/uplink_item/stealthy_tools category = "Stealth and Camouflage Items" -/datum/uplink_item/stealthy_tools/chameleon_jumpsuit - name = "Chameleon Jumpsuit" - desc = "A jumpsuit used to imitate the uniforms of Nanotrasen crewmembers. It can change form at any time \ - to resemble another jumpsuit. May react unpredictably to electromagnetic disruptions." +/datum/uplink_item/stealthy_tool/chameleon + name = "Chameleon Kit" + desc = "A set of items that contain chameleon technology allowing you to disguise as pretty much anything on the station, and more!" item = /obj/item/clothing/under/chameleon cost = 2 -/datum/uplink_item/stealthy_tools/chameleon_stamp - name = "Chameleon Stamp" - desc = "A stamp that can be activated to imitate an official Nanotrasen Stamp. The disguised stamp will \ - work exactly like the real stamp and will allow you to forge false documents to gain access or equipment; \ - it can also be used in a washing machine to forge clothing." - item = /obj/item/weapon/stamp/chameleon - cost = 1 - surplus = 35 - /datum/uplink_item/stealthy_tools/syndigaloshes - name = "No-Slip Brown Shoes" + name = "No-Slip Chameleon Shoes" desc = "These shoes will allow the wearer to run on wet floors and slippery objects without falling down. \ They do not work on heavily lubricated surfaces." - item = /obj/item/clothing/shoes/sneakers/syndigaloshes + item = /obj/item/clothing/shoes/chameleon cost = 2 exclude_modes = list(/datum/game_mode/nuclear) @@ -691,12 +681,6 @@ var/list/uplink_items = list() // Global list so we only initialize this once. item = /obj/item/weapon/card/id/syndicate cost = 2 -/datum/uplink_item/stealthy_tools/voice_changer - name = "Voice Changer" - desc = "A conspicuous gas mask that mimics the voice named on your identification card. It can be toggled on and off." - item = /obj/item/clothing/mask/gas/voice - cost = 3 - /datum/uplink_item/stealthy_tools/chameleon_proj name = "Chameleon Projector" desc = "Projects an image across a user, disguising them as an object scanned with it, as long as they don't \ @@ -737,7 +721,7 @@ var/list/uplink_items = list() // Global list so we only initialize this once. cost = 4 surplus = 30 exclude_modes = list(/datum/game_mode/nuclear, /datum/game_mode/gang) - + /datum/uplink_item/stealthy_tools/emplight name = "EMP Flashlight" desc = "A small, self-charging, short-ranged EMP device disguised as a flashlight. \ diff --git a/tgstation.dme b/tgstation.dme index ff3c097ee4c..42d187fdc19 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -13,6 +13,7 @@ // END_PREFERENCES // BEGIN_INCLUDE +#include "tgstation.2.1.3.dmm" #include "_maps\__MAP_DEFINES.dm" #include "_maps\tgstation2.dm" #include "code\_compile_options.dm" @@ -904,6 +905,7 @@ #include "code\modules\client\preferences.dm" #include "code\modules\client\preferences_savefile.dm" #include "code\modules\client\preferences_toggles.dm" +#include "code\modules\clothing\chameleon.dm" #include "code\modules\clothing\clothing.dm" #include "code\modules\clothing\glasses\engine_goggles.dm" #include "code\modules\clothing\glasses\glasses.dm" @@ -943,7 +945,6 @@ #include "code\modules\clothing\suits\toggles.dm" #include "code\modules\clothing\suits\utility.dm" #include "code\modules\clothing\suits\wiz_robe.dm" -#include "code\modules\clothing\under\chameleon.dm" #include "code\modules\clothing\under\color.dm" #include "code\modules\clothing\under\miscellaneous.dm" #include "code\modules\clothing\under\pants.dm"