mirror of
https://github.com/Aurorastation/Aurora.3.git
synced 2026-08-27 23:14:18 +01:00
Lemurian Sea (#22686)
changes: - refactor: "Refactors Gravity Generator UI from HTML to TGUI." - rscadd: "Adds sector-based modifier var 'overmap_hazards_multiplier' for generating total overmap hazard count." - soundadd: "Adds new Lemurian Sea 'welcome' announcements." - rscadd: "Added Lemurian Sea gravitic anomalies as overmap hazards and random events." - rscadd: "Adds ADPI/The Voices." - rscadd: "Adds ADPI Panel for modmins to send ADPI messages to a single character or all characters from their respective pools, or custom messages." - balance: "Vaurca Hivenet communication, the Hivenet Manifest, and Hivenet Echoes are now disabled while the ship is in Lemurian Sea sectors."
This commit is contained in:
@@ -197,6 +197,11 @@
|
||||
set category = "Storyteller"
|
||||
set desc = "Switch if Vaurcae can hear faint echoes (fluff) of the greater Hivenet. They will notice."
|
||||
|
||||
if(is_lemurian_sea_sector())
|
||||
SSatlas.current_sector.hivenet_echoes = FALSE
|
||||
to_chat(src, "The Fog prevents Hivenet Echoes from being restored in the Lemurian Sea.")
|
||||
return
|
||||
|
||||
if(SSatlas.current_sector.hivenet_echoes)
|
||||
SSatlas.current_sector.hivenet_echoes = FALSE
|
||||
to_chat(src, "Vaurcae have been cut off from echoes (fluff) of the greater Hivenet.")
|
||||
|
||||
@@ -234,6 +234,10 @@
|
||||
/datum/language/bug/broadcast(var/mob/living/speaker,var/message,var/speaker_mask)
|
||||
log_say("[key_name(speaker)] : ([name]) [message]")
|
||||
|
||||
if(is_lemurian_sea_sector())
|
||||
to_chat(speaker, SPAN_WARNING("You attempt to reach the Hivenet, but find nothing!"))
|
||||
return
|
||||
|
||||
var/mob/living/carbon/human/H = speaker //Check for Preimminent Shaper robes, which obscure Hive affiliation
|
||||
var/obj/item/clothing/head/shaper/helmet = H.get_equipped_item(slot_head)
|
||||
if(!speaker_mask)
|
||||
@@ -304,6 +308,9 @@
|
||||
return "[verb], <span class='message'><span class='[message_color]'>\"[capitalize(message)]\"</span></span>"
|
||||
|
||||
/datum/language/bug/check_special_condition(var/mob/other)
|
||||
if(is_lemurian_sea_sector())
|
||||
return 0
|
||||
|
||||
if(istype(other, /mob/living/silicon))
|
||||
var/mob/living/silicon/S = other
|
||||
if(S.can_hear_hivenet)
|
||||
@@ -340,6 +347,10 @@
|
||||
return 0
|
||||
|
||||
/datum/language/bug/check_speech_restrict(var/mob/speaker)
|
||||
if(is_lemurian_sea_sector())
|
||||
to_chat(speaker, SPAN_WARNING("You attempt to reach the Hivenet, but find nothing!"))
|
||||
return FALSE
|
||||
|
||||
var/mob/living/carbon/human/H = speaker
|
||||
var/obj/item/organ/internal/vaurca/neuralsocket/S = H.internal_organs_by_name[BP_NEURAL_SOCKET]
|
||||
var/obj/item/organ/internal/augment/language/vekatak/V = H.internal_organs_by_name[BP_AUG_LANGUAGE_VEKATAK]
|
||||
|
||||
@@ -1658,6 +1658,10 @@
|
||||
to_chat(src, SPAN_DANGER("Your mind is dark, unable to communicate with the Hive."))
|
||||
return
|
||||
|
||||
if(is_lemurian_sea_sector())
|
||||
to_chat(src, SPAN_DANGER("The Fog cuts you off from the Hivenet."))
|
||||
return
|
||||
|
||||
if(!istype(S) && !istype(V))
|
||||
to_chat(src, SPAN_WARNING("You do not have a functional connection to the Hivenet!"))
|
||||
return
|
||||
@@ -2050,6 +2054,9 @@
|
||||
if(!istype(S))
|
||||
to_chat(src, SPAN_WARNING("You require a functional neural socket to do this!"))
|
||||
return FALSE
|
||||
if(is_lemurian_sea_sector())
|
||||
to_chat(src, SPAN_DANGER("The Fog cuts you off from the Hivenet."))
|
||||
return FALSE
|
||||
if(S.last_action > world.time)
|
||||
to_chat(src, SPAN_WARNING("You must wait before attempting another Hivenet action!"))
|
||||
return FALSE
|
||||
@@ -2185,6 +2192,10 @@
|
||||
to_chat(src, SPAN_WARNING("You are not connected to the Hivenet!"))
|
||||
return
|
||||
|
||||
if(is_lemurian_sea_sector())
|
||||
to_chat(src, SPAN_WARNING("You attempt to reach the Hivenet, but find nothing!"))
|
||||
return
|
||||
|
||||
if(within_jamming_range(src))
|
||||
to_chat(src, SPAN_WARNING("You attempt to reach the Hivenet, but find nothing!"))
|
||||
return
|
||||
@@ -2204,6 +2215,10 @@
|
||||
set desc = "Get a list of all vaurca currently on the Hivenet."
|
||||
set category = "Hivenet"
|
||||
|
||||
if(is_lemurian_sea_sector())
|
||||
to_chat(src, SPAN_WARNING("You attempt to query the Hivenet, but find nothing."))
|
||||
return
|
||||
|
||||
var/list/all_vaurca = list()
|
||||
for(var/mob/living/carbon/human/vaurca in GLOB.human_mob_list)
|
||||
if(!vaurca.stat && isvaurca(vaurca) && vaurca.internal_organs_by_name[BP_NEURAL_SOCKET])
|
||||
|
||||
@@ -169,8 +169,8 @@
|
||||
return default_language
|
||||
return GLOB.all_languages[LANGUAGE_LOCAL_DRONE]
|
||||
|
||||
/mob/living/silicon/robot/drone/fall_impact()
|
||||
..(damage_mod = 0.05) //reduces fall damage by 95%
|
||||
/mob/living/silicon/robot/drone/fall_impact(levels_fallen, stopped_early = FALSE, var/damage_mod = 1)
|
||||
..(levels_fallen, stopped_early, damage_mod * 0.05) //reduces fall damage by 95%
|
||||
|
||||
/mob/living/silicon/robot/drone/construction
|
||||
// Look and feel
|
||||
|
||||
@@ -64,7 +64,7 @@
|
||||
blood_overlay_icon = initial(blood_overlay_icon)
|
||||
handle_blood(TRUE)
|
||||
|
||||
/mob/living/simple_animal/carp/fall_impact()
|
||||
/mob/living/simple_animal/carp/fall_impact(levels_fallen, stopped_early = FALSE, var/damage_mod = 1)
|
||||
src.visible_message(SPAN_NOTICE("\The [src] gently floats to a stop."))
|
||||
return FALSE
|
||||
|
||||
|
||||
@@ -209,7 +209,7 @@
|
||||
. = ..()
|
||||
set_flee_target(throwingdatum?.thrower?.resolve() ? throwingdatum.thrower.resolve() : src.loc)
|
||||
|
||||
/mob/living/simple_animal/cat/fall_impact()
|
||||
/mob/living/simple_animal/cat/fall_impact(levels_fallen, stopped_early = FALSE, var/damage_mod = 1)
|
||||
src.visible_message(SPAN_NOTICE("\The [src] lands softly on \the [loc]!"))
|
||||
return FALSE
|
||||
|
||||
|
||||
@@ -211,7 +211,7 @@
|
||||
/mob/living/simple_animal/hostile/retaliate/minedrone/adjustHalLoss(var/damage)
|
||||
return
|
||||
|
||||
/mob/living/simple_animal/hostile/retaliate/minedrone/fall_impact()
|
||||
/mob/living/simple_animal/hostile/retaliate/minedrone/fall_impact(levels_fallen, stopped_early = FALSE, var/damage_mod = 1)
|
||||
visible_message(SPAN_DANGER("\The [src] bounces harmlessly on its inflated wheels."))
|
||||
return FALSE
|
||||
|
||||
|
||||
@@ -481,11 +481,13 @@ GLOBAL_LIST_INIT(organ_rel_size, list(
|
||||
|
||||
#define TILES_PER_SECOND 0.7
|
||||
/// Shake the camera of the person viewing the mob SO REAL!
|
||||
/// Takes the mob to shake, the time span to shake for, and the amount of tiles we're allowed to shake by in tiles
|
||||
/// Takes the mob to shake, the time span to shake for, and the amount of tiles we're allowed to shake by in tiles.
|
||||
/// Set drift to exactly TRUE for slower, gentler movement instead of impact-like shaking.
|
||||
/// Duration isn't taken as a strict limit, since we don't trust our coders to not make things feel shitty. So it's more like a soft cap.
|
||||
/proc/shake_camera(mob/M, duration, strength=1)
|
||||
/proc/shake_camera(mob/M, duration, strength=1, drift = FALSE)
|
||||
if(!M || !M.client || duration < 1)
|
||||
return
|
||||
var/drift_mode = (drift == TRUE)
|
||||
var/client/C = M.client
|
||||
var/oldx = C.pixel_x
|
||||
var/oldy = C.pixel_y
|
||||
@@ -505,8 +507,12 @@ GLOBAL_LIST_INIT(organ_rel_size, list(
|
||||
var/x_pos = rand(min_x, max_x) + oldx
|
||||
var/y_pos = rand(min_y, max_y) + oldy
|
||||
|
||||
//We take the smaller of our two distances so things still have the propencity to feel somewhat jerky
|
||||
var/time = round(max(min(abs(last_x - x_pos), abs(last_y - y_pos)) * time_scalar, 1))
|
||||
var/time
|
||||
if(drift_mode)
|
||||
time = round(clamp(max(abs(last_x - x_pos), abs(last_y - y_pos)) * time_scalar * 6, 6, 20))
|
||||
else
|
||||
//We take the smaller of our two distances so things still have the propencity to feel somewhat jerky
|
||||
time = round(max(min(abs(last_x - x_pos), abs(last_y - y_pos)) * time_scalar, 1))
|
||||
|
||||
if (time_spent == 0)
|
||||
animate(C, pixel_x=x_pos, pixel_y=y_pos, time=time)
|
||||
@@ -518,7 +524,7 @@ GLOBAL_LIST_INIT(organ_rel_size, list(
|
||||
//We go based on time spent, so there is a chance we'll overshoot our duration. Don't care
|
||||
time_spent += time
|
||||
|
||||
animate(pixel_x=oldx, pixel_y=oldy, time=3)
|
||||
animate(pixel_x=oldx, pixel_y=oldy, time = drift_mode ? 10 : 3)
|
||||
|
||||
#undef TILES_PER_SECOND
|
||||
|
||||
|
||||
Reference in New Issue
Block a user