Merge branch 'master' into bunnypack

This commit is contained in:
Nick
2018-02-09 07:10:12 +01:00
committed by GitHub
394 changed files with 84552 additions and 70254 deletions
+26 -3
View File
@@ -1,6 +1,29 @@
//supply packs
/datum/supply_pack/misc/kinkmate
name = "Kinkmate supply Crate"
name = "Kinkmate construction kit"
cost = 2000
contraband = TRUE
contains = list(/obj/item/vending_refill/kink)
crate_name = "Kinkmate supply crate"
contains = list(/obj/item/vending_refill/kink, /obj/item/circuitboard/machine/kinkmate)
crate_name = "Kinkmate construction kit"
//Food and livestocks
/datum/supply_pack/organic/critter/kiwi
name = "Space kiwi Crate"
cost = 2000
contains = list( /mob/living/simple_animal/kiwi)
crate_name = "space kiwi crate"
//////////////////////////////////////////////////////////////////////////////
//////////////////////////// Miscellaneous ///////////////////////////////////
//////////////////////////////////////////////////////////////////////////////
/datum/supply_pack/misc/disco
name = "Disco Ball"
cost = 1000000
contains = list(/obj/machinery/disco)
crate_name = "Disco Ball"
@@ -0,0 +1,5 @@
/datum/gear/stethoscope
name = "Stethoscope"
category = slot_neck
path = /obj/item/clothing/neck/stethoscope
restricted_roles = list("Medical Doctor", "Chief Medical Officer")
@@ -0,0 +1,71 @@
/datum/gear/navyblueuniformhos
name = "Head of Security navyblue uniform"
category = slot_w_uniform
path = /obj/item/clothing/under/rank/head_of_security/navyblue
restricted_roles = list("Head of Security")
/datum/gear/navybluehosberet
name = "Head of security's Naviblue beret"
category = slot_head
path = /obj/item/clothing/head/beret/sec/navyhos
restricted_roles = list("Head of Security")
/datum/gear/navybluejackethos
name = "head of security's navyblue jacket"
category = slot_wear_suit
path = /obj/item/clothing/suit/security/hos
restricted_roles = list("Head of Security")
/datum/gear/navybluejacketofficer
name = "security officer's navyblue jacket"
category = slot_wear_suit
path = /obj/item/clothing/suit/security/officer
restricted_roles = list("Security Officer")
/datum/gear/navyblueofficerberet
name = "Security officer's Navyblue beret"
category = slot_head
path = /obj/item/clothing/head/beret/sec/navyofficer
restricted_roles = list("Security Officer")
/datum/gear/navyblueuniformofficer
name = "security officer navyblue uniform"
category = slot_w_uniform
path = /obj/item/clothing/under/rank/security/navyblue
restricted_roles = list("Security officer")
/datum/gear/navybluejacketwarden
name = "warden navyblue jacket"
category = slot_wear_suit
path = /obj/item/clothing/suit/security/warden
restricted_roles = list("Warden")
/datum/gear/navybluewardenberet
name = "Warden's navyblue beret"
category = slot_head
path = /obj/item/clothing/head/beret/sec/navywarden
restricted_roles = list("Warden")
/datum/gear/navyblueuniformwarden
name = "Warden navyblue uniform"
category = slot_w_uniform
path = /obj/item/clothing/under/rank/warden/navyblue
restricted_roles = list("Warden")
/datum/gear/secskirt
name = "Security skirt"
category = slot_w_uniform
path = /obj/item/clothing/under/rank/security/skirt
restricted_roles = list("Security Officer", "Warden", "Head of Security")
/datum/gear/hosskirt
name = "Head of security's skirt"
category = slot_w_uniform
path = /obj/item/clothing/under/rank/head_of_security/skirt
restricted_roles = list("Head of Security")
/datum/gear/sechud
name = "Security Hud"
category = slot_glasses
path = /obj/item/clothing/glasses/hud/security
restricted_roles = list("Security Officer", "Warden", "Head of Security")
@@ -0,0 +1,13 @@
/datum/gear/plushvar
name = "Ratvar Plushie"
category = slot_in_backpack
path = /obj/item/toy/plush/plushvar
cost = 5
restricted_roles = list("Chaplain")
/datum/gear/narplush
name = "Narsie Plushie"
category = slot_in_backpack
path = /obj/item/toy/plush/narplush
cost = 5
restricted_roles = list("Chaplain")
@@ -18,20 +18,6 @@
category = slot_in_backpack
path = /obj/item/toy/plush/slimeplushie
/datum/gear/plushvar
name = "Ratvar Plushie"
category = slot_in_backpack
path = /obj/item/toy/plush/plushvar
cost = 5
restricted_roles = list("Chaplain")
/datum/gear/narplush
name = "Narsie Plushie"
category = slot_in_backpack
path = /obj/item/toy/plush/narplush
cost = 5
restricted_roles = list("Chaplain")
/datum/gear/dildo
name = "Customizable dildo"
category = slot_in_backpack
@@ -42,9 +42,3 @@
name = "Prescription glasses"
category = slot_glasses
path = /obj/item/clothing/glasses/regular
/datum/gear/sechud
name = "Security Hud"
category = slot_glasses
path = /obj/item/clothing/glasses/hud/security
restricted_roles = list("Security Officer", "Warden", "Head of Security")
@@ -47,21 +47,3 @@
name = "Top Hat"
category = slot_head
path = /obj/item/clothing/head/that
/datum/gear/navybluehosberet
name = "Head of security's Naviblue beret"
category = slot_head
path = /obj/item/clothing/head/beret/sec/navyhos
restricted_roles = list("Head of Security")
/datum/gear/navyblueofficerberet
name = "Security officer's Navyblue beret"
category = slot_head
path = /obj/item/clothing/head/beret/sec/navyofficer
restricted_roles = list("Security Officer")
/datum/gear/navybluewardenberet
name = "Warden's navyblue beret"
category = slot_head
path = /obj/item/clothing/head/beret/sec/navywarden
restricted_roles = list("Warden")
@@ -18,12 +18,6 @@
category = slot_neck
path = /obj/item/clothing/neck/petcollar
/datum/gear/stethoscope
name = "Stethoscope"
category = slot_neck
path = /obj/item/clothing/neck/stethoscope
restricted_roles = list("Medical Doctor", "Chief Medical Officer")
/datum/gear/scarf
name = "White scarf"
category = slot_neck
@@ -67,21 +67,3 @@
name = "Ian Shirt"
category = slot_wear_suit
path = /obj/item/clothing/suit/ianshirt
/datum/gear/navybluejackethos
name = "head of security's navyblue jacket"
category = slot_wear_suit
path = /obj/item/clothing/suit/security/hos
restricted_roles = list("Head of Security")
/datum/gear/navybluejacketwarden
name = "warden navyblue jacket"
category = slot_wear_suit
path = /obj/item/clothing/suit/security/warden
restricted_roles = list("Warden")
/datum/gear/navybluejacketofficer
name = "security officer's navyblue jacket"
category = slot_wear_suit
path = /obj/item/clothing/suit/security/officer
restricted_roles = list("Security Officer")
@@ -78,25 +78,6 @@
category = slot_w_uniform
path = /obj/item/clothing/under/kilt
/datum/gear/navyblueuniformhos
name = "Head of Security navyblue uniform"
category = slot_w_uniform
path = /obj/item/clothing/under/rank/head_of_security/navyblue
restricted_roles = list("Head of Security")
/datum/gear/navyblueuniformwarden
name = "Warden navyblue uniform"
category = slot_w_uniform
path = /obj/item/clothing/under/rank/warden/navyblue
restricted_roles = list("Warden")
/datum/gear/navyblueuniformofficer
name = "security officer navyblue uniform"
category = slot_w_uniform
path = /obj/item/clothing/under/rank/security/navyblue
restricted_roles = list("Security officer")
/datum/gear/camoshorts
name = "Camo Pants"
category = slot_w_uniform
@@ -137,20 +118,7 @@
category = slot_w_uniform
path = /obj/item/clothing/under/pants/track
/datum/gear/secskirt
name = "Security skirt"
category = slot_w_uniform
path = /obj/item/clothing/under/rank/security/skirt
restricted_roles = list("Security Officer", "Warden", "Head of Security")
/datum/gear/hosskirt
name = "Head of security's skirt"
category = slot_w_uniform
path = /obj/item/clothing/under/rank/head_of_security/skirt
restricted_roles = list("Head of Security")
/datum/gear/turtleneck
name = "Tactitool Turtleneck"
category = slot_w_uniform
path = /obj/item/clothing/under/syndicate/cosmetic
@@ -7,6 +7,10 @@
var/list/gear_categories
var/list/chosen_gear
var/gear_tab
var/screenshake = 100
var/damagescreenshake = 2
var/arousable = TRUE
var/widescreenpref = TRUE
/datum/preferences/New(client/C)
..()
@@ -0,0 +1,178 @@
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Polychromic Clothes: //
// //
// Polychromic clothes simply consist of 4 sprites: A base, unrecoloured sprite, and up to 3 greyscaled sprites. //
// In order to add more polychromic clothes, simply create a base sprite, and up to 3 recolourable overlays for it, //
// and then name them as follows: [name], [name]-primary, [name]-secondary, [name]-tertiary. The sprites should //
// ideally be in 'modular_citadel/icons/polyclothes/item/uniform.dmi' and 'modular_citadel/icons/polyclothes/mob/uniform.dmi' for the //
// worn sprites. After that, copy paste the code from any of the example clothes beneath the giant mass of procs and //
// change the names around. [name] should go in BOTH icon_state and item_color. You can preset colors and disable //
// any overlays using the self-explainatory vars. //
// //
// -Tori //
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/obj/item/clothing/under/polychromic //This is the parent object. DO NOT copy paste this and its vars if you want to make something new.
name = "polychromic suit"
desc = "For when you want to show off your horrible colour coordination skills."
icon = 'modular_citadel/icons/polyclothes/item/uniform.dmi'
alternate_worn_icon = 'modular_citadel/icons/polyclothes/mob/uniform.dmi' //To make human/update_icon.dm read worn sprites from here.
icon_state = "polysuit"
item_color = "polysuit" //The item color is used to select its mob icon
item_state = "sl_suit" //Inhand sprites. Would be an arse to make one for all the clothes. Should probably be standardized to rainbow.
can_adjust = FALSE //to prevent you from "wearing it casually"
var/hasprimary = TRUE //These vars allow you to choose which overlays a clothing has
var/hassecondary = TRUE
var/hastertiary = TRUE
var/primary_color = "#FFFFFF" //RGB in hexcode
var/secondary_color = "#FFFFFF"
var/tertiary_color = "#808080"
/obj/item/clothing/under/polychromic/update_icon()
..()
cut_overlays() //prevents the overlays from infinitely stacking
if(hasprimary) //Checks if the overlay is enabled
var/mutable_appearance/primary_overlay = mutable_appearance('modular_citadel/icons/polyclothes/item/uniform.dmi', "[item_color]-primary") //Automagically picks overlays
primary_overlay.color = primary_color //Colors the greyscaled overlay
add_overlay(primary_overlay) //Applies the coloured overlay onto the item sprite. but NOT the mob sprite.
if(hassecondary)
var/mutable_appearance/secondary_overlay = mutable_appearance('modular_citadel/icons/polyclothes/item/uniform.dmi', "[item_color]-secondary")
secondary_overlay.color = secondary_color
add_overlay(secondary_overlay)
if(hastertiary)
var/mutable_appearance/tertiary_overlay = mutable_appearance('modular_citadel/icons/polyclothes/item/uniform.dmi', "[item_color]-tertiary")
tertiary_overlay.color = tertiary_color
add_overlay(tertiary_overlay)
/obj/item/clothing/under/polychromic/AltClick(mob/living/user)
if(!in_range(src, user)) //Basic checks to prevent abuse
return
if(user.incapacitated() || !istype(user))
to_chat(user, "<span class='warning'>You can't do that right now!</span>")
return
var/choice = input(user,"polychromic thread options", "Clothing Recolor") as null|anything in list("[hasprimary ? "Primary Color" : ""]", "[hassecondary ? "Secondary Color" : ""]", "[hastertiary ? "Tertiary Color" : ""]") //generates a list depending on the enabled overlays
switch(choice) //Lets the list's options actually lead to something
if("Primary Color")
var/primary_color_input = input(usr,"","Choose Primary Color",primary_color) as color|null //color input menu, the "|null" adds a cancel button to it.
if(primary_color_input) //Checks if the color selected is NULL, rejects it if it is NULL.
primary_color = sanitize_hexcolor(primary_color_input, desired_format=6, include_crunch=1) //formats the selected color properly
update_icon() //updates the item icon
user.update_inv_w_uniform() //updates the worn icon
if("Secondary Color")
var/secondary_color_input = input(usr,"","Choose Secondary Color",secondary_color) as color|null
if(secondary_color_input)
secondary_color = sanitize_hexcolor(secondary_color_input, desired_format=6, include_crunch=1)
update_icon()
user.update_inv_w_uniform()
if("Tertiary Color")
var/tertiary_color_input = input(usr,"","Choose Tertiary Color",tertiary_color) as color|null
if(tertiary_color_input)
tertiary_color = sanitize_hexcolor(tertiary_color_input, desired_format=6, include_crunch=1)
update_icon()
user.update_inv_w_uniform()
/obj/item/clothing/under/polychromic/worn_overlays(isinhands, icon_file) //this is where the main magic happens
. = ..()
if(!isinhands) //prevents the worn sprites from showing up if you're just holding them
if(hasprimary) //checks if overlays are enabled
var/mutable_appearance/primary_worn = mutable_appearance('modular_citadel/icons/polyclothes/mob/uniform.dmi', "[item_color]-primary") //automagical sprite selection
primary_worn.color = primary_color //colors the overlay
. += primary_worn //adds the overlay onto the buffer list to draw on the mob sprite.
if(hassecondary)
var/mutable_appearance/secondary_worn = mutable_appearance('modular_citadel/icons/polyclothes/mob/uniform.dmi', "[item_color]-secondary")
secondary_worn.color = secondary_color
. += secondary_worn
if(hastertiary)
var/mutable_appearance/tertiary_worn = mutable_appearance('modular_citadel/icons/polyclothes/mob/uniform.dmi', "[item_color]-tertiary")
tertiary_worn.color = tertiary_color
. += tertiary_worn
/obj/item/clothing/under/polychromic/examine(mob/user)
..()
to_chat(user, "<span class='notice'>Alt-click to recolor it.</span>") // so people don't "OOC how do you use polychromic clothes????"
/obj/item/clothing/under/polychromic/Initialize()
..()
update_icon() //Applies the overlays and default colors onto the clothes on spawn.
/obj/item/clothing/under/polychromic/shirt //COPY PASTE THIS TO MAKE A NEW THING
name = "polychromic button-up shirt"
desc = "A fancy button-up shirt made with polychromic threads."
icon_state = "polysuit"
item_color = "polysuit"
item_state = "sl_suit"
hasprimary = TRUE
hassecondary = TRUE
hastertiary = TRUE
primary_color = "#FFFFFF" //RGB in hexcode
secondary_color = "#353535"
tertiary_color = "#353535"
/obj/item/clothing/under/polychromic/kilt
name = "polychromic kilt"
desc = "It's not a skirt!"
icon_state = "polykilt"
item_color = "polykilt"
item_state = "kilt"
hasprimary = TRUE
hassecondary = TRUE
hastertiary = TRUE
primary_color = "#FFFFFF" //RGB in hexcode
secondary_color = "#F08080"
tertiary_color = "#808080"
/obj/item/clothing/under/polychromic/skirt
name = "polychromic skirt"
desc = "A fancy skirt made with polychromic threads."
icon_state = "polyskirt"
item_color = "polyskirt"
item_state = "rainbow"
hasprimary = TRUE
hassecondary = TRUE
hastertiary = TRUE
primary_color = "#FFFFFF" //RGB in hexcode
secondary_color = "#F08080"
tertiary_color = "#808080"
/obj/item/clothing/under/polychromic/shorts
name = "polychromic shorts"
desc = "For ease of movement and style."
icon_state = "polyshorts"
item_color = "polyshorts"
item_state = "rainbow"
hasprimary = TRUE
hassecondary = TRUE
hastertiary = TRUE
primary_color = "#353535" //RGB in hexcode
secondary_color = "#808080"
tertiary_color = "#808080"
/obj/item/clothing/under/polychromic/jumpsuit
name = "polychromic tri-tone jumpsuit"
desc = "A fancy jumpsuit made with polychromic threads."
icon_state = "polyjump"
item_color = "polyjump"
item_state = "rainbow"
hasprimary = TRUE
hassecondary = TRUE
hastertiary = TRUE
primary_color = "#FFFFFF" //RGB in hexcode
secondary_color = "#808080"
tertiary_color = "#FF3535"
/obj/item/clothing/under/polychromic/shortpants
name = "polychromic athletic shorts"
desc = "95% Polychrome, 5% Spandex!"
icon_state = "polyshortpants"
item_color = "polyshortpants"
item_state = "rainbow"
hasprimary = TRUE
hassecondary = TRUE
hastertiary = FALSE
primary_color = "#FFFFFF" //RGB in hexcode
secondary_color = "#F08080"
gender = PLURAL //Because shortS
body_parts_covered = GROIN //Because there's no shirt included
@@ -0,0 +1,22 @@
/*
* Turtlenecks in general go here!
*/
//CMO's Turtleneck, because they don't have any unique clothes!
/obj/item/clothing/under/rank/chief_medical_officer/turtleneck
desc = "It's a turtleneck worn by those with the experience to be \"Chief Medical Officer\". It provides minor biological protection, for an officer with a superior sense of style and practicality."
name = "chief medical officer's turtleneck"
alternate_worn_icon = 'modular_citadel/icons/mob/clothing/turtlenecks.dmi'
icon = 'modular_citadel/icons/obj/clothing/turtlenecks.dmi'
icon_state = "cmoturtle"
item_state = "w_suit"
item_color = "cmoturtle"
permeability_coefficient = 0.5
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 10, rad = 0, fire = 0, acid = 0)
can_adjust = TRUE
alt_covers_chest = TRUE
/obj/structure/closet/secure_closet/CMO/PopulateContents() //This is placed here because it's a very specific addition for a very specific niche
..()
new /obj/item/clothing/under/rank/chief_medical_officer/turtleneck(src)
@@ -0,0 +1,134 @@
/mob/living/simple_animal/kiwi
name = "space kiwi"
desc = "Exposure to low gravity made them grow larger."
gender = FEMALE
icon = 'modular_citadel/icons/mob/kiwi.dmi'
icon_state = "kiwi"
icon_living = "kiwi"
icon_dead = "dead"
speak = list("Chirp!","Cheep cheep chirp!!","Cheep.")
speak_emote = list("chirps","trills")
emote_hear = list("chirps.")
emote_see = list("pecks at the ground.","jumps in place.")
density = FALSE
speak_chance = 2
turns_per_move = 3
butcher_results = list(/obj/item/reagent_containers/food/snacks/meat/slab = 3)
var/egg_type = /obj/item/reagent_containers/food/snacks/egg/kiwiEgg
var/food_type = /obj/item/reagent_containers/food/snacks/grown/wheat
response_help = "pets"
response_disarm = "gently pushes aside"
response_harm = "kicks"
attacktext = "kicks"
health = 25
maxHealth = 25
ventcrawler = VENTCRAWLER_ALWAYS
var/eggsleft = 0
var/eggsFertile = TRUE
pass_flags = PASSTABLE | PASSMOB
mob_size = MOB_SIZE_SMALL
var/list/feedMessages = list("It chirps happily.","It chirps happily.")
var/list/layMessage = list("lays an egg.","squats down and croons.","begins making a huge racket.","begins chirping raucously.")
gold_core_spawnable = FRIENDLY_SPAWN
var/static/kiwi_count = 0
/mob/living/simple_animal/kiwi/Destroy()
--kiwi_count
return ..()
/mob/living/simple_animal/kiwi/Initialize()
. = ..()
++kiwi_count
/mob/living/simple_animal/kiwi/Life()
. =..()
if(!.)
return
if((!stat && prob(3) && eggsleft > 0) && egg_type)
visible_message("[src] [pick(layMessage)]")
eggsleft--
var/obj/item/E = new egg_type(get_turf(src))
E.pixel_x = rand(-6,6)
E.pixel_y = rand(-6,6)
if(eggsFertile)
if(kiwi_count < MAX_CHICKENS && prob(25))
START_PROCESSING(SSobj, E)
/obj/item/reagent_containers/food/snacks/egg/kiwiEgg/process()
if(isturf(loc))
amount_grown += rand(1,2)
if(amount_grown >= 100)
visible_message("[src] hatches with a quiet cracking sound.")
new /mob/living/simple_animal/babyKiwi(get_turf(src))
STOP_PROCESSING(SSobj, src)
qdel(src)
else
STOP_PROCESSING(SSobj, src)
/mob/living/simple_animal/kiwi/attackby(obj/item/O, mob/user, params)
if(istype(O, food_type)) //feedin' dem kiwis
if(!stat && eggsleft < 8)
var/feedmsg = "[user] feeds [O] to [name]! [pick(feedMessages)]"
user.visible_message(feedmsg)
qdel(O)
eggsleft += rand(1, 4)
else
to_chat(user, "<span class='warning'>[name] doesn't seem hungry!</span>")
else
..()
/mob/living/simple_animal/babyKiwi
name = "baby space kiwi"
desc = "So huggable."
icon = 'modular_citadel/icons/mob/kiwi.dmi'
icon_state = "babyKiwi"
icon_living = "babyKiwi"
icon_dead = "deadBaby"
icon_gib = "chick_gib"
gender = FEMALE
speak = list("Cherp.","Cherp?","Chirrup.","Cheep!")
speak_emote = list("chirps")
emote_hear = list("chirps.")
emote_see = list("pecks at the ground.","Happily bounces in place.")
density = FALSE
speak_chance = 2
turns_per_move = 2
butcher_results = list(/obj/item/reagent_containers/food/snacks/meat/slab = 2)
response_help = "pets"
response_disarm = "gently pushes aside"
response_harm = "kicks"
attacktext = "kicks"
health = 10
maxHealth = 10
ventcrawler = VENTCRAWLER_ALWAYS
var/amount_grown = 0
pass_flags = PASSTABLE | PASSGRILLE | PASSMOB
mob_size = MOB_SIZE_TINY
gold_core_spawnable = FRIENDLY_SPAWN
/mob/living/simple_animal/babyKiwi/Initialize()
. = ..()
pixel_x = rand(-6, 6)
pixel_y = rand(0, 10)
/mob/living/simple_animal/babyKiwi/Life()
. =..()
if(!.)
return
if(!stat && !ckey)
amount_grown += rand(1,2)
if(amount_grown >= 100)
new /mob/living/simple_animal/kiwi(src.loc)
qdel(src)
/obj/item/reagent_containers/food/snacks/egg/kiwiEgg
name = "kiwi egg"
icon = 'modular_citadel/icons/mob/kiwi.dmi'
desc = "A slightly bigger egg!"
icon_state = "egg"