diff --git a/code/__DEFINES/admin.dm b/code/__DEFINES/admin.dm index 22a76fd8..d8b5ab0b 100644 --- a/code/__DEFINES/admin.dm +++ b/code/__DEFINES/admin.dm @@ -79,6 +79,7 @@ #define ADMIN_PUNISHMENT_FAKEBWOINK "Fake Bwoink" #define ADMIN_PUNISHMENT_NUGGET "Nugget" #define ADMIN_PUNISHMENT_BREADIFY ":b:read" +#define ADMIN_PUNISHMENT_BOOKIFY "Bookify" #define AHELP_ACTIVE 1 #define AHELP_CLOSED 2 diff --git a/code/game/objects/structures/watercloset.dm b/code/game/objects/structures/watercloset.dm index 420a92ff..2536c22b 100644 --- a/code/game/objects/structures/watercloset.dm +++ b/code/game/objects/structures/watercloset.dm @@ -453,6 +453,7 @@ H.update_inv_wear_mask() else H.lip_style = null + H.nail_style = null H.update_body() if(H.glasses && washglasses && wash_obj(H.glasses)) H.update_inv_glasses() diff --git a/code/modules/admin/verbs/randomverbs.dm b/code/modules/admin/verbs/randomverbs.dm index 0aaa34e8..1f780448 100644 --- a/code/modules/admin/verbs/randomverbs.dm +++ b/code/modules/admin/verbs/randomverbs.dm @@ -1247,6 +1247,11 @@ GLOBAL_LIST_EMPTY(custom_outfits) //Admin created outfits var/obj/item/reagent_containers/food/snacks/store/bread/plain/funnyBread = new(get_turf(target)) target.forceMove(funnyBread) +/client/proc/bookify(atom/movable/target) + var/obj/item/reagent_containers/food/snacks/store/book/funnyBook = new(get_turf(target)) + target.forceMove(funnyBook) + funnyBook.name = "Book of " + target.name + /client/proc/smite(mob/living/carbon/human/target as mob) set name = "Smite" set category = "Fun" @@ -1268,7 +1273,8 @@ GLOBAL_LIST_EMPTY(custom_outfits) //Admin created outfits ADMIN_PUNISHMENT_TABLETIDESTATIONWIDE, ADMIN_PUNISHMENT_FAKEBWOINK, ADMIN_PUNISHMENT_NUGGET, - ADMIN_PUNISHMENT_BREADIFY) + ADMIN_PUNISHMENT_BREADIFY, + ADMIN_PUNISHMENT_BOOKIFY) var/punishment = input("Choose a punishment", "DIVINE SMITING") as null|anything in punishment_list @@ -1379,6 +1385,14 @@ GLOBAL_LIST_EMPTY(custom_outfits) //Admin created outfits target.transformation_animation(bread_appearance, time = BREADIFY_TIME, transform_overlay=transform_scanline, reset_after=TRUE) addtimer(CALLBACK(GLOBAL_PROC, .proc/breadify, target), BREADIFY_TIME) #undef BREADIFY_TIME + if(ADMIN_PUNISHMENT_BOOKIFY) + #define BOOKIFY_TIME (2 SECONDS) + var/mutable_appearance/book_appearance = mutable_appearance('icons/obj/library.dmi', "book") + var/mutable_appearance/transform_scanline = mutable_appearance('icons/effects/effects.dmi', "transform_effect") + target.transformation_animation(book_appearance, time = BOOKIFY_TIME, transform_overlay=transform_scanline, reset_after=TRUE) + addtimer(CALLBACK(GLOBAL_PROC, .proc/bookify, target), BOOKIFY_TIME) + playsound(target, 'hyperstation/sound/misc/bookify.ogg', 60, 1) + #undef BOOKIFY_TIME punish_log(target, punishment) diff --git a/code/modules/food_and_drinks/food/snacks.dm b/code/modules/food_and_drinks/food/snacks.dm index be09a91d..22106266 100644 --- a/code/modules/food_and_drinks/food/snacks.dm +++ b/code/modules/food_and_drinks/food/snacks.dm @@ -378,3 +378,16 @@ All foods are distributed among various categories. Use common sense. TB.MouseDrop(over) else return ..() + +/obj/item/reagent_containers/food/snacks/store/book + name = "book" + desc = "Could it be? A LoR reference? And is it... Edible?" + icon = 'icons/obj/library.dmi' + icon_state = "book" + tastes = list("broken dreams and promises" = 10) + foodtype = GROSS + dunkable = TRUE + volume = 80 + bitesize = 4 + bonus_reagents = list(/datum/reagent/consumable/nutriment = 1) + list_reagents = list(/datum/reagent/consumable/sodiumchloride = 1) diff --git a/code/modules/mob/living/carbon/human/human_defines.dm b/code/modules/mob/living/carbon/human/human_defines.dm index fd9fdcb5..021094fc 100644 --- a/code/modules/mob/living/carbon/human/human_defines.dm +++ b/code/modules/mob/living/carbon/human/human_defines.dm @@ -24,6 +24,9 @@ var/lip_style = null //no lipstick by default- arguably misleading, as it could be used for general makeup var/lip_color = "white" + var/nail_style = null + var/nail_color = "white" + var/age = 30 //Player's age var/underwear = "Nude" //Which underwear the player wants diff --git a/code/modules/mob/living/carbon/human/species.dm b/code/modules/mob/living/carbon/human/species.dm index e822b381..74a38d3e 100644 --- a/code/modules/mob/living/carbon/human/species.dm +++ b/code/modules/mob/living/carbon/human/species.dm @@ -550,6 +550,12 @@ GLOBAL_LIST_EMPTY(roundstart_races) MA.color = "#[H.socks_color]" standing += MA + // nail paint (hyper) + if(H.nail_style) + var/mutable_appearance/nail_overlay = mutable_appearance('hyperstation/icons/mobs/nails.dmi', "nails", -HANDS_PART_LAYER) + nail_overlay.color = H.nail_color + standing += nail_overlay + if(standing.len) H.overlays_standing[BODY_LAYER] = standing diff --git a/code/modules/reagents/chemistry/reagents/other_reagents.dm b/code/modules/reagents/chemistry/reagents/other_reagents.dm index aa87217b..83f8b666 100644 --- a/code/modules/reagents/chemistry/reagents/other_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/other_reagents.dm @@ -1242,6 +1242,7 @@ var/mob/living/carbon/human/H = M if(H.lip_style) H.lip_style = null + H.nail_style = null H.update_body() for(var/obj/item/I in C.held_items) SEND_SIGNAL(I, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_WEAK) diff --git a/code/modules/vending/clothesmate.dm b/code/modules/vending/clothesmate.dm index 92d5b25a..9c6caf8c 100644 --- a/code/modules/vending/clothesmate.dm +++ b/code/modules/vending/clothesmate.dm @@ -102,6 +102,7 @@ /obj/item/clothing/suit/toggle/jacket_purple = 3, /obj/item/clothing/suit/toggle/jacket_white = 3, /obj/item/clothing/suit/jacket/letterman_red = 3, + /obj/item/clothing/suit/fluffyhalfcrop = 3, /obj/item/clothing/ears/headphones = 10, /obj/item/clothing/suit/apron/purple_bartender = 4, /obj/item/clothing/under/rank/bartender/purple = 4, diff --git a/hyperstation/code/game/objects/items/cosmetics.dm b/hyperstation/code/game/objects/items/cosmetics.dm new file mode 100644 index 00000000..711707f1 --- /dev/null +++ b/hyperstation/code/game/objects/items/cosmetics.dm @@ -0,0 +1,75 @@ +//hyperstation 13 nail polish + +/obj/item/nailpolish + name = "nail polish" + desc = "Paint with a fine brush to do your nails, or someone elses." + icon = 'hyperstation/icons/obj/cosmetic.dmi' + icon_state = "nailcap" + item_state = "nailpolish" + w_class = WEIGHT_CLASS_SMALL + var/paint = "black" + price = 5 + var/mutable_appearance/bottle //show the colour on the bottle. + +/obj/item/nailpolish/red + name = "red nail polish" + paint = "red" + +/obj/item/nailpolish/blue + name = "blue nail polish" + paint = "blue" + +/obj/item/nailpolish/aqua + name = "cyan nail polish" + paint = "aqua" + +/obj/item/nailpolish/black + name = "black nail polish" + paint = "black" + +/obj/item/nailpolish/white + name = "white nail polish" + paint = "white" + +/obj/item/nailpolish/navy + name = "navy nail polish" + paint = "navy" + +/obj/item/nailpolish/yellow + name = "yellow nail polish" + paint = "yellow" + +/obj/item/nailpolish/purple + name = "purple nail polish" + paint = "purple" + +/obj/item/nailpolish/Initialize() + . = ..() + bottle = mutable_appearance('hyperstation/icons/obj/cosmetic.dmi', "nailpolish") + bottle.color = paint + add_overlay(bottle) + + +/obj/item/nailpolish/attack(mob/M, mob/user) + if(!ismob(M)) + return + + if(ishuman(M)) + var/mob/living/carbon/human/H = M + if(H == user) + user.visible_message("[user] does [user.p_their()] nails with \the [src].", \ + "You take a moment to apply \the [src]. Perfect!") + H.nail_style = "nails" + H.nail_color = paint + H.update_body() + else + user.visible_message("[user] begins to do [H]'s nails with \the [src].", \ + "You begin to apply \the [src] on [H]'s nails...") + if(do_after(user, 20, target = H)) + user.visible_message("[user] does [H]'s nails with \the [src].", \ + "You apply \the [src] on [H]'s nails.") + H.nail_style = "nails" + H.nail_color = paint + H.update_body() + else + to_chat(user, "Where are the nail on that?") \ No newline at end of file diff --git a/hyperstation/code/modules/arousal/arousalhud.dm b/hyperstation/code/modules/arousal/arousalhud.dm index d5c609ea..faafdb4c 100644 --- a/hyperstation/code/modules/arousal/arousalhud.dm +++ b/hyperstation/code/modules/arousal/arousalhud.dm @@ -54,7 +54,7 @@ dat += "Remove sounding rod (penis)
" for(var/obj/item/organ/genital/G in U.internal_organs) if(G.equipment) //they have equipment - dat += "Remove [G.equipment.name] ([G.name]).
" + dat += "Remove [G.equipment.name] ([G.name])
" dat += {"
"}//Newline for the objects //bottom options @@ -201,6 +201,9 @@ var/obj/item/organ/genital/vagina/O = usr.getorganslot("vagina") var/obj/item/I = O.equipment usr.put_in_hands(I) + if(istype(I, /obj/item/portalpanties)) + var/obj/item/portalpanties/P = I + P.remove() O.equipment = null if(href_list["removeequipmentbelly"]) diff --git a/hyperstation/code/obj/fleshlight.dm b/hyperstation/code/obj/fleshlight.dm index 4917f823..efdf51c0 100644 --- a/hyperstation/code/obj/fleshlight.dm +++ b/hyperstation/code/obj/fleshlight.dm @@ -9,7 +9,7 @@ item_state = "fleshlight" w_class = WEIGHT_CLASS_SMALL var/sleevecolor = "#ffcbd4" //pink - price = 12 + price = 8 var/mutable_appearance/sleeve var/inuse = 0 @@ -70,4 +70,207 @@ to_chat(user, "You don't see anywhere to use this on.") inuse = 0 - ..() \ No newline at end of file + ..() + + +//Hyperstation 13 portal fleshlight +//kinky! + +/obj/item/portallight + name = "portal fleshlight" + desc = "A silver love(TM) fleshlight, used to stimulate someones penis, with bluespace tech that allows lovers to hump at a distance." + icon = 'hyperstation/icons/obj/fleshlight.dmi' + icon_state = "unpaired" + item_state = "fleshlight" + w_class = WEIGHT_CLASS_SMALL + var/partnercolor = "#ffcbd4" + var/partnerbase = "normal" + var/partnerorgan = "portal_vag" + price = 20 + var/mutable_appearance/sleeve + var/mutable_appearance/organ + var/inuse = 0 + var/paired = 0 + var/obj/item/portalunderwear + var/useable = FALSE + +/obj/item/portallight/examine(mob/user) + . = ..() + if(!portalunderwear) + . += "The device is unpaired, to pair, swipe against a pair of portal panties(TM). " + else + . += "The device is paired, and awaiting input. " + +/obj/item/portallight/attack(mob/living/carbon/C, mob/living/user) //use portallight! nearly the same as the fleshlight apart from you have a buddy! + var/obj/item/organ/genital/penis/P = C.getorganslot("penis") + + if(inuse) //just to stop stacking and causing people to cum instantly + return + if(!useable) + to_chat(user, "It seems the device has failed or your partner is not wearing their device.") + + var/obj/item/organ/genital/vagina/V = portalunderwear.loc + if(!V) + return + var/mob/living/carbon/human/M = V.owner + if(P&&P.is_exposed()) + inuse = 1 + if(!(C == user)) //if we are targeting someone else. + C.visible_message("[user] is trying to use [src] on [C]'s penis.", "[user] is trying to use [src] on your penis.") + + if(!do_mob(user, C, 3 SECONDS)) //3 second delay + inuse = 0 + return + + //checked if not used on yourself, if not, carry on. + playsound(src, 'sound/lewd/slaps.ogg', 30, 1, -1) //slapping sound + inuse = 0 + if(!(C == user)) //lewd flavour text + C.visible_message("[user] pumps [src] on [C]'s penis.", "[user] pumps [src] up and down on your penis.") + else + user.visible_message("[user] pumps [src] on their penis.", "You pump the fleshlight on your penis.") + + if(prob(30)) //30% chance to make them moan. + C.emote("moan") + if(prob(30)) //30% chance to make your partner moan. + M.emote("moan") + + to_chat(M, "You feel a [P.shape] shaped penis pumping through the portal into your vagina.")//message your partner and kinky! + M.adjustArousalLoss(20) + M.do_jitter_animation() //make your partner shake too! + + C.do_jitter_animation() + + C.adjustArousalLoss(20) //make the target more aroused. + + if (C.getArousalLoss() >= 100 && ishuman(C) && C.has_dna()) + var/mob/living/carbon/human/O = C + O.mob_climax_partner(P, M, TRUE, FALSE, FALSE, TRUE) //climax with their partner remotely! + return + + else + to_chat(user, "You don't see anywhere to use this on.") + + inuse = 0 + ..() + +/obj/item/portallight/proc/updatesleeve() + //get their looks and vagina colour! + cut_overlays()//remove current overlays + + var/obj/item/organ/genital/vagina/V = portalunderwear.loc + var/mob/living/carbon/human/H = V.owner + + if(H) //if the portal panties are on someone. + + if(H.dna.species.name == "Lizardperson") // lizard nerd + sleeve = mutable_appearance('hyperstation/icons/obj/fleshlight.dmi', "portal_sleeve_lizard") + else + sleeve = mutable_appearance('hyperstation/icons/obj/fleshlight.dmi', "portal_sleeve_normal") + + sleeve.color = "#" + H.dna.features["mcolor"] + add_overlay(sleeve) + + organ = mutable_appearance('hyperstation/icons/obj/fleshlight.dmi', "portal_vag") + organ.color = portalunderwear.loc.color + + useable = TRUE + add_overlay(organ) + else + useable = FALSE + +//Hyperstation 13 portal underwear +//can be attached to vagina, just like the vibrator, still requires pairing with the portallight + +/obj/item/portalpanties + name = "portal panties" + desc = "A silver love(TM) pair of portal underwear, with bluespace tech allows lovers to hump at a distance. Needs to be paired with a portal fleshlight before use." + icon = 'hyperstation/icons/obj/fleshlight.dmi' + icon_state = "portalpanties" + item_state = "fleshlight" + w_class = WEIGHT_CLASS_SMALL + var/obj/item/portallight + var/attached = FALSE + +/obj/item/portalpanties/examine(mob/user) + . = ..() + if(!portallight) + . += "The device is unpaired, to pair, swipe the fleshlight against this pair of portal panties(TM). " + else + . += "The device is paired, and awaiting attachment. " + + +/obj/item/portalpanties/attackby(obj/item/I, mob/living/user) //pairing + if(istype(I, /obj/item/portallight)) + var/obj/item/portallight/P = I + if(!P.portalunderwear) //make sure it aint linked to someone else + portallight = P //pair the fleshlight + P.portalunderwear = src //pair the panties on the fleshlight. + P.icon_state = "paired" //we are paired! + playsound(src, 'sound/machines/ping.ogg', 50, FALSE) + to_chat(user, "[P] has been linked up successfully.") + else + to_chat(user, "[P] has already been linked to another pair of underwear.") + else + ..() //just allows people to hit it with other objects, if they so wished. + +/obj/item/portalpanties/attack(mob/living/carbon/C, mob/living/user) + + if(!portallight) //we arent paired yet! noobie trap, let them know. + to_chat(user, "[src] can only be attached once paired with a portal fleshlight.") + return + + var/obj/item/organ/genital/picked_organ + var/mob/living/carbon/human/S = user + var/mob/living/carbon/human/T = C + picked_organ = S.target_genitals(T) //allowing to pick organ for anus down the line + if(picked_organ) + C.visible_message("[user] is trying to attach [src] to [T]!",\ + "[user] is trying to put [src] on you!") + if(!do_mob(user, C, 5 SECONDS))//warn them and have a delay of 5 seconds to apply. + return + + if(!(picked_organ.name == "vagina")) //only fits on a vagina + to_chat(user, "[src] can only be attached to a vagina.") + return + + if(!picked_organ.equipment) + to_chat(user, "You wrap [src] around [T]'s [picked_organ.name].") + else + to_chat(user, "They already have a [picked_organ.equipment.name] there.") + return + + if(!user.transferItemToLoc(src, picked_organ)) //check if you can put it in + return + src.attached = TRUE + picked_organ.equipment = src + + var/obj/item/portallight/P = portallight + //now we need to send what they look like, but saddly if the person changes colour for what ever reason, it wont update. but dont tell people shh. + if(P) //just to make sure + P.updatesleeve() + + else + to_chat(user, "You don't see anywhere to attach this.") + +/obj/item/portalpanties/proc/remove() //if taken off update it. + if(portallight) + var/obj/item/portallight/P = portallight + P.updatesleeve() + +/obj/item/storage/box/portallight + name = "Portal Fleshlight and Underwear" + icon = 'hyperstation/icons/obj/fleshlight.dmi' + desc = "A small silver box with Silver Love Co embossed." + icon_state = "box" + price = 15 + +// portal fleshlight box +/obj/item/storage/box/portallight/PopulateContents() + new /obj/item/portallight/(src) + new /obj/item/portalpanties/(src) + new /obj/item/paper/fluff/portallight(src) + +/obj/item/paper/fluff/portallight + name = "Portal Fleshlight Instructions" + info = "Thank you for purchasing the Silver Love Portal Fleshlight!
To use, simply register your new portal fleshlight with the provided underwear to link them together. The ask your lover to wear the underwear.
Have fun lovers,

