Merge branch 'master' into upstream-merge-10095

This commit is contained in:
Nadyr
2021-04-11 03:34:32 -04:00
committed by GitHub
88 changed files with 20382 additions and 20572 deletions
+5
View File
@@ -67,6 +67,11 @@
#define MAT_PLASTITANIUMGLASS "plastitanium glass"
#define MAT_GOLDHULL "gold hull"
#define RESIZE_MINIMUM 0.25
#define RESIZE_MAXIMUM 2
#define RESIZE_MINIMUM_DORMS 0.01
#define RESIZE_MAXIMUM_DORMS 6
#define RESIZE_HUGE 2
#define RESIZE_BIG 1.5
#define RESIZE_NORMAL 1
+2 -2
View File
@@ -58,7 +58,8 @@ var/global/list/runlevel_flags = list(RUNLEVEL_LOBBY, RUNLEVEL_SETUP, RUNLEVEL_G
#define INIT_ORDER_SKYBOX 30
#define INIT_ORDER_MAPPING 25
#define INIT_ORDER_DECALS 20
#define INIT_ORDER_PLANTS 18 // Must initialize before atoms.
#define INIT_ORDER_PLANTS 19 // Must initialize before atoms.
#define INIT_ORDER_PLANETS 18
#define INIT_ORDER_JOB 17
#define INIT_ORDER_ALARM 16 // Must initialize before atoms.
#define INIT_ORDER_ATOMS 15
@@ -69,7 +70,6 @@ var/global/list/runlevel_flags = list(RUNLEVEL_LOBBY, RUNLEVEL_SETUP, RUNLEVEL_G
#define INIT_ORDER_LIGHTING 0
#define INIT_ORDER_AIR -1
#define INIT_ORDER_ASSETS -3
#define INIT_ORDER_PLANETS -4
#define INIT_ORDER_HOLOMAPS -5
#define INIT_ORDER_NIGHTSHIFT -6
#define INIT_ORDER_OVERLAY -7
+3 -3
View File
@@ -11,7 +11,7 @@ var/global/list/traits_costs = list() // Just path = cost list, saves time in c
var/global/list/all_traits = list() // All of 'em at once (same instances)
var/global/list/active_ghost_pods = list()
var/global/list/sensorpreflist = list("Off", "Binary", "Vitals", "Tracking", "No Preference") //TFF 5/8/19 - Suit Sensors global list
var/global/list/sensorpreflist = list("Off", "Binary", "Vitals", "Tracking", "No Preference")
//stores numeric player size options indexed by name
var/global/list/player_sizes_list = list(
@@ -173,8 +173,8 @@ var/global/list/tf_vore_egg_types = list(
"Spotted pink" = /obj/item/weapon/storage/vore_egg/pinkspots)
var/global/list/edible_trash = list(/obj/item/broken_device,
/obj/item/clothing/accessory/collar, //TFF 10/7/19 - add option to nom collars,
/obj/item/device/communicator, //TFF 19/9/19 - add option to nom communicators and commwatches,
/obj/item/clothing/accessory/collar,
/obj/item/device/communicator,
/obj/item/clothing/mask,
/obj/item/clothing/glasses,
/obj/item/clothing/gloves,
+21 -54
View File
@@ -6,9 +6,6 @@ SUBSYSTEM_DEF(planets)
flags = SS_BACKGROUND
runlevels = RUNLEVEL_GAME | RUNLEVEL_POSTGAME
var/static/list/new_outdoor_turfs = list()
var/static/list/new_outdoor_walls = list()
var/static/list/planets = list()
var/static/list/z_to_planet = list()
@@ -20,7 +17,6 @@ SUBSYSTEM_DEF(planets)
/datum/controller/subsystem/planets/Initialize(timeofday)
admin_notice("<span class='danger'>Initializing planetary weather.</span>", R_DEBUG)
createPlanets()
allocateTurfs(TRUE)
..()
/datum/controller/subsystem/planets/proc/createPlanets()
@@ -36,64 +32,36 @@ SUBSYSTEM_DEF(planets)
continue
z_to_planet[Z] = NP
/datum/controller/subsystem/planets/proc/addTurf(var/turf/T,var/is_edge)
if(is_edge)
new_outdoor_walls |= T
else
new_outdoor_turfs |= T
// DO NOT CALL THIS DIRECTLY UNLESS IT'S IN INITIALIZE,
// USE turf/simulated/proc/make_indoors() and\
// tyrf/simulated/proc/make_outdoors()
/datum/controller/subsystem/planets/proc/addTurf(var/turf/T)
if(z_to_planet.len >= T.z && z_to_planet[T.z])
var/datum/planet/P = z_to_planet[T.z]
if(!istype(P))
return
if(istype(T, /turf/unsimulated/wall/planetary))
P.planet_walls += T
else if(istype(T, /turf/simulated) && T.outdoors)
P.planet_floors += T
T.vis_contents |= P.weather_holder.visuals
T.vis_contents |= P.weather_holder.special_visuals
/datum/controller/subsystem/planets/proc/removeTurf(var/turf/T,var/is_edge)
if(is_edge)
new_outdoor_walls -= T
else
new_outdoor_turfs -= T
if(z_to_planet.len >= T.z)
var/datum/planet/P = z_to_planet[T.z]
if(!P)
return
if(is_edge)
P.planet_floors -= T
else
if(istype(T, /turf/unsimulated/wall/planetary))
P.planet_walls -= T
T.vis_contents -= P.weather_holder.visuals
T.vis_contents -= P.weather_holder.special_visuals
/datum/controller/subsystem/planets/proc/allocateTurfs(var/initial = FALSE)
var/list/currentlist = new_outdoor_turfs
while(currentlist.len)
var/turf/simulated/OT = currentlist[currentlist.len]
currentlist.len--
if(istype(OT) && OT.outdoors && z_to_planet.len >= OT.z && z_to_planet[OT.z])
var/datum/planet/P = z_to_planet[OT.z]
P.planet_floors |= OT
OT.vis_contents |= P.weather_holder.visuals
OT.vis_contents |= P.weather_holder.special_visuals
if(!initial && MC_TICK_CHECK)
return
currentlist = new_outdoor_walls
while(currentlist.len)
var/turf/unsimulated/wall/planetary/PW = currentlist[currentlist.len]
currentlist.len--
if(istype(PW) && z_to_planet.len >= PW.z && z_to_planet[PW.z])
var/datum/planet/P = z_to_planet[PW.z]
P.planet_walls |= PW
if(!initial && MC_TICK_CHECK)
return
/datum/controller/subsystem/planets/proc/unallocateTurf(var/turf/simulated/T)
if(istype(T) && z_to_planet[T.z])
var/datum/planet/P = z_to_planet[T.z]
P.planet_floors -= T
T.vis_contents -= P.weather_holder.visuals
T.vis_contents -= P.weather_holder.special_visuals
else
P.planet_floors -= T
T.vis_contents -= P.weather_holder.visuals
T.vis_contents -= P.weather_holder.special_visuals
/datum/controller/subsystem/planets/fire(resumed = 0)
if(new_outdoor_turfs.len || new_outdoor_walls.len)
allocateTurfs()
if(!resumed)
src.currentrun = planets.Copy()
@@ -153,8 +121,7 @@ SUBSYSTEM_DEF(planets)
var/lum_g = new_brightness * GetGreenPart(new_color) / 255
var/lum_b = new_brightness * GetBluePart (new_color) / 255
var/static/update_gen = -1 // Used to prevent double-processing corners. Otherwise would happen when looping over adjacent turfs.
for(var/I in P.planet_floors)
var/turf/simulated/T = I
for(var/turf/simulated/T as anything in P.planet_floors)
if(!T.lighting_corners_initialised)
T.generate_missing_corners()
for(var/C in T.get_corners())
-1
View File
@@ -85,7 +85,6 @@
name = "welding mask"
path =/obj/item/clothing/head/welding
//TFF 24/12/19 - Let people print more spray bottles if needed.
/datum/category_item/autolathe/general/spraybottle
name = "spray bottle"
path = /obj/item/weapon/reagent_containers/spray
@@ -1,4 +1,3 @@
//TFF 28/8/19 - cleanup of areas placement - removes all but rogueminer_vr stuff.
/area
var/limit_mob_size = TRUE //If mob size is limited in the area.
+2 -2
View File
@@ -222,7 +222,7 @@
// Playerscale
var/size = dna.GetUIValueRange(DNA_UI_PLAYERSCALE, player_sizes_list.len)
if((0 < size) && (size <= player_sizes_list.len))
H.resize(player_sizes_list[player_sizes_list[size]], TRUE)
H.resize(player_sizes_list[player_sizes_list[size]], TRUE, ignore_prefs = TRUE)
// Tail/Taur Color
H.r_tail = dna.GetUIValueRange(DNA_UI_TAIL_R, 255)
@@ -243,7 +243,7 @@
H.custom_exclaim = dna.custom_exclaim
H.species.blood_color = dna.blood_color
var/datum/species/S = H.species
S.produceCopy(dna.base_species,dna.species_traits,src)
S.produceCopy(dna.species_traits,src)
// VOREStation Edit End
H.force_update_organs() //VOREStation Add - Gotta do this too
+14 -3
View File
@@ -257,9 +257,17 @@
for(var/obj/thing in E.implants)
var/implantSubData[0]
var/obj/item/weapon/implant/I = thing
implantSubData["name"] = I.name
implantSubData["known"] = istype(I) && I.known_implant
implantData.Add(list(implantSubData))
//VOREStation Block Edit Start
var/obj/item/device/nif/N = thing
if(istype(I))
implantSubData["name"] = I.name
implantSubData["known"] = istype(I) && I.known_implant
implantData.Add(list(implantSubData))
else
implantSubData["name"] = N.name
implantSubData["known"] = istype(N) && N.known_implant
implantData.Add(list(implantSubData))
//VOREStation Block Edit End
organData["implants"] = implantData
organData["implants_len"] = implantData.len
@@ -464,8 +472,11 @@
var/unknown_body = 0
for(var/thing in e.implants)
var/obj/item/weapon/implant/I = thing
var/obj/item/device/nif/N = thing //VOREStation Add: NIFs
if(istype(I) && I.known_implant)
imp += "[I] implanted:"
if(istype(N) && N.known_implant) //VOREStation Add: NIFs
imp += "[N] implanted:"
else
unknown_body++
-1
View File
@@ -43,7 +43,6 @@
else
icon_state = "dbchime-standby"
//TFF 3/6/19 - Port Cit RP fix of infinite frames. ToDo: Make it so that you can completely deconstruct it and reconstruct it.
/obj/machinery/doorbell_chime/attackby(obj/item/W as obj, mob/user as mob)
src.add_fingerprint(user)
if(default_deconstruction_screwdriver(user, W))
-1
View File
@@ -16,7 +16,6 @@
var/list/logs = list() // Gets written to by exonet's send_message() function.
//TFF 3/6/19 - Port Cit RP fix for infinite frames
circuit = /obj/item/weapon/circuitboard/telecomms/exonet_node
// Proc: New()
// Parameters: None
+1 -1
View File
@@ -428,7 +428,7 @@ Class Procs:
for(var/obj/I in contents)
if(istype(I,/obj/item/weapon/card/id))
I.forceMove(src.loc)
//TFF 3/6/19 - port Cit RP fix of infinite frames. If it doesn't have a circuit board, don't create a frame. Return a smack instead. BONK!
if(!circuit)
return 0
var/obj/structure/frame/A = new /obj/structure/frame(src.loc)
@@ -3207,7 +3207,6 @@
/obj/item/weapon/reagent_containers/food/snacks/xenomeat/spidermeat = 10)
vend_delay = 15
//TFF 19/12/19 - Brig version of a seed storage vendor
/obj/machinery/seed_storage/brig
name = "Prisoners' food seed storage"
starting_seeds = list(
+1 -1
View File
@@ -105,7 +105,7 @@
desc = "Used for building lights."
icon = 'icons/obj/lighting.dmi'
icon_state = "tube-construct-item"
refund_amt = 2 //TFF 17/1/20 - Oversight fix for infinite steel produciton.
refund_amt = 2
build_machine_type = /obj/machinery/light_construct
reverse = 1
@@ -291,7 +291,7 @@
The image seems important."
listing_name = "Safety - Mech Operation"
//VOREStation Removal Start TFF 17/12/19 - lore not used in our station's own lore.
//VOREStation Removal Start
/*
/datum/poster/nanotrasen/nt_4
icon_state = "ntposter04"
@@ -294,7 +294,7 @@
icon_state = "lamp"
force = 10
center_of_mass = list("x" = 13,"y" = 11)
brightness_on = 10 //TFF 27/11/19 - post refactor fix for intensity levels.
brightness_on = 10
w_class = ITEMSIZE_LARGE
power_use = 0
on = 1
+1 -1
View File
@@ -950,7 +950,7 @@
/obj/item/toy/plushie/mouse
name = "mouse plush"
desc = "A plushie of a delightful mouse! What was once considered a vile rodent is now your very best friend."
icon_state = "mouseplushie" //TFF 12/11/19 - updated icon to show a sprite that doesn't replicate a dead mouse. Heck you for that! >:C
icon_state = "mouseplushie"
pokephrase = "Squeak!"
/obj/item/toy/plushie/kitten
@@ -31,10 +31,14 @@ var/list/turf_edge_cache = list()
return ..()
/turf/simulated/proc/make_outdoors()
if(outdoors)
return
outdoors = TRUE
SSplanets.addTurf(src)
/turf/simulated/proc/make_indoors()
if(!outdoors)
return
outdoors = FALSE
SSplanets.removeTurf(src)
+2 -2
View File
@@ -4,7 +4,7 @@
set category = "Fun"
if(!check_rights(R_ADMIN, R_FUN))
return
var/size_multiplier = input(usr, "Input size multiplier.", "Resize", 1) as num|null
if(!size_multiplier)
return //cancelled
@@ -21,4 +21,4 @@
L.resize(size_multiplier, animate = TRUE, uncapped = TRUE, ignore_prefs = TRUE)
log_and_message_admins("has changed [key_name(L)]'s size multiplier to [size_multiplier].")
feedback_add_details("admin_verb","RESIZE")
feedback_add_details("admin_verb","RESIZE")
@@ -44,7 +44,6 @@
display_name = "collar, holo"
path = /obj/item/clothing/accessory/collar/holo
//TFF 17/6/19 - public loadout addition: Indigestible Holocollar
/datum/gear/collar/holo/indigestible
display_name = "collar, holo (indigestible)"
path = /obj/item/clothing/accessory/collar/holo/indigestible
@@ -45,7 +45,7 @@
character.weight_gain = pref.weight_gain
character.weight_loss = pref.weight_loss
character.fuzzy = pref.fuzzy
character.resize(pref.size_multiplier, animate = FALSE)
character.resize(pref.size_multiplier, animate = FALSE, ignore_prefs = TRUE)
/datum/category_item/player_setup_item/vore/size/content(var/mob/user)
. += "<br>"
@@ -114,12 +114,7 @@
pref.dirty_synth = 0
var/datum/species/S = character.species
var/SB
if(S.selects_bodytype)
SB = pref.custom_base ? pref.custom_base : "Human"
else
SB = S.name
var/datum/species/new_S = S.produceCopy(SB, pref.pos_traits + pref.neu_traits + pref.neg_traits, character)
var/datum/species/new_S = S.produceCopy(pref.pos_traits + pref.neu_traits + pref.neg_traits, character, pref.custom_base)
//Any additional non-trait settings can be applied here
new_S.blood_color = pref.blood_color
@@ -1,5 +1,3 @@
//TFF 5/8/19 - moved /datum/preferences to preferences_vr.dm
/datum/category_item/player_setup_item/vore/misc
name = "Misc Settings"
sort_order = 9
@@ -9,16 +7,15 @@
S["directory_tag"] >> pref.directory_tag
S["directory_erptag"] >> pref.directory_erptag
S["directory_ad"] >> pref.directory_ad
S["sensorpref"] >> pref.sensorpref //TFF 5/8/19 - add sensor pref setting to load after saved
S["sensorpref"] >> pref.sensorpref
/datum/category_item/player_setup_item/vore/misc/save_character(var/savefile/S)
S["show_in_directory"] << pref.show_in_directory
S["directory_tag"] << pref.directory_tag
S["directory_erptag"] << pref.directory_erptag
S["directory_ad"] << pref.directory_ad
S["sensorpref"] << pref.sensorpref //TFF 5/8/19 - add sensor pref setting to be saveable
S["sensorpref"] << pref.sensorpref
//TFF 5/8/19 - add new datum category to allow for setting multiple settings when this is selected in the loadout.
/datum/category_item/player_setup_item/vore/misc/copy_to_mob(var/mob/living/carbon/human/character)
if(pref.sensorpref > 5 || pref.sensorpref < 1)
pref.sensorpref = 5
@@ -28,7 +25,7 @@
pref.show_in_directory = sanitize_integer(pref.show_in_directory, 0, 1, initial(pref.show_in_directory))
pref.directory_tag = sanitize_inlist(pref.directory_tag, GLOB.char_directory_tags, initial(pref.directory_tag))
pref.directory_erptag = sanitize_inlist(pref.directory_erptag, GLOB.char_directory_erptags, initial(pref.directory_erptag))
pref.sensorpref = sanitize_integer(pref.sensorpref, 1, sensorpreflist.len, initial(pref.sensorpref)) //TFF - 5/8/19 - add santisation for sensor prefs
pref.sensorpref = sanitize_integer(pref.sensorpref, 1, sensorpreflist.len, initial(pref.sensorpref))
/datum/category_item/player_setup_item/vore/misc/content(var/mob/user)
. += "<br>"
@@ -36,7 +33,7 @@
. += "<b>Character Directory Vore Tag:</b> <a href='?src=\ref[src];directory_tag=1'><b>[pref.directory_tag]</b></a><br>"
. += "<b>Character Directory ERP Tag:</b> <a href='?src=\ref[src];directory_erptag=1'><b>[pref.directory_erptag]</b></a><br>"
. += "<b>Character Directory Advertisement:</b> <a href='?src=\ref[src];directory_ad=1'><b>Set Directory Ad</b></a><br>"
. += "<b>Suit Sensors Preference:</b> <a [pref.sensorpref ? "" : ""] href='?src=\ref[src];toggle_sensor_setting=1'><b>[sensorpreflist[pref.sensorpref]]</b></a><br>" //TFF 5/8/19 - Allow selection of sensor settings from off, binary, vitals, tracking, or random
. += "<b>Suit Sensors Preference:</b> <a [pref.sensorpref ? "" : ""] href='?src=\ref[src];toggle_sensor_setting=1'><b>[sensorpreflist[pref.sensorpref]]</b></a><br>"
/datum/category_item/player_setup_item/vore/misc/OnTopic(var/href, var/list/href_list, var/mob/user)
if(href_list["toggle_show_in_directory"])
@@ -58,7 +55,6 @@
var/msg = sanitize(input(user,"Write your advertisement here!", "Flavor Text", html_decode(pref.directory_ad)) as message, extra = 0) //VOREStation Edit: separating out OOC notes
pref.directory_ad = msg
return TOPIC_REFRESH
//TFF 5/8/19 - add new thing so you can choose the sensor setting your character can get.
else if(href_list["toggle_sensor_setting"])
var/new_sensorpref = input(user, "Choose your character's sensor preferences:", "Character Preferences", sensorpreflist[pref.sensorpref]) as null|anything in sensorpreflist
if (!isnull(new_sensorpref) && CanUseTopic(user))
-2
View File
@@ -154,7 +154,6 @@
SPECIES_VOX = 'icons/mob/species/vox/suit.dmi',
SPECIES_WEREBEAST = 'icons/mob/species/werebeast/suit.dmi')
//TFF 5/8/19 - sets Vorestation /obj/item/clothing/under sensor setting default?
/obj/item/clothing/under
sensor_mode = 3
var/sensorpref = 5
@@ -165,7 +164,6 @@
SPECIES_GREY_YW = 'icons/mob/species/grey/uniform.dmi'/*ywedit*/
)
//TFF 5/8/19 - define numbers and specifics for suit sensor settings
/obj/item/clothing/under/New(var/mob/living/carbon/human/H)
..()
sensorpref = isnull(H) ? 1 : (ishuman(H) ? H.sensorpref : 1)
-2
View File
@@ -30,8 +30,6 @@
icon_state = "grey"
rolled_sleeves = 0
//TFF 5/8/19 - add a non perma-set orange jumpsuit, splits prison into its own obj with override var settings.
//TFF 5/9/19 - add a different icon_state to both jumpsuits, orange and prison. Refactors orange and prison jumpsuit slightly.
/obj/item/clothing/under/color/orange
name = "orange jumpsuit"
icon_state = "orange"
@@ -79,6 +79,8 @@
return
var/new_size = input("Put the desired size (25-200%), or (1-600%) in dormitory areas.", "Set Size", 200) as num|null
if(!new_size)
return //cancelled
//Check AGAIN because we accepted user input which is blocking.
if (src != H.w_uniform)
@@ -88,9 +90,9 @@
if (H.stat || H.restrained())
return
if (isnull(H.size_multiplier))
if (isnull(H.size_multiplier)) // Why would this ever be the case?
to_chat(H,"<span class='warning'>The uniform panics and corrects your apparently microscopic size.</span>")
H.resize(RESIZE_NORMAL)
H.resize(RESIZE_NORMAL, ignore_prefs = TRUE)
H.update_icons() //Just want the matrix transform
return
@@ -102,7 +104,7 @@
if(new_size != H.size_multiplier)
if(!original_size)
original_size = H.size_multiplier
H.resize(new_size/100)
H.resize(new_size/100, ignore_prefs = TRUE) // Ignores prefs because you can only resize yourself
H.visible_message("<span class='warning'>The space around [H] distorts as they change size!</span>","<span class='notice'>The space around you distorts as you change size!</span>")
else //They chose their current size.
return
@@ -111,7 +113,7 @@
. = ..()
if(. && ishuman(M) && original_size)
var/mob/living/carbon/human/H = M
H.resize(original_size)
H.resize(original_size, ignore_prefs = TRUE)
original_size = null
H.visible_message("<span class='warning'>The space around [H] distorts as they return to their original size!</span>","<span class='notice'>The space around you distorts as you return to your original size!</span>")
+2 -2
View File
@@ -89,8 +89,8 @@
vermstring = "lizards"
if(VERM_SPIDERS)
spawn_types = list(/obj/effect/spider/spiderling)
min_number = 6 //CHOMP Add
max_number = 12 //CHOMP edit
min_number = 4 //CHOMP Add
max_number = 8 //CHOMP edit
vermstring = "spiders"
spawn(0)
+1 -1
View File
@@ -22,7 +22,7 @@
/datum/event/rogue_drone/announce()
var/msg
var/rng = rand(1,5)
//CHOMPStation Edit Start TFF 14/1/20 - Virgo 3b -> Sif
//CHOMPStation Edit Start
switch(rng)
if(1)
msg = "A combat drone wing operating in close orbit above Sif has failed to return from a anti-piracy sweep. If any are sighted, \
+1 -1
View File
@@ -7,7 +7,7 @@
/datum/event/spider_infestation/setup()
announceWhen = rand(announceWhen, announceWhen + 60)
spawncount = rand(12 * severity, 18 * severity) //spiderlings only have a 50% chance to grow big and strong //CHOMP Edit: Tripled amount spawned
spawncount = rand(6 * severity, 12 * severity) //spiderlings only have a 50% chance to grow big and strong //CHOMP Edit: Tripled amount spawned
sent_spiders_to_station = 0
/datum/event/spider_infestation/announce()
+1 -1
View File
@@ -58,7 +58,7 @@
desc = "It's beef. It's roasted. It's been a staple of dining tradition for centuries."
icon = 'icons/obj/food_vr.dmi'
icon_state = "roastbeef"
trash = /obj/item/trash/plate //TFF 30/11/19 - Roast beef are put on plates, not waffle trays, you dunce~
trash = /obj/item/trash/plate
nutriment_amt = 8
nutriment_desc = list("cooked meat" = 5)
-1
View File
@@ -33,7 +33,6 @@
/area/engineering
holomap_color = HOLOMAP_AREACOLOR_ENGINEERING
//TFF 11/12/19 - Minor refactor, makes mice spawn only in Atmos.
/area/engineering/atmos_intake
holomap_color = null
/area/maintenance/substation/engineering
@@ -94,7 +94,6 @@
to_chat(user, "You load [W] into [src].")
return
//TFF 3/6/19 - fix infinite frame creation, ported from Cit RP - also allow movement of hydroponic-related machines.
if(default_deconstruction_screwdriver(user, W))
return
if(W.is_wrench())
+1 -1
View File
@@ -10,7 +10,7 @@
icon_state = "farmbot0"
health = 50
maxHealth = 50
req_one_access = list(access_robotics, access_hydroponics, access_xenobiology) //TFF 11/7/19 - adds Xenobio access on behalf of Nalarac
req_one_access = list(access_robotics, access_hydroponics, access_xenobiology)
var/action = "" // Used to update icon
var/waters_trays = 1
@@ -207,15 +207,6 @@
return FALSE
/mob/living/carbon/human/verb/toggle_resizing_immunity()
set name = "Toggle Resizing Immunity"
set desc = "Toggles your ability to resist resizing attempts"
set category = "IC"
resizable = !resizable
to_chat(src, "<span class='notice'>You are now [resizable ? "susceptible" : "immune"] to being resized.</span>")
/mob/living/carbon/human/proc/handle_flip_vr()
var/original_density = density
var/original_passflags = pass_flags
@@ -492,6 +492,7 @@ This function restores all organs.
switch(damagetype)
if(BRUTE)
damageoverlaytemp = 20
if(nif && nif.flag_check(NIF_C_BRUTEARMOR,NIF_FLAGS_COMBAT)){damage *= 0.7} //CHOMPSTATION edit. Fixes NIF armour.
damage = damage*species.brute_mod
for(var/datum/modifier/M in modifiers)
@@ -504,6 +505,7 @@ This function restores all organs.
UpdateDamageIcon()
if(BURN)
damageoverlaytemp = 20
if(nif && nif.flag_check(NIF_C_BURNARMOR,NIF_FLAGS_COMBAT)){damage *= 0.7} //CHOMPSTATION edit. Fixes NIF armour.
damage = damage*species.burn_mod
for(var/datum/modifier/M in modifiers)
@@ -104,7 +104,8 @@
else if (E.is_dislocated())
stance_damage += 0.5
if(E) limb_pain = E.organ_can_feel_pain()
if(E && (!E.is_usable() || E.is_broken() || E.is_dislocated())) //VOREStation Edit
limb_pain = E.organ_can_feel_pain()
// Canes and crutches help you stand (if the latter is ever added)
// One cane mitigates a broken leg+foot, or a missing foot.
@@ -416,7 +416,6 @@
H.visible_message( \
"<span class='notice'>[H] shakes [target]'s hand.</span>", \
"<span class='notice'>You shake [target]'s hand.</span>", )
//TFF 15/12/19 - Port nose booping from CHOMPStation
else if(H.zone_sel.selecting == "mouth")
H.visible_message( \
"<span class='notice'>[H] boops [target]'s nose.</span>", \
@@ -42,16 +42,28 @@
nif.nifsofts = nifsofts
else
..()
/datum/species/proc/produceCopy(var/datum/species/to_copy,var/list/traits,var/mob/living/carbon/human/H)
ASSERT(to_copy)
/datum/species/proc/produceCopy(var/list/traits,var/mob/living/carbon/human/H, var/custom_base)
var/datum/species/S
//If species allows custom base, and custom base is set, apply it, otherwise use default.
if(selects_bodytype && custom_base)
S = GLOB.all_species[custom_base]
else
S = GLOB.all_species[src.name]
ASSERT(S)
ASSERT(istype(H))
var/datum/species/new_copy = new S.type()
if(ispath(to_copy))
to_copy = "[initial(to_copy.name)]"
if(istext(to_copy))
to_copy = GLOB.all_species[to_copy]
for(var/i in S.vars) //Thorough copy of species.
if(new_copy.vars[i] != S.vars[i])
//Skipping lists because they may contain more lists, copy those manually.
//Also ignoring type var since it's read-only and will runtime.
if(islist(vars[i]))
continue
new_copy.vars[i] = S.vars[i]
var/datum/species/new_copy = new to_copy.type()
for(var/organ in S.has_limbs) //Copy important organ data generated by species.
var/list/organ_data = S.has_limbs[organ]
new_copy.has_limbs[organ] = organ_data.Copy()
new_copy.traits = traits
@@ -59,12 +71,20 @@
if(new_copy.traits)
for(var/trait in new_copy.traits)
var/datum/trait/T = all_traits[trait]
T.apply(new_copy,H)
T.apply(new_copy, H)
//Set up a mob
H.species = new_copy
H.icon_state = new_copy.get_bodytype()
if(new_copy.holder_type)
H.holder_type = new_copy.holder_type
if(H.dna)
H.dna.ready_dna(H)
return new_copy
return new_copy
/datum/species/get_bodytype()
return base_species
@@ -447,55 +447,6 @@
//End of fruit gland code.
/datum/species/alraune/produceCopy(var/datum/species/to_copy,var/list/traits,var/mob/living/carbon/human/H)
ASSERT(to_copy)
ASSERT(istype(H))
if(ispath(to_copy))
to_copy = "[initial(to_copy.name)]"
if(istext(to_copy))
to_copy = GLOB.all_species[to_copy]
var/datum/species/alraune/new_copy = new()
//Initials so it works with a simple path passed, or an instance
new_copy.base_species = to_copy.name
new_copy.icobase = to_copy.icobase
new_copy.deform = to_copy.deform
new_copy.tail = to_copy.tail
new_copy.tail_animation = to_copy.tail_animation
new_copy.icobase_tail = to_copy.icobase_tail
new_copy.color_mult = to_copy.color_mult
new_copy.primitive_form = to_copy.primitive_form
new_copy.appearance_flags = to_copy.appearance_flags
new_copy.flesh_color = to_copy.flesh_color
new_copy.base_color = to_copy.base_color
new_copy.blood_mask = to_copy.blood_mask
new_copy.damage_mask = to_copy.damage_mask
new_copy.damage_overlays = to_copy.damage_overlays
new_copy.traits = traits
//If you had traits, apply them
if(new_copy.traits)
for(var/trait in new_copy.traits)
var/datum/trait/T = all_traits[trait]
T.apply(new_copy,H)
//Set up a mob
H.species = new_copy
H.icon_state = lowertext(new_copy.get_bodytype())
if(new_copy.holder_type)
H.holder_type = new_copy.holder_type
if(H.dna)
H.dna.ready_dna(H)
return new_copy
/datum/species/alraune/get_bodytype()
return base_species
/datum/species/alraune/get_race_key()
var/datum/species/real = GLOB.all_species[base_species]
return real.race_key
@@ -45,61 +45,14 @@
BP_R_FOOT = list("path" = /obj/item/organ/external/foot/right, "descriptor" = "right foot")
)
/datum/species/custom/get_bodytype()
return base_species
/datum/species/custom/get_race_key()
var/datum/species/real = GLOB.all_species[base_species]
return real.race_key
/datum/species/custom/produceCopy(var/datum/species/to_copy,var/list/traits,var/mob/living/carbon/human/H)
ASSERT(to_copy)
ASSERT(istype(H))
if(ispath(to_copy))
to_copy = "[initial(to_copy.name)]"
if(istext(to_copy))
to_copy = GLOB.all_species[to_copy]
var/datum/species/custom/new_copy = new()
//Initials so it works with a simple path passed, or an instance
new_copy.base_species = to_copy.name
new_copy.icobase = to_copy.icobase
new_copy.deform = to_copy.deform
new_copy.tail = to_copy.tail
new_copy.tail_animation = to_copy.tail_animation
new_copy.icobase_tail = to_copy.icobase_tail
new_copy.color_mult = to_copy.color_mult
new_copy.primitive_form = to_copy.primitive_form
new_copy.appearance_flags = to_copy.appearance_flags
new_copy.flesh_color = to_copy.flesh_color
new_copy.base_color = to_copy.base_color
new_copy.blood_mask = to_copy.blood_mask
new_copy.damage_mask = to_copy.damage_mask
new_copy.damage_overlays = to_copy.damage_overlays
new_copy.traits = traits
new_copy.move_trail = move_trail
new_copy.has_floating_eyes = has_floating_eyes
//If you had traits, apply them
if(new_copy.traits)
for(var/trait in new_copy.traits)
var/datum/trait/T = all_traits[trait]
T.apply(new_copy,H)
//Set up a mob
H.species = new_copy
H.maxHealth = new_copy.total_health
H.hunger_rate = new_copy.hunger_factor
if(new_copy.holder_type)
H.holder_type = new_copy.holder_type
if(H.dna)
H.dna.ready_dna(H)
return new_copy
/datum/species/custom/produceCopy(var/list/traits,var/mob/living/carbon/human/H)
. = ..()
H.maxHealth = H.species.total_health
H.hunger_rate = H.species.hunger_factor
// Stub species overrides for shoving trait abilities into
@@ -502,7 +502,7 @@ var/global/list/disallowed_protean_accessories = list(
var/atom/reform_spot = blob.drop_location()
//Size update
resize(blob.size_multiplier, FALSE)
resize(blob.size_multiplier, FALSE, ignore_prefs = TRUE)
//Move them back where the blob was
forceMove(reform_spot)
@@ -396,14 +396,14 @@
//Sizing up
if(cost > 0)
if(refactory.use_stored_material(MAT_STEEL,cost))
user.resize(size_factor)
user.resize(size_factor, ignore_prefs = TRUE)
else
to_chat(user,"<span class='warning'>That size change would cost [cost] steel, which you don't have.</span>")
//Sizing down (or not at all)
else if(cost <= 0)
cost = abs(cost)
var/actually_added = refactory.add_stored_material(MAT_STEEL,cost)
user.resize(size_factor)
user.resize(size_factor, ignore_prefs = TRUE)
if(actually_added != cost)
to_chat(user,"<span class='warning'>Unfortunately, [cost-actually_added] steel was lost due to lack of storage space.</span>")
@@ -294,56 +294,6 @@
// HUD update time
update_xenochimera_hud(H, danger, feral_state)
/datum/species/xenochimera/produceCopy(var/datum/species/to_copy,var/list/traits,var/mob/living/carbon/human/H)
ASSERT(to_copy)
ASSERT(istype(H))
if(ispath(to_copy))
to_copy = "[initial(to_copy.name)]"
if(istext(to_copy))
to_copy = GLOB.all_species[to_copy]
var/datum/species/xenochimera/new_copy = new()
//Initials so it works with a simple path passed, or an instance
new_copy.base_species = to_copy.name
new_copy.icobase = to_copy.icobase
new_copy.deform = to_copy.deform
new_copy.tail = to_copy.tail
new_copy.tail_animation = to_copy.tail_animation
new_copy.icobase_tail = to_copy.icobase_tail
new_copy.color_mult = to_copy.color_mult
new_copy.primitive_form = to_copy.primitive_form
new_copy.appearance_flags = to_copy.appearance_flags
new_copy.flesh_color = to_copy.flesh_color
new_copy.base_color = to_copy.base_color
new_copy.blood_mask = to_copy.blood_mask
new_copy.damage_mask = to_copy.damage_mask
new_copy.damage_overlays = to_copy.damage_overlays
new_copy.traits = traits
//If you had traits, apply them
if(new_copy.traits)
for(var/trait in new_copy.traits)
var/datum/trait/T = all_traits[trait]
T.apply(new_copy,H)
//Set up a mob
H.species = new_copy
H.icon_state = lowertext(new_copy.get_bodytype())
if(new_copy.holder_type)
H.holder_type = new_copy.holder_type
if(H.dna)
H.dna.ready_dna(H)
return new_copy
/datum/species/xenochimera/get_bodytype()
return base_species
/datum/species/xenochimera/get_race_key()
var/datum/species/real = GLOB.all_species[base_species]
return real.race_key
+2 -2
View File
@@ -8,7 +8,7 @@ var/list/department_radio_keys = list(
":n" = "Science", ".n" = "Science",
":m" = "Medical", ".m" = "Medical",
":e" = "Engineering", ".e" = "Engineering",
":k" = "Response Team", ".k" = "Response Team", //TFF 11/3/20 - Add Response Team to channels usable rather than resorting to :H or such.,
":k" = "Response Team", ".k" = "Response Team",
":s" = "Security", ".s" = "Security",
":w" = "whisper", ".w" = "whisper",
":t" = "Mercenary", ".t" = "Mercenary",
@@ -27,7 +27,7 @@ var/list/department_radio_keys = list(
":N" = "Science", ".N" = "Science",
":M" = "Medical", ".M" = "Medical",
":E" = "Engineering", ".E" = "Engineering",
":k" = "Response Team", ".k" = "Response Team", //TFF 11/3/20 - Add Response Team to channels usable rather than resorting to :H or such.,
":k" = "Response Team", ".k" = "Response Team",
":S" = "Security", ".S" = "Security",
":W" = "whisper", ".W" = "whisper",
":T" = "Mercenary", ".T" = "Mercenary",
+2 -3
View File
@@ -56,7 +56,7 @@
"Chirp" = list("chirps","chirrups","cheeps"),
"Feline" = list("purrs","yowls","meows"),
"Canine" = list("yaps","barks","woofs"),
"Rodent" = list("squeaks", "SQUEAKS", "sqiks") //VOREStation Edit - TFF 22/11/19 - CHOMPStation port of pAI additions,
"Rodent" = list("squeaks", "SQUEAKS", "sqiks") //VOREStation Edit
)
var/obj/item/weapon/pai_cable/cable // The cable we produce and use when door or camera jacking
@@ -333,8 +333,7 @@
close_up()
//VOREStation Removal Start - TFF 22/11/19 - Refactored in pai_vr.dm
/*
/* //VOREStation Removal Start
/mob/living/silicon/pai/proc/choose_chassis()
set category = "pAI Commands"
set name = "Choose Chassis"
@@ -1,7 +1,6 @@
/mob/living/silicon/pai
var/people_eaten = 0
icon = 'icons/mob/pai_vr.dmi'
//TFF 22/11/19 - CHOMPStation port of pAI additions.
var/global/list/wide_chassis = list(
"rat",
"panther"
@@ -36,7 +35,6 @@
else if(people_eaten && resting)
icon_state = "[chassis]_rest_full"
//TFF 22/11/19 - CHOMPStation port of pAI additions.
if(chassis in wide_chassis)
icon = 'icons/mob/pai_vr64x64.dmi'
pixel_x = -16
@@ -58,7 +56,6 @@
else if(people_eaten && resting)
icon_state = "[chassis]_rest_full"
//TFF 22/11/19 - CHOMPStation port of pAI additions.
if(chassis in wide_chassis)
icon = 'icons/mob/pai_vr64x64.dmi'
pixel_x = -16
@@ -121,7 +121,7 @@
else if(ismob(target))
var/mob/living/M = target
resize(M.size_multiplier)
resize(M.size_multiplier, ignore_prefs = TRUE)
//Morphed is weaker
melee_damage_lower = melee_damage_disguised
@@ -165,7 +165,7 @@
maptext = null
size_multiplier = our_size_multiplier
resize(size_multiplier)
resize(size_multiplier, ignore_prefs = TRUE)
//Baseline stats
melee_damage_lower = initial(melee_damage_lower)
@@ -183,7 +183,7 @@
/mob/living/simple_mob/vore/hostile/morph/will_show_tooltip()
return (!morphed)
/mob/living/simple_mob/vore/hostile/morph/resize(var/new_size, var/animate = TRUE)
/mob/living/simple_mob/vore/hostile/morph/resize(var/new_size, var/animate = TRUE, var/uncapped = FALSE, var/ignore_prefs = FALSE)
if(morphed && !ismob(form))
return
return ..()
@@ -1,3 +1,2 @@
//TFF 5/8/19 - add randomised sensor setting for random button clicking
/datum/preferences/randomize_appearance_and_body_for(var/mob/living/carbon/human/H)
sensorpref = rand(1,5)
@@ -728,3 +728,9 @@
icon_state = "unathilongfrills"
color_blend_mode = ICON_MULTIPLY
body_parts = list(BP_HEAD)
/datum/sprite_accessory/marking/vr/thunderthighs
name = "Boosted Thighs"
icon_state = "thunderthighs"
color_blend_mode = ICON_MULTIPLY
body_parts = list(BP_L_LEG,BP_R_LEG)
@@ -146,7 +146,6 @@
suit_sprites = 'icons/mob/taursuits_wolf.dmi'
icon_sprite_tag = "wolf"
//TFF 22/11/19 - CHOMPStation port of fat taur sprites
/datum/sprite_accessory/tail/taur/fatwolf
name = "Fat Wolf (Taur)"
icon_state = "fatwolf_s"
@@ -158,7 +157,6 @@
extra_overlay = "wolf_markings"
//icon_sprite_tag = "wolf2c"
//TFF 22/11/19 - CHOMPStation port of fat taur sprites
/datum/sprite_accessory/tail/taur/wolf/fatwolf_2c
name = "Fat Wolf dual-color (Taur)"
icon_state = "fatwolf_s"
@@ -245,7 +243,6 @@
suit_sprites = 'icons/mob/taursuits_feline.dmi'
icon_sprite_tag = "feline"
//TFF 22/11/19 - CHOMPStation port of fat taur sprites
/datum/sprite_accessory/tail/taur/fatfeline
name = "Fat Feline (Taur)"
icon_state = "fatfeline_s"
@@ -262,7 +259,6 @@
extra_overlay = "feline_markings"
//icon_sprite_tag = "feline2c"
//TFF 22/11/19 - CHOMPStation port of fat taur sprites
/datum/sprite_accessory/tail/taur/feline/fatfeline_2c
name = "Fat Feline dual-color (Taur)"
icon_state = "fatfeline_s"
@@ -57,7 +57,6 @@
suit_sprites = 'icons/mob/taursuits_wolf_vr.dmi'
icon_sprite_tag = "wolf"
//TFF 22/11/19 - CHOMPStation port of fat taur sprites
/datum/sprite_accessory/tail/taur/fatwolf
name = "Fat Wolf (Taur)"
icon_state = "fatwolf_s"
@@ -70,18 +69,6 @@
extra_overlay2 = "wolf_markings_2"
//icon_sprite_tag = "wolf2c"
//MTosh 08/01/2020 - CHOMPstation Moved Synth Wolf up under wolf dual-color, and Fat Wolf below Synth Wolf, to better group original vorestation wolf taurs/differentiate from Chompstation Fat Taurs
/datum/sprite_accessory/tail/taur/wolf/synthwolf
name = "SynthWolf dual-color (Taur)"
icon_state = "synthwolf_s"
extra_overlay = "synthwolf_markings"
//TFF 22/11/19 - CHOMPStation port of fat taur sprites
//Mtosh 08/01/2020 - CHOMPStation changed datum tree from "tail/taur/fatwolf" to "tail/taur/wolf/fatwolf" in order to fix bug involving taur duty vest.
/datum/sprite_accessory/tail/taur/wolf/fatwolf
name = "Fat Wolf (Taur)"
icon_state = "fatwolf_s"
/datum/sprite_accessory/tail/taur/wolf/fatwolf_2c
name = "Fat Wolf 3-color (Taur)"
icon_state = "fatwolf_s"
@@ -287,7 +274,6 @@
suit_sprites = 'icons/mob/taursuits_feline_vr.dmi'
icon_sprite_tag = "feline"
//TFF 22/11/19 - CHOMPStation port of fat taur sprites
/datum/sprite_accessory/tail/taur/fatfeline
name = "Fat Feline (Taur)"
icon_state = "fatfeline_s"
@@ -305,7 +291,6 @@
extra_overlay2 = "feline_markings_2"
//icon_sprite_tag = "feline2c"
//TFF 22/11/19 - CHOMPStation port of fat taur sprites
/datum/sprite_accessory/tail/taur/feline/fatfeline_2c
name = "Fat Feline 3-color (Taur)"
icon_state = "fatfeline_s"
+1 -1
View File
@@ -192,7 +192,7 @@
var/datum/preferences/B = O.client.prefs
for(var/language in B.alternate_languages)
O.add_language(language)
O.resize(B.size_multiplier, animate = TRUE) //VOREStation Addition: add size prefs to borgs
O.resize(B.size_multiplier, animate = TRUE, ignore_prefs = TRUE) //VOREStation Addition: add size prefs to borgs
O.fuzzy = B.fuzzy //VOREStation Addition: add size prefs to borgs
callHook("borgify", list(O))
+2 -2
View File
@@ -7,7 +7,7 @@
illegal = TRUE
wear = 3
access = 999 //Prevents anyone from buying it without an emag.
activates = FALSE //It's armor.
//CHOMPSTATION edit. Makes NIF armour toggleable.
combat_flags = (NIF_C_BRUTEARMOR) // Default on when installed, clear when uninstalled
/datum/nifsoft/burn_armor
@@ -19,7 +19,7 @@
illegal = TRUE
wear = 3
access = 999 //Prevents anyone from buying it without an emag.
activates = FALSE //It's armor.
//CHOMPSTATION edit. Makes NIF armour toggleable.
combat_flags = (NIF_C_BURNARMOR) // Default on when installed, clear when uninstalled
/datum/nifsoft/painkillers
+30 -35
View File
@@ -216,15 +216,17 @@ var/datum/planet/sif/planet_sif = null
outdoor_sounds_type = /datum/looping_sound/weather/outside_snow
indoor_sounds_type = /datum/looping_sound/weather/inside_snow
/*
/datum/weather/sif/snow/process_effects()
..()
for(var/turf/simulated/floor/outdoors/snow/S in SSplanets.new_outdoor_turfs) //This didn't make any sense before SSplanets, either
for(var/turf/simulated/floor/outdoors/snow/S as anything in SSplanets.new_outdoor_turfs) //This didn't make any sense before SSplanets, either
if(S.z in holder.our_planet.expected_z_levels)
for(var/dir_checked in cardinal)
var/turf/simulated/floor/T = get_step(S, dir_checked)
if(istype(T))
if(istype(T, /turf/simulated/floor/outdoors) && prob(33))
T.chill()
*/
/datum/weather/sif/blizzard
name = "blizzard"
@@ -249,15 +251,17 @@ var/datum/planet/sif/planet_sif = null
outdoor_sounds_type = /datum/looping_sound/weather/outside_blizzard
indoor_sounds_type = /datum/looping_sound/weather/inside_blizzard
/*
/datum/weather/sif/blizzard/process_effects()
..()
for(var/turf/simulated/floor/outdoors/snow/S in SSplanets.new_outdoor_turfs) //This didn't make any sense before SSplanets, either
for(var/turf/simulated/floor/outdoors/snow/S as anything in SSplanets.new_outdoor_turfs) //This didn't make any sense before SSplanets, either
if(S.z in holder.our_planet.expected_z_levels)
for(var/dir_checked in cardinal)
var/turf/simulated/floor/T = get_step(S, dir_checked)
if(istype(T))
if(istype(T, /turf/simulated/floor/outdoors) && prob(50))
T.chill()
*/
/datum/weather/sif/rain
name = "rain"
@@ -283,25 +287,21 @@ var/datum/planet/sif/planet_sif = null
/datum/weather/sif/rain/process_effects()
..()
for(var/mob/living/L in living_mob_list)
for(var/mob/living/L as anything in living_mob_list)
if(L.z in holder.our_planet.expected_z_levels)
var/turf/T = get_turf(L)
if(!T.outdoors)
continue // They're indoors, so no need to rain on them.
// If they have an open umbrella, it'll guard from rain
if(istype(L.get_active_hand(), /obj/item/weapon/melee/umbrella))
var/obj/item/weapon/melee/umbrella/U = L.get_active_hand()
if(U.open)
if(show_message)
to_chat(L, "<span class='notice'>Rain patters softly onto your umbrella.</span>")
continue
else if(istype(L.get_inactive_hand(), /obj/item/weapon/melee/umbrella))
var/obj/item/weapon/melee/umbrella/U = L.get_inactive_hand()
if(U.open)
if(show_message)
to_chat(L, "<span class='notice'>Rain patters softly onto your umbrella.</span>")
continue
var/obj/item/weapon/melee/umbrella/U = L.get_active_hand()
if(!istype(U) || !U.open)
U = L.get_inactive_hand()
if(istype(U) && U.open)
if(show_message)
to_chat(L, "<span class='notice'>Rain patters softly onto your umbrella.</span>")
continue
L.water_act(1)
if(show_message)
@@ -340,24 +340,21 @@ var/datum/planet/sif/planet_sif = null
/datum/weather/sif/storm/process_effects()
..()
for(var/mob/living/L in living_mob_list)
for(var/mob/living/L as anything in living_mob_list)
if(L.z in holder.our_planet.expected_z_levels)
var/turf/T = get_turf(L)
if(!T.outdoors)
continue // They're indoors, so no need to rain on them.
// If they have an open umbrella, it'll guard from rain
if(istype(L.get_active_hand(), /obj/item/weapon/melee/umbrella))
var/obj/item/weapon/melee/umbrella/U = L.get_active_hand()
if(U.open)
if(show_message)
to_chat(L, "<span class='notice'>Rain showers loudly onto your umbrella!</span>")
continue
else if(istype(L.get_inactive_hand(), /obj/item/weapon/melee/umbrella))
var/obj/item/weapon/melee/umbrella/U = L.get_inactive_hand()
if(U.open)
if(show_message)
to_chat(L, "<span class='notice'>Rain showers loudly onto your umbrella!</span>")
continue
var/obj/item/weapon/melee/umbrella/U = L.get_active_hand()
if(!istype(U) || !U.open)
U = L.get_inactive_hand()
if(istype(U) && U.open)
if(show_message)
to_chat(L, "<span class='notice'>Rain showers loudly onto your umbrella!</span>")
continue
L.water_act(2)
@@ -401,20 +398,18 @@ var/datum/planet/sif/planet_sif = null
/datum/weather/sif/hail/process_effects()
..()
for(var/humie in human_mob_list)
var/mob/living/carbon/human/H = humie
for(var/mob/living/carbon/H as anything in human_mob_list)
if(H.z in holder.our_planet.expected_z_levels)
var/turf/T = get_turf(H)
if(!T.outdoors)
continue // They're indoors, so no need to pelt them with ice.
// If they have an open umbrella, it'll guard from hail
var/obj/item/weapon/melee/umbrella/U
if(istype(H.get_active_hand(), /obj/item/weapon/melee/umbrella))
U = H.get_active_hand()
else if(istype(H.get_inactive_hand(), /obj/item/weapon/melee/umbrella))
var/obj/item/weapon/melee/umbrella/U = H.get_active_hand()
if(!istype(U) || !U.open)
U = H.get_inactive_hand()
if(U && U.open)
if(istype(U) && U.open)
if(show_message)
to_chat(H, "<span class='notice'>Hail patters onto your umbrella.</span>")
continue
+29 -35
View File
@@ -156,15 +156,17 @@ var/datum/planet/virgo3b_better/planet_virgo3b_better = null
outdoor_sounds_type = /datum/looping_sound/weather/outside_snow
indoor_sounds_type = /datum/looping_sound/weather/inside_snow
/*
/datum/weather/virgo3b_better/snow/process_effects()
..()
for(var/turf/simulated/floor/outdoors/snow/S in SSplanets.new_outdoor_turfs) //This didn't make any sense before SSplanets, either
for(var/turf/simulated/floor/outdoors/snow/S as anything in SSplanets.new_outdoor_turfs) //This didn't make any sense before SSplanets, either
if(S.z in holder.our_planet.expected_z_levels)
for(var/dir_checked in cardinal)
var/turf/simulated/floor/T = get_step(S, dir_checked)
if(istype(T))
if(istype(T, /turf/simulated/floor/outdoors) && prob(33))
T.chill()
*/
/datum/weather/virgo3b_better/blizzard
name = "blizzard"
@@ -189,15 +191,17 @@ var/datum/planet/virgo3b_better/planet_virgo3b_better = null
outdoor_sounds_type = /datum/looping_sound/weather/outside_blizzard
indoor_sounds_type = /datum/looping_sound/weather/inside_blizzard
/*
/datum/weather/virgo3b_better/blizzard/process_effects()
..()
for(var/turf/simulated/floor/outdoors/snow/S in SSplanets.new_outdoor_turfs) //This didn't make any sense before SSplanets, either
for(var/turf/simulated/floor/outdoors/snow/S as anything in SSplanets.new_outdoor_turfs) //This didn't make any sense before SSplanets, either
if(S.z in holder.our_planet.expected_z_levels)
for(var/dir_checked in cardinal)
var/turf/simulated/floor/T = get_step(S, dir_checked)
if(istype(T))
if(istype(T, /turf/simulated/floor/outdoors) && prob(50))
T.chill()
*/
/datum/weather/virgo3b_better/rain
name = "rain"
@@ -220,25 +224,21 @@ var/datum/planet/virgo3b_better/planet_virgo3b_better = null
/datum/weather/virgo3b_better/rain/process_effects()
..()
for(var/mob/living/L in living_mob_list)
for(var/mob/living/L as anything in living_mob_list)
if(L.z in holder.our_planet.expected_z_levels)
var/turf/T = get_turf(L)
if(!T.outdoors)
continue // They're indoors, so no need to rain on them.
// If they have an open umbrella, it'll guard from rain
if(istype(L.get_active_hand(), /obj/item/weapon/melee/umbrella))
var/obj/item/weapon/melee/umbrella/U = L.get_active_hand()
if(U.open)
if(show_message)
to_chat(L, "<span class='notice'>Rain patters softly onto your umbrella.</span>")
continue
else if(istype(L.get_inactive_hand(), /obj/item/weapon/melee/umbrella))
var/obj/item/weapon/melee/umbrella/U = L.get_inactive_hand()
if(U.open)
if(show_message)
to_chat(L, "<span class='notice'>Rain patters softly onto your umbrella.</span>")
continue
var/obj/item/weapon/melee/umbrella/U = L.get_active_hand()
if(!istype(U) || !U.open)
U = L.get_inactive_hand()
if(istype(U) && U.open)
if(show_message)
to_chat(L, "<span class='notice'>Rain patters softly onto your umbrella.</span>")
continue
L.water_act(1)
if(show_message)
@@ -275,25 +275,21 @@ var/datum/planet/virgo3b_better/planet_virgo3b_better = null
/datum/weather/virgo3b_better/storm/process_effects()
..()
for(var/mob/living/L in living_mob_list)
for(var/mob/living/L as anything in living_mob_list)
if(L.z in holder.our_planet.expected_z_levels)
var/turf/T = get_turf(L)
if(!T.outdoors)
continue // They're indoors, so no need to rain on them.
// If they have an open umbrella, it'll guard from rain
if(istype(L.get_active_hand(), /obj/item/weapon/melee/umbrella))
var/obj/item/weapon/melee/umbrella/U = L.get_active_hand()
if(U.open)
if(show_message)
to_chat(L, "<span class='notice'>Rain showers loudly onto your umbrella!</span>")
continue
else if(istype(L.get_inactive_hand(), /obj/item/weapon/melee/umbrella))
var/obj/item/weapon/melee/umbrella/U = L.get_inactive_hand()
if(U.open)
if(show_message)
to_chat(L, "<span class='notice'>Rain showers loudly onto your umbrella!</span>")
continue
var/obj/item/weapon/melee/umbrella/U = L.get_active_hand()
if(!istype(U) || !U.open)
U = L.get_inactive_hand()
if(istype(U) && U.open)
if(show_message)
to_chat(L, "<span class='notice'>Rain showers loudly onto your umbrella!</span>")
continue
L.water_act(2)
@@ -335,20 +331,18 @@ var/datum/planet/virgo3b_better/planet_virgo3b_better = null
/datum/weather/virgo3b_better/hail/process_effects()
..()
for(var/humie in human_mob_list)
var/mob/living/carbon/human/H = humie
for(var/mob/living/carbon/H as anything in human_mob_list)
if(H.z in holder.our_planet.expected_z_levels)
var/turf/T = get_turf(H)
if(!T.outdoors)
continue // They're indoors, so no need to pelt them with ice.
// If they have an open umbrella, it'll guard from hail
var/obj/item/weapon/melee/umbrella/U
if(istype(H.get_active_hand(), /obj/item/weapon/melee/umbrella))
U = H.get_active_hand()
else if(istype(H.get_inactive_hand(), /obj/item/weapon/melee/umbrella))
var/obj/item/weapon/melee/umbrella/U = H.get_active_hand()
if(!istype(U) || !U.open)
U = H.get_inactive_hand()
if(U && U.open)
if(istype(U) && U.open)
if(show_message)
to_chat(H, "<span class='notice'>Hail patters onto your umbrella.</span>")
continue
+29 -35
View File
@@ -203,15 +203,17 @@ var/datum/planet/virgo3b/planet_virgo3b = null
outdoor_sounds_type = /datum/looping_sound/weather/outside_snow
indoor_sounds_type = /datum/looping_sound/weather/inside_snow
/*
/datum/weather/virgo3b/snow/process_effects()
..()
for(var/turf/simulated/floor/outdoors/snow/S in SSplanets.new_outdoor_turfs) //This didn't make any sense before SSplanets, either
for(var/turf/simulated/floor/outdoors/snow/S as anything in SSplanets.new_outdoor_turfs) //This didn't make any sense before SSplanets, either
if(S.z in holder.our_planet.expected_z_levels)
for(var/dir_checked in cardinal)
var/turf/simulated/floor/T = get_step(S, dir_checked)
if(istype(T))
if(istype(T, /turf/simulated/floor/outdoors) && prob(33))
T.chill()
*/
/datum/weather/virgo3b/blizzard
name = "blizzard"
@@ -236,15 +238,17 @@ var/datum/planet/virgo3b/planet_virgo3b = null
outdoor_sounds_type = /datum/looping_sound/weather/outside_blizzard
indoor_sounds_type = /datum/looping_sound/weather/inside_blizzard
/*
/datum/weather/virgo3b/blizzard/process_effects()
..()
for(var/turf/simulated/floor/outdoors/snow/S in SSplanets.new_outdoor_turfs) //This didn't make any sense before SSplanets, either
for(var/turf/simulated/floor/outdoors/snow/S as anything in SSplanets.new_outdoor_turfs) //This didn't make any sense before SSplanets, either
if(S.z in holder.our_planet.expected_z_levels)
for(var/dir_checked in cardinal)
var/turf/simulated/floor/T = get_step(S, dir_checked)
if(istype(T))
if(istype(T, /turf/simulated/floor/outdoors) && prob(50))
T.chill()
*/
/datum/weather/virgo3b/rain
name = "rain"
@@ -270,25 +274,21 @@ var/datum/planet/virgo3b/planet_virgo3b = null
/datum/weather/virgo3b/rain/process_effects()
..()
for(var/mob/living/L in living_mob_list)
for(var/mob/living/L as anything in living_mob_list)
if(L.z in holder.our_planet.expected_z_levels)
var/turf/T = get_turf(L)
if(!T.outdoors)
continue // They're indoors, so no need to rain on them.
// If they have an open umbrella, it'll guard from rain
if(istype(L.get_active_hand(), /obj/item/weapon/melee/umbrella))
var/obj/item/weapon/melee/umbrella/U = L.get_active_hand()
if(U.open)
if(show_message)
to_chat(L, "<span class='notice'>Rain patters softly onto your umbrella.</span>")
continue
else if(istype(L.get_inactive_hand(), /obj/item/weapon/melee/umbrella))
var/obj/item/weapon/melee/umbrella/U = L.get_inactive_hand()
if(U.open)
if(show_message)
to_chat(L, "<span class='notice'>Rain patters softly onto your umbrella.</span>")
continue
var/obj/item/weapon/melee/umbrella/U = L.get_active_hand()
if(!istype(U) || !U.open)
U = L.get_inactive_hand()
if(istype(U) && U.open)
if(show_message)
to_chat(L, "<span class='notice'>Rain patters softly onto your umbrella.</span>")
continue
L.water_act(1)
if(show_message)
@@ -325,25 +325,21 @@ var/datum/planet/virgo3b/planet_virgo3b = null
/datum/weather/virgo3b/storm/process_effects()
..()
for(var/mob/living/L in living_mob_list)
for(var/mob/living/L as anything in living_mob_list)
if(L.z in holder.our_planet.expected_z_levels)
var/turf/T = get_turf(L)
if(!T.outdoors)
continue // They're indoors, so no need to rain on them.
// If they have an open umbrella, it'll guard from rain
if(istype(L.get_active_hand(), /obj/item/weapon/melee/umbrella))
var/obj/item/weapon/melee/umbrella/U = L.get_active_hand()
if(U.open)
if(show_message)
to_chat(L, "<span class='notice'>Rain showers loudly onto your umbrella!</span>")
continue
else if(istype(L.get_inactive_hand(), /obj/item/weapon/melee/umbrella))
var/obj/item/weapon/melee/umbrella/U = L.get_inactive_hand()
if(U.open)
if(show_message)
to_chat(L, "<span class='notice'>Rain showers loudly onto your umbrella!</span>")
continue
var/obj/item/weapon/melee/umbrella/U = L.get_active_hand()
if(!istype(U) || !U.open)
U = L.get_inactive_hand()
if(istype(U) && U.open)
if(show_message)
to_chat(L, "<span class='notice'>Rain patters softly onto your umbrella.</span>")
continue
L.water_act(2)
@@ -385,20 +381,18 @@ var/datum/planet/virgo3b/planet_virgo3b = null
/datum/weather/virgo3b/hail/process_effects()
..()
for(var/humie in human_mob_list)
var/mob/living/carbon/human/H = humie
for(var/mob/living/carbon/H as anything in human_mob_list)
if(H.z in holder.our_planet.expected_z_levels)
var/turf/T = get_turf(H)
if(!T.outdoors)
continue // They're indoors, so no need to pelt them with ice.
// If they have an open umbrella, it'll guard from hail
var/obj/item/weapon/melee/umbrella/U
if(istype(H.get_active_hand(), /obj/item/weapon/melee/umbrella))
U = H.get_active_hand()
else if(istype(H.get_inactive_hand(), /obj/item/weapon/melee/umbrella))
var/obj/item/weapon/melee/umbrella/U = H.get_active_hand()
if(!istype(U) || !U.open)
U = H.get_inactive_hand()
if(U && U.open)
if(istype(U) && U.open)
if(show_message)
to_chat(H, "<span class='notice'>Hail patters onto your umbrella.</span>")
continue
+41 -47
View File
@@ -32,35 +32,35 @@ var/datum/planet/virgo4/planet_virgo4 = null
var/min = 0
switch(sun_position)
if(0 to 0.30) // Night
low_brightness = 0.1
if(0 to 0.20) // Night
low_brightness = 0.3
low_color = "#000066"
high_brightness = 0.2
high_brightness = 0.5
high_color = "#66004D"
min = 0
if(0.30 to 0.40) // Twilight
low_brightness = 0.4
if(0.20 to 0.30) // Twilight
low_brightness = 0.5
low_color = "#66004D"
high_brightness = 0.6
high_brightness = 0.9
high_color = "#CC3300"
min = 0.40
if(0.40 to 0.50) // Sunrise/set
low_brightness = 0.7
if(0.30 to 0.40) // Sunrise/set
low_brightness = 0.9
low_color = "#CC3300"
high_brightness = 0.9
high_brightness = 3.0
high_color = "#FF9933"
min = 0.50
if(0.50 to 1.00) // Noon
low_brightness = 1
if(0.40 to 1.00) // Noon
low_brightness = 3.0
low_color = "#DDDDDD"
high_brightness = 2
high_brightness = 10.0
high_color = "#FFFFFF"
min = 0.70
@@ -187,15 +187,17 @@ var/datum/planet/virgo4/planet_virgo4 = null
outdoor_sounds_type = /datum/looping_sound/weather/outside_snow
indoor_sounds_type = /datum/looping_sound/weather/inside_snow
/*
/datum/weather/virgo4/snow/process_effects()
..()
for(var/turf/simulated/floor/outdoors/snow/S in SSplanets.new_outdoor_turfs) //This didn't make any sense before SSplanets, either
for(var/turf/simulated/floor/outdoors/snow/S as anything in SSplanets.new_outdoor_turfs) //This didn't make any sense before SSplanets, either
if(S.z in holder.our_planet.expected_z_levels)
for(var/dir_checked in cardinal)
var/turf/simulated/floor/T = get_step(S, dir_checked)
if(istype(T))
if(istype(T, /turf/simulated/floor/outdoors) && prob(33))
T.chill()
*/
/datum/weather/virgo4/blizzard
name = "blizzard"
@@ -217,15 +219,17 @@ var/datum/planet/virgo4/planet_virgo4 = null
outdoor_sounds_type = /datum/looping_sound/weather/outside_blizzard
indoor_sounds_type = /datum/looping_sound/weather/inside_blizzard
/*
/datum/weather/virgo4/blizzard/process_effects()
..()
for(var/turf/simulated/floor/outdoors/snow/S in SSplanets.new_outdoor_turfs) //This didn't make any sense before SSplanets, either
for(var/turf/simulated/floor/outdoors/snow/S as anything in SSplanets.new_outdoor_turfs) //This didn't make any sense before SSplanets, either
if(S.z in holder.our_planet.expected_z_levels)
for(var/dir_checked in cardinal)
var/turf/simulated/floor/T = get_step(S, dir_checked)
if(istype(T))
if(istype(T, /turf/simulated/floor/outdoors) && prob(50))
T.chill()
*/
/datum/weather/virgo4/rain
name = "rain"
@@ -248,25 +252,21 @@ var/datum/planet/virgo4/planet_virgo4 = null
/datum/weather/virgo4/rain/process_effects()
..()
for(var/mob/living/L in living_mob_list)
for(var/mob/living/L as anything in living_mob_list)
if(L.z in holder.our_planet.expected_z_levels)
var/turf/T = get_turf(L)
if(!T.outdoors)
continue // They're indoors, so no need to rain on them.
// If they have an open umbrella, it'll guard from rain
if(istype(L.get_active_hand(), /obj/item/weapon/melee/umbrella))
var/obj/item/weapon/melee/umbrella/U = L.get_active_hand()
if(U.open)
if(show_message)
to_chat(L, "<span class='notice'>Rain patters softly onto your umbrella.</span>")
continue
else if(istype(L.get_inactive_hand(), /obj/item/weapon/melee/umbrella))
var/obj/item/weapon/melee/umbrella/U = L.get_inactive_hand()
if(U.open)
if(show_message)
to_chat(L, "<span class='notice'>Rain patters softly onto your umbrella.</span>")
continue
var/obj/item/weapon/melee/umbrella/U = L.get_active_hand()
if(!istype(U) || !U.open)
U = L.get_inactive_hand()
if(istype(U) && U.open)
if(show_message)
to_chat(L, "<span class='notice'>Rain patters softly onto your umbrella.</span>")
continue
L.water_act(1)
if(show_message)
@@ -298,25 +298,21 @@ var/datum/planet/virgo4/planet_virgo4 = null
/datum/weather/virgo4/storm/process_effects()
..()
for(var/mob/living/L in living_mob_list)
for(var/mob/living/L as anything in living_mob_list)
if(L.z in holder.our_planet.expected_z_levels)
var/turf/T = get_turf(L)
if(!T.outdoors)
continue // They're indoors, so no need to rain on them.
// If they have an open umbrella, it'll guard from rain
if(istype(L.get_active_hand(), /obj/item/weapon/melee/umbrella))
var/obj/item/weapon/melee/umbrella/U = L.get_active_hand()
if(U.open)
if(show_message)
to_chat(L, "<span class='notice'>Rain showers loudly onto your umbrella!</span>")
continue
else if(istype(L.get_inactive_hand(), /obj/item/weapon/melee/umbrella))
var/obj/item/weapon/melee/umbrella/U = L.get_inactive_hand()
if(U.open)
if(show_message)
to_chat(L, "<span class='notice'>Rain showers loudly onto your umbrella!</span>")
continue
var/obj/item/weapon/melee/umbrella/U = L.get_active_hand()
if(!istype(U) || !U.open)
U = L.get_inactive_hand()
if(istype(U) && U.open)
if(show_message)
to_chat(L, "<span class='notice'>Rain showers loudly onto your umbrella!</span>")
continue
L.water_act(2)
@@ -355,20 +351,18 @@ var/datum/planet/virgo4/planet_virgo4 = null
/datum/weather/virgo4/hail/process_effects()
..()
for(var/humie in human_mob_list)
var/mob/living/carbon/human/H = humie
for(var/mob/living/carbon/H as anything in human_mob_list)
if(H.z in holder.our_planet.expected_z_levels)
var/turf/T = get_turf(H)
if(!T.outdoors)
continue // They're indoors, so no need to pelt them with ice.
// If they have an open umbrella, it'll guard from hail
var/obj/item/weapon/melee/umbrella/U
if(istype(H.get_active_hand(), /obj/item/weapon/melee/umbrella))
U = H.get_active_hand()
else if(istype(H.get_inactive_hand(), /obj/item/weapon/melee/umbrella))
var/obj/item/weapon/melee/umbrella/U = H.get_active_hand()
if(!istype(U) || !U.open)
U = H.get_inactive_hand()
if(U && U.open)
if(istype(U) && U.open)
if(show_message)
to_chat(H, "<span class='notice'>Hail patters onto your umbrella.</span>")
continue
-1
View File
@@ -95,7 +95,6 @@
playsound(src, 'sound/effects/lightningshock.ogg', 100, 1, extrarange = 5)
tesla_zap(src, 10, power/(coeff/2))
//TFF 3/6/19 - Port Cit RP fix for infinite frames
/obj/machinery/power/grounding_rod
name = "grounding rod"
desc = "Keep an area from being fried from Edison's Bane."
@@ -1483,7 +1483,7 @@
/datum/reagent/qerr_quem
name = "Qerr-quem"
id = "querr_quem"
id = "qerr_quem"
description = "A potent stimulant and anti-anxiety medication, made for the Qerr-Katish."
taste_description = "mint"
reagent_state = LIQUID
@@ -13,8 +13,7 @@
mrate_static = TRUE
/datum/reagent/macrocillin/affect_blood(var/mob/living/carbon/M, var/alien, var/removed)
if(M.size_range_check(M.size_multiplier))
M.resize(M.size_multiplier+0.01, FALSE)//Incrrease 1% per tick. //CHOMP Edit: don't do fancy animates. Unnecessary on 1% changes. Laggy.
M.resize(M.size_multiplier+0.01, animate = FALSE, uncapped = M.has_large_resize_bounds()) //Incrrease 1% per tick. //CHOMP Edit: don't do fancy animates. Unnecessary on 1% changes. Laggy.
return
/datum/reagent/microcillin
@@ -27,8 +26,7 @@
mrate_static = TRUE
/datum/reagent/microcillin/affect_blood(var/mob/living/carbon/M, var/alien, var/removed)
if(M.size_range_check(M.size_multiplier))
M.resize(M.size_multiplier-0.01, FALSE) //Decrease 1% per tick. //CHOMP Edit: don't do fancy animates. Unnecessary on 1% changes. Laggy.
M.resize(M.size_multiplier-0.01, animate = FALSE, uncapped = M.has_large_resize_bounds()) //Decrease 1% per tick. //CHOMP Edit: don't do fancy animates. Unnecessary on 1% changes. Laggy.
return
@@ -6,7 +6,6 @@
item_state = "cleaner"
center_of_mass = list("x" = 16,"y" = 10)
flags = OPENCONTAINER|NOBLUDGEON
//TFF 24/12/19 - Let people print more spray bottles if needed.
matter = list("glass" = 300, DEFAULT_WALL_MATERIAL = 300)
slot_flags = SLOT_BELT
throwforce = 3
@@ -1,5 +1,3 @@
// TFF 6/10/20 - Just a little thing to prevent the button
// and console from being destroyed by explosions.
/obj/structure/lift/button/ex_act()
return
+3 -3
View File
@@ -23,7 +23,7 @@
var/car_limit = 0 //how many cars an engine can pull before performance degrades. This should be 0 to prevent trailers from unhitching.
active_engines = 1
var/obj/item/weapon/key/key //TFF 19/1/20 - Bugfix for key being prevented from getting used again
var/obj/item/weapon/key/key
var/key_type = /obj/item/weapon/key/security
var/siren = 0 //This is for eventually getting the siren sprite to work.
@@ -62,7 +62,7 @@
/obj/vehicle/train/security/engine/New()
..()
cell = new /obj/item/weapon/cell/high(src)
key = new key_type(src) //TFF 19/1/20 - Bugfix for key being prevented from getting used again
key = new key_type(src)
var/image/I = new(icon = 'icons/obj/vehicles.dmi', icon_state = "cargo_engine_overlay", layer = src.layer + 0.2) //over mobs
overlays += I
turn_off() //so engine verbs are correctly set
@@ -91,7 +91,7 @@
..()
/obj/vehicle/train/security/engine/attackby(obj/item/weapon/W as obj, mob/user as mob)
if(istype(W, key_type)) //TFF 19/1/20 - Bugfix for key being prevented from getting used again
if(istype(W, key_type))
if(!key)
user.drop_item()
W.forceMove(src)
-1
View File
@@ -707,7 +707,6 @@
to_chat(src, "<span class='notice'>You can taste the flavor of garbage and leftovers. Delicious?</span>")
else
to_chat(src, "<span class='notice'>You can taste the flavor of gluttonous waste of food.</span>")
//TFF 10/7/19 - Add custom flavour for collars for trash can trait.
else if (istype(I,/obj/item/clothing/accessory/collar))
visible_message("<span class='warning'>[src] demonstrates their voracious capabilities by swallowing [I] whole!</span>")
to_chat(src, "<span class='notice'>You can taste the submissiveness in the wearer of [I]!</span>")
+5
View File
@@ -45,6 +45,7 @@ V::::::V V::::::VO:::::::OOO:::::::ORR:::::R R:::::REE::::::EEEEEE
//Actual preferences
var/digestable = TRUE
var/devourable = TRUE
var/resizable = TRUE
var/feeding = TRUE
var/absorbable = TRUE //TFF 14/12/19 - choose whether allowing absorbing
var/digest_leave_remains = FALSE
@@ -129,6 +130,7 @@ V::::::V V::::::VO:::::::OOO:::::::ORR:::::R R:::::REE::::::EEEEEE
digestable = json_from_file["digestable"]
devourable = json_from_file["devourable"]
resizable = json_from_file["resizable"]
feeding = json_from_file["feeding"]
absorbable = json_from_file["absorbable"] //TFF 14/12/19 - choose whether allowing absorbing
digest_leave_remains = json_from_file["digest_leave_remains"]
@@ -155,6 +157,8 @@ V::::::V V::::::VO:::::::OOO:::::::ORR:::::R R:::::REE::::::EEEEEE
digestable = TRUE
if(isnull(devourable))
devourable = TRUE
if(isnull(resizable))
resizable = TRUE
if(isnull(feeding))
feeding = TRUE
if(isnull(absorbable))
@@ -197,6 +201,7 @@ V::::::V V::::::VO:::::::OOO:::::::ORR:::::R R:::::REE::::::EEEEEE
"version" = version,
"digestable" = digestable,
"devourable" = devourable,
"resizable" = resizable,
"absorbable" = absorbable,
"feeding" = feeding,
"digest_leave_remains" = digest_leave_remains,
+7
View File
@@ -254,6 +254,7 @@
data["prefs"] = list(
"digestable" = host.digestable,
"devourable" = host.devourable,
"resizable" = host.resizable,
"feeding" = host.feeding,
"absorbable" = host.absorbable,
"digest_leave_remains" = host.digest_leave_remains,
@@ -415,6 +416,12 @@
host.client.prefs_vr.devourable = host.devourable
unsaved_changes = TRUE
return TRUE
if("toggle_resize")
host.resizable = !host.resizable
if(host.client.prefs_vr)
host.client.prefs_vr.resizable = host.resizable
unsaved_changes = TRUE
return TRUE
if("toggle_feed")
host.feeding = !host.feeding
if(host.client.prefs_vr)
@@ -340,7 +340,7 @@
name = "Mouse Plushie"
desc = "A plushie of a delightful mouse! What was once considered a vile rodent is now your very best friend."
slot_flags = SLOT_HEAD
icon_state = "mouse_brown" //TFF 12/11/19 - Change sprite to not look dead. Heck you for that choice! >:C
icon_state = "mouse_brown"
item_state = "mouse_brown_head"
icon = 'icons/vore/custom_items_vr.dmi'
icon_override = 'icons/vore/custom_items_vr.dmi'
+8 -99
View File
@@ -46,51 +46,12 @@
/mob/living/get_effective_size()
return size_multiplier
/**
* Resizes the mob immediately to the desired mod, animating it growing/shrinking.
* It can be used by anything that calls it.
*/
/atom/movable/proc/size_range_check(size_select) //both objects and mobs needs to have that
var/area/A = get_area(src) //Get the atom's area to check for size limit.
if((A.limit_mob_size && (size_select > 200 || size_select < 25)) || (size_select > 600 || size_select <1))
return FALSE
return TRUE
<<<<<<< HEAD
/proc/add_to_uncapped_list(var/mob/living/L)
if(L.size_uncapped)
return
if(!GLOB.size_uncapped_mobs.len)
GLOB.size_uncapped_mobs_timer = addtimer(CALLBACK(GLOBAL_PROC, .check_uncapped_list), 2 SECONDS, TIMER_LOOP | TIMER_UNIQUE | TIMER_STOPPABLE)
GLOB.size_uncapped_mobs |= weakref(L)
/proc/remove_from_uncapped_list(var/mob/living/L)
if(!GLOB.size_uncapped_mobs.len)
return
GLOB.size_uncapped_mobs -= weakref(L)
if(!GLOB.size_uncapped_mobs.len)
deltimer(GLOB.size_uncapped_mobs_timer)
GLOB.size_uncapped_mobs_timer = null
/proc/check_uncapped_list()
for(var/weakref/wr in GLOB.size_uncapped_mobs)
var/mob/living/L = wr.resolve()
var/area/A = get_area(L)
if(!istype(L))
GLOB.size_uncapped_mobs -= wr
continue
if((A.limit_mob_size && !L.size_uncapped) && (L.size_multiplier <= RESIZE_TINY || L.size_multiplier >= RESIZE_HUGE))
L.resize(L.size_multiplier)
GLOB.size_uncapped_mobs -= wr
if(!GLOB.size_uncapped_mobs.len)
deltimer(GLOB.size_uncapped_mobs_timer)
GLOB.size_uncapped_mobs_timer = null
||||||| parent of 4c52a2cdd4... Merge pull request #10095 from ShadowLarkens/better_resize_guard
/atom/movable/proc/has_large_resize_bounds()
var/area/A = get_area(src) //Get the atom's area to check for size limit.
return !A.limit_mob_size
@@ -98,66 +59,15 @@
/proc/is_extreme_size(size)
return (size < RESIZE_MINIMUM || size > RESIZE_MAXIMUM)
/proc/add_to_uncapped_list(var/mob/living/L)
if(L.size_uncapped)
return
if(!GLOB.size_uncapped_mobs.len)
//Could be a subsystem but arguably a giant waste of time to make into a subsystem. A subsystem that is paused on and off all the time? Eh.
//If you're that worried, make metrics for how often this even runs and then decide.
GLOB.size_uncapped_mobs_timer = addtimer(CALLBACK(GLOBAL_PROC, .check_uncapped_list), 2 SECONDS, TIMER_LOOP | TIMER_UNIQUE | TIMER_STOPPABLE)
GLOB.size_uncapped_mobs |= weakref(L)
/proc/remove_from_uncapped_list(var/mob/living/L)
if(!GLOB.size_uncapped_mobs.len)
return
/**
* Resizes the mob immediately to the desired mod, animating it growing/shrinking.
* It can be used by anything that calls it.
*/
GLOB.size_uncapped_mobs -= weakref(L)
if(!GLOB.size_uncapped_mobs.len)
deltimer(GLOB.size_uncapped_mobs_timer)
GLOB.size_uncapped_mobs_timer = null
/proc/check_uncapped_list()
for(var/weakref/wr in GLOB.size_uncapped_mobs)
var/mob/living/L = wr.resolve()
if(!istype(L) || L.size_uncapped)
GLOB.size_uncapped_mobs -= wr
continue
// If we get here, you're a mob, and you don't have admin exclusion (size_uncapped) to being big, and you're very likely big.
// If you're not abnormally big, the below will do nothing, so it's fine to run anyway.
if(!L.has_large_resize_bounds())
L.resize(L.size_multiplier, ignore_prefs = TRUE) //Calling this will have resize() clamp it
GLOB.size_uncapped_mobs -= wr
if(!GLOB.size_uncapped_mobs.len)
deltimer(GLOB.size_uncapped_mobs_timer)
GLOB.size_uncapped_mobs_timer = null
=======
/atom/movable/proc/has_large_resize_bounds()
var/area/A = get_area(src) //Get the atom's area to check for size limit.
return !A.limit_mob_size
/proc/is_extreme_size(size)
return (size < RESIZE_MINIMUM || size > RESIZE_MAXIMUM)
>>>>>>> 4c52a2cdd4... Merge pull request #10095 from ShadowLarkens/better_resize_guard
/mob/living/proc/resize(var/new_size, var/animate = TRUE, var/uncapped = FALSE)
/mob/living/proc/resize(var/new_size, var/animate = TRUE, var/uncapped = FALSE, var/ignore_prefs = FALSE)
if(!uncapped)
<<<<<<< HEAD
new_size = clamp(new_size, RESIZE_TINY, RESIZE_HUGE)
src.size_uncapped = FALSE
remove_from_uncapped_list(src)
else
add_to_uncapped_list(src)
||||||| parent of 4c52a2cdd4... Merge pull request #10095 from ShadowLarkens/better_resize_guard
new_size = clamp(new_size, RESIZE_MINIMUM, RESIZE_MAXIMUM)
remove_from_uncapped_list(src)
else if(is_extreme_size(new_size))
add_to_uncapped_list(src)
=======
new_size = clamp(new_size, RESIZE_MINIMUM, RESIZE_MAXIMUM)
var/datum/component/resize_guard/guard = GetComponent(/datum/component/resize_guard)
if(guard)
@@ -170,7 +80,6 @@
if(guard)
qdel(guard)
>>>>>>> 4c52a2cdd4... Merge pull request #10095 from ShadowLarkens/better_resize_guard
if(size_multiplier == new_size)
return 1
@@ -201,8 +110,8 @@
else
update_transform() //Lame way
/mob/living/carbon/human/resize(var/new_size, var/animate = TRUE)
if(!resizable)
/mob/living/carbon/human/resize(var/new_size, var/animate = TRUE, var/uncapped = FALSE, var/ignore_prefs = FALSE)
if(!resizable && !ignore_prefs)
return 1
if(species)
vis_height = species.icon_height
@@ -215,7 +124,7 @@
apply_hud(index, HI)
// Optimize mannequins - never a point to animating or doing HUDs on these.
/mob/living/carbon/human/dummy/mannequin/resize(var/new_size, var/animate = TRUE)
/mob/living/carbon/human/dummy/mannequin/resize(var/new_size, var/animate = TRUE, var/uncapped = FALSE, var/ignore_prefs = FALSE)
size_multiplier = new_size
/**
+16 -31
View File
@@ -44,12 +44,15 @@
set category = "Object"
set src in view(1)
var/size_select = input("Put the desired size (25-200%), (1-600%) in dormitory areas.", "Set Size", size_set_to * 100) as num
if(!size_range_check(size_select))
to_chat(usr, "<span class='notice'>Invalid size.</span>")
return
size_set_to = (size_select/100)
var/size_select = input("Put the desired size (25-200%), (1-600%) in dormitory areas.", "Set Size", size_set_to * 100) as num|null
if(!size_select)
return //cancelled
//We do valid resize testing in actual firings because people move after setting these things.
//Just a basic clamp here to the valid ranges.
size_set_to = clamp((size_select/100), RESIZE_MINIMUM_DORMS, RESIZE_MAXIMUM_DORMS)
to_chat(usr, "<span class='notice'>You set the size to [size_select]%</span>")
if(size_set_to < RESIZE_MINIMUM || size_set_to > RESIZE_MAXIMUM)
to_chat(usr, "<span class='notice'>Note: Resizing limited to 25-200% automatically while outside dormatory areas.</span>") //hint that we clamp it in resize
/obj/item/weapon/gun/energy/sizegun/examine(mob/user)
. = ..()
@@ -66,8 +69,10 @@
set category = "Object"
set src in view(1)
var/size_select = input("Put the desired size", "Set Size", size_set_to * 100) as num
size_set_to = max(1,size_select/100) //No negative numbers
var/size_select = input("Put the desired size (1-600%)", "Set Size", size_set_to * 100) as num|null
if(!size_select)
return //cancelled
size_set_to = clamp((size_select/100), 0, 1000) //eheh
to_chat(usr, "<span class='notice'>You set the size to [size_select]%</span>")
//
@@ -88,8 +93,10 @@
/obj/item/projectile/beam/sizelaser/on_hit(var/atom/target)
var/mob/living/M = target
var/ignoring_prefs = (target == firer ? TRUE : FALSE) // Resizing yourself
if(istype(M))
if(!M.resize(set_size))
if(!M.resize(set_size, uncapped = M.has_large_resize_bounds(), ignore_prefs = ignoring_prefs))
to_chat(M, "<font color='blue'>The beam fires into your body, changing your size!</font>")
M.updateicon()
return
@@ -97,29 +104,8 @@
/obj/item/projectile/beam/sizelaser/admin/on_hit(var/atom/target)
var/mob/living/M = target
if(istype(M))
<<<<<<< HEAD
M.resize(set_size, TRUE, TRUE)
if(set_size >= RESIZE_TINY && set_size <= RESIZE_HUGE)
M.size_uncapped = FALSE
M.size_uncapped = TRUE
||||||| parent of 4c52a2cdd4... Merge pull request #10095 from ShadowLarkens/better_resize_guard
var/can_be_big = M.has_large_resize_bounds()
var/very_big = is_extreme_size(set_size)
if(very_big && can_be_big) // made an extreme size in an area that allows it, don't assume adminbuse
to_chat(firer, "<span class='warning'>[M] will lose this size upon moving into an area where this size is not allowed.</span>")
else if(very_big) // made an extreme size in an area that doesn't allow it, assume adminbuse
to_chat(firer, "<span class='warning'>[M] will retain this normally unallowed size outside this area.</span>")
M.size_uncapped = TRUE
else if(M.size_uncapped) // made a normal size after having been an extreme adminbuse size
to_chat(firer, "<span class='warning'>[M] now returned to normal area-based size limitations.</span>")
M.size_uncapped = FALSE
M.resize(set_size, uncapped = TRUE, ignoring_prefs = TRUE) // Always ignores prefs, caution is advisable
=======
var/can_be_big = M.has_large_resize_bounds()
var/very_big = is_extreme_size(set_size)
@@ -131,7 +117,6 @@
M.resize(set_size, uncapped = TRUE, ignore_prefs = TRUE) // Always ignores prefs, caution is advisable
>>>>>>> 4c52a2cdd4... Merge pull request #10095 from ShadowLarkens/better_resize_guard
to_chat(M, "<font color='blue'>The beam fires into your body, changing your size!</font>")
M.updateicon()
return
+1 -1
View File
@@ -21,7 +21,7 @@
icon_state = "strange"
var/datum/geosample/geologic_data
origin_tech = list(TECH_MATERIAL = 5)
w_class = ITEMSIZE_SMALL //TFF 25/11/19 - fixes the strange rocks to be small size like before and not normal.
w_class = ITEMSIZE_SMALL
/obj/item/weapon/strangerock/New(loc, var/inside_item_type = 0)
pixel_x = rand(0,16)-8
Binary file not shown.

Before

Width:  |  Height:  |  Size: 81 KiB

After

Width:  |  Height:  |  Size: 81 KiB

-2
View File
@@ -71,8 +71,6 @@
icon_state = "debrisexplored"
forced_ambience = list('sound/ambience/tension/tension.ogg', 'sound/ambience/tension/horror.ogg')
//TFF 26/12/19 - Sub-areas for the APCs.
/area/submap/debrisfield/derelict/ai_access_port
name = "POI - Abandoned Derelict AI Acess Port"
+56 -31
View File
@@ -2,30 +2,29 @@
initial_generic_waypoints = list("tether_excursion_listeningpost")
scanner_name = "Strange Asteroid"
scanner_desc = @{"[i]Registration[/i]: UNKNOWN
[i]Class[/i]: Installation
[i]Transponder[/i]: None Detected
[b]Notice[/b]: Emitting encrypted radio-frequency traffic"}
[i]Class[/i]: Wreckage
[i]Transponder[/i]: None Detected"}
/obj/item/weapon/paper/listneningpost/mission
/obj/item/weapon/paper/listeningpost/mission
name = "\improper Operation: Watchtower"
info = {"<b>Mission Details</b>: You have been assigned to a newly constructed listening post
constructed within an asteroid in Nanotrasen space to monitor their plasma mining operations.
constructed within an asteroid in Nanotrasen space to monitor their phoron mining operations.
Accurate intel is crucial to the success of our operatives onboard, do not fail us."}
/obj/item/weapon/paper/listneningpost/reciept
/obj/item/weapon/paper/listeningpost/reciept
name = "\improper SpacEx reciept"
info = {"1 x Stechtkin pistol plus ammo - $600<br>1 x silencer - $200<br>shipping charge - $4360<br>total - $5160"}
//////// 2558 ////////
/obj/item/weapon/paper/listneningpost/year2558/april
/obj/item/weapon/paper/listeningpost/year2558/april
name = "\improper April 2558 report"
info = {"A good start to the operation: intercepted Nanotrasen military communications.
A convoy is scheduled to transfer nuclear warheads to a new military base. This
is as good a chance as any to get our hands on some heavy weaponry, I suggest we take it."}
/obj/item/weapon/paper/listneningpost/year2558/may
/obj/item/weapon/paper/listeningpost/year2558/may
name = "\improper May 2558 report"
info = {"I have intercepted faint transmissions from what appears to be some sort of pirate
radio station. They do not appear to be relevant to my assignment. I also learned that
@@ -33,34 +32,34 @@
attack in March. Ever since Townes got killed, we've lost our eyes on the inside at
Nanotrasen. Hence my being here..."}
/obj/item/weapon/paper/listneningpost/year2558/june
/obj/item/weapon/paper/listeningpost/year2558/june
name = "\improper June 2558 Report"
info = {"Sounds like Nanotrasen stepped up their recruitment efforts. Virgo is no longer a
secluded research station, and its scientists are no longer hand-picked. This could
be a major oppertunity for us to start snooping around."}
/obj/item/weapon/paper/listneningpost/year2558/july
/obj/item/weapon/paper/listeningpost/year2558/july
name = "\improper July 2558 Report"
info = {"The crew has at least tripled in size since NT got rid of the application-based
process of recruitment. We've managed to find a few people interested in aiding
our cause. From atmospherics sabotoge to straight up bombing the place, we've got
several people ready to go in posing as nothing but more grey tide. It's perfect."}
/obj/item/weapon/paper/listneningpost/year2558/august
/obj/item/weapon/paper/listeningpost/year2558/august
name = "\improper August 2558 Report"
info = {"Sounds like our agents have been successful in rattling things up. With their recuitment
policies laxed, we've been able to carry out several attacks on the VORE. It sounds like
we're the least of their problems, though. They've discovered a new technology. Something
they're calling Redspace."}
/obj/item/weapon/paper/listneningpost/year2558/september
/obj/item/weapon/paper/listeningpost/year2558/september
name = "\improper September 2558 Report"
info = {"Something REALLY BAD is brewing at the VORE. This Redspace shit seems to have attracted
the attention of the cult of Nar-Sie. I think Nanotrasen is trying to weaponize it. We
need to put a stop to this before Nanotrasen can use these weapons against innocent
people and rival companies."}
/obj/item/weapon/paper/listneningpost/year2558/october
/obj/item/weapon/paper/listeningpost/year2558/october
name = "\improper October 2558 Report"
info = {"Oh my god, if it weren't for the impending doom, I'd be laughing my ass off at
all the hell VORE has put up with this month. Near mutiny over a retarded clown,
@@ -71,7 +70,7 @@
in an army from another dimension. We have no time left. We have to strike while
there's still something worth saving."}
/obj/item/weapon/paper/listneningpost/year2558/november
/obj/item/weapon/paper/listeningpost/year2558/november
name = "\improper November 2558 Report"
info = {"Maybe these VORE people aren't so bad after all. Mike says they actually HELPED during
our (apparently failed) attack on the Citadel. Shame they work for an evil corporation
@@ -80,7 +79,7 @@
crazy guy showed up on the station claiming he's from 1945. The crew seems to think it's
legit though. Maybe he is. I don't think he is though. I'll keep monitoring the situation."}
/obj/item/weapon/paper/listneningpost/year2558/december
/obj/item/weapon/paper/listeningpost/year2558/december
name = "\improper December 2558 Report"
info = {"We hired a merc to capture their top Redspace scientist Kisuke Gema. Unfortunately, Colonel
Morgan was a fucking idiot as usual and turned his back for half a second, and the nerd cut
@@ -92,7 +91,7 @@
//////// 2559 ////////
/obj/item/weapon/paper/listneningpost/year2559/january
/obj/item/weapon/paper/listeningpost/year2559/january
name = "\improper January 2559 Report"
info = {"So, this guy from 1945 is legit. His name is Chase Monroe and he's a former Seargent in
the USCM or something. Although I feel like the USCM didn't exist in 1945. Also a pirate
@@ -101,7 +100,7 @@
blow several bombs on the station, and even steal the nuke. VORE's security forces are
showing serious signs of weakness. Maybe we could exploit this."}
/obj/item/weapon/paper/listneningpost/year2559/february
/obj/item/weapon/paper/listeningpost/year2559/february
name = "\improper February 2559 Report"
info = {"Sounds like the World War 2 guy from Earth brought some unwanted friends along. Early
in the month, a battlecruiser showed up out of nowhere and started shooting up the station
@@ -110,7 +109,7 @@
the Soviets got a beef with these guys too. Sounds like they jacked one of the Soviet's ships.
Makes sense, because a battleship like that doesn't just appear out of nowhere."}
/obj/item/weapon/paper/listneningpost/year2559/march
/obj/item/weapon/paper/listeningpost/year2559/march
name = "\improper March 2559 Report"
info = {"Hard to believe it's already been a year. NT's private navy has been running exercises more
often than usual. They also replaced the Icarus with a new and more heavily armed cruiser called
@@ -121,7 +120,7 @@
say about Nanotrasen. The Truth will set us free. The truth about all the atrocities Nanotrasen
has done over the years."}
/obj/item/weapon/paper/listneningpost/year2559/april
/obj/item/weapon/paper/listeningpost/year2559/april
name = "\improper April 2559 Report"
info = {"We were approached today by a man calling himself the 'Werwolf', alleged to be part of that group
that attacked Nanotrasen in early February. We never understood his motives WHY he attacked them.
@@ -131,13 +130,13 @@
I think we're going to take the deal. When I get confirmation, I'll forward a line to Mike and Dave to
make the trade."}
/obj/item/weapon/paper/listneningpost/year2559/may
/obj/item/weapon/paper/listeningpost/year2559/may
name = "\improper May 2559 Report"
info = {"V.O.R.E. found something. An abandoned space station with a weapon called a mind flayer. There's also
rumor about some sort of a secret weapon NT was developing; a singularity bomb. Nothing of else of
real interest to report."}
/obj/item/weapon/paper/listneningpost/year2559/june
/obj/item/weapon/paper/listeningpost/year2559/june
name = "\improper June 2559 Report"
info = {"The WW2 guy is dead. Went out in a blaze of glory killing Space Axis. Mike and Dave are pissed.
They apparently broke protocol and went to help the V.O.R.E. crew in the attack, and they want to
@@ -146,7 +145,7 @@
NanoTrasen to deal with. Curiously, NanoTrasen refuses to officially support helping to remove this
threat. Possible collaberation?"}
/obj/item/weapon/paper/listneningpost/year2559/july
/obj/item/weapon/paper/listeningpost/year2559/july
name = "\improper July 2559 Report"
info = {"USDF ships have been spotted in the area. Admiral Glenn Pink is on board. This guy went MIA almost
ten years ago, and now he's back? Why? Apparently he's got some kind of connection with V.O.R.E.'s
@@ -154,7 +153,7 @@
plot. I don't know who this Admiral Pink is, but I guess Ace has at least a couple friends in high
places."}
/obj/item/weapon/paper/listneningpost/year2559/august
/obj/item/weapon/paper/listeningpost/year2559/august
name = "\improper August 2559 Report"
info = {"So, the reason Admiral Pink showed up in the last report was because these Space Axis hijacked
one of his vessels; the USDF Jormungandr or something. Well, the crazy bastards took it back.
@@ -166,27 +165,27 @@
arm was destroyed, and with it, all of his genetic information to get around his cloning disorder.
So he's finally out of our hair."}
/obj/item/weapon/paper/listneningpost/year2559/september
/obj/item/weapon/paper/listeningpost/year2559/september
name = "\improper September 2559 Report"
info = {"Of course it's not that simple. The nerd is back from the dead. Wonderful. I don't know how but
he's back, or they have a fake Kisuke Gema, or whatever bullshit. In other news, the station has
been slated for demolition. They're shipping a new Mark-3 Exodus-class station from Bay Shipyards
all the way from the NanoTrasen branch in Nyx. The demolition keeps getting delayed."}
/obj/item/weapon/paper/listneningpost/year2559/october
/obj/item/weapon/paper/listeningpost/year2559/october
name = "\improper October 2559 Report"
info = {"Station was demolished and operations were put on pause for a whole week. In other news, captain
Ace reportedly got a promotion to CentCom but something went wrong. The stronger loyalty implant
had a negative effect on him and almost killed him. He was quickly demoted back to Captain. This
could be useful information later. Recommend command investigate thoroughly."}
/obj/item/weapon/paper/listneningpost/year2559/november
/obj/item/weapon/paper/listeningpost/year2559/november
name = "\improper November 2559 Report"
info = {"A clown federation owned vessel called the Calypso was discovered in the Virgo system. It was a
ghost ship. Allegedly everyone on board perished due to a joke so funny that everyone laughed
themselves to madness, then death. NanoTrasen is trying to cover it up. No one knows why."}
/obj/item/weapon/paper/listneningpost/year2559/december
/obj/item/weapon/paper/listeningpost/year2559/december
name = "\improper December 2559 Report"
info = {"The V.O.R.E. discovered a new gateway location; a clown temple. We need to send someone to see
this. Reportedly it's full of tunnel clowns and these mutants called cluwnes. A clown researcher
@@ -199,25 +198,26 @@
and see if he wants a job. Ask our contacts on station. Surely one of them knows who's behind
the heist."}
/obj/item/weapon/paper/listneningpost/year2560/january
/obj/item/weapon/paper/listeningpost/year2560/january
name = "\improper January 2560 Report"
info = {"A group of Akula pirates tried to kidnap Kisuke Gema. They succeded, but their leader died of
his injuries soon after. The other pirates defected. I wonder why?"}
/obj/item/weapon/paper/listneningpost/year2560/february
/obj/item/weapon/paper/listeningpost/year2560/february
name = "\improper February 2560 Report"
info = {"There were a few incidents regarding a redspace anomaly in the chapel but the effects have long
since subsided. Nothing of major interest otherwise."}
/obj/item/weapon/paper/listneningpost/year2560/march
/obj/item/weapon/paper/listeningpost/year2560/march
name = "\improper March 2560 Report"
info = {"Very quiet month. Nothing of interest to report. Perhaps the calm before the storm?"}
/obj/item/weapon/paper/listneningpost/year2560/april
/obj/item/weapon/paper/listeningpost/year2560/april
name = "\improper April 2560 Report"
info = {"A loud, painfully high pitched SSTV signal came across global comms. It seems to be a distress signal
of some kind. To what, I have no idea. Efforts to trace the signal's origin have fallen inconclusive."}
<<<<<<< HEAD
/obj/item/weapon/paper/listneningpost/oddreport
name = "\improper Odd Report"
info = {"I wonder how much longer they will accept my empty reports. They will cancel the case soon without
@@ -227,3 +227,28 @@
will be peaceful, though I don't intend to live to see it. And that is why I write this down- it is my sacrifice that
stabilised your worlds, traveller. Spare a thought for me, and please attempt to prevent nuclear proliferation, should
it ever rear it's ugly head again. -Donk Co. Operative #451"}
||||||| parent of a56a61c33d... Merge pull request #10110 from Heroman3003/Listening-Post
/obj/item/weapon/paper/listneningpost/oddreport
name = "\improper Odd Report"
info = {"I wonder how much longer they will accept my empty reports. They will cancel the case soon without
results. When the pickup comes, I will tell them I have lost faith in our cause, and beg them to consider a diplomatic
solution. How many nuclear teams have been dispatched with those nukes? I must try and prevent more from ever being sent.
If they will not listen to reason, I will detonate the warehouse myself. Maybe some day in the immediate future, space
will be peaceful, though I don't intend to live to see it. And that is why I write this down- it is my sacrifice that
stabilised your worlds, traveller. Spare a thought for me, and please attempt to prevent nuclear proliferation, should
it ever rear it's ugly head again. -Donk Co. Operative #451"}
=======
/obj/item/weapon/paper/crumpled/listeningpost/fanfiction
name = "\improper Regarding Latest Report"
info = {"I swear to god, Dave, if you send us your stupid 'Futuristic version of VORE' fanfiction instead of actual
report again 'on accident' even one more time, I'm sending you there myself, and you know better than most
what they do there. Your writing is trash anyway, I bet even those freaks wouldn't like it."}
/obj/item/weapon/paper/listeningpost/departure
name = "\improper Notice To All Facilities"
info = {"After recent developments and Nanotrasen deal, we're pulling back resources from the Virgo-Erigone system.
Any facility recieving this notice is to collect all valuable equipment and data, then fly to the closest general facility
for debrief and reassignment. And to those outdated trashy outposts specifically: all data must be digital. If it's not already,
make it so. Most importantly, remember: we're at a truce now. No shooting NT goons unless they start getting frisky with restricted areas.
And don't fucking forget to debrief Dave's listening post again."}
>>>>>>> a56a61c33d... Merge pull request #10110 from Heroman3003/Listening-Post
File diff suppressed because it is too large Load Diff
-1
View File
@@ -47,7 +47,6 @@
icon_state = "debrisexplored"
forced_ambience = list('sound/ambience/tension/tension.ogg', 'sound/ambience/tension/horror.ogg')
//TFF 26/12/19 - Sub-areas for the APCs.
/area/tether_away/guttersite/engines
name = "Gutter - Gutter Engineering"
+2 -2
View File
@@ -293,14 +293,14 @@
/datum/map_z_level/tether_lateload/gateway_destination
name = "Gateway Destination"
z = Z_LEVEL_GATEWAY
/* // Removed due to heavy merc presence
#include "../../gateway_vr/snow_outpost.dm"
/datum/map_template/tether_lateload/gateway/snow_outpost
name = "Snow Outpost"
desc = "Big snowy area with various outposts."
mappath = 'maps/gateway_vr/snow_outpost.dmm'
associated_map_datum = /datum/map_z_level/tether_lateload/gateway_destination
*/
#include "../../gateway_vr/zoo.dm"
/datum/map_template/tether_lateload/gateway/zoo
name = "Zoo"
+64 -58
View File
@@ -3380,11 +3380,14 @@
/turf/simulated/floor/bluegrid,
/area/ai)
"afV" = (
/obj/machinery/atmospherics/unary/engine{
dir = 1
/obj/machinery/atmospherics/pipe/simple/hidden/fuel{
dir = 9
},
/turf/space,
/turf/simulated/shuttle/plating/airless/carry,
/obj/machinery/atmospherics/pipe/simple/hidden{
dir = 6;
icon_state = "intact"
},
/turf/simulated/wall/rshull,
/area/shuttle/excursion/general)
"afW" = (
/obj/effect/floor_decal/borderfloorblack,
@@ -3468,20 +3471,23 @@
/turf/simulated/open,
/area/security/brig)
"agc" = (
/obj/structure/shuttle/engine/propulsion{
dir = 8;
icon_state = "propulsion_l"
/obj/machinery/atmospherics/pipe/simple/hidden/fuel{
dir = 5;
icon_state = "intact-fuel"
},
/turf/simulated/floor/tiled/asteroid_steel/airless,
/turf/simulated/shuttle/plating/airless/carry,
/area/shuttle/mining_outpost/shuttle)
/obj/machinery/atmospherics/pipe/manifold/hidden{
dir = 4;
icon_state = "map"
},
/turf/simulated/wall/rshull,
/area/shuttle/excursion/general)
"agd" = (
/obj/structure/shuttle/engine/propulsion{
dir = 8
/obj/machinery/atmospherics/unary/engine{
dir = 1
},
/turf/simulated/floor/tiled/asteroid_steel/airless,
/turf/space,
/turf/simulated/shuttle/plating/airless/carry,
/area/shuttle/mining_outpost/shuttle)
/area/shuttle/excursion/general)
"age" = (
/obj/structure/window/reinforced{
dir = 8
@@ -3506,7 +3512,7 @@
"agf" = (
/obj/structure/shuttle/engine/propulsion{
dir = 8;
icon_state = "propulsion_r"
icon_state = "propulsion_l"
},
/turf/simulated/floor/tiled/asteroid_steel/airless,
/turf/simulated/shuttle/plating/airless/carry,
@@ -3514,6 +3520,21 @@
"agg" = (
/turf/simulated/floor/airless,
/area/space)
"agh" = (
/obj/structure/shuttle/engine/propulsion{
dir = 8
},
/turf/simulated/floor/tiled/asteroid_steel/airless,
/turf/simulated/shuttle/plating/airless/carry,
/area/shuttle/mining_outpost/shuttle)
"agi" = (
/obj/structure/shuttle/engine/propulsion{
dir = 8;
icon_state = "propulsion_r"
},
/turf/simulated/floor/tiled/asteroid_steel/airless,
/turf/simulated/shuttle/plating/airless/carry,
/area/shuttle/mining_outpost/shuttle)
"agj" = (
/obj/machinery/access_button{
command = "cycle_exterior";
@@ -21220,17 +21241,6 @@
},
/turf/simulated/floor/tiled,
/area/quartermaster/belterdock/refinery)
"aXC" = (
/obj/machinery/atmospherics/pipe/simple/hidden/fuel{
dir = 5;
icon_state = "intact-fuel"
},
/obj/machinery/atmospherics/pipe/simple/hidden{
dir = 9;
icon_state = "intact"
},
/turf/simulated/wall/rshull,
/area/shuttle/excursion/general)
"aXD" = (
/obj/structure/bed/chair/shuttle{
dir = 8
@@ -21669,12 +21679,6 @@
/obj/machinery/mineral/input,
/turf/simulated/floor/plating,
/area/quartermaster/belterdock/refinery)
"aZD" = (
/obj/machinery/atmospherics/pipe/simple/hidden/fuel{
dir = 9
},
/turf/simulated/wall/rshull,
/area/shuttle/excursion/general)
"aZH" = (
/obj/machinery/conveyor{
dir = 8;
@@ -22688,13 +22692,6 @@
/obj/machinery/light,
/turf/simulated/floor/tiled/monotile,
/area/tether/exploration)
"esH" = (
/obj/machinery/atmospherics/pipe/manifold/hidden{
dir = 1;
icon_state = "map"
},
/turf/simulated/wall/rshull,
/area/shuttle/excursion/general)
"esK" = (
/obj/machinery/door/firedoor/glass/hidden/steel{
dir = 1
@@ -22881,13 +22878,6 @@
/obj/machinery/door/firedoor/glass/hidden/steel,
/turf/simulated/floor/tiled,
/area/hallway/station/upper)
"fmc" = (
/obj/machinery/atmospherics/pipe/simple/hidden{
dir = 6;
icon_state = "intact"
},
/turf/simulated/wall/rshull,
/area/shuttle/excursion/general)
"fox" = (
/obj/structure/cable{
icon_state = "1-2"
@@ -36877,7 +36867,7 @@ aUJ
aXb
afT
aez
afV
agd
ams
aXq
abe
@@ -37019,7 +37009,7 @@ wRt
eug
afT
aeG
afV
agd
ams
aXq
abe
@@ -37160,8 +37150,8 @@ wOI
afO
wOI
aiX
aZD
acK
afV
vJd
ams
aXq
abe
@@ -37302,8 +37292,8 @@ hNx
kTn
ckU
aiY
fmc
vJd
xiw
acK
ams
ghy
abe
@@ -37870,8 +37860,8 @@ aXS
rLd
opv
uVS
esH
vJd
xiw
acK
ams
eof
abe
@@ -38012,8 +38002,8 @@ uGF
wPw
xvO
aRv
aXC
acK
agc
vJd
ams
amq
abe
@@ -38155,7 +38145,7 @@ ikk
efQ
wPF
aeG
afV
agd
ams
aSx
krj
@@ -38297,7 +38287,7 @@ iEV
tEV
xiw
aeH
afV
agd
ams
eAm
abe
@@ -40335,6 +40325,7 @@ avt
adD
aZS
<<<<<<< HEAD
<<<<<<< HEAD
aes
aet
aet
@@ -40351,8 +40342,23 @@ agc
agd
agd
agd
||||||| parent of d800c77374... Merge pull request #10098 from Novacat/nova-ert
agc
agd
agd
agd
=======
>>>>>>> d800c77374... Merge pull request #10098 from Novacat/nova-ert
agf
<<<<<<< HEAD
>>>>>>> 8844a0cb02... Merge pull request #10032 from Novacat/nova-ert
||||||| parent of d800c77374... Merge pull request #10098 from Novacat/nova-ert
=======
agh
agh
agh
agi
>>>>>>> d800c77374... Merge pull request #10098 from Novacat/nova-ert
baB
adD
avt
-9
View File
@@ -250,7 +250,6 @@
name = "\improper Vacant Prep Area"
/area/vacant/vacant_site/gateway/lower
name = "\improper Lower Vacant Prep Area"
//TFF 5/4/20 - Mining Ops move TODO Change all Vacant areas to construction_site per vermin event location announcement.
/area/construction/vacant_mining_ops
name = "\improper Vacant Mining Operations"
@@ -267,7 +266,6 @@
/area/tether/surfacebase/emergency_storage/atrium
name = "\improper Atrium Emergency Storage"
//TFF 7/4/20 - New areas for Surface Cargo bits as well as the Mining Outpost. Some former ones deleted. Others renamed.
// Surface Cargo/Mining EVA/Warehouse/Mining Outpost adadditions
/area/tether/surfacebase/cargo
name = "Surface Cargo Foyer"
@@ -650,7 +648,6 @@
name = "Atmospherics Gas Storage"
icon_state = "atmos"
//TFF 11/12/19 - Minor refactor, makes mice spawn only in Atmos.
/area/engineering/atmos_intake
name = "\improper Atmospherics Intake"
icon_state = "atmos"
@@ -776,7 +773,6 @@
/area/rnd/robotics/resleeving
name = "\improper Robotics Resleeving"
//TFF 28/8/19 - cleanup of areas placement
/area/rnd/research/testingrange
name = "\improper Weapons Testing Range"
icon_state = "firingrange"
@@ -787,7 +783,6 @@
//Outpost areas
//TFF 28/8/19 - cleanup of areas placement
/area/rnd/outpost
name = "\improper Research Outpost Hallway"
icon_state = "research"
@@ -939,7 +934,6 @@
name = "Public Meeting Room"
icon_state = "blue"
sound_env = SMALL_SOFTFLOOR
//TFF 28/8/19 - cleanup of areas placement
/area/chapel/observation
name = "\improper Chapel Observation"
icon_state = "chapel"
@@ -1006,7 +1000,6 @@
flags = RAD_SHIELDED
soundproofed = TRUE
//TFF 28/8/19 - cleanup of areas placement
/area/crew_quarters/sleep/vistor_room_1
flags = RAD_SHIELDED | BLUE_SHIELDED
soundproofed = TRUE
@@ -1418,7 +1411,6 @@
/area/shuttle/securiship/engines
name = "\improper Securiship Engines"
//TFF 5/4/20 - Mining Ops move
// Asteroid Mining belter and Mining Outpost shuttles and refinery/gear areas
/area/quartermaster/belterdock
name = "\improper Cargo Belter Access"
@@ -1469,7 +1461,6 @@ area/shuttle/mining_outpost/shuttle
name = "\improper Ninjacraft"
icon_state = "shuttle2"
//TFF 28/8/19 - cleanup of areas placement
/area/teleporter/departing
name = "\improper Long-Range Teleporter"
icon_state = "teleporter"
-3
View File
@@ -143,7 +143,6 @@
/area/rnd/miscellaneous_lab
)
//TFF 5/4/20 - Mining Ops move, airlock path change
unit_test_exempt_from_atmos = list(
/area/engineering/atmos_intake, // Outside,
/area/rnd/external, // Outside,
@@ -165,7 +164,6 @@
)
lateload_single_pick = list(
list("Snow Outpost"),
list("Carp Farm"),
list("Snow Field"),
list("Listening Post")
@@ -191,7 +189,6 @@
belter_belt_z = list(Z_LEVEL_ROGUEMINE_1,
Z_LEVEL_ROGUEMINE_2)
//TFF 16/4/20 - mining outpost shuttle defines
mining_station_z = list(Z_LEVEL_SPACE_HIGH)
mining_outpost_z = list(Z_LEVEL_SURFACE_MINE)
+1 -1
View File
@@ -212,7 +212,7 @@
..()
//////////////////////////////////////////////////////////////
//TFF 12/4/20 Surface Mining Outpost Shuttle
// Surface Mining Outpost Shuttle
/datum/shuttle/autodock/ferry/surface_mining_outpost
name = "Mining Outpost"
-1
View File
@@ -32,7 +32,6 @@
shuttle_tag = "Trade"
req_one_access = list(access_trader)
//TFF 12/4/20 - Add console for Mining Outpost Shuttle
/obj/machinery/computer/shuttle_control/surface_mining_outpost
name = "surface mining outpost shuttle control console"
shuttle_tag = "Mining Outpost"
@@ -267,14 +267,14 @@
/datum/map_z_level/tether_lateload/gateway_destination
name = "Gateway Destination"
z = Z_LEVEL_GATEWAY
/* //Disabled because mercs
#include "../../gateway_vr/snow_outpost.dm"
/datum/map_template/tether_lateload/gateway/snow_outpost
name = "Snow Outpost"
desc = "Big snowy area with various outposts."
mappath = 'maps/gateway_vr/snow_outpost.dmm'
associated_map_datum = /datum/map_z_level/tether_lateload/gateway_destination
*/ //Disabled because mercs
#include "../../gateway_vr/zoo.dm"
/datum/map_template/tether_lateload/gateway/zoo
name = "Zoo"
-9
View File
@@ -250,7 +250,6 @@
name = "\improper Vacant Prep Area"
/area/vacant/vacant_site/gateway/lower
name = "\improper Lower Vacant Prep Area"
//TFF 5/4/20 - Mining Ops move TODO Change all Vacant areas to construction_site per vermin event location announcement.
/area/construction/vacant_mining_ops
name = "\improper Vacant Mining Operations"
@@ -267,7 +266,6 @@
/area/tether/surfacebase/emergency_storage/atrium
name = "\improper Atrium Emergency Storage"
//TFF 7/4/20 - New areas for Surface Cargo bits as well as the Mining Outpost. Some former ones deleted. Others renamed.
// Surface Cargo/Mining EVA/Warehouse/Mining Outpost adadditions
/area/tether/surfacebase/cargo
name = "Surface Cargo Foyer"
@@ -650,7 +648,6 @@
name = "Atmospherics Gas Storage"
icon_state = "atmos"
//TFF 11/12/19 - Minor refactor, makes mice spawn only in Atmos.
/area/engineering/atmos_intake
name = "\improper Atmospherics Intake"
icon_state = "atmos"
@@ -776,7 +773,6 @@
/area/rnd/robotics/resleeving
name = "\improper Robotics Resleeving"
//TFF 28/8/19 - cleanup of areas placement
/area/rnd/research/testingrange
name = "\improper Weapons Testing Range"
icon_state = "firingrange"
@@ -787,7 +783,6 @@
//Outpost areas
//TFF 28/8/19 - cleanup of areas placement
/area/rnd/outpost
name = "\improper Research Outpost Hallway"
icon_state = "research"
@@ -939,7 +934,6 @@
name = "Public Meeting Room"
icon_state = "blue"
sound_env = SMALL_SOFTFLOOR
//TFF 28/8/19 - cleanup of areas placement
/area/chapel/observation
name = "\improper Chapel Observation"
icon_state = "chapel"
@@ -1003,7 +997,6 @@
flags = RAD_SHIELDED
soundproofed = TRUE
//TFF 28/8/19 - cleanup of areas placement
/area/crew_quarters/sleep/vistor_room_1
flags = RAD_SHIELDED | BLUE_SHIELDED
soundproofed = TRUE
@@ -1412,7 +1405,6 @@
/area/shuttle/securiship/engines
name = "\improper Securiship Engines"
//TFF 5/4/20 - Mining Ops move
// Asteroid Mining belter and Mining Outpost shuttles and refinery/gear areas
/area/quartermaster/belterdock
name = "\improper Cargo Belter Access"
@@ -1460,7 +1452,6 @@ area/shuttle/mining_outpost/shuttle
name = "\improper Ninjacraft"
icon_state = "shuttle2"
//TFF 28/8/19 - cleanup of areas placement
/area/teleporter/departing
name = "\improper Long-Range Teleporter"
icon_state = "teleporter"
-3
View File
@@ -138,7 +138,6 @@
/area/rnd/miscellaneous_lab
)
//TFF 5/4/20 - Mining Ops move, airlock path change
unit_test_exempt_from_atmos = list(
/area/engineering/atmos_intake, // Outside,
/area/rnd/external, // Outside,
@@ -160,7 +159,6 @@
)
lateload_single_pick = list(
list("Snow Outpost"),
list("Carp Farm"),
list("Snow Field"),
list("Listening Post")
@@ -186,7 +184,6 @@
belter_belt_z = list(Z_LEVEL_ROGUEMINE_1,
Z_LEVEL_ROGUEMINE_2)
//TFF 16/4/20 - mining outpost shuttle defines
mining_station_z = list(Z_LEVEL_SPACE_HIGH)
mining_outpost_z = list(Z_LEVEL_SURFACE_MINE)
+1 -1
View File
@@ -212,7 +212,7 @@
..()
//////////////////////////////////////////////////////////////
//TFF 12/4/20 Surface Mining Outpost Shuttle
// Surface Mining Outpost Shuttle
/datum/shuttle/autodock/ferry/surface_mining_outpost
name = "Mining Outpost"
-1
View File
@@ -32,7 +32,6 @@
shuttle_tag = "Trade"
req_one_access = list(access_trader)
//TFF 12/4/20 - Add console for Mining Outpost Shuttle
/obj/machinery/computer/shuttle_control/surface_mining_outpost
name = "surface mining outpost shuttle control console"
shuttle_tag = "Mining Outpost"
+1 -1
View File
@@ -68,7 +68,7 @@ var/list/all_maps = list()
var/ai_shell_restricted = FALSE //VOREStation Addition - are there z-levels restricted?
var/ai_shell_allowed_levels = list() //VOREStation Addition - which z-levels ARE we allowed to visit?
//VOREStation Addition Start - belter stuff TFF 16/4/20 - Mining Outpost Shuttle
//VOREStation Addition Start
var/list/belter_docked_z = list()
var/list/belter_transit_z = list()
var/list/belter_belt_z = list()
+39 -28
View File
@@ -908,6 +908,7 @@ const VoreUserPreferences = (props, context) => {
const {
digestable,
devourable,
resizable,
feeding,
absorbable,
digest_leave_remains,
@@ -1055,6 +1056,44 @@ const VoreUserPreferences = (props, context) => {
: "Click here to turn on hunger noises.")}
content={noisy ? "Hunger Noises Enabled" : "Hunger Noises Disabled"} />
</Flex.Item>
<Flex.Item basis="32%">
<Button
onClick={() => act("toggle_resize")}
icon={resizable ? "toggle-on" : "toggle-off"}
selected={resizable}
fluid
tooltip={"This button is to toggle your ability to be resized by others. "
+ (resizable ? "Click here to prevent being resized." : "Click here to allow being resized.")}
content={resizable ? "Resizing Allowed" : "No Resizing"} />
</Flex.Item>
<Flex.Item basis="32%" grow={1}>
<Button
onClick={() => act("toggle_steppref")}
icon={step_mechanics_active ? "toggle-on" : "toggle-off"}
selected={step_mechanics_active}
fluid
tooltipPosition="top"
tooltip={step_mechanics_active
? "This setting controls whether or not you participate in size-based step mechanics."
+ "Includes both stepping on others, as well as getting stepped on. Click to disable step mechanics."
: ("You will not participate in step mechanics."
+ " Click to enable step mechanics.")}
content={step_mechanics_active ? "Step Mechanics Enabled" : "Step Mechanics Disabled"} />
</Flex.Item>
<Flex.Item basis="32%">
<Button
onClick={() => act("toggle_fx")}
icon={show_vore_fx ? "toggle-on" : "toggle-off"}
selected={show_vore_fx}
fluid
tooltipPosition="top"
tooltip={show_vore_fx
? "This setting controls whether or not a pred is allowed to mess with your HUD and fullscreen overlays."
+ "Click to disable all FX."
: ("Regardless of Predator Setting, you will not see their FX settings."
+ " Click this to enable showing FX.")}
content={show_vore_fx ? "Show Vore FX" : "Do Not Show Vore FX"} />
</Flex.Item>
<Flex.Item basis="49%">
<Button
onClick={() => act("toggle_leaveremains")}
@@ -1069,20 +1108,6 @@ const VoreUserPreferences = (props, context) => {
+ " Click this to allow leaving remains.")}
content={digest_leave_remains ? "Allow Leaving Remains Behind" : "Do Not Allow Leaving Remains Behind"} />
</Flex.Item>
<Flex.Item basis="49%">
<Button
onClick={() => act("toggle_steppref")}
icon={step_mechanics_active ? "toggle-on" : "toggle-off"}
selected={step_mechanics_active}
fluid
tooltipPosition="top"
tooltip={step_mechanics_active
? "This setting controls whether or not you participate in size-based step mechanics."
+ "Includes both stepping on others, as well as getting stepped on. Click to disable step mechanics."
: ("You will not participate in step mechanics."
+ " Click to enable step mechanics.")}
content={step_mechanics_active ? "Step Mechanics Enabled" : "Step Mechanics Disabled"} />
</Flex.Item>
<Flex.Item basis="49%">
<Button
onClick={() => act("toggle_pickuppref")}
@@ -1097,20 +1122,6 @@ const VoreUserPreferences = (props, context) => {
+ " Click this to allow picking up/being picked up.")}
content={pickup_mechanics_active ? "Pick-up Mechanics Enabled" : "Pick-up Mechanics Disabled"} />
</Flex.Item>
<Flex.Item basis="49%">
<Button
onClick={() => act("toggle_fx")}
icon={show_vore_fx ? "toggle-on" : "toggle-off"}
selected={show_vore_fx}
fluid
tooltipPosition="top"
tooltip={show_vore_fx
? "This setting controls whether or not a pred is allowed to mess with your HUD and fullscreen overlays."
+ "Click to disable all FX."
: ("Regardless of Predator Setting, you will not see their FX settings."
+ " Click this to enable showing FX.")}
content={show_vore_fx ? "Show Vore FX" : "Do Not Show Vore FX"} />
</Flex.Item>
<Flex.Item basis="49%">
<Button
fluid
File diff suppressed because one or more lines are too long