Skip to content

Commit

Permalink
Merge branch 'master' of https://github.com/Venuska1117/Paradise
Browse files Browse the repository at this point in the history
  • Loading branch information
Venuska1117 committed Jul 17, 2023
2 parents d2b409d + fe271f1 commit 317783a
Show file tree
Hide file tree
Showing 62 changed files with 272 additions and 140 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface,
/area/lavaland/surface/outdoors)
"c" = (
/obj/machinery/abductor/experiment,
/obj/machinery/abductor/experiment/broken,
/turf/simulated/floor/plating/abductor,
/area/ruin/unpowered/misc_lavaruin)
"d" = (
Expand Down
8 changes: 8 additions & 0 deletions code/__HELPERS/text.dm
Original file line number Diff line number Diff line change
Expand Up @@ -738,3 +738,11 @@
/proc/strip_html_tags(the_text)
var/static/regex/html_replacer = regex("<\[^>]*>", "g")
return html_replacer.Replace(the_text, "")

/proc/starts_with_vowel(text)
var/start_char = copytext(text, 1, 2)
switch(lowertext(start_char))
if("a", "e", "i", "o", "u")
return TRUE
else
return FALSE
2 changes: 2 additions & 0 deletions code/controllers/subsystem/SStimer.dm
Original file line number Diff line number Diff line change
Expand Up @@ -547,6 +547,8 @@ SUBSYSTEM_DEF(timer)
if (callBack.object == GLOBAL_PROC)
. = "GLOBAL_PROC"
else
if(isnull(callBack.object))
CRASH("this timer is attached to no object, the attempted proc to call was [callBack.delegate]")
. = "[callBack.object.type]"

GLOBAL_LIST_EMPTY(timers_by_type)
Expand Down
1 change: 1 addition & 0 deletions code/datums/looping_sounds/looping_sound.dm
Original file line number Diff line number Diff line change
Expand Up @@ -137,4 +137,5 @@
mid_length = 80
decrease_to_amount = 10
decrease_by_amount = 5
direct = TRUE
channel = CHANNEL_DELTA_ALARM
2 changes: 1 addition & 1 deletion code/datums/outfits/outfit_admin.dm
Original file line number Diff line number Diff line change
Expand Up @@ -973,7 +973,7 @@
/datum/outfit/admin/hardsuit/wizard
name = "Hardsuit - Wizard"
suit = /obj/item/clothing/suit/space/hardsuit/shielded/wizard
shoes = /obj/item/clothing/shoes/magboots
shoes = /obj/item/clothing/shoes/magboots/wizard

/datum/outfit/admin/hardsuit/medical
name = "Hardsuit - Medical"
Expand Down
1 change: 0 additions & 1 deletion code/datums/outfits/plasmamen_outfits.dm
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,6 @@

head = /obj/item/clothing/head/helmet/space/plasmaman/white
uniform = /obj/item/clothing/under/plasmaman/enviroslacks
l_ear = /obj/item/radio/headset/headset_sec

/datum/outfit/plasmaman/warden
name = "Plasmaman Warden"
Expand Down
2 changes: 1 addition & 1 deletion code/datums/uplink_items/uplink_general.dm
Original file line number Diff line number Diff line change
Expand Up @@ -179,7 +179,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item))

/datum/uplink_item/dangerous/rapid
name = "Gloves of the North Star"
desc = "These gloves let the user punch people very fast. Does not improve weapon attack speed."
desc = "These gloves let the user help, shove, grab, and punch people very fast. Does not improve weapon attack speed. Can be combined with martial arts for a deadly weapon."
reference = "RPGD"
item = /obj/item/clothing/gloves/fingerless/rapid
cost = 8
Expand Down
2 changes: 1 addition & 1 deletion code/datums/uplink_items/uplink_traitor.dm
Original file line number Diff line number Diff line change
Expand Up @@ -516,7 +516,7 @@
name = "CQC Manual"
desc = "A manual that teaches a single user tactical Close-Quarters Combat before self-destructing. \
Changes your unarmed damage to deal non-lethal stamina damage. \
Does not restrict weapon usage, but cannot be used alongside Gloves of the North Star."
Does not restrict weapon usage, and can be used alongside Gloves of the North Star."
reference = "CQC"
item = /obj/item/CQC_manual
cost = 10
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -227,3 +227,9 @@
occupant.forceMove(get_turf(src))
occupant = null
update_icon(UPDATE_ICON_STATE)

