Files
Bubberstation/code/modules/research/xenobiology/crossbreeding/_misc.dm
grungussuss 58501dce77 Reorganizes the sound folder (#86726)
## About The Pull Request

<details>

- renamed ai folder to announcer

-- announcer --
- moved vox_fem to announcer
- moved approachingTG to announcer

- separated the ambience folder into ambience and instrumental
-- ambience --

- created holy folder moved all related sounds there
- created engineering folder and moved all related sounds there
- created security folder and moved ambidet there
- created general folder and moved ambigen there
- created icemoon folder and moved all icebox-related ambience there
- created medical folder and moved all medbay-related ambi there
- created ruin folder and moves all ruins ambi there
- created beach folder and moved seag and shore there
- created lavaland folder and moved related ambi there
- created aurora_caelus folder and placed its ambi there
- created misc folder and moved the rest of the files that don't have a
specific category into it

-- instrumental --

- moved traitor folder here
- created lobby_music folder and placed our songs there (title0 not used
anywhere? - server-side modification?)

-- items --

- moved secdeath to hailer
- moved surgery to handling

-- effects --

- moved chemistry into effects
- moved hallucinations into effects
- moved health into effects
- moved magic into effects

-- vehicles --

- moved mecha into vehicles


created mobs folder

-- mobs --

- moved creatures folder into mobs
- moved voice into mobs

renamed creatures to non-humanoids
renamed voice to humanoids

-- non-humanoids--

created cyborg folder
created hiss folder
moved harmalarm.ogg to cyborg

-- humanoids --




-- misc --

moved ghostwhisper to misc
moved insane_low_laugh to misc

I give up trying to document this.

</details>

- [X] ambience
- [x] announcer
- [x] effects
- [X] instrumental
- [x] items
- [x] machines
- [x] misc 
- [X] mobs
- [X] runtime
- [X] vehicles

- [ ] attributions

## Why It's Good For The Game

This folder is so disorganized that it's vomit inducing, will make it
easier to find and add new sounds, providng a minor structure to the
sound folder.

## Changelog
🆑 grungussuss
refactor: the sound folder in the source code has been reorganized,
please report any oddities with sounds playing or not playing
server: lobby music has been repathed to sound/music/lobby_music
/🆑
2024-09-23 22:24:50 -07:00

222 lines
7.4 KiB
Plaintext

/*
Slimecrossing Items
General items added by the slimecrossing system.
Collected here for clarity.
*/
//Rewind camera - I'm already Burning Sepia
/obj/item/camera/rewind
name = "sepia-tinted camera"
desc = "They say a picture is like a moment stopped in time."
pictures_left = 1
pictures_max = 1
can_customise = FALSE
default_picture_name = "A nostalgic picture"
/datum/saved_bodypart
var/obj/item/bodypart/old_part
var/bodypart_type
var/brute_dam
var/burn_dam
/datum/saved_bodypart/New(obj/item/bodypart/part)
old_part = part
bodypart_type = part.type
brute_dam = part.brute_dam
burn_dam = part.burn_dam
/mob/living/carbon/proc/apply_saved_bodyparts(list/datum/saved_bodypart/parts)
var/list/dont_chop = list()
for(var/zone in parts)
var/datum/saved_bodypart/saved_part = parts[zone]
var/obj/item/bodypart/already = get_bodypart(zone)
if(QDELETED(saved_part.old_part))
saved_part.old_part = new saved_part.bodypart_type
if(!already || already != saved_part.old_part)
saved_part.old_part.replace_limb(src, TRUE)
saved_part.old_part.heal_damage(INFINITY, INFINITY, null, FALSE)
saved_part.old_part.receive_damage(saved_part.brute_dam, saved_part.burn_dam, wound_bonus=CANT_WOUND)
dont_chop[zone] = TRUE
for(var/_part in bodyparts)
var/obj/item/bodypart/part = _part
if(dont_chop[part.body_zone])
continue
part.drop_limb(TRUE)
/mob/living/carbon/proc/save_bodyparts()
var/list/datum/saved_bodypart/ret = list()
for(var/_part in bodyparts)
var/obj/item/bodypart/part = _part
var/datum/saved_bodypart/saved_part = new(part)
ret[part.body_zone] = saved_part
return ret
/obj/item/camera/rewind/photo_taken(atom/target, mob/user)
. = ..()
if(!.)
return
if(user == target)
to_chat(user, span_notice("You take a selfie!"))
else
to_chat(user, span_notice("You take a photo with [target]!"))
to_chat(target, span_notice("[user] takes a photo with you!"))
to_chat(target, span_boldnotice("You'll remember this moment forever!"))
target.AddComponent(/datum/component/dejavu, 2)
//Timefreeze camera - Old Burning Sepia result. Kept in case admins want to spawn it
/obj/item/camera/timefreeze
name = "sepia-tinted camera"
desc = "They say a picture is like a moment stopped in time."
pictures_left = 1
pictures_max = 1
/obj/item/camera/timefreeze/photo_taken(atom/target, mob/user)
. = ..()
if(!.)
return
new /obj/effect/timestop(get_turf(target), 2, 50, list(user))
//Hypercharged slime cell - Charged Yellow
/obj/item/stock_parts/power_store/cell/high/slime_hypercharged
name = "hypercharged slime core"
desc = "A charged yellow slime extract, infused with plasma. It almost hurts to touch."
icon = 'icons/mob/simple/slimes.dmi'
icon_state = "yellow-core"
rating = 7
custom_materials = null
maxcharge = 50 * STANDARD_CELL_CHARGE
chargerate = 2.5 * STANDARD_CELL_RATE
charge_light_type = null
connector_type = "slimecore"
//Barrier cube - Chilling Grey
/obj/item/barriercube
name = "barrier cube"
desc = "A compressed cube of slime. When squeezed, it grows to massive size!"
icon = 'icons/obj/science/slimecrossing.dmi'
icon_state = "barriercube"
w_class = WEIGHT_CLASS_TINY
/obj/item/barriercube/attack_self(mob/user)
if(locate(/obj/structure/barricade/slime) in get_turf(loc))
to_chat(user, span_warning("You can't fit more than one barrier in the same space!"))
return
to_chat(user, span_notice("You squeeze [src]."))
var/obj/B = new /obj/structure/barricade/slime(get_turf(loc))
B.visible_message(span_warning("[src] suddenly grows into a large, gelatinous barrier!"))
qdel(src)
//Slime barricade - Chilling Grey
/obj/structure/barricade/slime
name = "gelatinous barrier"
desc = "A huge chunk of grey slime. Bullets might get stuck in it."
icon = 'icons/obj/science/slimecrossing.dmi'
icon_state = "slimebarrier"
proj_pass_rate = 40
max_integrity = 60
//Melting Gel Wall - Chilling Metal
/obj/effect/forcefield/slimewall
name = "solidified gel"
desc = "A mass of solidified slime gel - completely impenetrable, but it's melting away!"
icon = 'icons/obj/science/slimecrossing.dmi'
icon_state = "slimebarrier_thick"
can_atmos_pass = ATMOS_PASS_NO
opacity = TRUE
initial_duration = 10 SECONDS
//Rainbow barrier - Chilling Rainbow
/obj/effect/forcefield/slimewall/rainbow
name = "rainbow barrier"
desc = "Despite others' urgings, you probably shouldn't taste this."
icon_state = "rainbowbarrier"
//Ice stasis block - Chilling Dark Blue
/obj/structure/ice_stasis
name = "ice block"
desc = "A massive block of ice. You can see something vaguely humanoid inside."
icon = 'icons/obj/science/slimecrossing.dmi'
icon_state = "frozen"
density = TRUE
max_integrity = 100
armor_type = /datum/armor/structure_ice_stasis
/datum/armor/structure_ice_stasis
melee = 30
bullet = 50
laser = -50
energy = -50
fire = -80
acid = 30
/obj/structure/ice_stasis/Initialize(mapload)
. = ..()
playsound(src, 'sound/effects/magic/ethereal_exit.ogg', 50, TRUE)
/obj/structure/ice_stasis/Destroy()
for(var/atom/movable/M in contents)
M.forceMove(loc)
playsound(src, 'sound/effects/glass/glassbr3.ogg', 50, TRUE)
return ..()
//Gold capture device - Chilling Gold
/obj/item/capturedevice
name = "gold capture device"
desc = "Bluespace technology packed into a roughly egg-shaped device, used to store nonhuman creatures. Can't catch them all, though - it only fits one."
w_class = WEIGHT_CLASS_SMALL
icon = 'icons/obj/science/slimecrossing.dmi'
icon_state = "capturedevice"
///traits we give and remove from the mob on exit and entry
var/static/list/traits_on_transfer = list(
TRAIT_IMMOBILIZED,
TRAIT_HANDS_BLOCKED,
TRAIT_AI_PAUSED,
)
/obj/item/capturedevice/attack(mob/living/pokemon, mob/user)
if(length(contents))
to_chat(user, span_warning("The device already has something inside."))
return
if(!isanimal_or_basicmob(pokemon))
to_chat(user, span_warning("The capture device only works on simple creatures."))
return
if(pokemon.mind)
to_chat(user, span_notice("You offer the device to [pokemon]."))
if(tgui_alert(pokemon, "Would you like to enter [user]'s capture device?", "Gold Capture Device", list("Yes", "No")) == "Yes")
if(user.can_perform_action(src) && user.can_perform_action(pokemon))
to_chat(user, span_notice("You store [pokemon] in the capture device."))
to_chat(pokemon, span_notice("The world warps around you, and you're suddenly in an endless void, with a window to the outside floating in front of you."))
store(pokemon, user)
else
to_chat(user, span_warning("You were too far away from [pokemon]."))
to_chat(pokemon, span_warning("You were too far away from [user]."))
else
to_chat(user, span_warning("[pokemon] refused to enter the device."))
return
else if(!(FACTION_NEUTRAL in pokemon.faction))
to_chat(user, span_warning("This creature is too aggressive to capture."))
return
to_chat(user, span_notice("You store [pokemon] in the capture device."))
store(pokemon)
/obj/item/capturedevice/attack_self(mob/user)
if(contents.len)
to_chat(user, span_notice("You open the capture device!"))
release()
else
to_chat(user, span_warning("The device is empty..."))
/obj/item/capturedevice/proc/store(mob/living/pokemon)
pokemon.forceMove(src)
pokemon.add_traits(traits_on_transfer, ABSTRACT_ITEM_TRAIT)
pokemon.cancel_camera()
/obj/item/capturedevice/proc/release()
for(var/mob/living/pokemon in contents)
pokemon.forceMove(get_turf(loc))
pokemon.remove_traits(traits_on_transfer, ABSTRACT_ITEM_TRAIT)
pokemon.cancel_camera()