Merge branch 'master' into entrepreneur-items

This commit is contained in:
SatinIsle
2024-03-23 00:29:58 +00:00
committed by GitHub
23 changed files with 467 additions and 18 deletions
+1
View File
@@ -11,6 +11,7 @@
#define MESSAGE_TYPE_SYSTEM "system"
#define MESSAGE_TYPE_LOCALCHAT "localchat"
#define MESSAGE_TYPE_NPCEMOTE "npcemote"
#define MESSAGE_TYPE_MULTIZCHAT "multizsay"
#define MESSAGE_TYPE_PLOCALCHAT "plocalchat"
#define MESSAGE_TYPE_HIVEMIND "hivemind"
#define MESSAGE_TYPE_RADIO "radio"
+1
View File
@@ -23,3 +23,4 @@
/decl/hierarchy/outfit/job/assistant/entrepreneur
id_type = /obj/item/weapon/card/id/civilian/entrepreneur
l_hand = /obj/item/device/ticket_printer/train
+88
View File
@@ -9,6 +9,9 @@
idle_power_usage = 300
active_power_usage = 300
blocks_emissive = FALSE
var/climbable = TRUE
var/list/climbers
var/climb_delay = 3.5 SECONDS
var/processing = 0
var/icon_keyboard = "generic_key"
@@ -22,6 +25,8 @@
. = ..()
power_change()
update_icon()
if(climbable)
verbs += /obj/structure/proc/climb_on
/obj/machinery/computer/process()
if(stat & (NOPOWER|BROKEN))
@@ -132,3 +137,86 @@
return
attack_hand(user)
return
/obj/machinery/computer/proc/climb_on()
set name = "Climb structure"
set desc = "Climbs onto a structure."
set category = "Object"
set src in oview(1)
do_climb(usr)
/obj/machinery/computer/MouseDrop_T(mob/target, mob/user)
var/mob/living/H = user
if(istype(H) && can_climb(H) && target == user)
do_climb(target)
else
return ..()
/obj/machinery/computer/proc/can_climb(var/mob/living/user, post_climb_check=0)
if (!climbable || !can_touch(user) || (!post_climb_check && (user in climbers)))
return 0
if (!user.Adjacent(src))
to_chat(user, "<span class='danger'>You can't climb there, the way is blocked.</span>")
return 0
var/obj/occupied = turf_is_crowded()
if(occupied)
to_chat(user, "<span class='danger'>There's \a [occupied] in the way.</span>")
return 0
return 1
/obj/machinery/computer/proc/turf_is_crowded()
var/turf/T = get_turf(src)
if(!T || !istype(T))
return "empty void"
if(T.density)
return T
for(var/obj/O in T.contents)
if(istype(O,/obj/machinery/computer))
var/obj/machinery/computer/S = O
if(S.climbable) continue
if(O && O.density && !(O.flags & ON_BORDER)) //ON_BORDER structures are handled by the Adjacent() check.
return O
return 0
/obj/machinery/computer/proc/do_climb(var/mob/living/user)
if (!can_climb(user))
return
usr.visible_message("<span class='warning'>[user] starts climbing onto \the [src]!</span>")
LAZYDISTINCTADD(climbers, user)
if(!do_after(user,(issmall(user) ? climb_delay * 0.6 : climb_delay)))
LAZYREMOVE(climbers, user)
return
if (!can_climb(user, post_climb_check=1))
LAZYREMOVE(climbers, user)
return
usr.forceMove(climb_to(user))
if (get_turf(user) == get_turf(src))
usr.visible_message("<span class='warning'>[user] climbs onto \the [src]!</span>")
LAZYREMOVE(climbers, user)
/obj/machinery/computer/proc/climb_to(var/mob/living/user)
return get_turf(src)
/obj/machinery/computer/proc/can_touch(var/mob/user)
if (!user)
return 0
if(!Adjacent(user))
return 0
if (user.restrained() || user.buckled)
to_chat(user, "<span class='notice'>You need your hands and legs free for this.</span>")
return 0
if (user.stat || user.paralysis || user.sleeping || user.lying || user.weakened)
return 0
if (isAI(user))
to_chat(user, "<span class='notice'>You need hands for this.</span>")
return 0
return 1
+2
View File
@@ -222,6 +222,8 @@
if(M)
if(isobserver(M))
message = "<span class='emote'><B>[src]</B> ([ghost_follow_link(src, M)]) [input]</span>"
if(usr && usr.client && M && !(get_z(usr) == get_z(M)))
message = "<span class='multizsay'>[message]</span>"
M.show_message(message, m_type)
M.create_chat_message(src, "[runemessage]", FALSE, list("emote"), (m_type == AUDIBLE_MESSAGE))
+6
View File
@@ -145,6 +145,8 @@
message = "<span class='game say'>[message]</span>"
if(speaker && !speaker.client)
message = "<span class='npcsay'>[message]</span>"
else if(speaker && !(get_z(src) == get_z(speaker)))
message = "<span class='multizsay'>[message]</span>"
to_chat(src, message)
else if(teleop)
to_chat(teleop, "<span class='game say'>[create_text_tag("body", "BODY:", teleop.client)][message]</span>")
@@ -159,6 +161,8 @@
message = "<span class='game say'>[message]</span>"
if(speaker && !speaker.client)
message = "<span class='npcsay'>[message]</span>"
else if(speaker && !(get_z(src) == get_z(speaker)))
message = "<span class='multizsay'>[message]</span>"
to_chat(src, message)
else if(teleop)
to_chat(teleop, "<span class='game say'>[create_text_tag("body", "BODY:", teleop.client)][message]</span>")
@@ -333,4 +337,6 @@
var/rendered = "<span class='game say'><span class='name'>[name]</span> [message]</span>"
if(!speaker.client)
rendered = "<span class='npcsay'>[rendered]</span>"
else if(speaker && !(get_z(src) == get_z(speaker)))
rendered = "<span class='multizsay'>[message]</span>"
to_chat(src, rendered)
+6
View File
@@ -548,3 +548,9 @@
if(src.wear_mask) //if the mob is not human, it cleans the mask without asking for bitflags
if(src.wear_mask.clean_blood())
src.update_inv_wear_mask(0)
/mob/living/carbon/proc/food_preference(var/allergen_type) //RS edit
if(allergen_type in species.food_preference)
return species.food_preference_bonus
return 0
@@ -42,6 +42,8 @@
var/can_climb = FALSE
var/climbing_delay = 1.5 // We climb with a quarter delay
var/list/food_preference = list() //RS edit
var/food_preference_bonus = 0
/datum/species/proc/give_numbing_bite() //Holy SHIT this is hacky, but it works. Updating a mob's attacks mid game is insane.
unarmed_attacks = list()
@@ -774,3 +774,231 @@
/datum/trait/neutral/synth_cosmetic_pain/apply(var/datum/species/S,var/mob/living/carbon/human/H, var/trait_prefs = null)
..()
H.verbs |= /mob/living/carbon/human/proc/toggle_pain_module
//Food preferences ported from RogueStar
/datum/trait/neutral/food_pref
name = "Food Preference - Carnivore"
desc = "You prefer to eat meat, and gain extra nutrition for doing so!"
cost = 0
custom_only = FALSE
can_take = ORGANICS
var_changes = list("food_preference_bonus" = 5)
excludes = list(
/datum/trait/neutral/food_pref,
/datum/trait/neutral/food_pref/herbivore,
/datum/trait/neutral/food_pref/beanivore,
/datum/trait/neutral/food_pref/omnivore,
/datum/trait/neutral/food_pref/fungivore,
/datum/trait/neutral/food_pref/piscivore,
/datum/trait/neutral/food_pref/granivore,
/datum/trait/neutral/food_pref/cocoavore,
/datum/trait/neutral/food_pref/glycovore,
/datum/trait/neutral/food_pref/lactovore,
/datum/trait/neutral/food_pref/coffee,
/datum/trait/neutral/food_pref/stimulant
)
var/list/our_allergens = list(ALLERGEN_MEAT)
/datum/trait/neutral/food_pref/apply(datum/species/S, mob/living/carbon/human/H, trait_prefs)
. = ..()
for(var/a in our_allergens)
S.food_preference |= a
/datum/trait/neutral/food_pref/herbivore
name = "Food Preference - Herbivore"
desc = "You prefer to eat fruits and vegitables, and gain extra nutrition for doing so!"
excludes = list(
/datum/trait/neutral/food_pref,
/datum/trait/neutral/food_pref/beanivore,
/datum/trait/neutral/food_pref/omnivore,
/datum/trait/neutral/food_pref/fungivore,
/datum/trait/neutral/food_pref/piscivore,
/datum/trait/neutral/food_pref/granivore,
/datum/trait/neutral/food_pref/cocoavore,
/datum/trait/neutral/food_pref/glycovore,
/datum/trait/neutral/food_pref/lactovore,
/datum/trait/neutral/food_pref/coffee,
/datum/trait/neutral/food_pref/stimulant
)
our_allergens = list(ALLERGEN_VEGETABLE,ALLERGEN_FRUIT)
/datum/trait/neutral/food_pref/beanivore
name = "Food Preference - Legumovore"
desc = "You prefer to eat bean related foods, such as tofu, and gain extra nutrition for doing so!"
excludes = list(
/datum/trait/neutral/food_pref,
/datum/trait/neutral/food_pref/herbivore,
/datum/trait/neutral/food_pref/omnivore,
/datum/trait/neutral/food_pref/fungivore,
/datum/trait/neutral/food_pref/piscivore,
/datum/trait/neutral/food_pref/granivore,
/datum/trait/neutral/food_pref/cocoavore,
/datum/trait/neutral/food_pref/glycovore,
/datum/trait/neutral/food_pref/lactovore,
/datum/trait/neutral/food_pref/coffee,
/datum/trait/neutral/food_pref/stimulant
)
our_allergens = list(ALLERGEN_BEANS)
/datum/trait/neutral/food_pref/omnivore
name = "Food Preference - Omnivore"
desc = "You prefer to eat meat and vegitables, and gain extra nutrition for doing so!"
excludes = list(
/datum/trait/neutral/food_pref,
/datum/trait/neutral/food_pref/herbivore,
/datum/trait/neutral/food_pref/beanivore,
/datum/trait/neutral/food_pref/fungivore,
/datum/trait/neutral/food_pref/piscivore,
/datum/trait/neutral/food_pref/granivore,
/datum/trait/neutral/food_pref/cocoavore,
/datum/trait/neutral/food_pref/glycovore,
/datum/trait/neutral/food_pref/lactovore,
/datum/trait/neutral/food_pref/coffee,
/datum/trait/neutral/food_pref/stimulant
)
our_allergens = list(ALLERGEN_VEGETABLE,ALLERGEN_MEAT)
/datum/trait/neutral/food_pref/fungivore
name = "Food Preference - Fungivore"
desc = "You prefer to eat mushrooms and fungus, and gain extra nutrition for doing so!"
excludes = list(
/datum/trait/neutral/food_pref,
/datum/trait/neutral/food_pref/herbivore,
/datum/trait/neutral/food_pref/beanivore,
/datum/trait/neutral/food_pref/omnivore,
/datum/trait/neutral/food_pref/piscivore,
/datum/trait/neutral/food_pref/granivore,
/datum/trait/neutral/food_pref/cocoavore,
/datum/trait/neutral/food_pref/glycovore,
/datum/trait/neutral/food_pref/lactovore,
/datum/trait/neutral/food_pref/coffee,
/datum/trait/neutral/food_pref/stimulant
)
our_allergens = list(ALLERGEN_FUNGI)
/datum/trait/neutral/food_pref/piscivore
name = "Food Preference - Piscivore"
desc = "You prefer to eat fish, and gain extra nutrition for doing so!"
excludes = list(
/datum/trait/neutral/food_pref,
/datum/trait/neutral/food_pref/herbivore,
/datum/trait/neutral/food_pref/beanivore,
/datum/trait/neutral/food_pref/omnivore,
/datum/trait/neutral/food_pref/fungivore,
/datum/trait/neutral/food_pref/granivore,
/datum/trait/neutral/food_pref/cocoavore,
/datum/trait/neutral/food_pref/glycovore,
/datum/trait/neutral/food_pref/lactovore,
/datum/trait/neutral/food_pref/coffee,
/datum/trait/neutral/food_pref/stimulant
)
our_allergens = list(ALLERGEN_FISH)
/datum/trait/neutral/food_pref/granivore
name = "Food Preference - Granivore"
desc = "You prefer to eat grains and seeds, and gain extra nutrition for doing so!"
excludes = list(
/datum/trait/neutral/food_pref,
/datum/trait/neutral/food_pref/herbivore,
/datum/trait/neutral/food_pref/beanivore,
/datum/trait/neutral/food_pref/omnivore,
/datum/trait/neutral/food_pref/fungivore,
/datum/trait/neutral/food_pref/piscivore,
/datum/trait/neutral/food_pref/cocoavore,
/datum/trait/neutral/food_pref/glycovore,
/datum/trait/neutral/food_pref/lactovore,
/datum/trait/neutral/food_pref/coffee,
/datum/trait/neutral/food_pref/stimulant
)
our_allergens = list(ALLERGEN_GRAINS,ALLERGEN_SEEDS)
/datum/trait/neutral/food_pref/cocoavore
name = "Food Preference - Cocoavore"
desc = "You prefer to eat chocolate, and gain extra nutrition for doing so!"
excludes = list(
/datum/trait/neutral/food_pref,
/datum/trait/neutral/food_pref/herbivore,
/datum/trait/neutral/food_pref/beanivore,
/datum/trait/neutral/food_pref/omnivore,
/datum/trait/neutral/food_pref/fungivore,
/datum/trait/neutral/food_pref/piscivore,
/datum/trait/neutral/food_pref/granivore,
/datum/trait/neutral/food_pref/glycovore,
/datum/trait/neutral/food_pref/lactovore,
/datum/trait/neutral/food_pref/coffee,
/datum/trait/neutral/food_pref/stimulant
)
our_allergens = list(ALLERGEN_CHOCOLATE)
/datum/trait/neutral/food_pref/glycovore
name = "Food Preference - Glycovore"
desc = "You prefer to eat sugar, and gain extra nutrition for doing so!"
excludes = list(
/datum/trait/neutral/food_pref,
/datum/trait/neutral/food_pref/herbivore,
/datum/trait/neutral/food_pref/beanivore,
/datum/trait/neutral/food_pref/omnivore,
/datum/trait/neutral/food_pref/fungivore,
/datum/trait/neutral/food_pref/piscivore,
/datum/trait/neutral/food_pref/granivore,
/datum/trait/neutral/food_pref/cocoavore,
/datum/trait/neutral/food_pref/lactovore,
/datum/trait/neutral/food_pref/coffee,
/datum/trait/neutral/food_pref/stimulant
)
our_allergens = list(ALLERGEN_SUGARS)
/datum/trait/neutral/food_pref/lactovore
name = "Food Preference - Lactovore"
desc = "You prefer to eat and drink things with milk in them, and gain extra nutrition for doing so!"
excludes = list(
/datum/trait/neutral/food_pref,
/datum/trait/neutral/food_pref/herbivore,
/datum/trait/neutral/food_pref/beanivore,
/datum/trait/neutral/food_pref/omnivore,
/datum/trait/neutral/food_pref/fungivore,
/datum/trait/neutral/food_pref/piscivore,
/datum/trait/neutral/food_pref/granivore,
/datum/trait/neutral/food_pref/cocoavore,
/datum/trait/neutral/food_pref/glycovore,
/datum/trait/neutral/food_pref/coffee,
/datum/trait/neutral/food_pref/stimulant
)
our_allergens = list(ALLERGEN_DAIRY)
/datum/trait/neutral/food_pref/coffee
name = "Food Preference - Coffee Dependant"
desc = "You can get by on coffee alone if you have to, and you like it that way."
excludes = list(
/datum/trait/neutral/food_pref,
/datum/trait/neutral/food_pref/herbivore,
/datum/trait/neutral/food_pref/beanivore,
/datum/trait/neutral/food_pref/omnivore,
/datum/trait/neutral/food_pref/fungivore,
/datum/trait/neutral/food_pref/piscivore,
/datum/trait/neutral/food_pref/granivore,
/datum/trait/neutral/food_pref/cocoavore,
/datum/trait/neutral/food_pref/glycovore,
/datum/trait/neutral/food_pref/lactovore,
/datum/trait/neutral/food_pref/stimulant
)
our_allergens = list(ALLERGEN_COFFEE)
/datum/trait/neutral/food_pref/stimulant
name = "Food Preference - Stimulant Dependant"
desc = "You can get by on caffine alone if you have to, and you like it that way."
excludes = list(
/datum/trait/neutral/food_pref,
/datum/trait/neutral/food_pref/herbivore,
/datum/trait/neutral/food_pref/beanivore,
/datum/trait/neutral/food_pref/omnivore,
/datum/trait/neutral/food_pref/fungivore,
/datum/trait/neutral/food_pref/piscivore,
/datum/trait/neutral/food_pref/granivore,
/datum/trait/neutral/food_pref/cocoavore,
/datum/trait/neutral/food_pref/glycovore,
/datum/trait/neutral/food_pref/lactovore,
/datum/trait/neutral/food_pref/coffee
)
our_allergens = list(ALLERGEN_STIMULANT)
@@ -758,7 +758,7 @@
catalogue_data = list(/datum/category_item/catalogue/fauna/catslug/custom/capslug)
holder_type = /obj/item/weapon/holder/catslug/custom/capslug
say_list_type = /datum/say_list/catslug/custom/capslug
myid_access = list(access_maint_tunnels) //The all_station_access part below adds onto this.
myid_access = list(access_heads, access_keycard_auth) //Same access as a bridge secretary.
/datum/say_list/catslug/custom/capslug
speak = list("How open big glass box with shiny inside?.", "What is that?", "Respect my authority!", "What are you doing?", "How did you get here?", "Fax for yellow-shirts!", "WAOW!", "Why is that console blinking and clicking?", "Do we need to call for ERT?", "Have been called comdom before, not sure why they thought I was a balloon.")
@@ -773,7 +773,6 @@
mob_radio.ks2type = /obj/item/device/encryptionkey/heads/captain //Might not be able to speak, but the catslug can listen.
mob_radio.keyslot2 = new /obj/item/device/encryptionkey/heads/captain(mob_radio)
mob_radio.recalculateChannels(1)
myid.access |= get_all_station_access()
//=============================================================================
//Admin-spawn only catslugs below - Expect overpowered things & silliness below
@@ -103,3 +103,95 @@
speak = list("NEHEHEHEHEH","Neh?")
emote_hear = list("snorts","whinnies")
emote_see = list("shakes its head", "stamps a hoof", "looks around")
//Kelpie resprite of the big horse
/mob/living/simple_mob/vore/horse/kelpie
name = "kelpie"
icon_state = "kelpie"
icon_living = "kelpie"
icon_dead = "kelpie-dead"
icon = 'icons/mob/vore64x64.dmi'
desc = "A darkly furred horse-like creature with piercing light green eyes. It's mane is a dark green and has an almost seaweed like texture."
tt_desc = "Equus cailpeach"
vore_capacity = 2
maxHealth = 250
health = 250
meat_amount = 10
old_x = -16
old_y = 0
default_pixel_x = -16
pixel_x = -16
pixel_y = 0
mount_offset_y = 22
say_list_type = /datum/say_list/horse/kelpie
ai_holder_type = /datum/ai_holder/simple_mob/vore/kelpie
vore_bump_chance = 75
vore_pounce_chance = 75
vore_pounce_maxhealth = 200
vore_bump_emote = "chomps down on"
/mob/living/simple_mob/vore/horse/kelpie/init_vore()
..()
var/obj/belly/B = vore_selected
B.name = "stomach"
B.desc = "With a final few gulps, the kelpie finishes swallowing you down into its hot, humid gut... and with a slosh, your weight makes the equine's belly hang down slightly like some sort of organic hammock. The thick, damp air is tinged with the smell of seaweed, and the surrounding flesh wastes no time in clenching and massaging down over its newfound fodder."
B.digest_brute = 3
B.digest_burn = 3
B.digestchance = 40
B.absorbchance = 1
B.escapechance = 7
B.escape_stun = 5
B.emote_lists[DM_HOLD] = list(
"The kelpie's idle trotting helps its stomach gently churn around you, slimily squelching against your figure.",
"The equine predator takes a moment to intentionally clench its gut around you, encapsulating you in a strange, fleshy hug.",
"Some hot, viscous slime oozes down over your form, helping slicken you up during your stay.",
"During a moment of relative silence, you can hear the beast's soft, relaxed breathing as it casually goes about its day.",
"The thick, humid atmosphere within the kelpie's hanging belly works in tandem with its steady, metronome-like heartbeat to soothe you.",
"Your surroundings sway from side to side as the kelpie trots about, as if it is showing off its newest catch.")
B.emote_lists[DM_DIGEST] = list(
"The kelpie huffs in annoyance before clenching those wrinkled walls tight against your form, grinding away at you!",
"As the beast trots about, you're forced to slip and slide around amidst a pool of thick digestive goop!",
"You can barely hear the horse let out a pleased nicker as its stomach eagerly gurgles around its newfound meal!",
"As the thinning air begins to make you feel dizzy, menacing bworps and grumbles fill that dark, constantly shifting organ!",
"The constant, rhythmic kneading and massaging starts to take its toll along with the muggy heat, making you feel weaker and weaker!",
"The kelpie happily trots around while digesting its meal, almost like it is trying to show off the hanging gut you've given it.")
/datum/say_list/horse/kelpie
speak = list("...","?")
emote_hear = list("whispers something","lets out a high pitched, distorted neigh")
emote_see = list("beckons you near", "watches", "swishes it's grass-like tail")
/datum/ai_holder/simple_mob/vore/kelpie
/datum/ai_holder/simple_mob/vore/kelpie/handle_wander_movement()
if(!holder)
return
ai_log("handle_wander_movement() : Entered.", AI_LOG_TRACE)
if(isturf(holder.loc) && can_act())
wander_delay--
var/turf/simulated/floor/water/deep/ocean/diving/sink = holder.loc
var/turf/simulated/floor/water/underwater/surface = holder.loc
var/mob/living/simple_mob/H = holder
if(istype(sink) && H.vore_fullness)
holder.zMove(DOWN)
wander_delay = base_wander_delay
else if(istype(surface) && !H.vore_fullness)
holder.zMove(UP)
wander_delay = base_wander_delay
else if(wander_delay <= 0)
if(!wander_when_pulled && (holder.pulledby || holder.grabbed_by.len))
ai_log("handle_wander_movement() : Being pulled and cannot wander. Exiting.", AI_LOG_DEBUG)
return
var/moving_to = 0 // Apparently this is required or it always picks 4, according to the previous developer for simplemob AI.
moving_to = pick(cardinal)
holder.set_dir(moving_to)
holder.IMove(get_step(holder,moving_to))
wander_delay = base_wander_delay
ai_log("handle_wander_movement() : Exited.", AI_LOG_TRACE)
+2
View File
@@ -200,6 +200,8 @@
for(var/mob/M as anything in vis_mobs)
if(isnewplayer(M))
continue
if(src.client && M && !(get_z(src) == get_z(M)))
message = "<span class='multizsay'>[message]</span>"
if(isobserver(M) && (!M.is_preference_enabled(/datum/client_preference/ghost_see_whisubtle) || \
!is_preference_enabled(/datum/client_preference/whisubtle_vis) && !M.client?.holder))
spawn(0)
+16 -8
View File
@@ -26,6 +26,7 @@ var/list/adminfaxes = list() //cache for faxes that have been sent to admins
var/sendcooldown = 0 // to avoid spamming fax messages
var/department = "Unknown" // our department
var/destination = null // the department we're sending to
var/talon = 0 // So that the talon can access their own crew roles for the request
/obj/machinery/photocopier/faxmachine/New()
allfaxes += src
@@ -85,12 +86,18 @@ var/list/adminfaxes = list() //cache for faxes that have been sent to admins
var/list/jobs = list()
for(var/datum/department/dept as anything in SSjob.get_all_department_datums())
if(!dept.assignable || dept.centcom_only)
continue
for(var/job in SSjob.get_job_titles_in_department(dept.name))
var/datum/job/J = SSjob.get_job(job)
if(J.requestable)
jobs |= job
if(!src.talon)
if(!dept.assignable || dept.centcom_only)
continue
for(var/job in SSjob.get_job_titles_in_department(dept.name))
var/datum/job/J = SSjob.get_job(job)
if(J.requestable)
jobs |= job
else
for(var/job in SSjob.get_job_titles_in_department(dept.name))
var/datum/job/J = SSjob.get_job(job)
if(J.offmap_spawn)
jobs |= job
var/role = tgui_input_list(L, "Pick the job to request.", "Job Request", jobs)
if(!role)
@@ -131,8 +138,8 @@ var/list/adminfaxes = list() //cache for faxes that have been sent to admins
ping_name = "Expedition"
if(DEPARTMENT_SYNTHETIC)
ping_name = "Silicon"
//if(DEPARTMENT_TALON)
// ping_name = "Offmap"
if(DEPARTMENT_TALON)
ping_name = "Offmap"
if(!ping_name)
to_chat(L, "<span class='warning'>Selected job cannot be requested for \[ERRORUNKNOWNDEPT] reason. Please report this to system administrator.</span>")
return
@@ -503,3 +510,4 @@ Extracted to its own procedure for easier logic handling with paper bundles.
query_string += "&reason=[url_encode(reason)]"
query_string += "&job=[url_encode(jobname)]"
world.Export("[config.chat_webhook_url]?[query_string]")
@@ -58,10 +58,10 @@
if(!M.isSynthetic())
if(!(M.species.allergens & allergen_type)) //assuming it doesn't cause a horrible reaction, we'll be ok!
M.heal_organ_damage(0.5 * removed, 0)
M.adjust_nutrition((nutriment_factor * removed) * M.species.organic_food_coeff)
M.adjust_nutrition(((nutriment_factor + M.food_preference(allergen_type)) * removed) * M.species.organic_food_coeff) //RS edit
M.add_chemical_effect(CE_BLOODRESTORE, 4 * removed)
else
M.adjust_nutrition((nutriment_factor * removed) * M.species.synthetic_food_coeff)
M.adjust_nutrition(((nutriment_factor + M.food_preference(allergen_type)) * removed) * M.species.synthetic_food_coeff) //RS edit
//VOREStation Edits Stop
@@ -957,7 +957,8 @@
/datum/reagent/drink/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed)
if(!(M.species.allergens & allergen_type))
M.adjust_nutrition(nutrition * removed)
var/bonus = M.food_preference(allergen_type)
M.adjust_nutrition((nutrition + bonus) * removed) //RS edit
M.dizziness = max(0, M.dizziness + adj_dizzy)
M.drowsyness = max(0, M.drowsyness + adj_drowsy)
M.AdjustSleeping(adj_sleepy)
@@ -2585,6 +2586,7 @@
if(M.species.robo_ethanol_drunk || !(M.isSynthetic()))
if(alien == IS_DIONA)
return
M.adjust_nutrition((M.food_preference(allergen_type) / 2) * removed) //RS edit
M.jitteriness = max(M.jitteriness - 3, 0)
/datum/reagent/ethanol/beer/lite
Binary file not shown.