/obj/machinery/abductor/experiment/broken
stat = BROKEN

/obj/machinery/abductor/experiment/broken/MouseDrop_T(mob/living/carbon/human/target, mob/user)
return
2 changes: 1 addition & 1 deletion code/game/gamemodes/wizard/spellbook.dm
Original file line number Diff line number Diff line change
Expand Up @@ -470,7 +470,7 @@
/datum/spellbook_entry/item/battlemage
name = "Battlemage Armour"
desc = "An ensorceled suit of armour, protected by a powerful shield. The shield can completely negate sixteen attacks before being permanently depleted. Despite appearance it is NOT spaceproof."
item_path = /obj/item/clothing/suit/space/hardsuit/shielded/wizard
item_path = /obj/item/storage/box/wizard/hardsuit
limit = 1
category = "Weapons and Armors"

Expand Down
7 changes: 7 additions & 0 deletions code/game/machinery/computer/security_records.dm
Original file line number Diff line number Diff line change
Expand Up @@ -397,6 +397,13 @@
<br>\nPhysical Status: [record_general.fields["p_stat"]]
<br>\nMental Status: [record_general.fields["m_stat"]]<br>"}
P.name = "paper - 'Security Record: [record_general.fields["name"]]'"
var/obj/item/photo/photo = new(loc)
var/icon/new_photo = icon('icons/effects/64x32.dmi', "records")
new_photo.Blend(icon(record_general.fields["photo"], dir = SOUTH), ICON_OVERLAY, 0)
new_photo.Blend(icon(record_general.fields["photo"], dir = WEST), ICON_OVERLAY, 32)
new_photo.Scale(new_photo.Width() * 3, new_photo.Height() * 3)
photo.img = new_photo
photo.name = "photo - 'Security Record: [record_general.fields["name"]]'"
else
P.info += "<b>General Record Lost!</b><br>"
if(record_security && GLOB.data_core.security.Find(record_security))
Expand Down
4 changes: 3 additions & 1 deletion code/game/machinery/transformer.dm
Original file line number Diff line number Diff line change
Expand Up @@ -100,10 +100,12 @@

H.emote("scream")
if(!masterAI) // If the factory was placed via admin spawning or other means, it wont have an owner_AI.
H.Robotize(robot_cell_type)
var/mob/living/silicon/robot/R = H.Robotize(robot_cell_type)
R.emagged = TRUE
return

var/mob/living/silicon/robot/R = H.Robotize(robot_cell_type, FALSE, masterAI)
R.emagged = TRUE
if(R.mind && !R.client && !R.grab_ghost()) // Make sure this is an actual player first and not just a humanized monkey or something.
message_admins("[key_name_admin(R)] was just transformed by a borg factory, but they were SSD. Polling ghosts for a replacement.")
var/list/candidates = SSghost_spawns.poll_candidates("Do you want to play as a malfunctioning cyborg?", ROLE_TRAITOR, poll_time = 15 SECONDS)
Expand Down
5 changes: 0 additions & 5 deletions code/game/mecha/mecha_parts.dm
Original file line number Diff line number Diff line change
Expand Up @@ -466,8 +466,3 @@
/obj/item/circuitboard/mecha/odysseus/peripherals
board_name = "Odysseus Peripherals Control Module"
icon_state = "mcontroller"


