Merge remote-tracking branch 'upstream/master' into upstream-sync
@@ -233,8 +233,8 @@
|
||||
"iq" = (
|
||||
/obj/structure/table/reinforced,
|
||||
/obj/machinery/fax{
|
||||
fax_name = "NRI Ship";
|
||||
name = "NRI ship fax machine"
|
||||
fax_name = "PSC Ship";
|
||||
name = "PSC ship fax machine"
|
||||
},
|
||||
/obj/item/paper/fluff/nri_police,
|
||||
/turf/open/floor/pod,
|
||||
|
||||
@@ -119,7 +119,7 @@ SUBSYSTEM_DEF(weather)
|
||||
var/datum/weather/A
|
||||
for(var/V in processing)
|
||||
var/datum/weather/W = V
|
||||
if((z in W.impacted_z_levels) && W.area_type == active_area.type)
|
||||
if((z in W.impacted_z_levels) && istype(active_area, W.area_type)) // BUBBER EDIT: This proc was broken, fixed to now use istype.
|
||||
A = W
|
||||
break
|
||||
return A
|
||||
|
||||
@@ -271,7 +271,7 @@
|
||||
var/immediately_stun = should_stun && !(flags & SHOCK_DELAY_STUN)
|
||||
if (immediately_stun)
|
||||
if (paralyze)
|
||||
StaminaKnockdown(stun_duration / 4) // SKYRAT EDIT CHANGE - ORIGINAL: Paralyze(40)
|
||||
Paralyze(stun_duration)
|
||||
else
|
||||
Knockdown(stun_duration)
|
||||
//Jitter and other fluff.
|
||||
@@ -285,7 +285,7 @@
|
||||
///Called slightly after electrocute act to apply a secondary stun.
|
||||
/mob/living/carbon/proc/secondary_shock(paralyze, stun_duration)
|
||||
if (paralyze)
|
||||
StaminaKnockdown(stun_duration / 6) // SKYRAT EDIT CHANGE - ORIGINAL: Paralyze(60)
|
||||
Paralyze(stun_duration)
|
||||
else
|
||||
Knockdown(stun_duration)
|
||||
|
||||
|
||||
@@ -641,3 +641,16 @@
|
||||
RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_SERVICE,
|
||||
)
|
||||
departmental_flags = DEPARTMENT_BITFLAG_SERVICE
|
||||
|
||||
// BUBBER EDIT: Adds Umbrellas
|
||||
/datum/design/umbrella
|
||||
name = "Collapsable Umbrella"
|
||||
id = "collapsable_umbrella"
|
||||
build_type = PROTOLATHE | AUTOLATHE
|
||||
materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 0.75, /datum/material/plastic = SMALL_MATERIAL_AMOUNT * 0.25)
|
||||
build_path = /obj/item/umbrella/collapsible
|
||||
category = list(
|
||||
RND_CATEGORY_INITIAL,
|
||||
RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_SERVICE,
|
||||
)
|
||||
departmental_flags = DEPARTMENT_BITFLAG_SERVICE
|
||||
|
||||
@@ -37,6 +37,7 @@
|
||||
"ticket_machine",
|
||||
"radio_entertainment",
|
||||
"photocopier",
|
||||
"collapsable_umbrella",
|
||||
)
|
||||
|
||||
/datum/techweb_node/sanitation
|
||||
|
||||
@@ -0,0 +1,4 @@
|
||||
author: "Alecksohs"
|
||||
delete-after: True
|
||||
changes:
|
||||
- rscadd: "Added umbrellas for Rimpoint at Autolathes and Service Protolathes which block rain reagants."
|
||||
@@ -0,0 +1,4 @@
|
||||
author: "ArrisFairburne"
|
||||
delete-after: True
|
||||
changes:
|
||||
- rscadd: "The sex holobarrier is now loadout-available"
|
||||
@@ -0,0 +1,4 @@
|
||||
author: "theselfish"
|
||||
delete-after: True
|
||||
changes:
|
||||
- rscadd: "Finally, cats can have four sets of ears with a brand new hoodie. (Also comes in earless variety)"
|
||||
@@ -0,0 +1,5 @@
|
||||
author: "Redrover1760"
|
||||
delete-after: True
|
||||
changes:
|
||||
- balance: "Shocked airlocks and grilles now stun you instead of just a knockdown and mild stamina damage."
|
||||
- bugfix: "Fixed repeatedly shocking yourself to crit on airlocks and grilles due to not being stunned by airlocks/grilles. Should be less directly deadly now if you don't react to stop yourself."
|
||||
@@ -0,0 +1,4 @@
|
||||
author: "BasilTamaya"
|
||||
delete-after: True
|
||||
changes:
|
||||
- qol: "Racks now have a precise placement (left click) vs center placement (right click) mechanic, making shelfs and racks fancier."
|
||||
@@ -0,0 +1,5 @@
|
||||
author: "ElisavetPinko"
|
||||
delete-after: True
|
||||
changes:
|
||||
- bugfix: "Fixed couple names related to the PSC."
|
||||
- rscadd: "Teshari can now interact with the \"Police\" pirates by joining."
|
||||
@@ -0,0 +1,4 @@
|
||||
author: "theselfish"
|
||||
delete-after: True
|
||||
changes:
|
||||
- bugfix: "Entertainer related Pets no longer speak what they see. Or something. I dunno. $4 a pound."
|
||||
|
Before Width: | Height: | Size: 18 KiB After Width: | Height: | Size: 19 KiB |
|
Before Width: | Height: | Size: 27 KiB After Width: | Height: | Size: 28 KiB |
@@ -48,8 +48,9 @@
|
||||
"honk!",
|
||||
"mrow!",
|
||||
"henk!",
|
||||
emote_see = list("plays tricks.", "slips.", "honks a tiny horn.")
|
||||
)
|
||||
emote_see = list("plays tricks.", "slips.", "honks a tiny horn.")
|
||||
|
||||
|
||||
/mob/living/basic/pet/cat/mime
|
||||
name = "mime cat"
|
||||
@@ -81,8 +82,9 @@
|
||||
speak = list(
|
||||
"...",
|
||||
"....",
|
||||
emote_see = list("cowers in fear.", "surrenders.", "plays dead.","looks as though there is a tiny cat shaped wall in front of them.")
|
||||
)
|
||||
emote_see = list("cowers in fear.", "surrenders.", "plays dead.","looks as though there is a tiny cat shaped wall in front of them.")
|
||||
|
||||
|
||||
/mob/living/basic/pet/cat/tiger
|
||||
name = "tiger cat"
|
||||
|
||||
@@ -670,6 +670,43 @@
|
||||
name = "Branded Hoodie Worn"
|
||||
json_config = 'modular_skyrat/modules/GAGS/json_configs/hoodie/hoodie_branded_worn.json'
|
||||
|
||||
|
||||
//Doppler Hoodies.
|
||||
/datum/greyscale_config/big_hoodie
|
||||
name = "Big Hoodie"
|
||||
icon_file = 'modular_skyrat/modules/GAGS/icons/suit/dopplerhoodieobj.dmi'
|
||||
json_config = 'modular_skyrat/modules/GAGS/json_configs/suits/hoodies/big_hoodie.json'
|
||||
|
||||
/datum/greyscale_config/big_hoodie/worn
|
||||
name = "Big Hoodie (Worn)"
|
||||
icon_file = 'modular_skyrat/modules/GAGS/icons/suit/dopplerhoodie.dmi'
|
||||
|
||||
/datum/greyscale_config/big_hoodie_hood
|
||||
name = "Big Hoodie Hood"
|
||||
icon_file = 'modular_skyrat/modules/GAGS/icons/suit/dopplerhoodie.dmi'
|
||||
json_config = 'modular_skyrat/modules/GAGS/json_configs/suits/hoodies/big_hoodie_hood.json'
|
||||
|
||||
/datum/greyscale_config/big_hoodie_hood/worn
|
||||
name = "Big Hoodie Hood (Worn)"
|
||||
|
||||
/datum/greyscale_config/twee_hoodie
|
||||
name = "Twee Hoodie"
|
||||
icon_file = 'modular_skyrat/modules/GAGS/icons/suit/dopplerhoodieobj.dmi'
|
||||
json_config = 'modular_skyrat/modules/GAGS/json_configs/suits/hoodies/twee_hoodie.json'
|
||||
|
||||
/datum/greyscale_config/twee_hoodie/worn
|
||||
name = "Twee Hoodie (Worn)"
|
||||
icon_file = 'modular_skyrat/modules/GAGS/icons/suit/dopplerhoodie.dmi'
|
||||
|
||||
/datum/greyscale_config/twee_hoodie_hood
|
||||
name = "Twee Hoodie Hood"
|
||||
icon_file = 'modular_skyrat/modules/GAGS/icons/suit/dopplerhoodie.dmi'
|
||||
json_config = 'modular_skyrat/modules/GAGS/json_configs/suits/hoodies/twee_hoodie_hood.json'
|
||||
|
||||
/datum/greyscale_config/twee_hoodie_hood/worn
|
||||
name = "Twee Hoodie Hood (Worn)"
|
||||
|
||||
|
||||
// CARDIGAN
|
||||
|
||||
/datum/greyscale_config/cardigan
|
||||
|
||||
|
After Width: | Height: | Size: 1.5 KiB |
|
After Width: | Height: | Size: 534 B |
@@ -0,0 +1,18 @@
|
||||
{
|
||||
"big_hoodie": [
|
||||
{
|
||||
"type": "icon_state",
|
||||
"icon_state": "big_hoodie",
|
||||
"blend_mode": "overlay",
|
||||
"color_ids": [ 1 ]
|
||||
}
|
||||
],
|
||||
"big_hoodie_t": [
|
||||
{
|
||||
"type": "icon_state",
|
||||
"icon_state": "big_hoodie_t",
|
||||
"blend_mode": "overlay",
|
||||
"color_ids": [ 1 ]
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
{
|
||||
"big_hoodie_hood": [
|
||||
{
|
||||
"type": "icon_state",
|
||||
"icon_state": "big_hoodie_hood",
|
||||
"blend_mode": "overlay",
|
||||
"color_ids": [ 1 ]
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
{
|
||||
"twee_hoodie": [
|
||||
{
|
||||
"type": "icon_state",
|
||||
"icon_state": "twee_hoodie",
|
||||
"blend_mode": "overlay",
|
||||
"color_ids": [ 1 ]
|
||||
}
|
||||
],
|
||||
"twee_hoodie_t": [
|
||||
{
|
||||
"type": "icon_state",
|
||||
"icon_state": "twee_hoodie_t",
|
||||
"blend_mode": "overlay",
|
||||
"color_ids": [ 1 ]
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
{
|
||||
"twee_hoodie_hood": [
|
||||
{
|
||||
"type": "icon_state",
|
||||
"icon_state": "twee_hoodie_hood",
|
||||
"blend_mode": "overlay",
|
||||
"color_ids": [ 1 ]
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -7,6 +7,44 @@
|
||||
icon = 'modular_skyrat/modules/aesthetics/rack/icons/rack.dmi'
|
||||
icon_state = "shelf"
|
||||
|
||||
/obj/structure/rack/Initialize(mapload)
|
||||
. = ..()
|
||||
|
||||
/obj/structure/rack/add_context(atom/source, list/context, obj/item/held_item, mob/living/user)
|
||||
. = ..()
|
||||
if(isnull(held_item))
|
||||
return .
|
||||
|
||||
// Add tooltips if the item is not a wrench (wrenches handled by parent)
|
||||
if(held_item.tool_behaviour != TOOL_WRENCH)
|
||||
context[SCREENTIP_CONTEXT_LMB] = "Precise placement"
|
||||
context[SCREENTIP_CONTEXT_RMB] = "Center item"
|
||||
. |= CONTEXTUAL_SCREENTIP_SET
|
||||
|
||||
return .
|
||||
|
||||
/obj/structure/rack/base_item_interaction(mob/living/user, obj/item/tool, list/modifiers)
|
||||
// Wrench deconstruction
|
||||
if(tool.tool_behaviour == TOOL_WRENCH)
|
||||
return ..()
|
||||
|
||||
// Right click to center item placement
|
||||
if(LAZYACCESS(modifiers, RIGHT_CLICK))
|
||||
if(user.transfer_item_to_turf(tool, get_turf(src), silent = FALSE))
|
||||
return ITEM_INTERACT_SUCCESS
|
||||
return ITEM_INTERACT_BLOCKING
|
||||
|
||||
// Left click for precise placement
|
||||
if(LAZYACCESS(modifiers, ICON_X) && LAZYACCESS(modifiers, ICON_Y))
|
||||
var/x_offset = clamp(text2num(LAZYACCESS(modifiers, ICON_X)) - 16, -(ICON_SIZE_X * 0.5), ICON_SIZE_X * 0.5)
|
||||
var/y_offset = clamp(text2num(LAZYACCESS(modifiers, ICON_Y)) - 16, -(ICON_SIZE_Y * 0.5), ICON_SIZE_Y * 0.5)
|
||||
if(user.transfer_item_to_turf(tool, get_turf(src), x_offset, y_offset, silent = FALSE))
|
||||
return ITEM_INTERACT_SUCCESS
|
||||
return ITEM_INTERACT_BLOCKING
|
||||
|
||||
// Default rack behavior otherwise
|
||||
return ..()
|
||||
|
||||
/obj/item/gun
|
||||
var/on_rack = FALSE
|
||||
|
||||
|
||||
@@ -48,7 +48,7 @@ GLOBAL_VAR(first_officer)
|
||||
threat_content = "Greetings %STATION, this is the %SHIPNAME dispatch outpost. \
|
||||
Due to recent Imperial regulatory violations, such as %RESULT and many other smaller issues, your station has been fined %PAYOFF credits. \
|
||||
Inadequate imperial police activity is currently present in your sector, thus the failure to comply might instead result in a police patrol dispatch \
|
||||
for second attempt negotiations, sector police presence reinforcement and close-up inspections. Novaya Rossiyskaya Imperiya collegial secretary out."
|
||||
for second attempt negotiations, sector police presence reinforcement and close-up inspections. Pan Slavic Commonwealth's collegial secretary out."
|
||||
arrival_announcement = "Regulation-identified vessel approaching. Vessel ID tag is %NUMBER1-%NUMBER2-%NUMBER3. \
|
||||
Vessel Model: Potato Beetle, Flight ETA: three minutes minimal. Vessel is authorised by the international regulations to perform its duties. \
|
||||
We're clear for close orbit. Friendly reminder not to measure the distance between the vessel and the destination location, nor install any tracking devices anywhere on board of the vessel or in its close vicinity, \
|
||||
@@ -187,9 +187,9 @@ GLOBAL_VAR(first_officer)
|
||||
faction = list(FACTION_RAIDER)
|
||||
you_are_text = "You are a Pan-Slavic Commonwealth task force."
|
||||
flavour_text = "The station has refused to pay the fine for breaking Imperial regulations, you are here to recover the debt. Do so by demanding the funds. Force approach is usually recommended, but isn't the only method."
|
||||
important_text = "Allowed races are humans, Akulas, IPCs. Follow your field officer's orders. Important mention - while you are listed as the pirates gamewise, you really aren't lore-and-everything-else-wise. Roleplay accordingly."
|
||||
important_text = "Allowed races are Humans, Akula, Teshari and Synths. Follow your field officer's orders. Important mention - while you are listed as the pirates gamewise, you really aren't lore-and-everything-else-wise. Roleplay accordingly."
|
||||
outfit = /datum/outfit/pirate/nri
|
||||
restricted_species = list(/datum/species/human, /datum/species/akula, /datum/species/synthetic)
|
||||
restricted_species = list(/datum/species/human, /datum/species/akula, /datum/species/synthetic, /datum/species/teshari)
|
||||
random_appearance = FALSE
|
||||
show_flavor = TRUE
|
||||
|
||||
@@ -221,7 +221,7 @@ GLOBAL_VAR(first_officer)
|
||||
mob_name = "Pan-Slavic Commonwealth police patrol's field officer"
|
||||
outfit = /datum/outfit/pirate/nri/officer
|
||||
flavour_text = "The station has refused to pay the fine for breaking Imperial regulations, as a consequence you are here to perform a prolonged inspection."
|
||||
important_text = "Allowed races are humans, Akulas, IPCs. Roleplay accordingly. There is an important document in your pocket I'd advise you to read and keep safe."
|
||||
important_text = "Allowed races are Humans, Akula, Teshari and Synths. Roleplay accordingly. There is an important document in your pocket I'd advise you to read and keep safe."
|
||||
|
||||
/obj/effect/mob_spawn/ghost_role/human/nri_raider/officer/apply_codename(mob/living/carbon/human/spawned_human)
|
||||
var/callsign = pick(GLOB.callsigns_nri)
|
||||
|
||||
@@ -46,7 +46,7 @@
|
||||
missiondesc += "<BR> <B>3.</B> Stabilise the situation."
|
||||
missiondesc += "<BR> <B>4.</B> Contact whoever called you and assist in resolving the matter."
|
||||
missiondesc += "<BR> <B>5.</B> Protect, ensure, and uphold the rights of Pan-Slavic Commonwealth's, Kingdom of Agurkrral's and Free Teshari League's citizens on board [station_name()]. TerraGov citizens' wellbeing is up to your discretion."
|
||||
missiondesc += "<BR> <B>6.</B> Attempt to subvert the station's crew in order to shift the station's territory under control of Novaya Rossiyskaya Imperiya."
|
||||
missiondesc += "<BR> <B>6.</B> Attempt to subvert the station's crew in order to shift the station's territory under control of Pan-Slavic Commonwealth."
|
||||
|
||||
missiondesc += span_warning("<BR><B>Your Mission</B>: [ert_team.mission.explanation_text]")
|
||||
to_chat(owner,missiondesc)
|
||||
|
||||
@@ -30,7 +30,7 @@
|
||||
id_trim = /datum/id_trim/nri
|
||||
|
||||
/datum/outfit/centcom/ert/nri/commander
|
||||
name = "Novaya Rossiyskaya Imperiya Platoon Commander"
|
||||
name = "Pan-Slavic Commonwealth Platoon Commander"
|
||||
head = null
|
||||
glasses = /obj/item/clothing/glasses/thermal/eyepatch
|
||||
uniform = /obj/item/clothing/under/costume/nri/captain
|
||||
|
||||
@@ -531,6 +531,7 @@
|
||||
dog_fashion = null
|
||||
armor_type = /datum/armor/armor_hos
|
||||
strip_delay = 80
|
||||
|
||||
//SERVICE
|
||||
|
||||
/obj/item/clothing/suit/armor/hop_tailcoat
|
||||
@@ -743,3 +744,99 @@
|
||||
worn_icon = 'modular_zubbers/icons/mob/clothing/suits/jacket.dmi'
|
||||
icon_state = "galfed"
|
||||
body_parts_covered = CHEST|ARMS|GROIN
|
||||
|
||||
//Doppler Hoodies, sprites seemingly by kittysmooch of who woulda guessed, Doppler.
|
||||
|
||||
/obj/item/clothing/suit/hooded/big_hoodie
|
||||
name = "oversized hoodie"
|
||||
desc = "Cotton fibres grown in vertical aeroponic farming systems were ringspun and knit into a continuous loop fleece with \
|
||||
a soft pile and little stretch. This fabric was cut oversized with soft sloping shoulders and cuffs that fall right at the first knuckle."
|
||||
icon = 'icons/map_icons/clothing/suit/_suit.dmi'
|
||||
icon_state = "/obj/item/clothing/suit/hooded/big_hoodie"
|
||||
post_init_icon_state = "big_hoodie"
|
||||
greyscale_config = /datum/greyscale_config/big_hoodie
|
||||
greyscale_config_worn = /datum/greyscale_config/big_hoodie/worn
|
||||
greyscale_colors = "#5d6161"
|
||||
hoodtype = /obj/item/clothing/head/hooded/big_hoodie_hood
|
||||
flags_1 = IS_PLAYER_COLORABLE_1
|
||||
body_parts_covered = CHEST|GROIN|ARMS
|
||||
cold_protection = CHEST|GROIN|ARMS
|
||||
min_cold_protection_temperature = FIRE_SUIT_MIN_TEMP_PROTECT
|
||||
|
||||
/obj/item/clothing/head/hooded/big_hoodie_hood
|
||||
name = "oversized hood"
|
||||
desc = "Cotton fibres grown in vertical aeroponic farming systems were ringspun and knit into a continuous loop fleece with \
|
||||
a soft pile and little stretch. The hood was cut comfortably oversized."
|
||||
icon = 'icons/map_icons/clothing/head/_head.dmi'
|
||||
icon_state = "/obj/item/clothing/head/hooded/big_hoodie_hood"
|
||||
post_init_icon_state = "big_hoodie_hood"
|
||||
body_parts_covered = HEAD
|
||||
cold_protection = HEAD
|
||||
flags_inv = HIDEEARS|HIDEHAIR
|
||||
flags_1 = IS_PLAYER_COLORABLE_1
|
||||
hair_mask = /datum/hair_mask/winterhood
|
||||
min_cold_protection_temperature = FIRE_SUIT_MIN_TEMP_PROTECT
|
||||
greyscale_config = /datum/greyscale_config/big_hoodie_hood
|
||||
greyscale_config_worn = /datum/greyscale_config/big_hoodie_hood/worn
|
||||
greyscale_colors = "#5d6161"
|
||||
|
||||
/obj/item/clothing/suit/hooded/big_hoodie/set_greyscale(list/colors, new_config, new_worn_config, new_inhand_left, new_inhand_right)
|
||||
. = ..()
|
||||
if(!hood)
|
||||
return
|
||||
var/list/hoodie_colors = SSgreyscale.ParseColorString(greyscale_colors)
|
||||
var/list/new_hoodie_colors = hoodie_colors.Copy(1)
|
||||
hood.set_greyscale(new_hoodie_colors)
|
||||
hood.update_slot_icon()
|
||||
|
||||
/obj/item/clothing/suit/hooded/big_hoodie/on_hood_created(obj/item/clothing/head/hooded/hood)
|
||||
. = ..()
|
||||
var/list/hoodie_colors = (SSgreyscale.ParseColorString(greyscale_colors))
|
||||
var/list/new_hoodie_colors = hoodie_colors.Copy(1)
|
||||
hood.set_greyscale(new_hoodie_colors)
|
||||
|
||||
/obj/item/clothing/suit/hooded/twee_hoodie
|
||||
name = "disconcertingly twee hoodie"
|
||||
desc = "A sweatshirt of heavy and soft ringspun fleece has been adorned with a fabric simulation of ears."
|
||||
icon = 'icons/map_icons/clothing/suit/_suit.dmi'
|
||||
icon_state = "/obj/item/clothing/suit/hooded/twee_hoodie"
|
||||
post_init_icon_state = "twee_hoodie"
|
||||
greyscale_config = /datum/greyscale_config/twee_hoodie
|
||||
greyscale_config_worn = /datum/greyscale_config/twee_hoodie/worn
|
||||
greyscale_colors = "#dbc0e0"
|
||||
hoodtype = /obj/item/clothing/head/hooded/twee_hoodie_hood
|
||||
flags_1 = IS_PLAYER_COLORABLE_1
|
||||
body_parts_covered = CHEST|GROIN|ARMS
|
||||
cold_protection = CHEST|GROIN|ARMS
|
||||
min_cold_protection_temperature = FIRE_SUIT_MIN_TEMP_PROTECT
|
||||
|
||||
/obj/item/clothing/head/hooded/twee_hoodie_hood
|
||||
name = "disconcertingly twee hood"
|
||||
desc = "A hood of heavy and soft ringspun fleece has been adorned with a fabric simulation of ears."
|
||||
icon = 'icons/map_icons/clothing/head/_head.dmi'
|
||||
icon_state = "/obj/item/clothing/head/hooded/twee_hoodie_hood"
|
||||
post_init_icon_state = "twee_hoodie_hood"
|
||||
body_parts_covered = HEAD
|
||||
cold_protection = HEAD
|
||||
flags_inv = HIDEEARS|HIDEHAIR
|
||||
flags_1 = IS_PLAYER_COLORABLE_1
|
||||
hair_mask = /datum/hair_mask/winterhood
|
||||
min_cold_protection_temperature = FIRE_SUIT_MIN_TEMP_PROTECT
|
||||
greyscale_config = /datum/greyscale_config/twee_hoodie_hood
|
||||
greyscale_config_worn = /datum/greyscale_config/twee_hoodie_hood/worn
|
||||
greyscale_colors = "#dbc0e0"
|
||||
|
||||
/obj/item/clothing/suit/hooded/twee_hoodie/set_greyscale(list/colors, new_config, new_worn_config, new_inhand_left, new_inhand_right)
|
||||
. = ..()
|
||||
if(!hood)
|
||||
return
|
||||
var/list/hoodie_colors = SSgreyscale.ParseColorString(greyscale_colors)
|
||||
var/list/new_hoodie_colors = hoodie_colors.Copy(1,2)
|
||||
hood.set_greyscale(new_hoodie_colors)
|
||||
hood.update_slot_icon()
|
||||
|
||||
/obj/item/clothing/suit/hooded/twee_hoodie/on_hood_created(obj/item/clothing/head/hooded/hood)
|
||||
. = ..()
|
||||
var/list/hoodie_colors = (SSgreyscale.ParseColorString(greyscale_colors))
|
||||
var/list/new_hoodie_colors = hoodie_colors.Copy(1,2)
|
||||
hood.set_greyscale(new_hoodie_colors)
|
||||
|
||||
@@ -4,6 +4,7 @@
|
||||
max_signs = 4
|
||||
creation_time = 10
|
||||
holosign_type = /obj/structure/holosign/sexsign
|
||||
w_class = WEIGHT_CLASS_TINY
|
||||
//The janitor sign is also purple so no need to make custom sprites here.
|
||||
|
||||
/obj/structure/holosign/sexsign
|
||||
|
||||
@@ -27,3 +27,7 @@
|
||||
/datum/loadout_item/inhand/wheelchair
|
||||
name = "folded wheelchair"
|
||||
item_path = /obj/item/wheelchair
|
||||
|
||||
/datum/loadout_item/inhand/sex_sign
|
||||
name = "sex holosign projector"
|
||||
item_path = /obj/item/holosign_creator/sex
|
||||
|
||||
@@ -163,3 +163,13 @@
|
||||
/datum/loadout_item/suit/frontier_colonist_short
|
||||
name = "Frontier jacket"
|
||||
item_path = /obj/item/clothing/suit/jacket/frontier_colonist/short/loadout
|
||||
|
||||
//Doppler hoodies.
|
||||
|
||||
/datum/loadout_item/suit/hoodie/big_hoodie
|
||||
name = "Big Hoodie"
|
||||
item_path = /obj/item/clothing/suit/hooded/big_hoodie
|
||||
|
||||
/datum/loadout_item/suit/hoodie/twee_hoodie
|
||||
name = "Disconcertingly Twee Hoodie"
|
||||
item_path = /obj/item/clothing/suit/hooded/twee_hoodie
|
||||
|
||||
@@ -0,0 +1,146 @@
|
||||
/obj/item/umbrella
|
||||
name = "umbrella"
|
||||
icon = 'modular_zubbers/icons/obj/equipment/umbrella.dmi'
|
||||
icon_state = "umbrella"
|
||||
lefthand_file = 'modular_zubbers/icons/obj/equipment/umbrella_inhand_l.dmi'
|
||||
righthand_file = 'modular_zubbers/icons/obj/equipment/umbrella_inhand_r.dmi'
|
||||
inhand_icon_state = "umbrella"
|
||||
w_class = WEIGHT_CLASS_BULKY
|
||||
custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 0.75, /datum/material/plastic = SMALL_MATERIAL_AMOUNT * 0.25)
|
||||
custom_premium_price = PAYCHECK_COMMAND * 2
|
||||
|
||||
// Sound effect from the rain hitting it.
|
||||
var/datum/looping_sound/umbrella/rain_on_plastic/looping_sound
|
||||
|
||||
// Seems easier to do this.
|
||||
var/mob/user_holding
|
||||
|
||||
// For some overhang.
|
||||
inhand_x_dimension = 64
|
||||
inhand_y_dimension = 64
|
||||
|
||||
// The umbrella provides some protection against weather effects. Perhaps you may want to change this. I don't judge.
|
||||
var/immunity_type = TRAIT_RAINSTORM_IMMUNE
|
||||
|
||||
|
||||
/obj/item/umbrella/equipped(mob/user, slot, initial = FALSE)
|
||||
. = ..()
|
||||
if(!looping_sound)
|
||||
looping_sound = new(src, FALSE)
|
||||
if(!user_holding)
|
||||
RegisterSignal(user, COMSIG_MOVABLE_MOVED, PROC_REF(on_move))
|
||||
user_holding = user
|
||||
proccess_rainsounds()
|
||||
|
||||
/obj/item/umbrella/dropped(mob/user, silent)
|
||||
. = ..()
|
||||
revoke_trait(user, immunity_type)
|
||||
QDEL_NULL(looping_sound)
|
||||
UnregisterSignal(user, COMSIG_MOVABLE_MOVED)
|
||||
user_holding = null
|
||||
|
||||
/obj/item/umbrella/proc/on_move(atom/old_loc, dir, forced, list/old_locs)
|
||||
SIGNAL_HANDLER
|
||||
|
||||
proccess_rainsounds(old_loc)
|
||||
|
||||
/obj/item/umbrella/proc/proccess_rainsounds()
|
||||
if(!SSweather)
|
||||
return
|
||||
|
||||
|
||||
var/turf/turf = get_turf(user_holding)
|
||||
if(!turf)
|
||||
return
|
||||
var/datum/weather/weather = SSweather.get_weather(turf.z, get_area(turf))
|
||||
if(!weather || !(turf.loc in weather.impacted_areas) )
|
||||
looping_sound.stop() // If there is no weather, why even have a sound?
|
||||
return
|
||||
if(weather.recursive_weather_protection_check(user_holding)) // If the player is protected by the weather, play the umbrella sounds.
|
||||
looping_sound.start()
|
||||
else
|
||||
looping_sound.stop()
|
||||
|
||||
/obj/item/umbrella/collapsible
|
||||
name = "collapsible umbrella"
|
||||
icon = 'modular_zubbers/icons/obj/equipment/umbrella.dmi'
|
||||
icon_state = "umbrella_retract_off"
|
||||
slot_flags = ITEM_SLOT_POCKETS
|
||||
w_class = WEIGHT_CLASS_SMALL
|
||||
inhand_icon_state = "sheathed_umbrella"
|
||||
|
||||
/// Whether the umbrella is currently collapsed or open.
|
||||
var/collapsed = FALSE
|
||||
/// sound when toggled open/closed
|
||||
var/toggle_sound = 'modular_zubbers/code/modules/rimpoint_newfeatures/sound/effects/umbrella_open.ogg'
|
||||
var/close_sound = 'modular_zubbers/code/modules/rimpoint_newfeatures/sound/effects/umbrella_close.ogg'
|
||||
|
||||
/obj/item/umbrella/collapsible/Initialize(mapload)
|
||||
. = ..()
|
||||
AddComponent( \
|
||||
/datum/component/transforming, \
|
||||
w_class_on = WEIGHT_CLASS_BULKY, \
|
||||
attack_verb_continuous_on = list("whaps", "thwacks", "whacks", "beats"), \
|
||||
attack_verb_simple_on = list("whap", "thwack", "whack", "beat"), \
|
||||
)
|
||||
RegisterSignal(src, COMSIG_TRANSFORMING_ON_TRANSFORM, PROC_REF(on_transform))
|
||||
|
||||
|
||||
/obj/item/umbrella/collapsible/proc/on_transform(obj/item/source, mob/user, active)
|
||||
SIGNAL_HANDLER
|
||||
|
||||
collapsed = active
|
||||
if(!user)
|
||||
return COMPONENT_BLOCK_TRANSFORM // Just in case.
|
||||
if(collapsed)
|
||||
icon_state = "umbrella_retract_on"
|
||||
give_trait(user, immunity_type)
|
||||
inhand_icon_state = "umbrella"
|
||||
slot_flags = NONE
|
||||
if(toggle_sound)
|
||||
playsound(user, toggle_sound, 100)
|
||||
to_chat(user, "You open the umbrella.")
|
||||
else
|
||||
icon_state = "umbrella_retract_off"
|
||||
inhand_icon_state = "sheathed_umbrella"
|
||||
slot_flags = ITEM_SLOT_POCKETS
|
||||
revoke_trait(user, immunity_type)
|
||||
if(toggle_sound)
|
||||
playsound(user, close_sound, 100)
|
||||
to_chat(user, "You close the umbrella.")
|
||||
|
||||
balloon_alert(user, active ? "extended" : "collapsed")
|
||||
proccess_rainsounds()
|
||||
return COMPONENT_NO_DEFAULT_MESSAGE
|
||||
|
||||
|
||||
|
||||
/obj/item/umbrella/proc/give_trait(mob/living/user,immunity_type)
|
||||
ADD_TRAIT(user, immunity_type, REF(src))
|
||||
|
||||
|
||||
/obj/item/umbrella/proc/revoke_trait(mob/living/user,immunity_type)
|
||||
REMOVE_TRAIT(user, immunity_type, REF(src))
|
||||
|
||||
|
||||
|
||||
/datum/looping_sound/umbrella/rain_on_plastic
|
||||
mid_sounds = list(
|
||||
'modular_zubbers/code/modules/rimpoint_newfeatures/sound/effects/rain_on_plastic2.ogg' = 1,
|
||||
'modular_zubbers/code/modules/rimpoint_newfeatures/sound/effects/rain_on_plastic3.ogg' = 1,
|
||||
'modular_zubbers/code/modules/rimpoint_newfeatures/sound/effects/rain_on_plastic4.ogg' = 1,
|
||||
'modular_zubbers/code/modules/rimpoint_newfeatures/sound/effects/rain_on_plastic5.ogg' = 1,
|
||||
'modular_zubbers/code/modules/rimpoint_newfeatures/sound/effects/rain_on_plastic6.ogg' = 1,
|
||||
'modular_zubbers/code/modules/rimpoint_newfeatures/sound/effects/rain_on_plastic7.ogg' = 1,
|
||||
)
|
||||
mid_length = 2.5 SECONDS
|
||||
falloff_distance = 1
|
||||
falloff_exponent = 10
|
||||
volume = 25
|
||||
use_reverb = TRUE
|
||||
in_order = TRUE
|
||||
|
||||
|
||||
/datum/loadout_item/inhand/collapsible_umbrella
|
||||
name = "Umbrella"
|
||||
item_path = /obj/item/umbrella/collapsible
|
||||
@@ -0,0 +1 @@
|
||||
raindrops.umbrella.flac by dobroide -- https://freesound.org/s/14901/ -- License: Attribution 4.0
|
||||
@@ -63,6 +63,8 @@
|
||||
/obj/item/clothing/suit/hooded/sigmarcoat = 5,
|
||||
/obj/item/clothing/suit/jacket/skyy = 5,
|
||||
/obj/item/clothing/suit/jacket/tailcoat = 5,
|
||||
/obj/item/clothing/suit/hooded/big_hoodie = 5,
|
||||
/obj/item/clothing/suit/hooded/twee_hoodie = 5,
|
||||
/obj/item/clothing/under/dress/skirt/skyrat/black_skirt = 5,
|
||||
/obj/item/clothing/suit/misc/suit_harness = 5,
|
||||
/obj/item/clothing/under/dress/miniskirt = 5,
|
||||
|
||||
|
After Width: | Height: | Size: 705 B |
|
After Width: | Height: | Size: 1.3 KiB |
|
After Width: | Height: | Size: 1.3 KiB |
@@ -9639,6 +9639,7 @@
|
||||
#include "modular_zubbers\code\modules\research\designs\autolathe\security_designs.dm"
|
||||
#include "modular_zubbers\code\modules\research\techweb\all_nodes.dm"
|
||||
#include "modular_zubbers\code\modules\research\techweb\circuit_nodes.dm"
|
||||
#include "modular_zubbers\code\modules\rimpoint_newfeatures\code\umbrella.dm"
|
||||
#include "modular_zubbers\code\modules\rr_opt_in\examine.dm"
|
||||
#include "modular_zubbers\code\modules\rr_opt_in\rr_opt_config.dm"
|
||||
#include "modular_zubbers\code\modules\rr_opt_in\rr_optin_preferences.dm"
|
||||
|
||||