mirror of
https://github.com/KabKebab/GS13.git
synced 2026-07-16 02:17:19 +01:00
Merge remote-tracking branch 'upstream/master' into RBMK_Branch_Simple
This commit is contained in:
@@ -38,6 +38,7 @@ require only minor tweaks.
|
||||
#define ZTRAIT_SPACE_RUINS "Space Ruins"
|
||||
#define ZTRAIT_LAVA_RUINS "Lava Ruins"
|
||||
#define ZTRAIT_LAVA_UNDERGROUND "Lava Underground"
|
||||
#define ZTRAIT_DINER "Diner"
|
||||
#define ZTRAIT_ISOLATED_RUINS "Isolated Ruins" //Placing ruins on z levels with this trait will use turf reservation instead of usual placement.
|
||||
|
||||
// number - bombcap is multiplied by this before being applied to bombs
|
||||
@@ -81,6 +82,8 @@ require only minor tweaks.
|
||||
|
||||
#define ZTRAITS_REEBE list(ZTRAIT_REEBE = TRUE, ZTRAIT_BOMBCAP_MULTIPLIER = 0.5)
|
||||
|
||||
#define ZTRAITS_DINER list(ZTRAIT_DINER = TRUE, ZTRAIT_BOMBCAP_MULTIPLIER = 0.5)
|
||||
|
||||
#define DL_NAME "name"
|
||||
#define DL_TRAITS "traits"
|
||||
#define DECLARE_LEVEL(NAME, TRAITS) list(DL_NAME = NAME, DL_TRAITS = TRAITS)
|
||||
|
||||
@@ -250,10 +250,13 @@ SUBSYSTEM_DEF(mapping)
|
||||
++space_levels_so_far
|
||||
add_new_zlevel("Empty Area [space_levels_so_far]", ZTRAITS_SPACE)
|
||||
|
||||
|
||||
// load mining
|
||||
if(config.minetype == "lavaland")
|
||||
INIT_ANNOUNCE("Loading Mining...")
|
||||
LoadGroup(FailedZs, "Lavaland_Lower", "map_files/Mining", "Lavaland_Lower.dmm", default_traits = ZTRAITS_LAVALAND_UNDERRGOUND)
|
||||
LoadGroup(FailedZs, "Lavaland", "map_files/Mining", "Lavaland.dmm", default_traits = ZTRAITS_LAVALAND)
|
||||
LoadGroup(FailedZs, "Diner", "map_files/hyper", "Diner.dmm", default_traits = ZTRAITS_DINER)
|
||||
else if (!isnull(config.minetype))
|
||||
INIT_ANNOUNCE("WARNING: An unknown minetype '[config.minetype]' was set! This is being ignored! Update the maploader code!")
|
||||
#endif
|
||||
|
||||
@@ -15,6 +15,32 @@
|
||||
to_chat(M, "<span class='warning'>[parent] only accepts machine parts!</span>")
|
||||
return FALSE
|
||||
|
||||
/datum/component/storage/concrete/rped/quick_empty(mob/M)
|
||||
var/atom/A = parent
|
||||
if(!M.canUseStorage() || !A.Adjacent(M) || M.incapacitated())
|
||||
return
|
||||
if(check_locked(null, M, TRUE))
|
||||
return FALSE
|
||||
A.add_fingerprint(M)
|
||||
var/list/things = contents()
|
||||
var/lowest_rating = INFINITY
|
||||
for(var/obj/item/B in things)
|
||||
if(B.get_part_rating() < lowest_rating)
|
||||
lowest_rating = B.get_part_rating()
|
||||
for(var/obj/item/B in things)
|
||||
if(B.get_part_rating() > lowest_rating)
|
||||
things.Remove(B)
|
||||
if(lowest_rating == INFINITY)
|
||||
to_chat(M, "<span class='notice'>There's no parts to dump out from [parent].</span>")
|
||||
return
|
||||
to_chat(M, "<span class='notice'>You start dumping out tier/cell rating [lowest_rating] parts from [parent].</span>")
|
||||
var/turf/T = get_turf(A)
|
||||
var/datum/progressbar/progress = new(M, length(things), T)
|
||||
while (do_after(M, 10, TRUE, T, FALSE, CALLBACK(src, .proc/mass_remove_from_storage, T, things, progress)))
|
||||
stoplag(1)
|
||||
qdel(progress)
|
||||
A.do_squish(0.8, 1.2)
|
||||
|
||||
/datum/component/storage/concrete/bluespace/rped
|
||||
collection_mode = COLLECT_EVERYTHING
|
||||
allow_quick_gather = TRUE
|
||||
@@ -34,3 +60,30 @@
|
||||
|
||||
/datum/component/storage/concrete/cyborg/rped
|
||||
max_items = 150
|
||||
|
||||
|
||||
/datum/component/storage/concrete/bluespace/rped/quick_empty(mob/M)
|
||||
var/atom/A = parent
|
||||
if(!M.canUseStorage() || !A.Adjacent(M) || M.incapacitated())
|
||||
return
|
||||
if(check_locked(null, M, TRUE))
|
||||
return FALSE
|
||||
A.add_fingerprint(M)
|
||||
var/list/things = contents()
|
||||
var/lowest_rating = INFINITY
|
||||
for(var/obj/item/B in things)
|
||||
if(B.get_part_rating() < lowest_rating)
|
||||
lowest_rating = B.get_part_rating()
|
||||
for(var/obj/item/B in things)
|
||||
if(B.get_part_rating() > lowest_rating)
|
||||
things.Remove(B)
|
||||
if(lowest_rating == INFINITY)
|
||||
to_chat(M, "<span class='notice'>There's no parts to dump out from [parent].</span>")
|
||||
return
|
||||
to_chat(M, "<span class='notice'>You start dumping out tier/cell rating [lowest_rating] parts from [parent].</span>")
|
||||
var/turf/T = get_turf(A)
|
||||
var/datum/progressbar/progress = new(M, length(things), T)
|
||||
while (do_after(M, 10, TRUE, T, FALSE, CALLBACK(src, .proc/mass_remove_from_storage, T, things, progress)))
|
||||
stoplag(1)
|
||||
qdel(progress)
|
||||
A.do_squish(0.8, 1.2)
|
||||
@@ -88,6 +88,8 @@ GLOBAL_LIST_EMPTY(explosions)
|
||||
message_admins("Explosion with size ([devastation_range], [heavy_impact_range], [light_impact_range], [flame_range]) in [ADMIN_VERBOSEJMP(epicenter)]")
|
||||
log_game("Explosion with size ([devastation_range], [heavy_impact_range], [light_impact_range], [flame_range]) in [loc_name(epicenter)]")
|
||||
|
||||
deadchat_broadcast("<span class='deadsay bold'>An explosion with size ([devastation_range], [heavy_impact_range], [light_impact_range], [flame_range]) has occured at ([get_area(epicenter)])</span>", turf_target = get_turf(epicenter))
|
||||
|
||||
var/x0 = epicenter.x
|
||||
var/y0 = epicenter.y
|
||||
var/z0 = epicenter.z
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
start_sound = 'sound/weather/ashstorm/outside/active_start.ogg'
|
||||
start_length = 130
|
||||
end_sound = 'sound/weather/ashstorm/outside/active_end.ogg'
|
||||
volume = 80
|
||||
volume = 60
|
||||
|
||||
/datum/looping_sound/active_inside_ashstorm
|
||||
mid_sounds = list(
|
||||
@@ -20,7 +20,7 @@
|
||||
start_sound = 'sound/weather/ashstorm/inside/active_start.ogg'
|
||||
start_length = 130
|
||||
end_sound = 'sound/weather/ashstorm/inside/active_end.ogg'
|
||||
volume = 60
|
||||
volume = 20
|
||||
|
||||
/datum/looping_sound/weak_outside_ashstorm
|
||||
mid_sounds = list(
|
||||
|
||||
@@ -177,6 +177,7 @@ NOTE: there are two lists of areas in the end of this file: centcom and station
|
||||
xenobiology_compatible = TRUE
|
||||
|
||||
|
||||
|
||||
//Maintenance - Generic
|
||||
|
||||
/area/maintenance/arrivals/north
|
||||
@@ -1365,11 +1366,11 @@ NOTE: there are two lists of areas in the end of this file: centcom and station
|
||||
|
||||
/area/xenoarch/sec
|
||||
name = "Xenoarchaeology Security"
|
||||
icon_state = "xenosec"
|
||||
icon_state = "xenosec"
|
||||
|
||||
/area/xenoarch/med
|
||||
name = "Xenoarchaeology Medical"
|
||||
icon_state = "xenomed"
|
||||
icon_state = "xenomed"
|
||||
|
||||
//Pool
|
||||
/area/crew_quarters/fitness/pool
|
||||
@@ -1384,3 +1385,11 @@ NOTE: there are two lists of areas in the end of this file: centcom and station
|
||||
/area/arcade
|
||||
name = "Arcade"
|
||||
icon_state = "yellow"
|
||||
|
||||
//Diner
|
||||
/area/diner
|
||||
name = "Space Diner"
|
||||
icon_state = "bar"
|
||||
requires_power = FALSE
|
||||
has_gravity = STANDARD_GRAVITY
|
||||
dynamic_lighting = DYNAMIC_LIGHTING_FORCED
|
||||
|
||||
@@ -8,6 +8,8 @@
|
||||
if(log)
|
||||
message_admins("EMP with size ([heavy_range], [light_range]) in area [epicenter.loc.name] ")
|
||||
log_game("EMP with size ([heavy_range], [light_range]) in area [epicenter.loc.name] ")
|
||||
|
||||
deadchat_broadcast("<span class='deadsay bold'>EMP with size ([heavy_range], [light_range]) has occured at [epicenter.loc.name]</span>", turf_target = get_turf(epicenter))
|
||||
|
||||
if(heavy_range >= 1)
|
||||
new /obj/effect/temp_visual/emp/pulse(epicenter)
|
||||
|
||||
@@ -1,5 +1,3 @@
|
||||
//NOT YET IMPLEMENTED -- Archie
|
||||
|
||||
/obj/item/desynchronizer
|
||||
name = "desynchronizer"
|
||||
desc = "An experimental device that can temporarily desynchronize the user from spacetime, effectively making them disappear while it's active."
|
||||
|
||||
@@ -249,6 +249,7 @@ GLOBAL_DATUM_INIT(ahelp_tickets, /datum/admin_help_tickets, new)
|
||||
if(!ref_src)
|
||||
ref_src = "[REF(src)]"
|
||||
. = " (<A HREF='?_src_=holder;[HrefToken(TRUE)];ahelp=[ref_src];ahelp_action=reject'>REJT</A>)"
|
||||
. = " (<A HREF='?_src_=holder;[HrefToken(TRUE)];ahelp=[ref_src];ahelp_action=mentor'>MENTOR</A>)"
|
||||
. += " (<A HREF='?_src_=holder;[HrefToken(TRUE)];ahelp=[ref_src];ahelp_action=icissue'>IC</A>)"
|
||||
. += " (<A HREF='?_src_=holder;[HrefToken(TRUE)];ahelp=[ref_src];ahelp_action=close'>CLOSE</A>)"
|
||||
. += " (<A HREF='?_src_=holder;[HrefToken(TRUE)];ahelp=[ref_src];ahelp_action=resolve'>RSLVE</A>)"
|
||||
@@ -379,6 +380,27 @@ GLOBAL_DATUM_INIT(ahelp_tickets, /datum/admin_help_tickets, new)
|
||||
AddInteraction("Rejected by [key_name].")
|
||||
Close(silent = TRUE)
|
||||
|
||||
//Resolve ticket with mentor
|
||||
/datum/admin_help/proc/Mentor(key_name = key_name_admin(usr))
|
||||
if(state != AHELP_ACTIVE)
|
||||
return
|
||||
|
||||
if(initiator)
|
||||
initiator.giveadminhelpverb()
|
||||
|
||||
SEND_SOUND(initiator, sound('sound/effects/adminhelp.ogg'))
|
||||
|
||||
to_chat(initiator, "<font color='yellow' size='4'><b>- AdminHelp Declined -</b></font>")
|
||||
to_chat(initiator, "<font color='yellow'><b>Your admin help was declined.</b> The adminhelp verb has been returned to you so that you may try again later.</font>")
|
||||
to_chat(initiator, "The question/request is considered a mentor issue, please direct questions on how to play to the in-games mentor help, or asking in the discord without revealing infomation of the round.")
|
||||
|
||||
SSblackbox.record_feedback("tally", "ahelp_stats", 1, "rejected")
|
||||
var/msg = "Ticket [TicketHref("#[id]")] rejected (Mentor) by [key_name]"
|
||||
message_admins(msg)
|
||||
log_admin_private(msg)
|
||||
AddInteraction("Rejected by [key_name].")
|
||||
Close(silent = TRUE)
|
||||
|
||||
//Resolve ticket with IC Issue message
|
||||
/datum/admin_help/proc/ICIssue(key_name = key_name_admin(usr))
|
||||
if(state != AHELP_ACTIVE)
|
||||
@@ -465,6 +487,8 @@ GLOBAL_DATUM_INIT(ahelp_tickets, /datum/admin_help_tickets, new)
|
||||
Retitle()
|
||||
if("reject")
|
||||
Reject()
|
||||
if("mentor")
|
||||
Mentor()
|
||||
if("reply")
|
||||
usr.client.cmd_ahelp_reply(initiator)
|
||||
if("icissue")
|
||||
|
||||
@@ -217,7 +217,7 @@
|
||||
|
||||
|
||||
|
||||
#define IRC_AHELP_USAGE "Usage: ticket <close|resolve|icissue|reject|reopen \[ticket #\]|list>"
|
||||
#define IRC_AHELP_USAGE "Usage: ticket <close|resolve|icissue|reject|mentor|reopen \[ticket #\]|list>"
|
||||
/proc/IrcPm(target,msg,sender)
|
||||
target = ckey(target)
|
||||
var/client/C = GLOB.directory[target]
|
||||
@@ -246,6 +246,10 @@
|
||||
if(ticket)
|
||||
ticket.Reject(irc_tagged)
|
||||
return "Ticket #[ticket.id] successfully rejected"
|
||||
if("mentor")
|
||||
if(ticket)
|
||||
ticket.Mentor(irc_tagged)
|
||||
return "Ticket #[ticket.id] successfully rejected"
|
||||
if("reopen")
|
||||
if(ticket)
|
||||
return "Error: [target] already has ticket #[ticket.id] open"
|
||||
|
||||
@@ -236,3 +236,10 @@
|
||||
reward = 2250
|
||||
required_count = 5
|
||||
wanted_types = list(/obj/structure/chair/plaswood)
|
||||
|
||||
/datum/bounty/item/assistant/condom
|
||||
name = "Filled Condom"
|
||||
description = "Something wack is happening at Central Command, and now they requested some filled condoms?"
|
||||
reward = 1150
|
||||
required_count = 5
|
||||
wanted_types = list(/obj/item/condom/filled)
|
||||
@@ -0,0 +1,7 @@
|
||||
|
||||
//Condom
|
||||
/datum/export/gear/condom
|
||||
cost = 150
|
||||
unit_name = "filled condom"
|
||||
export_types = list(/obj/item/condom/filled)
|
||||
include_subtypes = TRUE
|
||||
@@ -556,6 +556,15 @@ GLOBAL_LIST_INIT(ballmer_windows_me_msg, list("Yo man, what if, we like, uh, put
|
||||
|
||||
var/restingpwr = 1 + 4 * resting
|
||||
|
||||
if(ckey)
|
||||
if(!client && !(stat == DEAD))
|
||||
add_status_indicator("ssd")
|
||||
SSD = TRUE
|
||||
else
|
||||
if(SSD)
|
||||
remove_status_indicator("ssd")
|
||||
SSD = FALSE
|
||||
|
||||
//Dizziness
|
||||
if(dizziness)
|
||||
var/client/C = client
|
||||
|
||||
@@ -59,9 +59,10 @@
|
||||
var/custom_body_size = 100
|
||||
var/breedable = 0
|
||||
var/impregchance = 30
|
||||
//h13 noncon settings
|
||||
//h13 settings
|
||||
var/Noncon = 0
|
||||
var/ERP = 0
|
||||
var/SSD = FALSE
|
||||
|
||||
var/mob_biotypes = MOB_ORGANIC
|
||||
var/metabolism_efficiency = 1 //more or less efficiency to metabolize helpful/harmful reagents and regulate body temperature..
|
||||
|
||||
@@ -0,0 +1,34 @@
|
||||
/mob/living/simple_animal/babygoliath
|
||||
name = "baby Goliath"
|
||||
desc = "It's a baby goliath, like the hulking demons but much smaller and cuter."
|
||||
icon = 'icons/mob/pets.dmi'
|
||||
icon_state = "goliath_baby"
|
||||
icon_living = "goliath_baby"
|
||||
icon_dead = "goliath_baby_dead"
|
||||
speak = list("Grrr!","Grrr.","Grrr?")
|
||||
speak_emote = list("hisses", "rumbles")
|
||||
emote_hear = list("hisses.", "rumbles.")
|
||||
emote_see = list("grows tentacles below.", "shakes.")
|
||||
speak_chance = 1
|
||||
turns_per_move = 3
|
||||
blood_volume = 250
|
||||
see_in_dark = 5
|
||||
maxHealth = 15
|
||||
health = 15
|
||||
butcher_results = list(/obj/item/reagent_containers/food/snacks/meat/slab/goliath = 1)
|
||||
response_help = "pets"
|
||||
response_disarm = "gently pushes aside"
|
||||
response_harm = "stamps on"
|
||||
density = FALSE
|
||||
pass_flags = PASSTABLE | PASSMOB
|
||||
mob_size = MOB_SIZE_TINY
|
||||
mob_biotypes = MOB_ORGANIC|MOB_BEAST
|
||||
gold_core_spawnable = FRIENDLY_SPAWN
|
||||
do_footstep = TRUE
|
||||
|
||||
//miner babie
|
||||
/mob/living/simple_animal/babygoliath/Pebbles
|
||||
name = "Pebbles"
|
||||
desc = "Hatched from an egg stolen from a goliath nest, Pebbles stands guard for miners. She's probably tame."
|
||||
gender = FEMALE
|
||||
gold_core_spawnable = NO_SPAWN
|
||||
@@ -0,0 +1,34 @@
|
||||
/mob/living/simple_animal/opossum
|
||||
name = "opossum"
|
||||
desc = "It's an opossum, a small scavenging marsupial."
|
||||
icon = 'icons/mob/pets.dmi'
|
||||
icon_state = "possum"
|
||||
icon_living = "possum"
|
||||
icon_dead = "possum_dead"
|
||||
speak = list("Hiss!","HISS!","Hissss?")
|
||||
speak_emote = list("hisses")
|
||||
emote_hear = list("hisses.")
|
||||
emote_see = list("runs in a circle.", "shakes.")
|
||||
speak_chance = 1
|
||||
turns_per_move = 3
|
||||
blood_volume = 250
|
||||
see_in_dark = 5
|
||||
maxHealth = 15
|
||||
health = 15
|
||||
butcher_results = list(/obj/item/reagent_containers/food/snacks/meat/slab = 1)
|
||||
response_help = "pets"
|
||||
response_disarm = "gently pushes aside"
|
||||
response_harm = "stamps on"
|
||||
density = FALSE
|
||||
pass_flags = PASSTABLE | PASSMOB
|
||||
mob_size = MOB_SIZE_TINY
|
||||
mob_biotypes = MOB_ORGANIC|MOB_BEAST
|
||||
gold_core_spawnable = FRIENDLY_SPAWN
|
||||
do_footstep = TRUE
|
||||
|
||||
//cargo poss
|
||||
/mob/living/simple_animal/opossum/Trims
|
||||
name = "Trims"
|
||||
desc = "Trims, the trash eating opossum! Don't mind the screaming from cargo."
|
||||
gender = MALE
|
||||
gold_core_spawnable = NO_SPAWN
|
||||
@@ -0,0 +1,38 @@
|
||||
/mob/living/simple_animal/skunk
|
||||
name = "skunk"
|
||||
desc = "A skunk! Originally found stinking up Terran planets, now here to stink your station."
|
||||
icon = 'icons/mob/pets.dmi'
|
||||
icon_state = "skunk"
|
||||
icon_living = "skunk"
|
||||
icon_dead = "skunk_dead"
|
||||
speak = list("Hsss!","Eek!","Grrr?")
|
||||
speak_emote = list("screeches", "grumbles")
|
||||
emote_hear = list("screeches.", "grumbles.")
|
||||
emote_see = list("thumps.", "shakes.")
|
||||
speak_chance = 1
|
||||
turns_per_move = 3
|
||||
blood_volume = 250
|
||||
see_in_dark = 5
|
||||
maxHealth = 15
|
||||
health = 15
|
||||
butcher_results = list(/obj/item/reagent_containers/food/snacks/meat/slab = 1)
|
||||
response_help = "pets"
|
||||
response_disarm = "gently pushes aside"
|
||||
response_harm = "stamps on"
|
||||
density = FALSE
|
||||
pass_flags = PASSTABLE | PASSMOB
|
||||
mob_size = MOB_SIZE_TINY
|
||||
mob_biotypes = MOB_ORGANIC|MOB_BEAST
|
||||
gold_core_spawnable = FRIENDLY_SPAWN
|
||||
do_footstep = TRUE
|
||||
|
||||
//rnd skook boi supreme
|
||||
/mob/living/simple_animal/skunk/Bandit
|
||||
name = "Bandit"
|
||||
desc = "Despite his name, he's not very good at stealing things. He was found on board after an invasion of marsupials were cleared out."
|
||||
gender = MALE
|
||||
gold_core_spawnable = NO_SPAWN
|
||||
|
||||
/mob/living/simple_animal/skunk/Skook
|
||||
name = "Skook"
|
||||
desc = "A skook!"
|
||||
@@ -52,5 +52,6 @@ GLOBAL_LIST_EMPTY(typing_indicator_overlays)
|
||||
mouse_opacity = MOUSE_OPACITY_TRANSPARENT
|
||||
icon = 'icons/mob/talk.dmi'
|
||||
icon_state = "normal_typing"
|
||||
|
||||
appearance_flags = RESET_COLOR | TILE_BOUND | PIXEL_SCALE
|
||||
layer = ABOVE_FLY_LAYER
|
||||
|
||||
Reference in New Issue
Block a user