Wilhelmina Steiner." \ No newline at end of file diff --git a/hyperstation/code/obj/kinkyclothes.dm b/hyperstation/code/obj/kinkyclothes.dm index 8fd9c43d..4c9f61ea 100644 --- a/hyperstation/code/obj/kinkyclothes.dm +++ b/hyperstation/code/obj/kinkyclothes.dm @@ -39,7 +39,7 @@ //the classic click clack obj/item/clothing/neck/stole - name = "white stole" + name = "white boa" desc = "Fluffy neck wear to keep you warm, and attract others." icon = 'hyperstation/icons/obj/clothing/neck.dmi' w_class = WEIGHT_CLASS_SMALL @@ -48,11 +48,22 @@ obj/item/clothing/neck/stole price = 3 obj/item/clothing/neck/stole/black - name = "black stole" + name = "black boa" desc = "Fluffy neck wear to keep you warm, and attract others." icon = 'hyperstation/icons/obj/clothing/neck.dmi' w_class = WEIGHT_CLASS_SMALL icon_state = "stole" item_state = "" //no inhands color = "#3d3d3d" - price = 3 \ No newline at end of file + price = 3 + +/obj/item/clothing/suit/fluffyhalfcrop + name = "fluffy half-crop jacket" + desc = "A fluffy synthetic fur half-cropped jacket, less about warmth, more about style!" + icon_state = "fluffy" + item_state = "fluffy" + icon = 'hyperstation/icons/obj/clothing/suits.dmi' + alternate_worn_icon = 'hyperstation/icons/mobs/suits.dmi' + body_parts_covered = CHEST|LEGS|ARMS + min_cold_protection_temperature = FIRE_SUIT_MIN_TEMP_PROTECT + mutantrace_variation = NO_MUTANTRACE_VARIATION diff --git a/hyperstation/icons/mobs/nails.dmi b/hyperstation/icons/mobs/nails.dmi new file mode 100644 index 00000000..575b5132 Binary files /dev/null and b/hyperstation/icons/mobs/nails.dmi differ diff --git a/hyperstation/icons/mobs/suits.dmi b/hyperstation/icons/mobs/suits.dmi index 1fee3289..cd3335dd 100644 Binary files a/hyperstation/icons/mobs/suits.dmi and b/hyperstation/icons/mobs/suits.dmi differ diff --git a/hyperstation/icons/obj/clothing/suits.dmi b/hyperstation/icons/obj/clothing/suits.dmi index b3e25949..3c73887c 100644 Binary files a/hyperstation/icons/obj/clothing/suits.dmi and b/hyperstation/icons/obj/clothing/suits.dmi differ diff --git a/hyperstation/icons/obj/cosmetic.dmi b/hyperstation/icons/obj/cosmetic.dmi new file mode 100644 index 00000000..2c329e9c Binary files /dev/null and b/hyperstation/icons/obj/cosmetic.dmi differ diff --git a/hyperstation/icons/obj/fleshlight.dmi b/hyperstation/icons/obj/fleshlight.dmi index a02bb49a..0115dfc0 100644 Binary files a/hyperstation/icons/obj/fleshlight.dmi and b/hyperstation/icons/obj/fleshlight.dmi differ diff --git a/hyperstation/sound/misc/bookify.ogg b/hyperstation/sound/misc/bookify.ogg new file mode 100644 index 00000000..bba99ace Binary files /dev/null and b/hyperstation/sound/misc/bookify.ogg differ diff --git a/icons/obj/doors/blastdoor.dmi b/icons/obj/doors/blastdoor.dmi index c72d29b5..30847afa 100644 Binary files a/icons/obj/doors/blastdoor.dmi and b/icons/obj/doors/blastdoor.dmi differ diff --git a/modular_citadel/code/game/machinery/vending.dm b/modular_citadel/code/game/machinery/vending.dm index bc7a3439..88c7e553 100644 --- a/modular_citadel/code/game/machinery/vending.dm +++ b/modular_citadel/code/game/machinery/vending.dm @@ -66,6 +66,7 @@ /obj/item/electropack/vibrator/small = 2, /obj/item/electropack/vibrator = 2, /obj/item/fleshlight = 2, + /obj/item/storage/box/portallight = 1, ) contraband = list( /obj/item/clothing/under/gear_harness = 3, diff --git a/modular_citadel/code/modules/arousal/arousal.dm b/modular_citadel/code/modules/arousal/arousal.dm index a4518e6f..a9a5ca23 100644 --- a/modular_citadel/code/modules/arousal/arousal.dm +++ b/modular_citadel/code/modules/arousal/arousal.dm @@ -321,7 +321,7 @@ setArousalLoss(min_arousal) -/mob/living/carbon/human/proc/mob_climax_partner(obj/item/organ/genital/G, mob/living/L, spillage = TRUE, impreg = FALSE,cover = FALSE, mb_time = 30) //Used for climaxing with any living thing +/mob/living/carbon/human/proc/mob_climax_partner(obj/item/organ/genital/G, mob/living/L, spillage = TRUE, impreg = FALSE,cover = FALSE,remote = FALSE, mb_time = 30) //Used for climaxing with any living thing var/total_fluids = 0 var/datum/reagents/fluid_source = null @@ -369,7 +369,9 @@ setArousalLoss(min_arousal) if(spillage && !cover) - if(do_after(src, mb_time, target = src) && in_range(src, L)) + if(do_after(src, mb_time, target = src)) + if(!in_range(src, L) && !remote) + return fluid_source.trans_to(L, total_fluids*G.fluid_transfer_factor) total_fluids -= total_fluids*G.fluid_transfer_factor if(total_fluids > 5) @@ -408,6 +410,7 @@ if (L.mind == obj.target) L.mind.sexed = TRUE //sexed to_chat(src, "You feel deep satisfaction with yourself.") + //Hyper - remote if(impreg) //Role them odds, only people with the dicks can send the chance to the person with the settings enabled at the momment. @@ -491,7 +494,7 @@ if(!G.dontlist) genitals_list += G if(genitals_list.len) - ret_organ = input(src, "", "Gentials", null) as null|obj in genitals_list + ret_organ = input(src, "", "Genitals", null) as null|obj in genitals_list return ret_organ return null //error stuff diff --git a/modular_citadel/code/modules/arousal/organs/genitals.dm b/modular_citadel/code/modules/arousal/organs/genitals.dm index 82d295a0..af313a3d 100644 --- a/modular_citadel/code/modules/arousal/organs/genitals.dm +++ b/modular_citadel/code/modules/arousal/organs/genitals.dm @@ -430,12 +430,12 @@ //otherwise, appear under clothing if(G.slot == "penis" || G.slot == "testicles") if(G.size < 3) //is actually "less than 11 inches" - genital_overlay.layer = -GENITALS_UNDER_LAYER + genital_overlay.layer = -GENITALS_UNDER_LAYER if(G.slot == "breasts") var/obj/item/organ/genital/breasts/B = G if(B.cached_size < 8) //anything smaller than a g-cup genital_overlay.layer = -GENITALS_UNDER_LAYER - + //Get the icon genital_overlay.icon_state = "[G.slot]_[S.icon_state]_[size]_[aroused_state]_[layertext]" colourcode = S.color_src diff --git a/modular_citadel/code/modules/client/loadout/backpack.dm b/modular_citadel/code/modules/client/loadout/backpack.dm index adb1d42a..7a257bdb 100644 --- a/modular_citadel/code/modules/client/loadout/backpack.dm +++ b/modular_citadel/code/modules/client/loadout/backpack.dm @@ -175,12 +175,12 @@ name = "Teal Lipstick" category = SLOT_IN_BACKPACK path = /obj/item/lipstick/teal - + /datum/gear/lipstick_fuchsia name = "Fuchsia Lipstick" category = SLOT_IN_BACKPACK path = /obj/item/lipstick/fuchsia - + /datum/gear/lipstick_navy name = "Navy Blue Lipstick" category = SLOT_IN_BACKPACK @@ -196,6 +196,46 @@ category = SLOT_IN_BACKPACK path = /obj/item/lipstick/white +/datum/gear/nailpolish_red + name = "Red Nail Polish" + category = SLOT_IN_BACKPACK + path = /obj/item/nailpolish/red + +/datum/gear/nailpolish_blue + name = "Blue Nail Polish" + category = SLOT_IN_BACKPACK + path = /obj/item/nailpolish/blue + +/datum/gear/nailpolish_aqua + name = "Cyan Nail Polish" + category = SLOT_IN_BACKPACK + path = /obj/item/nailpolish/aqua + +/datum/gear/nailpolish_black + name = "Black Nail Polish" + category = SLOT_IN_BACKPACK + path = /obj/item/nailpolish/black + +/datum/gear/nailpolish_white + name = "White Nail Polish" + category = SLOT_IN_BACKPACK + path = /obj/item/nailpolish/white + +/datum/gear/nailpolish_navy + name = "Navy Nail Polish" + category = SLOT_IN_BACKPACK + path = /obj/item/nailpolish/navy + +/datum/gear/nailpolish_yellow + name = "Yellow Nail Polish" + category = SLOT_IN_BACKPACK + path = /obj/item/nailpolish/yellow + +/datum/gear/nailpolish_purple + name = "Purple Nail Polish" + category = SLOT_IN_BACKPACK + path = /obj/item/nailpolish/purple + /datum/gear/condom name = "Condom" category = SLOT_IN_BACKPACK diff --git a/modular_citadel/code/modules/mob/dead/new_player/sprite_accessories.dm b/modular_citadel/code/modules/mob/dead/new_player/sprite_accessories.dm index bf5b49fb..6312c697 100644 --- a/modular_citadel/code/modules/mob/dead/new_player/sprite_accessories.dm +++ b/modular_citadel/code/modules/mob/dead/new_player/sprite_accessories.dm @@ -1558,6 +1558,14 @@ datum/sprite_accessory/mam_tails/insect name = "Wolf" icon_state = "wolf" +/datum/sprite_accessory/mam_tails/spade + name = "Demon Spade" + icon_state = "spade" + +/datum/sprite_accessory/mam_tails_animated/spade + name = "Demon Spade" + icon_state = "spade" + /datum/sprite_accessory/mam_tails/synthliz recommended_species = list("synthliz") color_src = MUTCOLORS diff --git a/modular_citadel/icons/mob/mam_tails.dmi b/modular_citadel/icons/mob/mam_tails.dmi index 5db55a6b..583772d8 100644 Binary files a/modular_citadel/icons/mob/mam_tails.dmi and b/modular_citadel/icons/mob/mam_tails.dmi differ diff --git a/tgstation.dme b/tgstation.dme index 06ef9bc7..2af021a6 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -3037,6 +3037,7 @@ #include "hyperstation\code\datums\ruins\lavaland.dm" #include "hyperstation\code\datums\traits\good.dm" #include "hyperstation\code\datums\traits\neutral.dm" +#include "hyperstation\code\game\objects\items\cosmetics.dm" #include "hyperstation\code\game\objects\structures\ghost_role_spawners.dm" #include "hyperstation\code\gamemode\traitor_lewd.dm" #include "hyperstation\code\gamemode\traitor_thief.dm"