Before

Width:  |  Height:  |  Size: 212 KiB

After

Width:  |  Height:  |  Size: 221 KiB

+1
View File
@@ -318,6 +318,7 @@ personally I recommend using the ship's boat if you need to evacuate, but if you
/obj/machinery/photocopier/faxmachine/talon
department = "ITV Talon"
desc = "The ship's fax machine! It's a safe assumption that most of the departments listed aren't on your ship, since the ship only has one."
talon = 1
/obj/item/clothing/head/helmet/space/void/captain/talon
name = "talon captain's voidsuit helmet"
@@ -24,6 +24,7 @@ export const MESSAGE_TYPE_INTERNAL = 'internal';
export const MESSAGE_TYPE_SYSTEM = 'system';
export const MESSAGE_TYPE_LOCALCHAT = 'localchat';
export const MESSAGE_TYPE_NPCEMOTE = 'npcemote';
export const MESSAGE_TYPE_MULTIZCHAT = 'multizsay';
export const MESSAGE_TYPE_PLOCALCHAT = 'plocalchat';
export const MESSAGE_TYPE_VORE = 'vore';
export const MESSAGE_TYPE_HIVEMIND = 'hivemind';
@@ -64,6 +65,12 @@ export const MESSAGE_TYPES = [
description: 'In-character emotes and says from NPCs',
selector: '.npcemote, .npcsay',
},
{
type: MESSAGE_TYPE_MULTIZCHAT,
name: 'MultiZ Emotes / Says',
description: 'In-character emotes and says from levels above/below',
selector: '.multizsay',
},
{
type: MESSAGE_TYPE_LOCALCHAT,
name: 'Local',
@@ -370,6 +370,7 @@ img.icon.bigicon {
.say,
.emote,
.emotesubtle,
.multizsay,
.npcemote,
.npcsay,
.infoplain,
@@ -388,6 +388,7 @@ img.icon.bigicon {
.say,
.emote,
.emotesubtle,
.multizsay,
.npcemote,
.npcsay,
.infoplain,
@@ -370,6 +370,7 @@ img.icon.bigicon {
.say,
.emote,
.emotesubtle,
.multizsay,
.npcemote,
.npcsay,
.infoplain,
@@ -388,6 +388,7 @@ img.icon.bigicon {
.say,
.emote,
.emotesubtle,
.multizsay,
.npcemote,
.npcsay,
.infoplain,
+2 -2
View File
@@ -126,11 +126,11 @@
* @file
* @copyright 2020 Aleksej Komarov
* @license MIT
*/var i=(0,r.VP)("chat/load"),l=(0,r.VP)("chat/rebuild"),s=(0,r.VP)("chat/updateMessageCount"),d=(0,r.VP)("chat/addPage",function(){return{payload:(0,a.a3)()}}),g=(0,r.VP)("chat/changePage"),p=(0,r.VP)("chat/updatePage"),y=(0,r.VP)("chat/toggleAcceptedType"),x=(0,r.VP)("chat/removePage"),E=(0,r.VP)("chat/changeScrollTracking"),I=(0,r.VP)("chat/saveToDisk"),T=(0,r.VP)("chat/purgeMessageArchive"),O=(0,r.VP)("chat/movePageLeft"),P=(0,r.VP)("chat/movePageRight")},95944:function(v,h,t){"use strict";t.d(h,{C_:function(){return s},HC:function(){return i},HL:function(){return r},Ol:function(){return st},PM:function(){return d},bS:function(){return l},xr:function(){return a}});/**
*/var i=(0,r.VP)("chat/load"),l=(0,r.VP)("chat/rebuild"),s=(0,r.VP)("chat/updateMessageCount"),d=(0,r.VP)("chat/addPage",function(){return{payload:(0,a.a3)()}}),g=(0,r.VP)("chat/changePage"),p=(0,r.VP)("chat/updatePage"),y=(0,r.VP)("chat/toggleAcceptedType"),x=(0,r.VP)("chat/removePage"),E=(0,r.VP)("chat/changeScrollTracking"),I=(0,r.VP)("chat/saveToDisk"),T=(0,r.VP)("chat/purgeMessageArchive"),O=(0,r.VP)("chat/movePageLeft"),P=(0,r.VP)("chat/movePageRight")},95944:function(v,h,t){"use strict";t.d(h,{C_:function(){return s},HC:function(){return i},HL:function(){return r},Ol:function(){return Y},PM:function(){return d},bS:function(){return l},xr:function(){return a}});/**
* @file
* @copyright 2020 Aleksej Komarov
* @license MIT
*/var r=6e4,a=250,i=10,l=6e4,s="unknown",d="internal",g="system",p="localchat",y="npcemote",x="plocalchat",E="vore",I="hivemind",T="radio",O="nif",P="info",R="warning",D="deadchat",w="ooc",F="looc",U="adminpm",M="mentorpm",B="combat",j="chatprint",N="adminchat",$="modchat",H="rlooc",k="prayer",tt="eventchat",G="adminlog",_="attacklog",q="debug",st=[{type:g,name:"System Messages",description:"Messages from your client, always enabled",selector:".boldannounce",important:!0},{type:y,name:"NPC Emotes / Says",description:"In-character emotes and says from NPCs",selector:".npcemote, .npcsay"},{type:p,name:"Local",description:"In-character local messages (say, emote, etc)",selector:".say, .emote, .emotesubtle"},{type:x,name:"Local (Pred/Prey)",description:"Messages from / to absorbed or dominated prey",selector:".psay, .pemote"},{type:E,name:"Vorgan Messages",description:"Messages regarding vore interactions",selector:".valert, .vwarning, .vnotice, .vdanger"},{type:I,name:"Global Say",description:"All global languages (Hivemind / Binary)",selector:".hivemind, .binarysay"},{type:T,name:"Radio",description:"All departments of radio messages",selector:".alert, .minorannounce, .syndradio, .centradio, .airadio, .comradio, .secradio, .gangradio, .engradio, .medradio, .sciradio, .supradio, .srvradio, .expradio, .radio, .deptradio, .newscaster, .resonate, .abductor, .alien, .changeling"},{type:O,name:"NIF",description:"Messages from the NIF itself and people inside",selector:".nif"},{type:P,name:"Info",description:"Non-urgent messages from the game and items",selector:".notice:not(.pm), .adminnotice:not(.pm), .info, .sinister, .cult, .infoplain, .announce, .hear, .smallnotice, .holoparasite, .boldnotice"},{type:R,name:"Warnings",description:"Urgent messages from the game and items",selector:".warning:not(.pm), .critical, .userdanger, .italics, .alertsyndie, .warningplain"},{type:D,name:"Deadchat",description:"All of deadchat",selector:".deadsay, .ghostalert"},{type:w,name:"OOC",description:"The bluewall of global OOC messages",selector:".ooc, .adminooc, .adminobserverooc, .oocplain"},{type:F,name:"Local OOC",description:"Local OOC messages, always enabled",selector:".looc",important:!0},{type:U,name:"Admin PMs",description:"Messages to/from admins (adminhelp)",selector:".pm, .adminhelp"},{type:M,name:"Mentor PMs",description:"Mentorchat and mentor pms",selector:".mentor_channel, .mentor"},{type:B,name:"Combat Log",description:"Urist McTraitor has stabbed you with a knife!",selector:".danger"},{type:j,name:"Chat prints",description:"Chat outputs of ooc notes or vorebelly exports",selector:".chatexport"},{type:s,name:"Unsorted",description:"Everything we could not sort, always enabled"},{type:N,name:"Admin Chat",description:"ASAY messages",selector:".admin_channel, .adminsay",admin:!0},{type:$,name:"Mod Chat",description:"MSAY messages",selector:".mod_channel",admin:!0},{type:tt,name:"Event Chat",description:"ESAY messages",selector:".event_channel",admin:!0},{type:H,name:"Remote LOOC",description:"Remote LOOC messages",selector:".rlooc",admin:!0},{type:k,name:"Prayers",description:"Prayers from players",admin:!0},{type:G,name:"Admin Log",description:"ADMIN LOG: Urist McAdmin has jumped to coordinates X, Y, Z",selector:".log_message",admin:!0},{type:_,name:"Attack Log",description:"Urist McTraitor has shot John Doe",admin:!0},{type:q,name:"Debug Log",description:"DEBUG: SSPlanets subsystem Recover().",admin:!0}]},23152:function(v,h,t){"use strict";t.d(h,{Vu:function(){return E},Xe:function(){return Qt},dH:function(){return ce},X4:function(){return me},v7:function(){return Kn}});var r=t(88095),a=t(4413),i=t(92514),l=t(43488),s=t(95944),d=t(11358);/**
*/var r=6e4,a=250,i=10,l=6e4,s="unknown",d="internal",g="system",p="localchat",y="npcemote",x="multizsay",E="plocalchat",I="vore",T="hivemind",O="radio",P="nif",R="info",D="warning",w="deadchat",F="ooc",U="looc",M="adminpm",B="mentorpm",j="combat",N="chatprint",$="adminchat",H="modchat",k="rlooc",tt="prayer",G="eventchat",_="adminlog",q="attacklog",st="debug",Y=[{type:g,name:"System Messages",description:"Messages from your client, always enabled",selector:".boldannounce",important:!0},{type:y,name:"NPC Emotes / Says",description:"In-character emotes and says from NPCs",selector:".npcemote, .npcsay"},{type:x,name:"MultiZ Emotes / Says",description:"In-character emotes and says from levels above/below",selector:".multizsay"},{type:p,name:"Local",description:"In-character local messages (say, emote, etc)",selector:".say, .emote, .emotesubtle"},{type:E,name:"Local (Pred/Prey)",description:"Messages from / to absorbed or dominated prey",selector:".psay, .pemote"},{type:I,name:"Vorgan Messages",description:"Messages regarding vore interactions",selector:".valert, .vwarning, .vnotice, .vdanger"},{type:T,name:"Global Say",description:"All global languages (Hivemind / Binary)",selector:".hivemind, .binarysay"},{type:O,name:"Radio",description:"All departments of radio messages",selector:".alert, .minorannounce, .syndradio, .centradio, .airadio, .comradio, .secradio, .gangradio, .engradio, .medradio, .sciradio, .supradio, .srvradio, .expradio, .radio, .deptradio, .newscaster, .resonate, .abductor, .alien, .changeling"},{type:P,name:"NIF",description:"Messages from the NIF itself and people inside",selector:".nif"},{type:R,name:"Info",description:"Non-urgent messages from the game and items",selector:".notice:not(.pm), .adminnotice:not(.pm), .info, .sinister, .cult, .infoplain, .announce, .hear, .smallnotice, .holoparasite, .boldnotice"},{type:D,name:"Warnings",description:"Urgent messages from the game and items",selector:".warning:not(.pm), .critical, .userdanger, .italics, .alertsyndie, .warningplain"},{type:w,name:"Deadchat",description:"All of deadchat",selector:".deadsay, .ghostalert"},{type:F,name:"OOC",description:"The bluewall of global OOC messages",selector:".ooc, .adminooc, .adminobserverooc, .oocplain"},{type:U,name:"Local OOC",description:"Local OOC messages, always enabled",selector:".looc",important:!0},{type:M,name:"Admin PMs",description:"Messages to/from admins (adminhelp)",selector:".pm, .adminhelp"},{type:B,name:"Mentor PMs",description:"Mentorchat and mentor pms",selector:".mentor_channel, .mentor"},{type:j,name:"Combat Log",description:"Urist McTraitor has stabbed you with a knife!",selector:".danger"},{type:N,name:"Chat prints",description:"Chat outputs of ooc notes or vorebelly exports",selector:".chatexport"},{type:s,name:"Unsorted",description:"Everything we could not sort, always enabled"},{type:$,name:"Admin Chat",description:"ASAY messages",selector:".admin_channel, .adminsay",admin:!0},{type:H,name:"Mod Chat",description:"MSAY messages",selector:".mod_channel",admin:!0},{type:G,name:"Event Chat",description:"ESAY messages",selector:".event_channel",admin:!0},{type:k,name:"Remote LOOC",description:"Remote LOOC messages",selector:".rlooc",admin:!0},{type:tt,name:"Prayers",description:"Prayers from players",admin:!0},{type:_,name:"Admin Log",description:"ADMIN LOG: Urist McAdmin has jumped to coordinates X, Y, Z",selector:".log_message",admin:!0},{type:q,name:"Attack Log",description:"Urist McTraitor has shot John Doe",admin:!0},{type:st,name:"Debug Log",description:"DEBUG: SSPlanets subsystem Recover().",admin:!0}]},23152:function(v,h,t){"use strict";t.d(h,{Vu:function(){return E},Xe:function(){return Qt},dH:function(){return ce},X4:function(){return me},v7:function(){return Kn}});var r=t(88095),a=t(4413),i=t(92514),l=t(43488),s=t(95944),d=t(11358);/**
* @file
* @copyright 2020 Aleksej Komarov
* @license MIT
File diff suppressed because one or more lines are too long
+1 -1
View File
@@ -4290,7 +4290,7 @@
#include "maps\expedition_vr\beach\submaps\mountains.dm"
#include "maps\expedition_vr\beach\submaps\mountains_areas.dm"
#include "maps\gateway_archive_vr\blackmarketpackers.dm"
#include "maps\groundbase\groundbase.dm"
#include "maps\tether\tether.dm"
#include "maps\redgate\fantasy_items.dm"
#include "maps\redgate\falls\atoll_decals.dm"
#include "maps\redgate\falls\atoll_objs.dm"