Merge branch 'master' of https://github.com/Skyrat-SS13/Skyrat-tg into upstream-24-08e

This commit is contained in:
Waterpig
2024-08-26 11:31:53 +02:00
102 changed files with 3851 additions and 892 deletions
+4 -4
View File
@@ -31,16 +31,16 @@ Space Station 13 is a paranoia-laden round-based roleplaying game set against th
- If you feel like feedback on a controversial PR is required, you are free to open a [feature request](https://github.com/Bubberstation/Bubberstation/issues/new/choose) under the repository issues page and reference the PR number.
**3. The Licensing is Non-negotiable**
- You are free to take, redistribute, modify, and readapt any code or commit found on this repository.
- All code files are under **GNU AGPL V3**
- You are free to take, redistribute, modify, and readapt any code or commit found on this repository.
- All code files are under **GNU AGPL V3**
- All asset files (images and sound) are **CC-BY-SA 3.0** unless otherwise stated
- The license information, including the MIT license and its exceptions, can be found at the bottom of this readme.
- The license information, including the MIT license and its exceptions, can be found at the bottom of this readme.
- What does this mean to our contributors? **The** [GNU AGPL V3](https://www.gnu.org/licenses/agpl-3.0.html) **licensing on this codebase is non-negotiable** and **irrevocable** the moment you open a PR. We are incapable of privatizing this codebase and you are incapable of restricting your code contributions even if you close the PR. Do not open a contribution if you do not feel comfortable with your code being permanent across the entirety of the community. **All contributions are preserved in commit history**
- What does this mean to our spriters and sound designers? [CC-BY-SA 3.0](https://creativecommons.org/licenses/by-sa/3.0/) **is the only license that this project will accept**
- It is prohibited to use the attribution requirement to [suggest that you endorse or support a particular use](https://creativecommons.org/faq/#do-i-need-to-be-aware-of-anything-else-when-providing-attribution) of your assets.
- You are entitled to credit yourself with comments and you are entitled to waive the attribution requirement choosing not to be identified as the creator if you wish.
- If you do not like how your assets were modified or used, it is required that the other person [remove the attribution information upon request](https://wiki.creativecommons.org/wiki/License_Versions#Licensors_may_request_removal_of_attribution).
- Modifications or adaptions must disclose the source, the author, and [any changes you've made](https://wiki.creativecommons.org/wiki/License_Versions#Modifications_and_adaptations_must_be_indicated).
- Modifications or adaptions must disclose the source, the author, and [any changes you've made](https://wiki.creativecommons.org/wiki/License_Versions#Modifications_and_adaptations_must_be_indicated).
- Goonstation code is incompatible with this codebase and will not be accepted.
*Credit: [Goonstation contribution guidelines](https://hackmd.io/@goonstation/docs/%2F%40goonstation%2Fcontribute#What-if-I-change-my-mind-about-my-contributions-being-published)*
File diff suppressed because it is too large Load Diff
+19 -19
View File
@@ -293,7 +293,7 @@
},
/area/station/medical/medbay/central)
"aei" = (
/turf/closed/wall,
/turf/closed/wall/r_wall,
/area/station/maintenance/eva_shed/starboard)
"aez" = (
/obj/structure/chair/stool/directional/west,
@@ -46222,13 +46222,11 @@
/obj/machinery/door/airlock/hatch{
name = "Port EVA Shed"
},
/obj/effect/mapping_helpers/airlock/access/all/command/general,
/obj/structure/cable,
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
/obj/effect/mapping_helpers/airlock/unres{
dir = 4
},
/obj/effect/mapping_helpers/airlock/access/any/engineering/general,
/turf/open/floor/catwalk_floor/iron_smooth,
/area/station/maintenance/eva_shed/port)
"mXO" = (
@@ -74511,13 +74509,11 @@
/obj/machinery/door/airlock/hatch{
name = "Starboard EVA Shed"
},
/obj/effect/mapping_helpers/airlock/access/all/command/general,
/obj/structure/cable,
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
/obj/effect/mapping_helpers/airlock/unres{
dir = 8
},
/obj/effect/mapping_helpers/airlock/access/any/engineering/general,
/turf/open/floor/catwalk_floor/iron_smooth,
/area/station/maintenance/eva_shed/starboard)
"uHB" = (
@@ -83060,6 +83056,9 @@
},
/turf/open/floor/iron/smooth_large,
/area/station/cargo/storage)
"xbS" = (
/turf/closed/wall/r_wall,
/area/station/maintenance/port/upper)
"xcf" = (
/obj/structure/flora/grass/jungle,
/obj/structure/flora/bush/grassy,
@@ -84528,8 +84527,8 @@
/turf/open/floor/iron/smooth,
/area/station/engineering/atmos)
"xxv" = (
/turf/closed/wall,
/area/station/maintenance/eva_shed/port)
/turf/closed/wall/r_wall,
/area/station/maintenance/starboard/upper)
"xxJ" = (
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
@@ -86413,6 +86412,7 @@
pixel_x = 6;
pixel_y = -6
},
/obj/item/storage/box/firingpins,
/turf/open/floor/engine,
/area/station/ai_monitored/security/armory)
"ybE" = (
@@ -118528,10 +118528,10 @@ iLQ
iLQ
odJ
odJ
jqn
jqn
xbS
xbS
mXy
jqn
xbS
iqF
iqF
iqF
@@ -119042,7 +119042,7 @@ ttw
ttw
ttw
ttw
xxv
aoM
pcM
cIK
ska
@@ -119299,10 +119299,10 @@ ttw
ttw
ttw
ttw
xxv
aoM
wcM
xxv
xxv
aoM
aoM
qVs
qVs
qVs
@@ -119556,7 +119556,7 @@ ttw
ttw
ttw
ttw
xxv
aoM
ska
aoM
lwq
@@ -122639,11 +122639,11 @@ ttw
ttw
ttw
ttw
usB
usB
usB
xxv
xxv
xxv
uHz
usB
xxv
iqF
iqF
iqF
+1
View File
@@ -57,6 +57,7 @@
#define MEDAL_DEBT_EXTINGUISHED "Debt Extinguished"
#define MEDAL_SISYPHUS "Sisyphus"
#define MEDAL_ARCHMAGE "Archmage"
#define MEDAL_CIGARETTES "Cigarettes"
#define MEDAL_THEORETICAL_LIMITS "All Within Theoretical Limits"
//Skill medal hub IDs
+4
View File
@@ -175,6 +175,10 @@ SUBSYSTEM_DEF(polling)
UNTIL(new_poll.finished)
if(!(amount_to_pick > 0))
return new_poll.signed_up
if(length(new_poll.signed_up) < amount_to_pick)
return new_poll.signed_up
if(length(new_poll.signed_up) < amount_to_pick)
return new_poll.signed_up
//BUBBERSTATION CHANGE START: ANTAG TICKETS INTEGRATION
var/list/candidate_tickets = candidates_to_tickets(new_poll.signed_up)
@@ -232,3 +232,9 @@
desc = "Successfully carry a boulder from Lavaland all the way to Centcom, without ever dropping it. We must imagine you're happy to unlock this."
database_id = MEDAL_SISYPHUS
icon_state = "sisyphus"
/datum/award/achievement/misc/cigarettes
name = "Unhealthy snacks"
desc = "You were curious to taste it. And then another. You must have more!"
database_id = MEDAL_CIGARETTES
icon_state = "cigarettes"
@@ -25,11 +25,6 @@
icon_state = "sixpack"
layers = EXTERNAL_ADJACENT
///A creampie drawn on the head
/datum/bodypart_overlay/simple/creampie
icon_state = "creampie_human"
layers = EXTERNAL_FRONT
///bags drawn beneath the eyes
/datum/bodypart_overlay/simple/bags
icon_state = "bags"
@@ -1,37 +1,37 @@
GLOBAL_LIST_INIT(creamable, typecacheof(list(
/mob/living/carbon/human,
/mob/living/basic/pet/dog/corgi,
/mob/living/silicon/ai)))
/**
* Creamed component
* Face decal component
*
* For when you have pie on your face
* For when you have some dirt on your face
*/
/datum/component/creamed
dupe_mode = COMPONENT_DUPE_UNIQUE_PASSARGS
/// Creampie overlay we use for non-carbon mobs
/datum/component/face_decal
dupe_mode = COMPONENT_DUPE_HIGHLANDER
/// Overlay we use for non-carbon mobs
var/mutable_appearance/normal_overlay
/// Creampie bodypart overlay we use for carbon mobs
var/datum/bodypart_overlay/simple/creampie/bodypart_overlay
/// Cached head for carbons, to ensure proper removal of the creampie overlay
/// Bodypart overlay we use for carbon mobs
var/datum/bodypart_overlay/simple/bodypart_overlay
/// Cached head for carbons, to ensure proper removal of our overlay
var/obj/item/bodypart/my_head
/// Base icon state we use for the effect
var/icon_state
/// Layers for the bodypart_overlay to draw on
var/layers
/// Color that the overlay is modified by
var/color
/datum/component/creamed/Initialize()
if(!is_type_in_typecache(parent, GLOB.creamable))
return COMPONENT_INCOMPATIBLE
/datum/component/face_decal/Initialize(icon_state, layers, color)
src.icon_state = icon_state
src.layers = layers
src.color = color
SEND_SIGNAL(parent, COMSIG_MOB_CREAMED, src)
add_memory_in_range(parent, 7, /datum/memory/witnessed_creampie, protagonist = parent)
/datum/component/creamed/Destroy(force)
/datum/component/face_decal/Destroy(force)
. = ..()
normal_overlay = null
my_head = null
QDEL_NULL(bodypart_overlay)
/datum/component/creamed/RegisterWithParent()
/datum/component/face_decal/RegisterWithParent()
if(iscarbon(parent))
var/mob/living/carbon/human/carbon_parent = parent
my_head = carbon_parent.get_bodypart(BODY_ZONE_HEAD)
@@ -39,32 +39,38 @@ GLOBAL_LIST_INIT(creamable, typecacheof(list(
qdel(src)
return
bodypart_overlay = new()
bodypart_overlay.layers = layers
if(carbon_parent.bodyshape & BODYSHAPE_SNOUTED) //stupid, but external organ bodytypes are not stored on the limb
bodypart_overlay.icon_state = "creampie_lizard"
bodypart_overlay.icon_state = "[icon_state]_lizard"
else if(my_head.bodyshape & BODYSHAPE_MONKEY)
bodypart_overlay.icon_state = "creampie_monkey"
bodypart_overlay.icon_state = "[icon_state]_monkey"
else
bodypart_overlay.icon_state = "creampie_human"
bodypart_overlay.icon_state = "[icon_state]_human"
if (!isnull(color))
bodypart_overlay.draw_color = color
my_head.add_bodypart_overlay(bodypart_overlay)
RegisterSignals(my_head, list(COMSIG_BODYPART_REMOVED, COMSIG_QDELETING), PROC_REF(lost_head))
carbon_parent.add_mood_event("creampie", /datum/mood_event/creampie)
carbon_parent.update_body_parts()
else if(iscorgi(parent))
normal_overlay = mutable_appearance('icons/mob/effects/creampie.dmi', "creampie_corgi")
else if(isAI(parent))
normal_overlay = mutable_appearance('icons/mob/effects/creampie.dmi', "creampie_ai")
else
normal_overlay = get_normal_overlay()
RegisterSignals(parent, list(
COMSIG_COMPONENT_CLEAN_ACT,
COMSIG_COMPONENT_CLEAN_FACE_ACT),
PROC_REF(clean_up)
)
if(normal_overlay)
if (!isnull(normal_overlay))
if (!isnull(color))
normal_overlay.color = color
var/atom/atom_parent = parent
RegisterSignal(atom_parent, COMSIG_ATOM_UPDATE_OVERLAYS, PROC_REF(update_overlays))
atom_parent.update_appearance()
/datum/component/creamed/UnregisterFromParent()
/datum/component/face_decal/proc/get_normal_overlay()
return
/datum/component/face_decal/UnregisterFromParent()
UnregisterSignal(parent, list(
COMSIG_COMPONENT_CLEAN_ACT,
COMSIG_COMPONENT_CLEAN_FACE_ACT))
@@ -78,7 +84,6 @@ GLOBAL_LIST_INIT(creamable, typecacheof(list(
my_head = null
if(iscarbon(parent))
var/mob/living/carbon/carbon_parent = parent
carbon_parent.clear_mood_event("creampie")
carbon_parent.update_body_parts()
if(normal_overlay)
var/atom/atom_parent = parent
@@ -86,8 +91,8 @@ GLOBAL_LIST_INIT(creamable, typecacheof(list(
atom_parent.update_appearance()
normal_overlay = null
///Callback to remove pieface
/datum/component/creamed/proc/clean_up(datum/source, clean_types)
///Callback to remove our decal
/datum/component/face_decal/proc/clean_up(datum/source, clean_types)
SIGNAL_HANDLER
if(!(clean_types & CLEAN_TYPE_BLOOD))
@@ -97,14 +102,47 @@ GLOBAL_LIST_INIT(creamable, typecacheof(list(
return COMPONENT_CLEANED
/// Ensures normal_overlay overlay in case the mob is not a carbon
/datum/component/creamed/proc/update_overlays(atom/parent_atom, list/overlays)
/datum/component/face_decal/proc/update_overlays(atom/parent_atom, list/overlays)
SIGNAL_HANDLER
if(normal_overlay)
overlays += normal_overlay
/// Removes creampie when the head gets dismembered
/datum/component/creamed/proc/lost_head(obj/item/bodypart/source, mob/living/carbon/owner, dismembered)
/// Removes the decal when the head gets dismembered
/datum/component/face_decal/proc/lost_head(obj/item/bodypart/source, mob/living/carbon/owner, dismembered)
SIGNAL_HANDLER
qdel(src)
/// Creampie subtype, handling signals and mood logic
GLOBAL_LIST_INIT(creamable, typecacheof(list(
/mob/living/carbon/human,
/mob/living/basic/pet/dog/corgi,
/mob/living/silicon/ai)))
/datum/component/face_decal/creampie/Initialize()
. = ..()
if(!is_type_in_typecache(parent, GLOB.creamable))
return COMPONENT_INCOMPATIBLE
SEND_SIGNAL(parent, COMSIG_MOB_CREAMED, src)
add_memory_in_range(parent, 7, /datum/memory/witnessed_creampie, protagonist = parent)
/datum/component/face_decal/creampie/get_normal_overlay()
if(iscorgi(parent))
return mutable_appearance('icons/mob/effects/creampie.dmi', "[icon_state]_corgi")
if(isAI(parent))
return mutable_appearance('icons/mob/effects/creampie.dmi', "[icon_state]_ai")
/datum/component/face_decal/creampie/RegisterWithParent()
. = ..()
if(iscarbon(parent))
var/mob/living/carbon/human/carbon_parent = parent
carbon_parent.add_mood_event("creampie", /datum/mood_event/creampie)
/datum/component/face_decal/creampie/UnregisterFromParent()
. = ..()
if(iscarbon(parent))
var/mob/living/carbon/carbon_parent = parent
carbon_parent.clear_mood_event("creampie")
+7 -2
View File
@@ -40,6 +40,8 @@ Behavior that's still missing from this component that original food items had t
var/volume = 50
///The flavortext for taste (haha get it flavor text)
var/list/tastes
///Whether to tell the examiner that this is edible or not.
var/show_examine = TRUE
/datum/component/edible/Initialize(
list/initial_reagents,
@@ -55,6 +57,7 @@ Behavior that's still missing from this component that original food items had t
datum/callback/on_consume,
datum/callback/check_liked,
reagent_purity = 0.5,
show_examine = TRUE,
)
if(!isatom(parent))
return COMPONENT_INCOMPATIBLE
@@ -70,12 +73,13 @@ Behavior that's still missing from this component that original food items had t
src.on_consume = on_consume
src.tastes = string_assoc_list(tastes)
src.check_liked = check_liked
src.show_examine = show_examine
setup_initial_reagents(initial_reagents, reagent_purity)
/datum/component/edible/RegisterWithParent()
RegisterSignal(parent, COMSIG_ATOM_EXAMINE, PROC_REF(examine))
RegisterSignals(parent, COMSIG_ATOM_ATTACK_ANIMAL, PROC_REF(UseByAnimal))
RegisterSignal(parent, COMSIG_ATOM_ATTACK_ANIMAL, PROC_REF(UseByAnimal))
RegisterSignal(parent, COMSIG_ATOM_CHECKPARTS, PROC_REF(OnCraft))
RegisterSignal(parent, COMSIG_ATOM_CREATEDBY_PROCESSING, PROC_REF(OnProcessed))
RegisterSignal(parent, COMSIG_FOOD_INGREDIENT_ADDED, PROC_REF(edible_ingredient_added))
@@ -212,7 +216,8 @@ Behavior that's still missing from this component that original food items had t
SIGNAL_HANDLER
var/atom/owner = parent
if(!show_examine)
return
if(foodtypes)
var/list/types = bitfield_to_list(foodtypes, FOOD_FLAGS)
examine_list += span_notice("It is [LOWER_TEXT(english_list(types))].")
+1 -1
View File
@@ -105,7 +105,7 @@
//SKYRAT EDIT CHANGE BEGIN
//playsound(source = user,soundin = tmp_sound,vol = 50, vary = vary, ignore_walls = sound_wall_ignore) - SKYRAT EDIT - ORIGINAL
if(istype(src, /datum/emote/living/lewd))
play_lewd_sound(user, tmp_sound, sound_volume, vary, pref_to_check = /datum/preference/toggle/erp/sounds)
conditional_pref_sound(user, tmp_sound, sound_volume, vary, pref_to_check = /datum/preference/toggle/erp/sounds)
else
playsound(source = user, soundin = tmp_sound, vol = sound_volume, vary = vary, ignore_walls = sound_wall_ignore)
//SKYRAT EDIT CHANGE END
+29 -1
View File
@@ -132,9 +132,10 @@ CIGARETTE PACKETS ARE IN FANCY.DM
//////////////////
//FINE SMOKABLES//
//////////////////
/obj/item/cigarette
name = "cigarette"
desc = "A roll of tobacco and nicotine."
desc = "A roll of tobacco and nicotine. It is not food."
icon = 'icons/obj/cigarettes.dmi'
icon_state = "cigoff"
inhand_icon_state = "cigon" //gets overriden during intialize(), just have it for unit test sanity.
@@ -183,6 +184,8 @@ CIGARETTE PACKETS ARE IN FANCY.DM
VAR_PRIVATE/obj/effect/abstract/particle_holder/mob_smoke
/// How long the current mob has been smoking this cigarette
VAR_FINAL/how_long_have_we_been_smokin = 0 SECONDS
/// Which people ate cigarettes and how many
var/static/list/cigarette_eaters = list()
var/pollution_type = /datum/pollutant/smoke //SKYRAT EDIT ADDITION /// What type of pollution does this produce on smoking, changed to weed pollution sometimes
@@ -199,12 +202,37 @@ CIGARETTE PACKETS ARE IN FANCY.DM
icon_state = icon_off
inhand_icon_state = inhand_icon_off
// "It is called a cigarette"
AddComponent(/datum/component/edible,\
initial_reagents = list_reagents,\
food_flags = null,\
foodtypes = JUNKFOOD,\
volume = 50,\
eat_time = 0 SECONDS,\
tastes = list("a never before experienced flavour.", "finally sitting down after standing your entire life"),\
eatverbs = list("taste"),\
bite_consumption = 50,\
junkiness = 0,\
reagent_purity = null,\
on_consume = CALLBACK(src, PROC_REF(on_consume)),\
show_examine = FALSE, \
)
/obj/item/cigarette/Destroy()
STOP_PROCESSING(SSobj, src)
QDEL_NULL(mob_smoke)
QDEL_NULL(cig_smoke)
return ..()
/obj/item/cigarette/proc/on_consume(mob/living/eater, mob/living/feeder)
if(isnull(eater.client))
return
var/ckey = eater.client.ckey
// We must have more!
cigarette_eaters[ckey]++
if(cigarette_eaters[ckey] >= 500)
eater.client.give_award(/datum/award/achievement/misc/cigarettes)
/obj/item/cigarette/equipped(mob/equipee, slot)
. = ..()
if(!(slot & ITEM_SLOT_MASK))
+2 -3
View File
@@ -827,7 +827,6 @@
return (isfloorturf(surface) || iswallturf(surface))
/obj/item/toy/crayon/spraycan/suicide_act(mob/living/user)
var/mob/living/carbon/human/H = user
var/used = min(charges_left, 10)
if(is_capped || !actually_paints || !use_charges(user, 10, FALSE))
user.visible_message(span_suicide("[user] shakes up [src] with a rattle and lifts it to [user.p_their()] mouth, but nothing happens!"))
@@ -842,7 +841,7 @@
set_painting_tool_color(COLOR_SILVER)
update_appearance()
if(actually_paints)
H.update_lips("spray_face", paint_color)
user.AddComponent(/datum/component/face_decal, "spray", EXTERNAL_ADJACENT, paint_color)
reagents.trans_to(user, used, volume_multiplier, transferred_by = user, methods = VAPOR)
return OXYLOSS
@@ -897,7 +896,7 @@
flash_color(carbon_target, flash_color=paint_color, flash_time=40)
if(ishuman(carbon_target) && actually_paints)
var/mob/living/carbon/human/human_target = carbon_target
human_target.update_lips("spray_face", paint_color)
human_target.AddComponent(/datum/component/face_decal, "spray", EXTERNAL_ADJACENT, paint_color)
use_charges(user, 10, FALSE)
var/fraction = min(1, . / reagents.maximum_volume)
reagents.expose(carbon_target, VAPOR, fraction * volume_multiplier)
+1 -1
View File
@@ -98,7 +98,7 @@
living_target_getting_hit.visible_message(span_warning("[living_target_getting_hit] is creamed by [src]!"), span_userdanger("You've been creamed by [src]!"))
playsound(living_target_getting_hit, SFX_DESECRATION, 50, TRUE)
if(is_creamable && is_type_in_typecache(hit_atom, GLOB.creamable))
hit_atom.AddComponent(/datum/component/creamed, src)
hit_atom.AddComponent(/datum/component/face_decal/creampie, "creampie", EXTERNAL_FRONT)
qdel(src)
/obj/item/food/pie/cream/nostun
@@ -20,6 +20,9 @@
wound_bonus = 20
demolition_mod = 1.25
grind_results = list(/datum/reagent/lead = 20)
pickup_sound = 'sound/items/lead_pipe_pickup.ogg'
drop_sound = 'sound/items/lead_pipe_drop.ogg'
hitsound = 'sound/items/lead_pipe_hit.ogg'
//A good battery early in the shift. Source of lead & sulfuric acid reagents.
//Add lead material to this once implemented.
@@ -348,6 +348,8 @@ GLOBAL_LIST_INIT(sinew_recipes, list ( \
icon_state = "sheet-hairlesshide"
inhand_icon_state = null
merge_type = /obj/item/stack/sheet/hairlesshide
pickup_sound = 'sound/items/skin_pick_up.ogg'
drop_sound = 'sound/items/skin_drop.ogg'
/obj/item/stack/sheet/hairlesshide/examine(mob/user)
. = ..()
@@ -361,6 +363,8 @@ GLOBAL_LIST_INIT(sinew_recipes, list ( \
icon_state = "sheet-wetleather"
inhand_icon_state = null
merge_type = /obj/item/stack/sheet/wethide
pickup_sound = 'sound/items/skin_pick_up.ogg'
drop_sound = 'sound/items/skin_drop.ogg'
/// Reduced when exposed to high temperatures
var/wetness = 30
/// Kelvin to start drying
+1 -1
View File
@@ -143,7 +143,7 @@
user.visible_message(span_suicide("[user] shakes up [src] with a rattle and lifts it to [user.p_their()] mouth, spraying paint across [user.p_their()] teeth!"))
user.say("WITNESS ME!!", forced="spraycan suicide")
playsound(src, 'sound/effects/spray.ogg', 5, TRUE, 5)
suicider.update_lips("spray_face", paint_color)
suicider.AddComponent(/datum/component/face_decal, "spray", EXTERNAL_ADJACENT, paint_color)
return OXYLOSS
/obj/effect/decal/cleanable/traitor_rune
@@ -108,13 +108,11 @@
/obj/structure/closet/secure_closet/security/PopulateContents()
..()
new /obj/item/clothing/suit/armor/vest/alt/sec(src)
new /obj/item/storage/toolbox/guncase/skyrat/rom_flech(src) //SKYRAT EDIT ADDITION
new /obj/item/clothing/head/helmet/sec(src)
new /obj/item/radio/headset/headset_sec(src)
new /obj/item/radio/headset/headset_sec/alt(src)
new /obj/item/clothing/glasses/hud/security/sunglasses(src)
new /obj/item/flashlight/seclite(src)
new /obj/item/choice_beacon/security_pistol(src) //SKYRAT EDIT ADDITION
new /obj/item/clothing/gloves/tackler/security(src) // SKYRAT EDIT CHANGE - Gives Them The Blue Ones - ORIGINAL: new /obj/item/clothing/gloves/tackler(src)
/obj/structure/closet/secure_closet/security/sec
+4 -1
View File
@@ -782,7 +782,10 @@
/turf/closed/mineral/gibtonite/attackby(obj/item/attacking_item, mob/living/user, params)
var/previous_stage = stage
if(istype(attacking_item, /obj/item/mining_scanner) || istype(attacking_item, /obj/item/t_scanner/adv_mining_scanner) && stage == GIBTONITE_ACTIVE)
if(istype(attacking_item, /obj/item/goliath_infuser_hammer) && stage == GIBTONITE_ACTIVE)
user.visible_message(span_notice("[user] digs [attacking_item] to [src]..."), span_notice("Your tendril hammer instictively digs and wraps around [src] to stop it..."))
defuse(user)
else if(istype(attacking_item, /obj/item/mining_scanner) || istype(attacking_item, /obj/item/t_scanner/adv_mining_scanner) && stage == GIBTONITE_ACTIVE)
user.visible_message(span_notice("[user] holds [attacking_item] to [src]..."), span_notice("You use [attacking_item] to locate where to cut off the chain reaction and attempt to stop it..."))
defuse(user)
..()
@@ -86,7 +86,7 @@
/datum/heretic_knowledge/summon/rusty
name = "Rusted Ritual"
desc = "Allows you to transmute a pool of vomit, some cable coil, and 5 sheets of titanium into a Rust Walker. \
desc = "Allows you to transmute a pool of vomit, some cable coil, and 10 sheets of iron into a Rust Walker. \
Rust Walkers excel at spreading rust and are moderately strong in combat."
gain_text = "I combined my knowledge of creation with my desire for corruption. The Marshal knew my name, and the Rusted Hills echoed out."
next_knowledge = list(
@@ -95,7 +95,7 @@
)
required_atoms = list(
/obj/effect/decal/cleanable/vomit = 1,
/obj/item/stack/sheet/mineral/titanium = 5,
/obj/item/stack/sheet/iron = 10,
/obj/item/stack/cable_coil = 15,
)
mob_to_summon = /mob/living/basic/heretic_summon/rust_walker
+4
View File
@@ -101,6 +101,7 @@
name = "tactical combat helmet"
desc = "A tactical black helmet, sealed from outside hazards with a plate of glass and not much else."
icon_state = "marine_command"
base_icon_state = "marine_command"
inhand_icon_state = "marine_helmet"
armor_type = /datum/armor/helmet_marine
min_cold_protection_temperature = SPACE_HELM_MIN_TEMP_PROTECT
@@ -126,14 +127,17 @@
/obj/item/clothing/head/helmet/marine/security
name = "marine heavy helmet"
icon_state = "marine_security"
base_icon_state = "marine_security"
/obj/item/clothing/head/helmet/marine/engineer
name = "marine utility helmet"
icon_state = "marine_engineer"
base_icon_state = "marine_engineer"
/obj/item/clothing/head/helmet/marine/medic
name = "marine medic helmet"
icon_state = "marine_medic"
base_icon_state = "marine_medic"
/obj/item/clothing/head/helmet/marine/pmc
icon_state = "marine"
+12 -7
View File
@@ -116,6 +116,7 @@
icon = 'icons/obj/aquarium/supplies.dmi'
w_class = WEIGHT_CLASS_TINY
custom_materials = list(/datum/material/plastic = COIN_MATERIAL_AMOUNT)
var/layer_mode = AQUARIUM_LAYER_MODE_BOTTOM
var/beauty = 150
@@ -124,26 +125,30 @@
AddComponent(/datum/component/aquarium_content, icon, beauty = beauty)
/obj/item/aquarium_prop/rocks
name = "rocks"
name = "decorative rocks"
desc = "A bunch of tiny plastic rocks for decorating an aquarium. Surely you could have just used real pebbles?"
icon_state = "rocks"
/obj/item/aquarium_prop/seaweed_top
name = "dense seaweeds"
icon_state = "seaweeds_front"
layer_mode = AQUARIUM_LAYER_MODE_TOP
/obj/item/aquarium_prop/seaweed
name = "seaweeds"
name = "fake seaweed"
desc = "Little plastic sheets with weighted bottoms, designed to look like underwater foliage. They can be used to spruce up an aquarium."
icon_state = "seaweeds_back"
layer_mode = AQUARIUM_LAYER_MODE_BOTTOM
/obj/item/aquarium_prop/seaweed/top
desc = "A bunch of artificial plants for an aquarium."
icon_state = "seaweeds_front"
layer_mode = AQUARIUM_LAYER_MODE_TOP
/obj/item/aquarium_prop/sand
name = "aquarium sand"
desc = "A plastic board for lining the bottom of an aquarium. It's got a bumpy patterned surface vaguely reminiscent of yellow sand."
icon_state = "sand"
layer_mode = AQUARIUM_LAYER_MODE_BEHIND_GLASS
/obj/item/aquarium_prop/treasure
name = "tiny treasure chest"
desc = "A very small plastic treaure chest, with nothing inside. You could put this in an aquarium, and it'll look like very small pirates hid treasure in there. Wouldn't that be nice?"
icon_state = "treasure"
layer_mode = AQUARIUM_LAYER_MODE_BOTTOM
@@ -223,6 +223,7 @@ GLOBAL_LIST_EMPTY(security_officer_distribution)
suit_store = /obj/item/gun/energy/disabler
backpack_contents = list(
/obj/item/evidencebag = 1,
/obj/item/choice_beacon/security_pistol = 1, //SKYRAT ADDITION
/obj/item/flashlight/seclite = 1, // BUBBER EDIT ADDITION
)
belt = /obj/item/modular_computer/pda/security
@@ -8,12 +8,18 @@ GLOBAL_VAR_INIT(hhMysteryRoomNumber, rand(1, 999999))
icon_state = "hilbertshotel"
w_class = WEIGHT_CLASS_SMALL
resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF
//SKYRAT EDIT ADDITION - GHOST HOTEL UPDATE
var/list/static/hotel_maps = list("Generic", "Apartment")
//SKYRAT EDIT ADDITION - GHOST HOTEL UPDATE + EXTRA STUFF
var/list/static/hotel_maps = list("Generic", "Apartment", "Beach Condo", "Station Side", "Library")
//standart - hilber's hotel room
//apartment - see /datum/map_template/ghost_cafe_rooms
var/datum/map_template/ghost_cafe_rooms/ghost_cafe_rooms_apartment
//SKYRAT EDIT END
//beach condo - Beach themed apartment
//stationside - a station-themed hotel room
var/datum/map_template/ghost_cafe_rooms/apartment/ghost_cafe_rooms_apartment
var/datum/map_template/ghost_cafe_rooms/beach_condo/ghost_cafe_rooms_beach_condo
var/datum/map_template/ghost_cafe_rooms/stationside/ghost_cafe_rooms_stationside
var/datum/map_template/ghost_cafe_rooms/library/ghost_cafe_rooms_library
//Skyrat EDIT END
var/datum/map_template/hilbertshotel/hotelRoomTemp
var/datum/map_template/hilbertshotel/empty/hotelRoomTempEmpty
var/datum/map_template/hilbertshotel/lore/hotelRoomTempLore
@@ -34,7 +40,11 @@ GLOBAL_VAR_INIT(hhMysteryRoomNumber, rand(1, 999999))
hotelRoomTempLore = new()
//SKYRAT EDIT ADDITION - GHOST HOTEL UPDATE
ghost_cafe_rooms_apartment = new()
ghost_cafe_rooms_beach_condo = new()
ghost_cafe_rooms_stationside = new()
ghost_cafe_rooms_library = new()
//SKYRAT EDIT END
var/area/currentArea = get_area(src)
if(currentArea.type == /area/ruin/space/has_grav/powered/hilbertresearchfacility/secretroom)
ruinSpawned = TRUE
@@ -176,9 +186,22 @@ GLOBAL_VAR_INIT(hhMysteryRoomNumber, rand(1, 999999))
if(ruinSpawned && roomNumber == GLOB.hhMysteryRoomNumber)
load_from = hotelRoomTempLore
//SKYRAT EDIT ADDITION START - GHOST HOTEL UPDATE
//else if(chosen_room == "Apartment")
// load_from = ghost_cafe_rooms_apartment
//SKYRAT EDIT ADDITION END
//BUBBER EDIT ADDITION START - GHOST HOTEL UPDATE
else if(chosen_room == "Apartment")
load_from = ghost_cafe_rooms_apartment
//SKYRAT EDIT ADDITION END
else if(chosen_room == "Beach Condo")
load_from = ghost_cafe_rooms_beach_condo
else if(chosen_room == "Station Side")
load_from = ghost_cafe_rooms_stationside
else if(chosen_room == "Library")
load_from = ghost_cafe_rooms_library
//BUBBER EDIT ADDITION END
load_from.load(bottom_left)
activeRooms["[roomNumber]"] = roomReservation
@@ -377,7 +400,7 @@ GLOBAL_VAR_INIT(hhMysteryRoomNumber, rand(1, 999999))
to_chat(user, span_warning("Drats! Your vision is too poor to use this!"))
return CLICK_ACTION_BLOCKING
to_chat(user, span_notice("You peak through the door's bluespace peephole..."))
to_chat(user, span_notice("You peek through the door's bluespace peephole..."))
user.reset_perspective(parentSphere)
var/datum/action/peephole_cancel/PHC = new
user.overlay_fullscreen("remote_view", /atom/movable/screen/fullscreen/impaired, 1)
@@ -46,7 +46,7 @@
ai_movement = /datum/ai_movement/jps
idle_behavior = /datum/idle_behavior/idle_random_walk
planning_subtrees = list(
/datum/ai_planning_subtree/find_and_hunt_target/corpses,
/datum/ai_planning_subtree/find_and_hunt_target/corpses/human,
/datum/ai_planning_subtree/travel_to_point/and_clear_target,
/datum/ai_planning_subtree/simple_find_target,
/datum/ai_planning_subtree/attack_obstacle_in_path,
@@ -30,14 +30,14 @@
/datum/ai_behavior/find_hunt_target/find_slime_food/valid_dinner(mob/living/basic/slime/hunter, mob/living/dinner, radius, datum/ai_controller/controller, seconds_per_tick)
if(REF(dinner) in hunter.faction) //Don't eat our friends...
return
return FALSE
var/static/list/slime_faction = list(FACTION_SLIME)
if(faction_check(slime_faction, dinner.faction)) //Don't try to eat slimy things, no matter how hungry we are. Anyone else can be betrayed.
return
return FALSE
if(!hunter.can_feed_on(dinner, check_adjacent = FALSE)) //Are they tasty to slimes?
return
return FALSE
//If we are retaliating on someone edible, lets eat them instead
if(dinner == controller.blackboard[BB_BASIC_MOB_CURRENT_TARGET])
@@ -73,6 +73,7 @@
/datum/ai_behavior/hunt_target/unarmed_attack_target/slime/finish_action(datum/ai_controller/controller, succeeded, hunting_target_key, hunting_cooldown_key)
. = ..()
var/mob/living/living_pawn = controller.pawn
if(living_pawn.buckled)
var/mob/living/basic/slime/slime_pawn = controller.pawn
var/atom/target = controller.blackboard[hunting_target_key]
if(!slime_pawn.can_feed_on(target))
controller.clear_blackboard_key(hunting_target_key)
@@ -31,11 +31,11 @@
/datum/ai_planning_subtree/find_and_hunt_target/find_slime_food/SelectBehaviors(datum/ai_controller/controller, seconds_per_tick)
var/mob/living/living_pawn = controller.pawn
if(living_pawn.buckled)
return FALSE
return
//Slimes don't want to hunt if they are neither rabid, hungry or feeling attack right now
if( (controller.blackboard[BB_SLIME_HUNGER_LEVEL] == SLIME_HUNGER_NONE) && !controller.blackboard[BB_SLIME_RABID] && isnull(controller.blackboard[BB_BASIC_MOB_CURRENT_TARGET]))
return FALSE
return
return ..()
+1 -1
View File
@@ -286,7 +286,7 @@
/mob/living/basic/slime/proc/on_slime_pre_attack(mob/living/basic/slime/our_slime, atom/target, proximity, modifiers)
SIGNAL_HANDLER
if(LAZYACCESS(modifiers, RIGHT_CLICK) && isliving(target) && target != src && usr == src)
if(LAZYACCESS(modifiers, RIGHT_CLICK) && isliving(target) && target != src)
if(our_slime.can_feed_on(target))
our_slime.start_feeding(target)
return COMPONENT_HOSTILE_NO_ATTACK
@@ -432,7 +432,7 @@ Difficulty: Hard
/mob/living/simple_animal/hostile/megafauna/hierophant/celebrate_kill(mob/living/L)
visible_message(span_hierophant_warning("\"[pick(kill_phrases)]\""))
visible_message(span_hierophant_warning("[src] obliterates [L]!"),span_userdanger("You absorb [L]'s life force, restoring your health!"))
visible_message(span_hierophant_warning("[src] absorbs [L]'s life force!"),span_userdanger("You absorb [L]'s life force, restoring your health!"))
/mob/living/simple_animal/hostile/megafauna/hierophant/CanAttack(atom/the_target)
. = ..()
@@ -239,8 +239,6 @@
for(var/obj/item/head_item as anything in list(owner.glasses, owner.ears, owner.wear_mask, owner.head))
owner.dropItemToGround(head_item, force = TRUE)
qdel(owner.GetComponent(/datum/component/creamed)) //clean creampie overlay flushed emoji
//Handle dental implants
for(var/datum/action/item_action/activate_pill/pill_action in owner.actions)
pill_action.Remove(owner)
@@ -0,0 +1,4 @@
author: "LT3"
delete-after: True
changes:
- spellcheck: "Sneak a peek of Hilbert's Hotel, not a sneak peak"
@@ -0,0 +1,4 @@
author: "aKromatopzia"
delete-after: True
changes:
- image: "more teshari clothing sprites"
@@ -0,0 +1,4 @@
author: "SkyratBot"
delete-after: True
changes:
- bugfix: "fixes blob spore and slime AI endlessly attacking the dead"
@@ -0,0 +1,5 @@
author: "projectkepler-ru"
delete-after: True
changes:
- bugfix: "Helmet pepperspray not working because of an NRI sabotage on the supplyline, the IDMA Force has now succesfully repelled the attack and has shifted focus toward trying to identify the suspect involved in this attack"
- bugfix: "weird suppresor overlay shenanigan"
+51
View File
@@ -749,3 +749,54 @@
- bugfix: bein able to buy the MCR, please stop
- rscdel: obliterated powerstation from the blueshift. it should no longer be present
now
2024-08-24:
projectkepler-ru:
- bugfix: erronously the c10 speedloader was normal sized
- rscadd: you can now buy sidearm crate again
- code_imp: Frangible slug is re-coded to work abit differently
2024-08-25:
EspeciallyStrange:
- bugfix: m45a5 guncase not spawning with an ammo pouch, I neglected this
- bugfix: the various guncase not being the pistol sized one
- rscadd: renoster shotgun purchasable
- balance: flechette ammo slightly easier to re-print
Kepteyn:
- rscadd: adds three new dorm rooms to hilbert's hotel options.
LT3:
- qol: Blacksmith anvil noises can be toggled with ambience sound preference
SkyratBot:
- spellcheck: Hierophant no longer lies about obliterating someone
- qol: goliath arm can defuse gibonite by bumping or direct click
- bugfix: Marine helmets no longer change their sprite to security helmets when
their flashlight is toggled
- balance: Rusted Ritual now requries 10 sheets of Iron instead of Titanium.
- bugfix: Aquarium decorations now contain plastic.
- spellcheck: Added item descriptions for aquarium decorations.
plsleavemealon:
- qol: Lets ethereals have custom food preferences
projectkepler-ru:
- bugfix: frangible slug literally doing nothing to window and grille
- bugfix: frangible slug should now no longer 1 shot borg or mech
- balance: combat shotgun recoil removed, instead, they just get a delay
- balance: bolt action delay on the ceremonial rifle reduced from 2 second to 6
ticks instead
2024-08-26:
LT3:
- bugfix: Flannel shirts actually cover your body when buttoned up
SkyratBot:
- rscadd: Achievement for eating 500 cigarettes
- balance: Cigarettes are now edible
- code_imp: Adds a variable to hide the food examine on the edible element
- bugfix: wet hides and hairless hides no longer make metal clanging noises when
picked up/dropped
- bugfix: SSPolling no longer fills in the candidate list with empty entries to
guarantee it returns a list size of amount_to_pick
grungussuss:
- sound: lead pipe has sound
projectkepler-ru:
- balance: the effect of frangible slug on non-airlock is now halved
- balance: NTC lose their gunbeacon, instead, they get a unique pistol intended
for incapacitating target and for self defense.
- balance: m45a5 has less painful wait period
- bugfix: gun not being in pistol case when they should be
- rscadd: 10mm AP, HP speedloader to the tech
Binary file not shown.

Before

Width:  |  Height:  |  Size: 104 KiB

After

Width:  |  Height:  |  Size: 103 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.0 KiB

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 248 KiB

After

Width:  |  Height:  |  Size: 251 KiB

@@ -1,2 +1,2 @@
/datum/species/ethereal/allows_food_preferences()
return FALSE
return TRUE
Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 53 KiB

After

Width:  |  Height:  |  Size: 55 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 280 KiB

After

Width:  |  Height:  |  Size: 280 KiB

@@ -528,7 +528,7 @@
/datum/greyscale_config/scarf/worn/teshari
name = "Scarf (Worn, Teshari)"
icon_file = 'modular_skyrat/modules/GAGS/icons/neck/neck_teshari.dmi'
/*
* SUITS
@@ -1407,15 +1407,15 @@ digi
/datum/greyscale_config/teshari/thickrobe
name = "Teshari Thick Robe"
json_config = 'modular_skyrat/modules/GAGS/json_configs/teshari_fallbacks/thickrobe.json'
/datum/greyscale_config/teshari/thickrobe/wiz
name = "Teshari Wizard Robe"
json_config = 'modular_skyrat/modules/GAGS/json_configs/teshari_fallbacks/wizrobe.json'
/datum/greyscale_config/teshari/thickrobe/jacket
name = "Teshari Jacket"
json_config = 'modular_skyrat/modules/GAGS/json_configs/teshari_fallbacks/jacket.json'
/datum/greyscale_config/teshari/thickrobe/longcoat
name = "Teshari Longcoat"
json_config = 'modular_skyrat/modules/GAGS/json_configs/teshari_fallbacks/longcoat.json'
@@ -1436,6 +1436,10 @@ digi
name = "Teshari Cloak"
json_config = 'modular_skyrat/modules/GAGS/json_configs/teshari_fallbacks/cloak.json'
/datum/greyscale_config/teshari/mantle
name = "Teshari Mantle"
json_config = 'modular_skyrat/modules/GAGS/json_configs/teshari_fallbacks/mantle.json'
/datum/greyscale_config/teshari/tie
name = "Teshari Tie"
json_config = 'modular_skyrat/modules/GAGS/json_configs/teshari_fallbacks/tie.json'
Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 12 KiB

@@ -2,7 +2,7 @@
"": [
{
"type": "icon_state",
"icon_state": "thickrobe0i",
"icon_state": "thickrobe0ii",
"blend_mode": "overlay",
"color_ids": [ 1 ]
},
@@ -20,7 +20,7 @@
},
{
"type": "icon_state",
"icon_state": "thickrobe2ii",
"icon_state": "thickrobe-cuffs",
"blend_mode": "overlay",
"color_ids": [ 4 ]
}
@@ -6,6 +6,12 @@
"blend_mode": "overlay",
"color_ids": [ 1 ]
},
{
"type": "icon_state",
"icon_state": "thickrobe-skirtii",
"blend_mode": "overlay",
"color_ids": [ 1 ]
},
{
"type": "icon_state",
"icon_state": "thickrobe1ii",
@@ -20,7 +26,7 @@
},
{
"type": "icon_state",
"icon_state": "thickrobe2ii",
"icon_state": "thickrobe-cuffs",
"blend_mode": "overlay",
"color_ids": [ 4 ]
}
@@ -0,0 +1,16 @@
{
"": [
{
"type": "icon_state",
"icon_state": "mantle0",
"blend_mode": "overlay",
"color_ids": [ 1 ]
},
{
"type": "icon_state",
"icon_state": "mantle1",
"blend_mode": "overlay",
"color_ids": [ 2 ]
}
]
}
@@ -6,6 +6,12 @@
"blend_mode": "overlay",
"color_ids": [ 1 ]
},
{
"type": "icon_state",
"icon_state": "thickrobe-skirti",
"blend_mode": "overlay",
"color_ids": [ 1 ]
},
{
"type": "icon_state",
"icon_state": "thickrobe1i",
@@ -20,7 +26,7 @@
},
{
"type": "icon_state",
"icon_state": "thickrobe2ii",
"icon_state": "thickrobe-cuffs",
"blend_mode": "overlay",
"color_ids": [ 4 ]
}
@@ -8,7 +8,7 @@
},
{
"type": "icon_state",
"icon_state": "thickrobe0iii",
"icon_state": "thickrobe-skirti",
"blend_mode": "overlay",
"color_ids": [ 1 ]
},
@@ -26,7 +26,7 @@
},
{
"type": "icon_state",
"icon_state": "thickrobe2ii",
"icon_state": "thickrobe-cuffs",
"blend_mode": "overlay",
"color_ids": [ 4 ]
},
@@ -76,8 +76,8 @@
righthand_file = 'icons/mob/inhands/weapons/guns_righthand.dmi'
/obj/item/gun/ballistic/shotgun/riot
name = "classic woodstock shotgun"
desc = "A sturdy shotgun with a longer magazine and a fixed tactical stock designed for non-lethal riot control."
name = "woodstock shotgun"
desc = "A sturdy shotgun with a longer magazine and a fixed tactical stock designed for non-lethal riot control. Often found in the hand of a lavaland hunter. Vaguely reminds you of hunting back in Sol does it not?"
fire_delay = 6 //We slighly bump this up because thats a good idea
sawn_desc = "Come with me if you want to live."
@@ -91,16 +91,14 @@
inhand_icon_state = "shotgun_combat"
inhand_x_dimension = 32
inhand_y_dimension = 32
fire_delay = 5
fire_delay = 7
w_class = WEIGHT_CLASS_BULKY
recoil = 2
/obj/item/gun/ballistic/shotgun/automatic/combat/compact
name = "\improper Peacekeeper compact combat shotgun"
desc = "A tactical variant of the peacekeeper combat shotgun used by NT Raiding Parties and Space Marines. It has a gyroscopic stabilizer on it, letting you fire one handed."
fire_delay = 5
weapon_weight = WEAPON_LIGHT
recoil = 1 //so that its not spammed a lot
/obj/item/gun/grenadelauncher
icon = 'modular_skyrat/modules/aesthetics/guns/icons/guns.dmi'
@@ -34,11 +34,13 @@
mail_goodies = list(
/obj/item/storage/fancy/cigarettes/cigars/havana = 10,
/obj/item/stack/spacecash/c500 = 3,
/obj/item/stack/spacecash/c500 = 30,
/obj/item/disk/nuclear/fake/obvious = 2,
/obj/item/clothing/head/collectable/captain = 4,
/obj/item/gun/energy/disabler/smoothbore = 1,
/obj/item/gun/energy/disabler/smoothbore = 5,
/obj/item/restraints/legcuffs/bola/energy = 10,
/obj/item/ammo_box/magazine/caflechette/ripper = 20,
/obj/item/ammo_box/magazine/caflechette = 10,
)
veteran_only = TRUE
@@ -62,6 +64,7 @@
head = /obj/item/clothing/head/beret/blueshield
box = /obj/item/storage/box/survival/security
belt = /obj/item/modular_computer/pda/blueshield
suit_store = /obj/item/gun/energy/e_gun
id_trim = /datum/id_trim/job/blueshield
@@ -44,4 +44,4 @@
new /obj/item/mod/control/pre_equipped/blueshield(src)
new /obj/item/storage/box/glasseskit(src)
new /obj/item/storage/medkit/brute(src)
new /obj/item/storage/toolbox/guncase/skyrat/blueshield_cmg(src)
new /obj/item/storage/toolbox/guncase/skyrat/pistol/blueshield_cmg(src)
@@ -13,6 +13,18 @@
/obj/item/hilbertshotel/ghostdojo/attack_robot(mob/living/user)
attack_hand(user)
/datum/map_template/ghost_cafe_rooms
/datum/map_template/ghost_cafe_rooms/apartment
name = "Apartment"
mappath = "modular_skyrat/modules/hotel_rooms/apartment.dmm"
/datum/map_template/ghost_cafe_rooms/beach_condo
name = "Beach Condo"
mappath = "modular_skyrat/modules/hotel_rooms/beach_condo.dmm"
/datum/map_template/ghost_cafe_rooms/stationside
name = "Station Side"
mappath = "modular_skyrat/modules/hotel_rooms/stationside.dmm"
/datum/map_template/ghost_cafe_rooms/library
name = "Library"
mappath = "modular_skyrat/modules/hotel_rooms/library.dmm"
@@ -218,10 +218,20 @@
icon_state = "helmetalt_blue"
base_icon_state = "helmetalt_blue"
supports_variations_flags = CLOTHING_SNOUTED_VARIATION_NO_NEW_ICON
actions_types = list(/datum/action/item_action/toggle)
supports_variations_flags = CLOTHING_SNOUTED_VARIATION_NO_NEW_ICON
flags_cover = HEADCOVERSEYES | PEPPERPROOF
visor_flags_cover = HEADCOVERSEYES | PEPPERPROOF
var/flipped_visor = FALSE
/obj/item/clothing/head/helmet/alt/click_alt(mob/user)
flipped_visor = !flipped_visor
balloon_alert(user, "visor flipped")
// base_icon_state is modified for seclight attachment component
base_icon_state = "[initial(base_icon_state)][flipped_visor ? "-novisor" : ""]"
icon_state = base_icon_state
if (flipped_visor)
flags_cover &= ~HEADCOVERSEYES | PEPPERPROOF
else
flags_cover |= HEADCOVERSEYES | PEPPERPROOF
update_appearance()
return CLICK_ACTION_SUCCESS
//Standard helmet
/obj/item/clothing/head/helmet/sec
@@ -230,7 +240,6 @@
icon_state = "security_helmet"
base_icon_state = "security_helmet"
clothing_flags = SNUG_FIT | STACKABLE_HELMET_EXEMPT
flags_cover = HEADCOVERSEYES|EARS_COVERED
dog_fashion = null
supports_variations_flags = CLOTHING_SNOUTED_VARIATION_NO_NEW_ICON
@@ -238,7 +247,6 @@
/obj/item/clothing/head/helmet/sec/futuristic
icon_state = "security_helmet_future"
base_icon_state = "security_helmet_future"
flags_cover = HEADCOVERSEYES | PEPPERPROOF
supports_variations_flags = CLOTHING_SNOUTED_VARIATION_NO_NEW_ICON
/obj/item/clothing/head/helmet/sec/futuristic/blue
@@ -0,0 +1,747 @@
//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE
"br" = (
/turf/open/misc/beach/sand,
/area/misc/hilbertshotel)
"bI" = (
/obj/effect/turf_decal/siding/wood{
dir = 10
},
/turf/open/floor/wood/large,
/area/misc/hilbertshotel)
"bO" = (
/obj/structure/chair{
dir = 4
},
/obj/effect/turf_decal/siding/wood{
dir = 9
},
/turf/open/floor/wood/parquet,
/area/misc/hilbertshotel)
"bW" = (
/obj/structure/table/reinforced,
/obj/effect/turf_decal/siding/white{
dir = 1
},
/obj/item/knife/kitchen,
/turf/open/floor/iron/kitchen,
/area/misc/hilbertshotel)
"cj" = (
/obj/effect/light_emitter/interlink,
/obj/item/toy/plush/carpplushie,
/turf/open/water/beach,
/area/misc/hilbertshotel)
"ct" = (
/turf/closed/wall/mineral/wood,
/area/misc/hilbertshotel)
"cC" = (
/obj/structure/dresser,
/obj/effect/turf_decal/siding/wood{
dir = 9
},
/turf/open/floor/wood/large,
/area/misc/hilbertshotel)
"cW" = (
/turf/open/misc/beach/coast{
dir = 4
},
/area/misc/hilbertshotel)
"dI" = (
/obj/effect/light_emitter/interlink,
/turf/open/misc/beach/coast{
dir = 5
},
/area/misc/hilbertshotel)
"dS" = (
/turf/open/floor/wood/large,
/area/misc/hilbertshotel)
"en" = (
/obj/effect/light_emitter/interlink,
/turf/open/water/beach,
/area/misc/hilbertshotel)
"eH" = (
/obj/effect/light_emitter/interlink,
/turf/open/misc/beach/coast{
dir = 1
},
/area/misc/hilbertshotel)
"fy" = (
/obj/effect/turf_decal/siding/wood{
dir = 8
},
/obj/machinery/light/warm/directional/west,
/turf/open/floor/wood/parquet,
/area/misc/hilbertshotel)
"fA" = (
/turf/closed/wall/mineral/sandstone,
/area/misc/hilbertshotel)
"hj" = (
/obj/machinery/door/morgue,
/turf/open/floor/wood,
/area/misc/hilbertshotel)
"hX" = (
/obj/structure/fluff/beach_umbrella,
/obj/effect/light_emitter/interlink,
/turf/open/misc/beach/coast{
dir = 1
},
/area/misc/hilbertshotel)
"ib" = (
/turf/open/misc/beach/coast/corner{
dir = 8
},
/area/misc/hilbertshotel)
"iQ" = (
/obj/effect/light_emitter/interlink,
/turf/open/misc/beach/coast{
dir = 9
},
/area/misc/hilbertshotel)
"jO" = (
/obj/effect/turf_decal/siding{
dir = 4
},
/obj/machinery/door/morgue,
/turf/open/indestructible/bathroom,
/area/misc/hilbertshotel)
"jU" = (
/obj/machinery/door/airlock/wood,
/turf/open/floor/wood,
/area/misc/hilbertshotel)
"kh" = (
/obj/effect/turf_decal/siding/wood{
dir = 4
},
/turf/open/floor/wood/parquet,
/area/misc/hilbertshotel)
"kW" = (
/obj/structure/closet/crate/bin,
/obj/effect/turf_decal/siding/wood{
dir = 10
},
/obj/machinery/light_switch/directional/west,
/turf/open/floor/wood/parquet,
/area/misc/hilbertshotel)
"mH" = (
/obj/machinery/jukebox{
req_access = null
},
/turf/open/misc/beach/sand,
/area/misc/hilbertshotel)
"na" = (
/obj/effect/turf_decal/siding/wood,
/turf/open/floor/carpet/lone,
/area/misc/hilbertshotel)
"nb" = (
/obj/item/kirbyplants/random,
/obj/effect/turf_decal/siding/wood{
dir = 10
},
/turf/open/floor/wood,
/area/misc/hilbertshotel)
"ny" = (
/obj/effect/turf_decal/siding/wood/corner{
dir = 1
},
/turf/open/floor/wood/large,
/area/misc/hilbertshotel)
"oM" = (
/obj/structure/bed/double/pod,
/obj/effect/turf_decal/siding/wood{
dir = 1
},
/obj/effect/spawner/random/bedsheet/double,
/turf/open/floor/wood/large,
/area/misc/hilbertshotel)
"oX" = (
/obj/effect/turf_decal/siding/wood/corner,
/turf/open/floor/wood/parquet,
/area/misc/hilbertshotel)
"ph" = (
/obj/effect/light_emitter/interlink,
/turf/open/misc/beach/sand,
/area/misc/hilbertshotel)
"qh" = (
/obj/effect/turf_decal/siding/wood{
dir = 8
},
/turf/open/floor/wood/parquet,
/area/misc/hilbertshotel)
"ra" = (
/turf/closed/indestructible/rock,
/area/misc/hilbertshotel)
"rm" = (
/turf/open/floor/iron/stairs/old{
dir = 1
},
/area/misc/hilbertshotel)
"rV" = (
/obj/structure/closet/cabinet,
/obj/effect/turf_decal/siding/wood/end{
dir = 8
},
/turf/open/floor/wood/large,
/area/misc/hilbertshotel)
"tR" = (
/obj/machinery/shower/directional/east,
/obj/structure/drain/big,
/obj/item/soap/deluxe,
/obj/structure/curtain,
/turf/open/indestructible/bathroom,
/area/misc/hilbertshotel)
"wa" = (
/obj/structure/chair{
dir = 4
},
/obj/effect/turf_decal/siding/wood{
dir = 8
},
/turf/open/floor/wood/parquet,
/area/misc/hilbertshotel)
"wo" = (
/obj/structure/closet/secure_closet/freezer/kitchen/all_access,
/obj/effect/spawner/random/food_or_drink/three_course_meal,
/obj/effect/spawner/random/food_or_drink/three_course_meal,
/obj/effect/spawner/random/food_or_drink/three_course_meal,
/obj/effect/spawner/random/food_or_drink/three_course_meal,
/obj/effect/turf_decal/siding/wood{
dir = 6
},
/turf/open/floor/wood/parquet,
/area/misc/hilbertshotel)
"wL" = (
/obj/item/kirbyplants/random,
/obj/effect/turf_decal/siding/wood{
dir = 6
},
/turf/open/floor/wood,
/area/misc/hilbertshotel)
"yc" = (
/obj/effect/turf_decal/siding/wood{
dir = 9
},
/obj/structure/sign/painting/large/library{
dir = 1
},
/turf/open/floor/wood,
/area/misc/hilbertshotel)
"yH" = (
/turf/closed/indestructible/hoteldoor{
icon_state = "door_closed";
icon = 'icons/obj/doors/puzzledoor/default.dmi'
},
/area/misc/hilbertshotel)
"Bo" = (
/obj/structure/table/reinforced,
/obj/machinery/microwave{
pixel_x = -2;
pixel_y = 6
},
/turf/open/floor/iron/kitchen,
/area/misc/hilbertshotel)
"Bs" = (
/obj/effect/turf_decal/siding/wood,
/turf/open/floor/wood,
/area/misc/hilbertshotel)
"CM" = (
/obj/effect/turf_decal/siding/wood{
dir = 9
},
/obj/structure/bed/dogbed,
/obj/item/toy/plush/shark,
/turf/open/floor/wood/large,
/area/misc/hilbertshotel)
"Dg" = (
/obj/structure/toilet{
dir = 4
},
/obj/structure/window/spawner/directional/north,
/turf/open/indestructible/bathroom,
/area/misc/hilbertshotel)
"EI" = (
/obj/effect/turf_decal/siding/wood{
dir = 1
},
/obj/machinery/light/warm/directional/north,
/turf/open/floor/wood,
/area/misc/hilbertshotel)
"FJ" = (
/obj/effect/turf_decal/siding/wood{
dir = 5
},
/obj/item/kirbyplants/random,
/turf/open/floor/wood/parquet,
/area/misc/hilbertshotel)
"FN" = (
/obj/machinery/door/airlock/sandstone{
name = "Beach Cabin"
},
/obj/effect/turf_decal/sand,
/turf/open/floor/wood,
/area/misc/hilbertshotel)
"Gj" = (
/obj/item/toy/beach_ball,
/obj/effect/light_emitter/interlink,
/turf/open/water/beach,
/area/misc/hilbertshotel)
"Gm" = (
/obj/structure/chair/sofa/middle{
dir = 1
},
/obj/effect/turf_decal/sand,
/turf/open/misc/beach/sand,
/area/misc/hilbertshotel)
"GB" = (
/obj/structure/chair{
dir = 8
},
/obj/effect/turf_decal/siding/wood/corner{
dir = 4
},
/turf/open/floor/wood/parquet,
/area/misc/hilbertshotel)
"GD" = (
/obj/effect/turf_decal/siding/white{
dir = 9
},
/obj/machinery/light/floor{
alpha = 0;
invisibility = 100;
light_range = 10;
nightshift_light_power = 10
},
/turf/open/floor/iron/kitchen,
/area/misc/hilbertshotel)
"HH" = (
/turf/open/floor/carpet/cyan,
/area/misc/hilbertshotel)
"HK" = (
/obj/structure/table/wood,
/obj/item/reagent_containers/cup/rag,
/turf/open/floor/wood/parquet,
/area/misc/hilbertshotel)
"Ib" = (
/turf/open/misc/beach/coast{
dir = 1
},
/area/misc/hilbertshotel)
"Ig" = (
/obj/effect/turf_decal/siding/wood,
/turf/open/floor/wood/large,
/area/misc/hilbertshotel)
"IM" = (
/obj/effect/turf_decal/siding/wood{
dir = 5
},
/obj/item/flashlight/lamp/green{
pixel_x = 5;
pixel_y = 14
},
/obj/structure/table/wood,
/turf/open/floor/wood/large,
/area/misc/hilbertshotel)
"Jm" = (
/obj/structure/table/wood,
/obj/effect/turf_decal/siding/wood{
dir = 1
},
/obj/item/pizzabox/margherita{
pixel_y = 11
},
/obj/item/storage/cans/sixbeer,
/turf/open/floor/wood/parquet,
/area/misc/hilbertshotel)
"KQ" = (
/obj/effect/turf_decal/siding/wood{
dir = 1
},
/turf/open/floor/wood,
/area/misc/hilbertshotel)
"Lg" = (
/obj/effect/turf_decal/siding/wood,
/turf/open/floor/wood/parquet,
/area/misc/hilbertshotel)
"Lp" = (
/obj/effect/light_emitter/interlink,
/turf/open/misc/beach/coast/corner{
dir = 8
},
/area/misc/hilbertshotel)
"Lv" = (
/obj/structure/sink/directional/north,
/obj/structure/mirror/directional/south,
/turf/open/indestructible/bathroom,
/area/misc/hilbertshotel)
"LF" = (
/obj/effect/turf_decal/siding/wood{
dir = 5
},
/obj/machinery/light_switch/directional/north,
/turf/open/floor/wood,
/area/misc/hilbertshotel)
"MB" = (
/obj/effect/turf_decal/siding/white{
dir = 8
},
/turf/open/floor/iron/kitchen,
/area/misc/hilbertshotel)
"ML" = (
/obj/effect/turf_decal/siding/wood/end{
dir = 4
},
/obj/machinery/light/floor,
/obj/machinery/light_switch/directional/south,
/turf/open/floor/wood/large,
/area/misc/hilbertshotel)
"MP" = (
/obj/structure/chair{
dir = 8
},
/obj/effect/turf_decal/siding/wood{
dir = 5
},
/turf/open/floor/wood/parquet,
/area/misc/hilbertshotel)
"Pe" = (
/obj/structure/chair/sofa/left{
dir = 1
},
/obj/effect/turf_decal/sand,
/turf/open/misc/beach/sand,
/area/misc/hilbertshotel)
"PJ" = (
/turf/open/misc/beach/coast/corner{
dir = 4
},
/area/misc/hilbertshotel)
"Qg" = (
/obj/structure/chair/sofa/right{
dir = 1
},
/obj/effect/turf_decal/sand,
/turf/open/misc/beach/sand,
/area/misc/hilbertshotel)
"Qz" = (
/obj/effect/turf_decal/siding/wood{
dir = 6
},
/turf/open/floor/wood/parquet,
/area/misc/hilbertshotel)
"QG" = (
/obj/structure/curtain/cloth/fancy,
/turf/closed/indestructible/fakeglass,
/area/misc/hilbertshotel)
"Rr" = (
/obj/machinery/light/floor{
alpha = 0;
invisibility = 100;
light_range = 10;
nightshift_light_power = 10
},
/turf/open/indestructible/bathroom,
/area/misc/hilbertshotel)
"RL" = (
/obj/effect/turf_decal/siding/wood{
dir = 4
},
/obj/structure/chair/comfy/teal{
dir = 8
},
/obj/machinery/light_switch/directional/east,
/turf/open/floor/wood/large,
/area/misc/hilbertshotel)
"SS" = (
/obj/effect/light_emitter/interlink,
/turf/open/misc/beach/coast/corner{
dir = 4
},
/area/misc/hilbertshotel)
"Yg" = (
/obj/effect/turf_decal/siding/wood{
dir = 6
},
/obj/structure/closet/cabinet,
/obj/item/hairbrush{
pixel_x = 2;
pixel_y = 3
},
/obj/item/serviette_pack,
/turf/open/floor/wood/large,
/area/misc/hilbertshotel)
"ZE" = (
/obj/effect/turf_decal/siding/wood,
/obj/machinery/light/warm/dim/directional/south,
/turf/open/floor/wood/large,
/area/misc/hilbertshotel)
(1,1,1) = {"
ra
ra
ra
ra
ra
ra
ra
ra
ra
ra
ra
ra
ra
ra
ra
"}
(2,1,1) = {"
ra
en
en
en
en
dI
Lp
br
fA
fA
fA
fA
fA
fA
ra
"}
(3,1,1) = {"
ra
en
cj
en
en
iQ
SS
br
fA
rV
ct
tR
Dg
fA
ra
"}
(4,1,1) = {"
ra
en
en
en
en
eH
br
rm
FN
ML
ct
Rr
Lv
fA
ra
"}
(5,1,1) = {"
ra
en
en
en
iQ
SS
br
fA
fA
hj
ct
jO
ct
fA
ra
"}
(6,1,1) = {"
ra
en
en
en
eH
br
fA
fA
cC
bI
ct
yc
nb
fA
ra
"}
(7,1,1) = {"
ra
en
en
iQ
PJ
br
QG
CM
ny
ZE
ct
EI
na
yH
ra
"}
(8,1,1) = {"
ra
en
en
hX
HH
HH
QG
oM
dS
Ig
jU
KQ
Bs
fA
ra
"}
(9,1,1) = {"
ra
en
en
dI
cW
ib
QG
IM
RL
Yg
ct
LF
wL
fA
ra
"}
(10,1,1) = {"
ra
en
en
en
en
Ib
fA
fA
ct
ct
ct
hj
ct
fA
ra
"}
(11,1,1) = {"
ra
en
en
en
en
Ib
Pe
QG
bO
wa
fy
qh
kW
fA
ra
"}
(12,1,1) = {"
ra
en
en
en
en
eH
Gm
QG
Jm
HK
oX
kh
Qz
fA
ra
"}
(13,1,1) = {"
ra
en
Gj
en
en
eH
Qg
QG
MP
GB
Lg
GD
MB
fA
ra
"}
(14,1,1) = {"
ra
en
en
en
iQ
SS
mH
fA
fA
FJ
wo
bW
Bo
fA
ra
"}
(15,1,1) = {"
ra
en
en
iQ
SS
ph
ph
br
fA
fA
fA
fA
fA
fA
ra
"}
(16,1,1) = {"
ra
ra
ra
ra
ra
ra
ra
ra
ra
ra
ra
ra
ra
ra
ra
"}
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,812 @@
//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE
"ar" = (
/obj/effect/turf_decal/tile/neutral{
dir = 8
},
/turf/open/floor/iron,
/area/misc/hilbertshotel)
"aC" = (
/obj/structure/table,
/obj/item/mop/advanced,
/obj/effect/decal/cleanable/dirt,
/turf/open/floor/iron,
/area/misc/hilbertshotel)
"aS" = (
/obj/structure/chair/stool/bar/directional/north,
/obj/effect/turf_decal/siding/wood{
dir = 1
},
/obj/effect/decal/cleanable/dirt,
/turf/open/floor/wood,
/area/misc/hilbertshotel)
"bw" = (
/obj/structure/chair/wood{
dir = 4
},
/obj/effect/mapping_helpers/broken_floor,
/obj/effect/decal/cleanable/dirt,
/turf/open/floor/wood/parquet,
/area/misc/hilbertshotel)
"bz" = (
/obj/structure/cable,
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
/turf/open/floor/plating,
/area/misc/hilbertshotel)
"cy" = (
/obj/effect/mapping_helpers/broken_floor,
/turf/open/floor/wood,
/area/misc/hilbertshotel)
"cz" = (
/obj/structure/chair/wood{
dir = 8
},
/turf/open/floor/wood,
/area/misc/hilbertshotel)
"cD" = (
/obj/structure/sink/kitchen{
desc = "A sink used for washing one's hands and face. It looks rusty and home-made";
name = "old sink";
pixel_y = 23
},
/obj/structure/mop_bucket,
/obj/effect/decal/cleanable/dirt,
/turf/open/floor/iron,
/area/misc/hilbertshotel)
"dw" = (
/obj/structure/disposalpipe/segment{
dir = 9
},
/obj/effect/turf_decal/tile/neutral,
/turf/open/floor/iron,
/area/misc/hilbertshotel)
"dS" = (
/obj/structure/closet/firecloset,
/turf/open/floor/plating,
/area/misc/hilbertshotel)
"dT" = (
/obj/effect/turf_decal/tile/neutral/fourcorners,
/turf/open/floor/iron,
/area/misc/hilbertshotel)
"eO" = (
/obj/structure/steam_vent,
/obj/structure/cable,
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
/obj/effect/decal/cleanable/dirt,
/turf/open/floor/plating,
/area/misc/hilbertshotel)
"fa" = (
/obj/structure/chair/wood{
dir = 4
},
/obj/effect/decal/cleanable/dirt,
/turf/open/floor/wood,
/area/misc/hilbertshotel)
"fi" = (
/obj/structure/cable,
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
/obj/effect/turf_decal/tile/neutral,
/turf/open/floor/iron,
/area/misc/hilbertshotel)
"gQ" = (
/obj/effect/decal/cleanable/dirt,
/turf/open/floor/iron,
/area/misc/hilbertshotel)
"ho" = (
/obj/structure/table/wood/fancy,
/obj/item/pizzabox/infinite,
/turf/open/floor/wood,
/area/misc/hilbertshotel)
"ik" = (
/obj/structure/closet/wardrobe/botanist,
/obj/effect/decal/cleanable/dirt,
/turf/open/floor/plating,
/area/misc/hilbertshotel)
"iL" = (
/obj/effect/turf_decal/siding/wood,
/obj/effect/decal/cleanable/dirt/dust,
/turf/open/floor/wood,
/area/misc/hilbertshotel)
"jr" = (
/obj/effect/turf_decal/tile/neutral,
/turf/open/floor/iron,
/area/misc/hilbertshotel)
"jx" = (
/obj/structure/disposalpipe/segment{
dir = 5
},
/obj/effect/turf_decal/tile/neutral/fourcorners,
/turf/open/floor/iron,
/area/misc/hilbertshotel)
"jT" = (
/obj/machinery/door/firedoor,
/obj/effect/turf_decal/stripes/line,
/obj/effect/turf_decal/stripes/line{
dir = 1
},
/obj/effect/turf_decal/caution/stand_clear,
/turf/open/floor/iron,
/area/misc/hilbertshotel)
"kh" = (
/obj/structure/table/wood/poker,
/obj/effect/decal/cleanable/dirt/dust,
/turf/open/floor/wood/parquet,
/area/misc/hilbertshotel)
"kD" = (
/obj/structure/table/wood,
/obj/effect/decal/cleanable/dirt,
/turf/open/floor/wood,
/area/misc/hilbertshotel)
"kS" = (
/obj/effect/decal/cleanable/dirt/dust,
/turf/open/floor/wood,
/area/misc/hilbertshotel)
"kW" = (
/obj/machinery/chem_dispenser/drinks/beer/fullupgrade,
/obj/structure/table/wood/poker,
/obj/effect/mapping_helpers/broken_floor,
/obj/machinery/light/small/directional/north,
/turf/open/floor/wood/parquet,
/area/misc/hilbertshotel)
"lU" = (
/obj/machinery/door/airlock/maintenance_hatch{
name = "Maintenance Hatch"
},
/obj/structure/cable,
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
/turf/open/floor/plating,
/area/misc/hilbertshotel)
"lY" = (
/obj/machinery/disposal/bin,
/obj/structure/disposalpipe/trunk{
dir = 8
},
/obj/effect/turf_decal/tile/dark/full,
/turf/open/floor/iron/large,
/area/misc/hilbertshotel)
"md" = (
/obj/structure/table/wood/poker,
/obj/item/storage/box/drinkingglasses,
/obj/effect/decal/cleanable/dirt,
/turf/open/floor/wood/parquet,
/area/misc/hilbertshotel)
"mK" = (
/obj/structure/reagent_dispensers/watertank,
/obj/effect/decal/cleanable/dirt,
/turf/open/floor/iron,
/area/misc/hilbertshotel)
"nA" = (
/obj/structure/cable,
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
/turf/closed/indestructible/steel,
/area/misc/hilbertshotel)
"oZ" = (
/turf/closed/indestructible/steel,
/area/misc/hilbertshotel)
"pm" = (
/obj/structure/cable,
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
/obj/machinery/light/small/broken/directional/north,
/turf/open/floor/plating,
/area/misc/hilbertshotel)
"pv" = (
/obj/effect/turf_decal/siding/wood,
/obj/effect/decal/cleanable/dirt,
/turf/open/floor/wood,
/area/misc/hilbertshotel)
"pD" = (
/obj/effect/decal/cleanable/dirt,
/obj/effect/decal/cleanable/blood/old,
/turf/open/floor/wood/parquet,
/area/misc/hilbertshotel)
"qn" = (
/obj/structure/table/wood,
/turf/open/floor/wood,
/area/misc/hilbertshotel)
"st" = (
/obj/structure/grille/broken,
/obj/structure/cable,
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
/obj/effect/decal/cleanable/dirt,
/turf/open/floor/plating,
/area/misc/hilbertshotel)
"tZ" = (
/obj/effect/decal/cleanable/dirt,
/obj/effect/decal/cleanable/blood/old,
/obj/effect/decal/cleanable/vomit/old,
/obj/structure/toilet{
dir = 8
},
/turf/open/floor/iron,
/area/misc/hilbertshotel)
"uX" = (
/obj/structure/table/wood/poker,
/obj/item/stack/spacecash/c1000,
/turf/open/floor/wood,
/area/misc/hilbertshotel)
"wb" = (
/obj/structure/chair/wood{
dir = 8
},
/turf/open/floor/wood/parquet,
/area/misc/hilbertshotel)
"wl" = (
/obj/machinery/vending/cigarette/beach,
/obj/effect/turf_decal/tile/dark/full,
/obj/machinery/light/warm/directional/east,
/turf/open/floor/iron/large,
/area/misc/hilbertshotel)
"wu" = (
/obj/structure/rack,
/obj/item/crowbar,
/obj/effect/decal/cleanable/dirt,
/turf/open/floor/plating,
/area/misc/hilbertshotel)
"wS" = (
/obj/structure/chair/sofa/left/brown,
/obj/effect/decal/cleanable/dirt,
/turf/open/floor/wood,
/area/misc/hilbertshotel)
"xT" = (
/obj/structure/table/wood/poker,
/obj/item/stack/spacecash/c1000,
/turf/open/floor/wood/parquet,
/area/misc/hilbertshotel)
"zA" = (
/obj/structure/table,
/obj/item/soap/deluxe,
/obj/effect/decal/cleanable/dirt,
/obj/item/storage/box/lights/mixed,
/turf/open/floor/iron,
/area/misc/hilbertshotel)
"zY" = (
/obj/machinery/door/firedoor,
/obj/effect/turf_decal/stripes/line,
/obj/effect/turf_decal/stripes/line{
dir = 1
},
/obj/effect/turf_decal/caution/stand_clear{
dir = 1
},
/turf/open/floor/iron,
/area/misc/hilbertshotel)
"Ae" = (
/obj/structure/table/wood,
/turf/open/floor/wood/parquet,
/area/misc/hilbertshotel)
"AE" = (
/obj/structure/closet/wardrobe/botanist,
/obj/item/weldingtool/advanced,
/obj/item/wrench,
/obj/item/screwdriver,
/turf/open/floor/plating,
/area/misc/hilbertshotel)
"AO" = (
/obj/effect/mapping_helpers/broken_floor,
/obj/effect/decal/cleanable/dirt,
/obj/machinery/light/small/broken/directional/east,
/turf/open/floor/wood,
/area/misc/hilbertshotel)
"BF" = (
/obj/effect/decal/cleanable/dirt,
/obj/machinery/light/small/directional/north,
/turf/open/floor/plating,
/area/misc/hilbertshotel)
"BR" = (
/obj/effect/decal/cleanable/dirt/dust,
/turf/open/floor/wood/parquet,
/area/misc/hilbertshotel)
"Dc" = (
/turf/open/floor/wood,
/area/misc/hilbertshotel)
"DR" = (
/obj/structure/chair/stool/bar/directional/north,
/obj/effect/turf_decal/siding/wood{
dir = 1
},
/turf/open/floor/wood,
/area/misc/hilbertshotel)
"DX" = (
/obj/structure/disposalpipe/segment{
dir = 6
},
/obj/effect/turf_decal/tile/neutral,
/turf/open/floor/iron,
/area/misc/hilbertshotel)
"Ea" = (
/obj/item/stack/cable_coil/cut,
/mob/living/basic/mouse,
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
/obj/effect/decal/cleanable/dirt,
/turf/open/floor/plating,
/area/misc/hilbertshotel)
"EX" = (
/obj/effect/decal/cleanable/dirt,
/turf/open/floor/wood,
/area/misc/hilbertshotel)
"Fl" = (
/obj/effect/decal/cleanable/dirt,
/obj/structure/sink/directional/south,
/obj/structure/mirror/broken/directional/north,
/obj/machinery/light/small/dim/directional/west,
/turf/open/floor/iron,
/area/misc/hilbertshotel)
"FN" = (
/obj/effect/turf_decal/siding/wood,
/obj/effect/decal/cleanable/dirt,
/obj/machinery/light/small/broken/directional/west,
/turf/open/floor/wood,
/area/misc/hilbertshotel)
"Gv" = (
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
/turf/closed/indestructible/steel,
/area/misc/hilbertshotel)
"HL" = (
/obj/structure/table/wood/poker,
/obj/item/stack/spacecash/c10,
/obj/effect/decal/cleanable/dirt,
/turf/open/floor/wood/parquet,
/area/misc/hilbertshotel)
"HO" = (
/obj/structure/table/wood/poker,
/obj/effect/spawner/random/trash/soap,
/turf/open/floor/wood,
/area/misc/hilbertshotel)
"Ib" = (
/turf/open/floor/wood/parquet,
/area/misc/hilbertshotel)
"Ix" = (
/obj/structure/closet/crate,
/obj/item/stack/sheet/iron/fifty,
/obj/item/stack/sheet/mineral/wood/fifty,
/obj/effect/decal/cleanable/dirt,
/turf/open/floor/plating,
/area/misc/hilbertshotel)
"Je" = (
/obj/effect/turf_decal/tile/neutral,
/obj/machinery/light/warm/directional/east,
/turf/open/floor/iron,
/area/misc/hilbertshotel)
"JW" = (
/obj/machinery/vending/boozeomat/all_access,
/obj/effect/decal/cleanable/dirt,
/turf/open/floor/wood/parquet,
/area/misc/hilbertshotel)
"LC" = (
/obj/machinery/portable_atmospherics/canister/air,
/turf/open/floor/plating,
/area/misc/hilbertshotel)
"Mf" = (
/obj/structure/table,
/obj/item/stack/spacecash/c10,
/turf/open/floor/plating,
/area/misc/hilbertshotel)
"Mj" = (
/obj/structure/closet/crate,
/obj/effect/decal/cleanable/dirt,
/obj/machinery/light/small/directional/west,
/turf/open/floor/plating,
/area/misc/hilbertshotel)
"Mk" = (
/obj/structure/cable,
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
/obj/effect/decal/cleanable/dirt,
/turf/open/floor/plating,
/area/misc/hilbertshotel)
"Mp" = (
/turf/closed/wall/space{
space_lit = 1
},
/area/misc/hilbertshotel)
"MO" = (
/obj/effect/turf_decal/tile/neutral{
dir = 8
},
/obj/machinery/light/warm/directional/west,
/turf/open/floor/iron,
/area/misc/hilbertshotel)
"Np" = (
/obj/structure/chair/sofa/middle/brown,
/obj/effect/decal/cleanable/dirt,
/turf/open/floor/wood,
/area/misc/hilbertshotel)
"NX" = (
/obj/machinery/door/firedoor,
/obj/effect/turf_decal/stripes/line,
/obj/effect/turf_decal/stripes/line{
dir = 1
},
/turf/open/floor/iron,
/area/misc/hilbertshotel)
"Oh" = (
/turf/closed/indestructible/hoteldoor{
icon_state = "closed";
icon = 'modular_skyrat/modules/aesthetics/airlock/icons/airlocks/station2/glass.dmi'
},
/area/misc/hilbertshotel)
"Py" = (
/turf/open/floor/plating,
/area/misc/hilbertshotel)
"PK" = (
/obj/effect/spawner/structure/window/reinforced,
/turf/open/floor/plating,
/area/misc/hilbertshotel)
"QJ" = (
/obj/machinery/light/small/dim/directional/east,
/turf/open/floor/plating,
/area/misc/hilbertshotel)
"Rr" = (
/obj/structure/disposalpipe/segment,
/obj/effect/turf_decal/tile/neutral,
/turf/open/floor/iron,
/area/misc/hilbertshotel)
"RM" = (
/obj/machinery/vending/coffee,
/obj/effect/turf_decal/tile/dark/full,
/turf/open/floor/iron/large,
/area/misc/hilbertshotel)
"RP" = (
/obj/machinery/chem_dispenser/drinks/fullupgrade,
/obj/structure/table/wood/poker,
/turf/open/floor/wood/parquet,
/area/misc/hilbertshotel)
"SS" = (
/obj/structure/chair/stool/bar/directional/west,
/obj/effect/decal/cleanable/dirt,
/turf/open/floor/plating,
/area/misc/hilbertshotel)
"SV" = (
/obj/structure/disposalpipe/trunk,
/obj/effect/turf_decal/tile/neutral/fourcorners,
/turf/open/floor/iron,
/area/misc/hilbertshotel)
"Tj" = (
/obj/effect/decal/cleanable/dirt,
/turf/open/floor/plating,
/area/misc/hilbertshotel)
"Tu" = (
/obj/effect/mapping_helpers/broken_floor,
/obj/effect/turf_decal/siding/wood{
dir = 8
},
/obj/machinery/light/small/directional/south,
/turf/open/floor/wood,
/area/misc/hilbertshotel)
"Ul" = (
/obj/structure/table/wood/poker,
/obj/item/reagent_containers/cup/glass/shaker,
/turf/open/floor/wood/parquet,
/area/misc/hilbertshotel)
"UQ" = (
/obj/machinery/vending/boozeomat/all_access,
/turf/open/floor/wood,
/area/misc/hilbertshotel)
"UU" = (
/obj/structure/closet/emcloset,
/turf/open/floor/plating,
/area/misc/hilbertshotel)
"Wh" = (
/obj/effect/mapping_helpers/broken_floor,
/obj/effect/decal/cleanable/dirt,
/turf/open/floor/wood/parquet,
/area/misc/hilbertshotel)
"Wl" = (
/obj/structure/chair/wood{
dir = 8
},
/obj/effect/decal/cleanable/dirt,
/turf/open/floor/wood/parquet,
/area/misc/hilbertshotel)
"Wt" = (
/obj/effect/decal/cleanable/dirt,
/obj/effect/decal/cleanable/dirt/dust,
/turf/open/floor/wood,
/area/misc/hilbertshotel)
"WI" = (
/obj/machinery/door/airlock/maintenance_hatch{
name = "Maintenance Hatch"
},
/turf/open/floor/plating,
/area/misc/hilbertshotel)
"WN" = (
/obj/structure/rack,
/obj/item/storage/pill_bottle/maintenance_pill/full,
/turf/open/floor/plating,
/area/misc/hilbertshotel)
"WX" = (
/obj/structure/chair/sofa/right/brown,
/turf/open/floor/wood,
/area/misc/hilbertshotel)
"YW" = (
/obj/effect/mapping_helpers/broken_floor,
/obj/effect/decal/cleanable/dirt,
/turf/open/floor/plating,
/area/misc/hilbertshotel)
"Zq" = (
/obj/structure/chair/wood{
dir = 4
},
/turf/open/floor/wood/parquet,
/area/misc/hilbertshotel)
(1,1,1) = {"
oZ
oZ
oZ
oZ
oZ
oZ
oZ
oZ
oZ
oZ
oZ
oZ
oZ
oZ
oZ
"}
(2,1,1) = {"
oZ
Oh
ar
ar
ar
MO
ar
jT
ar
ar
ar
MO
ar
Oh
oZ
"}
(3,1,1) = {"
oZ
Oh
dT
dT
dT
dT
dT
NX
dT
dT
dT
SV
jx
Oh
oZ
"}
(4,1,1) = {"
oZ
Oh
Je
jr
jr
jr
fi
zY
jr
jr
DX
Rr
dw
Oh
oZ
"}
(5,1,1) = {"
oZ
oZ
oZ
oZ
oZ
oZ
lU
oZ
wl
RM
lY
oZ
oZ
oZ
oZ
"}
(6,1,1) = {"
oZ
Mf
Ix
wu
oZ
Mj
eO
oZ
oZ
oZ
oZ
oZ
UQ
HL
oZ
"}
(7,1,1) = {"
oZ
SS
Tj
Py
WI
Tj
bz
LC
oZ
uX
HO
FN
Zq
bw
oZ
"}
(8,1,1) = {"
oZ
BF
Tj
Tj
oZ
Tj
bz
Py
WI
EX
cy
iL
Ae
Ae
oZ
"}
(9,1,1) = {"
oZ
ik
AE
oZ
oZ
Tj
Mk
dS
oZ
cy
fa
pv
Wl
wb
oZ
"}
(10,1,1) = {"
oZ
oZ
oZ
oZ
st
Ea
bz
UU
oZ
YW
qn
Dc
Tu
oZ
oZ
"}
(11,1,1) = {"
oZ
Fl
WI
Mk
Mk
oZ
oZ
oZ
oZ
Wt
cz
WX
kS
PK
Mp
"}
(12,1,1) = {"
oZ
tZ
nA
pm
WN
oZ
Ul
Ib
md
aS
cy
Np
EX
PK
Mp
"}
(13,1,1) = {"
Gv
Gv
Gv
WI
oZ
oZ
RP
Wh
kh
aS
fa
wS
cy
PK
Mp
"}
(14,1,1) = {"
oZ
cD
gQ
Tj
zA
oZ
kW
pD
xT
DR
kD
kS
ho
PK
Mp
"}
(15,1,1) = {"
oZ
mK
QJ
gQ
aC
oZ
JW
BR
Tj
AO
cz
oZ
PK
PK
Mp
"}
(16,1,1) = {"
oZ
oZ
oZ
oZ
oZ
oZ
oZ
oZ
oZ
oZ
oZ
oZ
Mp
Mp
Mp
"}
@@ -42,11 +42,11 @@
switch(gender)
if(MALE)
play_lewd_sound(get_turf(src), pick('modular_skyrat/modules/modular_items/lewd_items/sounds/final_m1.ogg',
conditional_pref_sound(get_turf(src), pick('modular_skyrat/modules/modular_items/lewd_items/sounds/final_m1.ogg',
'modular_skyrat/modules/modular_items/lewd_items/sounds/final_m2.ogg',
'modular_skyrat/modules/modular_items/lewd_items/sounds/final_m3.ogg'), 50, TRUE, pref_to_check = /datum/preference/toggle/erp/sounds)
if(FEMALE)
play_lewd_sound(get_turf(src), pick('modular_skyrat/modules/modular_items/lewd_items/sounds/final_f1.ogg',
conditional_pref_sound(get_turf(src), pick('modular_skyrat/modules/modular_items/lewd_items/sounds/final_f1.ogg',
'modular_skyrat/modules/modular_items/lewd_items/sounds/final_f2.ogg',
'modular_skyrat/modules/modular_items/lewd_items/sounds/final_f3.ogg'), 50, TRUE, pref_to_check = /datum/preference/toggle/erp/sounds)
@@ -75,7 +75,7 @@
return
speech_args[SPEECH_MESSAGE] = pick((prob(moans_alt_probability) && LAZYLEN(moans_alt)) ? moans_alt : moans)
if(moan_sounds)
play_lewd_sound(loc, pick(moan_sounds), chokes_wearer ? moan_volume_choking : moan_volume, 1, -1)
conditional_pref_sound(loc, pick(moan_sounds), chokes_wearer ? moan_volume_choking : moan_volume, 1, -1)
// Change the size of the gag
/obj/item/clothing/mask/ballgag/attack_self(mob/user)
@@ -88,7 +88,7 @@
return
speech_args[SPEECH_MESSAGE] = pick((prob(moans_alt_probability) && LAZYLEN(moans_alt)) ? moans_alt : moans)
play_lewd_sound(loc, pick('modular_skyrat/modules/modular_items/lewd_items/sounds/under_moan_f1.ogg',
conditional_pref_sound(loc, pick('modular_skyrat/modules/modular_items/lewd_items/sounds/under_moan_f1.ogg',
'modular_skyrat/modules/modular_items/lewd_items/sounds/under_moan_f2.ogg',
'modular_skyrat/modules/modular_items/lewd_items/sounds/under_moan_f3.ogg',
'modular_skyrat/modules/modular_items/lewd_items/sounds/under_moan_f4.ogg'), 70, 1, -1)
@@ -261,7 +261,7 @@
/obj/item/clothing/mask/gas/bdsm_mask/proc/toggle(mob/living/carbon/user)
mask_on = !mask_on
to_chat(user, span_notice("You turn the air filter [mask_on ? "on. Use with caution!" : "off. Now it's safe to wear."]"))
play_lewd_sound(user, mask_on ? 'sound/weapons/magin.ogg' : 'sound/weapons/magout.ogg', 40, TRUE)
conditional_pref_sound(user, mask_on ? 'sound/weapons/magin.ogg' : 'sound/weapons/magout.ogg', 40, TRUE)
update_icon_state()
update_mob_action_buttonss()
update_icon()
@@ -20,7 +20,7 @@
/obj/item/clothing/suit/corset/click_alt(mob/user)
laced_tight = !laced_tight
to_chat(user, span_notice("You [laced_tight ? "tighten" : "loosen"] the corset, making it far [laced_tight ? "harder" : "easier"] to breathe."))
play_lewd_sound(user, laced_tight ? 'sound/items/handling/cloth_pickup.ogg' : 'sound/items/handling/cloth_drop.ogg', 40, TRUE)
conditional_pref_sound(user, laced_tight ? 'sound/items/handling/cloth_pickup.ogg' : 'sound/items/handling/cloth_drop.ogg', 40, TRUE)
. = CLICK_ACTION_SUCCESS
if(laced_tight)
slowdown = TIGHT_SLOWDOWN
@@ -76,14 +76,14 @@
if(user_client == "speech")
if(muzzle == TRUE)
muzzle = FALSE
play_lewd_sound(usr, 'sound/weapons/magout.ogg', 40, TRUE)
conditional_pref_sound(usr, 'sound/weapons/magout.ogg', 40, TRUE)
to_chat(usr, span_notice("Speech switch off"))
if(usr.get_item_by_slot(ITEM_SLOT_HEAD) == src)
REMOVE_TRAIT(usr, TRAIT_MUTE, CLOTHING_TRAIT)
//to_chat(U, span_purple("Your mouth is free. you breathe out with relief."))
else
muzzle = TRUE
play_lewd_sound(usr, 'sound/weapons/magin.ogg', 40, TRUE)
conditional_pref_sound(usr, 'sound/weapons/magin.ogg', 40, TRUE)
to_chat(usr, span_notice("Speech switch on"))
if(usr.get_item_by_slot(ITEM_SLOT_HEAD) == src)
ADD_TRAIT(usr, TRAIT_MUTE, CLOTHING_TRAIT)
@@ -91,14 +91,14 @@
if(user_client == "hearing")
if(earmuffs == TRUE)
earmuffs = FALSE
play_lewd_sound(usr, 'sound/weapons/magout.ogg', 40, TRUE)
conditional_pref_sound(usr, 'sound/weapons/magout.ogg', 40, TRUE)
to_chat(usr, span_notice("Hearing switch off"))
if(usr.get_item_by_slot(ITEM_SLOT_HEAD) == src)
REMOVE_TRAIT(usr, TRAIT_DEAF, CLOTHING_TRAIT)
//to_chat(U, span_purple("Finally you can hear the world around again."))
else
earmuffs = TRUE
play_lewd_sound(usr, 'sound/weapons/magin.ogg', 40, TRUE)
conditional_pref_sound(usr, 'sound/weapons/magin.ogg', 40, TRUE)
to_chat(usr, span_notice("Hearing switch on"))
if(usr.get_item_by_slot(ITEM_SLOT_HEAD) == src)
ADD_TRAIT(usr, TRAIT_DEAF, CLOTHING_TRAIT)
@@ -107,14 +107,14 @@
var/mob/living/carbon/human/user = usr
if(prevent_vision == TRUE)
prevent_vision = FALSE
play_lewd_sound(usr, 'sound/weapons/magout.ogg', 40, TRUE)
conditional_pref_sound(usr, 'sound/weapons/magout.ogg', 40, TRUE)
to_chat(usr, span_notice("Vision switch off"))
if(usr.get_item_by_slot(ITEM_SLOT_HEAD) == src)
user.cure_blind("deprivation_helmet_[REF(src)]")
//to_chat(U, span_purple("Helmet no longer restricts your vision."))
else
prevent_vision = TRUE
play_lewd_sound(usr, 'sound/weapons/magin.ogg', 40, TRUE)
conditional_pref_sound(usr, 'sound/weapons/magin.ogg', 40, TRUE)
to_chat(usr, span_notice("Vision switch on"))
if(usr.get_item_by_slot(ITEM_SLOT_HEAD) == src)
user.become_blind("deprivation_helmet_[REF(src)]")
@@ -132,7 +132,7 @@
/obj/item/clothing/suit/straight_jacket/kinky_sleepbag/proc/fold(mob/user, src)
bag_fold = !bag_fold
play_lewd_sound(user, 'modular_skyrat/modules/modular_items/lewd_items/sounds/latex.ogg', 40, TRUE)
conditional_pref_sound(user, 'modular_skyrat/modules/modular_items/lewd_items/sounds/latex.ogg', 40, TRUE)
if(bag_fold == TRUE)
w_class = WEIGHT_CLASS_SMALL
slot_flags = NONE
@@ -182,7 +182,7 @@
/obj/item/clothing/suit/straight_jacket/kinky_sleepbag/process(seconds_per_tick)
if(time_to_sound_left <= 0)
if(tt <= 0)
play_lewd_sound(loc, 'modular_skyrat/modules/modular_items/lewd_items/sounds/latex.ogg', 100, TRUE)
conditional_pref_sound(loc, 'modular_skyrat/modules/modular_items/lewd_items/sounds/latex.ogg', 100, TRUE)
tt = rand(15, 35) //to do random funny sounds when character inside that thing.
else
tt -= seconds_per_tick
@@ -120,7 +120,7 @@
to_chat(user, span_warning("You need to put the strapon around your waist before you can use it!"))
/obj/item/clothing/strapon/proc/toggle(mob/living/carbon/human/user)
play_lewd_sound(user, 'modular_skyrat/modules/modular_items/lewd_items/sounds/latex.ogg', 40, TRUE)
conditional_pref_sound(user, 'modular_skyrat/modules/modular_items/lewd_items/sounds/latex.ogg', 40, TRUE)
var/obj/item/held = user.get_active_held_item()
var/obj/item/unheld = user.get_inactive_held_item()
@@ -205,7 +205,7 @@
if(prob(40))
hit_mob.try_lewd_autoemote(pick("twitch_s", "moan"))
user.visible_message(span_purple("[user] [message]!"))
play_lewd_sound(loc, pick('modular_skyrat/modules/modular_items/lewd_items/sounds/bang1.ogg',
conditional_pref_sound(loc, pick('modular_skyrat/modules/modular_items/lewd_items/sounds/bang1.ogg',
'modular_skyrat/modules/modular_items/lewd_items/sounds/bang2.ogg',
'modular_skyrat/modules/modular_items/lewd_items/sounds/bang3.ogg',
'modular_skyrat/modules/modular_items/lewd_items/sounds/bang4.ogg',
@@ -227,7 +227,7 @@
if(prob(70))
hit_mob.try_lewd_autoemote(pick("gasp", "moan"))
user.visible_message(span_purple("[user] [message]!"))
play_lewd_sound(loc, pick('modular_skyrat/modules/modular_items/lewd_items/sounds/bang1.ogg',
conditional_pref_sound(loc, pick('modular_skyrat/modules/modular_items/lewd_items/sounds/bang1.ogg',
'modular_skyrat/modules/modular_items/lewd_items/sounds/bang2.ogg',
'modular_skyrat/modules/modular_items/lewd_items/sounds/bang3.ogg',
'modular_skyrat/modules/modular_items/lewd_items/sounds/bang4.ogg',
@@ -246,7 +246,7 @@
if(prob(60))
hit_mob.try_lewd_autoemote(pick("twitch_s", "moan", "shiver"))
user.visible_message(span_purple("[user] [message]!"))
play_lewd_sound(loc, pick('modular_skyrat/modules/modular_items/lewd_items/sounds/bang1.ogg',
conditional_pref_sound(loc, pick('modular_skyrat/modules/modular_items/lewd_items/sounds/bang1.ogg',
'modular_skyrat/modules/modular_items/lewd_items/sounds/bang2.ogg',
'modular_skyrat/modules/modular_items/lewd_items/sounds/bang3.ogg',
'modular_skyrat/modules/modular_items/lewd_items/sounds/bang4.ogg',
@@ -1,5 +1,5 @@
/**
* play_lewd_sound is similar to `playsound` but it does not pass through walls, doesn't play for ghosts, and checks for prefs.
* conditional_pref_sound is similar to `playsound` but it does not pass through walls, doesn't play for ghosts, and checks for prefs.
* This is useful if we have something like the organic interface content, which everyone may not want to hear.
*
* source - Origin of sound.
@@ -14,7 +14,7 @@
* falloff_distance - Distance at which falloff begins. Sound is at peak volume (in regards to falloff) aslong as it is in this range.
* pref_to_check - the path of the pref that we want to check
*/
/proc/play_lewd_sound(
/proc/conditional_pref_sound(
atom/source,
soundin,
vol as num,
@@ -63,7 +63,7 @@
listening_mob.playsound_local(turf_source, soundin, vol, vary, frequency, falloff_exponent, channel, pressure_affected, sound_to_play, maxdistance, falloff_distance, 1, use_reverb)
. += listening_mob
/// The looping sound datum but we check for prefs and use `play_lewd_sound` instead of `playsound`
/// The looping sound datum but we check for prefs and use `conditional_pref_sound` instead of `playsound`
/datum/looping_sound/lewd
/// What preference are we going to check with our looping sound when we play it for people?
var/pref_to_check = /datum/preference/toggle/erp/sex_toy_sounds
@@ -76,7 +76,7 @@
SEND_SOUND(parent, sound_to_play)
return
play_lewd_sound(
conditional_pref_sound(
parent,
sound_to_play,
volume,
@@ -47,11 +47,11 @@
var/datum/reagents/applied_reagents = new/datum/reagents(50)
applied_reagents.add_reagent(/datum/reagent/consumable/cum, cum_volume)
user.visible_message(span_warning("[user] cums into [target]!"), span_danger("You cum into [target]!"))
play_lewd_sound(target, SFX_DESECRATION, 50, TRUE)
conditional_pref_sound(target, SFX_DESECRATION, 50, TRUE)
applied_reagents.trans_to(target, cum_volume)
else
user.visible_message(span_warning("[user] cums on [target]!"), span_danger("You cum on [target]!"))
play_lewd_sound(target, SFX_DESECRATION, 50, TRUE)
conditional_pref_sound(target, SFX_DESECRATION, 50, TRUE)
affected_human.add_cum_splatter_floor(get_turf(target))
log_combat(user, target, "came on")
@@ -101,22 +101,22 @@
if(EGGVIB_OFF)
vibration_mode = EGGVIB_LOW
toy_on = TRUE
play_lewd_sound(loc, 'sound/weapons/magin.ogg', 20, TRUE)
conditional_pref_sound(loc, 'sound/weapons/magin.ogg', 20, TRUE)
soundloop1.start()
if(EGGVIB_LOW)
vibration_mode = EGGVIB_MEDIUM
play_lewd_sound(loc, 'sound/weapons/magin.ogg', 20, TRUE)
conditional_pref_sound(loc, 'sound/weapons/magin.ogg', 20, TRUE)
soundloop1.stop()
soundloop2.start()
if(EGGVIB_MEDIUM)
vibration_mode = EGGVIB_HIGH
play_lewd_sound(loc, 'sound/weapons/magin.ogg', 20, TRUE)
conditional_pref_sound(loc, 'sound/weapons/magin.ogg', 20, TRUE)
soundloop2.stop()
soundloop3.start()
if(EGGVIB_HIGH)
vibration_mode = EGGVIB_OFF
toy_on = FALSE
play_lewd_sound(loc, 'sound/weapons/magout.ogg', 20, TRUE)
conditional_pref_sound(loc, 'sound/weapons/magout.ogg', 20, TRUE)
soundloop3.stop()
/obj/item/clothing/sextoy/eggvib/lewd_equipped(mob/living/carbon/human/user, slot, initial)
@@ -335,13 +335,13 @@
switch(vibration_mode)
if(EGGVIB_LOW)
vibration_mode = EGGVIB_MEDIUM
play_lewd_sound(loc, 'sound/weapons/magin.ogg', 20, TRUE)
conditional_pref_sound(loc, 'sound/weapons/magin.ogg', 20, TRUE)
if(EGGVIB_MEDIUM)
vibration_mode = EGGVIB_HIGH
play_lewd_sound(loc, 'sound/weapons/magin.ogg', 20, TRUE)
conditional_pref_sound(loc, 'sound/weapons/magin.ogg', 20, TRUE)
if(EGGVIB_HIGH)
vibration_mode = EGGVIB_LOW
play_lewd_sound(loc, 'sound/weapons/magin.ogg', 20, TRUE)
conditional_pref_sound(loc, 'sound/weapons/magin.ogg', 20, TRUE)
#undef EGGVIB_OFF
#undef EGGVIB_LOW
@@ -31,7 +31,7 @@
to_chat(user, span_notice("You start to open the condom pack..."))
if(!do_after(user, 1.5 SECONDS, target = user))
return
play_lewd_sound(src.loc, 'sound/items/poster_ripped.ogg', 50, TRUE)
conditional_pref_sound(src.loc, 'sound/items/poster_ripped.ogg', 50, TRUE)
var/obj/item/clothing/sextoy/condom/removed_condom = new /obj/item/clothing/sextoy/condom
user.put_in_hands(removed_condom)
@@ -181,7 +181,7 @@
target.try_lewd_autoemote(pick(possible_emotes))
user.visible_message(span_purple("[user] [message]!"))
play_lewd_sound(loc, pick('modular_skyrat/modules/modular_items/lewd_items/sounds/bang1.ogg',
conditional_pref_sound(loc, pick('modular_skyrat/modules/modular_items/lewd_items/sounds/bang1.ogg',
'modular_skyrat/modules/modular_items/lewd_items/sounds/bang2.ogg',
'modular_skyrat/modules/modular_items/lewd_items/sounds/bang3.ogg',
'modular_skyrat/modules/modular_items/lewd_items/sounds/bang4.ogg',
@@ -405,7 +405,7 @@ GLOBAL_LIST_INIT(dildo_colors, list(//mostly neon colors
/// Code for taking out/putting away the other end of the toy when one end is in you
/obj/item/clothing/sextoy/dildo/double_dildo/proc/toggle(mob/living/carbon/human/user)
play_lewd_sound(user, 'modular_skyrat/modules/modular_items/lewd_items/sounds/latex.ogg', 40, TRUE)
conditional_pref_sound(user, 'modular_skyrat/modules/modular_items/lewd_items/sounds/latex.ogg', 40, TRUE)
if(!end_in_hand)
take_in_hand(user)
@@ -74,7 +74,7 @@
target.add_mood_event("tickled", /datum/mood_event/tickled)
carbon_target?.adjust_arousal(3)
user.visible_message(span_purple("[user] [message]!"))
play_lewd_sound(loc, \
conditional_pref_sound(loc, \
pick(
'sound/items/handling/cloth_drop.ogg', // I duplicate this part of code because im useless shitcoder that can't make it work properly without tons of repeating code blocks
'sound/items/handling/cloth_pickup.ogg', // If you can make it better - go ahead, modify it, please.
@@ -83,7 +83,7 @@
target.adjust_arousal(6)
target.adjust_pleasure(9)
user.visible_message(span_purple("[user] [message]!"))
play_lewd_sound(loc, pick('modular_skyrat/modules/modular_items/lewd_items/sounds/bang1.ogg',
conditional_pref_sound(loc, pick('modular_skyrat/modules/modular_items/lewd_items/sounds/bang1.ogg',
'modular_skyrat/modules/modular_items/lewd_items/sounds/bang2.ogg',
'modular_skyrat/modules/modular_items/lewd_items/sounds/bang3.ogg',
'modular_skyrat/modules/modular_items/lewd_items/sounds/bang4.ogg',
@@ -45,7 +45,7 @@
//we're below minimum, turn off
shocker_on = FALSE
update_appearance()
play_lewd_sound(src, activate_sound, 75, TRUE, -1)
conditional_pref_sound(src, activate_sound, 75, TRUE, -1)
/obj/item/kinky_shocker/examine(mob/user)
. = ..()
@@ -91,7 +91,7 @@
if(cell && cell.charge >= cell_hit_cost)
shocker_on = !shocker_on
to_chat(user, span_notice("You turn the shocker [shocker_on? "on. Buzz!" : "off."]"))
play_lewd_sound(user, shocker_on ? 'sound/weapons/magin.ogg' : 'sound/weapons/magout.ogg', 40, TRUE)
conditional_pref_sound(user, shocker_on ? 'sound/weapons/magin.ogg' : 'sound/weapons/magout.ogg', 40, TRUE)
else
shocker_on = FALSE
if(!cell)
@@ -221,7 +221,7 @@
return
user.visible_message(span_purple("[user] [message]!"))
play_lewd_sound(loc, 'sound/weapons/taserhit.ogg', 70, 1, -1)
conditional_pref_sound(loc, 'sound/weapons/taserhit.ogg', 70, 1, -1)
deductcharge(cell_hit_cost)
if(prob(80))
target.try_lewd_autoemote(pick("twitch", "twitch_s", "shiver", "scream"))
@@ -63,7 +63,7 @@
/obj/item/clothing/mask/leatherwhip/proc/handle_speech(datum/source, list/speech_args)
SIGNAL_HANDLER
speech_args[SPEECH_MESSAGE] = pick((prob(moans_alt_probability) && LAZYLEN(moans_alt)) ? moans_alt : moans)
play_lewd_sound(loc, pick('modular_skyrat/modules/modular_items/lewd_items/sounds/under_moan_f1.ogg',
conditional_pref_sound(loc, pick('modular_skyrat/modules/modular_items/lewd_items/sounds/under_moan_f1.ogg',
'modular_skyrat/modules/modular_items/lewd_items/sounds/under_moan_f2.ogg',
'modular_skyrat/modules/modular_items/lewd_items/sounds/under_moan_f3.ogg',
'modular_skyrat/modules/modular_items/lewd_items/sounds/under_moan_f4.ogg'), 70, 1, -1)
@@ -193,7 +193,7 @@
target.apply_status_effect(/datum/status_effect/subspace)
target.Paralyze(1)//don't touch it. It's domination tool, it should have ability to put someone on kneels. I already inserted check for PREF YOU CAN'T ABUSE THIS ITEM
target.adjust_pain(5)
play_lewd_sound(loc, 'sound/weapons/whip.ogg', 100)
conditional_pref_sound(loc, 'sound/weapons/whip.ogg', 100)
else
message = (user == target) ? pick("knocks [target.p_them()]self down with [src]",
"gently uses [src] to knock [target.p_them()]self on the ground") \
@@ -205,7 +205,7 @@
target.apply_status_effect(/datum/status_effect/subspace)
target.Paralyze(1)
target.adjust_pain(3)
play_lewd_sound(loc, 'sound/weapons/whip.ogg', 60)
conditional_pref_sound(loc, 'sound/weapons/whip.ogg', 60)
if(BODY_ZONE_HEAD)
message = (user == target) ? pick("wraps [src] around [target.p_their()] neck, choking [target.p_them()]self",
@@ -216,7 +216,7 @@
target.try_lewd_autoemote(pick("gasp", "choke", "moan"))
carbon_target?.adjust_arousal(3)
target.adjust_pain(5)
play_lewd_sound(loc, 'modular_skyrat/modules/modular_items/lewd_items/sounds/latex.ogg', 80)
conditional_pref_sound(loc, 'modular_skyrat/modules/modular_items/lewd_items/sounds/latex.ogg', 80)
if(BODY_ZONE_PRECISE_GROIN)
if(!carbon_target?.is_bottomless())
@@ -236,7 +236,7 @@
target.apply_status_effect(/datum/status_effect/spanked)
if(HAS_TRAIT(target, TRAIT_MASOCHISM) || HAS_TRAIT(target, TRAIT_BIMBO))
target.add_mood_event("pervert spanked", /datum/mood_event/perv_spanked)
play_lewd_sound(loc, 'sound/weapons/whip.ogg', 60)
conditional_pref_sound(loc, 'sound/weapons/whip.ogg', 60)
else
message = (user == target) ? pick("roughly flogs [target.p_them()]self with [src]",
@@ -253,7 +253,7 @@
target.apply_status_effect(/datum/status_effect/spanked)
if(HAS_TRAIT(target, TRAIT_MASOCHISM) || HAS_TRAIT(target, TRAIT_BIMBO))
target.add_mood_event("pervert spanked", /datum/mood_event/perv_spanked)
play_lewd_sound(loc, 'sound/weapons/whip.ogg', 100)
conditional_pref_sound(loc, 'sound/weapons/whip.ogg', 100)
else
if(current_whip_type == "hard")
message = (user == target) ? pick("disciplines [target.p_them()]self with [src]",
@@ -265,7 +265,7 @@
target.apply_status_effect(/datum/status_effect/subspace)
target.do_jitter_animation()
target.adjust_pain(7)
play_lewd_sound(loc, 'sound/weapons/whip.ogg', 100)
conditional_pref_sound(loc, 'sound/weapons/whip.ogg', 100)
else
message = (user == target) ? pick("whips [target.p_them()]self with [src]",
@@ -280,7 +280,7 @@
target.do_jitter_animation()
target.adjust_pain(4)
carbon_target?.adjust_arousal(5)
play_lewd_sound(loc, 'sound/weapons/whip.ogg', 60)
conditional_pref_sound(loc, 'sound/weapons/whip.ogg', 60)
user.visible_message(span_purple("[user] [message]!"))
@@ -187,7 +187,7 @@
target.try_lewd_autoemote(pick("twitch_s", "moan"))
user.visible_message(span_purple("[user] [message]!"))
play_lewd_sound(loc, 'modular_skyrat/modules/modular_items/lewd_items/sounds/vibrate.ogg', (vibration_mode == MAGIC_WAND_MODE_LOW ? 10 : (vibration_mode == MAGIC_WAND_MODE_HIGH ? 30 : 20)), TRUE, pref_to_check = /datum/preference/toggle/erp/sex_toy_sounds)
conditional_pref_sound(loc, 'modular_skyrat/modules/modular_items/lewd_items/sounds/vibrate.ogg', (vibration_mode == MAGIC_WAND_MODE_LOW ? 10 : (vibration_mode == MAGIC_WAND_MODE_HIGH ? 30 : 20)), TRUE, pref_to_check = /datum/preference/toggle/erp/sex_toy_sounds)
/obj/item/clothing/sextoy/magic_wand/attack_self(mob/user)
toggle_mode()
@@ -208,7 +208,7 @@
/// Toggle between toy modes in a specific order
/obj/item/clothing/sextoy/magic_wand/proc/toggle_mode()
if(vibration_mode != "high")
play_lewd_sound(loc, 'sound/weapons/magin.ogg', 20, TRUE)
conditional_pref_sound(loc, 'sound/weapons/magin.ogg', 20, TRUE)
switch(vibration_mode)
if("off")
@@ -226,7 +226,7 @@
vibration_mode = MAGIC_WAND_MODE_HIGH
if("high")
play_lewd_sound(loc, 'sound/weapons/magout.ogg', 20, TRUE)
conditional_pref_sound(loc, 'sound/weapons/magout.ogg', 20, TRUE)
soundloop3.stop()
vibration_mode = MAGIC_WAND_MODE_OFF
@@ -317,15 +317,15 @@
switch(tightness)
if(ROPE_TIGHTNESS_HIGH)
tightness = ROPE_TIGHTNESS_LOW
play_lewd_sound(loc, 'modular_skyrat/modules/modular_items/lewd_items/sounds/latex.ogg', 25)
conditional_pref_sound(loc, 'modular_skyrat/modules/modular_items/lewd_items/sounds/latex.ogg', 25)
balloon_alert(user, span_notice("You slightly tightened the ropes"))
if(ROPE_TIGHTNESS_LOW)
tightness = ROPE_TIGHTNESS_MED
play_lewd_sound(loc, 'modular_skyrat/modules/modular_items/lewd_items/sounds/latex.ogg', 50)
conditional_pref_sound(loc, 'modular_skyrat/modules/modular_items/lewd_items/sounds/latex.ogg', 50)
balloon_alert(user, span_notice("You moderately tightened the ropes"))
if(ROPE_TIGHTNESS_MED)
tightness = ROPE_TIGHTNESS_HIGH
play_lewd_sound(loc, 'modular_skyrat/modules/modular_items/lewd_items/sounds/latex.ogg', 75)
conditional_pref_sound(loc, 'modular_skyrat/modules/modular_items/lewd_items/sounds/latex.ogg', 75)
balloon_alert(user, span_notice("You strongly tightened the ropes"))
#undef ROPE_TIGHTNESS_LOW
@@ -84,7 +84,7 @@
"spanks [target] with [src], making a loud slapping noise",
"slaps [target]'s thighs with [src]")
user.visible_message(span_purple("[user] [message]!"))
play_lewd_sound(loc, 'modular_skyrat/modules/modular_items/lewd_items/sounds/slap.ogg', 100, 1, -1)
conditional_pref_sound(loc, 'modular_skyrat/modules/modular_items/lewd_items/sounds/slap.ogg', 100, 1, -1)
if(prob(40))
target.try_lewd_autoemote(pick("twitch_s", "moan", "blush", "gasp"))
if(prob(10))
@@ -203,7 +203,7 @@
if(prob(50))
attacked.try_lewd_autoemote(pick("twitch_s" , "gasp", "shiver"))
user.visible_message(span_purple("[user] [message]!"))
play_lewd_sound(loc, pick('modular_skyrat/modules/modular_items/lewd_items/sounds/vax1.ogg',
conditional_pref_sound(loc, pick('modular_skyrat/modules/modular_items/lewd_items/sounds/vax1.ogg',
'modular_skyrat/modules/modular_items/lewd_items/sounds/vax2.ogg'), 70, TRUE)
#undef CANDLE_LUMINOSITY
@@ -187,7 +187,7 @@
else
return
user.visible_message(span_purple("[user] [message]!"))
play_lewd_sound(loc, 'modular_skyrat/modules/modular_items/lewd_items/sounds/vibrate.ogg', 10, TRUE)
conditional_pref_sound(loc, 'modular_skyrat/modules/modular_items/lewd_items/sounds/vibrate.ogg', 10, TRUE)
/obj/item/clothing/sextoy/vibrator/attack_self(mob/user, obj/item/attack_item)
toggle_mode()
@@ -208,22 +208,22 @@
if(VIB_OFF)
vibration_mode = VIB_LOW
toy_on = TRUE
play_lewd_sound(loc, 'sound/weapons/magin.ogg', 20, TRUE)
conditional_pref_sound(loc, 'sound/weapons/magin.ogg', 20, TRUE)
soundloop1.start()
if(VIB_LOW)
vibration_mode = VIB_MEDIUM
play_lewd_sound(loc, 'sound/weapons/magin.ogg', 20, TRUE)
conditional_pref_sound(loc, 'sound/weapons/magin.ogg', 20, TRUE)
soundloop1.stop()
soundloop2.start()
if(VIB_MEDIUM)
vibration_mode = VIB_HIGH
play_lewd_sound(loc, 'sound/weapons/magin.ogg', 20, TRUE)
conditional_pref_sound(loc, 'sound/weapons/magin.ogg', 20, TRUE)
soundloop2.stop()
soundloop3.start()
if(VIB_HIGH)
vibration_mode = VIB_OFF
toy_on = FALSE
play_lewd_sound(loc, 'sound/weapons/magout.ogg', 20, TRUE)
conditional_pref_sound(loc, 'sound/weapons/magout.ogg', 20, TRUE)
soundloop3.stop()
#undef DEFAULT_AROUSAL_INCREASE
@@ -21,7 +21,7 @@
/obj/item/clothing/sextoy/vibroring/attack_self(mob/user)
toy_on = !toy_on
to_chat(user, span_notice("You turn the vibroring [toy_on ? "on. Brrrr..." : "off."]"))
play_lewd_sound(user, toy_on ? 'sound/weapons/magin.ogg' : 'sound/weapons/magout.ogg', 40, TRUE)
conditional_pref_sound(user, toy_on ? 'sound/weapons/magin.ogg' : 'sound/weapons/magout.ogg', 40, TRUE)
update_icon_state()
update_icon()
switch(toy_on)
@@ -242,7 +242,7 @@
add_fingerprint(user)
update_icon_state()
update_icon()
play_lewd_sound(loc, 'sound/weapons/magin.ogg', 20, TRUE)
conditional_pref_sound(loc, 'sound/weapons/magin.ogg', 20, TRUE)
//Place the mob in the desired position after buckling
/obj/structure/chair/x_stand/post_buckle_mob(mob/living/affected_mob)
@@ -80,7 +80,7 @@
icon_state = "38"
multiple_sprites = AMMO_BOX_PER_BULLET
ammo_band_icon = "+38_ammo_band"
multitype = FALSE
custom_premium_price = 50
w_class = WEIGHT_CLASS_SMALL
@@ -98,3 +98,27 @@
desc = "Designed to quickly reload revolvers."
ammo_type = /obj/item/ammo_casing/c10mm/fire
ammo_band_color = "#c41d1a"
/obj/item/ammo_box/c10mm/speedloader/ap
name = "speed loader (10mm Auto Armor Penetrating)"
desc = "Designed to quickly reload revolvers."
ammo_type = /obj/item/ammo_casing/c10mm/ap
ammo_band_color = "#1ac43f"
/obj/item/ammo_box/c10mm/speedloader/hp
name = "speed loader (10mm Auto Hollow Point)"
desc = "Designed to quickly reload revolvers."
ammo_type = /obj/item/ammo_casing/c10mm/hp
ammo_band_color = "#df00ae"
/obj/item/ammo_box/magazine/firefly
name = "pistol magazine (.117 Incapacitator)"
icon = 'modular_skyrat/modules/modular_weapons/icons/obj/company_and_or_faction_based/nanotrasen_system_inc/ammo.dmi'
multiple_sprites = AMMO_BOX_FULL_EMPTY
icon_state = "firefly"
multitype = FALSE
ammo_type = /obj/item/ammo_casing/shotgun/antitide
max_ammo = 10
caliber = CALIBER_SHOTGUN
@@ -27,6 +27,8 @@
bolt_drop_sound = 'sound/weapons/gun/pistol/slide_drop.ogg'
pin = /obj/item/firing_pin
spawn_magazine_type = /obj/item/ammo_box/magazine/m9mm/rubber
suppressor_x_offset = -2
suppressor_y_offset = -1
/obj/item/gun/ballistic/automatic/pistol/nt_glock/give_manufacturer_examine()
AddElement(/datum/element/manufacturer_examine, COMPANY_NANOTRASEN)
@@ -59,9 +61,43 @@
burst_size = 3
spawn_magazine_type = /obj/item/ammo_box/magazine/m9mm/stendo
/obj/item/gun/ballistic/automatic/pistol/nt_glock/empty
//Magistrate Pistol
/obj/item/storage/toolbox/guncase/skyrat/pistol/trappiste_small_case/firefly
name = "MX-7C Stun Pistol"
weapon_to_spawn = /obj/item/gun/ballistic/automatic/pistol/firefly/empty
/obj/item/storage/toolbox/guncase/skyrat/pistol/trappiste_small_case/firefly/PopulateContents()
new weapon_to_spawn (src)
generate_items_inside(list(
/obj/item/ammo_box/magazine/firefly = 3,
), src)
/obj/item/gun/ballistic/automatic/pistol/firefly
name = "\improper MX-7C 'Firefly'"
desc = "NanoTrasen Experimental Model 7 Compact, A rare pistol chambered in a .117 electrode cartridge. It has has a small magazine capacity."
icon = 'modular_skyrat/modules/modular_weapons/icons/obj/company_and_or_faction_based/nanotrasen_system_inc/pistol.dmi'
icon_state = "firefly"
w_class = WEIGHT_CLASS_NORMAL
spread = 10
fire_sound = 'sound/weapons/gun/pistol/shot_alt.ogg'
rack_sound = 'sound/weapons/gun/pistol/rack.ogg'
lock_back_sound = 'sound/weapons/gun/pistol/slide_lock.ogg'
bolt_drop_sound = 'sound/weapons/gun/pistol/slide_drop.ogg'
pin = /obj/item/firing_pin
spawn_magazine_type = /obj/item/ammo_box/magazine/firefly
accepted_magazine_type = /obj/item/ammo_box/magazine/firefly
can_suppress = FALSE
/obj/item/gun/ballistic/automatic/pistol/firefly/give_manufacturer_examine()
AddElement(/datum/element/manufacturer_examine, COMPANY_NANOTRASEN)
/obj/item/gun/ballistic/automatic/pistol/firefly/empty
spawnwithmagazine = FALSE
// Revolver
/obj/item/gun/ballistic/revolver/nt_revolver
@@ -1,7 +1,7 @@
#define AMMO_MATS_SHOTGUN list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 4) // not quite as thick as a half-sheet
#define AMMO_MATS_SHOTGUN_FLECH list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 2,\
/datum/material/titanium = SMALL_MATERIAL_AMOUNT * 2)
/datum/material/glass = SMALL_MATERIAL_AMOUNT * 2)
#define AMMO_MATS_SHOTGUN_HIVE list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 2,\
/datum/material/silver = SMALL_MATERIAL_AMOUNT * 1)
@@ -86,26 +86,27 @@
AddElement(/datum/element/manufacturer_examine, COMPANY_ROMTECH)
/obj/item/storage/toolbox/guncase/skyrat/m1911_gold
/obj/item/storage/toolbox/guncase/skyrat/pistol/m1911_gold
name = "golden m1911 .460 ceres"
weapon_to_spawn = /obj/item/gun/ballistic/automatic/pistol/m1911/gold
extra_to_spawn = /obj/item/ammo_box/magazine/m45
/obj/item/storage/toolbox/guncase/skyrat/m1911/PopulateContents()
/obj/item/storage/toolbox/guncase/skyrat/pistol/m1911/PopulateContents()
new weapon_to_spawn (src)
generate_items_inside(list(
/obj/item/ammo_box/c45 = 2,
), src)
/obj/item/storage/toolbox/guncase/skyrat/m45a5
/obj/item/storage/toolbox/guncase/skyrat/pistol/m45a5
name = "heavy pistol .460 magnum"
/obj/item/storage/toolbox/guncase/skyrat/m45a5/PopulateContents()
/obj/item/storage/toolbox/guncase/skyrat/pistol/m45a5/PopulateContents()
new /obj/item/gun/ballistic/automatic/pistol/m45a5(src)
new /obj/item/ammo_box/magazine/m45a5(src)
new /obj/item/ammo_box/magazine/m45a5(src)
new /obj/item/ammo_box/magazine/m45a5(src)
new /obj/item/storage/pouch/ammo(src)
/obj/item/gun/ballistic/automatic/pistol/m45a5
name = "M4A5"
@@ -114,7 +115,7 @@
icon_state = "m45a5"
fire_sound = 'modular_skyrat/modules/modular_weapons/sounds/pistol_heavy.ogg'
force = 15
fire_delay = 1.8 SECONDS
fire_delay = 1 SECONDS
special_mags = TRUE
recoil = 3
@@ -143,7 +143,8 @@
burst_size = 2
fire_delay = 2
spread = 5
pin = /obj/item/firing_pin/alert_level
// pin = /obj/item/firing_pin/alert_level this does work but it's a conceptual failure
pin = /obj/item/firing_pin
fire_sound = 'modular_skyrat/modules/modular_weapons/sounds/smg_light.ogg'
accepted_magazine_type = /obj/item/ammo_box/magazine/caflechette
@@ -154,13 +155,15 @@
/// how long does it take to extend/collapse the stock
var/toggle_time = 1 SECONDS
/// what's our spread with our extended stock (mild varedit compatibility I Guess)?
var/unfolded_spread = 5
var/unfolded_spread = 2
/// what's our spread with a folded stock (see above comment)?
var/folded_spread = 20
var/folded_spread = 15
/// Do we have any recoil if it's folded?
var/folded_recoil = 5
var/folded_recoil = 3
///Do we lose any recoil when it's not?
var/unfolded_recoil = 0
///Shuld this gun be one handed anyway?
var/one_handed_always = TRUE
/obj/item/gun/ballistic/automatic/rom_flech/examine(mob/user)
. = ..()
. += span_notice("<b>Alt-click</b> to [folded ? "extend" : "collapse"] the stock.")
@@ -191,10 +194,15 @@
spread = folded_spread
w_class = WEIGHT_CLASS_NORMAL
recoil = folded_recoil
weapon_weight = WEAPON_LIGHT
else
spread = unfolded_spread
w_class = WEIGHT_CLASS_BULKY
recoil = unfolded_recoil
if(one_handed_always)
weapon_weight = WEAPON_LIGHT
else
weapon_weight = WEAPON_HEAVY
update_icon()
/obj/item/gun/ballistic/automatic/rom_flech/update_overlays()
@@ -207,11 +215,11 @@
/obj/item/gun/ballistic/automatic/rom_flech/empty
spawnwithmagazine = FALSE
/obj/item/storage/toolbox/guncase/skyrat/rom_flech
/obj/item/storage/toolbox/guncase/skyrat/pistol/rom_flech
name = "CMG-1 Rifle Case"
weapon_to_spawn = /obj/item/gun/ballistic/automatic/rom_flech/empty
/obj/item/storage/toolbox/guncase/skyrat/rom_flech/PopulateContents()
/obj/item/storage/toolbox/guncase/skyrat/pistol/rom_flech/PopulateContents()
new weapon_to_spawn (src)
generate_items_inside(list(
@@ -228,25 +236,25 @@
lefthand_file = 'modular_skyrat/modules/modular_weapons/icons/mob/company_and_or_faction_based/carwo_defense_systems/guns_lefthand.dmi'
righthand_file = 'modular_skyrat/modules/modular_weapons/icons/mob/company_and_or_faction_based/carwo_defense_systems/guns_righthand.dmi'
inhand_icon_state = "infanterie_evil"
bolt_type = BOLT_TYPE_LOCKING
w_class = WEIGHT_CLASS_BULKY
weapon_weight = WEAPON_LIGHT
burst_size = 3
spread = 0
pin = /obj/item/firing_pin
unfolded_spread = 0
folded_spread = 7
folded_recoil = 2
unfolded_recoil = 0
one_handed_always = 1
/obj/item/gun/ballistic/automatic/rom_flech/blueshield/empty
spawnwithmagazine = FALSE
/obj/item/storage/toolbox/guncase/skyrat/blueshield_cmg
/obj/item/storage/toolbox/guncase/skyrat/pistol/blueshield_cmg
name = "CMG-2C Rifle Case"
weapon_to_spawn = /obj/item/gun/ballistic/automatic/rom_flech/blueshield/empty
/obj/item/storage/toolbox/guncase/skyrat/blueshield_cmg/PopulateContents()
/obj/item/storage/toolbox/guncase/skyrat/pistol/blueshield_cmg/PopulateContents()
new weapon_to_spawn (src)
generate_items_inside(list(
Binary file not shown.

After

Width:  |  Height:  |  Size: 427 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 1.3 KiB

@@ -54,7 +54,6 @@
head = /obj/item/clothing/head/nanotrasen_consultant
backpack_contents = list(
/obj/item/melee/baton/telescopic = 1,
/obj/item/choice_beacon/ntc = 1,
/obj/item/gun/energy/e_gun/mini = 1,
)
@@ -152,4 +151,4 @@
new /obj/item/storage/photo_album/personal(src)
new /obj/item/bedsheet/centcom(src)
new /obj/item/storage/bag/garment/nanotrasen_consultant(src)
new /obj/item/choice_beacon/station_magistrate(src)
new /obj/item/storage/toolbox/guncase/skyrat/pistol/trappiste_small_case/firefly(src)
@@ -79,8 +79,8 @@
return ITEM_INTERACT_SUCCESS
/obj/structure/reagent_anvil/hammer_act(mob/living/user, obj/item/tool)
//regardless, we will make a sound
playsound(src, 'modular_skyrat/modules/reagent_forging/sound/forge.ogg', 50, TRUE, ignore_walls = FALSE)
//regardless, we will make a sound (if the user has the pref enabled)
conditional_pref_sound(src, 'modular_skyrat/modules/reagent_forging/sound/forge.ogg', 50, TRUE, pref_to_check = /datum/preference/toggle/sound_ambience)
//do we have an incomplete item to hammer out? if so, here is our block of code
var/obj/item/forging/incomplete/locate_incomplete = locate() in contents
@@ -82,6 +82,7 @@
)
crate_name = "Carwo 'Renoster' Shotgun Crate"
/datum/supply_pack/security/armory/sindano
name = "Carwo 'Sindano' Submachinegun Crate"
desc = "Three entirely proprietary Sindano kits, chambered in .35 Sol Short. Each kit contains three empty magazines and a box each of incapacitator and lethal rounds."
@@ -118,8 +119,8 @@
desc = "Two CMG-1, chambered in experimental steel flechette."
cost = CARGO_CRATE_VALUE * 20
contains = list(
/obj/item/storage/toolbox/guncase/skyrat/rom_flech,
/obj/item/storage/toolbox/guncase/skyrat/rom_flech,
/obj/item/storage/toolbox/guncase/skyrat/pistol/rom_flech,
/obj/item/storage/toolbox/guncase/skyrat/pistol/rom_flech,
)
crate_name = "RomTech CMG-1 Crate"
@@ -45,7 +45,7 @@
var/static/list/selectable_gun_types = list(
"Energy Revolver" = /obj/item/gun/energy/e_gun/blueshield,
".457 Romulus Revolver" = /obj/item/storage/toolbox/guncase/skyrat/hos_revolver,
".460 Rowland Magnum Pistol" = /obj/item/storage/toolbox/guncase/skyrat/m45a5
".460 Rowland Magnum Pistol" = /obj/item/storage/toolbox/guncase/skyrat/pistol/m45a5
)
return selectable_gun_types
@@ -21,7 +21,7 @@
/datum/supply_pack/goody/m1911
name = "Authentic SR Sector M1911"
desc = "Old but gold, the classic pistol from the golden age of SR, whatever that place is. The M1911 chambered in .460 Ceres. It is sure to give anyone daring to fight you, a second thought. Note that this is a reproduction model by Romulus Federation and may be commonly found in the hand of a Kayit"
contains = list(/obj/item/storage/toolbox/guncase/skyrat/m1911_gold = 1,
contains = list(/obj/item/storage/toolbox/guncase/skyrat/pistol/m1911_gold = 1,
)
cost = PAYCHECK_COMMAND * 25 //The pistol is more expensive than rifle because of portability. Not Lethality
access_view = ACCESS_WEAPONS
@@ -36,4 +36,16 @@
/datum/supply_pack/goody/nt_shotgun
name = "NanoTrasen Woodstock Shotgun"
desc = "A classic Shotgun used by hunters, police and frontiersmen alike, now at an affordable price."
cost = PAYCHECK_COMMAND * 20
contains = list(/obj/item/gun/ballistic/shotgun/riot, /obj/item/storage/pouch/ammo, /obj/item/storage/belt/bandolier, /obj/item/ammo_box/advanced/s12gauge/hunter)
/datum/supply_pack/goody/rensoter_shotgun
name = "Renoster Shotgun Single-Pack"
desc = "A common modern shotgun used by Solarian State Police."
contains = list(/obj/item/gun/ballistic/shotgun/riot/sol, /obj/item/storage/pouch/ammo, /obj/item/storage/belt/bandolier, /obj/item/ammo_box/advanced/s12gauge/rubber)
cost = PAYCHECK_COMMAND * 22
/datum/supply_pack/goody/double_barrel
name = "Double-barreled Shotgun Single-Pack"
desc = "Lost your beloved bunny to a demonic invasion? Clown broke in and stole your beloved gun? No worries! Get a new gun as long as you can pay the absurd fees."
cost = PAYCHECK_COMMAND * 14 //This is outclassed by peacekeeper combat shotgun
@@ -68,18 +68,21 @@
design_ids += "m9mm_mag_ihdf"
design_ids += "ca_flechballpoint"
design_ids += "m9mm_mag"
design_ids += "c10mm_rincin"
design_ids += "s12g_antitide"
. = ..()
/datum/techweb_node/exotic_ammo/New()
design_ids += "s12g_incinslug"
design_ids += "ca_flechripper"
design_ids += "sol_bolt_to_rifle"
design_ids += "c10mm_rhp"
design_ids += "c10mm_rap"
. = ..()
/datum/techweb_node/syndicate_basic/New()
design_ids += "s12g_magnum"
design_ids += "s12g_express"
design_ids += "s12g_antitide"
design_ids += "s12g_ion"
. = ..()
@@ -433,6 +433,42 @@
)
departmental_flags = DEPARTMENT_BITFLAG_SECURITY
/datum/design/c10mm_rincin
name = "10mm Auto Speedloader Fireshot (Lethal)"
desc = "A speedloader in 10mm Auto."
id = "c10mm_rincin"
build_type = PROTOLATHE | AWAY_LATHE
materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 5, /datum/material/plasma = SHEET_MATERIAL_AMOUNT * 15)
build_path = /obj/item/ammo_box/c10mm/speedloader/fire
category = list(
RND_CATEGORY_WEAPONS + RND_SUBCATEGORY_WEAPONS_AMMO
)
departmental_flags = DEPARTMENT_BITFLAG_SECURITY
/datum/design/c10mm_rhp
name = "10mm Auto Speedloader Hollow Point (Very Lethal)"
desc = "A speedloader in 10mm Auto."
id = "c10mm_rhp"
build_type = PROTOLATHE | AWAY_LATHE
materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 5, /datum/material/titanium = SHEET_MATERIAL_AMOUNT * 15)
build_path = /obj/item/ammo_box/c10mm/speedloader/hp
category = list(
RND_CATEGORY_WEAPONS + RND_SUBCATEGORY_WEAPONS_AMMO
)
departmental_flags = DEPARTMENT_BITFLAG_SECURITY
/datum/design/c10mm_rap
name = "10mm Auto Speedloader Armor Piercing (Very Lethal)"
desc = "A speedloader in 10mm Auto."
id = "c10mm_rap"
build_type = PROTOLATHE | AWAY_LATHE
materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 5, /datum/material/silver = SHEET_MATERIAL_AMOUNT * 15)
build_path = /obj/item/ammo_box/c10mm/speedloader/ap
category = list(
RND_CATEGORY_WEAPONS + RND_SUBCATEGORY_WEAPONS_AMMO
)
departmental_flags = DEPARTMENT_BITFLAG_SECURITY
//IDMA Gun Stuff
/datum/design/caflechette
name = "Flechette Rifle Magazine (lethal)"
@@ -231,22 +231,22 @@
icon = 'modular_skyrat/modules/shotgunrebalance/icons/projectiles.dmi'
icon_state = "stardust"
damage = 15
stamina = 10
stamina = 33
damage_falloff_tile = 0.2
stamina_falloff_tile = 0.3
wound_bonus = 15
bare_wound_bonus = 15
wound_bonus = 40
bare_wound_bonus = 40
stutter = 3 SECONDS
jitter = 5 SECONDS
eyeblur = 1 SECONDS
sharpness = NONE
range = 12
embed_type = /datum/embed_data/shotgun_buckshot/antitide
reflectable = FALSE
reflectable = NONE
/datum/embed_data/shotgun_buckshot/antitide
embed_chance = 200
pain_chance = 90
pain_chance = 95
fall_chance = 10
jostle_chance = 10
ignore_throwspeed_threshold = TRUE
@@ -269,18 +269,17 @@
damage = 15 //I'd kill you if you manage to kill someone with this shit
wound_bonus = 30
bare_wound_bonus = 30
demolition_mod = 5
demolition_mod = 2
/obj/projectile/bullet/frangible_slug/on_hit(atom/target, blocked = 0, pierce_hit)
. = ..()
if(istype(target, /obj/structure/window) || istype(target, /obj/machinery/door/airlock))
if(istype(target, /obj/structure/window) || istype(target, /obj/machinery/door/airlock) || istype(target, /obj/structure/grille) || istype(target,/obj/structure/door_assembly))
if(isobj(target))
demolition_mod = 50
damage = 30
else
demolition_mod = 5
demolition_mod = 2
damage = 15
return ..()
/obj/item/ammo_casing/shotgun/hunter
name = "hunter slug shell"
@@ -40,6 +40,11 @@
#define CLOAK_COLORPIXEL_X_2 12
#define CLOAK_COLORPIXEL_Y_2 22
#define MANTLE_COLORPIXEL_X_1 10
#define MANTLE_COLORPIXEL_Y_1 20
#define MANTLE_COLORPIXEL_X_2 15
#define MANTLE_COLORPIXEL_Y_2 20
#define UNDER_COLORPIXEL_X_1 15
#define UNDER_COLORPIXEL_Y_1 17
#define UNDER_COLORPIXEL_X_2 10
@@ -47,26 +52,28 @@
#define UNDER_COLORPIXEL_X_3 15
#define UNDER_COLORPIXEL_Y_3 10
#define THICKROBE_COLORPIXEL_X_1 16
#define THICKROBE_COLORPIXEL_Y_1 9
#define WIZARDROBE_COLORPIXEL_X_1 16
#define WIZARDROBE_COLORPIXEL_Y_1 9
#define JACKET_COLORPIXEL_X_1 14
#define JACKET_COLORPIXEL_Y_1 20
#define JACKET_COLORPIXEL_Y_1 16
#define LONGCOAT_COLORPIXEL_X_1 13
#define LONGCOAT_COLORPIXEL_Y_1 20
#define THICKROBE_COLORPIXEL_X_1 16
#define THICKROBE_COLORPIXEL_Y_1 9
#define THICKROBE_COLORPIXEL_X_2 14
#define THICKROBE_COLORPIXEL_Y_2 19
#define JACKET_COLORPIXEL_X_2 14
#define JACKET_COLORPIXEL_Y_2 21
#define WIZARDROBE_COLORPIXEL_X_2 14
#define WIZARDROBE_COLORPIXEL_Y_2 19
#define THICKROBE_COLORPIXEL_X_3 13
#define THICKROBE_COLORPIXEL_Y_3 19
#define THICKROBE_COLORPIXEL_X_4 24
#define THICKROBE_COLORPIXEL_X_4 8
#define THICKROBE_COLORPIXEL_Y_4 16
#define LONGCOAT_COLORPIXEL_X_4 19
#define LONGCOAT_COLORPIXEL_Y_4 17
#define JACKET_COLORPIXEL_X_4 10
#define JACKET_COLORPIXEL_Y_4 17
#define JACKET_COLORPIXEL_X_4 9
#define JACKET_COLORPIXEL_Y_4 15
#define THICKROBE_COLORPIXEL_X_5 16
#define THICKROBE_COLORPIXEL_Y_5 12
#define WIZARDROBE_COLORPIXEL_X_5 16
@@ -17,6 +17,10 @@
/obj/item/clothing/neck/cloak
species_clothing_color_coords = list(list(CLOAK_COLORPIXEL_X_1, CLOAK_COLORPIXEL_Y_1), list(CLOAK_COLORPIXEL_X_2, CLOAK_COLORPIXEL_Y_2))
greyscale_config_worn_teshari_fallback = /datum/greyscale_config/teshari/cloak
/obj/item/clothing/neck/mantle
species_clothing_color_coords = list(list(MANTLE_COLORPIXEL_X_1, MANTLE_COLORPIXEL_Y_1), list(MANTLE_COLORPIXEL_X_2, MANTLE_COLORPIXEL_Y_2))
greyscale_config_worn_teshari_fallback = /datum/greyscale_config/teshari/mantle
/obj/item/clothing/neck/tie
species_clothing_color_coords = list(list(TIE_COLORPIXEL_X_1, TIE_COLORPIXEL_Y_1))
@@ -38,8 +42,8 @@
species_clothing_color_coords = list(list(LONGCOAT_COLORPIXEL_X_1, LONGCOAT_COLORPIXEL_Y_1), list(THICKROBE_COLORPIXEL_X_2, THICKROBE_COLORPIXEL_Y_2), list(THICKROBE_COLORPIXEL_X_3, THICKROBE_COLORPIXEL_Y_3), list(LONGCOAT_COLORPIXEL_X_4, LONGCOAT_COLORPIXEL_Y_4))
greyscale_config_worn_teshari_fallback = /datum/greyscale_config/teshari/thickrobe/longcoat
/obj/item/clothing/suit/jacket/leather
species_clothing_color_coords = list(list(JACKET_COLORPIXEL_X_1, JACKET_COLORPIXEL_Y_1), list(THICKROBE_COLORPIXEL_X_2, THICKROBE_COLORPIXEL_Y_2), list(THICKROBE_COLORPIXEL_X_3, THICKROBE_COLORPIXEL_Y_3), list(JACKET_COLORPIXEL_X_4, JACKET_COLORPIXEL_Y_4))
/obj/item/clothing/suit/jacket
species_clothing_color_coords = list(list(JACKET_COLORPIXEL_X_1, JACKET_COLORPIXEL_Y_1), list(JACKET_COLORPIXEL_X_2, JACKET_COLORPIXEL_Y_2), list(THICKROBE_COLORPIXEL_X_3, THICKROBE_COLORPIXEL_Y_3), list(JACKET_COLORPIXEL_X_4, JACKET_COLORPIXEL_Y_4))
greyscale_config_worn_teshari_fallback = /datum/greyscale_config/teshari/thickrobe/jacket
/obj/item/clothing/suit/armor
@@ -173,3 +177,12 @@
/obj/item/clothing/suit/toggle/suspenders
greyscale_config_worn_teshari = /datum/greyscale_config/suspenders/worn/teshari
// Unique clothing here
/obj/item/clothing/suit/kimjacket
species_clothing_color_coords = list(list(JACKET_COLORPIXEL_X_1, JACKET_COLORPIXEL_Y_1), list(JACKET_COLORPIXEL_X_2, JACKET_COLORPIXEL_Y_2), list(THICKROBE_COLORPIXEL_X_3, THICKROBE_COLORPIXEL_Y_3), list(JACKET_COLORPIXEL_X_4, JACKET_COLORPIXEL_Y_4))
greyscale_config_worn_teshari_fallback = /datum/greyscale_config/teshari/thickrobe/jacket
/obj/item/clothing/suit/discoblazer
species_clothing_color_coords = list(list(JACKET_COLORPIXEL_X_1, JACKET_COLORPIXEL_Y_1), list(JACKET_COLORPIXEL_X_2, JACKET_COLORPIXEL_Y_2), list(THICKROBE_COLORPIXEL_X_3, THICKROBE_COLORPIXEL_Y_3), list(JACKET_COLORPIXEL_X_4, JACKET_COLORPIXEL_Y_4))
greyscale_config_worn_teshari_fallback = /datum/greyscale_config/teshari/thickrobe/jacket
+4
View File
@@ -64,3 +64,7 @@ toolbox_open.ogg - made by sadboysuss
toolbox_rustle.ogg - made by sadboysuss
medkit_rustle.ogg - made by sadboysuss
} - license: CC-by-SA
lead_pipe_hit.ogg - jixaw-metal-pipe-falling-sound.mp3 by thenotcheeseman -- https://freesound.org/s/679206/ -- License: Creative Commons 0
lead_pipe_drop.ogg - jixaw-metal-pipe-falling-sound.mp3 by thenotcheeseman -- https://freesound.org/s/679206/ -- License: Creative Commons 0
lead_pipe_pickup.ogg - Metal pipe hitting the ground.flac by CGEffex -- https://freesound.org/s/93962/ -- License: Attribution 4.0
Binary file not shown.
Binary file not shown.

Some files were not shown because too many files have changed in this diff Show More