mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2026-08-25 14:16:58 +01:00
Merge pull request #1110 from BlackMajor/gut
Belly Filler 2: Electric Boogaloo, the Turniping
This commit is contained in:
@@ -7,6 +7,7 @@
|
||||
#define MAP_LEVEL_EMPTY 0x020 // Empty Z-levels that may be used for various things (currently used by bluespace jump)
|
||||
#define MAP_LEVEL_CONSOLES 0x040 // Z-levels available to various consoles, such as the crew monitor (when that gets coded in). Defaults to station_levels if unset.
|
||||
#define MAP_LEVEL_XENOARCH_EXEMPT 0x080 // Z-levels exempt from xenoarch digsite generation.
|
||||
#define MAP_LEVEL_VORESPAWN 0x100 // Z-levels players are allowed to late join to via vorish means. Usually non-dangerous locations.
|
||||
|
||||
// Misc map defines.
|
||||
#define SUBMAP_MAP_EDGE_PAD 8 // Automatically created submaps are forbidden from being this close to the main map's edge. //VOREStation Edit
|
||||
@@ -371,8 +371,7 @@ var/global/datum/controller/occupations/job_master
|
||||
if(istype(S, /obj/effect/landmark/start) && istype(S.loc, /turf))
|
||||
H.forceMove(S.loc)
|
||||
else
|
||||
var/list/spawn_props = LateSpawn(H.client, rank)
|
||||
var/turf/T = spawn_props["turf"]
|
||||
var/turf/T = get_turf(pick(latejoin))
|
||||
if(!T)
|
||||
to_chat(H, "<span class='critical'>You were unable to be spawned at your chosen late-join spawnpoint. Please verify your job/spawn point combination makes sense, and try another one.</span>")
|
||||
return
|
||||
@@ -511,21 +510,22 @@ var/global/datum/controller/occupations/job_master
|
||||
to_chat(H, "<span class='danger'>Failed to locate a storage object on your mob, either you spawned with no arms and no backpack or this is a bug.</span>")
|
||||
|
||||
if(istype(H)) //give humans wheelchairs, if they need them.
|
||||
var/obj/item/organ/external/l_foot = H.get_organ("l_foot")
|
||||
var/obj/item/organ/external/r_foot = H.get_organ("r_foot")
|
||||
var/obj/item/weapon/storage/S = locate() in H.contents
|
||||
var/obj/item/wheelchair/R = null
|
||||
if(S)
|
||||
R = locate() in S.contents
|
||||
if(!l_foot || !r_foot || R)
|
||||
var/obj/structure/bed/chair/wheelchair/W = new /obj/structure/bed/chair/wheelchair(H.loc)
|
||||
W.buckle_mob(H)
|
||||
H.update_canmove()
|
||||
W.set_dir(H.dir)
|
||||
W.add_fingerprint(H)
|
||||
if(R)
|
||||
W.color = R.color
|
||||
qdel(R)
|
||||
if(istype(H.loc, /obj/belly)) //unless in a gut
|
||||
var/obj/item/organ/external/l_foot = H.get_organ("l_foot")
|
||||
var/obj/item/organ/external/r_foot = H.get_organ("r_foot")
|
||||
var/obj/item/weapon/storage/S = locate() in H.contents
|
||||
var/obj/item/wheelchair/R = null
|
||||
if(S)
|
||||
R = locate() in S.contents
|
||||
if(!l_foot || !r_foot || R)
|
||||
var/obj/structure/bed/chair/wheelchair/W = new /obj/structure/bed/chair/wheelchair(H.loc)
|
||||
W.buckle_mob(H)
|
||||
H.update_canmove()
|
||||
W.set_dir(H.dir)
|
||||
W.add_fingerprint(H)
|
||||
if(R)
|
||||
W.color = R.color
|
||||
qdel(R)
|
||||
|
||||
to_chat(H, "<B>You are [job.total_positions == 1 ? "the" : "a"] [alt_title ? alt_title : rank].</B>")
|
||||
|
||||
@@ -649,24 +649,90 @@ var/global/datum/controller/occupations/job_master
|
||||
|
||||
var/datum/spawnpoint/spawnpos
|
||||
var/fail_deadly = FALSE
|
||||
var/obj/belly/vore_spawn_gut
|
||||
|
||||
var/datum/job/J = SSjob.get_job(rank)
|
||||
fail_deadly = J?.offmap_spawn
|
||||
|
||||
//Spawn them at their preferred one
|
||||
if(C && C.prefs.spawnpoint)
|
||||
if(!(C.prefs.spawnpoint in using_map.allowed_spawns))
|
||||
if(fail_deadly)
|
||||
to_chat(C, "<span class='warning'>Your chosen spawnpoint is unavailable for this map and your job requires a specific spawnpoint. Please correct your spawn point choice.</span>")
|
||||
return
|
||||
if(C.prefs.spawnpoint == "Vore Belly")
|
||||
var/list/preds = list()
|
||||
var/list/pred_names = list() //This is cringe
|
||||
for(var/client/V in GLOB.clients)
|
||||
if(!isliving(V.mob))
|
||||
continue
|
||||
var/mob/living/M = V.mob
|
||||
if(M.stat == UNCONSCIOUS || M.stat == DEAD || M.client.is_afk(10 MINUTES))
|
||||
continue
|
||||
if(!M.latejoin_vore)
|
||||
continue
|
||||
if(!(M.z in using_map.vorespawn_levels))
|
||||
continue
|
||||
preds += M
|
||||
pred_names += M.real_name //very cringe
|
||||
|
||||
if(preds.len)
|
||||
var/pred_name = input(C, "Choose a Predator.", "Pred Spawnpoint") as null|anything in pred_names
|
||||
if(!pred_name)
|
||||
return
|
||||
var/index = pred_names.Find(pred_name)
|
||||
var/mob/living/pred = preds[index]
|
||||
var/list/available_bellies = list()
|
||||
for(var/obj/belly/Y in pred.vore_organs)
|
||||
if(Y.vorespawn_blacklist)
|
||||
continue
|
||||
available_bellies += Y
|
||||
var/backup = alert(C, "Do you want a mind backup?", "Confirm", "Yes", "No")
|
||||
if(backup == "Yes")
|
||||
backup = 1
|
||||
vore_spawn_gut = input(C, "Choose a Belly.", "Belly Spawnpoint") as null|anything in available_bellies
|
||||
if(!vore_spawn_gut)
|
||||
return
|
||||
to_chat(C, "<span class='warning'>[pred] has received your spawn request. Please wait.</span>")
|
||||
log_admin("[key_name(C)] has requested to vore spawn into [key_name(pred)]")
|
||||
message_admins("[key_name(C)] has requested to vore spawn into [key_name(pred)]")
|
||||
|
||||
var/confirm = alert(pred, "[C.prefs.real_name] is attempting to spawn into your [vore_spawn_gut]. Let them?", "Confirm", "No", "Yes")
|
||||
if(confirm != "Yes")
|
||||
to_chat(C, "<span class='warning'>[pred] has declined your spawn request.</span>")
|
||||
return
|
||||
if(!vore_spawn_gut || QDELETED(vore_spawn_gut))
|
||||
to_chat(C, "<span class='warning'>Somehow, the belly you were trying to enter no longer exists.</span>")
|
||||
return
|
||||
if(pred.stat == UNCONSCIOUS || pred.stat == DEAD)
|
||||
to_chat(C, "<span class='warning'>[pred] is not conscious.</span>")
|
||||
to_chat(pred, "<span class='warning'>You must be conscious to accept.</span>")
|
||||
return
|
||||
if(!(pred.z in using_map.vorespawn_levels))
|
||||
to_chat(C, "<span class='warning'>[pred] is no longer in station grounds.</span>")
|
||||
to_chat(pred, "<span class='warning'>You must be within station grounds to accept.</span>")
|
||||
return
|
||||
if(backup)
|
||||
addtimer(CALLBACK(src, .proc/m_backup_client, C), 5 SECONDS)
|
||||
log_admin("[key_name(C)] has vore spawned into [key_name(pred)]")
|
||||
message_admins("[key_name(C)] has vore spawned into [key_name(pred)]")
|
||||
to_chat(C, "<span class='notice'>You have been spawned via vore. You are free to roleplay how you got there as you please, such as teleportation or having had already been there.</span>")
|
||||
to_chat(pred, "<span class='notice'>Your prey has spawned via vore. You are free to roleplay this how you please, such as teleportation or having had already been there.</span>")
|
||||
else
|
||||
to_chat(C, "<span class='warning'>Your chosen spawnpoint ([C.prefs.spawnpoint]) is unavailable for the current map. Spawning you at one of the enabled spawn points instead.</span>")
|
||||
spawnpos = null
|
||||
else
|
||||
to_chat(C, "<span class='warning'>No predators were available to accept you.</span>")
|
||||
return
|
||||
spawnpos = spawntypes[C.prefs.spawnpoint]
|
||||
else
|
||||
if(!(C.prefs.spawnpoint in using_map.allowed_spawns))
|
||||
if(fail_deadly)
|
||||
to_chat(C, "<span class='warning'>Your chosen spawnpoint is unavailable for this map and your job requires a specific spawnpoint. Please correct your spawn point choice.</span>")
|
||||
return
|
||||
else
|
||||
to_chat(C, "<span class='warning'>Your chosen spawnpoint ([C.prefs.spawnpoint]) is unavailable for the current map. Spawning you at one of the enabled spawn points instead.</span>")
|
||||
spawnpos = null
|
||||
else
|
||||
spawnpos = spawntypes[C.prefs.spawnpoint]
|
||||
|
||||
//We will return a list key'd by "turf" and "msg"
|
||||
. = list("turf","msg")
|
||||
. = list("turf","msg", "voreny")
|
||||
if(vore_spawn_gut)
|
||||
.["voreny"] = vore_spawn_gut
|
||||
if(spawnpos && istype(spawnpos) && spawnpos.turfs.len)
|
||||
if(spawnpos.check_job_spawning(rank))
|
||||
.["turf"] = spawnpos.get_spawn_position()
|
||||
@@ -684,3 +750,9 @@ var/global/datum/controller/occupations/job_master
|
||||
var/spawning = pick(latejoin)
|
||||
.["turf"] = get_turf(spawning)
|
||||
.["msg"] = "has arrived on the station"
|
||||
|
||||
/datum/controller/occupations/proc/m_backup_client(var/client/C) //Same as m_backup, but takes a client entry. Used for vore late joining.
|
||||
if(!ishuman(C.mob))
|
||||
return
|
||||
var/mob/living/carbon/human/CM = C.mob
|
||||
SStranscore.m_backup(CM.mind, CM.nif)
|
||||
@@ -4,4 +4,12 @@
|
||||
|
||||
/datum/spawnpoint/stationgateway/New()
|
||||
..()
|
||||
turfs = latejoin_gatewaystation
|
||||
turfs = latejoin_gatewaystation
|
||||
|
||||
/datum/spawnpoint/vore
|
||||
display_name = "Vore Belly"
|
||||
msg = "has arrived on the station."
|
||||
|
||||
/datum/spawnpoint/vore/New()
|
||||
..()
|
||||
turfs = latejoin
|
||||
@@ -164,7 +164,7 @@
|
||||
if(!ticker || ticker.current_state != GAME_STATE_PLAYING)
|
||||
to_chat(usr, "<font color='red'>The round is either not ready, or has already finished...</font>")
|
||||
return
|
||||
|
||||
|
||||
var/time_till_respawn = time_till_respawn()
|
||||
if(time_till_respawn == -1) // Special case, never allowed to respawn
|
||||
to_chat(usr, "<span class='warning'>Respawning is not allowed!</span>")
|
||||
@@ -352,7 +352,7 @@
|
||||
/mob/new_player/proc/time_till_respawn()
|
||||
if(!ckey)
|
||||
return -1 // What?
|
||||
|
||||
|
||||
var/timer = GLOB.respawn_timers[ckey]
|
||||
// No timer at all
|
||||
if(!timer)
|
||||
@@ -461,6 +461,9 @@
|
||||
AnnounceArrival(character, rank, join_message, announce_channel, character.z)
|
||||
data_core.manifest_inject(character)
|
||||
ticker.minds += character.mind//Cyborgs and AIs handle this in the transform proc. //TODO!!!!! ~Carn
|
||||
var/gut = join_props["voreny"]
|
||||
if(gut)
|
||||
character.forceMove(gut)
|
||||
|
||||
qdel(src) // Delete new_player mob
|
||||
|
||||
|
||||
@@ -36,6 +36,7 @@
|
||||
var/liquid_fullness3_messages = FALSE
|
||||
var/liquid_fullness4_messages = FALSE
|
||||
var/liquid_fullness5_messages = FALSE
|
||||
var/vorespawn_blacklist = FALSE
|
||||
|
||||
var/list/fullness1_messages = list(
|
||||
"%pred's %belly looks empty"
|
||||
|
||||
@@ -185,7 +185,8 @@
|
||||
"fullness2_messages",
|
||||
"fullness3_messages",
|
||||
"fullness4_messages",
|
||||
"fullness5_messages" //CHOMP end of variables from CHOMP
|
||||
"fullness5_messages",
|
||||
"vorespawn_blacklist" //CHOMP end of variables from CHOMP
|
||||
)
|
||||
|
||||
/*These have been pulled from the above list as these were chomp edits for liquid belly stuff. This needs to be ported back in for TGUI port
|
||||
@@ -794,7 +795,8 @@
|
||||
dupe.gen_time = gen_time
|
||||
dupe.gen_time_display = gen_time_display
|
||||
dupe.reagent_transfer_verb = reagent_transfer_verb
|
||||
dupe.custom_max_volume = custom_max_volume //CHOMP end of variables from CHOMP
|
||||
dupe.custom_max_volume = custom_max_volume
|
||||
dupe.vorespawn_blacklist = vorespawn_blacklist //CHOMP end of variables from CHOMP
|
||||
|
||||
dupe.belly_fullscreen = belly_fullscreen
|
||||
dupe.disable_hud = disable_hud
|
||||
|
||||
@@ -32,7 +32,8 @@
|
||||
var/adminbus_trash = FALSE // For abusing trash eater for event shenanigans.
|
||||
var/adminbus_eat_minerals = FALSE // This creature subsists on a diet of pure adminium.
|
||||
var/vis_height = 32 // Sprite height used for resize features.
|
||||
var/show_vore_fx = TRUE // Show belly fullscreens
|
||||
var/show_vore_fx = TRUE // Show belly fullscreens
|
||||
var/latejoin_vore = FALSE // If enabled, latejoiners can spawn into this, assuming they have a client
|
||||
|
||||
//
|
||||
// Hook for generic creation of stuff on new creatures
|
||||
@@ -242,7 +243,8 @@
|
||||
P.can_be_drop_pred = src.can_be_drop_pred
|
||||
|
||||
|
||||
//CHOMP reagent belly
|
||||
//CHOMP stuff
|
||||
P.latejoin_vore = src.latejoin_vore
|
||||
P.receive_reagents = src.receive_reagents
|
||||
P.give_reagents = src.give_reagents
|
||||
|
||||
@@ -279,7 +281,8 @@
|
||||
can_be_drop_prey = P.can_be_drop_prey
|
||||
can_be_drop_pred = P.can_be_drop_pred
|
||||
|
||||
//CHOMP reagents belly
|
||||
//CHOMP stuff
|
||||
latejoin_vore = P.latejoin_vore
|
||||
receive_reagents = P.receive_reagents
|
||||
give_reagents = P.give_reagents
|
||||
|
||||
@@ -865,6 +868,7 @@
|
||||
dispvoreprefs += "<b>Healbelly permission:</b> [permit_healbelly ? "Allowed" : "Disallowed"]<br>"
|
||||
dispvoreprefs += "<b>Spontaneous vore prey:</b> [can_be_drop_prey ? "Enabled" : "Disabled"]<br>"
|
||||
dispvoreprefs += "<b>Spontaneous vore pred:</b> [can_be_drop_pred ? "Enabled" : "Disabled"]<br>"
|
||||
dispvoreprefs += "<b>Late join spawn point belly:</b> [latejoin_vore ? "Enabled" : "Disabled"]<br>" //CHOMPstation edit
|
||||
dispvoreprefs += "<b>Receiving liquids:</b> [receive_reagents ? "Enabled" : "Disabled"]<br>" //CHOMPstation edit
|
||||
dispvoreprefs += "<b>Giving liquids:</b> [give_reagents ? "Enabled" : "Disabled"]<br>" //CHOMPstation edit
|
||||
user << browse("<html><head><title>Vore prefs: [src]</title></head><body><center>[dispvoreprefs]</center></body></html>", "window=[name]mvp;size=200x300;can_resize=0;can_minimize=0")
|
||||
|
||||
@@ -58,9 +58,10 @@ V::::::V V::::::VO:::::::OOO:::::::ORR:::::R R:::::REE::::::EEEEEE
|
||||
var/can_be_drop_pred = FALSE
|
||||
|
||||
|
||||
//CHOMP reagent belly
|
||||
//CHOMP stuff
|
||||
var/receive_reagents = FALSE
|
||||
var/give_reagents = FALSE
|
||||
var/latejoin_vore = FALSE
|
||||
|
||||
|
||||
//Mechanically required
|
||||
@@ -139,7 +140,8 @@ V::::::V V::::::VO:::::::OOO:::::::ORR:::::R R:::::REE::::::EEEEEE
|
||||
belly_prefs = json_from_file["belly_prefs"]
|
||||
|
||||
|
||||
//CHOMP reagent belly
|
||||
//CHOMP stuff
|
||||
latejoin_vore = json_from_file["latejoin_vore"]
|
||||
receive_reagents = json_from_file["receive_reagents"]
|
||||
give_reagents = json_from_file["give_reagents"]
|
||||
|
||||
@@ -168,7 +170,9 @@ V::::::V V::::::VO:::::::OOO:::::::ORR:::::R R:::::REE::::::EEEEEE
|
||||
if(isnull(belly_prefs))
|
||||
belly_prefs = list()
|
||||
|
||||
//CHOMP reagent belly
|
||||
//CHOMP stuff
|
||||
if(isnull(latejoin_vore))
|
||||
latejoin_vore = FALSE
|
||||
if(isnull(receive_reagents))
|
||||
receive_reagents = FALSE
|
||||
if(isnull(give_reagents))
|
||||
@@ -192,9 +196,10 @@ V::::::V V::::::VO:::::::OOO:::::::ORR:::::R R:::::REE::::::EEEEEE
|
||||
"vore_taste" = vore_taste,
|
||||
"vore_smell" = vore_smell,
|
||||
"permit_healbelly" = permit_healbelly,
|
||||
"show_vore_fx" = show_vore_fx,
|
||||
"show_vore_fx" = show_vore_fx,
|
||||
"can_be_drop_prey" = can_be_drop_prey,
|
||||
"can_be_drop_pred" = can_be_drop_pred,
|
||||
"latejoin_vore" = latejoin_vore,
|
||||
"belly_prefs" = belly_prefs,
|
||||
"receive_reagents" = receive_reagents,
|
||||
"give_reagents" = give_reagents,
|
||||
|
||||
@@ -157,6 +157,7 @@
|
||||
"shrink_grow_size" = selected.shrink_grow_size,
|
||||
"belly_fullscreen" = selected.belly_fullscreen,
|
||||
"possible_fullscreens" = icon_states('icons/mob/screen_full_vore.dmi'),
|
||||
"vorespawn_blacklist" = selected.vorespawn_blacklist
|
||||
)
|
||||
|
||||
data["selected"]["addons"] = list()
|
||||
@@ -200,7 +201,7 @@
|
||||
if(M.absorbed)
|
||||
info["absorbed"] = TRUE
|
||||
data["selected"]["contents"].Add(list(info))
|
||||
|
||||
|
||||
data["selected"]["show_liq"] = selected.show_liquids //CHOMPedit start: liquid belly options
|
||||
data["selected"]["liq_interacts"] = list()
|
||||
if(selected.show_liquids)
|
||||
@@ -243,6 +244,7 @@
|
||||
"show_vore_fx" = host.show_vore_fx,
|
||||
"can_be_drop_prey" = host.can_be_drop_prey,
|
||||
"can_be_drop_pred" = host.can_be_drop_pred,
|
||||
"latejoin_vore" = host.latejoin_vore,
|
||||
"noisy" = host.noisy,
|
||||
//CHOMPedit start, liquid belly prefs
|
||||
"liq_rec" = host.receive_reagents,
|
||||
@@ -271,7 +273,7 @@
|
||||
// Host is inside someone else, and is trying to interact with something else inside that person.
|
||||
if("pick_from_inside")
|
||||
return pick_from_inside(usr, params)
|
||||
|
||||
|
||||
// Host is trying to interact with something in host's belly.
|
||||
if("pick_from_outside")
|
||||
return pick_from_outside(usr, params)
|
||||
@@ -302,7 +304,7 @@
|
||||
host.vore_selected = NB
|
||||
unsaved_changes = TRUE
|
||||
return TRUE
|
||||
|
||||
|
||||
if("bellypick")
|
||||
host.vore_selected = locate(params["bellypick"])
|
||||
return TRUE
|
||||
@@ -375,6 +377,12 @@
|
||||
host.client.prefs_vr.can_be_drop_prey = host.can_be_drop_prey
|
||||
unsaved_changes = TRUE
|
||||
return TRUE
|
||||
if("toggle_latejoin_vore")
|
||||
host.latejoin_vore = !host.latejoin_vore
|
||||
if(host.client.prefs_vr)
|
||||
host.client.prefs_vr.latejoin_vore = host.latejoin_vore
|
||||
unsaved_changes = TRUE
|
||||
return TRUE
|
||||
if("toggle_digest")
|
||||
host.digestable = !host.digestable
|
||||
if(host.client.prefs_vr)
|
||||
@@ -459,11 +467,11 @@
|
||||
|
||||
if(!(target in OB))
|
||||
return TRUE // Aren't here anymore, need to update menu
|
||||
|
||||
|
||||
var/intent = "Examine"
|
||||
if(isliving(target))
|
||||
intent = alert("What do you want to do to them?","Query","Examine","Help Out","Devour")
|
||||
|
||||
|
||||
else if(istype(target, /obj/item))
|
||||
intent = alert("What do you want to do to that?","Query","Examine","Use Hand")
|
||||
|
||||
@@ -561,7 +569,7 @@
|
||||
host.vore_selected.transfer_contents(target, choice, 1)
|
||||
return TRUE
|
||||
return
|
||||
|
||||
|
||||
var/atom/movable/target = locate(params["pick"])
|
||||
if(!(target in host.vore_selected))
|
||||
return TRUE // Not in our X anymore, update UI
|
||||
@@ -652,7 +660,7 @@
|
||||
if(!toggle_addon)
|
||||
return FALSE
|
||||
host.vore_selected.mode_flags ^= host.vore_selected.mode_flag_list[toggle_addon]
|
||||
host.vore_selected.items_preserved.Cut() //Re-evaltuate all items in belly on
|
||||
host.vore_selected.items_preserved.Cut() //Re-evaltuate all items in belly on
|
||||
. = TRUE
|
||||
if("b_item_mode")
|
||||
var/list/menu_list = host.vore_selected.item_digest_modes.Copy()
|
||||
@@ -682,7 +690,7 @@
|
||||
host.vore_selected.contamination_color = new_color
|
||||
host.vore_selected.items_preserved.Cut() //To re-contaminate for new color
|
||||
. = TRUE
|
||||
if("b_desc")
|
||||
if("b_desc")
|
||||
var/new_desc = html_encode(input(usr,"Belly Description ([BELLIES_DESC_MAX] char limit):","New Description",host.vore_selected.desc) as message|null)
|
||||
|
||||
if(new_desc)
|
||||
@@ -915,7 +923,10 @@
|
||||
qdel(host.vore_selected)
|
||||
host.vore_selected = host.vore_organs[1]
|
||||
. = TRUE
|
||||
|
||||
if("b_vorespawn_blacklist")
|
||||
host.vore_selected.vorespawn_blacklist = !host.vore_selected.vorespawn_blacklist
|
||||
. = TRUE
|
||||
|
||||
if(.)
|
||||
unsaved_changes = TRUE
|
||||
|
||||
@@ -928,7 +939,7 @@
|
||||
var/attr = params["liq_attribute"]
|
||||
switch(attr)
|
||||
if("b_show_liq")
|
||||
if(!host.vore_selected.show_liquids)
|
||||
if(!host.vore_selected.show_liquids)
|
||||
host.vore_selected.show_liquids = 1
|
||||
to_chat(usr,"<span class='warning'>Your [lowertext(host.vore_selected.name)] now has liquid options.</span>")
|
||||
else
|
||||
@@ -1028,7 +1039,7 @@
|
||||
var/attr = params["liq_messages"]
|
||||
switch(attr)
|
||||
if("b_show_liq_fullness")
|
||||
if(!host.vore_selected.show_fullness_messages)
|
||||
if(!host.vore_selected.show_fullness_messages)
|
||||
host.vore_selected.show_fullness_messages = 1
|
||||
to_chat(usr,"<span class='warning'>Your [lowertext(host.vore_selected.name)] now has liquid examination options.</span>")
|
||||
else
|
||||
|
||||
@@ -171,7 +171,7 @@
|
||||
#define SOUTHERN_CROSS_HOLOMAP_MARGIN_Y ((HOLOMAP_ICON_SIZE - (3*SOUTHERN_CROSS_MAP_SIZE)) / 2) // 60
|
||||
|
||||
/datum/map_z_level/southern_cross/station
|
||||
flags = MAP_LEVEL_STATION|MAP_LEVEL_CONTACT|MAP_LEVEL_PLAYER|MAP_LEVEL_CONSOLES
|
||||
flags = MAP_LEVEL_STATION|MAP_LEVEL_CONTACT|MAP_LEVEL_PLAYER|MAP_LEVEL_CONSOLES|MAP_LEVEL_VORESPAWN
|
||||
holomap_legend_x = 220
|
||||
holomap_legend_y = 160
|
||||
|
||||
@@ -209,7 +209,7 @@
|
||||
/datum/map_z_level/southern_cross/surface
|
||||
z = Z_LEVEL_SURFACE
|
||||
name = "Plains"
|
||||
flags = MAP_LEVEL_CONTACT|MAP_LEVEL_PLAYER|MAP_LEVEL_SEALED|MAP_LEVEL_CONSOLES
|
||||
flags = MAP_LEVEL_CONTACT|MAP_LEVEL_PLAYER|MAP_LEVEL_SEALED|MAP_LEVEL_CONSOLES|MAP_LEVEL_VORESPAWN
|
||||
base_turf = /turf/simulated/floor/outdoors/rocks
|
||||
|
||||
/datum/map_z_level/southern_cross/surface_mine
|
||||
@@ -228,13 +228,13 @@
|
||||
/datum/map_z_level/southern_cross/surface_casino
|
||||
z = Z_LEVEL_SURFACE_CASINO
|
||||
name = "Casino"
|
||||
flags = MAP_LEVEL_PLAYER|MAP_LEVEL_SEALED|MAP_LEVEL_CONTACT|MAP_LEVEL_CONSOLES
|
||||
flags = MAP_LEVEL_PLAYER|MAP_LEVEL_SEALED|MAP_LEVEL_CONTACT|MAP_LEVEL_CONSOLES|MAP_LEVEL_VORESPAWN
|
||||
base_turf = /turf/simulated/floor/outdoors/rocks
|
||||
|
||||
/datum/map_z_level/southern_cross/misc
|
||||
z = Z_LEVEL_MISC
|
||||
name = "Misc"
|
||||
flags = MAP_LEVEL_PLAYER
|
||||
flags = MAP_LEVEL_PLAYER|MAP_LEVEL_VORESPAWN
|
||||
transit_chance = 6
|
||||
|
||||
/datum/map_z_level/southern_cross/centcom
|
||||
|
||||
@@ -34,6 +34,7 @@ var/list/all_maps = list()
|
||||
var/static/list/sealed_levels = list() // Z-levels that don't allow random transit at edge
|
||||
var/static/list/xenoarch_exempt_levels = list() //Z-levels exempt from xenoarch finds and digsites spawning.
|
||||
var/static/list/empty_levels = null // Empty Z-levels that may be used for various things (currently used by bluespace jump)
|
||||
var/static/list/vorespawn_levels = list() //Z-levels where players are allowed to vore latejoin to.
|
||||
// End Static Lists
|
||||
|
||||
// Z-levels available to various consoles, such as the crew monitor. Defaults to station_levels if unset.
|
||||
@@ -297,6 +298,7 @@ var/list/all_maps = list()
|
||||
if(flags & MAP_LEVEL_PLAYER) map.player_levels += z
|
||||
if(flags & MAP_LEVEL_SEALED) map.sealed_levels += z
|
||||
if(flags & MAP_LEVEL_XENOARCH_EXEMPT) map.xenoarch_exempt_levels += z
|
||||
if(flags & MAP_LEVEL_VORESPAWN) map.vorespawn_levels += z
|
||||
if(flags & MAP_LEVEL_EMPTY)
|
||||
if(!map.empty_levels) map.empty_levels = list()
|
||||
map.empty_levels += z
|
||||
|
||||
@@ -273,6 +273,7 @@ const VoreSelectedBelly = (props, context) => {
|
||||
liq_msg3,
|
||||
liq_msg4,
|
||||
liq_msg5,
|
||||
vorespawn_blacklist,
|
||||
} = belly;
|
||||
|
||||
const [tabIndex, setTabIndex] = useLocalState(context, 'tabIndex', 0);
|
||||
@@ -474,6 +475,13 @@ const VoreSelectedBelly = (props, context) => {
|
||||
onClick={() => act("set_attribute", { attribute: "b_grow_shrink" })}
|
||||
content={shrink_grow_size * 100 + "%"} />
|
||||
</LabeledList.Item>
|
||||
<LabeledList.Item label="Vore Spawn Blacklist">
|
||||
<Button
|
||||
onClick={() => act("set_attribute", { attribute: "b_vorespawn_blacklist" })}
|
||||
icon={vorespawn_blacklist ? "toggle-on" : "toggle-off"}
|
||||
selected={vorespawn_blacklist}
|
||||
content={vorespawn_blacklist ? "Yes" : "No"} />
|
||||
</LabeledList.Item>
|
||||
</LabeledList>
|
||||
</Flex.Item>
|
||||
<Flex.Item basis="100%" mt={1}>
|
||||
@@ -800,6 +808,7 @@ const VoreUserPreferences = (props, context) => {
|
||||
show_vore_fx,
|
||||
can_be_drop_prey,
|
||||
can_be_drop_pred,
|
||||
latejoin_vore,
|
||||
noisy,
|
||||
liq_rec,
|
||||
liq_giv,
|
||||
@@ -910,6 +919,18 @@ const VoreUserPreferences = (props, context) => {
|
||||
: "Click here to disable being spontaneous pred.")}
|
||||
content={can_be_drop_pred ? "Spontaneous Pred Enabled" : "Spontaneous Pred Disabled"} />
|
||||
</Flex.Item>
|
||||
<Flex.Item basis="32%">
|
||||
<Button
|
||||
onClick={() => act("toggle_latejoin_vore")}
|
||||
icon={latejoin_vore ? "toggle-on" : "toggle-off"}
|
||||
selected={latejoin_vore}
|
||||
fluid
|
||||
tooltip={"Toggle late join vore spawnpoint. "
|
||||
+ (latejoin_vore
|
||||
? "Click here to turn off vorish spawnpoint."
|
||||
: "Click here to turn on vorish spawnpoint.")}
|
||||
content={latejoin_vore ? "Vore Spawn Enabled" : "Vore Spawn Disabled"} />
|
||||
</Flex.Item>
|
||||
<Flex.Item basis="32%">
|
||||
<Button
|
||||
onClick={() => act("toggle_noisy")}
|
||||
|
||||
File diff suppressed because one or more lines are too long
Reference in New Issue
Block a user