/obj/item/circuitboard/mecha/pod
board_name = "Space Pod Mainboard"
icon_state = "mainboard"
3 changes: 1 addition & 2 deletions code/game/objects/effects/landmarks.dm
Original file line number Diff line number Diff line change
Expand Up @@ -430,7 +430,6 @@ INITIALIZE_IMMEDIATE(/obj/effect/landmark/awaystart) //Without this away mission
. = ..()
new /obj/item/clothing/suit/chickensuit(src.loc)
new /obj/item/clothing/head/chicken(src.loc)
new /obj/item/reagent_containers/food/snacks/egg(src.loc)
return INITIALIZE_HINT_QDEL

/obj/effect/landmark/costume/gladiator/Initialize(mapload)
Expand Down Expand Up @@ -550,7 +549,7 @@ INITIALIZE_IMMEDIATE(/obj/effect/landmark/awaystart) //Without this away mission
new /obj/item/clothing/suit/holidaypriest(src.loc)
return INITIALIZE_HINT_QDEL

/obj/effect/landmark/costume/marisawizard/fake/Initialize(mapload)
/obj/effect/landmark/costume/marisa_fakewizard/Initialize(mapload)
. = ..()
new /obj/item/clothing/head/wizard/marisa/fake(src.loc)
new/obj/item/clothing/suit/wizrobe/marisa/fake(src.loc)
Expand Down
7 changes: 4 additions & 3 deletions code/game/objects/effects/meteors.dm
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,8 @@ GLOBAL_LIST_INIT(meteors_normal, list(/obj/effect/meteor/dust = 3, /obj/effect/m
GLOBAL_LIST_INIT(meteors_threatening, list(/obj/effect/meteor/medium = 4, /obj/effect/meteor/big = 8,
/obj/effect/meteor/flaming = 3, /obj/effect/meteor/irradiated = 3, /obj/effect/meteor/bananium = 1)) //for threatening meteor event

GLOBAL_LIST_INIT(meteors_catastrophic, list(/obj/effect/meteor/medium = 5, /obj/effect/meteor/big = 75,
/obj/effect/meteor/flaming = 10, /obj/effect/meteor/irradiated = 10, /obj/effect/meteor/bananium = 3, /obj/effect/meteor/tunguska = 1)) //for catastrophic meteor event
GLOBAL_LIST_INIT(meteors_catastrophic, list(/obj/effect/meteor/medium = 3, /obj/effect/meteor/big = 10,
/obj/effect/meteor/flaming = 10, /obj/effect/meteor/irradiated = 10, /obj/effect/meteor/bananium = 2, /obj/effect/meteor/meaty = 2, /obj/effect/meteor/meaty/xeno = 2, /obj/effect/meteor/tunguska = 1)) //for catastrophic meteor event

GLOBAL_LIST_INIT(meteors_gore, list(/obj/effect/meteor/meaty = 5, /obj/effect/meteor/meaty/xeno = 1)) //for meaty ore event

Expand Down Expand Up @@ -253,7 +253,8 @@ GLOBAL_LIST_INIT(meteors_ops, list(/obj/effect/meteor/goreops)) //Meaty Ops
..()
explosion(loc, 0, 0, 4, 3, 0)
new /obj/effect/decal/cleanable/greenglow(get_turf(src))
radiation_pulse(src, 500)
radiation_pulse(src, 5000, 7)
//Hot take on this one. This often hits walls. It really has to breach into somewhere important to matter. This at leats makes the area slightly dangerous for a bit

/obj/effect/meteor/bananium
name = "bananium meteor"
Expand Down
28 changes: 28 additions & 0 deletions code/game/objects/items/toys.dm
Original file line number Diff line number Diff line change
Expand Up @@ -123,6 +123,34 @@
user.visible_message("<span class='notice'>[user] plays with [src].</span>", "<span class='notice'>You [playverb].</span>")
lastused = world.time

/obj/item/toy/syndicateballoon/suicide_act(mob/living/user)
. = ..()
if(!user)
return

user.visible_message("<span class='suicide'>[user] ties [src] around [user.p_their()] neck and starts to float away! It looks like [user.p_theyre()] trying to commit suicide!</span>")

playsound(get_turf(user), 'sound/magic/fleshtostone.ogg', 80, TRUE)

user.Immobilize(10 SECONDS)

// yes im stealing fulton code
var/obj/effect/extraction_holder/holder_obj = new(get_turf(user))
holder_obj.appearance = user.appearance

user.forceMove(holder_obj)
animate(holder_obj, pixel_z = 1000, time = 50)

for(var/obj/item/W in user)
user.unEquip(W)

user.notransform = TRUE
icon = null
invisibility = 101
QDEL_IN(user, 2 SECONDS)
QDEL_IN(src, 2 SECONDS)
return OBLITERATION

/*
* Fake telebeacon
*/
Expand Down
3 changes: 2 additions & 1 deletion code/game/objects/items/weapons/implants/implant_stealth.dm
Original file line number Diff line number Diff line change
Expand Up @@ -95,7 +95,8 @@
desc = "It's so normal that you didn't notice it before."
icon_state = "agentbox"
max_integrity = 1
move_speed_multiplier = 0.5 // You can move at normal walk speed while in this box.
move_speed_multiplier = 0.5 // You can move at run speed while in this box.
material_drop = null
/// UID of the person who summoned this box with an implant.
var/implant_user_UID
// This has to be a separate object and not just an image because the image will inherit the box's 0 alpha while it is stealthed.
Expand Down
9 changes: 9 additions & 0 deletions code/game/objects/items/weapons/stock_parts.dm
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,15 @@
usesound = 'sound/items/pshoom.ogg'
toolspeed = 0.5

/obj/item/storage/part_replacer/bluespace/tier4/populate_contents()
for(var/amount in 1 to 30)
new /obj/item/stock_parts/capacitor/quadratic(src)
new /obj/item/stock_parts/manipulator/femto(src)
new /obj/item/stock_parts/matter_bin/bluespace(src)
new /obj/item/stock_parts/micro_laser/quadultra(src)
new /obj/item/stock_parts/scanning_module/triphasic(src)
new /obj/item/stock_parts/cell/bluespace(src)

/obj/item/storage/part_replacer/proc/play_rped_sound()
//Plays the sound for RPED exchanging or installing parts.
if(alt_sound && prob(3))
Expand Down
9 changes: 9 additions & 0 deletions code/game/objects/items/weapons/storage/boxes.dm
Original file line number Diff line number Diff line change
Expand Up @@ -936,6 +936,15 @@
icon_state = "box_wizard"
w_class = WEIGHT_CLASS_GIGANTIC

/obj/item/storage/box/wizard/hardsuit
name = "battlemage armour bundle"
desc = "This box contains a bundle of Battlemage Armour."
icon_state = "box_wizard"

/obj/item/storage/box/wizard/hardsuit/populate_contents()
new /obj/item/clothing/suit/space/hardsuit/shielded/wizard(src)
new /obj/item/clothing/shoes/magboots/wizard(src)

/obj/item/storage/box/breaching
name = "breaching charges"
desc = "Contains three T4 thermal breaching charges."
Expand Down
2 changes: 2 additions & 0 deletions code/game/objects/items/weapons/storage/firstaid.dm
Original file line number Diff line number Diff line change
Expand Up @@ -255,6 +255,7 @@
icon = 'icons/obj/chemical.dmi'
item_state = "contsolid"
belt_icon = "pill_bottle"
use_sound = "pillbottle"
w_class = WEIGHT_CLASS_SMALL
can_hold = list(/obj/item/reagent_containers/food/pill)
cant_hold = list(/obj/item/reagent_containers/food/pill/patch)
Expand Down Expand Up @@ -361,6 +362,7 @@
desc = "It's a container for storing medical patches."
icon_state = "patch_pack"
belt_icon = "patch_pack"
use_sound = "patchpack"
can_hold = list(/obj/item/reagent_containers/food/pill/patch)
cant_hold = list()
rapid_intake_message = "flips the lid of the patch pack open and begins rapidly stamping patches on themselves!"
Expand Down
6 changes: 2 additions & 4 deletions code/game/objects/items/weapons/storage/storage_base.dm
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,6 @@
var/pickup_all_on_tile = TRUE
/// Sound played when used. `null` for no sound.
var/use_sound = "rustle"

/// What kind of [/obj/item/stack] can this be folded into. (e.g. Boxes and cardboard)
var/foldable = null
/// How much of the stack item do you get.
Expand Down Expand Up @@ -141,7 +140,6 @@
return ..()
if(!(loc == M) || (loc && loc.loc == M))
return
playsound(loc, "rustle", 50, 1, -5)
if(!M.restrained() && !M.stat)
switch(over_object.name)
if("r_hand")
Expand All @@ -163,7 +161,7 @@
. = ..()
if(ishuman(user) && Adjacent(user) && !user.incapacitated(FALSE, TRUE))
show_to(user)
playsound(loc, "rustle", 50, TRUE, -5)
playsound(loc, use_sound, 50, TRUE, -5)
add_fingerprint(user)
else if(isobserver(user))
show_to(user)
Expand Down Expand Up @@ -549,7 +547,7 @@


/obj/item/storage/attack_hand(mob/user)
playsound(loc, "rustle", 50, TRUE, -5)
playsound(loc, use_sound, 50, TRUE, -5)

if(ishuman(user))
var/mob/living/carbon/human/H = user
Expand Down
4 changes: 4 additions & 0 deletions code/game/sound.dm
Original file line number Diff line number Diff line change
Expand Up @@ -189,6 +189,10 @@ falloff_distance - Distance at which falloff begins. Sound is at peak volume (in
/proc/get_sfx(soundin)
if(istext(soundin))
switch(soundin)
if("patchpack")
soundin = pick('sound/effects/CC0/patchpack1.ogg', 'sound/effects/CC0/patchpack2.ogg', 'sound/effects/CC0/patchpack3.ogg', 'sound/effects/CC0/patchpack4.ogg', 'sound/effects/CC0/patchpack5.ogg')
if("pillbottle")
soundin = pick('sound/effects/CC0/pillbottle1.ogg', 'sound/effects/CC0/pillbottle2.ogg', 'sound/effects/CC0/pillbottle3.ogg', 'sound/effects/CC0/pillbottle4.ogg')
if("shatter")
soundin = pick('sound/effects/glassbr1.ogg','sound/effects/glassbr2.ogg','sound/effects/glassbr3.ogg')
if("explosion")
Expand Down
1 change: 1 addition & 0 deletions code/modules/client/preference/preferences.dm
Original file line number Diff line number Diff line change
Expand Up @@ -88,6 +88,7 @@ GLOBAL_LIST_INIT(special_role_times, list( //minimum age (in days) for accounts
"1017" = 100, // CHANNEL_ENGINE
"1016" = 100, // CHANNEL_FIREALARM
"1015" = 100, // CHANNEL_ASH_STORM
"1014" = 100, // CHANNEL_DELTA_ALARM
)
/// The volume mixer save timer handle. Used to debounce the DB call to save, to avoid spamming.
var/volume_mixer_saving = null
Expand Down
19 changes: 15 additions & 4 deletions code/modules/client/preference/preferences_volume_mixer.dm
Original file line number Diff line number Diff line change
Expand Up @@ -50,10 +50,21 @@
// Set the volume
volume = clamp(volume, 0, 100)
volume_mixer["[channel]"] = volume
// Update the sound channel
var/sound/S = sound(null, channel = channel, volume = volume)
S.status = SOUND_UPDATE
SEND_SOUND(parent, S)
var/sound/S
var/channel_already_updated = FALSE
// special handling for looping sounds, especially if they're decreasing
for(var/datum/looping_sound/D in GLOB.looping_sounds)
if(channel == D.channel)
S = sound(null, channel = channel, volume = D.volume * volume / 100)
S.status = SOUND_UPDATE
SEND_SOUND(parent, S)
channel_already_updated = TRUE

if(!channel_already_updated)
// Update the currently playing sound to update its volume
S = sound(null, channel = channel, volume = volume)
S.status = SOUND_UPDATE
SEND_SOUND(parent, S)
// Save it
if(debounce_save)
volume_mixer_saving = addtimer(CALLBACK(src, PROC_REF(save_volume_mixer)), 3 SECONDS, TIMER_UNIQUE | TIMER_OVERRIDE | TIMER_STOPPABLE)
Expand Down
18 changes: 8 additions & 10 deletions code/modules/clothing/glasses/engine_goggles.dm
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,7 @@
item_state = "trayson-meson"
actions_types = list(/datum/action/item_action/toggle_mode)
origin_tech = "materials=3;magnets=3;engineering=3;plasmatech=3"
vision_flags = NONE
invis_view = SEE_INVISIBLE_LIVING
active_on_equip = FALSE

var/list/modes = list(MODE_NONE = MODE_MESON, MODE_MESON = MODE_TRAY, MODE_TRAY = MODE_RAD, MODE_RAD = MODE_NONE)
var/mode = MODE_NONE
Expand All @@ -32,14 +31,13 @@
mode = modes[mode]
to_chat(user, "<span class='[voluntary ? "notice" : "warning"]'>[voluntary ? "You turn the goggles" : "The goggles turn"] [mode ? "to [mode] mode" : "off"][voluntary ? "." : "!"]</span>")

switch(mode)
if(MODE_MESON)
vision_flags = SEE_TURFS
lighting_alpha = LIGHTING_PLANE_ALPHA_MOSTLY_VISIBLE

if(MODE_TRAY) //undoes the last mode, meson
vision_flags = NONE
lighting_alpha = null
if(mode == MODE_MESON)
if(!HAS_TRAIT_FROM(user, TRAIT_MESON_VISION, "meson_glasses[UID()]"))
ADD_TRAIT(user, TRAIT_MESON_VISION, "meson_glasses[UID()]")
active_on_equip = TRUE
else
REMOVE_TRAIT(user, TRAIT_MESON_VISION, "meson_glasses[UID()]")
active_on_equip = FALSE

if(ishuman(user))
var/mob/living/carbon/human/H = user
Expand Down
14 changes: 12 additions & 2 deletions code/modules/clothing/glasses/glasses.dm
Original file line number Diff line number Diff line change
Expand Up @@ -74,8 +74,6 @@
icon_state = "meson"
item_state = "meson"
origin_tech = "magnets=1;engineering=2"
vision_flags = SEE_TURFS
lighting_alpha = LIGHTING_PLANE_ALPHA_MOSTLY_VISIBLE
prescription_upgradable = TRUE

sprite_sheets = list(
Expand All @@ -86,6 +84,18 @@
"Kidan" = 'icons/mob/clothing/species/kidan/eyes.dmi'
)

var/active_on_equip = TRUE

/obj/item/clothing/glasses/meson/equipped(mob/user, slot, initial)
. = ..()
if(active_on_equip && slot == slot_glasses)
ADD_TRAIT(user, TRAIT_MESON_VISION, "meson_glasses[UID()]")

/obj/item/clothing/glasses/meson/dropped(mob/user)
. = ..()
if(user)
REMOVE_TRAIT(user, TRAIT_MESON_VISION, "meson_glasses[UID()]")

/obj/item/clothing/glasses/meson/night
name = "night vision optical meson scanner"
desc = "An optical meson scanner fitted with an amplified visible light spectrum overlay, providing greater visual clarity in darkness."
Expand Down
Loading

0 comments on commit 317783a

Please sign in to comment.