Merge remote-tracking branch 'upstream/master' into Colourable-flannel

This commit is contained in:
SatinIsle
2023-07-20 10:04:19 +01:00
51 changed files with 993 additions and 111 deletions
+28 -1
View File
@@ -701,4 +701,31 @@
if(isobj(A) || ismob(A))
hear |= recursive_mob_check(A, hear, 3, 1, 0, 1)
return hear
return hear
/proc/get_belly(var/atom/A) // return a belly we're in, one way or another; and if we aren't (or are too deep to comprehend being in belly), returns null
var/atom/loc_check = A.loc
var/recursion_level = 0
while(loc_check && !isbelly(loc_check) && !isturf(loc_check))
if(recursion_level > 7) // abstractly picked number, but basically means we tried going 8 levels up. Something is wrong if youre THAT deep anyway
break
loc_check = loc_check.loc
recursion_level++
if(isbelly(loc_check))
return loc_check
return null
/proc/get_all_prey_recursive(var/mob/living/L, var/client_check = 1) // returns all prey inside the target as well all prey of target's prey, as well as all prey inside target's prey, etc.
var/list/result = list()
if(!istype(L) || !(L.vore_organs) || !(L.vore_organs.len))
return result
for(var/obj/belly/B in L.vore_organs)
for(var/mob/living/P in B.contents)
if(istype(P))
if(client_check && P.client)
result |= P
result |= get_all_prey_recursive(P, client_check)
return result
+2
View File
@@ -114,8 +114,10 @@
#define ui_temp "EAST-1:28,CENTER-2:13"
#define ui_health "EAST-1:28,CENTER-1:15"
#define ui_internal "EAST-1:28,CENTER:17"
#define ui_under_health "EAST-1:28,CENTER-2:13"
//borgs
#define ui_borg_health "EAST-1:28,CENTER-2:13" //borgs have the health display where humans have the pressure damage indicator.
#define ui_borg_under_health "EAST-1:31,CENTER-3:13"
#define ui_alien_health "EAST-1:28,CENTER-2:13" //aliens have the health display where humans have the pressure damage indicator.
#define ui_ling_chemical_display "EAST-1:28,CENTER-3:15"
+70
View File
@@ -160,6 +160,13 @@
using.alpha = HUD.ui_alpha
adding += using
using = new /obj/screen/useself()
using.icon = HUD.ui_style
using.screen_loc = ui_swaphand2
using.color = HUD.ui_color
using.alpha = HUD.ui_alpha
adding |= using
inv_box = new /obj/screen/inventory/hand()
inv_box.hud = HUD
inv_box.name = "r_hand"
@@ -257,6 +264,57 @@
healths.screen_loc = ui_health
hud_elements |= healths
autowhisper_display = new /obj/screen()
autowhisper_display.icon = 'icons/mob/screen/minimalist.dmi'
autowhisper_display.icon_state = "autowhisper"
autowhisper_display.name = "autowhisper"
autowhisper_display.screen_loc = ui_under_health
hud_elements |= autowhisper_display
var/obj/screen/aw = new /obj/screen()
aw.icon = 'icons/mob/screen/minimalist.dmi'
aw.icon_state = "aw-select"
aw.name = "autowhisper mode"
aw.screen_loc = ui_under_health
hud_elements |= aw
aw = new /obj/screen()
aw.icon = 'icons/mob/screen/minimalist.dmi'
aw.icon_state = "lang"
aw.name = "check known languages"
aw.screen_loc = ui_under_health
hud_elements |= aw
aw = new /obj/screen()
aw.icon = 'icons/mob/screen/minimalist.dmi'
aw.icon_state = "pose"
aw.name = "set pose"
aw.screen_loc = ui_under_health
hud_elements |= aw
aw = new /obj/screen()
aw.icon = 'icons/mob/screen/minimalist.dmi'
aw.icon_state = "up"
aw.name = "move upwards"
aw.screen_loc = ui_under_health
hud_elements |= aw
aw = new /obj/screen()
aw.icon = 'icons/mob/screen/minimalist.dmi'
aw.icon_state = "down"
aw.name = "move downwards"
aw.screen_loc = ui_under_health
hud_elements |= aw
aw = new /obj/screen()
aw.icon = HUD.ui_style
aw.icon_state = "use"
aw.name = "use held item on self"
aw.screen_loc = ui_swaphand2
using.color = HUD.ui_color
using.alpha = HUD.ui_alpha
adding |= using
//VOREStation Addition begin
shadekin_display = new /obj/screen/shadekin()
shadekin_display.screen_loc = ui_shadekin_display
@@ -364,3 +422,15 @@
/obj/screen/wizard/energy
name = "energy"
icon_state = "wiz_energy"
/obj/screen/useself
name = "use held item on self"
icon_state = "use"
var/next = 0
/obj/screen/useself/proc/can_use(var/mob/living/carbon/human/h, var/obj/item/i) //Basically trying to use the item this way skips the cooldown
if(world.time >= next) //And trying to check the cooldown doesn't work because when you click the UI it sets a cooldown
next = h.get_attack_speed(i) //So instead we'll just put a cooldown on the use button and apply the item's cooldown to the player
h.setClickCooldown(next) //Otherwise you can click the button and yourself faster than the normal cooldown. SO WE SET BOTH!!!!
next += world.time
i.attack(h, h)
+43 -1
View File
@@ -11,7 +11,7 @@ var/obj/screen/robot_inventory
var/list/adding = list()
var/list/other = list()
HUD.adding = adding
HUD.other = other
@@ -90,6 +90,48 @@ var/obj/screen/robot_inventory
healths.screen_loc = ui_borg_health
other += healths
autowhisper_display = new /obj/screen()
autowhisper_display.icon = 'icons/mob/screen/minimalist.dmi'
autowhisper_display.icon_state = "autowhisper"
autowhisper_display.name = "autowhisper"
autowhisper_display.screen_loc = ui_borg_under_health
other |= autowhisper_display
var/obj/screen/aw = new /obj/screen()
aw.icon = 'icons/mob/screen/minimalist.dmi'
aw.icon_state = "aw-select"
aw.name = "autowhisper mode"
aw.screen_loc = ui_borg_under_health
other |= aw
aw = new /obj/screen()
aw.icon = 'icons/mob/screen/minimalist.dmi'
aw.icon_state = "lang"
aw.name = "check known languages"
aw.screen_loc = ui_borg_under_health
other |= aw
aw = new /obj/screen()
aw.icon = 'icons/mob/screen/minimalist.dmi'
aw.icon_state = "pose"
aw.name = "set pose"
aw.screen_loc = ui_borg_under_health
other |= aw
aw = new /obj/screen()
aw.icon = 'icons/mob/screen/minimalist.dmi'
aw.icon_state = "up"
aw.name = "move upwards"
aw.screen_loc = ui_borg_under_health
other |= aw
aw = new /obj/screen()
aw.icon = 'icons/mob/screen/minimalist.dmi'
aw.icon_state = "down"
aw.name = "move downwards"
aw.screen_loc = ui_borg_under_health
other |= aw
//Installed Module
hands = new /obj/screen()
hands.icon = HUD.ui_style
+31
View File
@@ -454,6 +454,37 @@
if("drop")
if(usr.client)
usr.client.drop_item()
if("autowhisper")
if(isliving(usr))
var/mob/living/u = usr
u.toggle_autowhisper()
if("autowhisper mode")
if(isliving(usr))
var/mob/living/u = usr
u.autowhisper_mode()
if("check known languages")
usr.check_languages()
if("set pose")
if(ishuman(usr))
var/mob/living/carbon/human/u = usr
u.pose()
else if (issilicon(usr))
var/mob/living/silicon/u = usr
u.pose()
if("move upwards")
usr.up()
if("move downwards")
usr.down()
if("use held item on self")
var/obj/screen/useself/s = src
if(ishuman(usr))
var/mob/living/carbon/human/u = usr
var/obj/item/i = u.get_active_hand()
if(i)
s.can_use(u,i)
else
to_chat(usr, "<span class='notice'>You're not holding anything to use. You need to have something in your active hand to use it.</span>")
if("module")
if(isrobot(usr))
@@ -20,7 +20,7 @@
// Values were extracted from the template itself
results = list(
list("entry" = "Pressure", "units" = "kPa", "val" = "[round(pressure,0.1)]", "bad_high" = 120, "poor_high" = 110, "poor_low" = 95, "bad_low" = 80),
list("entry" = "Temperature", "units" = "&deg;C", "val" = "[round(environment.temperature-T0C,0.1)]", "bad_high" = 35, "poor_high" = 25, "poor_low" = 15, "bad_low" = 5),
list("entry" = "Temperature", "units" = "\u00B0" + "C", "val" = "[round(environment.temperature-T0C,0.1)]", "bad_high" = 35, "poor_high" = 25, "poor_low" = 15, "bad_low" = 5),
list("entry" = "Oxygen", "units" = "kPa", "val" = "[round(o2_level*100,0.1)]", "bad_high" = 140, "poor_high" = 135, "poor_low" = 19, "bad_low" = 17),
list("entry" = "Nitrogen", "units" = "kPa", "val" = "[round(n2_level*100,0.1)]", "bad_high" = 105, "poor_high" = 85, "poor_low" = 50, "bad_low" = 40),
list("entry" = "Carbon Dioxide", "units" = "kPa", "val" = "[round(co2_level*100,0.1)]", "bad_high" = 10, "poor_high" = 5, "poor_low" = 0, "bad_low" = 0),
@@ -38,4 +38,13 @@
starts_with = list(/obj/item/weapon/reagent_containers/food/snacks/canned/brainzsnax/red = 6)
/obj/item/weapon/storage/box/freezer
can_hold = list(/obj/item/organ, /obj/item/weapon/reagent_containers/blood, /obj/item/weapon/reagent_containers/glass, /obj/item/weapon/reagent_containers/food)
can_hold = list(/obj/item/organ, /obj/item/weapon/reagent_containers/blood, /obj/item/weapon/reagent_containers/glass, /obj/item/weapon/reagent_containers/food)
/obj/item/weapon/storage/box/altevian_ammo
name = "SAM .48 ammo box"
desc = "A box of ratty ammo."
icon_state = "secbox"
starts_with = list(/obj/item/ammo_magazine/sam48 = 3)
max_storage_space = ITEMSIZE_COST_NORMAL * 3
drop_sound = 'sound/items/drop/ammobox.ogg'
pickup_sound = 'sound/items/pickup/ammobox.ogg'
+52 -34
View File
@@ -55,9 +55,56 @@
if(8)
pixel_x = -32
/obj/structure/micro_tunnel/proc/find_destinations()
var/list/destinations = list()
var/turf/myturf = get_turf(src.loc)
var/datum/planet/planet
for(var/datum/planet/P in SSplanets.planets)
if(myturf.z in P.expected_z_levels)
planet = P
else
for(var/obj/structure/micro_tunnel/t in world)
if(t == src)
continue
if(magic || t.magic)
destinations |= t
continue
if(t.z == z)
destinations |= t
continue
var/turf/targetturf = get_turf(t.loc)
if(planet)
if(targetturf.z in planet.expected_z_levels)
destinations |= t
continue
else
var/above = GetAbove(myturf)
if(above && t.z == z + 1)
destinations |= t
continue
var/below = GetBelow(myturf)
if(below && t.z == z - 1)
destinations |= t
return destinations
/obj/structure/micro_tunnel/attack_hand(mob/living/user)
if(!isliving(user))
tunnel_interact(user)
return ..()
/obj/structure/micro_tunnel/attack_generic(mob/user, damage, attack_verb)
tunnel_interact(user)
return ..()
/obj/structure/micro_tunnel/attack_robot(mob/living/user)
var/turf/hole = get_turf(src) //Borgs can click stuff from far away, let's make sure they're next to the hole
var/turf/borg = get_turf(user)
if(hole.AdjacentQuick(borg))
tunnel_interact(user)
return ..()
/obj/structure/micro_tunnel/proc/tunnel_interact(mob/living/user)
if(!isliving(user))
return
if(user.loc == src)
var/list/our_options = list("Exit", "Move")
@@ -83,35 +130,7 @@
to_chat(user, "<span class = 'warning'>You can't do that unless you're in \the [src].</span>")
return
var/list/destinations = list()
var/turf/myturf = get_turf(src.loc)
var/datum/planet/planet
for(var/datum/planet/P in SSplanets.planets)
if(myturf.z in P.expected_z_levels)
planet = P
else
for(var/obj/structure/micro_tunnel/t in world)
if(t == src)
continue
if(magic || t.magic)
destinations |= t
continue
if(t.z == z)
destinations |= t
continue
var/turf/targetturf = get_turf(t.loc)
if(planet)
if(targetturf.z in planet.expected_z_levels)
destinations |= t
continue
else
var/above = GetAbove(myturf)
if(above && t.z == z + 1)
destinations |= t
continue
var/below = GetBelow(myturf)
if(below && t.z == z - 1)
destinations |= t
var/list/destinations = find_destinations()
if(!destinations.len)
to_chat(user, "<span class = 'warning'>There are no other tunnels connected to this one!</span>")
@@ -212,10 +231,6 @@
return FALSE
/obj/structure/micro_tunnel/attack_generic(mob/user, damage, attack_verb)
attack_hand(user)
return ..()
/obj/structure/micro_tunnel/MouseDrop_T(mob/living/M, mob/living/user)
. = ..()
if(M != user)
@@ -301,6 +316,9 @@
to_chat(usr, "<span class = 'warning'>You can't do that unless you're in \the [src].</span>")
return
var/list/destinations = list()
if(istype(src,/obj/structure/micro_tunnel)) //If we're in a tunnel let's also get the tunnel's destinations
var/obj/structure/micro_tunnel/t = src
destinations = t.find_destinations()
var/turf/myturf = get_turf(src.loc)
for(var/obj/o in range(1,myturf))
if(!istype(o,/obj))
@@ -521,6 +521,12 @@
ckeywhitelist = list("hunterbirk")
character_name = list("Aria Blue")
/datum/gear/fluff/mercury_vopal_ring
path = /obj/item/clothing/gloves/ring/material/void_opal/fluff/mercury
display_name = "Mercury's Mate Ring"
ckeywhitelist = list("haloren")
character_name = list("Mercury")
// I CKEYS
/datum/gear/fluff/ruda_badge
path = /obj/item/clothing/accessory/badge/holo/detective/ruda
@@ -1212,6 +1218,13 @@
ckeywhitelist = list("suicidalpickles")
character_name = list("Silent Stripes")
/datum/gear/fluff/parrizjacket
path = /obj/item/clothing/suit/storage/toggle/labcoat/fluff/parrizjacket
display_name = "pink crop bomber"
slot = slot_wear_suit
ckeywhitelist = list("satinisle")
character_name = list("Parriz Tavakdavi")
// T CKEYS
/datum/gear/fluff/ascian_medal
path = /obj/item/clothing/accessory/medal/silver/unity/tabiranth
+3
View File
@@ -69,3 +69,6 @@
/obj/item/clothing/gloves/ring/material/tin/New(var/newloc)
..(newloc, MAT_TIN)
/obj/item/clothing/gloves/ring/material/void_opal/New(var/newloc)
..(newloc, MAT_VOPAL)
+3
View File
@@ -31,6 +31,9 @@
if(forced_psay)
pme(message)
return
if(autowhisper)
return me_verb_subtle(message)
//VOREStation Addition End
if(act == "help")
+117
View File
@@ -0,0 +1,117 @@
/datum/event/spacefish_migration
startWhen = 0 // Start immediately
announceWhen = 45 // Adjusted by setup
endWhen = 75 // Adjusted by setup
var/fish_type = /mob/living/simple_mob/animal/space/carp/event
var/fish_base_cap = 2
var/fish_cap_mult = 3
var/fish_cap = 10
var/list/spawned_fish = list()
// Possible fish types. First is the path, second is base cap, third is cap severity multiplier
var/list/possible_fish_types = list(
list(/mob/living/simple_mob/animal/space/carp/event, 2, 3),
list(/mob/living/simple_mob/vore/alienanimals/space_jellyfish, 2, 3),
list(/mob/living/simple_mob/animal/space/gnat, 8, 4),
list(/mob/living/simple_mob/animal/space/ray, 1, 1),
list(/mob/living/simple_mob/animal/space/shark/event, 1, 1)
)
/datum/event/spacefish_migration/setup()
announceWhen = rand(30, 60) // 1 to 2 minutes
endWhen += severity * 25
var/list/fish_config = pick(possible_fish_types)
fish_type = fish_config[1]
fish_base_cap = fish_config[2]
fish_cap_mult = fish_config[3]
fish_cap = fish_base_cap + fish_cap_mult ** severity // No more than this many at once regardless of waves. (5, 11, 29)
/datum/event/spacefish_migration/start()
affecting_z -= global.using_map.sealed_levels // Space levels only please!
..()
/datum/event/spacefish_migration/announce()
var/announcement = ""
if(severity == EVENT_LEVEL_MAJOR)
announcement = "Massive migration of unknown biological entities has been detected near [location_name()], please stand-by."
else
announcement = "Unknown biological [spawned_fish.len == 1 ? "entity has" : "entities have"] been detected near [location_name()], please stand-by."
command_announcement.Announce(announcement, "Lifesign Alert")
/datum/event/spacefish_migration/tick()
if(activeFor % 5 != 0)
return // Only process every 10 seconds.
if(count_spawned_fish() < fish_cap)
spawn_fish(rand(3, 3 + severity * 2) - 1, 1, severity + 2)
/datum/event/spacefish_migration/proc/spawn_fish(var/num_groups, var/group_size_min, var/group_size_max, var/dir)
if(isnull(dir))
dir = (victim && prob(80)) ? victim.fore_dir : pick(GLOB.cardinal)
// Check if any landmarks exist!
var/list/spawn_locations = list()
for(var/obj/effect/landmark/C in landmarks_list)
if(C.name == "carpspawn" && (C.z in affecting_z))
spawn_locations.Add(C.loc)
if(spawn_locations.len) // Okay we've got landmarks, lets use those!
shuffle_inplace(spawn_locations)
num_groups = min(num_groups, spawn_locations.len)
for (var/i = 1, i <= num_groups, i++)
var/group_size = rand(group_size_min, group_size_max)
for (var/j = 0, j < group_size, j++)
spawn_one_fish(spawn_locations[i])
return
// Okay we did *not* have any landmarks, so lets do our best!
var/i = 1
while (i <= num_groups)
var/Z = pick(affecting_z)
var/group_size = rand(group_size_min, group_size_max)
var/turf/map_center = locate(round(world.maxx/2), round(world.maxy/2), Z)
var/turf/group_center = pick_random_edge_turf(dir, Z, TRANSITIONEDGE + 2)
var/list/turfs = getcircle(group_center, 2)
for (var/j = 0, j < group_size, j++)
var/mob/living/simple_mob/animal/M = spawn_one_fish(turfs[(i % turfs.len) + 1])
// Ray trace towards middle of the map to find where they can stop just outside of structure/ship.
var/turf/target
for(var/turf/T in getline(get_turf(M), map_center))
if(!T.is_space())
break;
target = T
if(target)
M.ai_holder?.give_destination(target) // Ask fish to swim towards the middle of the map
i++
// Spawn a single fish at given location.
/datum/event/spacefish_migration/proc/spawn_one_fish(var/loc)
var/mob/living/simple_mob/animal/M = new fish_type(loc)
GLOB.destroyed_event.register(M, src, PROC_REF(on_fish_destruction))
spawned_fish.Add(M)
return M
// Counts living fish spawned by this event.
/datum/event/spacefish_migration/proc/count_spawned_fish()
. = 0
for(var/mob/living/simple_mob/animal/M as anything in spawned_fish)
if(!QDELETED(M) && M.stat != DEAD)
. += 1
// If fish is bomphed, remove it from the list.
/datum/event/spacefish_migration/proc/on_fish_destruction(var/mob/M)
spawned_fish -= M
GLOB.destroyed_event.unregister(M, src, PROC_REF(on_fish_destruction))
/datum/event/spacefish_migration/end()
. = ..()
// Clean up fish that died in space for some reason.
spawn(0)
for(var/mob/living/simple_mob/SM in spawned_fish)
if(SM.stat == DEAD)
var/turf/T = get_turf(SM)
if(istype(T, /turf/space))
if(prob(75))
qdel(SM)
CHECK_TICK
// Overmap version
/datum/event/spacefish_migration/overmap/announce()
return
+4 -4
View File
@@ -30,7 +30,7 @@
*/
/datum/material/diamond
name = "diamond"
name = MAT_DIAMOND
stack_type = /obj/item/stack/material/diamond
flags = MATERIAL_UNMELTABLE
cut_delay = 60
@@ -46,7 +46,7 @@
supply_conversion_value = 8
/datum/material/quartz
name = "quartz"
name = MAT_QUARTZ
display_name = "quartz"
use_name = "quartz"
icon_colour = "#e6d7df"
@@ -57,7 +57,7 @@
supply_conversion_value = 4
/datum/material/painite
name = "painite"
name = MAT_PAINITE
display_name = "painite"
use_name = "painite"
icon_colour = "#6b4947"
@@ -70,7 +70,7 @@
supply_conversion_value = 4
/datum/material/void_opal
name = "void opal"
name = MAT_VOPAL
display_name = "void opal"
use_name = "void opal"
icon_colour = "#0f0f0f"
+45
View File
@@ -0,0 +1,45 @@
/mob/living/verb/toggle_autowhisper()
set name = "Autowhisper Toggle"
set desc = "Toggle whether you will automatically whisper/subtle"
set category = "IC"
autowhisper = !autowhisper
if(autowhisper_display)
autowhisper_display.icon_state = "[autowhisper ? "autowhisper1" : "autowhisper"]"
if(autowhisper_mode == "Psay/Pme")
if(isbelly(loc) && absorbed)
var/obj/belly/b = loc
if(b.mode_flags & DM_FLAG_FORCEPSAY)
var/mes = "but you are affected by forced psay right now, so you will automatically use psay/pme instead of any other option."
to_chat(src, "<span class='notice'>Autowhisper has been [autowhisper ? "enabled, [mes]" : "disabled, [mes]"].</span>")
return
else
forced_psay = autowhisper
to_chat(src, "<span class='notice'>Autowhisper has been [autowhisper ? "enabled. You will now automatically psay/pme when using say/me. As a note, this option will only work if you are in a situation where you can send psay/pme messages! Otherwise it will work as default whisper/subtle" : "disabled"].</span>")
else
to_chat(src, "<span class='notice'>Autowhisper has been [autowhisper ? "enabled. You will now automatically whisper/subtle when using say/me" : "disabled"].</span>")
/mob/living/verb/autowhisper_mode()
set name = "Autowhisper Mode"
set desc = "Set the mode your emotes will default to while using Autowhisper"
set category = "IC"
var/choice = tgui_input_list(src, "Select Custom Subtle Mode", "Custom Subtle Mode", list("Adjacent Turfs (Default)", "My Turf", "My Table", "Current Belly (Prey)", "Specific Belly (Pred)", "Specific Person", "Psay/Pme"))
if(!choice || choice == "Adjacent Turfs (Default)")
autowhisper_mode = null
to_chat(src, "<span class='notice'>Your subtles have returned to the default setting.</span>")
return
if(choice == "Psay/Pme")
if(autowhisper)
if(isbelly(loc) && absorbed)
var/obj/belly/b = loc
if(b.mode_flags & DM_FLAG_FORCEPSAY)
to_chat(src, "<span class='warning'>You can't set that mode right now, as you appear to be absorbed in a belly using forced psay!</span>")
return
forced_psay = TRUE
to_chat(src, "<span class='notice'>As a note, this option will only work if you are in a situation where you can send psay/pme messages! Otherwise it will work as default whisper/subtle.</span>")
autowhisper_mode = choice
to_chat(src, "<span class='notice'>Your subtles have been set to <b>[autowhisper_mode]</b>.</span>")
+73 -4
View File
@@ -26,6 +26,12 @@
var/corpseidjob = null // Needs to be in quotes, such as "Clown" or "Chef." This just determines what the ID reads as, not their access
var/corpseidaccess = null //This is for access. See access.dm for which jobs give what access. Again, put in quotes. Use "Captain" if you want it to be all access.
var/corpseidicon = null //For setting it to be a gold, silver, CentCom etc ID
var/species = SPECIES_HUMAN //defaults to generic-ass humans
var/random_species = FALSE //flip to TRUE to randomize species from the list below
var/list/random_species_list = list(SPECIES_HUMAN,SPECIES_TAJ,SPECIES_UNATHI,SPECIES_SKRELL)
var/list/tail_type = null
var/list/ear_type = null
var/list/wing_type = null
var/corpsesynthtype = 0 // 0 for organic, 1 for drone, 2 for posibrain
var/corpsesynthbrand = "Unbranded"
@@ -34,6 +40,69 @@
/obj/effect/landmark/mobcorpse/proc/createCorpse() //Creates a mob and checks for gear in each slot before attempting to equip it.
var/mob/living/carbon/human/M = new /mob/living/carbon/human (src.loc)
if(random_species)
var/random_pick = pick(random_species_list)
M.set_species(random_pick)
src.species = random_pick
else
M.set_species(species)
if(tail_type && tail_type.len)
if(tail_type[1] in tail_styles_list)
M.tail_style = tail_styles_list[tail_type[1]]
if(tail_type.len > 1)
var/list/color_rgb_list = hex2rgb(tail_type[2])
M.r_tail = color_rgb_list[1]
M.g_tail = color_rgb_list[2]
M.b_tail = color_rgb_list[3]
if(tail_type.len > 2)
color_rgb_list = hex2rgb(tail_type[3])
M.r_tail2 = color_rgb_list[1]
M.g_tail2 = color_rgb_list[2]
M.b_tail2 = color_rgb_list[3]
if(tail_type.len > 3)
color_rgb_list = hex2rgb(tail_type[4])
M.r_tail3 = color_rgb_list[1]
M.g_tail3 = color_rgb_list[2]
M.b_tail3 = color_rgb_list[3]
M.update_tail_showing()
if(ear_type && ear_type.len)
if(ear_type[1] in ear_styles_list)
M.ear_style = ear_styles_list[ear_type[1]]
if(ear_type.len > 1)
var/list/color_rgb_list = hex2rgb(ear_type[2])
M.r_ears = color_rgb_list[1]
M.g_ears = color_rgb_list[2]
M.b_ears = color_rgb_list[3]
if(ear_type.len > 2)
color_rgb_list = hex2rgb(ear_type[3])
M.r_ears2 = color_rgb_list[1]
M.g_ears2 = color_rgb_list[2]
M.b_ears2 = color_rgb_list[3]
if(ear_type.len > 3)
color_rgb_list = hex2rgb(ear_type[4])
M.r_ears3 = color_rgb_list[1]
M.g_ears3 = color_rgb_list[2]
M.b_ears3 = color_rgb_list[3]
M.update_hair()
if(wing_type && wing_type.len)
if(wing_type[1] in wing_styles_list)
M.wing_style = wing_styles_list[wing_type[1]]
if(wing_type.len > 1)
var/list/color_rgb_list = hex2rgb(wing_type[2])
M.r_wing = color_rgb_list[1]
M.g_wing = color_rgb_list[2]
M.b_wing = color_rgb_list[3]
if(wing_type.len > 2)
color_rgb_list = hex2rgb(wing_type[3])
M.r_wing2 = color_rgb_list[1]
M.g_wing2 = color_rgb_list[2]
M.b_wing2 = color_rgb_list[3]
if(wing_type.len > 3)
color_rgb_list = hex2rgb(wing_type[4])
M.r_wing3 = color_rgb_list[1]
M.g_wing3 = color_rgb_list[2]
M.b_wing3 = color_rgb_list[3]
M.update_wing_showing()
M.real_name = generateCorpseName()
M.set_stat(DEAD) //Kills the new mob
if(corpsesynthtype > 0)
@@ -48,8 +117,6 @@
O.robotize(corpsesynthbrand)
if(src.corpseuniform)
M.equip_to_slot_or_del(new src.corpseuniform(M), slot_w_uniform)
if(src.corpsesuit)
M.equip_to_slot_or_del(new src.corpsesuit(M), slot_wear_suit)
if(src.corpseshoes)
M.equip_to_slot_or_del(new src.corpseshoes(M), slot_shoes)
if(src.corpsegloves)
@@ -60,8 +127,6 @@
M.equip_to_slot_or_del(new src.corpseglasses(M), slot_glasses)
if(src.corpsemask)
M.equip_to_slot_or_del(new src.corpsemask(M), slot_wear_mask)
if(src.corpsehelmet)
M.equip_to_slot_or_del(new src.corpsehelmet(M), slot_head)
if(src.corpsebelt)
M.equip_to_slot_or_del(new src.corpsebelt(M), slot_belt)
if(src.corpsepocket1)
@@ -90,6 +155,10 @@
W.assignment = corpseidjob
W.registered_name = M.real_name
M.equip_to_slot_or_del(W, slot_wear_id)
if(src.corpsehelmet)
M.equip_voidhelm_to_slot_or_del_with_refit(new src.corpsehelmet(M), slot_head, src.species)
if(src.corpsesuit)
M.equip_voidsuit_to_slot_or_del_with_refit(new src.corpsesuit(M), slot_wear_suit, src.species)
delete_me = 1
qdel(src)
+16
View File
@@ -24,3 +24,19 @@
var/number = rand(0,999)
var/purpose = pick(list("Recon","Combat","Kill","Guard","Scout","Murder","Capture","Raid","Attack","Battle"))
return "[letter]-[number] [purpose] Droid"
/obj/effect/landmark/mobcorpse/altevian
name = "Altevian Naval Officer"
corpseuniform = /obj/item/clothing/under/altevian
corpsesuit = /obj/item/clothing/suit/space/void/altevian_heartbreaker
corpseshoes = /obj/item/clothing/shoes/boots/swat
corpsegloves = /obj/item/clothing/gloves/swat
corpseradio = /obj/item/device/radio/headset
corpsemask = /obj/item/clothing/mask/altevian_breath
corpsehelmet = /obj/item/clothing/head/helmet/space/void/altevian_heartbreaker
corpseid = 1
corpseidjob = "Altevian Navy"
corpseidaccess = "Syndicate"
species = SPECIES_ALTEVIAN
ear_type = list(/datum/sprite_accessory/ears/altevian, "#777777", "#FFCCFF")
tail_type = list(/datum/sprite_accessory/tail/altevian, "#FF9999")
@@ -915,9 +915,9 @@ var/global/list/damage_icon_parts = list() //see UpdateDamageIcon()
if(!back)
return //Why do anything
var/icon/c_mask = tail_style?.clip_mask //TODO: Figure out why the fuck it doesnt work with backpacks. Leaving this in for now, even though for some reason it does nothing.
var/icon/c_mask = tail_style?.clip_mask
if(c_mask)
if(istype(back, /obj/item/weapon/storage/backpack/saddlebag))
if(istype(back, /obj/item/weapon/storage/backpack/saddlebag) || istype(back, /obj/item/weapon/storage/backpack/saddlebag_common))
c_mask = null
overlays_standing[BACK_LAYER] = back.make_worn_icon(body_type = species.get_bodytype(src), slot_name = slot_back_str, default_icon = INV_BACK_DEF_ICON, default_layer = BACK_LAYER, clip_mask = c_mask)
+2 -1
View File
@@ -1,7 +1,8 @@
/mob
var/muffled = FALSE // Used by muffling belly
var/forced_psay = FALSE // If true will prevent the user from speaking with normal say/emotes, and instead redirect these to a private speech mode with their predator.
var/autowhisper = FALSE // Automatically whisper
var/autowhisper_mode = null // Mode to use with autowhisper
/mob/living
var/ooc_notes = null
appearance_flags = TILE_BOUND|PIXEL_SCALE|KEEP_TOGETHER|LONG_GLIDE
+2
View File
@@ -162,6 +162,8 @@ var/list/channel_to_radio_key = new
if(forced_psay)
psay(message)
return
if(autowhisper)
whispering = 1
//VOREStation Addition End
//Parse the mode
var/message_mode = parse_message_mode(message, "headset")
@@ -325,6 +325,48 @@
using.alpha = ui_alpha
other |= using
autowhisper_display = new /obj/screen()
autowhisper_display.icon = 'icons/mob/screen/minimalist.dmi'
autowhisper_display.icon_state = "autowhisper"
autowhisper_display.name = "autowhisper"
autowhisper_display.screen_loc = "EAST-1:28,CENTER-2:13"
hud_elements |= autowhisper_display
var/obj/screen/aw = new /obj/screen()
aw.icon = 'icons/mob/screen/minimalist.dmi'
aw.icon_state = "aw-select"
aw.name = "autowhisper mode"
aw.screen_loc = "EAST-1:28,CENTER-2:13"
hud_elements |= aw
aw = new /obj/screen()
aw.icon = 'icons/mob/screen/minimalist.dmi'
aw.icon_state = "lang"
aw.name = "check known languages"
aw.screen_loc = ui_under_health
hud_elements |= aw
aw = new /obj/screen()
aw.icon = 'icons/mob/screen/minimalist.dmi'
aw.icon_state = "pose"
aw.name = "set pose"
aw.screen_loc = ui_under_health
hud_elements |= aw
aw = new /obj/screen()
aw.icon = 'icons/mob/screen/minimalist.dmi'
aw.icon_state = "up"
aw.name = "move upwards"
aw.screen_loc = ui_under_health
hud_elements |= aw
aw = new /obj/screen()
aw.icon = 'icons/mob/screen/minimalist.dmi'
aw.icon_state = "down"
aw.name = "move downwards"
aw.screen_loc = ui_under_health
hud_elements |= aw
if(client)
client.screen = list()
client.screen += hud_elements
@@ -13,9 +13,13 @@
switch(a_intent)
if(I_HELP)
var/mob/living/L = A
if(istype(L) && (!has_hands || !L.attempt_to_scoop(src)))
custom_emote(1,"[pick(friendly)] \the [A]!")
if(isliving(A))
var/mob/living/L = A
if(istype(L) && (!has_hands || !L.attempt_to_scoop(src)))
custom_emote(1,"[pick(friendly)] \the [A]!")
if(istype(A,/obj/structure/micro_tunnel)) //Allows simplemobs to click on mouse holes, mice should be allowed to go in mouse holes, and other mobs
var/obj/structure/micro_tunnel/t = A //should be allowed to drag the mice out of the mouse holes!
t.tunnel_interact(src)
if(I_HURT)
if(can_special_attack(A) && special_attack_target(A))
@@ -48,4 +52,4 @@
return
if(projectiletype)
shoot_target(A)
shoot_target(A)
@@ -158,7 +158,40 @@
healths.screen_loc = ui_health
hud_elements |= healths
autowhisper_display = new /obj/screen()
autowhisper_display.icon = 'icons/mob/screen/minimalist.dmi'
autowhisper_display.icon_state = "autowhisper"
autowhisper_display.name = "autowhisper"
autowhisper_display.screen_loc = "EAST-1:28,CENTER-2:13"
hud_elements |= autowhisper_display
var/obj/screen/aw = new /obj/screen()
aw.icon = 'icons/mob/screen/minimalist.dmi'
aw.icon_state = "aw-select"
aw.name = "autowhisper mode"
aw.screen_loc = "EAST-1:28,CENTER-2:13"
hud_elements |= aw
aw = new /obj/screen()
aw.icon = 'icons/mob/screen/minimalist.dmi'
aw.icon_state = "lang"
aw.name = "check known languages"
aw.screen_loc = ui_under_health
hud_elements |= aw
aw = new /obj/screen()
aw.icon = 'icons/mob/screen/minimalist.dmi'
aw.icon_state = "up"
aw.name = "move upwards"
aw.screen_loc = ui_under_health
hud_elements |= aw
aw = new /obj/screen()
aw.icon = 'icons/mob/screen/minimalist.dmi'
aw.icon_state = "down"
aw.name = "move downwards"
aw.screen_loc = ui_under_health
hud_elements |= aw
pain = new /obj/screen( null )
@@ -0,0 +1,131 @@
/mob/living/simple_mob/humanoid/merc/altevian
name = "altevian naval officer"
desc = "Altevian Naval Slicer, adorned in the top of the line Heartbreaker suit. Armed with a handheld cutter."
tt_desc = "E Rattus sapiens"
icon = 'icons/mob/altevian_mercs_vr.dmi'
icon_state = "merc_melee_cutter"
icon_living = "merc_melee_cutter"
icon_dead = "merc-dead"
icon_gib = "merc_gib"
faction = "altevian"
movement_cooldown = 1
status_flags = 0
response_help = "pokes"
response_disarm = "shoves"
response_harm = "hits"
harm_intent_damage = 5
melee_damage_lower = 30
melee_damage_upper = 30
attack_armor_pen = 50
attack_sharp = TRUE
attack_edge = 1
attacktext = list("slashed")
armor = list(melee = 90, bullet = 90, laser = 90, energy = 90, bomb = 90, bio = 100, rad = 100) //matches stats of suit they drop. Basically tank. Rat tank. Ratank.
corpse = /obj/effect/landmark/mobcorpse/altevian
loot_list = list(/obj/item/weapon/melee/energy/sword/altevian = 100)
ai_holder_type = /datum/ai_holder/simple_mob/merc
say_list_type = /datum/say_list/merc/altevian
/datum/say_list/merc/altevian
speak = list("Operations going along as planned.",
"No news to report, Mission Control. All is clear.",
"Salvage operations still underway, no updates yet, Mission Control.")
emote_see = list("squeaks", "flicks their tail", "looks around")
say_understood = list("Order received.", "Understood, Mission Control.")
say_cannot = list("Unable to fulfill that request.", "Sorry... Running into some issues.")
say_maybe_target = list("Hey... You can't hide after causing us trouble, mate...", "If you're hiding... You better be hiding well...", "Yeah... You better have left after causing us trouble...")
say_got_target = list("Mouse found!", "Hostile being culled!", "Removing unwanted salvage!", "Culling threats!", "Suppressing!")
say_threaten = list("This area is marked for salvage by the Hegemony, please vacate the area until we're done!", "Sorry, but we're conducting operations here and civilians are not permitted around here for the time being!", "Please disperse from the area, or we will have to respond in kind.")
say_stand_down = list("Thank you for listening! Please have a safe day!", "Carry along, and keep safe.", "You're cleared to depart, thank you for not causing problems.")
say_escalate = list("Team, we have mice attempting to steal our salvage!", "We've warned you! Please know this is just us following orders!", "Apologies, but we have to attack due to failing to listen to our order!")
threaten_sound = 'sound/weapons/TargetOn.ogg'
stand_down_sound = 'sound/weapons/TargetOff.ogg'
/mob/living/simple_mob/humanoid/merc/altevian/sapper
desc = "Altevian Naval Sapper, adorned in the top of the line Heartbreaker suit. Armed with a giant fokken wrench."
icon_state = "merc_melee_wrench"
icon_living = "merc_melee_wrench"
melee_damage_lower = 25
melee_damage_upper = 25
attack_armor_pen = 0
attack_sharp = FALSE
attack_edge = 0
attacktext = list("whacked", "slammed", "bashed", "clonked", "bonked")
attack_sound = 'sound/weapons/smash.ogg'
loot_list = list(/obj/item/weapon/melee/altevian_wrench = 100)
/mob/living/simple_mob/humanoid/merc/altevian/ranged
desc = "Altevian Naval Salvage Guard, adorned in the top of the line Heartbreaker suit. Armed with a small energy gun."
icon_state = "merc_gun_smol"
icon_living = "merc_gun_smol"
melee_damage_lower = 15 // Let's just pretend they have tacknife
melee_damage_upper = 15
attack_armor_pen = 20
base_attack_cooldown = 8
loot_list = list(/obj/item/weapon/gun/energy/altevian = 100)
needs_reload = TRUE
reload_time = 1.5 SECONDS
reload_max = 6
projectiletype = /obj/item/projectile/beam/meeplaser
projectilesound = 'sound/weapons/Laser.ogg'
ai_holder_type = /datum/ai_holder/simple_mob/merc/ranged
/mob/living/simple_mob/humanoid/merc/altevian/ranged/strong
desc = "Altevian Naval Salvage Shield, adorned in the top of the line Heartbreaker suit. Armed with a large energy gun."
icon_state = "merc_gun_big"
icon_living = "merc_gun_big"
base_attack_cooldown = 8
loot_list = list(/obj/item/weapon/gun/energy/altevian/large = 100)
needs_reload = TRUE
reload_time = 3 SECONDS
reload_max = 12
projectiletype = /obj/item/projectile/beam/meeplaser/strong
projectilesound = 'sound/weapons/Laser.ogg'
/mob/living/simple_mob/humanoid/merc/altevian/ranged/ballistic
desc = "Altevian Naval Shipbreaker, adorned in the top of the line Heartbreaker suit. Armed with a bolter gun."
icon_state = "merc_gun_ballistic"
icon_living = "merc_gun_ballistic"
base_attack_cooldown = 10
loot_list = list(/obj/item/weapon/storage/box/altevian_ammo = 100, /obj/item/weapon/gun/projectile/altevian = 100)
needs_reload = TRUE
reload_time = 5 SECONDS
reload_max = 5
projectiletype = /obj/item/projectile/bullet/sam48
projectilesound = 'sound/weapons/Gunshot_heavy.ogg'
/mob/living/simple_mob/humanoid/merc/altevian/neutral
faction = "neutral"
/mob/living/simple_mob/humanoid/merc/altevian/sapper/neutral
faction = "neutral"
/mob/living/simple_mob/humanoid/merc/altevian/ranged/neutral
faction = "neutral"
/mob/living/simple_mob/humanoid/merc/altevian/ranged/strong/neutral
faction = "neutral"
/mob/living/simple_mob/humanoid/merc/altevian/ranged/ballistic/neutral
faction = "neutral"
+1
View File
@@ -31,6 +31,7 @@
var/obj/screen/ling/chems/ling_chem_display = null
var/obj/screen/wizard/energy/wiz_energy_display = null
var/obj/screen/wizard/instability/wiz_instability_display = null
var/obj/screen/autowhisper_display = null
var/datum/plane_holder/plane_holder = null
var/list/vis_enabled = null // List of vision planes that should be graphically visible (list of their VIS_ indexes).
@@ -81,6 +81,12 @@
icon_add = 'icons/mob/human_face_vr_add.dmi'
icon_state = "hair_twincurl"
/datum/sprite_accessory/hair/twindrillslong
name = "Twin Drills Long"
icon = 'icons/mob/human_face_vr.dmi'
icon_add = 'icons/mob/human_face_vr_add.dmi'
icon_state = "hair_twincurllong"
/datum/sprite_accessory/hair/crescent_moon
name = "Crescent-Moon"
icon = 'icons/mob/human_face_vr.dmi'
+2
View File
@@ -40,6 +40,8 @@
//VOREStation Edit Start
if(muffled)
return me_verb_subtle(message)
if(autowhisper)
return me_verb_subtle(message)
message = sanitize_or_reflect(message,src) //VOREStation Edit - Reflect too-long messages (within reason)
//VOREStation Edit End
+146 -9
View File
@@ -10,13 +10,11 @@
if(say_disabled) //This is here to try to identify lag problems
to_chat(usr, "Speech is currently admin-disabled.")
return
//VOREStation Addition Start
if(forced_psay)
pme(message)
return
//VOREStation Addition End
message = sanitize_or_reflect(message,src) //VOREStation Edit - Reflect too-long messages (within reason)
message = sanitize_or_reflect(message,src) // Reflect too-long messages (within reason)
if(!message)
return
@@ -26,7 +24,29 @@
else
usr.emote_vr(message)
/mob/proc/custom_emote_vr(var/m_type=1,var/message = null) //This would normally go in emote.dm
/mob/verb/me_verb_subtle_custom(message as message) // Literally same as above but with mode_selection set to true
set name = "Subtle (Custom)"
set category = "IC"
set desc = "Emote to nearby people, with ability to choose which specific portion of people you wish to target."
if(say_disabled) //This is here to try to identify lag problems
to_chat(usr, "Speech is currently admin-disabled.")
return
if(forced_psay)
pme(message)
return
message = sanitize_or_reflect(message,src) // Reflect too-long messages (within reason)
if(!message)
return
set_typing_indicator(FALSE)
if(use_me)
usr.emote_vr("me",4,message,TRUE)
else
usr.emote_vr(message)
/mob/proc/custom_emote_vr(var/m_type=1,var/message = null,var/mode_selection = FALSE) //This would normally go in emote.dm
if(stat || !use_me && usr == src)
to_chat(src, "You are unable to emote.")
return
@@ -40,6 +60,20 @@
var/muzzled = is_muzzled()
if(m_type == 2 && muzzled) return
var/subtle_mode
if(autowhisper && autowhisper_mode && !mode_selection)
if(autowhisper_mode != "Psay/Pme") //This isn't actually a custom subtle mode, so we shouldn't use it!
subtle_mode = autowhisper_mode
if(mode_selection && !subtle_mode)
subtle_mode = tgui_input_list(src, "Select Custom Subtle Mode", "Custom Subtle Mode", list("Adjacent Turfs (Default)", "My Turf", "My Table", "Current Belly (Prey)", "Specific Belly (Pred)", "Specific Person"))
if(!subtle_mode)
if(mode_selection)
if(message)
to_chat(src, "<span class='warning'>Subtle mode not selected. Your input has not been sent, but preserved:</span> [message]")
return
else
subtle_mode = "Adjacent Turfs (Default)"
var/input
if(!message)
input = sanitize_or_reflect(tgui_input_text(src,"Choose an emote to display."), src)
@@ -49,6 +83,8 @@
if(input)
log_subtle(message,src)
message = "<span class='emote_subtle'><B>[src]</B> <I>[input]</I></span>"
if(!(subtle_mode == "Adjacent Turfs (Default)"))
message = "<B>(T) </B>" + message
else
return
@@ -56,9 +92,110 @@
var/undisplayed_message = "<span class='emote'><B>[src]</B> <I>does something too subtle for you to see.</I></span>"
message = encode_html_emphasis(message)
var/list/vis = get_mobs_and_objs_in_view_fast(get_turf(src),1,2) //Turf, Range, and type 2 is emote
var/list/vis_mobs = vis["mobs"]
var/list/vis_objs = vis["objs"]
var/list/vis
var/list/vis_mobs
var/list/vis_objs
switch(subtle_mode)
if("Adjacent Turfs (Default)")
vis = get_mobs_and_objs_in_view_fast(get_turf(src),1,2)
vis_mobs = vis["mobs"]
vis_objs = vis["objs"]
if("My Turf")
vis = get_mobs_and_objs_in_view_fast(get_turf(src),0,2)
vis_mobs = vis["mobs"]
vis_objs = vis["objs"]
if("My Table")
vis = get_mobs_and_objs_in_view_fast(get_turf(src),7,2)
vis_mobs = vis["mobs"]
vis_objs = vis["objs"]
var/list/tablelist = list()
var/list/newmoblist = list()
var/list/newobjlist = list()
for(var/obj/structure/table/T in range(src, 1))
if(istype(T) && !(T in tablelist) && !istype(T, /obj/structure/table/rack) && !istype(T, /obj/structure/table/bench))
tablelist |= T.get_all_connected_tables()
if(!(tablelist.len))
to_chat(src, "<span class='warning'>No nearby tables detected. Your input has not been sent, but preserved:</span> [input]")
return
for(var/obj/structure/table/T in tablelist)
for(var/mob/M in vis_mobs)
var/dist = get_dist(T, M)
if(dist >= 0 && dist <= 1)
newmoblist |= M
for(var/obj/O in vis_objs)
var/dist = get_dist(T, O)
if(dist >= 0 && dist <= 1)
newobjlist |= O
vis_mobs = newmoblist
vis_objs = newobjlist
if("Current Belly (Prey)")
var/obj/belly/B = get_belly(src)
if(!istype(B))
to_chat(src, "<span class='warning'>You are currently not in the belly. Your input has not been sent, but preserved:</span> [input]")
return
vis = get_mobs_and_objs_in_view_fast(get_turf(src),0,2)
vis_mobs = vis["mobs"]
vis_objs = vis["objs"]
for(var/mob/M in vis_mobs) // Clean out everyone NOT in our specific belly
if(M == B.owner)
continue
var/obj/belly/BB = get_belly(M)
if(!(istype(BB)) || !(BB == B))
vis_mobs -= M
for(var/mob/M in vis_mobs) // Re-add anything in bellies of people in our belly
if(M == B.owner)
continue
vis_mobs |= get_all_prey_recursive(M, TRUE)
for(var/obj/O in vis_objs) // Clean out everyone NOT in our specific belly but for objs. No re-adding will happen there. Just don't be that deep and youre an obj anyway.
var/obj/belly/BB = get_belly(O)
if(!(istype(BB)) || !(BB == B))
vis_objs -= O
if("Specific Belly (Pred)")
if(!isliving(src))
to_chat(src, "<span class='warning'>You do not appear to be a living mob capable of having bellies. Your input has not been sent, but preserved:</span> [input]")
return
var/mob/living/L = src
if(!(L.vore_organs) || !(L.vore_organs.len))
to_chat(src, "<span class='warning'>You do not have any bellies. Your input has not been sent, but preserved:</span> [input]")
return
var/obj/belly/B = tgui_input_list(src, "Which belly do you want to sent the subtle to?","Select Belly", L.vore_organs)
if(!B || !istype(B))
to_chat(src, "<span class='warning'>You have not selected a valid belly. Your input has not been sent, but preserved:</span> [input]")
return
vis = get_mobs_and_objs_in_view_fast(get_turf(src),0,2)
vis_mobs = vis["mobs"]
vis_objs = vis["objs"]
for(var/mob/M in vis_mobs) // Clean out everyone NOT in our specific belly
if(M == B.owner)
continue
var/obj/belly/BB = get_belly(M)
if(!(istype(BB)) || !(BB == B))
vis_mobs -= M
for(var/mob/M in vis_mobs) // Re-add anything in bellies of people in our belly
if(M == B.owner)
continue
vis_mobs |= get_all_prey_recursive(M, TRUE)
for(var/obj/O in vis_objs) // Clean out everyone NOT in our specific belly but for objs. No re-adding will happen there. Just don't be that deep and youre an obj anyway.
var/obj/belly/BB = get_belly(O)
if(!(istype(BB)) || !(BB == B))
vis_objs -= O
if("Specific Person")
vis = get_mobs_and_objs_in_view_fast(get_turf(src),1,2)
vis_mobs = vis["mobs"]
vis_objs = list()
vis_mobs -= src
for(var/mob/M in vis_mobs) // ghosts get ye gone
if(isobserver(M) || (M.stat == DEAD))
vis_mobs -= M
if(!(vis_mobs.len))
to_chat(src, "<span class='warning'>No valid targets found. Your input has not been sent, but preserved:</span> [input]")
return
var/target = tgui_input_list(src, "Who do we send our message to?","Select Target", vis_mobs)
if(!(target))
to_chat(src, "<span class='warning'>No target selected. Your input has not been sent, but preserved:</span> [input]")
return
vis_mobs = list(target, src)
for(var/mob/M as anything in vis_mobs)
if(isnewplayer(M))
@@ -76,9 +213,9 @@
spawn(0)
O.see_emote(src, message, 2)
/mob/proc/emote_vr(var/act, var/type, var/message) //This would normally go in say.dm
/mob/proc/emote_vr(var/act, var/type, var/message, var/mode_selection) //This would normally go in say.dm
if(act == "me")
return custom_emote_vr(type, message)
return custom_emote_vr(type, message, mode_selection)
#define MAX_HUGE_MESSAGE_LEN 8192
#define POST_DELIMITER_STR "\<\>"
+21
View File
@@ -417,6 +417,27 @@ var/list/table_icon_cache = list()
if(carpeted)
add_overlay("carpet_flip[type]")
/obj/structure/table/proc/get_all_connected_tables(var/list/connections)
if(!connections)
connections = list(src)
else
connections |= src
if(istype(src, /obj/structure/table/rack))
return connections
for(var/direction in cardinal)
var/turf/T = get_step(src, direction)
if(T)
var/obj/structure/table/nextT = locate(/obj/structure/table) in T
if(!nextT || !istype(nextT))
continue
if(istype(nextT, /obj/structure/table/rack) || (istype(nextT, /obj/structure/table/bench) && !istype(src, /obj/structure/table/bench)) || (!istype(nextT, /obj/structure/table/bench) && istype(src, /obj/structure/table/bench)))
continue
if(!(nextT in connections))
connections |= nextT.get_all_connected_tables(connections)
return connections
#define CORNER_NONE 0
#define CORNER_COUNTERCLOCKWISE 1
@@ -2685,6 +2685,14 @@ Departamental Swimsuits, for general use
icon_override = 'icons/vore/custom_clothes_vr.dmi'
item_state = "dessabow_mob"
/obj/item/clothing/head/fluff/giantbow/dessa/attack_hand(mob/user)
if(user.real_name == "Dessa Ton")
item_state = "dessabow_mob"
else
item_state = "giantbow_mob"
..()
/obj/item/clothing/head/fluff/giantbow //Public version
name = "Giant Bow"
desc = "It's a huge bow! So pretty!"
@@ -2695,3 +2703,16 @@ Departamental Swimsuits, for general use
icon_override = 'icons/vore/custom_clothes_vr.dmi'
item_state = "giantbow_mob"
//Halored: Mercury
/obj/item/clothing/gloves/ring/material/void_opal/fluff/mercury
name = "Mercury's Mate Ring"
desc = "A band of void opal, given to Mercury by Lumen"
//satinisle: Parriz Tavakdavi
/obj/item/clothing/suit/storage/toggle/labcoat/fluff/parrizjacket
name = "pink crop bomber"
desc = "A pink crop bomber jacket that is just barely able to zip up at the front. It has a small Virgo Orbital Research Establishment patch on each shoulder."
icon_state = "parriz_jacket"
+1
View File
@@ -6,6 +6,7 @@ alphaprime1 - Protean
amarewolf - Xenochimera
amshaegaar - Vox
arandomalien - Xenochimera
arminazenith - Protean
arokha - Protean
aruis - Diona
aruis - Protean
Binary file not shown.

Before

Width:  |  Height:  |  Size: 238 KiB

After

Width:  |  Height:  |  Size: 237 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 693 KiB

After

Width:  |  Height:  |  Size: 691 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 40 KiB

After

Width:  |  Height:  |  Size: 40 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 44 KiB

After

Width:  |  Height:  |  Size: 44 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 108 KiB

After

Width:  |  Height:  |  Size: 108 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 30 KiB

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 20 KiB

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 26 KiB

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 26 KiB

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 41 KiB

After

Width:  |  Height:  |  Size: 42 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 37 KiB

After

Width:  |  Height:  |  Size: 37 KiB

+15 -13
View File
@@ -48,10 +48,10 @@
new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Supply Demand", /datum/event/supply_demand, 0, list(ASSIGNMENT_ANY = 5, ASSIGNMENT_SCIENCE = 15, ASSIGNMENT_GARDENER = 10, ASSIGNMENT_ENGINEER = 10, ASSIGNMENT_MEDICAL = 15), 1),
new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Aurora Caelus", /datum/event/aurora_caelus, 2, list(), 1),
new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Space Dust", /datum/event/dust, 0, list(ASSIGNMENT_ENGINEER = 20), 0, 0, 50, min_jobs = list(ASSIGNMENT_ENGINEER = 2)),
new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Lone Spacefish", /datum/event/spacefish_migration, 0, list(ASSIGNMENT_SECURITY = 15), 1, min_jobs = list(ASSIGNMENT_SECURITY = 3)),
new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Lost Carp", /datum/event/carp_migration, 0, list(ASSIGNMENT_SECURITY = 10), 1, min_jobs = list(ASSIGNMENT_SECURITY = 3)),
new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Stray Ray", /datum/event/ray_migration, 0, list(ASSIGNMENT_SECURITY = 10), 1, min_jobs = list(ASSIGNMENT_SECURITY = 3)),
new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Stray Shark", /datum/event/shark_migration, 0, list(ASSIGNMENT_SECURITY = 10), 1, min_jobs = list(ASSIGNMENT_SECURITY = 3)),
new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Gnat Mob", /datum/event/gnat_migration, 0, list(ASSIGNMENT_SECURITY = 10), 1, min_jobs = list(ASSIGNMENT_SECURITY = 3)),
new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Gnat Cloud", /datum/event/gnat_migration, 0, list(ASSIGNMENT_SECURITY = 10), 1, min_jobs = list(ASSIGNMENT_SECURITY = 3)),
))
/datum/event_container/moderate/New()
@@ -76,17 +76,18 @@
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Appendicitis", /datum/event/spontaneous_appendicitis, 0, list(ASSIGNMENT_MEDICAL = 30), 1),
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Meteor Shower", /datum/event/meteor_wave, 30, list(ASSIGNMENT_ENGINEER = 20)),
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Radiation Storm", /datum/event/radiation_storm, 50, list(ASSIGNMENT_MEDICAL = 50), 1),
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Random Antagonist", /datum/event/random_antag, 0, list(ASSIGNMENT_SECURITY = 1), 1, 0, 5),
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Random Antagonist", /datum/event/random_antag, 0, list(ASSIGNMENT_SECURITY = 1), 1, 0, 5),
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Supply Demand", /datum/event/supply_demand, 0, list(ASSIGNMENT_ANY = 5, ASSIGNMENT_SCIENCE = 15, ASSIGNMENT_GARDENER = 10, ASSIGNMENT_ENGINEER = 10, ASSIGNMENT_MEDICAL = 15), 1),
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Solar Storm", /datum/event/solar_storm, 30, list(ASSIGNMENT_ENGINEER = 40, ASSIGNMENT_SECURITY = 30), 1),
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Gravity Failure", /datum/event/gravity, 75, list(ASSIGNMENT_ENGINEER = 60), 1),
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Space Dust", /datum/event/dust, 0, list(ASSIGNMENT_ENGINEER = 20), 1, 0, 50, min_jobs = list(ASSIGNMENT_ENGINEER = 3)),
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Carp School", /datum/event/carp_migration, 0, list(ASSIGNMENT_SECURITY = 30), 1, min_jobs = list(ASSIGNMENT_SECURITY = 3)),
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Rogue Drones", /datum/event/rogue_drone, 0, list(ASSIGNMENT_SECURITY = 20), 1, min_jobs = list(ASSIGNMENT_SECURITY = 3)),
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Jellyfish School", /datum/event/jellyfish_migration, 0, list(ASSIGNMENT_SECURITY = 15, ASSIGNMENT_MEDICAL = 3), 1, min_jobs = list(ASSIGNMENT_SECURITY = 2)),
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Stray Rays", /datum/event/ray_migration, 0, list(ASSIGNMENT_SECURITY = 15, ASSIGNMENT_MEDICAL = 3), 1, min_jobs = list(ASSIGNMENT_SECURITY = 2)),
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Shark Pack", /datum/event/shark_migration, 0, list(ASSIGNMENT_SECURITY = 15, ASSIGNMENT_MEDICAL = 3), 1, min_jobs = list(ASSIGNMENT_SECURITY = 2)),
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Gnat Swarm", /datum/event/gnat_migration, 0, list(ASSIGNMENT_SECURITY = 15, ASSIGNMENT_MEDICAL = 3), 1, min_jobs = list(ASSIGNMENT_SECURITY = 2)),
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Spacefish Migration", /datum/event/spacefish_migration, 0, list(ASSIGNMENT_SECURITY = 40, ASSIGNMENT_MEDICAL = 5), 1, min_jobs = list(ASSIGNMENT_SECURITY = 3)),
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Carp School", /datum/event/carp_migration, 0, list(ASSIGNMENT_SECURITY = 25, ASSIGNMENT_MEDICAL = 5), 1, min_jobs = list(ASSIGNMENT_SECURITY = 3)),
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Jellyfish School", /datum/event/jellyfish_migration, 0, list(ASSIGNMENT_SECURITY = 15, ASSIGNMENT_MEDICAL = 5), 1, min_jobs = list(ASSIGNMENT_SECURITY = 2)),
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Gliding Rays", /datum/event/ray_migration, 0, list(ASSIGNMENT_SECURITY = 15, ASSIGNMENT_MEDICAL = 5), 1, min_jobs = list(ASSIGNMENT_SECURITY = 3)),
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Shark Pack", /datum/event/shark_migration, 0, list(ASSIGNMENT_SECURITY = 15, ASSIGNMENT_MEDICAL = 3), 1, min_jobs = list(ASSIGNMENT_SECURITY = 3)),
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Gnat Swarm", /datum/event/gnat_migration, 0, list(ASSIGNMENT_SECURITY = 15, ASSIGNMENT_MEDICAL = 3), 1, min_jobs = list(ASSIGNMENT_SECURITY = 3)),
))
/datum/event_container/major/New()
@@ -94,7 +95,7 @@
new /datum/event_meta(EVENT_LEVEL_MAJOR, "Nothing", /datum/event/nothing, 3600),
new /datum/event_meta(EVENT_LEVEL_MAJOR, "Atmos Leak", /datum/event/atmos_leak, 20, list(ASSIGNMENT_ENGINEER = 25), 1, min_jobs = list(ASSIGNMENT_ENGINEER = 1)),
new /datum/event_meta(EVENT_LEVEL_MAJOR, "Space Vines", /datum/event/spacevine, 10, list(ASSIGNMENT_ENGINEER = 3, ASSIGNMENT_GARDENER = 3, ASSIGNMENT_SCIENTIST = 3), 1),
new /datum/event_meta(EVENT_LEVEL_MAJOR, "Containment Breach", /datum/event/prison_break/station, 0, list(ASSIGNMENT_ENGINEER = 5, ASSIGNMENT_MEDICAL = 5, ASSIGNMENT_SECURITY = 5, ASSIGNMENT_SCIENTIST = 5), 1),
new /datum/event_meta(EVENT_LEVEL_MAJOR, "Containment Breach", /datum/event/prison_break/station, 0, list(ASSIGNMENT_ENGINEER = 5, ASSIGNMENT_MEDICAL = 5, ASSIGNMENT_SECURITY = 5, ASSIGNMENT_SCIENTIST = 5), 1),
new /datum/event_meta(EVENT_LEVEL_MAJOR, "Amassing Wildlife", /datum/event/roaming_wildlife, 0, list(ASSIGNMENT_SECURITY = 10, ASSIGNMENT_MEDICAL = 3), 1, min_jobs = list(ASSIGNMENT_SECURITY = 3)),
)
add_disabled_events(list(
@@ -102,11 +103,12 @@
new /datum/event_meta(EVENT_LEVEL_MAJOR, "Blob", /datum/event/blob, 10, list(ASSIGNMENT_ENGINEER = 60), 1),
new /datum/event_meta(EVENT_LEVEL_MAJOR, "Meteor Wave", /datum/event/meteor_wave, 30, list(ASSIGNMENT_ENGINEER = 15), 1),
new /datum/event_meta(EVENT_LEVEL_MAJOR, "Supply Demand", /datum/event/supply_demand, 0, list(ASSIGNMENT_ANY = 5, ASSIGNMENT_SCIENCE = 15, ASSIGNMENT_GARDENER = 10, ASSIGNMENT_ENGINEER = 10, ASSIGNMENT_MEDICAL = 15), 1),
new /datum/event_meta(EVENT_LEVEL_MAJOR, "Jellyfish Migration", /datum/event/jellyfish_migration, 5, list(ASSIGNMENT_SECURITY = 5, ASSIGNMENT_MEDICAL = 3), 1, min_jobs = list(ASSIGNMENT_SECURITY = 2)),
new /datum/event_meta(EVENT_LEVEL_MAJOR, "Spacefish Swarm", /datum/event/spacefish_migration, 10, list(ASSIGNMENT_SECURITY = 5, ASSIGNMENT_MEDICAL = 3), 1, min_jobs = list(ASSIGNMENT_SECURITY = 3)),
new /datum/event_meta(EVENT_LEVEL_MAJOR, "Carp Migration", /datum/event/carp_migration, 10, list(ASSIGNMENT_SECURITY = 5), 1, min_jobs = list(ASSIGNMENT_SECURITY = 3)),
new /datum/event_meta(EVENT_LEVEL_MAJOR, "Stray Rays", /datum/event/ray_migration, 20, list(ASSIGNMENT_SECURITY = 20, ASSIGNMENT_MEDICAL = 5), min_jobs = list(ASSIGNMENT_SECURITY = 2)),
new /datum/event_meta(EVENT_LEVEL_MAJOR, "Shark Pack", /datum/event/shark_migration, 20, list(ASSIGNMENT_SECURITY = 20, ASSIGNMENT_MEDICAL = 5), min_jobs = list(ASSIGNMENT_SECURITY = 2)),
new /datum/event_meta(EVENT_LEVEL_MAJOR, "Gnat Swarm", /datum/event/gnat_migration, 20, list(ASSIGNMENT_SECURITY = 20, ASSIGNMENT_MEDICAL = 5), min_jobs = list(ASSIGNMENT_SECURITY = 2)),
new /datum/event_meta(EVENT_LEVEL_MAJOR, "Jellyfish Migration", /datum/event/jellyfish_migration, 5, list(ASSIGNMENT_SECURITY = 5, ASSIGNMENT_MEDICAL = 3), 1, min_jobs = list(ASSIGNMENT_SECURITY = 2)),
new /datum/event_meta(EVENT_LEVEL_MAJOR, "Gliding Rays", /datum/event/ray_migration, 0, list(ASSIGNMENT_SECURITY = 15, ASSIGNMENT_MEDICAL = 5), 1, min_jobs = list(ASSIGNMENT_SECURITY = 3)),
new /datum/event_meta(EVENT_LEVEL_MAJOR, "Shark Pack", /datum/event/shark_migration, 5, list(ASSIGNMENT_SECURITY = 5, ASSIGNMENT_MEDICAL = 3), 1, min_jobs = list(ASSIGNMENT_SECURITY = 3)),
new /datum/event_meta(EVENT_LEVEL_MAJOR, "Gnat Swarm", /datum/event/gnat_migration, 5, list(ASSIGNMENT_SECURITY = 5, ASSIGNMENT_MEDICAL = 3), 1, min_jobs = list(ASSIGNMENT_SECURITY = 3)),
))
#undef ASSIGNMENT_ANY
+16 -13
View File
@@ -36,9 +36,7 @@
new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Canister Leak", /datum/event/canister_leak, 10, list(ASSIGNMENT_ENGINEER = 20), min_jobs = list(ASSIGNMENT_ENGINEER = 1)),
new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Space Dust", /datum/event/dust, 0, list(ASSIGNMENT_ENGINEER = 20), 0, 0, 50, min_jobs = list(ASSIGNMENT_ENGINEER = 2)),
new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Economic News", /datum/event/economic_event, 300),
new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Lost Carp", /datum/event/carp_migration, 0, list(ASSIGNMENT_SECURITY = 10), 1, min_jobs = list(ASSIGNMENT_SECURITY = 3)),
new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Stray Ray", /datum/event/ray_migration, 0, list(ASSIGNMENT_SECURITY = 10), 1, min_jobs = list(ASSIGNMENT_SECURITY = 3)),
new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Gnat Cloud", /datum/event/gnat_migration, 0, list(ASSIGNMENT_SECURITY = 10), 1, min_jobs = list(ASSIGNMENT_SECURITY = 3)),
new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Lone Spacefish", /datum/event/spacefish_migration, 0, list(ASSIGNMENT_SECURITY = 15), 1, min_jobs = list(ASSIGNMENT_SECURITY = 3)),
new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Money Hacker", /datum/event/money_hacker, 0, list(ASSIGNMENT_ANY = 4), 1, 10, 25),
new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Money Lotto", /datum/event/money_lotto, 0, list(ASSIGNMENT_ANY = 1), 1, 5, 15),
new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Shipping Error", /datum/event/shipping_error , 30, list(ASSIGNMENT_ANY = 2), 0),
@@ -53,6 +51,9 @@
add_disabled_events(list(
new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Ian Storm", /datum/event/ianstorm, 1, list(), 1),
new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Supply Demand", /datum/event/supply_demand, 0, list(ASSIGNMENT_ANY = 5, ASSIGNMENT_SCIENCE = 15, ASSIGNMENT_GARDENER = 10, ASSIGNMENT_ENGINEER = 10, ASSIGNMENT_MEDICAL = 15), 1),
new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Lost Carp", /datum/event/carp_migration, 0, list(ASSIGNMENT_SECURITY = 10), 1, min_jobs = list(ASSIGNMENT_SECURITY = 3)),
new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Stray Ray", /datum/event/ray_migration, 0, list(ASSIGNMENT_SECURITY = 10), 1, min_jobs = list(ASSIGNMENT_SECURITY = 3)),
new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Gnat Cloud", /datum/event/gnat_migration, 0, list(ASSIGNMENT_SECURITY = 10), 1, min_jobs = list(ASSIGNMENT_SECURITY = 3)),
))
/datum/event_container/moderate/New()
@@ -60,7 +61,7 @@
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Nothing", /datum/event/nothing, 1600),
// Leaks gas into an unoccupied room.
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Atmos Leak", /datum/event/atmos_leak, 30, list(ASSIGNMENT_ENGINEER = 25), 1, min_jobs = list(ASSIGNMENT_ENGINEER = 1)),
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Carp School", /datum/event/carp_migration, 0, list(ASSIGNMENT_SECURITY = 30), 1, min_jobs = list(ASSIGNMENT_SECURITY = 3)),
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Spacefish Migration", /datum/event/spacefish_migration, 0, list(ASSIGNMENT_SECURITY = 40, ASSIGNMENT_MEDICAL = 5), 1, min_jobs = list(ASSIGNMENT_SECURITY = 3)),
// Just disables comms for a short while.
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Communication Blackout", /datum/event/communications_blackout, 500, list(), 1),
// Just blows out a few lights
@@ -85,10 +86,6 @@
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Drone Pod Drop", /datum/event/drone_pod_drop, 40, list(ASSIGNMENT_SCIENTIST = 40), 1),
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Morph Spawn", /datum/event/morph_spawn, 75, list(ASSIGNMENT_ANY = 5), 0),
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Maintenance Predator", /datum/event/maintenance_predator, 100, list(ASSIGNMENT_ANY = 5), 0),
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Jellyfish School", /datum/event/jellyfish_migration, 0, list(ASSIGNMENT_SECURITY = 15, ASSIGNMENT_MEDICAL = 5), 1, min_jobs = list(ASSIGNMENT_SECURITY = 2)),
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Gliding Rays", /datum/event/ray_migration, 0, list(ASSIGNMENT_SECURITY = 15, ASSIGNMENT_MEDICAL = 5), 1, min_jobs = list(ASSIGNMENT_SECURITY = 2)),
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Shark Pack", /datum/event/shark_migration, 0, list(ASSIGNMENT_SECURITY = 15, ASSIGNMENT_MEDICAL = 3), 1, min_jobs = list(ASSIGNMENT_SECURITY = 2)),
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Gnat Swarm", /datum/event/gnat_migration, 0, list(ASSIGNMENT_SECURITY = 15, ASSIGNMENT_MEDICAL = 3), 1, min_jobs = list(ASSIGNMENT_SECURITY = 2)),
)
add_disabled_events(list(
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Appendicitis", /datum/event/spontaneous_appendicitis, 0, list(ASSIGNMENT_MEDICAL = 30), 1),
@@ -97,6 +94,11 @@
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Radiation Storm", /datum/event/radiation_storm, 50, list(ASSIGNMENT_MEDICAL = 50), 1),
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Random Antagonist", /datum/event/random_antag, 0, list(ASSIGNMENT_SECURITY = 1), 1, 0, 5),
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Supply Demand", /datum/event/supply_demand, 0, list(ASSIGNMENT_ANY = 5, ASSIGNMENT_SCIENCE = 15, ASSIGNMENT_GARDENER = 10, ASSIGNMENT_ENGINEER = 10, ASSIGNMENT_MEDICAL = 15), 1),
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Carp School", /datum/event/carp_migration, 0, list(ASSIGNMENT_SECURITY = 25, ASSIGNMENT_MEDICAL = 5), 1, min_jobs = list(ASSIGNMENT_SECURITY = 3)),
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Jellyfish School", /datum/event/jellyfish_migration, 0, list(ASSIGNMENT_SECURITY = 15, ASSIGNMENT_MEDICAL = 5), 1, min_jobs = list(ASSIGNMENT_SECURITY = 2)),
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Gliding Rays", /datum/event/ray_migration, 0, list(ASSIGNMENT_SECURITY = 15, ASSIGNMENT_MEDICAL = 5), 1, min_jobs = list(ASSIGNMENT_SECURITY = 3)),
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Shark Pack", /datum/event/shark_migration, 0, list(ASSIGNMENT_SECURITY = 15, ASSIGNMENT_MEDICAL = 3), 1, min_jobs = list(ASSIGNMENT_SECURITY = 3)),
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Gnat Swarm", /datum/event/gnat_migration, 0, list(ASSIGNMENT_SECURITY = 15, ASSIGNMENT_MEDICAL = 3), 1, min_jobs = list(ASSIGNMENT_SECURITY = 3)),
))
/datum/event_container/major/New()
@@ -104,18 +106,19 @@
new /datum/event_meta(EVENT_LEVEL_MAJOR, "Nothing", /datum/event/nothing, 3600),
new /datum/event_meta(EVENT_LEVEL_MAJOR, "Atmos Leak", /datum/event/atmos_leak, 20, list(ASSIGNMENT_ENGINEER = 25), 1, min_jobs = list(ASSIGNMENT_ENGINEER = 1)),
new /datum/event_meta(EVENT_LEVEL_MAJOR, "Space Vines", /datum/event/spacevine, 10, list(ASSIGNMENT_ENGINEER = 3, ASSIGNMENT_GARDENER = 3, ASSIGNMENT_SCIENTIST = 3), 1),
new /datum/event_meta(EVENT_LEVEL_MAJOR, "Carp Migration", /datum/event/carp_migration, 10, list(ASSIGNMENT_SECURITY = 5), 1, min_jobs = list(ASSIGNMENT_SECURITY = 3)),
new /datum/event_meta(EVENT_LEVEL_MAJOR, "Spacefish Swarm", /datum/event/spacefish_migration, 10, list(ASSIGNMENT_SECURITY = 5, ASSIGNMENT_MEDICAL = 3), 1, min_jobs = list(ASSIGNMENT_SECURITY = 3)),
new /datum/event_meta(EVENT_LEVEL_MAJOR, "Containment Breach", /datum/event/prison_break/station, 0, list(ASSIGNMENT_ENGINEER = 5, ASSIGNMENT_MEDICAL = 5, ASSIGNMENT_SECURITY = 5, ASSIGNMENT_SCIENTIST = 5), 1),
new /datum/event_meta(EVENT_LEVEL_MAJOR, "Jellyfish Migration", /datum/event/jellyfish_migration, 5, list(ASSIGNMENT_SECURITY = 5, ASSIGNMENT_MEDICAL = 3), 1, min_jobs = list(ASSIGNMENT_SECURITY = 2)),
new /datum/event_meta(EVENT_LEVEL_MAJOR, "Gliding Rays", /datum/event/ray_migration, 0, list(ASSIGNMENT_SECURITY = 15, ASSIGNMENT_MEDICAL = 5), 1, min_jobs = list(ASSIGNMENT_SECURITY = 2)),
new /datum/event_meta(EVENT_LEVEL_MAJOR, "Shark Pack", /datum/event/shark_migration, 5, list(ASSIGNMENT_SECURITY = 5, ASSIGNMENT_MEDICAL = 3), 1, min_jobs = list(ASSIGNMENT_SECURITY = 2)),
new /datum/event_meta(EVENT_LEVEL_MAJOR, "Gnat Swarm", /datum/event/gnat_migration, 5, list(ASSIGNMENT_SECURITY = 5, ASSIGNMENT_MEDICAL = 3), 1, min_jobs = list(ASSIGNMENT_SECURITY = 2)),
)
add_disabled_events(list(
new /datum/event_meta(EVENT_LEVEL_MAJOR, "Meteor Strike", /datum/event/meteor_strike, 10, list(ASSIGNMENT_ENGINEER = 15), 1),
new /datum/event_meta(EVENT_LEVEL_MAJOR, "Blob", /datum/event/blob, 10, list(ASSIGNMENT_ENGINEER = 60), 1),
new /datum/event_meta(EVENT_LEVEL_MAJOR, "Meteor Wave", /datum/event/meteor_wave, 30, list(ASSIGNMENT_ENGINEER = 15), 1),
new /datum/event_meta(EVENT_LEVEL_MAJOR, "Supply Demand", /datum/event/supply_demand, 0, list(ASSIGNMENT_ANY = 5, ASSIGNMENT_SCIENCE = 15, ASSIGNMENT_GARDENER = 10, ASSIGNMENT_ENGINEER = 10, ASSIGNMENT_MEDICAL = 15), 1),
new /datum/event_meta(EVENT_LEVEL_MAJOR, "Carp Migration", /datum/event/carp_migration, 10, list(ASSIGNMENT_SECURITY = 5), 1, min_jobs = list(ASSIGNMENT_SECURITY = 3)),
new /datum/event_meta(EVENT_LEVEL_MAJOR, "Jellyfish Migration", /datum/event/jellyfish_migration, 5, list(ASSIGNMENT_SECURITY = 5, ASSIGNMENT_MEDICAL = 3), 1, min_jobs = list(ASSIGNMENT_SECURITY = 2)),
new /datum/event_meta(EVENT_LEVEL_MAJOR, "Gliding Rays", /datum/event/ray_migration, 0, list(ASSIGNMENT_SECURITY = 15, ASSIGNMENT_MEDICAL = 5), 1, min_jobs = list(ASSIGNMENT_SECURITY = 3)),
new /datum/event_meta(EVENT_LEVEL_MAJOR, "Shark Pack", /datum/event/shark_migration, 5, list(ASSIGNMENT_SECURITY = 5, ASSIGNMENT_MEDICAL = 3), 1, min_jobs = list(ASSIGNMENT_SECURITY = 3)),
new /datum/event_meta(EVENT_LEVEL_MAJOR, "Gnat Swarm", /datum/event/gnat_migration, 5, list(ASSIGNMENT_SECURITY = 5, ASSIGNMENT_MEDICAL = 3), 1, min_jobs = list(ASSIGNMENT_SECURITY = 3)),
))
#undef ASSIGNMENT_ANY
+16 -13
View File
@@ -36,9 +36,7 @@
new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Canister Leak", /datum/event/canister_leak, 10, list(ASSIGNMENT_ENGINEER = 20), min_jobs = list(ASSIGNMENT_ENGINEER = 1)),
new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Space Dust", /datum/event/dust, 0, list(ASSIGNMENT_ENGINEER = 20), 0, 0, 50, min_jobs = list(ASSIGNMENT_ENGINEER = 2)),
new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Economic News", /datum/event/economic_event, 300),
new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Lost Carp", /datum/event/carp_migration, 0, list(ASSIGNMENT_SECURITY = 10), 1, min_jobs = list(ASSIGNMENT_SECURITY = 3)),
new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Stray Ray", /datum/event/ray_migration, 0, list(ASSIGNMENT_SECURITY = 10), 1, min_jobs = list(ASSIGNMENT_SECURITY = 3)),
new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Gnat Cloud", /datum/event/gnat_migration, 0, list(ASSIGNMENT_SECURITY = 10), 1, min_jobs = list(ASSIGNMENT_SECURITY = 3)),
new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Lone Spacefish", /datum/event/spacefish_migration, 0, list(ASSIGNMENT_SECURITY = 15), 1, min_jobs = list(ASSIGNMENT_SECURITY = 3)),
new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Money Hacker", /datum/event/money_hacker, 0, list(ASSIGNMENT_ANY = 4), 1, 10, 25),
new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Money Lotto", /datum/event/money_lotto, 0, list(ASSIGNMENT_ANY = 1), 1, 5, 15),
new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Shipping Error", /datum/event/shipping_error , 30, list(ASSIGNMENT_ANY = 2), 0),
@@ -53,6 +51,9 @@
add_disabled_events(list(
new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Ian Storm", /datum/event/ianstorm, 1, list(), 1),
new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Supply Demand", /datum/event/supply_demand, 0, list(ASSIGNMENT_ANY = 5, ASSIGNMENT_SCIENCE = 15, ASSIGNMENT_GARDENER = 10, ASSIGNMENT_ENGINEER = 10, ASSIGNMENT_MEDICAL = 15), 1),
new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Lost Carp", /datum/event/carp_migration, 0, list(ASSIGNMENT_SECURITY = 10), 1, min_jobs = list(ASSIGNMENT_SECURITY = 3)),
new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Stray Ray", /datum/event/ray_migration, 0, list(ASSIGNMENT_SECURITY = 10), 1, min_jobs = list(ASSIGNMENT_SECURITY = 3)),
new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Gnat Cloud", /datum/event/gnat_migration, 0, list(ASSIGNMENT_SECURITY = 10), 1, min_jobs = list(ASSIGNMENT_SECURITY = 3)),
))
/datum/event_container/moderate/New()
@@ -60,7 +61,7 @@
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Nothing", /datum/event/nothing, 1600),
// Leaks gas into an unoccupied room.
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Atmos Leak", /datum/event/atmos_leak, 30, list(ASSIGNMENT_ENGINEER = 25), 1, min_jobs = list(ASSIGNMENT_ENGINEER = 1)),
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Carp School", /datum/event/carp_migration, 0, list(ASSIGNMENT_SECURITY = 30), 1, min_jobs = list(ASSIGNMENT_SECURITY = 3)),
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Spacefish Migration", /datum/event/spacefish_migration, 0, list(ASSIGNMENT_SECURITY = 40, ASSIGNMENT_MEDICAL = 5), 1, min_jobs = list(ASSIGNMENT_SECURITY = 3)),
// Just disables comms for a short while.
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Communication Blackout", /datum/event/communications_blackout, 500, list(), 1),
// Just blows out a few lights
@@ -85,10 +86,6 @@
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Drone Pod Drop", /datum/event/drone_pod_drop, 40, list(ASSIGNMENT_SCIENTIST = 40), 1),
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Morph Spawn", /datum/event/morph_spawn, 75, list(ASSIGNMENT_ANY = 5), 0),
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Maintenance Predator", /datum/event/maintenance_predator, 100, list(ASSIGNMENT_ANY = 5), 0),
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Jellyfish School", /datum/event/jellyfish_migration, 0, list(ASSIGNMENT_SECURITY = 15, ASSIGNMENT_MEDICAL = 3), 1, min_jobs = list(ASSIGNMENT_SECURITY = 2)),
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Gliding Rays", /datum/event/ray_migration, 0, list(ASSIGNMENT_SECURITY = 15, ASSIGNMENT_MEDICAL = 5), 1, min_jobs = list(ASSIGNMENT_SECURITY = 2)),
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Shark Pack", /datum/event/shark_migration, 0, list(ASSIGNMENT_SECURITY = 15, ASSIGNMENT_MEDICAL = 3), 1, min_jobs = list(ASSIGNMENT_SECURITY = 2)),
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Gnat Swarm", /datum/event/gnat_migration, 0, list(ASSIGNMENT_SECURITY = 15, ASSIGNMENT_MEDICAL = 3), 1, min_jobs = list(ASSIGNMENT_SECURITY = 2)),
)
add_disabled_events(list(
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Appendicitis", /datum/event/spontaneous_appendicitis, 0, list(ASSIGNMENT_MEDICAL = 30), 1),
@@ -97,6 +94,11 @@
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Radiation Storm", /datum/event/radiation_storm, 50, list(ASSIGNMENT_MEDICAL = 50), 1),
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Random Antagonist", /datum/event/random_antag, 0, list(ASSIGNMENT_SECURITY = 1), 1, 0, 5),
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Supply Demand", /datum/event/supply_demand, 0, list(ASSIGNMENT_ANY = 5, ASSIGNMENT_SCIENCE = 15, ASSIGNMENT_GARDENER = 10, ASSIGNMENT_ENGINEER = 10, ASSIGNMENT_MEDICAL = 15), 1),
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Carp School", /datum/event/carp_migration, 0, list(ASSIGNMENT_SECURITY = 25, ASSIGNMENT_MEDICAL = 5), 1, min_jobs = list(ASSIGNMENT_SECURITY = 3)),
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Jellyfish School", /datum/event/jellyfish_migration, 0, list(ASSIGNMENT_SECURITY = 15, ASSIGNMENT_MEDICAL = 5), 1, min_jobs = list(ASSIGNMENT_SECURITY = 2)),
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Gliding Rays", /datum/event/ray_migration, 0, list(ASSIGNMENT_SECURITY = 15, ASSIGNMENT_MEDICAL = 5), 1, min_jobs = list(ASSIGNMENT_SECURITY = 3)),
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Shark Pack", /datum/event/shark_migration, 0, list(ASSIGNMENT_SECURITY = 15, ASSIGNMENT_MEDICAL = 3), 1, min_jobs = list(ASSIGNMENT_SECURITY = 3)),
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Gnat Swarm", /datum/event/gnat_migration, 0, list(ASSIGNMENT_SECURITY = 15, ASSIGNMENT_MEDICAL = 3), 1, min_jobs = list(ASSIGNMENT_SECURITY = 3)),
))
/datum/event_container/major/New()
@@ -104,18 +106,19 @@
new /datum/event_meta(EVENT_LEVEL_MAJOR, "Nothing", /datum/event/nothing, 3600),
new /datum/event_meta(EVENT_LEVEL_MAJOR, "Atmos Leak", /datum/event/atmos_leak, 20, list(ASSIGNMENT_ENGINEER = 25), 1, min_jobs = list(ASSIGNMENT_ENGINEER = 1)),
new /datum/event_meta(EVENT_LEVEL_MAJOR, "Space Vines", /datum/event/spacevine, 10, list(ASSIGNMENT_ENGINEER = 3, ASSIGNMENT_GARDENER = 3, ASSIGNMENT_SCIENTIST = 3), 1),
new /datum/event_meta(EVENT_LEVEL_MAJOR, "Carp Migration", /datum/event/carp_migration, 10, list(ASSIGNMENT_SECURITY = 5), 1, min_jobs = list(ASSIGNMENT_SECURITY = 3)),
new /datum/event_meta(EVENT_LEVEL_MAJOR, "Spacefish Swarm", /datum/event/spacefish_migration, 10, list(ASSIGNMENT_SECURITY = 5, ASSIGNMENT_MEDICAL = 3), 1, min_jobs = list(ASSIGNMENT_SECURITY = 3)),
new /datum/event_meta(EVENT_LEVEL_MAJOR, "Containment Breach", /datum/event/prison_break/station, 0, list(ASSIGNMENT_ENGINEER = 5, ASSIGNMENT_MEDICAL = 5, ASSIGNMENT_SECURITY = 5, ASSIGNMENT_SCIENTIST = 5), 1),
new /datum/event_meta(EVENT_LEVEL_MAJOR, "Jellyfish Migration", /datum/event/jellyfish_migration, 5, list(ASSIGNMENT_SECURITY = 5, ASSIGNMENT_MEDICAL = 3), 1, min_jobs = list(ASSIGNMENT_SECURITY = 2)),
new /datum/event_meta(EVENT_LEVEL_MAJOR, "Gliding Rays", /datum/event/ray_migration, 0, list(ASSIGNMENT_SECURITY = 15, ASSIGNMENT_MEDICAL = 5), 1, min_jobs = list(ASSIGNMENT_SECURITY = 2)),
new /datum/event_meta(EVENT_LEVEL_MAJOR, "Shark Pack", /datum/event/shark_migration, 5, list(ASSIGNMENT_SECURITY = 5, ASSIGNMENT_MEDICAL = 3), 1, min_jobs = list(ASSIGNMENT_SECURITY = 2)),
new /datum/event_meta(EVENT_LEVEL_MAJOR, "Gnat Swarm", /datum/event/gnat_migration, 5, list(ASSIGNMENT_SECURITY = 5, ASSIGNMENT_MEDICAL = 3), 1, min_jobs = list(ASSIGNMENT_SECURITY = 2)),
new /datum/event_meta(EVENT_LEVEL_MAJOR, "Meteor Strike", /datum/event/meteor_strike, 10, list(ASSIGNMENT_ENGINEER = 15), 1),
)
add_disabled_events(list(
new /datum/event_meta(EVENT_LEVEL_MAJOR, "Blob", /datum/event/blob, 10, list(ASSIGNMENT_ENGINEER = 60), 1),
new /datum/event_meta(EVENT_LEVEL_MAJOR, "Meteor Wave", /datum/event/meteor_wave, 30, list(ASSIGNMENT_ENGINEER = 15), 1),
new /datum/event_meta(EVENT_LEVEL_MAJOR, "Supply Demand", /datum/event/supply_demand, 0, list(ASSIGNMENT_ANY = 5, ASSIGNMENT_SCIENCE = 15, ASSIGNMENT_GARDENER = 10, ASSIGNMENT_ENGINEER = 10, ASSIGNMENT_MEDICAL = 15), 1),
new /datum/event_meta(EVENT_LEVEL_MAJOR, "Carp Migration", /datum/event/carp_migration, 10, list(ASSIGNMENT_SECURITY = 5), 1, min_jobs = list(ASSIGNMENT_SECURITY = 3)),
new /datum/event_meta(EVENT_LEVEL_MAJOR, "Jellyfish Migration", /datum/event/jellyfish_migration, 5, list(ASSIGNMENT_SECURITY = 5, ASSIGNMENT_MEDICAL = 3), 1, min_jobs = list(ASSIGNMENT_SECURITY = 2)),
new /datum/event_meta(EVENT_LEVEL_MAJOR, "Gliding Rays", /datum/event/ray_migration, 0, list(ASSIGNMENT_SECURITY = 15, ASSIGNMENT_MEDICAL = 5), 1, min_jobs = list(ASSIGNMENT_SECURITY = 3)),
new /datum/event_meta(EVENT_LEVEL_MAJOR, "Shark Pack", /datum/event/shark_migration, 5, list(ASSIGNMENT_SECURITY = 5, ASSIGNMENT_MEDICAL = 3), 1, min_jobs = list(ASSIGNMENT_SECURITY = 3)),
new /datum/event_meta(EVENT_LEVEL_MAJOR, "Gnat Swarm", /datum/event/gnat_migration, 5, list(ASSIGNMENT_SECURITY = 5, ASSIGNMENT_MEDICAL = 3), 1, min_jobs = list(ASSIGNMENT_SECURITY = 3)),
))
#undef ASSIGNMENT_ANY
@@ -1158,6 +1158,8 @@ const WeatherTab = (props, context) => {
const { aircontents, weather } = data;
let deg = '\u00B0';
return (
<Section title="Weather">
<Section title="Current Conditions">
@@ -1195,8 +1197,8 @@ const WeatherTab = (props, context) => {
{toTitleCase(wr.Weather)}
</LabeledList.Item>
<LabeledList.Item label="Temperature">
Current: {wr.Temperature.toFixed()}&deg;C | High:{' '}
{wr.High.toFixed()}&deg;C | Low: {wr.Low.toFixed()}&deg;C
Current: {wr.Temperature.toFixed()} {deg}C | High:{' '}
{wr.High.toFixed()} {deg}C | Low: {wr.Low.toFixed()} {deg}C
</LabeledList.Item>
<LabeledList.Item label="Wind Direction">
{wr.WindDir}
@@ -64,7 +64,7 @@ export const pda_medical = (props, context) => {
{medical.cdi_d}
</LabeledList.Item>
<LabeledList.Item label="Important Notes" preserveWhitespace>
{medical.notes}
<Box preserveWhitespace>{medical.notes}</Box>
</LabeledList.Item>
</LabeledList>
)) || <Box color="bad">Medical record lost!</Box>}
@@ -51,8 +51,10 @@ export const pda_security = (props, context) => {
<LabeledList.Item label="Details">
{security.ma_crim_d}
</LabeledList.Item>
<LabeledList.Item label="Important Notes:" preserveWhitespace>
{security.notes || 'No data found.'}
<LabeledList.Item label="Important Notes:">
<Box preserveWhitespace>
{security.notes || 'No data found.'}
</Box>
</LabeledList.Item>
</LabeledList>
)) || <Box color="bad">Security record lost!</Box>}
File diff suppressed because one or more lines are too long
+3 -3
View File
@@ -9898,9 +9898,9 @@ __metadata:
linkType: hard
"word-wrap@npm:^1.2.3, word-wrap@npm:~1.2.3":
version: 1.2.3
resolution: "word-wrap@npm:1.2.3"
checksum: 30b48f91fcf12106ed3186ae4fa86a6a1842416df425be7b60485de14bec665a54a68e4b5156647dec3a70f25e84d270ca8bc8cd23182ed095f5c7206a938c1f
version: 1.2.4
resolution: "word-wrap@npm:1.2.4"
checksum: 8f1f2e0a397c0e074ca225ba9f67baa23f99293bc064e31355d426ae91b8b3f6b5f6c1fc9ae5e9141178bb362d563f55e62fd8d5c31f2a77e3ade56cb3e35bd1
languageName: node
linkType: hard
+4 -1
View File
@@ -2280,6 +2280,7 @@
#include "code\modules\events\shipping_error.dm"
#include "code\modules\events\solar_storm.dm"
#include "code\modules\events\space_ninja.dm"
#include "code\modules\events\spacefish_migration.dm"
#include "code\modules\events\spacevine.dm"
#include "code\modules\events\spider_infestation.dm"
#include "code\modules\events\spontaneous_appendicitis.dm"
@@ -2715,6 +2716,7 @@
#include "code\modules\mining\ore_redemption_machine\mine_point_items.dm"
#include "code\modules\mining\ore_redemption_machine\survey_vendor.dm"
#include "code\modules\mob\animations.dm"
#include "code\modules\mob\autowhisper.dm"
#include "code\modules\mob\death.dm"
#include "code\modules\mob\emote.dm"
#include "code\modules\mob\gender.dm"
@@ -3142,6 +3144,7 @@
#include "code\modules\mob\living\simple_mob\subtypes\humanoid\pirates.dm"
#include "code\modules\mob\living\simple_mob\subtypes\humanoid\russian.dm"
#include "code\modules\mob\living\simple_mob\subtypes\humanoid\mercs\mercs.dm"
#include "code\modules\mob\living\simple_mob\subtypes\humanoid\mercs\mercs_altevian.dm"
#include "code\modules\mob\living\simple_mob\subtypes\humanoid\mercs\mercs_vr.dm"
#include "code\modules\mob\living\simple_mob\subtypes\illusion\illusion.dm"
#include "code\modules\mob\living\simple_mob\subtypes\mechanical\corrupt_maint_drone_vr.dm"
@@ -4227,13 +4230,13 @@
#include "maps\expedition_vr\beach\submaps\mountains.dm"
#include "maps\expedition_vr\beach\submaps\mountains_areas.dm"
#include "maps\gateway_archive_vr\blackmarketpackers.dm"
#include "maps\groundbase\groundbase.dm"
#include "maps\southern_cross\items\clothing\sc_accessory.dm"
#include "maps\southern_cross\items\clothing\sc_suit.dm"
#include "maps\southern_cross\items\clothing\sc_under.dm"
#include "maps\southern_cross\loadout\loadout_suit.dm"
#include "maps\southern_cross\loadout\loadout_uniform.dm"
#include "maps\southern_cross\loadout\loadout_vr.dm"
#include "maps\stellar_delight\stellar_delight.dm"
#include "maps\submaps\_helpers.dm"
#include "maps\submaps\_readme.dm"
#include "maps\submaps\engine_submaps\engine.dm"